Commit 95f0b72679ea72cc512f7fce7add1b6fb0f0938b
1 parent
82d2fae2
- comment answer form
Showing
6 changed files
with
159 additions
and
69 deletions
Show diff stats
common/models/Book.php
... | ... | @@ -165,7 +165,7 @@ |
165 | 165 | } |
166 | 166 | |
167 | 167 | public function getActiveComments(){ |
168 | - return $this->hasMany(Comment::className(), ['book_id' => 'id'])->where(['status' => true])->orderBy('created_at'); | |
168 | + return $this->hasMany(Comment::className(), ['book_id' => 'id'])->with('activeComments')->where(['status' => true, 'parent_id' => null])->orderBy('created_at'); | |
169 | 169 | } |
170 | 170 | |
171 | 171 | } | ... | ... |
common/models/Comment.php
frontend/config/main.php
... | ... | @@ -139,6 +139,118 @@ |
139 | 139 | }', |
140 | 140 | |
141 | 141 | ], |
142 | + 'comments' => [ | |
143 | + 'class' => 'artbox\core\forms\Module', | |
144 | + 'activeRecord' => "common\models\Comment", | |
145 | + 'attributes' => [ | |
146 | + 'name', | |
147 | + 'email', | |
148 | + 'comment', | |
149 | + 'book_id', | |
150 | + 'parent_id' | |
151 | + ], | |
152 | + 'templateForm' => '<div class="style title-add-comments-form">Додати коментар</div>{form}', | |
153 | + 'rules' => [ | |
154 | + [ | |
155 | + [ | |
156 | + 'name', | |
157 | + 'email', | |
158 | + ], | |
159 | + 'required', | |
160 | + ] | |
161 | + ], | |
162 | + 'labels' => [ | |
163 | + 'name' => 'Ім\'я', | |
164 | + 'email' => 'Пошта', | |
165 | + 'comment' => 'коментар', | |
166 | + 'book_id' => false, | |
167 | + 'parent_id' => false | |
168 | + ], | |
169 | + | |
170 | + 'inputOptions' => [ | |
171 | + 'name' => [ | |
172 | + 'template' => '<div class="input-wr required">{input}</div>' | |
173 | + ], | |
174 | + 'email' => [ | |
175 | + 'template' => '<div class="input-wr required">{input}</div>' | |
176 | + ], | |
177 | + 'comment' => [ | |
178 | + 'type' => 'textarea', | |
179 | + 'options' => [], | |
180 | + 'template' => '<div class="input-wr">{input}</div>' | |
181 | + ], | |
182 | + ], | |
183 | + 'buttonTemplate' => '<div class="button-wr">{button}</div>', | |
184 | + 'buttonOptions' => [], | |
185 | + 'buttonContent' => 'Додати', | |
186 | + 'sendEmail' => false, | |
187 | + 'ajax' => true, | |
188 | + 'formId' => 'comment-form', | |
189 | + 'scenario' => 'default', | |
190 | + 'successCallback' => 'function (data) { | |
191 | + document.getElementById("comment-form").reset(); | |
192 | + $("#comment-form").parent().html("<p>Ваш коментар з\'явиться після перевірки модератором</p>") | |
193 | + $("#comment-form").remove(); | |
194 | + | |
195 | + }', | |
196 | + | |
197 | + ], | |
198 | + 'commentsChild' => [ | |
199 | + 'class' => 'artbox\core\forms\Module', | |
200 | + 'activeRecord' => "common\models\Comment", | |
201 | + 'attributes' => [ | |
202 | + 'name', | |
203 | + 'email', | |
204 | + 'comment', | |
205 | + 'book_id', | |
206 | + 'parent_id' | |
207 | + ], | |
208 | + 'templateForm' => '<div class="style title-add-comments-form">Відповісти</div>{form}', | |
209 | + 'rules' => [ | |
210 | + [ | |
211 | + [ | |
212 | + 'name', | |
213 | + 'email', | |
214 | + ], | |
215 | + 'required', | |
216 | + ] | |
217 | + ], | |
218 | + 'labels' => [ | |
219 | + 'name' => 'Ім\'я', | |
220 | + 'email' => 'Пошта', | |
221 | + 'comment' => 'коментар', | |
222 | + 'book_id' => false, | |
223 | + 'parent_id' => false | |
224 | + ], | |
225 | + | |
226 | + 'inputOptions' => [ | |
227 | + 'name' => [ | |
228 | + 'template' => '<div class="input-wr required">{input}</div>' | |
229 | + ], | |
230 | + 'email' => [ | |
231 | + 'template' => '<div class="input-wr required">{input}</div>' | |
232 | + ], | |
233 | + 'comment' => [ | |
234 | + 'type' => 'textarea', | |
235 | + 'options' => [], | |
236 | + 'template' => '<div class="input-wr">{input}</div>' | |
237 | + ], | |
238 | + ], | |
239 | + 'buttonTemplate' => '<div class="button-wr">{button}</div>', | |
240 | + 'buttonOptions' => [], | |
241 | + 'buttonContent' => 'Додати', | |
242 | + 'sendEmail' => false, | |
243 | + 'ajax' => true, | |
244 | + 'formId' => 'answer-form', | |
245 | + 'scenario' => 'default', | |
246 | + 'successCallback' => 'function (data) { | |
247 | + document.getElementById("answer-form").reset(); | |
248 | + $("#answer-form").parent().html("<p>Ваш коментар з\'явиться після перевірки модератором</p>") | |
249 | + $("#answer-form").remove(); | |
250 | + | |
251 | + }', | |
252 | + | |
253 | + ], | |
142 | 254 | ], |
143 | 255 | 'components' => [ |
144 | 256 | 'user' => [ | ... | ... |
frontend/controllers/BookController.php
... | ... | @@ -99,7 +99,7 @@ |
99 | 99 | } |
100 | 100 | |
101 | 101 | public function actionView($id){ |
102 | - $model = Book::find()->with('author') ->where(['id' => $id])->one(); | |
102 | + $model = Book::find()->with(['author', 'activeComments']) ->where(['id' => $id])->one(); | |
103 | 103 | return $this->render('view', ['model' => $model]); |
104 | 104 | } |
105 | 105 | } |
106 | 106 | \ No newline at end of file | ... | ... |
frontend/views/book/view.php
... | ... | @@ -12,6 +12,30 @@ |
12 | 12 | ]; |
13 | 13 | |
14 | 14 | $this->params['breadcrumbs'][] = $model->title; |
15 | + | |
16 | + /** | |
17 | + * @var \artbox\core\forms\Module $module | |
18 | + * @var \artbox\core\forms\Module $moduleAnswer | |
19 | + */ | |
20 | + $module = \Yii::$app->getModule('comments'); | |
21 | + $module->inputOptions += ['book_id' => [ | |
22 | + 'type' => 'hiddenInput', | |
23 | + 'options' => ['value' => $model->id], | |
24 | + ]]; | |
25 | + $module->inputOptions += ['parent_id' => [ | |
26 | + 'type' => 'hiddenInput', | |
27 | + 'options' => ['value' => ''], | |
28 | + ]]; | |
29 | + | |
30 | + $moduleAnswer = \Yii::$app->getModule('commentsChild'); | |
31 | + $moduleAnswer->inputOptions += ['book_id' => [ | |
32 | + 'type' => 'hiddenInput', | |
33 | + 'options' => ['value' => $model->id], | |
34 | + ]]; | |
35 | + $moduleAnswer->inputOptions += ['parent_id' => [ | |
36 | + 'type' => 'hiddenInput', | |
37 | + 'options' => ['value' => ''], | |
38 | + ]]; | |
15 | 39 | ?> |
16 | 40 | |
17 | 41 | <section class="section-card"> |
... | ... | @@ -99,92 +123,40 @@ |
99 | 123 | </div> |
100 | 124 | </div> |
101 | 125 | <div class="row"> |
126 | + | |
102 | 127 | <div class="col-xs-12 col-sm-6 col-md-6 comments-card-col"> |
128 | + <?php if (!empty($model->activeComments)){?> | |
103 | 129 | <div class="hidden-comments-form-card style" style="display: none;"> |
104 | 130 | <div class="style card-form-add-wrapp"> |
105 | - <form action="#"> | |
106 | - <div class="style title-add-comments-form">Відповісти</div> | |
107 | - <div class="input-wr"> | |
108 | - <label for="q1">Ім'я</label> | |
109 | - <input id="q1" type="text"> | |
110 | - </div> | |
111 | - <div class="input-wr"> | |
112 | - <label for="q2">Пошта</label> | |
113 | - <input id="q2" type="text"> | |
114 | - </div> | |
115 | - <div class="input-wr"> | |
116 | - <label for="q3">Коментар</label> | |
117 | - <textarea name="" id="q3" cols="30" rows="10"></textarea> | |
118 | - </div> | |
119 | - <div class="button-wr"> | |
120 | - <button type="submit">відповісти</button> | |
121 | - </div> | |
122 | - </form> | |
131 | + <?php $moduleAnswer->renderForm($this)?> | |
123 | 132 | </div> |
124 | 133 | </div> |
125 | 134 | <div class="style"> |
135 | + <?php foreach ($model->activeComments as $comment){?> | |
126 | 136 | <div class="comments-card-wr style"> |
127 | - <div class="style comments-card-autor">Ольга Ващенко</div> | |
128 | - <div class="style comments-card-text">Скоріше відкривайте, чекатиму з нетерпінням! Неймовірне вам спасибі за видання цього автора українською!</div> | |
129 | - <div class="style answers-wr"> | |
130 | - <span>відповісти</span> | |
131 | - </div> | |
132 | - </div> | |
133 | - | |
134 | - <div class="comments-card-wr style"> | |
135 | - <div class="style comments-card-autor">Олександр Кармаш</div> | |
136 | - <div class="style comments-card-text">Скоріше відкривайте, чекатиму з нетерпінням! Неймовірне вам спасибі за видання цього автора українською!Це вже остаточний варіант обкладинки? Бо це мені вперше не сподобалась обкладинка книжки вашого видавництва...(як на мене фраза про розчинний убік збоку псує всю картину і видається зайвою)..</div> | |
137 | + <div class="style comments-card-autor"><?=$comment->name?></div> | |
138 | + <div class="style comments-card-text"><?=$comment->comment?></div> | |
137 | 139 | <div class="style answers-wr"> |
138 | - <span>відповісти</span> | |
140 | + <span data-id="<?=$comment->id?>">відповісти</span> | |
139 | 141 | </div> |
142 | + <?php foreach ($comment->activeComments as $child){?> | |
140 | 143 | <div class="comments-card-ansvers-text-wr style"> |
141 | - <div class="style comments-card-autor-ansvers comments-card-autor">Андрій</div> | |
144 | + <div class="style comments-card-autor-ansvers comments-card-autor"><?=$child->name?></div> | |
142 | 145 | <div class="comments-card-text style"> |
143 | - Доброго дня! Це не обкладинка, а просто футуристична картинка "для ілюстрації". Обкладинку ми зараз готуємо і незабаром додамо її на сайт. | |
146 | + <?=$child->comment?> | |
144 | 147 | </div> |
145 | 148 | </div> |
149 | + <?php } ?> | |
146 | 150 | </div> |
147 | - | |
148 | - <div class="comments-card-wr style"> | |
149 | - <div class="style comments-card-autor">Вікторія</div> | |
150 | - <div class="style comments-card-text">Дочекався. Перша книжка Діка яку я прочитав (російською), тепер й українською. Неймовірно захоплива, і з (спойлер). | |
151 | - Але, шановні, змініть обкладинку, це ж обкладинка бразильського видання "Нейромант" Вільяма Гібсона </div> | |
152 | - <div class="style answers-wr"> | |
153 | - <span>відповісти</span> | |
154 | - </div> | |
155 | - </div> | |
156 | - | |
157 | - <div class="comments-card-wr style"> | |
158 | - <div class="style comments-card-autor">Руслан Ковтун</div> | |
159 | - <div class="style comments-card-text">Дочекався. Перша книжка Діка яку я прочитав (російською), тепер й українською. Неймовірно захоплива, і з (спойлер). | |
160 | - Але, шановні, змініть обкладинку, це ж обкладинка бразильського видання "Нейромант" Вільяма Гібсона </div> | |
161 | - <div class="style answers-wr"> | |
162 | - <span>відповісти</span> | |
163 | - </div> | |
164 | - </div> | |
151 | + <?php } ?> | |
165 | 152 | </div> |
153 | + <?php } ?> | |
166 | 154 | </div> |
155 | + | |
167 | 156 | <div class="col-xs-12 hidden-sm col-md-1"></div> |
168 | 157 | <div class="col-xs-12 col-sm-6 col-md-5"> |
169 | 158 | <div class="style card-form-add-wrapp"> |
170 | - <form action="#"> | |
171 | - <div class="style title-add-comments-form">Додати коментар</div> | |
172 | - <div class="input-wr"> | |
173 | - <label for="q1">Ім'я</label> | |
174 | - <input id="q1" type="text"> | |
175 | - </div> | |
176 | - <div class="input-wr"> | |
177 | - <label for="q2">Пошта</label> | |
178 | - <input id="q2" type="text"> | |
179 | - </div> | |
180 | - <div class="input-wr"> | |
181 | - <label for="q3">Коментар</label> | |
182 | - <textarea name="" id="q3" cols="30" rows="10"></textarea> | |
183 | - </div> | |
184 | - <div class="button-wr"> | |
185 | - <button type="submit">додати</button> | |
186 | - </div> | |
187 | - </form> | |
159 | + <?php $module->renderForm($this)?> | |
188 | 160 | </div> |
189 | 161 | </div> |
190 | 162 | </div> | ... | ... |
frontend/web/js/script.js
... | ... | @@ -92,6 +92,7 @@ $(document).ready(function() { |
92 | 92 | |
93 | 93 | function scrollToForm() { |
94 | 94 | $('body').on('click','.answers-wr span', function () { |
95 | + $("#answer-form").find('.field-comment-parent_id').find("#comment-parent_id").val($(this).data('id')); | |
95 | 96 | var block = $('.hidden-comments-form-card'); |
96 | 97 | block.addClass('vis_'); |
97 | 98 | $('body, html').animate({scrollTop:block.offset().top - 36},500) |
... | ... | @@ -99,6 +100,7 @@ $(document).ready(function() { |
99 | 100 | }) |
100 | 101 | $('body').on('click','.hidden-comments-form-card button', function () { |
101 | 102 | $('.hidden-comments-form-card').removeClass('vis_'); |
103 | + | |
102 | 104 | alert('thiiiis') |
103 | 105 | }) |
104 | 106 | ... | ... |