Commit 32ed90fdd82ca0b7eedc0192654ef26b46126b16
1 parent
38a6e1dd
test
Showing
14 changed files
with
412 additions
and
77 deletions
Show diff stats
common/models/Project.php
... | ... | @@ -30,6 +30,7 @@ |
30 | 30 | * @property ProjectPayment[] $projectPayments |
31 | 31 | * @property ProjectSpecialization[] $projectSpecializations |
32 | 32 | * @property Specialization[] $specializations |
33 | + * @property Currency $budgetCurrency | |
33 | 34 | */ |
34 | 35 | class Project extends \yii\db\ActiveRecord |
35 | 36 | { | ... | ... |
common/models/User.php
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | namespace common\models; |
3 | 3 | |
4 | 4 | use common\modules\comment\models\Comment; |
5 | + use common\modules\comment\models\CommentProject; | |
5 | 6 | use common\modules\comment\models\Rating; |
6 | 7 | use Yii; |
7 | 8 | use yii\base\InvalidConfigException; |
... | ... | @@ -521,7 +522,8 @@ |
521 | 522 | */ |
522 | 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 | 807 | ]) |
806 | 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 | 3 | |
4 | 4 | use common\models\Currency; |
5 | 5 | use common\models\File; |
6 | + use common\models\Project; | |
6 | 7 | use common\models\User; |
7 | 8 | use yii\db\ActiveQuery; |
8 | 9 | use yii\db\ActiveRecord; |
... | ... | @@ -27,6 +28,7 @@ |
27 | 28 | * @property int $term_to |
28 | 29 | * @property int $state |
29 | 30 | * @property Currency $currency |
31 | + * @property Project $project | |
30 | 32 | * @package common\modules\comment\models |
31 | 33 | */ |
32 | 34 | class CommentProject extends \yii\db\ActiveRecord |
... | ... | @@ -122,7 +124,7 @@ |
122 | 124 | 'integer', |
123 | 125 | 'max' => 4, |
124 | 126 | 'min' => 1, |
125 | - 'on' => self::SCENARIO_STATE, | |
127 | + 'on' => self::SCENARIO_STATE, | |
126 | 128 | ], |
127 | 129 | [ |
128 | 130 | [ 'state' ], |
... | ... | @@ -137,8 +139,11 @@ |
137 | 139 | [ |
138 | 140 | [ 'state' ], |
139 | 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 | 165 | self::SCENARIO_STATE => [ |
161 | 166 | 'state', |
162 | 167 | ], |
168 | + self::SCENARIO_OWNER => [ | |
169 | + 'state', | |
170 | + ], | |
163 | 171 | ]; |
164 | 172 | } |
165 | 173 | |
... | ... | @@ -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 | 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 | 19 | |
20 | 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 | 26 | $comment = \common\modules\comment\models\CommentProject::find() |
23 | 27 | ->where([ 'model' => $params[ 'model' ], |
24 | 28 | 'model_id' => $params[ 'model_id' ], | ... | ... |
frontend/controllers/PerformerController.php
frontend/controllers/ProjectsController.php
1 | 1 | <?php |
2 | 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 | 8 | use yii\filters\AccessControl; |
5 | 9 | use yii\web\Controller; |
6 | 10 | |
7 | 11 | class ProjectsController extends Controller |
8 | 12 | { |
13 | + | |
9 | 14 | public function behaviors() |
10 | 15 | { |
11 | 16 | return [ |
... | ... | @@ -24,6 +29,21 @@ |
24 | 29 | |
25 | 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 | 50 | \ No newline at end of file | ... | ... |
frontend/controllers/TenderController.php
... | ... | @@ -51,6 +51,16 @@ class TenderController extends Controller |
51 | 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 | 112 | if(empty($comment)) { |
103 | 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 | 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 | 127 | $comment->state = $state; |
110 | 128 | if(!$comment->validate()) { |
111 | 129 | return ['error' => 'Недопустимое значение state']; | ... | ... |
frontend/views/layouts/main.php
... | ... | @@ -154,7 +154,7 @@ AppAsset::register($this); |
154 | 154 | 'items' => [ |
155 | 155 | [ |
156 | 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 | 160 | 'url' => ['chat/list'], | ... | ... |
frontend/views/layouts/performer.php
... | ... | @@ -25,7 +25,21 @@ |
25 | 25 | 'chat/message', |
26 | 26 | 'user_id' => $this->params[ 'user' ]->id, |
27 | 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 | 43 | </div> |
30 | 44 | </div> |
31 | 45 | </div> |
... | ... | @@ -160,7 +174,7 @@ |
160 | 174 | <li><img src="/images/sidebar-ico/ico_money.png" alt=""/> |
161 | 175 | <div class="sidebarvievstxt"> |
162 | 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 | 178 | </div> |
165 | 179 | </li> |
166 | 180 | <li><img src="/images/sidebar-ico/ico-13.png" alt=""/> | ... | ... |
frontend/views/performer/common.php
... | ... | @@ -97,63 +97,37 @@ |
97 | 97 | </ul> |
98 | 98 | </div> |
99 | 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 | 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 | 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 | 131 | </div> |
158 | 132 | </div> |
159 | 133 | </div> | ... | ... |
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 | 97 | \ No newline at end of file | ... | ... |
frontend/views/projects/projects.php
1 | 1 | <?php |
2 | + /** | |
3 | + * @var int[] $groups | |
4 | + * @var ActiveDataProvider $comments | |
5 | + */ | |
2 | 6 | use common\models\Option; |
7 | + use yii\data\ActiveDataProvider; | |
8 | + use yii\helpers\Html; | |
9 | + use yii\widgets\ListView; | |
3 | 10 | |
4 | 11 | $this->title = 'Мой профиль'; |
5 | -$this->params['breadcrumbs'][] = $this->title; | |
12 | + $this->params[ 'breadcrumbs' ][] = $this->title; | |
6 | 13 | ?> |
7 | 14 | <div class="section-box content"> |
8 | 15 | <div class="section-box-22"> |
... | ... | @@ -14,29 +21,71 @@ $this->params['breadcrumbs'][] = $this->title; |
14 | 21 | <ul class="cabinet-list style"> |
15 | 22 | <li> |
16 | 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 | 30 | </li> |
19 | 31 | <li> |
20 | 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 | 39 | </li> |
23 | 40 | <li> |
24 | 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 | 48 | </li> |
27 | 49 | <li> |
28 | 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 | 57 | </li> |
31 | 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 | 65 | </li> |
34 | 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 | 82 | <div class="style"> |
36 | 83 | <div class="search-profile-blocks"> |
37 | 84 | <div class="left-left-proektant-cabinet"> |
38 | 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 | 90 | <div class="srch-prof-text"> |
42 | 91 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
... | ... | @@ -72,7 +121,9 @@ $this->params['breadcrumbs'][] = $this->title; |
72 | 121 | <div class="search-profile-blocks"> |
73 | 122 | <div class="left-left-proektant-cabinet"> |
74 | 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 | 128 | <div class="srch-prof-text"> |
78 | 129 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
... | ... | @@ -108,7 +159,9 @@ $this->params['breadcrumbs'][] = $this->title; |
108 | 159 | <div class="search-profile-blocks"> |
109 | 160 | <div class="left-left-proektant-cabinet"> |
110 | 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 | 166 | <div class="srch-prof-text"> |
114 | 167 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
... | ... | @@ -144,7 +197,9 @@ $this->params['breadcrumbs'][] = $this->title; |
144 | 197 | <div class="search-profile-blocks"> |
145 | 198 | <div class="left-left-proektant-cabinet"> |
146 | 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 | 204 | <div class="srch-prof-text"> |
150 | 205 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
... | ... | @@ -180,7 +235,9 @@ $this->params['breadcrumbs'][] = $this->title; |
180 | 235 | <div class="search-profile-blocks"> |
181 | 236 | <div class="left-left-proektant-cabinet"> |
182 | 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 | 242 | <div class="srch-prof-text"> |
186 | 243 | <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p> |
... | ... | @@ -226,6 +283,9 @@ $this->params['breadcrumbs'][] = $this->title; |
226 | 283 | <a href="#" class="navi-buttons-yet">Еще 24 проекта</a> |
227 | 284 | </div> |
228 | 285 | </div> |
286 | + <?php | |
287 | + */ | |
288 | + ?> | |
229 | 289 | |
230 | 290 | |
231 | 291 | </div> |
... | ... | @@ -236,6 +296,5 @@ $this->params['breadcrumbs'][] = $this->title; |
236 | 296 | <div> |
237 | 297 | |
238 | 298 | |
239 | - | |
240 | 299 | </div> |
241 | 300 | </div> |
242 | 301 | \ No newline at end of file | ... | ... |
frontend/web/js/forms.js
... | ... | @@ -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 | 485 | //offer | ... | ... |