diff --git a/migrations/m150312_162718_create_form_table.php b/migrations/m150307_162718_create_form_table.php similarity index 100% rename from migrations/m150312_162718_create_form_table.php rename to migrations/m150307_162718_create_form_table.php diff --git a/models/Form.php b/models/Form.php index ea1eb39..b1cdba6 100644 --- a/models/Form.php +++ b/models/Form.php @@ -11,7 +11,6 @@ use skeeks\cms\base\db\ActiveRecord; use skeeks\cms\models\behaviors\HasDescriptionsBehavior; use skeeks\cms\models\behaviors\HasStatus; use skeeks\cms\models\behaviors\Implode; -use skeeks\cms\models\behaviors\Serialize; use skeeks\cms\models\Core; /** @@ -33,12 +32,7 @@ class Form extends Core */ public function behaviors() { - return array_merge(parent::behaviors(), [ - [ - "class" => Serialize::className(), - 'fields' => ['emails', 'phones', 'elements'] - ], - ]); + return array_merge(parent::behaviors(), []); } /** @@ -47,12 +41,25 @@ class Form extends Core public function rules() { return array_merge(parent::rules(), [ + [['created_by', 'updated_by', 'created_at', 'updated_at'], 'integer'], [['name'], 'required'], - [['name', 'description'], 'string'], - [['emails', 'phones', 'elements'], 'safe'], + [['description', 'template'], 'string'], + [['name'], 'string', 'max' => 255], + [['code'], 'string', 'max' => 32], + [['code'], 'unique'], + + [['code'], 'validateCode'] ]); } + public function validateCode($attribute) + { + if(!preg_match('/^[a-z]{1}[a-z0-1-]{3,32}$/', $this->$attribute)) + { + $this->addError($attribute, 'Используйте только буквы латинского алфавита и цифры. Начинаться должен с буквы. Пример block1.'); + } + } + public function scenarios() { $scenarios = parent::scenarios(); @@ -68,12 +75,13 @@ class Form extends Core */ public function attributeLabels() { - return array_merge(parent::attributeLabels(), [ - 'id' => \Yii::t('app', 'ID'), - 'name' => \Yii::t('app', 'Name'), - 'description' => \Yii::t('app', 'Description'), + return array_merge(parent::attributeLabels(), [ + 'id' => \Yii::t('app', 'ID'), + 'name' => \Yii::t('app', 'Name'), + 'code' => \Yii::t('app', 'Уникальный код'), + 'description' => \Yii::t('app', 'Небольшое описание'), + 'template' => \Yii::t('app', 'Шаблон формы'), ]); } - } \ No newline at end of file diff --git a/models/FormEmail.php b/models/FormEmail.php index 9a734a1..df50e58 100644 --- a/models/FormEmail.php +++ b/models/FormEmail.php @@ -1,38 +1,73 @@ * @link http://skeeks.com/ - * @copyright 2010-2014 SkeekS (Sx) - * @date 28.10.2014 - * @since 1.0.0 + * @copyright 2010 SkeekS (СкикС) + * @date 07.03.2015 */ - namespace skeeks\modules\cms\form\models; -use Yii; -use yii\base\Model; +use skeeks\cms\base\db\ActiveRecord; +use skeeks\cms\models\behaviors\HasDescriptionsBehavior; +use skeeks\cms\models\behaviors\HasStatus; +use skeeks\cms\models\behaviors\Implode; +use skeeks\cms\models\Core; /** - * Login form + * Class FormEmail + * @package skeeks\modules\cms\form\models */ -class FormEmail extends Model +class FormEmail extends Core { - public $value; + /** + * @inheritdoc + */ + public static function tableName() + { + return '{{%form_email}}'; + } + + /** + * @inheritdoc + */ + public function behaviors() + { + return array_merge(parent::behaviors(), []); + } /** * @inheritdoc */ public function rules() { - return [ - // username and password are both required - [['value'], 'required'], - // rememberMe must be a boolean value - ['value', 'email'], - ]; + return array_merge(parent::rules(), [ + [['value', 'form_id'], 'required'], + [['value'], 'string', 'max' => 255], + [['form_id', 'value'], 'unique', 'targetAttribute' => ['form_id', 'value'], 'message' => 'The combination of Value and Form ID has already been taken.'], + [['value'], 'email'], + ]); + } + + public function scenarios() + { + $scenarios = parent::scenarios(); + + $scenarios['create'] = $scenarios[self::SCENARIO_DEFAULT]; + $scenarios['update'] = $scenarios[self::SCENARIO_DEFAULT]; + + return $scenarios; } + /** + * @inheritdoc + */ + public function attributeLabels() + { + return array_merge(parent::attributeLabels(), [ + 'id' => \Yii::t('app', 'ID'), + 'value' => \Yii::t('app', 'Email'), + 'form_id' => \Yii::t('app', 'Форма'), + ]); + } -} +} \ No newline at end of file diff --git a/models/Message.php b/models/Message.php new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/models/Message.php diff --git a/models/forms/EmailForm.php b/models/forms/EmailForm.php new file mode 100644 index 0000000..b73696e --- /dev/null +++ b/models/forms/EmailForm.php @@ -0,0 +1,38 @@ + + * @link http://skeeks.com/ + * @copyright 2010-2014 SkeekS (Sx) + * @date 28.10.2014 + * @since 1.0.0 + */ + +namespace skeeks\modules\cms\form\models\forms; + +use Yii; +use yii\base\Model; + +/** + * Login form + */ +class EmailForm extends Model +{ + public $value; + + /** + * @inheritdoc + */ + public function rules() + { + return [ + // username and password are both required + [['value'], 'required'], + // rememberMe must be a boolean value + ['value', 'email'], + ]; + } + + +} diff --git a/views/admin-form/_form.php b/views/admin-form/_form.php index 33a0042..114a86f 100644 --- a/views/admin-form/_form.php +++ b/views/admin-form/_form.php @@ -1,21 +1,70 @@ - + - field($model, 'name')->textInput(['maxlength' => 255]) ?> -buttonsCreateOrUpdate($model); ?> + - +fieldSet('Общая ниформация')?> + field($model, 'name')->textInput(); ?> +fieldSetEnd(); ?> + "Email адреса", + 'hint' => "Укажите email адреса, на которые будут приходить уведомления об отправке формы.", + 'parentModel' => $model, + 'relation' => [ + 'form_id' => 'id' + ], + 'controllerRoute' => 'form/admin-form-email', + 'gridViewOptions' => [ + 'columns' => [ + //['class' => 'yii\grid\SerialColumn'], + 'value', + ], + ], +]); ?> + "Телефоны", + 'hint' => "Укажите телефоны, на которые будут приходить уведомления об отправке формы.", + 'parentModel' => $model, + 'relation' => [ + 'form_id' => 'id' + ], + 'controllerRoute' => 'form/admin-form-phone', + 'gridViewOptions' => [ + 'columns' => [ + //['class' => 'yii\grid\SerialColumn'], + 'value', + ], + ], +]); ?> + "Элементы формы", + 'hint' => "", + 'parentModel' => $model, + 'relation' => [ + 'form_id' => 'id' + ], + 'controllerRoute' => 'form/admin-form-field', + 'gridViewOptions' => [ + 'columns' => [ + //['class' => 'yii\grid\SerialColumn'], + 'value', + ], + ], +]); ?> + +buttonsCreateOrUpdate($model); ?> +