/** * Action change status order */ public function actionChangestatus() { $id = Yii::$app->request->post('id'); $status = Yii::$app->request->post('status'); $model = $this->findModel($id); $model->status = $status; $model->save(); echo json_encode(['status' => Module::getListStatus($model->status), 'log' => $model->generateLogOrder()]); }
<?php use yii\bootstrap\Html; use yii\helpers\ArrayHelper; use sya\ecommerce\Module; ?> <!-- Begin view status --> <div id="statusOrder"> <?php if (!$model->getIsNewRecord()) { ?> <?php if (Module::STATUS_COMPLETE != $model->status and Module::STATUS_CLOSE != $model->status and Module::STATUS_CANCEL != $model->status) { ?> <?php echo Html::dropDownList('statusOrder', '', Module::getListStatus($model->status), ['class' => 'form-control', 'onchange' => 'changeStatusOrder(this);']); ?> <?php } else { ?> <?php echo ArrayHelper::getValue(Module::$status, $model->status); ?> <?php } } else { ?> <?php echo ArrayHelper::getValue(Module::$status, Module::STATUS_NEW); } ?>
/** * Render item order * @return string */ public function renderItems() { // Declare default value properties itemSettings. $namespaceGridview = ArrayHelper::getValue($this->itemSettings, 'namespaceGridview', '\\kartik\\grid\\GridView'); $panel = ArrayHelper::getValue($this->itemSettings, 'panel', ['heading' => Yii::t('ecommerce', 'Order')]); // If empty($dataProvider), empty($searchModel) then set default $dataProvider, $searchModel. $dataProvider = ArrayHelper::getValue($this->itemSettings, 'dataProvider', ''); $searchModel = ArrayHelper::getValue($this->itemSettings, 'searchModel', ''); // Controller action in ecommerce $actions = ArrayHelper::getValue($this->itemSettings, 'actions', []); // Build default columns $columns = ArrayHelper::getValue($this->itemSettings, 'columns', [['class' => 'kartik\\grid\\SerialColumn', 'contentOptions' => ['class' => 'kartik-sheet-style'], 'width' => '36px', 'header' => '', 'headerOptions' => ['class' => 'kartik-sheet-style']], ['attribute' => '_id', 'hAlign' => 'center', 'vAlign' => 'middle'], ['attribute' => 'ecommerce_id', 'hAlign' => 'center', 'vAlign' => 'middle', 'value' => function ($model, $key, $index, $widget) { return Html::a($model->ecommerce_id, Url::to(['update', 'id' => $model->_id]), ['title' => 'Xem chi tiết ' . $model->ecommerce_id . '']); }, 'format' => 'raw'], ['attribute' => 'creator', 'hAlign' => 'center', 'vAlign' => 'middle'], ['attribute' => 'created_at', 'filterType' => $namespaceGridview::FILTER_DATE_RANGE, 'format' => 'raw', 'width' => '270px', 'hAlign' => 'center', 'vAlign' => 'middle', 'filterWidgetOptions' => ['pluginOptions' => ['format' => 'Y-m-d', 'separator' => ' to ', 'opens' => 'left'], 'presetDropdown' => true, 'hideInput' => true, 'convertFormat' => true], 'value' => function ($model, $key, $index, $widget) { return date('d-m-Y', $model->created_at->sec); }], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'status', 'vAlign' => 'middle', 'width' => '150px', 'filterType' => $namespaceGridview::FILTER_SELECT2, 'filter' => Module::$status, 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => Yii::t('ecommerce', 'Status')], 'editableOptions' => function ($model, $key, $index) { return ['header' => Yii::t('ecommerce', 'Status'), 'size' => 'md', 'placement' => 'top', 'inputType' => \kartik\editable\Editable::INPUT_DROPDOWN_LIST, 'buttonsTemplate' => '', 'data' => Module::getListStatus($model->status), 'options' => ['class' => 'syaSelectStatus form-control', 'options' => ['pluginOptions' => ['allowClear' => true]]], 'pluginEvents' => ["editableChange" => "function(event, val) {\r\n var element = \$(this);\r\n var id = element.parents('tr').attr('data-key');\r\n var status = jQuery.parseJSON('" . json_encode(Module::$status) . "');\r\n var check = confirm('Are you sure?');\r\n if (check == true){\r\n \$.ajax({\r\n url: '" . \yii\helpers\Url::to(['/ecommerce/ajax/changestatus']) . "',\r\n type: 'post',\r\n dataType: 'json',\r\n data: {status: val, id: id},\r\n }).done(function (data) {\r\n element.find('.syaStatus').text(status[val]);\r\n element.find('.syaSelectStatus').empty();\r\n \$.each(data.status, function(key, value) {\r\n element.find('.syaSelectStatus').append( new Option(value, key) );\r\n });\r\n });\r\n } else {\r\n element.find('.syaSelectStatus').val('" . Module::STATUS_EMPTY . "');\r\n }\r\n }"]]; }, 'format' => 'raw', 'value' => function ($model, $key, $index, $widget) { return Html::tag('span', ArrayHelper::getValue(Module::$status, $model->status), ['class' => 'syaStatus']); }], 'note_customer', ['class' => 'kartik\\grid\\ActionColumn', 'urlCreator' => function ($action, $model, $key, $index) { return Url::to(['delete', 'id' => $model->_id]); }, 'template' => '{delete}']]); $button = Html::a(Yii::t('ecommerce', 'Create') . ' ' . Yii::t('ecommerce', 'Order'), $actions[Module::ACTION_CREATE], ['class' => 'btn btn-info', 'style' => 'margin-bottom: 10px;']); return $button . $namespaceGridview::widget(['panel' => $panel, 'pjax' => $this->pjax, 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => $columns, 'responsive' => true, 'hover' => true]); }