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() |