Commit e47109b0d13e3d8c5774dbf67607cb2af569214c
1 parent
ad2187ad
- support
Showing
8 changed files
with
267 additions
and
26 deletions
Show diff stats
1 | +<?php | |
2 | + | |
3 | + namespace common\models; | |
4 | + | |
5 | + use Yii; | |
6 | + | |
7 | + /** | |
8 | + * This is the model class for table "support". | |
9 | + * | |
10 | + * @property int $id | |
11 | + * @property int $book_id | |
12 | + * @property string $email | |
13 | + * @property int $sum | |
14 | + * @property int $status | |
15 | + * @property Book $book | |
16 | + */ | |
17 | + class Support extends \yii\db\ActiveRecord | |
18 | + { | |
19 | + /** | |
20 | + * {@inheritdoc} | |
21 | + */ | |
22 | + public static function tableName() | |
23 | + { | |
24 | + return 'support'; | |
25 | + } | |
26 | + | |
27 | + /** | |
28 | + * {@inheritdoc} | |
29 | + */ | |
30 | + public function rules() | |
31 | + { | |
32 | + return [ | |
33 | + [ | |
34 | + [ | |
35 | + 'book_id', | |
36 | + 'sum', | |
37 | + 'status', | |
38 | + ], | |
39 | + 'default', | |
40 | + 'value' => null, | |
41 | + ], | |
42 | + [ | |
43 | + [ | |
44 | + 'book_id', | |
45 | + 'sum', | |
46 | + 'status', | |
47 | + ], | |
48 | + 'integer', | |
49 | + ], | |
50 | + ['email', 'email'], | |
51 | + [ | |
52 | + [ 'email', 'name' ], | |
53 | + 'string', | |
54 | + 'max' => 255, | |
55 | + ], | |
56 | + [ | |
57 | + [ 'book_id' ], | |
58 | + 'exist', | |
59 | + 'skipOnError' => true, | |
60 | + 'targetClass' => Book::className(), | |
61 | + 'targetAttribute' => [ 'book_id' => 'id' ], | |
62 | + ], | |
63 | + [ | |
64 | + ['email', 'sum'], 'required' | |
65 | + ] | |
66 | + ]; | |
67 | + } | |
68 | + | |
69 | + /** | |
70 | + * {@inheritdoc} | |
71 | + */ | |
72 | + public function attributeLabels() | |
73 | + { | |
74 | + return [ | |
75 | + 'id' => Yii::t('app', 'ID'), | |
76 | + 'book_id' => Yii::t('app', 'Book ID'), | |
77 | + 'email' => Yii::t('app', 'Email'), | |
78 | + 'sum' => Yii::t('app', 'Sum'), | |
79 | + 'status' => Yii::t('app', 'Status'), | |
80 | + ]; | |
81 | + } | |
82 | + | |
83 | + /** | |
84 | + * @return \yii\db\ActiveQuery | |
85 | + */ | |
86 | + public function getBook() | |
87 | + { | |
88 | + return $this->hasOne(Book::className(), [ 'id' => 'book_id' ]); | |
89 | + } | |
90 | + } | ... | ... |
console/migrations/m180614_103157_create_support_table.php
0 → 100644
1 | +<?php | |
2 | + | |
3 | +use yii\db\Migration; | |
4 | + | |
5 | +/** | |
6 | + * Handles the creation of table `support`. | |
7 | + */ | |
8 | +class m180614_103157_create_support_table extends Migration | |
9 | +{ | |
10 | + /** | |
11 | + * {@inheritdoc} | |
12 | + */ | |
13 | + public function safeUp() | |
14 | + { | |
15 | + $this->createTable('support', [ | |
16 | + 'id' => $this->primaryKey(), | |
17 | + 'book_id' => $this->integer(), | |
18 | + 'name' => $this->string(), | |
19 | + 'email' => $this->string(), | |
20 | + 'sum' => $this->integer(), | |
21 | + 'status' => $this->integer() | |
22 | + ]); | |
23 | + | |
24 | + $this->addForeignKey('support_book_fk', | |
25 | + 'support', | |
26 | + 'book_id', | |
27 | + 'book', | |
28 | + 'id', | |
29 | + 'CASCADE', | |
30 | + 'CASCADE'); | |
31 | + } | |
32 | + | |
33 | + /** | |
34 | + * {@inheritdoc} | |
35 | + */ | |
36 | + public function safeDown() | |
37 | + { | |
38 | + $this->dropForeignKey('support_book_fk', 'support'); | |
39 | + $this->dropTable('support'); | |
40 | + } | |
41 | +} | ... | ... |
1 | +<?php | |
2 | + /** | |
3 | + * Created by PhpStorm. | |
4 | + * User: stes | |
5 | + * Date: 14.06.18 | |
6 | + * Time: 13:40 | |
7 | + */ | |
8 | + | |
9 | + namespace frontend\controllers; | |
10 | + | |
11 | + use common\models\Book; | |
12 | + use common\models\Support; | |
13 | + use yii\web\Controller; | |
14 | + | |
15 | + class SupportController extends Controller | |
16 | + { | |
17 | + public function actionIndex($book_id = null){ | |
18 | + $model = new Support([ | |
19 | + 'book_id' => $book_id, | |
20 | + 'status' => 0 | |
21 | + ]); | |
22 | + $book = Book::find()->with('author')->where(['id' => $book_id])->one(); | |
23 | + if ($model->load(\Yii::$app->request->post()) and $model->save()){ | |
24 | + \Yii::$app->session->setFlash('success', 'Дякуємо за ваш запит. Найближчим часом, наш менеджер зв\'яжеться з Вами для уточнення деталей'); | |
25 | + return $this->redirect(['site/index']); | |
26 | + } | |
27 | + return $this->render('index', [ | |
28 | + 'model' => $model, | |
29 | + 'book' => $book | |
30 | + ]); | |
31 | + } | |
32 | + } | |
0 | 33 | \ No newline at end of file | ... | ... |
frontend/views/book/_book.php
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | </div> |
20 | 20 | <?php if ($model->price == null){?> |
21 | 21 | <div class="style books-btn books-btn-new"> |
22 | - <a href="#" class="btn_">Підтримати</a> | |
22 | + <a href="<?=Url::to(['support/index', 'book_id' => $model->id])?>" class="btn_">Підтримати</a> | |
23 | 23 | </div> |
24 | 24 | <?php } else{?> |
25 | 25 | <div class="style price-books-catalog"><div>вартість <b><?=$model->price?></b> грн.</div></div> | ... | ... |
frontend/views/book/view.php
... | ... | @@ -67,7 +67,7 @@ |
67 | 67 | <p><b>460</b> <span class="supporters">підтримувачів</span></p> |
68 | 68 | </div> |
69 | 69 | <div class="style books-btn books-btn-new"> |
70 | - <a href="#" class="btn_">Підтримати</a> | |
70 | + <a href="<?=Url::to(['support/index', 'book_id' => $model->id])?>" class="btn_">Підтримати</a> | |
71 | 71 | </div> |
72 | 72 | </div> |
73 | 73 | <?php } else {?> |
... | ... | @@ -83,9 +83,9 @@ |
83 | 83 | <p>поділитися в соціальних мережах</p> |
84 | 84 | <!--вставлять ссылку на эту страницу сюда {link-this-page}--> |
85 | 85 | <ul> |
86 | - <li class="card-s1"><a target="_blank" rel="nofollow" href="http://www.facebook.com/sharer/sharer.php?u=http://{link-this-page}"></a></li> | |
87 | - <li class="card-s2"><a target="_blank" rel="nofollow" href="https://twitter.com/intent/tweet?text=Hello%20world&url=http://{link-this-page}"></a></li> | |
88 | - <li class="card-s3"><a target="_blank" rel="nofollow" href="https://plus.google.com/share?url=http://{link-this-page}"></a></li> | |
86 | + <li class="card-s1"><a target="_blank" rel="nofollow" href="http://www.facebook.com/sharer/sharer.php?u=<?=\Yii::$app->request->absoluteUrl?>"></a></li> | |
87 | + <li class="card-s2"><a target="_blank" rel="nofollow" href="https://twitter.com/intent/tweet?text=Hello%20world&url=<?=\Yii::$app->request->absoluteUrl?>"></a></li> | |
88 | + <li class="card-s3"><a target="_blank" rel="nofollow" href="https://plus.google.com/share?url=<?=\Yii::$app->request->absoluteUrl?>"></a></li> | |
89 | 89 | </ul> |
90 | 90 | </div> |
91 | 91 | </div> | ... | ... |
frontend/views/layouts/main.php
... | ... | @@ -47,6 +47,14 @@ |
47 | 47 | ] |
48 | 48 | ); |
49 | 49 | $module = \Yii::$app->getModule('feedback'); |
50 | + | |
51 | + if (\Yii::$app->session->hasFlash('success')) { | |
52 | + $message = \Yii::$app->session->getFlash('success'); | |
53 | + $js = <<<JS | |
54 | + success("$message"); | |
55 | +JS; | |
56 | + $this->registerJs($js, View::POS_READY); | |
57 | + } | |
50 | 58 | ?> |
51 | 59 | |
52 | 60 | <?php $this->beginPage() ?> | ... | ... |
1 | +<?php | |
2 | + /** | |
3 | + * @var \common\models\Book $book | |
4 | + * @var \common\models\Support $model | |
5 | + */ | |
6 | + use yii\helpers\Html; | |
7 | + use yii\widgets\ActiveForm; | |
8 | + | |
9 | +?> | |
10 | +<section class="section-books-support"> | |
11 | + <div class="container"> | |
12 | + <div class="row"> | |
13 | + <div class="col-xs-12"> | |
14 | + <div class="title-blocks title-support">Підтримати</div> | |
15 | + </div> | |
16 | + </div> | |
17 | + <div class="row"> | |
18 | + <div class="hidden-xs col-sm-4"></div> | |
19 | + <div class="col-xs-12 col-sm-4 support-form-col"> | |
20 | + <div class="style support-form-wr"> | |
21 | + <?php $form = ActiveForm::begin()?> | |
22 | + <div class="style title-support-form"><?=$book->title?></div> | |
23 | + <div class="style autor-support-form"> Автор: <?=$book->author->name?> <?=$book->author->secondname?></div> | |
24 | + <div class="input-wr"> | |
25 | + <?=$form->field($model, 'name')->label('Ім\'я')?> | |
26 | + </div> | |
27 | + <div class="input-wr"> | |
28 | + <?=$form->field($model, 'email')->label('Пошта')?> | |
29 | + </div> | |
30 | + | |
31 | + <div class="input-wr price-input-wr"> | |
32 | + <div class="price-input"> | |
33 | + <?=$form->field($model, 'sum')->label('Cума в гривнях')?> | |
34 | + </div> | |
35 | + </div> | |
36 | + <?=$form->field($model, 'book_id')->hiddenInput()->label(false);?> | |
37 | + <?=$form->field($model, 'status')->hiddenInput()->label(false);?> | |
38 | + <div class="button-wr"> | |
39 | + <?=Html::submitButton('Продовжити')?> | |
40 | + </div> | |
41 | + <?php ActiveForm::end()?> | |
42 | + </div> | |
43 | + </div> | |
44 | + </div> | |
45 | + </div> | |
46 | +</section> | ... | ... |
frontend/web/js/script.js
... | ... | @@ -97,12 +97,12 @@ $(document).ready(function() { |
97 | 97 | block.addClass('vis_'); |
98 | 98 | $('body, html').animate({scrollTop:block.offset().top - 36},500) |
99 | 99 | |
100 | - }) | |
101 | - $('body').on('click','.hidden-comments-form-card button', function () { | |
102 | - $('.hidden-comments-form-card').removeClass('vis_'); | |
103 | - | |
104 | - alert('thiiiis') | |
105 | - }) | |
100 | + }); | |
101 | +// $('body').on('click','.hidden-comments-form-card button', function () { | |
102 | +// $('.hidden-comments-form-card').removeClass('vis_'); | |
103 | +// | |
104 | +// alert('thiiiis') | |
105 | +// }) | |
106 | 106 | |
107 | 107 | } |
108 | 108 | |
... | ... | @@ -252,23 +252,47 @@ $(document).ready(function() { |
252 | 252 | } |
253 | 253 | //после удачной отправки формы запускать success() |
254 | 254 | // success() |
255 | - function success() { | |
256 | - var pos = ($(window).scrollTop()) + 30; | |
257 | - $('.forms_').animate({opacity: 0, top: '0'}, 200,function(){ | |
258 | - $(this).css('display', 'none'); | |
255 | +// function success(message) { | |
256 | +// var pos = ($(window).scrollTop()) + 30; | |
257 | +// $('.forms_').animate({opacity: 0, top: '0'}, 200,function(){ | |
258 | +// $(this).css('display', 'none'); | |
259 | +// }); | |
260 | +// setTimeout(function () { | |
261 | +// $('#overlay').fadeIn(400); | |
262 | +// $('#success_form').find('.txt-success').html(message); | |
263 | +// $('#success_form').css('display', 'block').animate({opacity: 1, top: pos}, 700); | |
264 | +// },400) | |
265 | +// } | |
266 | + | |
267 | + | |
268 | + | |
269 | +}); | |
270 | +function success(message) { | |
271 | + document.querySelector('#success_form .txt-success').innerHTML = message; | |
272 | + var pos = ($(window) | |
273 | + .scrollTop()) + 30 + 60; | |
274 | + $('.forms_') | |
275 | + .animate({ | |
276 | + opacity: 0, | |
277 | + top: '0' | |
278 | + }, 200, function() { | |
279 | + $(this) | |
280 | + .css('display', 'none'); | |
259 | 281 | }); |
260 | - setTimeout(function () { | |
261 | - $('#overlay').fadeIn(400); | |
262 | - $('#success_form').css('display', 'block').animate({opacity: 1, top: pos}, 700); | |
263 | - },400) | |
264 | - } | |
265 | - | |
266 | - | |
267 | - | |
268 | - | |
269 | - | |
270 | -}) | |
282 | + setTimeout(function() { | |
283 | + $('#overlay') | |
284 | + .fadeIn(400, function() { | |
285 | + $('#success_form') | |
286 | + .css('display', 'block') | |
287 | + .animate({ | |
288 | + opacity: 1, | |
289 | + top: pos | |
290 | + }, 700); | |
291 | + }); | |
292 | + }, 400) | |
293 | +} | |
271 | 294 | |
295 | +window.success = success; | |
272 | 296 | |
273 | 297 | |
274 | 298 | ... | ... |