Commit 25bd78f87d536f82983dcf1c5c497d515642d993
1 parent
aa08967c
test
Showing
9 changed files
with
145 additions
and
68 deletions
Show diff stats
common/models/Project.php
@@ -4,11 +4,9 @@ | @@ -4,11 +4,9 @@ | ||
4 | 4 | ||
5 | use common\modules\comment\models\CommentProject; | 5 | use common\modules\comment\models\CommentProject; |
6 | use common\modules\fileloader\behaviors\FileloaderBehavior; | 6 | use common\modules\fileloader\behaviors\FileloaderBehavior; |
7 | - use common\modules\fileloader\models\Fileloader; | ||
8 | use Yii; | 7 | use Yii; |
9 | use yii\behaviors\BlameableBehavior; | 8 | use yii\behaviors\BlameableBehavior; |
10 | use yii\behaviors\TimestampBehavior; | 9 | use yii\behaviors\TimestampBehavior; |
11 | - use yii\db\ActiveQuery; | ||
12 | use yii\db\Expression; | 10 | use yii\db\Expression; |
13 | 11 | ||
14 | /** | 12 | /** |
common/modules/comment/models/Comment.php
@@ -331,13 +331,17 @@ | @@ -331,13 +331,17 @@ | ||
331 | } | 331 | } |
332 | } | 332 | } |
333 | 333 | ||
334 | - public function getAuthor() | 334 | + public function getAuthor($guestMark = '') |
335 | { | 335 | { |
336 | - // if($this->user_id != NULL) { | ||
337 | - return $this->hasOne(\common\models\User::className(), [ 'id' => 'user_id' ]); | ||
338 | - // } else { | ||
339 | - // return ['firstname' => $this->user_name, 'email' => $this->user_email]; | ||
340 | - // } | 336 | + if(!empty($this->user)) { |
337 | + return $this->user->name; | ||
338 | + } else { | ||
339 | + $name = $this->user_name; | ||
340 | + if(!empty($guestMark)) { | ||
341 | + $name .= $guestMark; | ||
342 | + } | ||
343 | + return $name; | ||
344 | + } | ||
341 | } | 345 | } |
342 | 346 | ||
343 | public function checkRating() | 347 | public function checkRating() |
@@ -391,25 +395,31 @@ | @@ -391,25 +395,31 @@ | ||
391 | return $this->hasOne(User::className(), [ 'id' => 'user_id' ]); | 395 | return $this->hasOne(User::className(), [ 'id' => 'user_id' ]); |
392 | } | 396 | } |
393 | 397 | ||
394 | - public function buildButtons() | 398 | + public function buildButtons($buttons = ['delete', 'update', 'reply']) |
395 | { | 399 | { |
396 | - if($this->checkDelete()) { | ||
397 | - $this->buttons[ 'delete' ] = Url::to([ | ||
398 | - 'artbox-comment/delete', | ||
399 | - 'comment_id' => $this->comment_id, | ||
400 | - ]); | 400 | + if(in_array('delete', $buttons)) { |
401 | + if($this->checkDelete()) { | ||
402 | + $this->buttons[ 'delete' ] = Url::to([ | ||
403 | + 'artbox-comment/delete', | ||
404 | + 'comment_id' => $this->comment_id, | ||
405 | + ]); | ||
406 | + } | ||
401 | } | 407 | } |
402 | - if($this->checkUpdate()) { | ||
403 | - $this->buttons[ 'update' ] = Url::to([ | ||
404 | - 'artbox-comment/update', | ||
405 | - 'comment_id' => $this->comment_id, | ||
406 | - ]); | 408 | + if(in_array('update', $buttons)) { |
409 | + if($this->checkUpdate()) { | ||
410 | + $this->buttons[ 'update' ] = Url::to([ | ||
411 | + 'artbox-comment/update', | ||
412 | + 'comment_id' => $this->comment_id, | ||
413 | + ]); | ||
414 | + } | ||
407 | } | 415 | } |
408 | - if($this->checkReply()) { | ||
409 | - $this->buttons[ 'reply' ] = Url::to([ | ||
410 | - 'artbox-comment/reply', | ||
411 | - 'comment_id' => $this->comment_id, | ||
412 | - ]); | 416 | + if(in_array('reply', $buttons)) { |
417 | + if($this->checkReply()) { | ||
418 | + $this->buttons[ 'reply' ] = Url::to([ | ||
419 | + 'artbox-comment/reply', | ||
420 | + 'comment_id' => $this->comment_id, | ||
421 | + ]); | ||
422 | + } | ||
413 | } | 423 | } |
414 | } | 424 | } |
415 | 425 |
common/modules/comment/models/CommentProject.php
@@ -155,6 +155,7 @@ | @@ -155,6 +155,7 @@ | ||
155 | 'text', | 155 | 'text', |
156 | 'budget_from', | 156 | 'budget_from', |
157 | 'budget_to', | 157 | 'budget_to', |
158 | + 'budget_currency', | ||
158 | 'term_from', | 159 | 'term_from', |
159 | 'term_to', | 160 | 'term_to', |
160 | 'file', | 161 | 'file', |
@@ -223,13 +224,34 @@ | @@ -223,13 +224,34 @@ | ||
223 | */ | 224 | */ |
224 | public function getComments($model, $model_id) | 225 | public function getComments($model, $model_id) |
225 | { | 226 | { |
226 | - return $this->find() | ||
227 | - ->where([ | ||
228 | - 'comment_project.model' => $model, | ||
229 | - 'comment_project.model_id' => $model_id, | ||
230 | - 'comment_project.status' => 1, | ||
231 | - ]) | ||
232 | - ->with('currency', 'user', 'user.userInfo', 'user.companyInfo', 'user.comments'); | 227 | + /** |
228 | + * @var User $user | ||
229 | + */ | ||
230 | + $user = \Yii::$app->user->identity; | ||
231 | + if(!empty($user)) { | ||
232 | + $project = Project::findOne($model_id); | ||
233 | + if(!empty($project) && $user->id == $project->user_id) { | ||
234 | + return $this->find() | ||
235 | + ->where([ | ||
236 | + 'comment_project.model' => $model, | ||
237 | + 'comment_project.model_id' => $model_id, | ||
238 | + 'comment_project.status' => [self::STATUS_ANONYMOUS, self::STATUS_ACTIVE, self::STATUS_PERSONAL], | ||
239 | + ]) | ||
240 | + ->with('currency', 'user', 'user.userInfo', 'user.companyInfo', 'user.comments'); | ||
241 | + } | ||
242 | + } | ||
243 | + $query = $this->find() | ||
244 | + ->where([ | ||
245 | + 'comment_project.model' => $model, | ||
246 | + 'comment_project.model_id' => $model_id, | ||
247 | + ]) | ||
248 | + ->with('currency', 'user', 'user.userInfo', 'user.companyInfo', 'user.comments'); | ||
249 | + if(!empty($user)) { | ||
250 | + $query->andWhere(['or', ['comment_project.status' => self::STATUS_ACTIVE], ['comment_project.status' => self::STATUS_ANONYMOUS, 'comment_project.user_id' => $user->id]]); | ||
251 | + } else { | ||
252 | + $query->andWhere(['comment_project.status' => 1]); | ||
253 | + } | ||
254 | + return $query; | ||
233 | } | 255 | } |
234 | 256 | ||
235 | public function postComment() | 257 | public function postComment() |
common/modules/comment/widgets/views/_project_comment_view.php
@@ -108,35 +108,66 @@ | @@ -108,35 +108,66 @@ | ||
108 | <?= Html::a('Портфолио', $user->getLink('portfolio'), [ 'class' => 'get-project-new' ]) ?> | 108 | <?= Html::a('Портфолио', $user->getLink('portfolio'), [ 'class' => 'get-project-new' ]) ?> |
109 | <?= Html::a('Контакты', $user->link, [ 'class' => 'get-list-new' ]) ?> | 109 | <?= Html::a('Контакты', $user->link, [ 'class' => 'get-list-new' ]) ?> |
110 | </div> | 110 | </div> |
111 | + <div style="clear:both"></div> | ||
111 | <?php | 112 | <?php |
113 | + if($model->status == $model::STATUS_ANONYMOUS) { | ||
114 | + echo Html::tag('div', 'Анонимное предложение', [ 'class' => 'project_status' ]); | ||
115 | + } | ||
112 | if(\Yii::$app->user->getId() == $model->owner->user_id) { | 116 | if(\Yii::$app->user->getId() == $model->owner->user_id) { |
113 | ?> | 117 | ?> |
114 | - <div class="project_owner_control" style="clear:both"> | ||
115 | - <span>Отметить как: </span> | ||
116 | - <?php | ||
117 | - echo Html::a('новый', [ '#' ], [ | ||
118 | - 'data-project-id' => $model->owner->project_id, | ||
119 | - 'data-comment-id' => $model->comment_id, | ||
120 | - 'class' => 'artbox_project_make_new', | ||
121 | - ]); | ||
122 | - echo Html::a('кандидат', [ '#' ], [ | ||
123 | - 'data-project-id' => $model->owner->project_id, | ||
124 | - 'data-comment-id' => $model->comment_id, | ||
125 | - 'class' => 'artbox_project_make_candidate', | ||
126 | - ]); | ||
127 | - echo Html::a('исполнитель', [ '#' ], [ | ||
128 | - 'data-project-id' => $model->owner->project_id, | ||
129 | - 'data-comment-id' => $model->comment_id, | ||
130 | - 'class' => 'artbox_project_make_performer', | ||
131 | - ]); | ||
132 | - echo Html::a('отказать', [ '#' ], [ | ||
133 | - 'data-project-id' => $model->owner->project_id, | ||
134 | - 'data-comment-id' => $model->comment_id, | ||
135 | - 'class' => 'artbox_project_make_deny', | ||
136 | - ]); | ||
137 | - ?> | 118 | + <div class="project_owner_state"> |
119 | + <p> | ||
120 | + <?php | ||
121 | + switch($model->state) { | ||
122 | + case 1: | ||
123 | + echo 'Предложение не рассмотрено'; | ||
124 | + break; | ||
125 | + case 2: | ||
126 | + echo 'Исполнитель поставлен на рассмотрение'; | ||
127 | + break; | ||
128 | + case 3: | ||
129 | + echo 'Исполнитель назначен исполнителем'; | ||
130 | + break; | ||
131 | + case 4: | ||
132 | + echo 'Вы отказали данному исполнителю'; | ||
133 | + break; | ||
134 | + case 5: | ||
135 | + echo 'Исполнитель отказался от данного предложения'; | ||
136 | + break; | ||
137 | + } | ||
138 | + ?> | ||
139 | + </p> | ||
138 | </div> | 140 | </div> |
139 | <?php | 141 | <?php |
142 | + if($model->state != $model::STATE_TRASH) { | ||
143 | + ?> | ||
144 | + <div class="project_owner_control"> | ||
145 | + <span>Отметить как: </span> | ||
146 | + <?php | ||
147 | + echo Html::a('новый', [ '#' ], [ | ||
148 | + 'data-project-id' => $model->owner->project_id, | ||
149 | + 'data-comment-id' => $model->comment_id, | ||
150 | + 'class' => 'artbox_project_make_new', | ||
151 | + ]); | ||
152 | + echo Html::a('кандидат', [ '#' ], [ | ||
153 | + 'data-project-id' => $model->owner->project_id, | ||
154 | + 'data-comment-id' => $model->comment_id, | ||
155 | + 'class' => 'artbox_project_make_candidate', | ||
156 | + ]); | ||
157 | + echo Html::a('исполнитель', [ '#' ], [ | ||
158 | + 'data-project-id' => $model->owner->project_id, | ||
159 | + 'data-comment-id' => $model->comment_id, | ||
160 | + 'class' => 'artbox_project_make_performer', | ||
161 | + ]); | ||
162 | + echo Html::a('отказать', [ '#' ], [ | ||
163 | + 'data-project-id' => $model->owner->project_id, | ||
164 | + 'data-comment-id' => $model->comment_id, | ||
165 | + 'class' => 'artbox_project_make_deny', | ||
166 | + ]); | ||
167 | + ?> | ||
168 | + </div> | ||
169 | + <?php | ||
170 | + } | ||
140 | } | 171 | } |
141 | ?> | 172 | ?> |
142 | 173 |
common/modules/comment/widgets/views/_review_comment_view.php
@@ -14,9 +14,11 @@ | @@ -14,9 +14,11 @@ | ||
14 | * @var User $user | 14 | * @var User $user |
15 | */ | 15 | */ |
16 | $user = $model->user; | 16 | $user = $model->user; |
17 | - $model->buildButtons(); | 17 | + $model->buildButtons(['delete']); |
18 | ?> | 18 | ?> |
19 | - <div class="comments-name <?= CommentWidget::$baseClass[ 'comment_author' ] ?>"><?= $user->name ?></div> | 19 | + <div class="comments-name <?= CommentWidget::$baseClass[ 'comment_author' ] ?>"> |
20 | + <?= $model->getAuthor(' (Гость)') ?> | ||
21 | + </div> | ||
20 | <?php | 22 | <?php |
21 | /* == STATUS PRO == | 23 | /* == STATUS PRO == |
22 | ?> | 24 | ?> |
@@ -41,7 +43,7 @@ | @@ -41,7 +43,7 @@ | ||
41 | <div> | 43 | <div> |
42 | <?php | 44 | <?php |
43 | if(!empty( $model->buttons[ 'delete' ] )) { | 45 | if(!empty( $model->buttons[ 'delete' ] )) { |
44 | - echo Html::a('Удалить', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]); | 46 | + echo Html::a(($model->user_id != NULL && $model->user_id == \Yii::$app->user->id)?'Удалить':'Пожаловаться ', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]); |
45 | } | 47 | } |
46 | if(!empty( $model->buttons[ 'update' ] )) { | 48 | if(!empty( $model->buttons[ 'update' ] )) { |
47 | echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]); | 49 | echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]); |
frontend/controllers/AccountsController.php
@@ -556,14 +556,17 @@ | @@ -556,14 +556,17 @@ | ||
556 | if($portfolioUser->load($post)) { | 556 | if($portfolioUser->load($post)) { |
557 | $portfolioUser->status = 1; | 557 | $portfolioUser->status = 1; |
558 | if($portfolioUser->save()) { | 558 | if($portfolioUser->save()) { |
559 | - if(!empty($portfolioUser->gallery)) { | 559 | + if(!empty( $portfolioUser->gallery )) { |
560 | $portfolioUser->gallery->load($post); | 560 | $portfolioUser->gallery->load($post); |
561 | $portfolioUser->portfolioGallery->load($post); | 561 | $portfolioUser->portfolioGallery->load($post); |
562 | if($portfolioUser->gallery->save() && $portfolioUser->portfolioGallery->save()) { | 562 | if($portfolioUser->gallery->save() && $portfolioUser->portfolioGallery->save()) { |
563 | - return $this->redirect(['accounts/participant']); | 563 | + return $this->redirect([ 'accounts/participant' ]); |
564 | } | 564 | } |
565 | } else { | 565 | } else { |
566 | - return $this->redirect(['accounts/participant-edit', 'id' => $portfolioUser->portfolio_user_id]); | 566 | + return $this->redirect([ |
567 | + 'accounts/participant-edit', | ||
568 | + 'id' => $portfolioUser->portfolio_user_id, | ||
569 | + ]); | ||
567 | } | 570 | } |
568 | } | 571 | } |
569 | } | 572 | } |
@@ -580,6 +583,7 @@ | @@ -580,6 +583,7 @@ | ||
580 | $searchModel = new PortfolioSearch(); | 583 | $searchModel = new PortfolioSearch(); |
581 | $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | 584 | $dataProvider = $searchModel->search(Yii::$app->request->queryParams); |
582 | $dataProvider->pagination->pageSize = 5; | 585 | $dataProvider->pagination->pageSize = 5; |
586 | + $dataProvider->sort->defaultOrder = [ 'portfolio_id' => SORT_ASC ]; | ||
583 | return $this->render('portfolio', [ | 587 | return $this->render('portfolio', [ |
584 | 'searchModel' => $searchModel, | 588 | 'searchModel' => $searchModel, |
585 | 'dataProvider' => $dataProvider, | 589 | 'dataProvider' => $dataProvider, |
frontend/controllers/TenderController.php
@@ -117,9 +117,10 @@ | @@ -117,9 +117,10 @@ | ||
117 | $project = Project::findOne($project_id); | 117 | $project = Project::findOne($project_id); |
118 | if(empty( $project )) { | 118 | if(empty( $project )) { |
119 | return [ 'error' => 'Проект не найден' ]; | 119 | return [ 'error' => 'Проект не найден' ]; |
120 | - } elseif($project->user_id != $user->id) { | ||
121 | - return [ 'error' => 'Вы можете менять статус только собственных проектов' ]; | ||
122 | } | 120 | } |
121 | +// elseif($project->user_id != $user->id) { | ||
122 | +// return [ 'error' => 'Вы можете менять статус только собственных проектов' ]; | ||
123 | +// } | ||
123 | /** | 124 | /** |
124 | * @var CommentProject $comment | 125 | * @var CommentProject $comment |
125 | */ | 126 | */ |
@@ -133,7 +134,10 @@ | @@ -133,7 +134,10 @@ | ||
133 | if(empty( $comment )) { | 134 | if(empty( $comment )) { |
134 | return [ 'error' => 'Данного предложения не существует' ]; | 135 | return [ 'error' => 'Данного предложения не существует' ]; |
135 | } | 136 | } |
136 | - if($comment->user_id == \Yii::$app->user->getId()) { | 137 | + if($project->user_id != $user->id && $comment->user_id != $user->id) { |
138 | + return ['error' => 'Вы можете менять статус только своих предложений, либо предложений по своим проектам']; | ||
139 | + } | ||
140 | + if($comment->user_id == $user->id) { | ||
137 | $comment->scenario = $comment::SCENARIO_OWNER; | 141 | $comment->scenario = $comment::SCENARIO_OWNER; |
138 | } else { | 142 | } else { |
139 | $comment->scenario = $comment::SCENARIO_STATE; | 143 | $comment->scenario = $comment::SCENARIO_STATE; |
frontend/views/projects/_projects_list_view.php
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | use yii\data\ActiveDataProvider; | 10 | use yii\data\ActiveDataProvider; |
11 | use yii\helpers\Html; | 11 | use yii\helpers\Html; |
12 | use yii\widgets\ListView; | 12 | use yii\widgets\ListView; |
13 | - | 13 | + $chat = \Yii::$app->user->identity->getChat($model->project->user_id)->one(); |
14 | ?> | 14 | ?> |
15 | <div class="left-left-proektant-cabinet"> | 15 | <div class="left-left-proektant-cabinet"> |
16 | <?php | 16 | <?php |
@@ -73,12 +73,13 @@ | @@ -73,12 +73,13 @@ | ||
73 | <div class="right-proektant-cabinet-message-new"> | 73 | <div class="right-proektant-cabinet-message-new"> |
74 | <img src="/images/cabinet/ico-6.png" alt=""/> | 74 | <img src="/images/cabinet/ico-6.png" alt=""/> |
75 | <?php | 75 | <?php |
76 | - echo Html::a(count(\Yii::$app->user->identity->getChat($model->project->user_id) | ||
77 | - ->one()->messages) . ' сообщения', [ | 76 | + echo Html::a((empty($chat))?0:count($chat->messages) . ' сообщения', [ |
78 | 'chat/message', | 77 | 'chat/message', |
79 | 'user_id' => $model->project->user_id, | 78 | 'user_id' => $model->project->user_id, |
80 | ]); | 79 | ]); |
81 | - if($model->state == 5) { | 80 | + if($model->state == $model::STATE_DENY) { |
81 | + | ||
82 | + } elseif($model->state == $model::STATE_TRASH) { | ||
82 | echo Html::a('Отменить', [ '#' ], [ | 83 | echo Html::a('Отменить', [ '#' ], [ |
83 | 'data-project-id' => $model->project->project_id, | 84 | 'data-project-id' => $model->project->project_id, |
84 | 'data-comment-id' => $model->comment_id, | 85 | 'data-comment-id' => $model->comment_id, |
frontend/web/js/forms.js
@@ -364,6 +364,7 @@ $(document).ready( | @@ -364,6 +364,7 @@ $(document).ready( | ||
364 | alert(data.error); | 364 | alert(data.error); |
365 | } else { | 365 | } else { |
366 | alert(data.message); | 366 | alert(data.message); |
367 | + location.reload(); | ||
367 | } | 368 | } |
368 | }, 'json').fail( | 369 | }, 'json').fail( |
369 | function() | 370 | function() |
@@ -383,6 +384,7 @@ $(document).ready( | @@ -383,6 +384,7 @@ $(document).ready( | ||
383 | alert(data.error); | 384 | alert(data.error); |
384 | } else { | 385 | } else { |
385 | alert(data.message); | 386 | alert(data.message); |
387 | + location.reload(); | ||
386 | } | 388 | } |
387 | }, 'json').fail( | 389 | }, 'json').fail( |
388 | function() | 390 | function() |
@@ -402,6 +404,7 @@ $(document).ready( | @@ -402,6 +404,7 @@ $(document).ready( | ||
402 | alert(data.error); | 404 | alert(data.error); |
403 | } else { | 405 | } else { |
404 | alert(data.message); | 406 | alert(data.message); |
407 | + location.reload(); | ||
405 | } | 408 | } |
406 | }, 'json').fail( | 409 | }, 'json').fail( |
407 | function() | 410 | function() |
@@ -421,6 +424,7 @@ $(document).ready( | @@ -421,6 +424,7 @@ $(document).ready( | ||
421 | alert(data.error); | 424 | alert(data.error); |
422 | } else { | 425 | } else { |
423 | alert(data.message); | 426 | alert(data.message); |
427 | + location.reload(); | ||
424 | } | 428 | } |
425 | }, 'json').fail( | 429 | }, 'json').fail( |
426 | function() | 430 | function() |
@@ -440,6 +444,7 @@ $(document).ready( | @@ -440,6 +444,7 @@ $(document).ready( | ||
440 | alert(data.error); | 444 | alert(data.error); |
441 | } else { | 445 | } else { |
442 | alert(data.message); | 446 | alert(data.message); |
447 | + location.reload(); | ||
443 | } | 448 | } |
444 | }, 'json').fail( | 449 | }, 'json').fail( |
445 | function() | 450 | function() |