Completed
Branch master (a1edd4)
by
unknown
54:09
created

BootstrapSelectSplitter   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 72
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A renderWidget() 0 14 3
A prepareInput() 0 9 2
A registerAssets() 0 10 2
1
<?php
2
/**
3
 * This file is part of the fangface/yii2-concord package
4
 *
5
 * For the full copyright and license information, please view
6
 * the file LICENSE.md that was distributed with this source code.
7
 *
8
 * @package fangface/yii2-concord
9
 * @author Fangface <[email protected]>
10
 * @copyright Copyright (c) 2014 Fangface <[email protected]>
11
 * @license https://github.com/fangface/yii2-concord/blob/master/LICENSE.md MIT License
12
 *
13
 */
14
15
namespace fangface\widgets;
16
17
use backend\assets\BootstrapSelectSplitterAsset;
18
use fangface\widgets\InputWidget;
19
use fangface\helpers\Html;
20
use yii\helpers\ArrayHelper;
21
22
23
/**
24
 * Bootstrap Select Splitter Widget
25
 */
26
class BootstrapSelectSplitter extends InputWidget
27
{
28
29
    /**
30
     * @var string the name of the jQuery plugin
31
     */
32
    public $pluginName = 'selectsplitter';
33
    /**
34
     * @var array default widget plugin options that user pluginOptions will be merged into
35
     */
36
    public $defaultPluginOptions = [];
37
    /**
38
     * @var array the HTML attributes for the input tag.
39
     * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
40
     */
41
    public $options = ['class' => 'form-control'];
42
    /**
43
     * @var array the items to appear in the drop down list
44
     */
45
    public $items = null;
46
47
48
    /**
49
     * Renders the color picker widget
50
     */
51
    protected function renderWidget()
52
    {
53
        if (isset($this->options['multiple']) && $this->options['multiple']) {
54
            $this->options['multiple'] = 'multiple';
55
        }
56
57
        $this->prepareInput();
58
        $this->registerAssets();
59
        $this->prepareTemplate();
60
        $content = $this->renderTemplate();
61
        // fix to allow for Yii not using selected="selected"
62
        $content = str_replace('" selected>' , '" selected="selected">', $content);
63
        echo $content;
64
    }
65
66
    /**
67
     * Prepare the input
68
     *
69
     * @return string
70
     */
71
    protected function prepareInput()
72
    {
73
        if ($this->hasModel()) {
74
            $this->sections['input'] = Html::activeDropDownList($this->model, $this->attribute, $this->items, $this->options);
75
        } else {
76
            $this->sections['input'] = Html::dropDownList($this->model, $this->attribute, $this->items, $this->options);
0 ignored issues
show
Documentation introduced by
$this->model is of type object<yii\base\Model>, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
77
        }
78
79
    }
80
81
    /**
82
     * Registers the needed client assets
83
     *
84
     * @return void
85
     */
86
    public function registerAssets()
87
    {
88
        if ($this->disabled) {
89
            return;
90
        }
91
        $view = $this->getView();
92
        BootstrapSelectSplitterAsset::register($view);
93
        $element = "jQuery('#" . $this->options['id'] . "')";
94
        $this->registerPlugin($this->pluginName, $element);
95
    }
96
97
}