Blame view

artweb/artbox-core/widgets/BitMaskWidget.php 1.76 KB
326af919   mzavalniuk   add artbox-core t...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  <?php
      
      namespace artbox\core\widgets;
  
      use artbox\core\behaviors\BitMaskBehavior;
      use yii\base\Widget;
      use yii\db\ActiveRecord;
      use yii\helpers\Html;
      use yii\widgets\ActiveForm;
  
      /**
       * Class BitMaskWidget
       *
       * @property ActiveForm      $form
       * @property BitMaskBehavior $model
       * @package artbox\core\widgets
       */
      class BitMaskWidget extends Widget
      {
          /**
           * @var ActiveRecord
           */
          private $model;
      
          /**
           * @var ActiveForm
           */
          private $form;
      
          /**
           * @inheritdoc
           */
          public function run()
          {
              foreach ($this->model->fields as $id => $field) {
                  $value = boolval($this->model->getMaskInt() & 2 ** $field);
                  echo Html::beginTag('div', [ 'class' => 'form-group' ]);
                  echo Html::checkbox(
                      $this->model->getModelName() . '[masks][' . $id . ']',
                      $value,
                      [ 'class' => 'flat' ]
                  );
                  echo Html::label(
                      $id,
                      null,
                      [
                          'class' => 'control-label',
                      ]
                  );
                  echo Html::endTag('div');
              }
          }
      
          /**
           * Only for Active records
           *
           * @param \yii\db\ActiveRecord $model
           */
          public function setModel(ActiveRecord $model)
          {
              $this->model = $model;
          }
      
          /**
           * Form must be active form
           *
           * @param \yii\widgets\ActiveForm $form
           */
          public function setForm(ActiveForm $form)
          {
              $this->form = $form;
          }
      }