Commit dec66dbe9a1f2ea10b3e7f4866765b497ef1cd15

Authored by Timur Kastemirov
1 parent dc2e8308

feedback subject

backend/config/main.php
... ... @@ -21,7 +21,6 @@
21 21 'page' => 'artbox\core\controllers\PageController',
22 22 'alias' => 'artbox\core\controllers\AliasController',
23 23 'seo' => 'artbox\core\controllers\SeoController',
24   - 'feedback' => 'artbox\core\controllers\FeedbackController',
25 24 ],
26 25 'components' => [
27 26 'assetManager' => [
... ...
backend/controllers/FeedbackController.php 0 → 100644
  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 19 \ No newline at end of file
... ...
backend/views/feedback/_form.php 0 → 100755
  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>
... ...
backend/views/feedback/create.php 0 → 100755
  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>
... ...
backend/views/feedback/index.php 0 → 100755
  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(); ?>
... ...
backend/views/feedback/update.php 0 → 100755
  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(); ?>
... ...
backend/views/feedback/view.php 0 → 100755
  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
... ... @@ -4,4 +4,5 @@
4 4 'About us' => 'О нас',
5 5 'Home' => 'Главная',
6 6 'Close' => 'Закрыть',
  7 + 'subject' => 'Тема письма',
7 8 ];
8 9 \ No newline at end of file
... ...
common/models/Feedback.php 0 → 100644
  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 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 1 <?php
2 2 namespace frontend\controllers;
3 3  
4   - use artbox\core\models\Feedback;
  4 + use common\models\Feedback;
5 5 use common\models\Settings;
6 6 use Yii;
7 7 use yii\web\BadRequestHttpException;
... ... @@ -108,23 +108,26 @@
108 108 if ($model->load(Yii::$app->request->post()) && $model->save()) {
109 109  
110 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 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 127 if($mailer->send()){
125   -
  128 +
126 129 \Yii::$app->response->setStatusCode(200);
127   -
  130 +
128 131 return [
129 132 'success' => true,
130 133 'message' => 'Success message',
... ... @@ -137,9 +140,9 @@
137 140 ];
138 141 }
139 142 else{
140   -
  143 +
141 144 \Yii::$app->response->setStatusCode(500);
142   -
  145 +
143 146 return [
144 147 'success' => false,
145 148 'error' => 'mail didn\'t send',
... ...
frontend/views/layouts/main.php
... ... @@ -348,6 +348,14 @@ _________________________________________________________ --&gt;
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 359 <?= $form->field($feedback, 'name')
352 360 ->textInput(); ?>
353 361  
... ...
frontend/web/js/script.js
... ... @@ -117,6 +117,7 @@ $(
117 117 e.preventDefault();
118 118 var text_title = $(this).data('modalname');
119 119 $(".modal-header .modal-title").html(text_title);
  120 + $(".t_subject").val(text_title);
120 121 }
121 122 );
122 123 $('.but-first')
... ... @@ -140,6 +141,7 @@ $(
140 141 .on('click', function(){
141 142 var modaltitle = $(this).data('modalname');
142 143 $(".modal-title").html(modaltitle);
  144 + $(".t_subject").val(modaltitle);
143 145 });
144 146 }
145 147 );
146 148 \ No newline at end of file
... ...