Commit dec66dbe9a1f2ea10b3e7f4866765b497ef1cd15
1 parent
dc2e8308
feedback subject
Showing
13 changed files
with
468 additions
and
16 deletions
Show diff stats
backend/config/main.php
| @@ -21,7 +21,6 @@ | @@ -21,7 +21,6 @@ | ||
| 21 | 'page' => 'artbox\core\controllers\PageController', | 21 | 'page' => 'artbox\core\controllers\PageController', |
| 22 | 'alias' => 'artbox\core\controllers\AliasController', | 22 | 'alias' => 'artbox\core\controllers\AliasController', |
| 23 | 'seo' => 'artbox\core\controllers\SeoController', | 23 | 'seo' => 'artbox\core\controllers\SeoController', |
| 24 | - 'feedback' => 'artbox\core\controllers\FeedbackController', | ||
| 25 | ], | 24 | ], |
| 26 | 'components' => [ | 25 | 'components' => [ |
| 27 | 'assetManager' => [ | 26 | 'assetManager' => [ |
| 1 | +<?php | ||
| 2 | + namespace backend\controllers; | ||
| 3 | + | ||
| 4 | + use artbox\core\controllers\FeedbackController as FeedbackCoreController; | ||
| 5 | + | ||
| 6 | + /** | ||
| 7 | + * Created by PhpStorm. | ||
| 8 | + * User: timur | ||
| 9 | + * Date: 29.11.17 | ||
| 10 | + * Time: 15:18 | ||
| 11 | + */ | ||
| 12 | + class FeedbackController extends FeedbackCoreController | ||
| 13 | + { | ||
| 14 | + public function getViewPath() | ||
| 15 | + { | ||
| 16 | + return \Yii::getAlias('@backend/views/feedback'); | ||
| 17 | + } | ||
| 18 | + } | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\helpers\Html; | ||
| 4 | + use yii\widgets\ActiveForm; | ||
| 5 | + | ||
| 6 | + /* @var $this yii\web\View */ | ||
| 7 | + /* @var $model artbox\core\models\Feedback */ | ||
| 8 | + /* @var $form yii\widgets\ActiveForm */ | ||
| 9 | +?> | ||
| 10 | + | ||
| 11 | +<div class="feedback-form"> | ||
| 12 | + | ||
| 13 | + <?php $form = ActiveForm::begin(); ?> | ||
| 14 | + | ||
| 15 | + <?= $form->field($model, 'name') | ||
| 16 | + ->textInput([ 'maxlength' => true ]) ?> | ||
| 17 | + | ||
| 18 | + <?= $form->field($model, 'email') | ||
| 19 | + ->textInput([ 'maxlength' => true ]) ?> | ||
| 20 | + | ||
| 21 | + <?= $form->field($model, 'phone') | ||
| 22 | + ->textInput([ 'maxlength' => true ]) ?> | ||
| 23 | + | ||
| 24 | + <?= $form->field($model, 'message') | ||
| 25 | + ->textarea([ 'rows' => 6 ]) ?> | ||
| 26 | + | ||
| 27 | + <?= $form->field($model, 'status') | ||
| 28 | + ->checkbox( | ||
| 29 | + [ | ||
| 30 | + 'class' => 'flat', | ||
| 31 | + ] | ||
| 32 | + ) ?> | ||
| 33 | + | ||
| 34 | + <div class="form-group"> | ||
| 35 | + <?= Html::submitButton( | ||
| 36 | + $model->isNewRecord ? Yii::t('core', 'Create') : Yii::t('core', 'Update'), | ||
| 37 | + [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ] | ||
| 38 | + ) ?> | ||
| 39 | + </div> | ||
| 40 | + | ||
| 41 | + <?php ActiveForm::end(); ?> | ||
| 42 | + | ||
| 43 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\helpers\Html; | ||
| 4 | + | ||
| 5 | + /* @var $this yii\web\View */ | ||
| 6 | + /* @var $model artbox\core\models\Feedback */ | ||
| 7 | + | ||
| 8 | + $this->title = Yii::t('core', 'Create Feedback'); | ||
| 9 | + $this->params[ 'breadcrumbs' ][] = [ | ||
| 10 | + 'label' => Yii::t('core', 'Feedbacks'), | ||
| 11 | + 'url' => [ 'index' ], | ||
| 12 | + ]; | ||
| 13 | + $this->params[ 'breadcrumbs' ][] = $this->title; | ||
| 14 | +?> | ||
| 15 | +<div class="feedback-create"> | ||
| 16 | + | ||
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 18 | + | ||
| 19 | + <?= $this->render( | ||
| 20 | + '_form', | ||
| 21 | + [ | ||
| 22 | + 'model' => $model, | ||
| 23 | + ] | ||
| 24 | + ) ?> | ||
| 25 | + | ||
| 26 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use artbox\core\models\Feedback; | ||
| 4 | + use yii\data\ActiveDataProvider; | ||
| 5 | + use yii\helpers\Html; | ||
| 6 | + use yii\web\View; | ||
| 7 | + use yiister\gentelella\widgets\grid\GridView; | ||
| 8 | + use yiister\gentelella\widgets\Panel; | ||
| 9 | + | ||
| 10 | + /** | ||
| 11 | + * @var View $this | ||
| 12 | + * @var ActiveDataProvider $dataProvider | ||
| 13 | + */ | ||
| 14 | + | ||
| 15 | + $this->title = Yii::t('core', 'Feedbacks'); | ||
| 16 | + $this->params[ 'breadcrumbs' ][] = $this->title; | ||
| 17 | +?> | ||
| 18 | + | ||
| 19 | +<?php $panel = Panel::begin( | ||
| 20 | + [ | ||
| 21 | + 'header' => $this->title, | ||
| 22 | + 'options' => [ | ||
| 23 | + 'class' => 'x_panel feedback-index', | ||
| 24 | + ], | ||
| 25 | + ] | ||
| 26 | +) ?> | ||
| 27 | + | ||
| 28 | +<?= GridView::widget( | ||
| 29 | + [ | ||
| 30 | + 'dataProvider' => $dataProvider, | ||
| 31 | + 'rowOptions' => function (Feedback $model) { | ||
| 32 | + if ($model->status) { | ||
| 33 | + return []; | ||
| 34 | + } else { | ||
| 35 | + return [ | ||
| 36 | + 'class' => 'success', | ||
| 37 | + ]; | ||
| 38 | + } | ||
| 39 | + }, | ||
| 40 | + 'columns' => [ | ||
| 41 | + [ 'class' => 'yii\grid\SerialColumn' ], | ||
| 42 | + | ||
| 43 | + 'name', | ||
| 44 | + 'email', | ||
| 45 | + 'phone', | ||
| 46 | + [ | ||
| 47 | + 'attribute' => 'created_at', | ||
| 48 | + 'format' => [ | ||
| 49 | + 'datetime', | ||
| 50 | + 'php:d.m.Y H:i', | ||
| 51 | + ], | ||
| 52 | + ], | ||
| 53 | + [ | ||
| 54 | + 'class' => 'yii\grid\ActionColumn', | ||
| 55 | + 'buttons' => [ | ||
| 56 | + 'viewed' => function (string $url, Feedback $model) { | ||
| 57 | + if ($model->status) { | ||
| 58 | + return Html::tag( | ||
| 59 | + 'span', | ||
| 60 | + '', | ||
| 61 | + [ | ||
| 62 | + 'class' => 'glyphicon glyphicon-ok', | ||
| 63 | + ] | ||
| 64 | + ); | ||
| 65 | + } else { | ||
| 66 | + return Html::a( | ||
| 67 | + Html::tag( | ||
| 68 | + 'span', | ||
| 69 | + '', | ||
| 70 | + [ | ||
| 71 | + 'class' => 'glyphicon glyphicon-flag', | ||
| 72 | + ] | ||
| 73 | + ), | ||
| 74 | + $url, | ||
| 75 | + [ | ||
| 76 | + 'class' => 'viewed-toggle', | ||
| 77 | + ] | ||
| 78 | + ); | ||
| 79 | + } | ||
| 80 | + }, | ||
| 81 | + ], | ||
| 82 | + 'template' => '{viewed} {view} {update} {delete}', | ||
| 83 | + ], | ||
| 84 | + ], | ||
| 85 | + ] | ||
| 86 | +); ?> | ||
| 87 | + | ||
| 88 | +<?php $panel::end(); ?> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yiister\gentelella\widgets\Panel; | ||
| 4 | + | ||
| 5 | + /* @var $this yii\web\View */ | ||
| 6 | + /* @var $model artbox\core\models\Feedback */ | ||
| 7 | + | ||
| 8 | + $this->title = Yii::t( | ||
| 9 | + 'core', | ||
| 10 | + 'Update {modelClass}: ', | ||
| 11 | + [ | ||
| 12 | + 'modelClass' => 'Feedback', | ||
| 13 | + ] | ||
| 14 | + ) . $model->name; | ||
| 15 | + $this->params[ 'breadcrumbs' ][] = [ | ||
| 16 | + 'label' => Yii::t('core', 'Feedbacks'), | ||
| 17 | + 'url' => [ 'index' ], | ||
| 18 | + ]; | ||
| 19 | + $this->params[ 'breadcrumbs' ][] = [ | ||
| 20 | + 'label' => $model->name, | ||
| 21 | + 'url' => [ | ||
| 22 | + 'view', | ||
| 23 | + 'id' => $model->id, | ||
| 24 | + ], | ||
| 25 | + ]; | ||
| 26 | + $this->params[ 'breadcrumbs' ][] = Yii::t('core', 'Update'); | ||
| 27 | +?> | ||
| 28 | + | ||
| 29 | +<?php $panel = Panel::begin( | ||
| 30 | + [ | ||
| 31 | + 'header' => $this->title, | ||
| 32 | + 'options' => [ | ||
| 33 | + 'class' => 'x_panel feedback-update', | ||
| 34 | + ], | ||
| 35 | + ] | ||
| 36 | +) ?> | ||
| 37 | + | ||
| 38 | +<?= $this->render( | ||
| 39 | + '_form', | ||
| 40 | + [ | ||
| 41 | + 'model' => $model, | ||
| 42 | + ] | ||
| 43 | +) ?> | ||
| 44 | + | ||
| 45 | +<?php $panel::end(); ?> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + use yii\helpers\Html; | ||
| 4 | + use yii\widgets\DetailView; | ||
| 5 | + use yiister\gentelella\widgets\Panel; | ||
| 6 | + | ||
| 7 | + /* @var $this yii\web\View */ | ||
| 8 | + /* @var $model artbox\core\models\Feedback */ | ||
| 9 | + | ||
| 10 | + $this->title = $model->name; | ||
| 11 | + $this->params[ 'breadcrumbs' ][] = [ | ||
| 12 | + 'label' => Yii::t('core', 'Feedbacks'), | ||
| 13 | + 'url' => [ 'index' ], | ||
| 14 | + ]; | ||
| 15 | + $this->params[ 'breadcrumbs' ][] = $this->title; | ||
| 16 | +?> | ||
| 17 | + | ||
| 18 | +<?php $panel = Panel::begin( | ||
| 19 | + [ | ||
| 20 | + 'header' => $this->title, | ||
| 21 | + 'options' => [ | ||
| 22 | + 'class' => 'x_panel feedback-view', | ||
| 23 | + ], | ||
| 24 | + ] | ||
| 25 | +); ?> | ||
| 26 | + | ||
| 27 | +<p> | ||
| 28 | + <?= Html::a( | ||
| 29 | + Yii::t('core', 'Update'), | ||
| 30 | + [ | ||
| 31 | + 'update', | ||
| 32 | + 'id' => $model->id, | ||
| 33 | + ], | ||
| 34 | + [ 'class' => 'btn btn-primary' ] | ||
| 35 | + ) ?> | ||
| 36 | + <?= Html::a( | ||
| 37 | + Yii::t('core', 'Delete'), | ||
| 38 | + [ | ||
| 39 | + 'delete', | ||
| 40 | + 'id' => $model->id, | ||
| 41 | + ], | ||
| 42 | + [ | ||
| 43 | + 'class' => 'btn btn-danger', | ||
| 44 | + 'data' => [ | ||
| 45 | + 'confirm' => Yii::t('core', 'Are you sure you want to delete this item?'), | ||
| 46 | + 'method' => 'post', | ||
| 47 | + ], | ||
| 48 | + ] | ||
| 49 | + ) ?> | ||
| 50 | +</p> | ||
| 51 | + | ||
| 52 | +<?= DetailView::widget( | ||
| 53 | + [ | ||
| 54 | + 'model' => $model, | ||
| 55 | + 'attributes' => [ | ||
| 56 | + 'id', | ||
| 57 | + 'name', | ||
| 58 | + 'email:email', | ||
| 59 | + 'phone', | ||
| 60 | + 'message:ntext', | ||
| 61 | + 'subject', | ||
| 62 | + [ | ||
| 63 | + 'attribute' => 'created_at', | ||
| 64 | + 'format' => [ | ||
| 65 | + 'datetime', | ||
| 66 | + 'php:d.m.Y H:i', | ||
| 67 | + ], | ||
| 68 | + ], | ||
| 69 | + 'ip', | ||
| 70 | + 'url:url', | ||
| 71 | + 'status:boolean', | ||
| 72 | + ], | ||
| 73 | + ] | ||
| 74 | +) ?> | ||
| 75 | + | ||
| 76 | +<?php $panel::end(); ?> |
common/messages/ru/app.php
| 1 | +<?php | ||
| 2 | + | ||
| 3 | + namespace common\models; | ||
| 4 | + | ||
| 5 | + use artbox\core\models\Feedback as FeedbackCore; | ||
| 6 | + /** | ||
| 7 | + * Created by PhpStorm. | ||
| 8 | + * User: timur | ||
| 9 | + * Date: 29.11.17 | ||
| 10 | + * Time: 14:48 | ||
| 11 | + * | ||
| 12 | + * @property $subject | ||
| 13 | + */ | ||
| 14 | + class Feedback extends FeedbackCore | ||
| 15 | + { | ||
| 16 | + | ||
| 17 | + public function scenarios() | ||
| 18 | + { | ||
| 19 | + $scenarios = parent::scenarios(); | ||
| 20 | + $scenarios = array_merge( | ||
| 21 | + $scenarios, | ||
| 22 | + [ | ||
| 23 | + self::SCENARIO_FEEDBACK => [ | ||
| 24 | + 'name', | ||
| 25 | + 'email', | ||
| 26 | + 'message', | ||
| 27 | + 'returnUrl', | ||
| 28 | + 'subject' | ||
| 29 | + ], | ||
| 30 | + self::SCENARIO_CALLBACK => [ | ||
| 31 | + 'name', | ||
| 32 | + 'phone', | ||
| 33 | + 'message', | ||
| 34 | + 'returnUrl', | ||
| 35 | + 'subject' | ||
| 36 | + ], | ||
| 37 | + ] | ||
| 38 | + ); | ||
| 39 | + return $scenarios; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public function rules() | ||
| 43 | + { | ||
| 44 | + return [ | ||
| 45 | + [ | ||
| 46 | + [ | ||
| 47 | + 'name', | ||
| 48 | + 'email', | ||
| 49 | + 'phone', | ||
| 50 | + ], | ||
| 51 | + 'required', | ||
| 52 | + 'on' => self::SCENARIO_DEFAULT, | ||
| 53 | + ], | ||
| 54 | + [ | ||
| 55 | + [ | ||
| 56 | + 'name', | ||
| 57 | + 'email', | ||
| 58 | + ], | ||
| 59 | + 'required', | ||
| 60 | + 'on' => self::SCENARIO_FEEDBACK, | ||
| 61 | + ], | ||
| 62 | + [ | ||
| 63 | + [ | ||
| 64 | + 'phone', | ||
| 65 | + 'name', | ||
| 66 | + ], | ||
| 67 | + 'required', | ||
| 68 | + 'on' => self::SCENARIO_CALLBACK, | ||
| 69 | + ], | ||
| 70 | + [ | ||
| 71 | + [ 'email' ], | ||
| 72 | + 'email', | ||
| 73 | + ], | ||
| 74 | + // [ | ||
| 75 | + // [ 'phone' ], | ||
| 76 | + // 'match', | ||
| 77 | + // 'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/', | ||
| 78 | + // ], | ||
| 79 | + [ | ||
| 80 | + [ | ||
| 81 | + 'name', | ||
| 82 | + 'phone', | ||
| 83 | + 'email', | ||
| 84 | + 'subject', | ||
| 85 | + ], | ||
| 86 | + 'string', | ||
| 87 | + 'max' => 255, | ||
| 88 | + ], | ||
| 89 | + [ | ||
| 90 | + [ | ||
| 91 | + 'message', | ||
| 92 | + ], | ||
| 93 | + 'string', | ||
| 94 | + ], | ||
| 95 | + [ | ||
| 96 | + [ | ||
| 97 | + 'status', | ||
| 98 | + ], | ||
| 99 | + 'boolean', | ||
| 100 | + ], | ||
| 101 | + [ | ||
| 102 | + 'returnUrl', | ||
| 103 | + 'safe', | ||
| 104 | + ], | ||
| 105 | + ]; | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + public function attributeLabels() | ||
| 109 | + { | ||
| 110 | + return array_merge( | ||
| 111 | + parent::attributeLabels(), | ||
| 112 | + [ | ||
| 113 | + 'subject' => \Yii::t('app', 'subject'), | ||
| 114 | + ] | ||
| 115 | + ); | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + } | ||
| 0 | \ No newline at end of file | 119 | \ No newline at end of file |
console/migrations/m171129_124331_add_subject_column_to_feedback_table.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\db\Migration; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * Handles adding subject to table `feedback`. | ||
| 7 | + */ | ||
| 8 | +class m171129_124331_add_subject_column_to_feedback_table extends Migration | ||
| 9 | +{ | ||
| 10 | + /** | ||
| 11 | + * @inheritdoc | ||
| 12 | + */ | ||
| 13 | + public function up() | ||
| 14 | + { | ||
| 15 | + $this->addColumn('feedback', 'subject', $this->string(255)); | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * @inheritdoc | ||
| 20 | + */ | ||
| 21 | + public function down() | ||
| 22 | + { | ||
| 23 | + $this->dropColumn('feedback', 'subject'); | ||
| 24 | + } | ||
| 25 | +} |
frontend/controllers/SiteController.php
| 1 | <?php | 1 | <?php |
| 2 | namespace frontend\controllers; | 2 | namespace frontend\controllers; |
| 3 | 3 | ||
| 4 | - use artbox\core\models\Feedback; | 4 | + use common\models\Feedback; |
| 5 | use common\models\Settings; | 5 | use common\models\Settings; |
| 6 | use Yii; | 6 | use Yii; |
| 7 | use yii\web\BadRequestHttpException; | 7 | use yii\web\BadRequestHttpException; |
| @@ -108,23 +108,26 @@ | @@ -108,23 +108,26 @@ | ||
| 108 | if ($model->load(Yii::$app->request->post()) && $model->save()) { | 108 | if ($model->load(Yii::$app->request->post()) && $model->save()) { |
| 109 | 109 | ||
| 110 | $mailer = \Yii::$app->mailer->compose( | 110 | $mailer = \Yii::$app->mailer->compose( |
| 111 | - 'feedback', | ||
| 112 | - [ | ||
| 113 | - 'model' => $model, | ||
| 114 | - ] | ||
| 115 | - ) | ||
| 116 | - ->setFrom('tamerlan8.05.92@gmail.com') | 111 | + 'feedback', |
| 112 | + [ | ||
| 113 | + 'model' => $model, | ||
| 114 | + ] | ||
| 115 | + ) | ||
| 116 | + ->setFrom('clud.net.mails@gmail.com') | ||
| 117 | ->setTo( | 117 | ->setTo( |
| 118 | [ | 118 | [ |
| 119 | - 'tamerlan8.05.92@gmail.com', | ||
| 120 | - 'kazimirova.artweb@gmail.com', | ||
| 121 | - | 119 | + //'tamerlan8.05.92@gmail.com', |
| 120 | + 'sales@cloud.net.ua', | ||
| 121 | + 'info@erp.oblako.cloudbank.biz', | ||
| 122 | + //'kazimirova.artweb@gmail.com', | ||
| 123 | + | ||
| 122 | ] | 124 | ] |
| 123 | - ); | 125 | + ) |
| 126 | + ->setSubject($model->subject); | ||
| 124 | if($mailer->send()){ | 127 | if($mailer->send()){ |
| 125 | - | 128 | + |
| 126 | \Yii::$app->response->setStatusCode(200); | 129 | \Yii::$app->response->setStatusCode(200); |
| 127 | - | 130 | + |
| 128 | return [ | 131 | return [ |
| 129 | 'success' => true, | 132 | 'success' => true, |
| 130 | 'message' => 'Success message', | 133 | 'message' => 'Success message', |
| @@ -137,9 +140,9 @@ | @@ -137,9 +140,9 @@ | ||
| 137 | ]; | 140 | ]; |
| 138 | } | 141 | } |
| 139 | else{ | 142 | else{ |
| 140 | - | 143 | + |
| 141 | \Yii::$app->response->setStatusCode(500); | 144 | \Yii::$app->response->setStatusCode(500); |
| 142 | - | 145 | + |
| 143 | return [ | 146 | return [ |
| 144 | 'success' => false, | 147 | 'success' => false, |
| 145 | 'error' => 'mail didn\'t send', | 148 | 'error' => 'mail didn\'t send', |
frontend/views/layouts/main.php
| @@ -348,6 +348,14 @@ _________________________________________________________ --> | @@ -348,6 +348,14 @@ _________________________________________________________ --> | ||
| 348 | ] | 348 | ] |
| 349 | ); ?> | 349 | ); ?> |
| 350 | 350 | ||
| 351 | + <?= \yii\helpers\Html::hiddenInput( | ||
| 352 | + 'Feedback[subject]', | ||
| 353 | + 'default Val', | ||
| 354 | + [ | ||
| 355 | + 'class' => 't_subject' | ||
| 356 | + ] | ||
| 357 | + )?> | ||
| 358 | + | ||
| 351 | <?= $form->field($feedback, 'name') | 359 | <?= $form->field($feedback, 'name') |
| 352 | ->textInput(); ?> | 360 | ->textInput(); ?> |
| 353 | 361 |
frontend/web/js/script.js
| @@ -117,6 +117,7 @@ $( | @@ -117,6 +117,7 @@ $( | ||
| 117 | e.preventDefault(); | 117 | e.preventDefault(); |
| 118 | var text_title = $(this).data('modalname'); | 118 | var text_title = $(this).data('modalname'); |
| 119 | $(".modal-header .modal-title").html(text_title); | 119 | $(".modal-header .modal-title").html(text_title); |
| 120 | + $(".t_subject").val(text_title); | ||
| 120 | } | 121 | } |
| 121 | ); | 122 | ); |
| 122 | $('.but-first') | 123 | $('.but-first') |
| @@ -140,6 +141,7 @@ $( | @@ -140,6 +141,7 @@ $( | ||
| 140 | .on('click', function(){ | 141 | .on('click', function(){ |
| 141 | var modaltitle = $(this).data('modalname'); | 142 | var modaltitle = $(this).data('modalname'); |
| 142 | $(".modal-title").html(modaltitle); | 143 | $(".modal-title").html(modaltitle); |
| 144 | + $(".t_subject").val(modaltitle); | ||
| 143 | }); | 145 | }); |
| 144 | } | 146 | } |
| 145 | ); | 147 | ); |
| 146 | \ No newline at end of file | 148 | \ No newline at end of file |