Commit 95f0b72679ea72cc512f7fce7add1b6fb0f0938b

Authored by Anastasia
1 parent 82d2fae2

- comment answer form

common/models/Book.php
@@ -165,7 +165,7 @@ @@ -165,7 +165,7 @@
165 } 165 }
166 166
167 public function getActiveComments(){ 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
@@ -130,4 +130,8 @@ @@ -130,4 +130,8 @@
130 { 130 {
131 return $this->hasMany(Comment::className(), [ 'parent_id' => 'id' ]); 131 return $this->hasMany(Comment::className(), [ 'parent_id' => 'id' ]);
132 } 132 }
  133 +
  134 + public function getActiveComments(){
  135 + return $this->getComments()->where(['status' => true]);
  136 + }
133 } 137 }
frontend/config/main.php
@@ -139,6 +139,118 @@ @@ -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 'components' => [ 255 'components' => [
144 'user' => [ 256 'user' => [
frontend/controllers/BookController.php
@@ -99,7 +99,7 @@ @@ -99,7 +99,7 @@
99 } 99 }
100 100
101 public function actionView($id){ 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 return $this->render('view', ['model' => $model]); 103 return $this->render('view', ['model' => $model]);
104 } 104 }
105 } 105 }
106 \ No newline at end of file 106 \ No newline at end of file
frontend/views/book/view.php
@@ -12,6 +12,30 @@ @@ -12,6 +12,30 @@
12 ]; 12 ];
13 13
14 $this->params['breadcrumbs'][] = $model->title; 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 <section class="section-card"> 41 <section class="section-card">
@@ -99,92 +123,40 @@ @@ -99,92 +123,40 @@
99 </div> 123 </div>
100 </div> 124 </div>
101 <div class="row"> 125 <div class="row">
  126 +
102 <div class="col-xs-12 col-sm-6 col-md-6 comments-card-col"> 127 <div class="col-xs-12 col-sm-6 col-md-6 comments-card-col">
  128 + <?php if (!empty($model->activeComments)){?>
103 <div class="hidden-comments-form-card style" style="display: none;"> 129 <div class="hidden-comments-form-card style" style="display: none;">
104 <div class="style card-form-add-wrapp"> 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 </div> 132 </div>
124 </div> 133 </div>
125 <div class="style"> 134 <div class="style">
  135 + <?php foreach ($model->activeComments as $comment){?>
126 <div class="comments-card-wr style"> 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 <div class="style answers-wr"> 139 <div class="style answers-wr">
138 - <span>відповісти</span> 140 + <span data-id="<?=$comment->id?>">відповісти</span>
139 </div> 141 </div>
  142 + <?php foreach ($comment->activeComments as $child){?>
140 <div class="comments-card-ansvers-text-wr style"> 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 <div class="comments-card-text style"> 145 <div class="comments-card-text style">
143 - Доброго дня! Це не обкладинка, а просто футуристична картинка "для ілюстрації". Обкладинку ми зараз готуємо і незабаром додамо її на сайт. 146 + <?=$child->comment?>
144 </div> 147 </div>
145 </div> 148 </div>
  149 + <?php } ?>
146 </div> 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 </div> 152 </div>
  153 + <?php } ?>
166 </div> 154 </div>
  155 +
167 <div class="col-xs-12 hidden-sm col-md-1"></div> 156 <div class="col-xs-12 hidden-sm col-md-1"></div>
168 <div class="col-xs-12 col-sm-6 col-md-5"> 157 <div class="col-xs-12 col-sm-6 col-md-5">
169 <div class="style card-form-add-wrapp"> 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 </div> 160 </div>
189 </div> 161 </div>
190 </div> 162 </div>
frontend/web/js/script.js
@@ -92,6 +92,7 @@ $(document).ready(function() { @@ -92,6 +92,7 @@ $(document).ready(function() {
92 92
93 function scrollToForm() { 93 function scrollToForm() {
94 $('body').on('click','.answers-wr span', function () { 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 var block = $('.hidden-comments-form-card'); 96 var block = $('.hidden-comments-form-card');
96 block.addClass('vis_'); 97 block.addClass('vis_');
97 $('body, html').animate({scrollTop:block.offset().top - 36},500) 98 $('body, html').animate({scrollTop:block.offset().top - 36},500)
@@ -99,6 +100,7 @@ $(document).ready(function() { @@ -99,6 +100,7 @@ $(document).ready(function() {
99 }) 100 })
100 $('body').on('click','.hidden-comments-form-card button', function () { 101 $('body').on('click','.hidden-comments-form-card button', function () {
101 $('.hidden-comments-form-card').removeClass('vis_'); 102 $('.hidden-comments-form-card').removeClass('vis_');
  103 +
102 alert('thiiiis') 104 alert('thiiiis')
103 }) 105 })
104 106