Commit 95f0b72679ea72cc512f7fce7add1b6fb0f0938b

Authored by Anastasia
1 parent 82d2fae2

- comment answer form

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
... ... @@ -130,4 +130,8 @@
130 130 {
131 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 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  
... ...