Commit 32ed90fdd82ca0b7eedc0192654ef26b46126b16

Authored by Yarik
1 parent 38a6e1dd

test

common/models/Project.php
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
30 * @property ProjectPayment[] $projectPayments 30 * @property ProjectPayment[] $projectPayments
31 * @property ProjectSpecialization[] $projectSpecializations 31 * @property ProjectSpecialization[] $projectSpecializations
32 * @property Specialization[] $specializations 32 * @property Specialization[] $specializations
  33 + * @property Currency $budgetCurrency
33 */ 34 */
34 class Project extends \yii\db\ActiveRecord 35 class Project extends \yii\db\ActiveRecord
35 { 36 {
common/models/User.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 namespace common\models; 2 namespace common\models;
3 3
4 use common\modules\comment\models\Comment; 4 use common\modules\comment\models\Comment;
  5 + use common\modules\comment\models\CommentProject;
5 use common\modules\comment\models\Rating; 6 use common\modules\comment\models\Rating;
6 use Yii; 7 use Yii;
7 use yii\base\InvalidConfigException; 8 use yii\base\InvalidConfigException;
@@ -521,7 +522,8 @@ @@ -521,7 +522,8 @@
521 */ 522 */
522 public function getJobs() 523 public function getJobs()
523 { 524 {
524 - return $this->hasMany(Job::className(), [ 'user_id' => 'id' ])->orderBy(['current' => SORT_DESC]); 525 + return $this->hasMany(Job::className(), [ 'user_id' => 'id' ])
  526 + ->orderBy([ 'current' => SORT_DESC ]);
525 } 527 }
526 528
527 /** 529 /**
@@ -805,4 +807,25 @@ @@ -805,4 +807,25 @@
805 ]) 807 ])
806 ->scalar(); 808 ->scalar();
807 } 809 }
  810 +
  811 + public function getCommentProjects()
  812 + {
  813 + return $this->hasMany(CommentProject::className(), [ 'user_id' => 'id' ]);
  814 + }
  815 +
  816 + public function getChat($user_id)
  817 + {
  818 + return Chat::find()
  819 + ->where([
  820 + 'or',
  821 + [ 'from_user' => $user_id, ],
  822 + [ 'to_user' => $user_id, ],
  823 + ])
  824 + ->andWhere([
  825 + 'or',
  826 + [ 'from_user' => $this->id, ],
  827 + [ 'to_user' => $this->id, ],
  828 + ])
  829 + ->with('messages.user');
  830 + }
808 } 831 }
common/modules/comment/models/CommentProject.php
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 3
4 use common\models\Currency; 4 use common\models\Currency;
5 use common\models\File; 5 use common\models\File;
  6 + use common\models\Project;
6 use common\models\User; 7 use common\models\User;
7 use yii\db\ActiveQuery; 8 use yii\db\ActiveQuery;
8 use yii\db\ActiveRecord; 9 use yii\db\ActiveRecord;
@@ -27,6 +28,7 @@ @@ -27,6 +28,7 @@
27 * @property int $term_to 28 * @property int $term_to
28 * @property int $state 29 * @property int $state
29 * @property Currency $currency 30 * @property Currency $currency
  31 + * @property Project $project
30 * @package common\modules\comment\models 32 * @package common\modules\comment\models
31 */ 33 */
32 class CommentProject extends \yii\db\ActiveRecord 34 class CommentProject extends \yii\db\ActiveRecord
@@ -122,7 +124,7 @@ @@ -122,7 +124,7 @@
122 'integer', 124 'integer',
123 'max' => 4, 125 'max' => 4,
124 'min' => 1, 126 'min' => 1,
125 - 'on' => self::SCENARIO_STATE, 127 + 'on' => self::SCENARIO_STATE,
126 ], 128 ],
127 [ 129 [
128 [ 'state' ], 130 [ 'state' ],
@@ -137,8 +139,11 @@ @@ -137,8 +139,11 @@
137 [ 139 [
138 [ 'state' ], 140 [ 'state' ],
139 'in', 141 'in',
140 - 'range' => [1, 5],  
141 - 'on' => self::SCENARIO_OWNER, 142 + 'range' => [
  143 + 1,
  144 + 5,
  145 + ],
  146 + 'on' => self::SCENARIO_OWNER,
142 ], 147 ],
143 ]; 148 ];
144 } 149 }
@@ -160,6 +165,9 @@ @@ -160,6 +165,9 @@
160 self::SCENARIO_STATE => [ 165 self::SCENARIO_STATE => [
161 'state', 166 'state',
162 ], 167 ],
  168 + self::SCENARIO_OWNER => [
  169 + 'state',
  170 + ],
