_form.php 14.9 KB
<?php
    
    use artbox\catalog\orders\assets\OrderAsset;
    use artbox\core\admin\assets\DateRangePicker;
    use artbox\core\admin\helpers\RelationInfo;
    use kartik\select2\Select2;
    use yii\bootstrap\Html;
    use yii\helpers\Url;
    use yii\web\JsExpression;
    use yii\widgets\ActiveForm;
    use artbox\core\admin\widgets\Form;
    use artbox\core\admin\widgets\ImageInput;
    
    /**
     * @var \yii\web\View       $this
     * @var common\models\Order $model
     * @var array               $labels
     * @var array               $deliveries
     * @var array               $payments
     * @var ActiveForm          $form
     * @var bool                $isCreate
     */
    OrderAsset::register($this);
?>

<div class="order-form">
    
    <?php $form = ActiveForm::begin(); ?>
  <div class="x_panel">
      
      
      <?php
          //        if ($model->isNewRecord) {
          //            echo $form->field($model, 'user_id')
          //                      ->textInput();
          //        }
      ?>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'name')
                 ->textInput(
                     [
                         'maxlength' => true,
                         'value'     => strip_tags($model->name),
                     ]
                 ) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'phone')
                 ->textInput([ 'maxlength' => true ]) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'email')
                 ->textInput([ 'maxlength' => true ]) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'city')
                 ->textInput([ 'maxlength' => true ]) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'address')
                 ->textInput([ 'maxlength' => true ]) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'comment')
                 ->textarea() ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'label_id')
                 ->widget(
                     Select2::className(),
                     [
                         'options'       => [
                             'placeholder' => \Yii::t('app', 'Выберите вариант метки'),
                         ],
                         'data'          => $labels,
                         'pluginOptions' => [
                             'allowClear' => true,
                         ],
                     ]
                 ) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'delivery_id')
                 ->widget(
                     Select2::className(),
                     [
                         'options'       => [
                             'placeholder' => \Yii::t('app', 'Выберите вариант доставки'),
                         ],
                         'data'          => $deliveries,
                         'pluginOptions' => [
                             'allowClear' => true,
                         ],
                     ]
                 ) ?>
    </div>
    <div class="wrapp-blocks-edit-page">
        <?= $form->field($model, 'payment_id')
                 ->widget(
                     Select2::className(),
                     [
                         'options'       => [
                             'placeholder' => \Yii::t('app', 'Выберите вариант оплаты'),
                         ],
                         'data'          => $payments,
                         'pluginOptions' => [
                             'allowClear' => true,
                         ],
                     ]
                 ) ?>
    </div>
      <?php foreach ($this->context->module->fields as $field) {
          echo ' <div class="wrapp-blocks-edit-page">';
          switch ($field[ 'type' ]) {
              case Form::STRING :
                  echo $form->field($model, $field[ 'name' ])
                            ->textInput();
                  
                  break;
              
              case Form::TEXTAREA :
                  echo $form->field($model, $field[ 'name' ])
                            ->textarea();
                  break;
              case Form::WYSIWYG :
                  $form->field($model, $field[ 'name' ])
                       ->widget(
                           \mihaildev\ckeditor\CKEditor::class,
                           [
                          
                               'editorOptions' => \yii\helpers\ArrayHelper::merge(
                                   \mihaildev\elfinder\ElFinder::ckeditorOptions(
                                       'elfinder',
                                       [
                                           'language' => 'ru',
                                       ]
                                   ),
                                   [
                                       'preset'         => 'standart',
                                       'removeButtons'  => 'SelectAll,Find,Replace,Flash,Smiley,PageBreak,ShowBlocks,Save,NewPage,Print,Templates,ImageButton,Select,Button,Textarea,Radio,Checkbox,Form,Subscript,Superscript,CopyFormatting,RemoveFormat,CreateDiv,Language,HiddenField,About,TextField,Font,FontSize',
                                       'allowedContent' => true,
                                   ]
                               ),
                           ]
                       );
                  
                  break;
              case Form::IMAGE:
                  echo $form->field(
                      $model,
                      $field[ 'name' ],
                      [ 'options' => [ 'class' => 'form-group filed-upload-imgs' ] ]
                  )
                            ->widget(
                                ImageInput::class,
                                [
                                    'showPreview' => true,
                                ]
                            );
                  break;
              case Form::BOOL:
                  echo $form->field(
                      $model,
                      $field[ 'name' ],
                      [
                          'template' => "<div class='div_ style' style='margin-bottom: 10px;'>{label}</div>\n{input}\n{error}",
                      ]
                  )
                            ->checkbox(
                                [
                                    'class' => 'switchery',
                                ],
                                false
                            );
                  break;
              
              case Form::NUMBER:
                  echo $form->field(
                      $model,
                      $field[ 'name' ],
                      [
                          'template' => '{label}<span class="pos-minus-adm"></span>{input}<span class="pos-pluse-adm"></span>
                            {error}{hint}',
                          'options'  => [ 'class' => 'form-group filed-sort' ],
                      ]
                  );
                  break;
              
              case Form::RELATION:
                  $isMultiple = $field[ 'multiple' ] ?? false;
                  $relationInfo = new RelationInfo($model, $field[ 'relationName' ]);
                  echo $form->field($model, $field[ 'name' ])
                            ->widget(
                                Select2::classname(),
                                [
                                    'data'          => $relationInfo->getAllFields($field[ 'relationAttribute' ]),
                                    'options'       => [
                                        'placeholder' => \Yii::t('core', 'Select ...'),
                                        'multiple'    => $isMultiple,
                                    ],
                                    'pluginOptions' => [
                                        'allowClear' => true,
                                    ],
                                ]
                            );
                  break;
              case Form::SELECT:
                  $isMultiple = $field[ 'multiple' ] ?? false;
                  echo $form->field($model, $field[ 'name' ])
                            ->widget(
                                Select2::classname(),
                                [
                                    'data'          => $field[ 'data' ],
                                    'options'       => [
                                        'placeholder' => \Yii::t('core', 'Select ...'),
                                        'multiple'    => $isMultiple,
                                    ],
                                    'pluginOptions' => [
                                        'allowClear' => true,
                                    ],
                                ]
                            );
                  
                  break;
              case Form::DATE:
                  DateRangePicker::register($this);
                  $mindate = date("d-m-Y H:i");
                  $value = $model->{$field[ 'name' ]};
                  $js = <<< JS
var dateRangeInputFrom = $('#date_field');
var dateFormat = '{$model->clientDateFormat}';
dateRangeInputFrom.daterangepicker({
  singleDatePicker: true,
      autoUpdateInput: true,
       showDropdowns: true,
       minDate: '{$mindate}',
       timePicker: true,
       timePicker24Hour: true,
      locale: {
         cancelLabel: 'Clear',
          format: dateFormat
      }
}, function(){
      
      });
dateRangeInputFrom.on('cancel.daterangepicker', function() {
  //do something, like clearing an input
  dateRangeInputFrom.val('');
});
if ("{$value}" == ""){
     dateRangeInputFrom.val('');
}
JS;
                  $this->registerJs($js, \yii\web\View::POS_READY);
                  echo $form->field(
                      $model,
                      $field[ 'name' ],
                      [ 'options' => [ 'class' => 'form-group date-search' ] ]
                  )
                            ->textInput([ 'id' => "date_field" ]);
                  break;
          }
          echo '</div>';
      } ?>
  </div>
  
  <div class="x_panel">
    <div class="order-product-container wrapp-blocks-edit-page">
      <div class="row">
        <div class="col-xs-12">
          <div class="row">
            <div class="col-md-9">
              <label>Добавить еще товар</label>
                <?php
                    echo Select2::widget(
                        [
                            'name'          => 'add-to-order',
                            'options'       => [
                                'placeholder' => \Yii::t('order', 'Select product'),
                            ],
                            'pluginOptions' => [
                                'allowClear'         => true,
                                'minimumInputLength' => 3,
                                'language'           => [
                                    'errorLoading' => new JsExpression(
                                        "function() {return '" . \Yii::t('order', 'Waiting for results') . "'; }"
                                    ),
                                ],
                                'ajax'               => [
                                    'url'      => Url::to([ 'product-list' ]),
                                    'dataType' => 'json',
                                    'data'     => new JsExpression('function(params) { return {q:params.term}; }'),
                                ],
                                'escapeMarkup'       => new JsExpression('function (markup) { return markup; }'),
                                'templateResult'     => new JsExpression('function(city) { return city.text; }'),
                                'templateSelection'  => new JsExpression('function (city) { return city.text; }'),
                            ],
                            'id'            => 'add-to-order',
                        ]
                    );
                ?>
            </div>
            <div class="col-md-2">
                <?php
                    $idInput = 'count-to-order';
                    echo '<label for="' . $idInput . '">КОЛ-ВО</label>';
                    echo Html::textInput(
                        'count-to-order',
                        1,
                        [
                            'class' => 'form-control',
                            'id'    => $idInput,
                        ]
                    );
                ?>
            </div>
            <a class="variant-to-order  btn btn-success add-goods-order" href="#">
              <i class="fa fa-plus"></i>
            </a>
          </div>
        </div>
      </div>
      
      <div id="order-product-pjax" class="row">
        <div class="col-xs-12 order-goods-th"<?= $isCreate ? ' style="display: none;"' : '' ?>>
          <div class="row">
            <div class="col-md-7">
                <?php
                    echo Html::tag('label', \Yii::t('order', 'Product'));
                ?>
            </div>
            <div class="col-md-2">
                <?php
                    echo Html::tag('label', \Yii::t('order', 'Price'));
                ?>
            </div>
            <div class="col-md-2">
                <?php
                    echo Html::tag('label', \Yii::t('order', 'Count'));
                ?>
            </div>
          </div>
        </div>
        
        
        <div id="product-rows" class="col-xs-12">
            <?php
                $sum = 0;
                if (!$model->isNewRecord) {
                    foreach ($model->orderProducts as $index => $orderProduct) {
                        $sum += ( $orderProduct->count * $orderProduct->price );
                        echo $this->render(
                            $this->context->module->orderProductView,
                            [
                                'orderProduct' => $orderProduct,
                                'price'        => $orderProduct->price,
                                'index'        => $index,
                                'variant'      => $orderProduct->variant,
                                'form'         => $form,
                            ]
                        );
                    }
                    
                }
            ?>
        
        </div>
          <?php
                  echo( " <div class='sum_all col-xs-12'>Итого: <strong id='total-sum'>" . $sum . "</strong></div>" );
          ?>
      </div>
    </div>
  </div>
  
  
  <div class="style buttons-page-wr">
      <?= Html::submitButton(
          $model->isNewRecord ? Yii::t('order', 'Create') : Yii::t('order', 'Update'),
          [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-success' ]
      ) ?>
  </div>
    
    <?php ActiveForm::end(); ?>

</div>