From 0388e8aabe41a44815173aa029c70af60cd37f4e Mon Sep 17 00:00:00 2001 From: Semenov Date: Fri, 13 Mar 2015 17:55:47 +0300 Subject: [PATCH] Новая форма для админки с табами ActiveFormUseTab --- config/admin/menu.php | 2 +- controllers/AdminFormFieldController.php | 1 - migrations/m150307_162735_create_form_field_table.php | 3 +++ models/FormField.php | 28 ++++++++++++++++++++++++++-- views/admin-form-email/_form.php | 15 ++++++++++++++- views/admin-form-field/_form.php | 19 +++++++++++++++++-- views/admin-form-phone/_form.php | 15 ++++++++++++++- views/admin-form-send-message/_form.php | 14 +++++++++++++- views/admin-form/_form.php | 6 ++++-- 9 files changed, 92 insertions(+), 11 deletions(-) diff --git a/config/admin/menu.php b/config/admin/menu.php index 29dddc7..9ad309f 100644 --- a/config/admin/menu.php +++ b/config/admin/menu.php @@ -1,4 +1,4 @@ - * @link http://skeeks.com/ diff --git a/controllers/AdminFormFieldController.php b/controllers/AdminFormFieldController.php index be80382..ec8c8f8 100644 --- a/controllers/AdminFormFieldController.php +++ b/controllers/AdminFormFieldController.php @@ -24,7 +24,6 @@ class AdminFormFieldController extends AdminModelEditorSmartController public function init() { $this->_label = "Управление email форм"; - $this->_modelShowAttribute = "value"; $this->_modelClassName = FormField::className(); $this->modelValidate = true; $this->enableScenarios = true; diff --git a/migrations/m150307_162735_create_form_field_table.php b/migrations/m150307_162735_create_form_field_table.php index 2867191..52438c1 100644 --- a/migrations/m150307_162735_create_form_field_table.php +++ b/migrations/m150307_162735_create_form_field_table.php @@ -38,6 +38,8 @@ class m150307_162735_create_form_field_table extends Migration 'widget' => Schema::TYPE_TEXT . ' NULL', 'rules' => Schema::TYPE_TEXT . ' NULL', + 'priority' => Schema::TYPE_INTEGER . ' NOT NULL DEFAULT 0', + 'attribute' => Schema::TYPE_STRING . '(255) NOT NULL', 'form_id' => Schema::TYPE_INTEGER . '(255) NOT NULL', @@ -50,6 +52,7 @@ class m150307_162735_create_form_field_table extends Migration $this->execute("ALTER TABLE {{%form_field}} ADD INDEX(updated_at);"); $this->execute("ALTER TABLE {{%form_field}} ADD INDEX(label);"); + $this->execute("ALTER TABLE {{%form_field}} ADD INDEX(priority);"); $this->execute("ALTER TABLE {{%form_field}} ADD UNIQUE(attribute,form_id);"); $this->execute("ALTER TABLE {{%form_field}} COMMENT = 'Элементы форм';"); diff --git a/models/FormField.php b/models/FormField.php index 9ec6563..14d6a08 100644 --- a/models/FormField.php +++ b/models/FormField.php @@ -42,14 +42,20 @@ class FormField extends Core { return array_merge(parent::rules(), [ [['created_by', 'updated_by', 'created_at', 'updated_at', 'form_id'], 'integer'], - [['hint', 'widget', 'rules'], 'string'], - [['attribute', 'form_id'], 'required'], + [['hint'], 'string'], + [['widget', 'rules'], 'safe'], + [[ 'form_id'], 'required'], + ['attribute', 'default', 'value' => function(FormField $model, $attribute) + { + return "sx-field-" . md5(rand(1, 10) . time()); + }], [['label', 'attribute'], 'string', 'max' => 255], [['attribute', 'form_id'], 'unique', 'targetAttribute' => ['attribute', 'form_id'], 'message' => 'Этот элемент уже привязан к форме'] ]); } + public function scenarios() { $scenarios = parent::scenarios(); @@ -69,7 +75,25 @@ class FormField extends Core 'id' => \Yii::t('app', 'ID'), 'value' => \Yii::t('app', 'Email'), 'form_id' => \Yii::t('app', 'Форма'), + 'attribute' => \Yii::t('app', 'Уникальный код (необязательно)'), + 'hint' => \Yii::t('app', 'Небольшая подсказка элемента'), + 'label' => \Yii::t('app', 'Название'), ]); } + /** + * @return \yii\db\ActiveQuery + */ + public function findForm() + { + return $this->hasOne(Form::className(), ['id' => 'form_id']); + } + + /** + * @return Form + */ + public function fetchForm() + { + return $this->findForm()->one(); + } } \ No newline at end of file diff --git a/views/admin-form-email/_form.php b/views/admin-form-email/_form.php index 95a14ee..4f3734d 100644 --- a/views/admin-form-email/_form.php +++ b/views/admin-form-email/_form.php @@ -13,7 +13,20 @@ use common\models\User; -field($model, 'form_id')->hiddenInput(['value' => (int) \Yii::$app->request->get('form_id')])->label(false); ?> +request->get('form_id')) : ?> + field($model, 'form_id')->hiddenInput(['value' => $form_id])->label(false); ?> + + field($model, 'form_id')->label('Форма')->widget( + \skeeks\widget\chosen\Chosen::className(), [ + 'items' => \yii\helpers\ArrayHelper::map( + \skeeks\modules\cms\form\models\Form::find()->all(), + "id", + "name" + ), + ]); + ?> + + field($model, 'value')->textInput(); ?> buttonsCreateOrUpdate($model); ?> diff --git a/views/admin-form-field/_form.php b/views/admin-form-field/_form.php index 95a14ee..e787836 100644 --- a/views/admin-form-field/_form.php +++ b/views/admin-form-field/_form.php @@ -13,8 +13,23 @@ use common\models\User; -field($model, 'form_id')->hiddenInput(['value' => (int) \Yii::$app->request->get('form_id')])->label(false); ?> -field($model, 'value')->textInput(); ?> +request->get('form_id')) : ?> + field($model, 'form_id')->hiddenInput(['value' => $form_id])->label(false); ?> + + field($model, 'form_id')->label('Форма')->widget( + \skeeks\widget\chosen\Chosen::className(), [ + 'items' => \yii\helpers\ArrayHelper::map( + \skeeks\modules\cms\form\models\Form::find()->all(), + "id", + "name" + ), + ]); + ?> + + +field($model, 'attribute')->textInput(); ?> +field($model, 'label')->textInput(); ?> +field($model, 'hint')->textInput(); ?> buttonsCreateOrUpdate($model); ?> diff --git a/views/admin-form-phone/_form.php b/views/admin-form-phone/_form.php index 95a14ee..4f3734d 100644 --- a/views/admin-form-phone/_form.php +++ b/views/admin-form-phone/_form.php @@ -13,7 +13,20 @@ use common\models\User; -field($model, 'form_id')->hiddenInput(['value' => (int) \Yii::$app->request->get('form_id')])->label(false); ?> +request->get('form_id')) : ?> + field($model, 'form_id')->hiddenInput(['value' => $form_id])->label(false); ?> + + field($model, 'form_id')->label('Форма')->widget( + \skeeks\widget\chosen\Chosen::className(), [ + 'items' => \yii\helpers\ArrayHelper::map( + \skeeks\modules\cms\form\models\Form::find()->all(), + "id", + "name" + ), + ]); + ?> + + field($model, 'value')->textInput(); ?> buttonsCreateOrUpdate($model); ?> diff --git a/views/admin-form-send-message/_form.php b/views/admin-form-send-message/_form.php index 702f8a1..11a7d8f 100644 --- a/views/admin-form-send-message/_form.php +++ b/views/admin-form-send-message/_form.php @@ -13,7 +13,19 @@ use common\models\User; -field($model, 'form_id')->hiddenInput(['value' => (int) \Yii::$app->request->get('form_id')])->label(false); ?> +request->get('form_id')) : ?> + field($model, 'form_id')->hiddenInput(['value' => $form_id])->label(false); ?> + + field($model, 'form_id')->label('Форма')->widget( + \skeeks\widget\chosen\Chosen::className(), [ + 'items' => \yii\helpers\ArrayHelper::map( + \skeeks\modules\cms\form\models\Form::find()->all(), + "id", + "name" + ), + ]); + ?> + buttonsCreateOrUpdate($model); ?> diff --git a/views/admin-form/_form.php b/views/admin-form/_form.php index 14dc845..1e4c3b8 100644 --- a/views/admin-form/_form.php +++ b/views/admin-form/_form.php @@ -1,7 +1,7 @@ [ 'columns' => [ //['class' => 'yii\grid\SerialColumn'], - 'value', + 'attribute', + 'label', + 'hint', ], ], ]); ?> -- libgit2 0.26.0