163 ]; 171 ];
164 } 172 }
165 173
@@ -400,6 +408,11 @@ @@ -400,6 +408,11 @@
400 } 408 }
401 } 409 }
402 410
  411 + public function getProject()
  412 + {
  413 + return $this->hasOne(Project::className(), [ 'project_id' => 'model_id' ]);
  414 + }
  415 +
403 /** 416 /**
404 * @return User 417 * @return User
405 */ 418 */
common/modules/comment/models/CommentProjectSearch.php 0 → 100644
  1 +<?php
  2 + namespace common\modules\comment\models;
  3 +
  4 + use common\models\Currency;
  5 + use common\models\File;
  6 + use common\models\User;
  7 + use yii\data\ActiveDataProvider;
  8 + use yii\db\ActiveQuery;
  9 + use yii\db\ActiveRecord;
  10 + use yii\web\UploadedFile;
  11 +
  12 + /**
  13 + * Class Comment
  14 + * @property bool $guestComment
  15 + * @property integer $comment_id
  16 + * @property string $text
  17 + * @property int $user_id
  18 + * @property int $status
  19 + * @property string $date_add
  20 + * @property string $date_update
  21 + * @property string $date_delete
  22 + * @property string $model
  23 + * @property int $model_id
  24 + * @property string $files
  25 + * @property float $budget_from
  26 + * @property float $budget_to
  27 + * @property int $term_from
  28 + * @property int $term_to
  29 + * @property int $state
  30 + * @property Currency $currency
  31 + * @package common\modules\comment\models
  32 + */
  33 + class CommentProjectSearch extends CommentProject
  34 + {
  35 +
  36 + const SCENARIO_SEARCH = 'search';
  37 +
  38 + public function rules()
  39 + {
  40 + return [
  41 + [
  42 + [
  43 + 'state',
  44 + ],
  45 + 'integer',
  46 + 'max' => 5,
  47 + 'min' => 1,
  48 + ],
  49 + [
  50 + [
  51 + 'state',
  52 + ],
  53 + 'default',
  54 + 'value' => self::STATE_NEW,
  55 + ],
  56 + ];
  57 + }
  58 +
  59 + public function scenarios()
  60 + {
  61 + return array_merge(parent::scenarios(), [
  62 + self::SCENARIO_SEARCH => [
  63 + 'state',
  64 + ],
  65 + ]);
  66 + }
  67 +
  68 + public function search($params)
  69 + {
  70 + $query = CommentProject::find()
  71 + ->with('project')
  72 + ->with('project.budgetCurrency')
  73 + ->with('project.comments')
  74 + ->where([ 'user_id' => \Yii::$app->user->getId() ]);
  75 +
  76 + $dataProvider = new ActiveDataProvider([
  77 + 'query' => $query,
  78 + ]);
  79 +
  80 + $this->load($params);
  81 +
  82 + if(!$this->validate()) {
  83 + $query->andWhere('0=1');
  84 + return $dataProvider;
  85 + }
  86 +
  87 + $query->andWhere([ 'state' => $this->state ]);
  88 +
  89 + return $dataProvider;
  90 + }
  91 +
  92 + }
