<?php use app\backend\components\ActionColumn; use kartik\dynagrid\DynaGrid; use kartik\grid\BooleanColumn; use kartik\helpers\Html; use kartik\icons\Icon; /** * @var $this yii\web\View * @var $searchModel app\components\SearchModel * @var $dataProvider yii\data\ActiveDataProvider */ $this->title = Yii::t('app', 'Payment Types'); $this->params['breadcrumbs'][] = $this->title; ?> <div class="payment-type-index"> <?php echo DynaGrid::widget(['options' => ['id' => 'payment-types-grid'], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['edit', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => 'remove-all', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], 'id', 'name', 'class', 'commission', ['class' => BooleanColumn::className(), 'attribute' => 'active'], ['class' => BooleanColumn::className(), 'attribute' => 'payment_available'], 'sort', ['class' => ActionColumn::className()]]]); ?> </div>
<?php /** * @var yii\web\View $this * @var yii\data\ActiveDataProvider $dataProvider * @var \app\models\Form $searchModel */ use app\backend\components\ActionColumn; use kartik\dynagrid\DynaGrid; use kartik\grid\BooleanColumn; use kartik\helpers\Html; use kartik\icons\Icon; $this->title = Yii::t('app', 'Content Blocks'); $this->params['breadcrumbs'][] = $this->title; ?> <?php echo app\widgets\Alert::widget(['id' => 'alert']); ?> <?php echo DynaGrid::widget(['options' => ['id' => 'backend-chunk-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'id'], 'name', 'key', ['class' => BooleanColumn::className(), 'attribute' => 'preload'], ['class' => ActionColumn::className(), 'options' => ['width' => '95px'], 'buttons' => [['url' => 'edit', 'icon' => 'pencil', 'class' => 'btn-primary', 'label' => Yii::t('app', 'Edit')], ['url' => 'delete', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => Yii::t('app', 'Delete')]]]], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/core/backend-chunk/edit', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => '/core/backend-chunk/remove-all', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]]]);
<?php echo app\widgets\Alert::widget(['id' => 'alert']); ?> <div class="row"> <div class="col-md-12" id="jstree-more"> <?php $this->beginBlock('buttonGroup'); ?> <div class="btn-toolbar" role="toolbar"> <div class="btn-group"> <?php echo \yii\helpers\Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/shop/backend-discount/edit', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']); ?> </div> <?php echo \app\backend\widgets\RemoveAllButton::widget(['url' => \yii\helpers\Url::toRoute(['/shop/backend-discount/remove-all']), 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']]); ?> </div> <?php $this->endBlock(); ?> <?php echo DynaGrid::widget(['options' => ['id' => 'page-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'id'], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'name'], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'value'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'value_in_percent'], ['class' => 'app\\backend\\components\\ActionColumn']], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => '<h3 class="panel-title">' . $this->title . '</h3>', 'after' => $this->blocks['buttonGroup']]]]); ?> </div> </div>
/** * Generates columns * @return array */ public function generateColumns() { $tableSchema = $this->getTableSchema(); if ($tableSchema === false) { return $this->getColumnNames(); } else { $columns = []; foreach ($tableSchema->columns as $column) { if ($this->checkColumn($column)) { $columns[$column->name]['attribute'] = $column->name; if ($column->type === 'boolean' || stripos($column->dbType, 'tinyint') !== false) { $columns[$column->name]['class'] = BooleanColumn::className(); $columns[$column->name]['trueLabel'] = 'Да'; $columns[$column->name]['falseLabel'] = 'Нет'; } } } return $columns; } }
public static function boolean(ActiveRecord $model, $attribute, $options = []) { $config = ArrayHelper::merge(['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => $attribute, 'trueLabel' => 'Yes', 'falseLabel' => 'No'], self::selectWidgetFilterConfig([0 => 'No', 1 => 'Yes'])); return ArrayHelper::merge($config, $options); }
<?php echo $form->field($model, 'name'); ?> <?php echo $form->field($model, 'object_id')->dropDownList(app\models\Object::getSelectArray()); ?> <?php echo $form->field($model, 'is_internal')->checkbox(); ?> <?php echo $form->field($model, 'hidden_group_title')->checkbox(); ?> <?php echo $form->field($model, 'sort_order'); ?> <?php BackendWidget::end(); ?> </article> </div> </section> <?php ActiveForm::end(); if (!$model->isNewRecord) { ?> <?php echo DynaGrid::widget(['options' => ['id' => 'group-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => \kartik\grid\DataColumn::className(), 'attribute' => 'id'], ['attribute' => 'property_handler_id', 'filter' => app\models\PropertyHandler::getSelectArray(), 'value' => function ($model, $key, $index, $widget) { $array = app\models\PropertyHandler::getSelectArray(); return $array[$model->property_handler_id]; }], 'name', 'key', ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'has_static_values'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'has_slugs_in_values'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'is_eav'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'is_column_type_stored'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'multiple'], ['class' => ActionColumn::className(), 'buttons' => [['url' => 'edit-property', 'icon' => 'pencil', 'class' => 'btn-primary', 'label' => 'Edit'], ['url' => 'delete-property', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => 'Delete', 'options' => ['data-action' => 'delete']]], 'url_append' => '&property_group_id=' . $model->id]], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', Yii::t('app', 'Properties'), ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/backend/properties/edit-property', 'property_group_id' => $model->id, 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => \yii\helpers\Url::to(['/backend/properties/remove-all-properties', 'group_id' => $model->id]), 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]]]); }
<?php use kartik\dynagrid\DynaGrid; use yii\helpers\Html; use app\backend\components\ActionColumn; use app\modules\shop\models\AddonCategory; /* * @var $dataProvider yii\data\ActiveDataProvider * @var $searchModel \app\modules\shop\models\Addon * @var $this yii\web\View */ /** @var AddonCategory $addonCategory */ $this->title = Yii::t('app', 'Addon for category "{category}"', ['category' => Html::encode($addonCategory->name)]); $this->params['breadcrumbs'][] = ['url' => ['index'], 'label' => Yii::t('app', 'Addon categories')]; $this->params['breadcrumbs'][] = ['url' => ['edit-category', 'id' => $addonCategory->id], 'label' => Yii::t('app', 'Category "{category}"', ['category' => Html::encode($addonCategory->name)])]; $this->params['breadcrumbs'][] = $this->title; echo DynaGrid::widget(['options' => ['id' => 'addons-grid'], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(\kartik\icons\Icon::show('plus') . Yii::t('app', 'Add'), ['edit-addon', 'addon_category_id' => $addonCategory->id], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => 'remove-all-addons', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]], 'columns' => [['class' => \app\backend\columns\CheckboxColumn::className()], 'id', 'name', 'price', ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'add_to_order'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'can_change_quantity'], ['class' => ActionColumn::className(), 'buttons' => [['url' => 'edit-addon', 'icon' => 'pencil', 'class' => 'btn-default', 'label' => Yii::t('app', 'Edit'), 'url_append' => '&addon_category_id=' . $addonCategory->id], ['url' => 'delete-addon', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => Yii::t('app', 'Delete')]]]]]); ?>
/** * @param ActiveRecord $model * @param $options * @return array */ public function createListWidget($model, $options) { if (is_array($options) && isset($options[0]) && isset($options[1])) { $attribute = array_shift($options); $type = array_shift($options); $editable = isset($options['editable']) && $options['editable'] == true; $editableType = isset($options['editableType']) ? $options['editableType'] : Editable::INPUT_TEXT; unset($options['editable'], $options['editableType']); $config = ['attribute' => $attribute]; $choices = []; switch ($type) { case 'date': $config = ['attribute' => $attribute, 'format' => ['datetime', 'php:Y-m-d'], 'options' => ['style' => 'width:240px'], 'filterWidgetOptions' => ['type' => DatePicker::TYPE_RANGE, 'attribute2' => $attribute . '_to'], 'filterType' => DatePicker::className()]; break; case 'datetime': $config = ['attribute' => $attribute, 'format' => ['datetime', 'php:Y-m-d H:i:s'], 'options' => ['style' => 'width:240px'], 'filterWidgetOptions' => ['type' => DatePicker::TYPE_RANGE, 'attribute2' => $attribute . '_to'], 'filterType' => DatePicker::className()]; break; case 'boolean': $choices = ModelHelper::getBooleanChoices($model, $attribute); $config = ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => $attribute, 'filterWidgetOptions' => ['data' => $choices, 'pluginOptions' => ['allowClear' => true, 'placeholder' => 'Select...']], 'filterType' => Select2::className()]; break; case 'enumerate': $choices = ModelHelper::getEnumChoices($model, $attribute); $config = ['attribute' => $attribute, 'filterWidgetOptions' => ['data' => $choices, 'pluginOptions' => ['allowClear' => true, 'placeholder' => 'Select...']], 'filterType' => Select2::className()]; break; case 'relation': $relation = ModelHelper::getRelation($model, $attribute); $choices = ModelHelper::getSelectChoices(new $relation->modelClass()); $config = ['label' => ucfirst(strpos($attribute, '.') !== false ? substr($attribute, strrpos($attribute, '.') + 1) : $attribute), 'attribute' => $attribute, 'value' => function ($model, $key, $index, $widget) use($attribute) { return $model ? ModelHelper::getLabelRelationValue($model, $attribute) : null; }, 'filter' => !$relation->multiple ? $choices : false, 'filterWidgetOptions' => ['data' => $choices, 'pluginOptions' => ['allowClear' => true, 'placeholder' => '...']], 'filterType' => Select2::className()]; break; } if ($editable) { switch ($type) { case 'date': $config['editableOptions'] = ['inputType' => Editable::INPUT_DATE]; break; case 'datetime': $config['editableOptions'] = ['inputType' => Editable::INPUT_DATETIME]; break; case 'boolean': case 'enumerate': $config['editableOptions'] = ['inputType' => Editable::INPUT_SELECT2, 'options' => ['data' => $choices], 'displayValueConfig' => $choices]; break; case 'relation': $relation = ModelHelper::getRelation($model, $attribute); $config['editableOptions'] = ['inputType' => Editable::INPUT_SELECT2, 'size' => 'lg', 'options' => ['options' => ['multiple' => $relation->multiple], 'data' => $choices, 'pluginOptions' => count($choices) > 20 ? ['minimumInputLength' => 3, 'ajax' => ['url' => Url::to(['/ycm/model/choices', 'name' => $this->getModelName(new $relation->modelClass())]), 'dataType' => 'json', 'processResults' => new JsExpression('function (results) { return results; }')]] : null], 'displayValueConfig' => !$relation->multiple ? $choices : null]; break; default: $config['editableOptions']['options'] = $config; break; } $config = ArrayHelper::merge(['editableOptions' => ['inputType' => $editableType]], $config, ['class' => EditableColumn::className(), 'editableOptions' => ['ajaxSettings' => ['url' => Url::to(['/ycm/model/editable', 'name' => $this->getModelName($model)])]]]); } $options = ArrayHelper::merge($config, $options); } return $options; }
<?php /** * @var yii\web\View $this * @var yii\data\ActiveDataProvider $dataProvider * @var \app\models\Form $searchModel */ use app\backend\components\ActionColumn; use kartik\dynagrid\DynaGrid; use kartik\grid\BooleanColumn; use kartik\helpers\Html; use kartik\icons\Icon; $this->title = Yii::t('app', 'Property groups'); $this->params['breadcrumbs'][] = $this->title; ?> <?php echo app\widgets\Alert::widget(['id' => 'alert']); ?> <?php echo DynaGrid::widget(['options' => ['id' => 'properties-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'id'], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'object_id', 'filter' => app\models\Object::getSelectArray(), 'value' => function ($model, $key, $index, $widget) { $array = app\models\Object::getSelectArray(); return $array[$model->object_id]; }], 'name', ['class' => BooleanColumn::className(), 'attribute' => 'is_internal'], ['class' => BooleanColumn::className(), 'attribute' => 'hidden_group_title'], ['class' => ActionColumn::className(), 'options' => ['width' => '95px'], 'buttons' => [['url' => 'group', 'icon' => 'pencil', 'class' => 'btn-primary', 'label' => Yii::t('app', 'Edit')], ['url' => 'delete-group', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => Yii::t('app', 'Delete'), 'options' => ['data-action' => 'delete']]]]], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/backend/properties/group', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => '/backend/properties/remove-all-groups', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]]]);