Commit 25bd78f87d536f82983dcf1c5c497d515642d993

Authored by Yarik
1 parent aa08967c

test

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