common/modules/comment/rbac/ArtboxCommentCreateRule.php
@@ -19,6 +19,10 @@ @@ -19,6 +19,10 @@
19 19
20 public function checkProject($user, $item, $params) 20 public function checkProject($user, $item, $params)
21 { 21 {
  22 + $project = \common\models\Project::findOne($params['model_id']);
  23 + if($project->user_id == $user) {
  24 + return false;
  25 + }
22 $comment = \common\modules\comment\models\CommentProject::find() 26 $comment = \common\modules\comment\models\CommentProject::find()
23 ->where([ 'model' => $params[ 'model' ], 27 ->where([ 'model' => $params[ 'model' ],
24 'model_id' => $params[ 'model_id' ], 28 'model_id' => $params[ 'model_id' ],
frontend/controllers/PerformerController.php
@@ -60,6 +60,8 @@ @@ -60,6 +60,8 @@
60 $user = User::find() 60 $user = User::find()
61 ->where([ 'id' => $performer_id ]) 61 ->where([ 'id' => $performer_id ])
62 ->with('jobs') 62 ->with('jobs')
  63 + ->with('comments')
  64 + ->with('comments.rating')
63 ->one(); 65 ->one();
64 66
65 if(!$user instanceof User) { 67 if(!$user instanceof User) {
frontend/controllers/ProjectsController.php
1 <?php 1 <?php
2 namespace frontend\controllers; 2 namespace frontend\controllers;
3 3
  4 + use common\models\ProjectSearch;
  5 + use common\models\User;
  6 + use common\modules\comment\models\CommentProject;
  7 + use common\modules\comment\models\CommentProjectSearch;
4 use yii\filters\AccessControl; 8 use yii\filters\AccessControl;
5 use yii\web\Controller; 9 use yii\web\Controller;
6 10
7 class ProjectsController extends Controller 11 class ProjectsController extends Controller
8 { 12 {
  13 +
9 public function behaviors() 14 public function behaviors()
10 { 15 {
11 return [ 16 return [
@@ -24,6 +29,21 @@ @@ -24,6 +29,21 @@
24 29
25 public function actionIndex() 30 public function actionIndex()
26 { 31 {
27 - return $this->render('projects'); 32 + $model = new CommentProjectSearch([ 'scenario' => CommentProjectSearch::SCENARIO_SEARCH ]);
  33 + $groups = CommentProject::find()
  34 + ->select([
  35 + 'COUNT(*)',
  36 + 'state',
  37 + ])
  38 + ->asArray()
  39 + ->indexBy('state')
  40 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  41 + ->groupBy([ 'state' ])
  42 + ->column();
  43 + $comments = $model->search(\Yii::$app->request->queryParams);
  44 + return $this->render('projects', [
  45 + 'comments' => $comments,
  46 + 'groups' => $groups,
  47 + ]);
28 } 48 }
29 } 49 }
30 \ No newline at end of file 50 \ No newline at end of file
frontend/controllers/TenderController.php
@@ -51,6 +51,16 @@ class TenderController extends Controller @@ -51,6 +51,16 @@ class TenderController extends Controller
51 'change-state' => ['post'], 51 'change-state' => ['post'],
52 ], 52 ],
53 ], 53 ],
  54 + 'access' => [
  55 + 'class' => AccessControl::className(),
  56 + 'rules' => [
  57 + [
  58 + 'actions' => ['change-state'],
  59 + 'allow' => true,
  60 + 'roles' => [ '@' ],
  61 + ],
  62 + ],
  63 + ],
54 ]; 64 ];
55 } 65 }
56 /** 66 /**
@@ -102,10 +112,18 @@ class TenderController extends Controller @@ -102,10 +112,18 @@ class TenderController extends Controller
102 if(empty($comment)) { 112 if(empty($comment)) {
103 return ['error' => 'Данного предложения не существует']; 113 return ['error' => 'Данного предложения не существует'];
104 } 114 }
105 - if($comment->state == $comment::STATE_TRASH) { 115 + if($comment->user_id == \Yii::$app->user->getId()) {
  116 + $comment->scenario = $comment::SCENARIO_OWNER;
  117 + } else {
  118 + $comment->scenario = $comment::SCENARIO_STATE;
  119 + }
  120 + if($comment->state == $comment::STATE_TRASH && $comment->scenario == $comment::SCENARIO_STATE) {
106 return ['error' => 'Исполнитель отменил данное предложение']; 121 return ['error' => 'Исполнитель отменил данное предложение'];
107 } 122 }
108 - $comment->scenario = $comment::SCENARIO_STATE; 123 + if($comment->state == $comment::STATE_DENY && $comment->scenario == $comment::SCENARIO_OWNER) {
  124 + return ['error' => 'Заказчик отменил Ваше предложение'];
  125 + }
  126 +
109 $comment->state = $state; 127 $comment->state = $state;
110 if(!$comment->validate()) { 128 if(!$comment->validate()) {
111 return ['error' => 'Недопустимое значение state']; 129 return ['error' => 'Недопустимое значение state'];
frontend/views/layouts/main.php
@@ -154,7 +154,7 @@ AppAsset::register($this); @@ -154,7 +154,7 @@ AppAsset::register($this);
154 'items' => [ 154 'items' => [
155 [ 155 [
156 'url' => ['/projects'], 156 'url' => ['/projects'],
157 - 'template' => '<a href="{url}" class="main-menu-icons-home"><span>99+</span></a>', 157 + 'template' => '<a href="{url}" class="main-menu-icons-home"><span>'.count(\Yii::$app->user->identity->commentProjects).'</span></a>',
158 ], 158 ],
159 [ 159 [
160 'url' => ['chat/list'], 160 'url' => ['chat/list'],
frontend/views/layouts/performer.php
@@ -25,7 +25,21 @@ @@ -25,7 +25,21 @@
25 'chat/message', 25 'chat/message',
26 'user_id' => $this->params[ 'user' ]->id, 26 'user_id' => $this->params[ 'user' ]->id,
27 ]), [ 'class' => 'blog-buttons-write' ]) ?> 27 ]), [ 'class' => 'blog-buttons-write' ]) ?>
28 - <a class="blog-buttons-add-favorite" href="#">Добавить<br>в закладки</a> 28 + <?php
  29 + if(!empty( \Yii::$app->user->identity )) {
  30 + if($this->params[ 'user' ]->isBookmarked) {
  31 + echo Html::a('Убрать из закладок', [ '#' ], [
  32 + 'class' => 'get-list artbox_bookmark_remove_performer',
  33 + 'data-id' => $this->params[ 'user' ]->id,
  34 + ]);
  35 + } else {
  36 + echo Html::a('Добавить в закладки', [ '#' ], [
  37 + 'class' => 'get-list artbox_bookmark_add_performer',
  38 + 'data-id' => $this->params[ 'user' ]->id,
  39 + ]);
  40 + }
  41 + }
  42 + ?>
29 </div> 43 </div>
30 </div> 44 </div>
31 </div> 45 </div>
@@ -160,7 +174,7 @@ @@ -160,7 +174,7 @@
160 <li><img src="/images/sidebar-ico/ico_money.png" alt=""/> 174 <li><img src="/images/sidebar-ico/ico_money.png" alt=""/>
161 <div class="sidebarvievstxt"> 175 <div class="sidebarvievstxt">
162 <span class="sidebar-views-txt">Стоимость работ:<br/></span> 176 <span class="sidebar-views-txt">Стоимость работ:<br/></span>
163 - <?= $this->params[ 'user' ]->userInfo->salary. ' ' . $this->params['user']->userInfo->currency->label ?> 177 + <?= $this->params[ 'user' ]->userInfo->salary . ' ' . $this->params[ 'user' ]->userInfo->currency->label ?>
164 </div> 178 </div>
165 </li> 179 </li>
166 <li><img src="/images/sidebar-ico/ico-13.png" alt=""/> 180 <li><img src="/images/sidebar-ico/ico-13.png" alt=""/>
frontend/views/performer/common.php
@@ -97,63 +97,37 @@ @@ -97,63 +97,37 @@
97 </ul> 97 </ul>
98 </div> 98 </div>
99 <div class="profile-comments style"> 99 <div class="profile-comments style">
100 - <div class="company-performer-comm-title style">Отзывов: 54</div> 100 + <div class="company-performer-comm-title style">Отзывов: <?= count($user->comments) ?></div>
101 <div class="company-performer-comments-wr style"> 101 <div class="company-performer-comments-wr style">
102 - <div class="company-performer-comments-bl">  
103 - <div class="rating">  
104 - <!--оценка-->  
105 - <input type="hidden" class="val" value="3"/>  
106 - <!--количество голосов-->  
107 - <input type="hidden" class="votes" value="12"/>  
108 - </div>  
109 -  
110 - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>  
111 - <div class="company-performer-comments-txt">sfds</div>  
112 - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>  
113 - </div>  
114 -  
115 - <div class="company-performer-comments-bl">  
116 - <div class="rating">  
117 - <!--оценка-->  
118 - <input type="hidden" class="val" value="2"/>  
119 - <!--количество голосов-->  
120 - <input type="hidden" class="votes" value="12"/>  
121 - </div>  
122 -  
123 - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>  
124 - <div class="company-performer-comments-txt">2Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.</div>  
125 - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>  
126 - </div>  
127 -  
128 - <div class="company-performer-comments-bl">  
129 - <div class="rating">  
130 - <!--оценка-->  
131 - <input type="hidden" class="val" value="4"/>  
132 - <!--количество голосов-->  
133 - <input type="hidden" class="votes" value="12"/>  
134 - </div>  
135 -  
136 - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>  
137 - <div class="company-performer-comments-txt">3Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения. Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.  
138 - </div>  
139 - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>  
140 - </div>  
141 -  
142 - <div class="company-performer-comments-bl">  
143 - <div class="rating">  
144 - <!--оценка-->  
145 - <input type="hidden" class="val" value="5"/>  
146 - <!--количество голосов-->  
147 - <input type="hidden" class="votes" value="12"/>  
148 - </div>  
149 -  
150 - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>  
151 - <div class="company-performer-comments-txt">4Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.  
152 - </div>  
153 - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>  
154 - </div> 102 + <?php
  103 + $count = ( count($user->comments) > 4 ) ? 4 : count($user->comments);
  104 + for($i = 0; $i < $count; $i++) {
  105 + ?>
  106 + <div class="company-performer-comments-bl">
  107 + <?php
  108 + if(!empty( $user->comments[ $i ]->rating )) {
  109 + ?>
  110 + <div class="rating">
  111 + <!--оценка-->
  112 + <input type="hidden" class="val" value="<?= $user->comments[ $i ]->rating->value ?>"/>
  113 + <!--количество голосов-->
  114 + <input type="hidden" class="votes" value="1"/>
  115 + </div>
  116 + <?php
  117 + }
  118 + ?>
  119 + <div class="company-performer-comments-autor">Отзыв от: <?= $user->comments[$i]->user->name ?></div>
  120 + <div class="company-performer-comments-txt"><?= $user->comments[$i]->text ?></div>
  121 + <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>
  122 + </div>
  123 + <?php
  124 + }
  125 + ?>
155 </div> 126 </div>
156 - <div class="company-performer-comm-see-all-butt style"><a href="#">Читать все отзывы</a> 127 + <div class="company-performer-comm-see-all-butt style">
  128 + <?php
  129 + echo Html::a('Читать все отзывы', ['performer/review', 'performer_id' => $user->id]);
  130 + ?>
157 </div> 131 </div>
158 </div> 132 </div>
159 </div> 133 </div>
frontend/views/projects/_projects_list_view.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var CommentProject $model
  4 + * @var int $key
  5 + * @var integer $index
  6 + * @var ListView $widget
  7 + */
  8 + use common\models\Option;
  9 + use common\modules\comment\models\CommentProject;
  10 + use yii\data\ActiveDataProvider;
  11 + use yii\helpers\Html;
  12 + use yii\widgets\ListView;
  13 +
  14 +?>
  15 +<div class="left-left-proektant-cabinet">
  16 + <?php
  17 + echo Html::a($model->project->name, ['tender/view', 'tender_id' => $model->project->project_id], ['class' => 'srch-prof-title']);
  18 + ?>
  19 + <div class="srch-prof-budget">
  20 + <span></span>
  21 + Бюджет:
  22 + <?php
  23 + if($model->project->contractual) {
  24 + echo 'Договорной';
  25 + } else {
  26 + echo $model->project->budget . ' ' . $model->project->budgetCurrency->label;
  27 + }
  28 + ?>
  29 + </div>
  30 +
  31 + <div class="srch-prof-text">
  32 + <?= $model->project->description ?>
  33 + </div>
  34 + <div class="srch-prof-params-wr">
  35 + <div class="srch-prof-params srch-prof-params-city">
  36 + <img src="/images/ico-city.png" alt=""/><span><?= $model->project->city ?></span>
  37 + </div>
  38 + <div class="srch-prof-params srch-prof-params-clock">
  39 + <img src="/images/ico-clock.png" alt=""/><span><?= \Yii::$app->formatter->asDate(time($model->project->description), 'php:d.m.Y') ?></span>
  40 + </div>
  41 + <div class="srch-prof-params srch-prof-params-comm">
  42 + <img src="/images/ico-comm.png" alt=""/><span><?= count($model->project->comments) ?> предложения</span>
  43 + </div>
  44 + </div>
  45 +</div>
  46 +
  47 +<div class="right-proektant-cabinet">
  48 + <div class="right-proektant-cabinet-candidate">
  49 + <img src="/images/cabinet/ico-<?= $model->state ?>.png" alt=""/>
  50 + <span>
  51 + <?php
  52 + switch($model->state) {
  53 + case 1:
  54 + echo 'Заказчик еще не рассмотрел Ваше предложение';
  55 + break;
  56 + case 2:
  57 + echo 'Ваша кандидатура на рассмотрении';
  58 + break;
  59 + case 3:
  60 + echo 'Вы назначены исполнителем';
  61 + break;
  62 + case 4:
  63 + echo 'Заказчик отказал Вашему предложению';
  64 + break;
  65 + case 5:
  66 + echo 'Вы отказались от данного предложения';
  67 + break;
  68 + }
  69 + ?>
  70 + </span>
  71 + </div>
  72 + <div style="clear:both"></div>
  73 + <div class="right-proektant-cabinet-message-new">
  74 + <img src="/images/cabinet/ico-6.png" alt=""/>
  75 + <?php
  76 + echo Html::a(count(\Yii::$app->user->identity->getChat($model->project->user_id)
  77 + ->one()->messages) . ' сообщения', [
  78 + 'chat/message',
  79 + 'user_id' => $model->project->user_id,
  80 + ]);
  81 + if($model->state == 5) {
  82 + echo Html::a('Отменить', [ '#' ], [
  83 + 'data-project-id' => $model->project->project_id,
  84 + 'data-comment-id' => $model->comment_id,
  85 + 'class' => 'artbox_project_make_new',
  86 + ]);
  87 + } else {
  88 + echo Html::a('Отказаться', [ '#' ], [
  89 + 'data-project-id' => $model->project->project_id,
  90 + 'data-comment-id' => $model->comment_id,
  91 + 'class' => 'artbox_project_make_trash',
  92 + ]);
  93 + }
  94 + ?>
  95 + </div>
  96 +</div>
0 \ No newline at end of file 97 \ No newline at end of file
frontend/views/projects/projects.php
1 <?php 1 <?php
  2 + /**
  3 + * @var int[] $groups
  4 + * @var ActiveDataProvider $comments
  5 + */
2 use common\models\Option; 6 use common\models\Option;
  7 + use yii\data\ActiveDataProvider;
  8 + use yii\helpers\Html;
  9 + use yii\widgets\ListView;
3 10
4 $this->title = 'Мой профиль'; 11 $this->title = 'Мой профиль';
5 -$this->params['breadcrumbs'][] = $this->title; 12 + $this->params[ 'breadcrumbs' ][] = $this->title;
6 ?> 13 ?>
7 <div class="section-box content"> 14 <div class="section-box content">
8 <div class="section-box-22"> 15 <div class="section-box-22">
@@ -14,29 +21,71 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -14,29 +21,71 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
14 <ul class="cabinet-list style"> 21 <ul class="cabinet-list style">
15 <li> 22 <li>
16 <img src="/images/cabinet/ico-1.png" alt=""/> 23 <img src="/images/cabinet/ico-1.png" alt=""/>
17 - <span>Не определен </span>17 24 + <span>
  25 + <?= Html::a('Не определен', [
  26 + 'projects/index',
  27 + 'CommentProjectSearch[state]' => 1,
  28 + ]) ?>
  29 + </span><?= ( !empty( $groups[ 1 ] ) ) ? $groups[ 1 ] : 0 ?>
18 </li> 30 </li>
19 <li> 31 <li>
20 <img src="/images/cabinet/ico-2.png" alt=""/> 32 <img src="/images/cabinet/ico-2.png" alt=""/>
21 - <span>Кандидат </span>0 33 + <span>
  34 + <?= Html::a('Кандидат', [
  35 + 'projects/index',
  36 + 'CommentProjectSearch[state]' => 2,
  37 + ]) ?>
  38 + </span><?= ( !empty( $groups[ 2 ] ) ) ? $groups[ 2 ] : 0 ?>
22 </li> 39 </li>
23 <li> 40 <li>
24 <img src="/images/cabinet/ico-3.png" alt=""/> 41 <img src="/images/cabinet/ico-3.png" alt=""/>
25 - <span>Исполнитель </span>0 42 + <span>
  43 + <?= Html::a('Исполнитель', [
  44 + 'projects/index',
  45 + 'CommentProjectSearch[state]' => 3,
  46 + ]) ?>
  47 + </span><?= ( !empty( $groups[ 3 ] ) ) ? $groups[ 3 ] : 0 ?>
26 </li> 48 </li>
27 <li> 49 <li>
28 <img src="/images/cabinet/ico-4.png" alt=""/> 50 <img src="/images/cabinet/ico-4.png" alt=""/>
29 - <span>Отказали </span>0 51 + <span>
  52 + <?= Html::a('Отказали', [
  53 + 'projects/index',
  54 + 'CommentProjectSearch[state]' => 4,
  55 + ]) ?>
  56 + </span><?= ( !empty( $groups[ 4 ] ) ) ? $groups[ 4 ] : 0 ?>
30 </li> 57 </li>
31 <li> 58 <li>
32 - <span>Корзина </span>7 59 + <span>
  60 + <?= Html::a('Корзина', [
  61 + 'projects/index',
  62 + 'CommentProjectSearch[state]' => 5,
  63 + ]) ?>
  64 + </span><?= ( !empty( $groups[ 5 ] ) ) ? $groups[ 5 ] : 0 ?>
33 </li> 65 </li>
34 </ul> 66 </ul>
  67 + <?php
  68 + echo ListView::widget([
  69 + 'dataProvider' => $comments,
  70 + 'options' => [
  71 + 'class' => 'style',
  72 + ],
  73 + 'itemOptions' => [
  74 + 'class' => 'search-profile-blocks',
  75 + ],
  76 + 'itemView' => '_projects_list_view',
  77 + ]);
  78 + ?>
  79 + <?php
  80 + /*
  81 + ?>
35 <div class="style"> 82 <div class="style">
36 <div class="search-profile-blocks"> 83 <div class="search-profile-blocks">
37 <div class="left-left-proektant-cabinet"> 84 <div class="left-left-proektant-cabinet">
38 <a href="" class="srch-prof-title">Создание проекта дома</a> 85 <a href="" class="srch-prof-title">Создание проекта дома</a>
39 - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> 86 + <div class="srch-prof-budget">
  87 + <span></span>Бюджет: 20 000 грн (Договорной)
  88 + </div>
40 89
41 <div class="srch-prof-text"> 90 <div class="srch-prof-text">
42 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> 91 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
@@ -72,7 +121,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -72,7 +121,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
72 <div class="search-profile-blocks"> 121 <div class="search-profile-blocks">
73 <div class="left-left-proektant-cabinet"> 122 <div class="left-left-proektant-cabinet">
74 <a href="" class="srch-prof-title">Создание проекта дома</a> 123 <a href="" class="srch-prof-title">Создание проекта дома</a>
75 - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> 124 + <div class="srch-prof-budget">
  125 + <span></span>Бюджет: 20 000 грн (Договорной)
  126 + </div>
76 127
77 <div class="srch-prof-text"> 128 <div class="srch-prof-text">
78 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> 129 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
@@ -108,7 +159,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -108,7 +159,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
108 <div class="search-profile-blocks"> 159 <div class="search-profile-blocks">
109 <div class="left-left-proektant-cabinet"> 160 <div class="left-left-proektant-cabinet">
110 <a href="" class="srch-prof-title">Создание проекта дома</a> 161 <a href="" class="srch-prof-title">Создание проекта дома</a>
111 - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> 162 + <div class="srch-prof-budget">
  163 + <span></span>Бюджет: 20 000 грн (Договорной)
  164 + </div>
112 165
113 <div class="srch-prof-text"> 166 <div class="srch-prof-text">
114 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> 167 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
@@ -144,7 +197,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -144,7 +197,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
144 <div class="search-profile-blocks"> 197 <div class="search-profile-blocks">
145 <div class="left-left-proektant-cabinet"> 198 <div class="left-left-proektant-cabinet">
146 <a href="" class="srch-prof-title">Создание проекта дома</a> 199 <a href="" class="srch-prof-title">Создание проекта дома</a>
147 - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> 200 + <div class="srch-prof-budget">
  201 + <span></span>Бюджет: 20 000 грн (Договорной)
  202 + </div>
148 203
149 <div class="srch-prof-text"> 204 <div class="srch-prof-text">
150 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> 205 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
@@ -180,7 +235,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -180,7 +235,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
180 <div class="search-profile-blocks"> 235 <div class="search-profile-blocks">
181 <div class="left-left-proektant-cabinet"> 236 <div class="left-left-proektant-cabinet">
182 <a href="" class="srch-prof-title">Создание проекта дома</a> 237 <a href="" class="srch-prof-title">Создание проекта дома</a>
183 - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div> 238 + <div class="srch-prof-budget">
  239 + <span></span>Бюджет: 20 000 грн (Договорной)
  240 + </div>
184 241
185 <div class="srch-prof-text"> 242 <div class="srch-prof-text">
186 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> 243 <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
@@ -226,6 +283,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -226,6 +283,9 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
226 <a href="#" class="navi-buttons-yet">Еще 24 проекта</a> 283 <a href="#" class="navi-buttons-yet">Еще 24 проекта</a>
227 </div> 284 </div>
228 </div> 285 </div>
  286 + <?php
  287 + */
  288 + ?>
229 289
230 290
231 </div> 291 </div>
@@ -236,6 +296,5 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -236,6 +296,5 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
236 <div> 296 <div>
237 297
238 298
239 -  
240 </div> 299 </div>
241 </div> 300 </div>
242 \ No newline at end of file 301 \ No newline at end of file
frontend/web/js/forms.js
@@ -461,6 +461,25 @@ $(document).ready( @@ -461,6 +461,25 @@ $(document).ready(
461 } 461 }
462 ); 462 );
463 }); 463 });
  464 + $(document).on('click', '.artbox_project_make_trash', function(e) {
  465 + e.preventDefault();
  466 + var project_id = $(this).data('project-id');
  467 + var comment_id = $(this).data('comment-id');
  468 + var state = 5;
  469 + var link = $(this);
  470 + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) {
  471 + if(data.error) {
  472 + alert(data.error);
  473 + } else {
  474 + alert(data.message);
  475 + }
  476 + }, 'json').fail(
  477 + function()
  478 + {
  479 + alert(txtErrorModal);
  480 + }
  481 + );
  482 + });
464 483
465 484
466 //offer 485 //offer