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 | 4 | |
5 | 5 | use common\modules\comment\models\CommentProject; |
6 | 6 | use common\modules\fileloader\behaviors\FileloaderBehavior; |
7 | - use common\modules\fileloader\models\Fileloader; | |
8 | 7 | use Yii; |
9 | 8 | use yii\behaviors\BlameableBehavior; |
10 | 9 | use yii\behaviors\TimestampBehavior; |
11 | - use yii\db\ActiveQuery; | |
12 | 10 | use yii\db\Expression; |
13 | 11 | |
14 | 12 | /** | ... | ... |
common/modules/comment/models/Comment.php
... | ... | @@ -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 | 347 | public function checkRating() |
... | ... | @@ -391,25 +395,31 @@ |
391 | 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 | 155 | 'text', |
156 | 156 | 'budget_from', |
157 | 157 | 'budget_to', |
158 | + 'budget_currency', | |
158 | 159 | 'term_from', |
159 | 160 | 'term_to', |
160 | 161 | 'file', |
... | ... | @@ -223,13 +224,34 @@ |
223 | 224 | */ |
224 | 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 | 257 | public function postComment() | ... | ... |
common/modules/comment/widgets/views/_project_comment_view.php
... | ... | @@ -108,35 +108,66 @@ |
108 | 108 | <?= Html::a('Портфолио', $user->getLink('portfolio'), [ 'class' => 'get-project-new' ]) ?> |
109 | 109 | <?= Html::a('Контакты', $user->link, [ 'class' => 'get-list-new' ]) ?> |
110 | 110 | </div> |
111 | + <div style="clear:both"></div> | |
111 | 112 | <?php |
113 | + if($model->status == $model::STATUS_ANONYMOUS) { | |
114 | + echo Html::tag('div', 'Анонимное предложение', [ 'class' => 'project_status' ]); | |
115 | + } | |
112 | 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 | 140 | </div> |
139 | 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 | 14 | * @var User $user |
15 | 15 | */ |
16 | 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 | 22 | <?php |
21 | 23 | /* == STATUS PRO == |
22 | 24 | ?> |
... | ... | @@ -41,7 +43,7 @@ |
41 | 43 | <div> |
42 | 44 | <?php |
43 | 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 | 48 | if(!empty( $model->buttons[ 'update' ] )) { |
47 | 49 | echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]); | ... | ... |
frontend/controllers/AccountsController.php
... | ... | @@ -556,14 +556,17 @@ |
556 | 556 | if($portfolioUser->load($post)) { |
557 | 557 | $portfolioUser->status = 1; |
558 | 558 | if($portfolioUser->save()) { |
559 | - if(!empty($portfolioUser->gallery)) { | |
559 | + if(!empty( $portfolioUser->gallery )) { | |
560 | 560 | $portfolioUser->gallery->load($post); |
561 | 561 | $portfolioUser->portfolioGallery->load($post); |
562 | 562 | if($portfolioUser->gallery->save() && $portfolioUser->portfolioGallery->save()) { |
563 | - return $this->redirect(['accounts/participant']); | |
563 | + return $this->redirect([ 'accounts/participant' ]); | |
564 | 564 | } |
565 | 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 | 583 | $searchModel = new PortfolioSearch(); |
581 | 584 | $dataProvider = $searchModel->search(Yii::$app->request->queryParams); |
582 | 585 | $dataProvider->pagination->pageSize = 5; |
586 | + $dataProvider->sort->defaultOrder = [ 'portfolio_id' => SORT_ASC ]; | |
583 | 587 | return $this->render('portfolio', [ |
584 | 588 | 'searchModel' => $searchModel, |
585 | 589 | 'dataProvider' => $dataProvider, | ... | ... |
frontend/controllers/TenderController.php
... | ... | @@ -117,9 +117,10 @@ |
117 | 117 | $project = Project::findOne($project_id); |
118 | 118 | if(empty( $project )) { |
119 | 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 | 125 | * @var CommentProject $comment |
125 | 126 | */ |
... | ... | @@ -133,7 +134,10 @@ |
133 | 134 | if(empty( $comment )) { |
134 | 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 | 141 | $comment->scenario = $comment::SCENARIO_OWNER; |
138 | 142 | } else { |
139 | 143 | $comment->scenario = $comment::SCENARIO_STATE; | ... | ... |
frontend/views/projects/_projects_list_view.php
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | use yii\data\ActiveDataProvider; |
11 | 11 | use yii\helpers\Html; |
12 | 12 | use yii\widgets\ListView; |
13 | - | |
13 | + $chat = \Yii::$app->user->identity->getChat($model->project->user_id)->one(); | |
14 | 14 | ?> |
15 | 15 | <div class="left-left-proektant-cabinet"> |
16 | 16 | <?php |
... | ... | @@ -73,12 +73,13 @@ |
73 | 73 | <div class="right-proektant-cabinet-message-new"> |
74 | 74 | <img src="/images/cabinet/ico-6.png" alt=""/> |
75 | 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 | 77 | 'chat/message', |
79 | 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 | 83 | echo Html::a('Отменить', [ '#' ], [ |
83 | 84 | 'data-project-id' => $model->project->project_id, |
84 | 85 | 'data-comment-id' => $model->comment_id, | ... | ... |
frontend/web/js/forms.js
... | ... | @@ -364,6 +364,7 @@ $(document).ready( |
364 | 364 | alert(data.error); |
365 | 365 | } else { |
366 | 366 | alert(data.message); |
367 | + location.reload(); | |
367 | 368 | } |
368 | 369 | }, 'json').fail( |
369 | 370 | function() |
... | ... | @@ -383,6 +384,7 @@ $(document).ready( |
383 | 384 | alert(data.error); |
384 | 385 | } else { |
385 | 386 | alert(data.message); |
387 | + location.reload(); | |
386 | 388 | } |
387 | 389 | }, 'json').fail( |
388 | 390 | function() |
... | ... | @@ -402,6 +404,7 @@ $(document).ready( |
402 | 404 | alert(data.error); |
403 | 405 | } else { |
404 | 406 | alert(data.message); |
407 | + location.reload(); | |
405 | 408 | } |
406 | 409 | }, 'json').fail( |
407 | 410 | function() |
... | ... | @@ -421,6 +424,7 @@ $(document).ready( |
421 | 424 | alert(data.error); |
422 | 425 | } else { |
423 | 426 | alert(data.message); |
427 | + location.reload(); | |
424 | 428 | } |
425 | 429 | }, 'json').fail( |
426 | 430 | function() |
... | ... | @@ -440,6 +444,7 @@ $(document).ready( |
440 | 444 | alert(data.error); |
441 | 445 | } else { |
442 | 446 | alert(data.message); |
447 | + location.reload(); | |
443 | 448 | } |
444 | 449 | }, 'json').fail( |
445 | 450 | function() | ... | ... |