Commit 32ed90fdd82ca0b7eedc0192654ef26b46126b16

Authored by Yarik
1 parent 38a6e1dd

test

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
... ... @@ -60,6 +60,8 @@
60 60 $user = User::find()
61 61 ->where([ 'id' => $performer_id ])
62 62 ->with('jobs')
  63 + ->with('comments')
  64 + ->with('comments.rating')
63 65 ->one();
64 66  
65 67 if(!$user instanceof User) {
... ...
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>
... ...
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 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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;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
... ...