Passfield::run()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 16
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
eloc 12
c 2
b 0
f 1
dl 0
loc 16
rs 9.8666
cc 4
nc 4
nop 0
1
<?php
2
3
namespace modules\users\widgets\passfield;
4
5
use yii\base\InvalidConfigException;
6
use yii\helpers\Html;
7
use yii\widgets\InputWidget;
8
use modules\users\widgets\passfield\assets\PassfieldAsset;
9
10
/**
11
 * Class Passfield
12
 * @package modules\users\widgets\passfield
13
 */
14
class Passfield extends InputWidget
15
{
16
    /**
17
     * @var \yii\widgets\ActiveForm
18
     */
19
    public $form;
20
    /**
21
     * @var array Passfield options
22
     */
23
    public $config = [];
24
25
    /**
26
     * @var string
27
     */
28
    public $label;
29
30
    /**
31
     * @inheritdoc
32
     * @return $this|string
33
     * @throws InvalidConfigException
34
     */
35
    public function run()
36
    {
37
        $this->registerAssets();
38
        if ($this->hasModel()) {
39
            if ($this->form == null) {
40
                throw new InvalidConfigException(__CLASS__ . '.form property must be specified');
41
            }
42
            if (empty($this->label)) {
43
                return $this->form->field($this->model, $this->attribute)->passwordInput($this->options);
44
            }
45
            return $this->form
46
                ->field($this->model, $this->attribute)
47
                ->passwordInput($this->options)
48
                ->label($this->label);
49
        } else {
50
            return Html::passwordInput($this->name, $this->value, $this->options);
51
        }
52
    }
53
54
    /**
55
     * Register Assets
56
     */
57
    public function registerAssets()
58
    {
59
        PassfieldAsset::register($this->view);
60
        $config = empty($this->config) ? json_encode(['locale' => \Yii::$app->language]) : json_encode($this->config);
61
        $this->view->registerJs(sprintf('$("#%s").passField(%s)', $this->options['id'], $config));
62
    }
63
}
64