From 45dfb243e86d8447f5a5c916283a7c8fa754ed43 Mon Sep 17 00:00:00 2001 From: Semenov Date: Mon, 16 Mar 2015 15:58:19 +0300 Subject: [PATCH] Элемент формы, EditedSelect - позволяет добавлять опции и редактировать их. --- _vendor/YiiApplication.php | 22 ++++++++++++++++++++++ components/FormRegisteredElements.php | 29 +++++++++++++++++++++++++++++ components/FormRegisteredWidgets.php | 29 +++++++++++++++++++++++++++++ config/main.php | 29 +++++++++++++++++++++++++++++ migrations/m150307_162735_create_form_field_table.php | 7 ++++++- models/FormField.php | 1 + models/Message.php | 0 models/form/elements/Base.php | 32 ++++++++++++++++++++++++++++++++ models/form/elements/textarea/Textarea.php | 13 +++++++++++++ views/admin-form/_form.php | 11 ++++++++++- 10 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 _vendor/YiiApplication.php create mode 100644 components/FormRegisteredElements.php create mode 100644 components/FormRegisteredWidgets.php delete mode 100644 models/Message.php create mode 100644 models/form/elements/Base.php create mode 100644 models/form/elements/textarea/Textarea.php diff --git a/_vendor/YiiApplication.php b/_vendor/YiiApplication.php new file mode 100644 index 0000000..d78583d --- /dev/null +++ b/_vendor/YiiApplication.php @@ -0,0 +1,22 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 16.03.2015 + */ +namespace yii\web; +use skeeks\modules\cms\form\components\FormRegisteredElements; +use skeeks\modules\cms\form\components\FormRegisteredWidgets; + + +/** + * + * @property FormRegisteredElements $formRegisteredElements + * @property FormRegisteredWidgets $formRegisteredWidgets + * + * Class Application + * @package yii\web + */ +class Application +{} \ No newline at end of file diff --git a/components/FormRegisteredElements.php b/components/FormRegisteredElements.php new file mode 100644 index 0000000..5029b4a --- /dev/null +++ b/components/FormRegisteredElements.php @@ -0,0 +1,29 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 16.03.2015 + */ +namespace skeeks\modules\cms\form\components; + +use skeeks\cms\base\db\ActiveRecord; +use skeeks\cms\components\CollectionComponents; +use skeeks\cms\components\RegisteredWidgets; +use skeeks\cms\models\StorageFile; +use skeeks\cms\models\WidgetDescriptor; +use Yii; +use yii\base\Component; +use yii\helpers\ArrayHelper; +use yii\web\UploadedFile; + +/** + * + * @method WidgetDescriptor[] getComponents() + * @method WidgetDescriptor getComponent($id) + * + * Class RegisteredWidgets + * @package skeeks\cms\components + */ +class FormRegisteredElements extends RegisteredWidgets +{} \ No newline at end of file diff --git a/components/FormRegisteredWidgets.php b/components/FormRegisteredWidgets.php new file mode 100644 index 0000000..a5f67ad --- /dev/null +++ b/components/FormRegisteredWidgets.php @@ -0,0 +1,29 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 16.03.2015 + */ +namespace skeeks\modules\cms\form\components; + +use skeeks\cms\base\db\ActiveRecord; +use skeeks\cms\components\CollectionComponents; +use skeeks\cms\components\RegisteredWidgets; +use skeeks\cms\models\StorageFile; +use skeeks\cms\models\WidgetDescriptor; +use Yii; +use yii\base\Component; +use yii\helpers\ArrayHelper; +use yii\web\UploadedFile; + +/** + * + * @method WidgetDescriptor[] getComponents() + * @method WidgetDescriptor getComponent($id) + * + * Class RegisteredWidgets + * @package skeeks\cms\components + */ +class FormRegisteredWidgets extends RegisteredWidgets +{} \ No newline at end of file diff --git a/config/main.php b/config/main.php index 6ddc53b..337c80c 100644 --- a/config/main.php +++ b/config/main.php @@ -9,6 +9,35 @@ * @since 1.0.0 */ return [ + 'components' => + [ + 'formRegisteredElements' => + [ + 'class' => 'skeeks\modules\cms\form\components\FormRegisteredElements', + 'components' => + [ + 'skeeks\modules\cms\form\models\form\elements\textarea\Textarea' => + [ + 'name' => 'Текстовое поле (textarea)', + 'description' => 'Виджет выводит нужные одразделы', + ], + ] + ], + + 'formRegisteredWidgets' => + [ + 'class' => 'skeeks\modules\cms\form\components\FormRegisteredWidgets', + 'components' => + [ + 'skeeks\modules\cms\form\models\form\elements\textarea\Textarea' => + [ + 'name' => 'Текстовое поле (textarea)', + 'description' => 'Виджет выводит нужные одразделы', + ], + ] + ], + ], + 'modules' => [ 'form' => [ diff --git a/migrations/m150307_162735_create_form_field_table.php b/migrations/m150307_162735_create_form_field_table.php index 52438c1..aaf483e 100644 --- a/migrations/m150307_162735_create_form_field_table.php +++ b/migrations/m150307_162735_create_form_field_table.php @@ -35,7 +35,12 @@ class m150307_162735_create_form_field_table extends Migration 'label' => Schema::TYPE_STRING . '(255) NULL', 'hint' => Schema::TYPE_TEXT . ' NULL', - 'widget' => Schema::TYPE_TEXT . ' NULL', + 'element' => Schema::TYPE_TEXT . '(255) NULL', + 'widget' => Schema::TYPE_TEXT . '(255) NULL', + + 'widget_settings' => Schema::TYPE_TEXT . ' NULL', + 'element_settings' => Schema::TYPE_TEXT . ' NULL', + 'rules' => Schema::TYPE_TEXT . ' NULL', 'priority' => Schema::TYPE_INTEGER . ' NOT NULL DEFAULT 0', diff --git a/models/FormField.php b/models/FormField.php index 14d6a08..6e18d90 100644 --- a/models/FormField.php +++ b/models/FormField.php @@ -43,6 +43,7 @@ class FormField extends Core return array_merge(parent::rules(), [ [['created_by', 'updated_by', 'created_at', 'updated_at', 'form_id'], 'integer'], [['hint'], 'string'], + [['priority'], 'integer'], [['widget', 'rules'], 'safe'], [[ 'form_id'], 'required'], ['attribute', 'default', 'value' => function(FormField $model, $attribute) diff --git a/models/Message.php b/models/Message.php deleted file mode 100644 index e69de29..0000000 --- a/models/Message.php +++ /dev/null diff --git a/models/form/elements/Base.php b/models/form/elements/Base.php new file mode 100644 index 0000000..11e2238 --- /dev/null +++ b/models/form/elements/Base.php @@ -0,0 +1,32 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 16.03.2015 + */ +namespace skeeks\modules\cms\form\models\form\elements; + +use skeeks\cms\base\Widget; + +class Base extends Widget +{ + public $value; + public $attributeClass; + + public function rules() + { + return ArrayHelper::merge(parent::rules(), [ + [['attributeClass'], 'string'], + [['value'], 'safe'], + ]); + } + + public function attributeLabels() + { + return ArrayHelper::merge(parent::attributeLabels(), [ + 'attributeClass' => 'Класс', + 'value' => 'Значение', + ]); + } +} \ No newline at end of file diff --git a/models/form/elements/textarea/Textarea.php b/models/form/elements/textarea/Textarea.php new file mode 100644 index 0000000..d93debd --- /dev/null +++ b/models/form/elements/textarea/Textarea.php @@ -0,0 +1,13 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 16.03.2015 + */ +namespace skeeks\modules\cms\form\models\form\elements\textarea; + +use skeeks\modules\cms\form\models\form\elements\Base; + +class Textarea extends Base +{} \ No newline at end of file diff --git a/views/admin-form/_form.php b/views/admin-form/_form.php index 53dcb9b..7d3a196 100644 --- a/views/admin-form/_form.php +++ b/views/admin-form/_form.php @@ -13,7 +13,7 @@ use common\models\User; -fieldSet('Общая ниформация')?> +fieldSet('Общая информация')?> field($model, 'name')->textInput(); ?> fieldSetEnd(); ?> @@ -62,8 +62,17 @@ use common\models\User; 'relation' => [ 'form_id' => 'id' ], + + 'sort' => [ + 'defaultOrder' => + [ + 'priority' => SORT_DESC + ] + ], + 'controllerRoute' => 'form/admin-form-field', 'gridViewOptions' => [ + 'sortable' => true, 'columns' => [ //['class' => 'yii\grid\SerialColumn'], -- libgit2 0.26.0