Commit 38a6e1ddae8bc32dd9b7a2559aace1ae1546af7a

Authored by Yarik
1 parent 68d14cf6

test

common/models/Job.php
1 <?php 1 <?php
2 2
3 -namespace common\models; 3 + namespace common\models;
4 4
5 -use Yii; 5 + use Yii;
6 6
7 -/**  
8 - * This is the model class for table "job".  
9 - *  
10 - * @property integer $job_id  
11 - * @property string $name  
12 - * @property string $link  
13 - * @property string $date_start  
14 - * @property string $date_end  
15 - * @property string $position  
16 - * @property integer $user_id  
17 - * @property integer $total_count  
18 - * @property integer $complete_count  
19 - * @property integer $current  
20 - */  
21 -class Job extends \yii\db\ActiveRecord  
22 -{  
23 /** 7 /**
24 - * @inheritdoc 8 + * This is the model class for table "job".
  9 + * @property integer $job_id
  10 + * @property string $name
  11 + * @property string $link
  12 + * @property string $date_start
  13 + * @property string $date_end
  14 + * @property string $position
  15 + * @property integer $user_id
  16 + * @property integer $total_count
  17 + * @property integer $complete_count
  18 + * @property integer $current
25 */ 19 */
26 - public static function tableName() 20 + class Job extends \yii\db\ActiveRecord
27 { 21 {
28 - return 'job';  
29 - }  
30 -  
31 22
32 - /**  
33 - * @inheritdoc  
34 - */  
35 - public function behaviors()  
36 - {  
37 - return [  
38 - 'slug' => [  
39 - 'class' => 'common\behaviors\Slug',  
40 - 'in_attribute' => 'name',  
41 - 'out_attribute' => 'link',  
42 - 'translit' => true  
43 - ]  
44 - ];  
45 - } 23 + /**
  24 + * @inheritdoc
  25 + */
  26 + public static function tableName()
  27 + {
  28 + return 'job';
  29 + }
46 30
47 - public function beforeSave($insert)  
48 - {  
49 - $this->date_start = \Yii::$app->formatter->asDatetime($this->date_start, 'Y-MM-d HH:mm:ss'); 31 + /**
  32 + * @inheritdoc
  33 + */
  34 + public function behaviors()
  35 + {
  36 + return [
50 37
51 - if($this->date_end) {  
52 - $this->date_end = \Yii::$app->formatter->asDatetime($this->date_end, 'Y-MM-d HH:mm:ss'); 38 + ];
53 } 39 }
54 40
  41 + public function beforeSave($insert)
  42 + {
  43 + $this->date_start = \Yii::$app->formatter->asDatetime($this->date_start, 'Y-MM-d HH:mm:ss');
55 44
56 - return parent::beforeSave($insert); // TODO: Change the autogenerated stub  
57 - }  
58 -  
59 - /**  
60 - * @inheritdoc  
61 - */  
62 - public function rules()  
63 - {  
64 - return [  
65 - [['name'], 'required'],  
66 - [['date_start', 'date_end'], 'safe'],  
67 - [['user_id', 'total_count', 'complete_count', 'current'], 'integer'],  
68 - [['name', 'link', 'position'], 'string', 'max' => 255]  
69 - ];  
70 - }  
71 - 45 + if($this->date_end) {
  46 + $this->date_end = \Yii::$app->formatter->asDatetime($this->date_end, 'Y-MM-d HH:mm:ss');
  47 + }
72 48
  49 + return parent::beforeSave($insert); // TODO: Change the autogenerated stub
  50 + }
73 51
74 - public function getExpTime()  
75 - {  
76 - if($this->date_end && $this->date_start){  
77 - $date = new \DateTime(date('Y-m-d H:i:s', $this->date_start));  
78 - return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime(date('Y-m-d H:i:s', $this->date_end))));  
79 - } elseif($this->date_start) {  
80 - $now = new \DateTime();  
81 - $date = new \DateTime(date('Y-m-d H:i:s', strtotime($this->date_start)));  
82 - return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime()));  
83 - } else {  
84 - return 'ะฝะตะธะทะฒะตัั‚ะฝะฐ ะดะฐั‚ะฐ ะฝะฐั‡ะฐะปะฐ'; 52 + /**
  53 + * @inheritdoc
  54 + */
  55 + public function rules()
  56 + {
  57 + return [
  58 + [
  59 + [ 'name' ],
  60 + 'required',
  61 + ],
  62 + [
  63 + [
  64 + 'date_start',
  65 + 'date_end',
  66 + ],
  67 + 'safe',
  68 + ],
  69 + [
  70 + [
  71 + 'user_id',
  72 + 'total_count',
  73 + 'complete_count',
  74 + 'current',
  75 + ],
  76 + 'integer',
  77 + ],
  78 + [
  79 + [
  80 + 'name',
  81 + 'link',
  82 + 'position',
  83 + ],
  84 + 'string',
  85 + 'max' => 255,
  86 + ],
  87 + ];
85 } 88 }
86 89
87 - } 90 + public function getExpTime()
  91 + {
  92 + if($this->date_end && $this->date_start) {
  93 + $date = new \DateTime(date('Y-m-d H:i:s', $this->date_start));
  94 + return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime(date('Y-m-d H:i:s', $this->date_end))));
  95 + } elseif($this->date_start) {
  96 + $now = new \DateTime();
  97 + $date = new \DateTime(date('Y-m-d H:i:s', strtotime($this->date_start)));
  98 + return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime()));
  99 + } else {
  100 + return 'ะฝะตะธะทะฒะตัั‚ะฝะฐ ะดะฐั‚ะฐ ะฝะฐั‡ะฐะปะฐ';
  101 + }
88 102
  103 + }
89 104
90 - /**  
91 - * @inheritdoc  
92 - */  
93 - public function attributeLabels()  
94 - {  
95 - return [  
96 - 'job_id' => Yii::t('app', 'Job ID'),  
97 - 'name' => Yii::t('app', 'Name'),  
98 - 'link' => Yii::t('app', 'Link'),  
99 - 'date_start' => Yii::t('app', 'Date Start'),  
100 - 'date_end' => Yii::t('app', 'Date End'),  
101 - 'position' => Yii::t('app', 'Position'),  
102 - 'user_id' => Yii::t('app', 'User ID'),  
103 - 'total_count' => Yii::t('app', 'Total Count'),  
104 - 'complete_count' => Yii::t('app', 'Complete Count'),  
105 - 'current' => Yii::t('app', 'Current'),  
106 - ]; 105 + /**
  106 + * @inheritdoc
  107 + */
  108 + public function attributeLabels()
  109 + {
  110 + return [
  111 + 'job_id' => Yii::t('app', 'Job ID'),
  112 + 'name' => Yii::t('app', 'Name'),
  113 + 'link' => Yii::t('app', 'Link'),
  114 + 'date_start' => Yii::t('app', 'Date Start'),
  115 + 'date_end' => Yii::t('app', 'Date End'),
  116 + 'position' => Yii::t('app', 'Position'),
  117 + 'user_id' => Yii::t('app', 'User ID'),
  118 + 'total_count' => Yii::t('app', 'Total Count'),
  119 + 'complete_count' => Yii::t('app', 'Complete Count'),
  120 + 'current' => Yii::t('app', 'Current'),
  121 + ];
  122 + }
107 } 123 }
108 -}  
common/models/User.php
@@ -133,6 +133,14 @@ @@ -133,6 +133,14 @@
133 'default', 133 'default',
134 'value' => 1, 134 'value' => 1,
135 ], 135 ],
  136 + [
  137 + [
  138 + 'specializationInput',
  139 + 'paymentInput',
  140 + ],
  141 + 'default',
  142 + 'value' => [ ],
  143 + ],
136 ]; 144 ];
137 } 145 }
138 146
@@ -513,7 +521,7 @@ @@ -513,7 +521,7 @@
513 */ 521 */
514 public function getJobs() 522 public function getJobs()
515 { 523 {
516 - return $this->hasMany(Job::className(), [ 'user_id' => 'id' ]); 524 + return $this->hasMany(Job::className(), [ 'user_id' => 'id' ])->orderBy(['current' => SORT_DESC]);
517 } 525 }
518 526
519 /** 527 /**
@@ -771,4 +779,30 @@ @@ -771,4 +779,30 @@
771 ]); 779 ]);
772 }); 780 });
773 } 781 }
  782 +
  783 + public function getBookmarksVacancies()
  784 + {
  785 + return $this->hasMany(Vacancy::className(), [ 'vacancy_id' => 'model_id' ])
  786 + ->viaTable('{{%bookmark}}', [ 'user_id' => 'id' ], function($query) {
  787 + /**
  788 + * @var ActiveQuery $query
  789 + */
  790 + $query->andWhere([
  791 + 'model' => Vacancy::className(),
  792 + 'type' => Bookmark::TYPE_VACANCY,
  793 + ]);
  794 + });
  795 + }
  796 +
  797 + public function getChatCount()
  798 + {
  799 + return Chat::find()
  800 + ->select('COUNT(*)')
  801 + ->where([
  802 + 'or',
  803 + [ 'from_user' => $this->id ],
  804 + [ 'to_user' => $this->id ],
  805 + ])
  806 + ->scalar();
  807 + }
774 } 808 }
common/models/UserInfo.php
@@ -315,4 +315,9 @@ @@ -315,4 +315,9 @@
315 $this->geographies = $value; 315 $this->geographies = $value;
316 } 316 }
317 317
  318 + public function getCurrency()
  319 + {
  320 + return $this->hasOne(Currency::className(), ['currency_id' => 'salary_currency']);
  321 + }
  322 +
318 } 323 }
common/modules/comment/Controller.php
@@ -93,4 +93,5 @@ @@ -93,4 +93,5 @@
93 \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 93 \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
94 \Yii::$app->response->send(); 94 \Yii::$app->response->send();
95 } 95 }
  96 +
96 } 97 }
97 \ No newline at end of file 98 \ No newline at end of file
common/modules/comment/models/CommentProject.php
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
25 * @property float $budget_to 25 * @property float $budget_to
26 * @property int $term_from 26 * @property int $term_from
27 * @property int $term_to 27 * @property int $term_to
  28 + * @property int $state
28 * @property Currency $currency 29 * @property Currency $currency
29 * @package common\modules\comment\models 30 * @package common\modules\comment\models
30 */ 31 */
@@ -38,8 +39,16 @@ @@ -38,8 +39,16 @@
38 const STATUS_PERSONAL = 3; 39 const STATUS_PERSONAL = 3;
39 const STATUS_ANONYMOUS = 4; 40 const STATUS_ANONYMOUS = 4;
40 41
  42 + const STATE_NEW = 1;
  43 + const STATE_CANDIDATE = 2;
  44 + const STATE_PERFORMER = 3;
  45 + const STATE_DENY = 4;
  46 + const STATE_TRASH = 5;
  47 +
41 const SCENARIO_USER = 'user'; 48 const SCENARIO_USER = 'user';
42 const SCENARIO_GUEST = 'guest'; 49 const SCENARIO_GUEST = 'guest';
  50 + const SCENARIO_STATE = 'state';
  51 + const SCENARIO_OWNER = 'owner';
43 52
44 /** 53 /**
45 * @var bool 54 * @var bool
@@ -108,6 +117,29 @@ @@ -108,6 +117,29 @@
108 'default', 117 'default',
109 'value' => 1, 118 'value' => 1,
110 ], 119 ],
  120 + [
  121 + [ 'state' ],
  122 + 'integer',
  123 + 'max' => 4,
  124 + 'min' => 1,
  125 + 'on' => self::SCENARIO_STATE,
  126 + ],
  127 + [
  128 + [ 'state' ],
  129 + 'required',
  130 + 'on' => self::SCENARIO_STATE,
  131 + ],
  132 + [
  133 + [ 'state' ],
  134 + 'required',
  135 + 'on' => self::SCENARIO_OWNER,
  136 + ],
  137 + [
  138 + [ 'state' ],
  139 + 'in',
  140 + 'range' => [1, 5],
  141 + 'on' => self::SCENARIO_OWNER,
  142 + ],
111 ]; 143 ];
112 } 144 }
113 145
@@ -125,6 +157,9 @@ @@ -125,6 +157,9 @@
125 self::SCENARIO_GUEST => [ 157 self::SCENARIO_GUEST => [
126 158
127 ], 159 ],
  160 + self::SCENARIO_STATE => [
  161 + 'state',
  162 + ],
128 ]; 163 ];
129 } 164 }
130 165
@@ -370,7 +405,20 @@ @@ -370,7 +405,20 @@
370 */ 405 */
371 public function getUser() 406 public function getUser()
372 { 407 {
373 - return $this->hasOne(User::className(), ['id' => 'user_id']); 408 + return $this->hasOne(User::className(), [ 'id' => 'user_id' ]);
  409 + }
  410 +
  411 + public function changeState()
  412 + {
  413 + if($this->isAttributeChanged('state')) {
  414 + if($this->save()) {
  415 + return true;
  416 + } else {
  417 + return false;
  418 + }
  419 + } else {
  420 + return true;
  421 + }
374 } 422 }
375 423
376 } 424 }
common/modules/comment/rbac/ArtboxCommentCreateRule.php
@@ -11,7 +11,24 @@ @@ -11,7 +11,24 @@
11 11
12 public function execute($user, $item, $params) 12 public function execute($user, $item, $params)
13 { 13 {
  14 + if($params[ 'model' ] == \common\models\Project::className()) {
  15 + return $this->checkProject($user, $item, $params);
  16 + }
14 return true; 17 return true;
15 } 18 }
16 19
  20 + public function checkProject($user, $item, $params)
  21 + {
  22 + $comment = \common\modules\comment\models\CommentProject::find()
  23 + ->where([ 'model' => $params[ 'model' ],
  24 + 'model_id' => $params[ 'model_id' ],
  25 + 'user_id' => $user,
  26 + ])->one();
  27 + if(empty($comment)) {
  28 + return true;
  29 + } else {
  30 + return false;
  31 + }
  32 + }
  33 +
17 } 34 }
18 \ No newline at end of file 35 \ No newline at end of file
common/modules/comment/widgets/CommentWidget.php
@@ -167,7 +167,7 @@ @@ -167,7 +167,7 @@
167 $this->parts[ 'list' ] = Html::tag($tag, $this->renderItems($view), $this->list_options); 167 $this->parts[ 'list' ] = Html::tag($tag, $this->renderItems($view), $this->list_options);
168 } 168 }
169 169
170 - if($this->display_comment_form) { 170 + if($this->display_comment_form && $this->comment_class->checkCreate()) {
171 $tag = ArrayHelper::remove($this->form_options, 'tag', 'div'); 171 $tag = ArrayHelper::remove($this->form_options, 'tag', 'div');
172 $view = ArrayHelper::remove($this->form_options, 'view'); 172 $view = ArrayHelper::remove($this->form_options, 'view');
173 $this->parts[ 'form' ] = Html::tag($tag, $this->renderForm($view), $this->form_options); 173 $this->parts[ 'form' ] = Html::tag($tag, $this->renderForm($view), $this->form_options);
common/modules/comment/widgets/views/_project_comment_view.php
@@ -82,7 +82,7 @@ @@ -82,7 +82,7 @@
82 <!--ะพั†ะตะฝะบะฐ--> 82 <!--ะพั†ะตะฝะบะฐ-->
83 <input type="hidden" class="val" value="<?= $user->userInfo->rating ?>"/> 83 <input type="hidden" class="val" value="<?= $user->userInfo->rating ?>"/>
84 </div> 84 </div>
85 - <?= Html::a(count($user->comments). ' ะพั‚ะทั‹ะฒะพะฒ', $user->getLink('review'), ['class' => 'link-to-comm']) ?> 85 + <?= Html::a(count($user->comments) . ' ะพั‚ะทั‹ะฒะพะฒ', $user->getLink('review'), [ 'class' => 'link-to-comm' ]) ?>
86 </div> 86 </div>
87 <div class="tender-offer-proj-txt"> 87 <div class="tender-offer-proj-txt">
88 <?= $model->text ?> 88 <?= $model->text ?>
@@ -93,8 +93,11 @@ @@ -93,8 +93,11 @@
93 ?> 93 ?>
94 <li> 94 <li>
95 <span></span> 95 <span></span>
96 - <?= Html::a($file->name, $file->dir, ['class' => 'download-link-file']) ?>  
97 - <?= Html::a('ะกะบะฐั‡ะฐั‚ัŒ', $file->dir, ['class' => 'download-link', 'download' => 'download']) ?> 96 + <?= Html::a($file->name, $file->dir, [ 'class' => 'download-link-file' ]) ?>
  97 + <?= Html::a('ะกะบะฐั‡ะฐั‚ัŒ', $file->dir, [
  98 + 'class' => 'download-link',
  99 + 'download' => 'download',
  100 + ]) ?>
98 </li> 101 </li>
99 <?php 102 <?php
100 } 103 }
@@ -102,8 +105,39 @@ @@ -102,8 +105,39 @@
102 </ul> 105 </ul>
103 </div> 106 </div>
104 <div class="tender-more-buttons-wr"> 107 <div class="tender-more-buttons-wr">
105 - <?= Html::a('ะŸะพั€ั‚ั„ะพะปะธะพ', $user->getLink('portfolio'), ['class' => 'get-project-new']) ?>  
106 - <?= Html::a('ะšะพะฝั‚ะฐะบั‚ั‹', $user->link, ['class' => 'get-list-new']) ?> 108 + <?= Html::a('ะŸะพั€ั‚ั„ะพะปะธะพ', $user->getLink('portfolio'), [ 'class' => 'get-project-new' ]) ?>
  109 + <?= Html::a('ะšะพะฝั‚ะฐะบั‚ั‹', $user->link, [ 'class' => 'get-list-new' ]) ?>
107 </div> 110 </div>
  111 + <?php
  112 + if(\Yii::$app->user->getId() == $model->owner->user_id) {
  113 + ?>
  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 + ?>
  138 + </div>
  139 + <?php
  140 + }
  141 + ?>
108 142
109 </div> 143 </div>
console/migrations/m160317_143914_project_state_add.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\db\Migration;
  4 +
  5 +class m160317_143914_project_state_add extends Migration
  6 +{
  7 + public function up()
  8 + {
  9 + $this->addColumn('{{%comment_project}}', 'state', $this->integer()->notNull()->defaultValue(1));
  10 + }
  11 +
  12 + public function down()
  13 + {
  14 + $this->dropColumn('{{%comment_project}}', 'state');
  15 + }
  16 +
  17 +}
frontend/controllers/AccountsController.php
@@ -842,12 +842,16 @@ @@ -842,12 +842,16 @@
842 $user_info->save(); 842 $user_info->save();
843 $user->load($post); 843 $user->load($post);
844 $user->unlinkAll('specializations', true); 844 $user->unlinkAll('specializations', true);
845 - foreach($user->specializationInput as $one_specialization) {  
846 - $user->link('specializations', Specialization::findOne($one_specialization)); 845 + if(is_array($user->specializationInput)) {
  846 + foreach($user->specializationInput as $one_specialization) {
  847 + $user->link('specializations', Specialization::findOne($one_specialization));
  848 + }
847 } 849 }
848 $user->unlinkAll('payments', true); 850 $user->unlinkAll('payments', true);
849 - foreach($user->paymentInput as $one_payment) {  
850 - $user->link('payments', Payment::findOne($one_payment)); 851 + if(is_array($user->paymentInput)) {
  852 + foreach($user->paymentInput as $one_payment) {
  853 + $user->link('payments', Payment::findOne($one_payment));
  854 + }
851 } 855 }
852 } 856 }
853 } 857 }
frontend/controllers/BookmarksController.php
@@ -103,6 +103,24 @@ @@ -103,6 +103,24 @@
103 ]); 103 ]);
104 } 104 }
105 105
  106 + public function actionVacancy()
  107 + {
  108 + /**
  109 + * @var User $user
  110 + */
  111 + $user = \Yii::$app->user->identity;
  112 + $dataProvider = new ActiveDataProvider([
  113 + 'query' => $user->getBookmarksVacancies(),
  114 + 'pagination' => [
  115 + 'pageSize' => 10,
  116 + ],
  117 + ]);
  118 + return $this->render('bookmarks-vacancy', [
  119 + 'dataProvider' => $dataProvider,
  120 + 'user' => $user,
  121 + ]);
  122 + }
  123 +
106 public function actionAddPerformer() 124 public function actionAddPerformer()
107 { 125 {
108 $response = \Yii::$app->response; 126 $response = \Yii::$app->response;
frontend/controllers/PerformerController.php
@@ -57,7 +57,10 @@ @@ -57,7 +57,10 @@
57 public function actionCommon($performer_id) 57 public function actionCommon($performer_id)
58 { 58 {
59 59
60 - $user = User::findOne($performer_id); 60 + $user = User::find()
  61 + ->where([ 'id' => $performer_id ])
  62 + ->with('jobs')
  63 + ->one();
61 64
62 if(!$user instanceof User) { 65 if(!$user instanceof User) {
63 throw new BadRequestHttpException('ะŸะพะปัŒะทะพะฒะฐั‚ะตะปัŒ ะฝะต ะฝะฐะนะดะตะฝ'); 66 throw new BadRequestHttpException('ะŸะพะปัŒะทะพะฒะฐั‚ะตะปัŒ ะฝะต ะฝะฐะนะดะตะฝ');
@@ -216,7 +219,8 @@ @@ -216,7 +219,8 @@
216 'link' => $link, 219 'link' => $link,
217 'user_id' => $performer_id, 220 'user_id' => $performer_id,
218 ]) 221 ])
219 - ->with('comments')->one(); 222 + ->with('comments')
  223 + ->one();
220 $article->updateCounters([ 'view_count' => 1 ]); 224 $article->updateCounters([ 'view_count' => 1 ]);
221 225
222 return $this->render('blog-view', [ 226 return $this->render('blog-view', [
frontend/controllers/TenderController.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 namespace frontend\controllers; 2 namespace frontend\controllers;
3 3
4 use common\models\Project; 4 use common\models\Project;
  5 +use common\modules\comment\models\CommentProject;
5 use Yii; 6 use Yii;
6 use common\models\LoginForm; 7 use common\models\LoginForm;
7 use frontend\models\PasswordResetRequestForm; 8 use frontend\models\PasswordResetRequestForm;
@@ -29,6 +30,8 @@ use common\models\Social; @@ -29,6 +30,8 @@ use common\models\Social;
29 */ 30 */
30 class TenderController extends Controller 31 class TenderController extends Controller
31 { 32 {
  33 +
  34 + public $enableCsrfValidation = false;
32 /** 35 /**
33 * @inheritdoc 36 * @inheritdoc
34 */ 37 */
@@ -42,6 +45,12 @@ class TenderController extends Controller @@ -42,6 +45,12 @@ class TenderController extends Controller
42 'class' => 'yii\captcha\CaptchaAction', 45 'class' => 'yii\captcha\CaptchaAction',
43 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, 46 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
44 ], 47 ],
  48 + 'verbs' => [
  49 + 'class' => \yii\filters\VerbFilter::className(),
  50 + 'actions' => [
  51 + 'change-state' => ['post'],
  52 + ],
  53 + ],
45 ]; 54 ];
46 } 55 }
47 /** 56 /**
@@ -63,4 +72,49 @@ class TenderController extends Controller @@ -63,4 +72,49 @@ class TenderController extends Controller
63 ]); 72 ]);
64 } 73 }
65 74
  75 + public function actionChangeState()
  76 + {
  77 + /**
  78 + * @var User $user
  79 + */
  80 + $response = \Yii::$app->response;
  81 + $response->format = $response::FORMAT_JSON;
  82 + $user = \Yii::$app->user->identity;
  83 + $project_id = \Yii::$app->request->post('project_id');
  84 + $comment_id = \Yii::$app->request->post('comment_id');
  85 + $state = \Yii::$app->request->post('state');
  86 + if(empty($project_id) || empty($comment_id) || empty($state)) {
  87 + return ['error' => 'project_id, comment_id, state ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะพั‚ะฟั€ะฐะฒะปะตะฝั‹ ะฒ ะทะฐะฟั€ะพัะต'];
  88 + }
  89 + /**
  90 + * @var Project $project
  91 + */
  92 + $project = Project::findOne($project_id);
  93 + if(empty($project)) {
  94 + return ['error' => 'ะŸั€ะพะตะบั‚ ะฝะต ะฝะฐะนะดะตะฝ'];
  95 + } elseif($project->user_id != $user->id) {
  96 + return ['error' => 'ะ’ั‹ ะผะพะถะตั‚ะต ะผะตะฝัั‚ัŒ ัั‚ะฐั‚ัƒั ั‚ะพะปัŒะบะพ ัะพะฑัั‚ะฒะตะฝะฝั‹ั… ะฟั€ะพะตะบั‚ะพะฒ'];
  97 + }
  98 + /**
  99 + * @var CommentProject $comment
  100 + */
  101 + $comment = CommentProject::find()->where(['comment_id' => $comment_id, 'model' => $project->className(), 'model_id' => $project->project_id])->one();
  102 + if(empty($comment)) {
  103 + return ['error' => 'ะ”ะฐะฝะฝะพะณะพ ะฟั€ะตะดะปะพะถะตะฝะธั ะฝะต ััƒั‰ะตัั‚ะฒัƒะตั‚'];
  104 + }
  105 + if($comment->state == $comment::STATE_TRASH) {
  106 + return ['error' => 'ะ˜ัะฟะพะปะฝะธั‚ะตะปัŒ ะพั‚ะผะตะฝะธะป ะดะฐะฝะฝะพะต ะฟั€ะตะดะปะพะถะตะฝะธะต'];
  107 + }
  108 + $comment->scenario = $comment::SCENARIO_STATE;
  109 + $comment->state = $state;
  110 + if(!$comment->validate()) {
  111 + return ['error' => 'ะะตะดะพะฟัƒัั‚ะธะผะพะต ะทะฝะฐั‡ะตะฝะธะต state'];
  112 + }
  113 + if($comment->changeState()) {
  114 + return ['message' => 'ะะฒั‚ะพั€ ะพะฟะพะฒะตั‰ะตะฝ ะพ ะฒะฐัˆะตะผ ั€ะตัˆะตะฝะธะธ'];
  115 + } else {
  116 + return ['error' => 'ะžัˆะธะฑะบะฐ ะพะฑะฝะพะฒะปะตะฝะธั.'];
  117 + }
  118 + }
  119 +
66 } 120 }
frontend/views/accounts/employment.php
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
180 if(result != null) { 180 if(result != null) {
181 lastindex = result[1]; 181 lastindex = result[1];
182 } else { 182 } else {
183 - lastindex = 1; 183 + lastindex = 0;
184 $('.prev_job_container').removeClass('none-job-inputs') 184 $('.prev_job_container').removeClass('none-job-inputs')
185 $('.add-field-employment').removeClass('none-job-inputs') 185 $('.add-field-employment').removeClass('none-job-inputs')
186 } 186 }
frontend/views/bookmarks/bookmarks-vacancy.php
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <div class="box-wr"> 17 <div class="box-wr">
18 <div class="box-all"> 18 <div class="box-all">
19 <div class="left-search-work"> 19 <div class="left-search-work">
20 - <div class="search-performer-button-bookmark"><a>ะŸั€ะพะตะบั‚ั‹</a></div> 20 + <div class="search-performer-button-bookmark"><a>ะ—ะฐะบะปะฐะดะบะธ</a></div>
21 <?= Html::a('ะ˜ัะฟะพะปะฝะธั‚ะตะปะธ', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?> 21 <?= Html::a('ะ˜ัะฟะพะปะฝะธั‚ะตะปะธ', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?>
22 <?= Html::a('ะ—ะฐะบะฐะทั‡ะธะบะธ', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?> 22 <?= Html::a('ะ—ะฐะบะฐะทั‡ะธะบะธ', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?>
23 <?= Html::a('ะŸั€ะพะตะบั‚ั‹', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> 23 <?= Html::a('ะŸั€ะพะตะบั‚ั‹', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?>
frontend/views/layouts/main.php
@@ -158,7 +158,7 @@ AppAsset::register($this); @@ -158,7 +158,7 @@ AppAsset::register($this);
158 ], 158 ],
159 [ 159 [
160 'url' => ['chat/list'], 160 'url' => ['chat/list'],
161 - 'template' => '<a href="{url}" class="main-menu-icons-edit"><span>28</span></a>', 161 + 'template' => '<a href="{url}" class="main-menu-icons-edit"><span>'.\Yii::$app->user->identity->chatCount.'</span></a>',
162 ], 162 ],
163 [ 163 [
164 'url' => ['/bookmarks'], 164 'url' => ['/bookmarks'],
frontend/views/layouts/performer.php
@@ -35,11 +35,11 @@ @@ -35,11 +35,11 @@
35 <div class="box-all"> 35 <div class="box-all">
36 <?php 36 <?php
37 echo Menu::widget([ 37 echo Menu::widget([
38 - 'options' => [ 38 + 'options' => [
39 'class' => 'menu-content', 39 'class' => 'menu-content',
40 ], 40 ],
41 'activeCssClass' => 'active-menu-content', 41 'activeCssClass' => 'active-menu-content',
42 - 'items' => [ 42 + 'items' => [
43 [ 43 [
44 'label' => 'ะžะฑั‰ะตะต', 44 'label' => 'ะžะฑั‰ะตะต',
45 'url' => [ 45 'url' => [
@@ -94,7 +94,7 @@ @@ -94,7 +94,7 @@
94 <div class="performer-vacancy-sidebar-left-wr"> 94 <div class="performer-vacancy-sidebar-left-wr">
95 <div class="performer-vacancy-sidebar-left"> 95 <div class="performer-vacancy-sidebar-left">
96 <div class="performance-vacancy-sidebar-company-wr"> 96 <div class="performance-vacancy-sidebar-company-wr">
97 - <div class="performance-vacancy-sidebar-company-title style">ะŸะพะทะฝัะบะธะถะธะปัั‚ั€ะพะน</div> 97 + <div class="performance-vacancy-sidebar-company-title style"><?= $this->params[ 'user' ]->name ?></div>
98 <div class="performance-vacancy-sidebar-company-job style"> 98 <div class="performance-vacancy-sidebar-company-job style">
99 <ul> 99 <ul>
100 <li class="activejob"> 100 <li class="activejob">
@@ -112,21 +112,21 @@ @@ -112,21 +112,21 @@
112 <div class="performance-vacancy-sidebar-stars style"> 112 <div class="performance-vacancy-sidebar-stars style">
113 <div class="rating"> 113 <div class="rating">
114 <!--ะพั†ะตะฝะบะฐ--> 114 <!--ะพั†ะตะฝะบะฐ-->
115 - <input type="hidden" class="val" value="<?= $this->params['user']->userInfo->rating ?>"/> 115 + <input type="hidden" class="val" value="<?= $this->params[ 'user' ]->userInfo->rating ?>"/>
116 <!--ะบะพะปะธั‡ะตัั‚ะฒะพ ะณะพะปะพัะพะฒ--> 116 <!--ะบะพะปะธั‡ะตัั‚ะฒะพ ะณะพะปะพัะพะฒ-->
117 <input type="hidden" class="votes" value="1"/> 117 <input type="hidden" class="votes" value="1"/>
118 </div> 118 </div>
119 </div> 119 </div>
120 - <div class="performance-vacancy-sidebar-comm style"><?= count($this->params['user']->comments) ?> ะพั‚ะทั‹ะฒะพะฒ</div> 120 + <div class="performance-vacancy-sidebar-comm style"><?= count($this->params[ 'user' ]->comments) ?> ะพั‚ะทั‹ะฒะพะฒ</div>
121 <a href="#" class="performance-vacancy-sidebar-write style">ะฝะฐะฟะธัะฐั‚ัŒ ะพั‚ะทั‹ะฒ</a> 121 <a href="#" class="performance-vacancy-sidebar-write style">ะฝะฐะฟะธัะฐั‚ัŒ ะพั‚ะทั‹ะฒ</a>
122 </div> 122 </div>
123 <div class="performer-vacancy-sidebar-img style"> 123 <div class="performer-vacancy-sidebar-img style">
124 <?= Html::img($this->params[ 'user' ]->userInfo->image); ?> 124 <?= Html::img($this->params[ 'user' ]->userInfo->image); ?>
125 </div> 125 </div>
126 <div class="performer-vacancy-sidebar-all style"> 126 <div class="performer-vacancy-sidebar-all style">
127 - <?= $this->render('/patrial/social_list',[  
128 - 'params' => $this->params  
129 - ])?> 127 + <?= $this->render('/patrial/social_list', [
  128 + 'params' => $this->params,
  129 + ]) ?>
130 <div class="performer-vacancy-sidebar-views style"> 130 <div class="performer-vacancy-sidebar-views style">
131 <ul class="style"> 131 <ul class="style">
132 <li><img src="/images/sidebar-ico/ico-1.png" alt=""/> 132 <li><img src="/images/sidebar-ico/ico-1.png" alt=""/>
@@ -157,9 +157,10 @@ @@ -157,9 +157,10 @@
157 <span class="sidebar-views-txt">ะ—ะฒะฐะฝะธะต ะฒ ะœะคะŸ:<br/></span><?= $this->params[ 'user' ]->userInfo->rank ?> 157 <span class="sidebar-views-txt">ะ—ะฒะฐะฝะธะต ะฒ ะœะคะŸ:<br/></span><?= $this->params[ 'user' ]->userInfo->rank ?>
158 </div> 158 </div>
159 </li> 159 </li>
160 - <li><img src="/images/sidebar-ico/ico-12.png" alt=""/> 160 + <li><img src="/images/sidebar-ico/ico_money.png" alt=""/>
161 <div class="sidebarvievstxt"> 161 <div class="sidebarvievstxt">
162 - <span class="sidebar-views-txt">ะกั‚ะพะธะผะพัั‚ัŒ ั€ะฐะฑะพั‚:<br/></span><?= $this->params[ 'user' ]->userInfo->salary ?> 162 + <span class="sidebar-views-txt">ะกั‚ะพะธะผะพัั‚ัŒ ั€ะฐะฑะพั‚:<br/></span>
  163 + <?= $this->params[ 'user' ]->userInfo->salary. ' ' . $this->params['user']->userInfo->currency->label ?>
163 </div> 164 </div>
164 </li> 165 </li>
165 <li><img src="/images/sidebar-ico/ico-13.png" alt=""/> 166 <li><img src="/images/sidebar-ico/ico-13.png" alt=""/>
frontend/views/performer/common.php
1 <?php 1 <?php
2 2
3 -use yii\helpers\ArrayHelper;  
4 -use \yii\helpers\Html; 3 + use yii\helpers\ArrayHelper;
  4 + use \yii\helpers\Html;
5 5
6 -/* @var $this yii\web\View  
7 - * @var $user common\models\User  
8 - */  
9 -$this->params['user'] = $user; 6 + /* @var $this yii\web\View
  7 + * @var $user common\models\User
  8 + */
  9 + $this->params[ 'user' ] = $user;
10 10
11 -$this->title = 'My Yii Application'; 11 + $this->title = 'My Yii Application';
12 ?> 12 ?>
13 <div class="proektant-profile-content"> 13 <div class="proektant-profile-content">
14 <div class="proektant-profile-hidden-txt"> 14 <div class="proektant-profile-hidden-txt">
15 - <?= $user->userInfo->about?> 15 + <?= $user->userInfo->about ?>
16 </div> 16 </div>
17 <a href="#" class="profile-see-all"></a> 17 <a href="#" class="profile-see-all"></a>
18 <div class="proektant-profile-courses-wr style"> 18 <div class="proektant-profile-courses-wr style">
19 - <?php foreach( $educations as $education):?>  
20 - <div class="proektant-profile-courses">  
21 - <div class="proektant-profile-courses-title">ะžะฑั€ะฐะทะพะฒะฐะฝะธะต:</div>  
22 - <div class="proektant-profile-courses-year"><?= isset($education['year_from']) ? $education['year_from'] : '' ?>-<?= isset($education['year_to']) ? $education['year_to'] : '' ?></div>  
23 - <div class="proektant-profile-courses-content"><?= isset($education['name']) ? $education['name'] : '' ?></div>  
24 - </div> 19 + <?php foreach($educations as $education): ?>
  20 + <div class="proektant-profile-courses">
  21 + <div class="proektant-profile-courses-title">ะžะฑั€ะฐะทะพะฒะฐะฝะธะต:</div>
  22 + <div class="proektant-profile-courses-year"><?= isset( $education[ 'year_from' ] ) ? $education[ 'year_from' ] : '' ?>-<?= isset( $education[ 'year_to' ] ) ? $education[ 'year_to' ] : '' ?></div>
  23 + <div class="proektant-profile-courses-content"><?= isset( $education[ 'name' ] ) ? $education[ 'name' ] : '' ?></div>
  24 + </div>
25 <?php endforeach; ?> 25 <?php endforeach; ?>
26 </div> 26 </div>
27 -  
28 - <div class="proektant-profile-statistic-wr style">  
29 -  
30 - <div class="proektant-profile-tb-blocks">  
31 - <div class="proektant-profile-stat-title">ะกั‚ะฐั‚ะธัั‚ะธะบะฐ ัƒั‡ะฐัั‚ะธั</div>  
32 - <div class="proektant-profile-stat-table">  
33 - <table cellspacing="0" cellpadding="0" border="0" width="100%" style="border: 1px solid #dfdfdf; border-radius: 4px;">  
34 - <tr>  
35 - <td width="284" style="border-left: none;">ะšะพะผะฟะฐะฝะธั</td>  
36 - <td width="75" >ะŸั€ะพะตะบั‚ั‹</td>  
37 - <td width="117">ะ ะตะฐะปะธะทะพะฒะฐะฝะฝั‹ะต</td>  
38 - </tr>  
39 - <tr>  
40 - <td style="border-left: none">UBCP</td>  
41 - <td>20</td>  
42 - <td>12</td>  
43 - </tr>  
44 - <tr>  
45 - <td style="border-left: none"> TRP</td>  
46 - <td>20</td>  
47 - <td>12</td>  
48 - </tr>  
49 - <tr>  
50 - <td style="border-left: none">ะคั€ะธะปะฐะฝั</td>  
51 - <td>20</td>  
52 - <td>12</td>  
53 - </tr>  
54 - </table> 27 + <?php
  28 + if(!empty( $user->jobs )) {
  29 + ?>
  30 + <div class="proektant-profile-statistic-wr style">
  31 + <div class="proektant-profile-tb-blocks">
  32 + <div class="proektant-profile-stat-title">ะกั‚ะฐั‚ะธัั‚ะธะบะฐ ัƒั‡ะฐัั‚ะธั</div>
  33 + <div class="proektant-profile-stat-table">
  34 + <table cellspacing="0" cellpadding="0" border="0" width="100%" style="border: 1px solid #dfdfdf; border-radius: 4px;">
  35 + <tr>
  36 + <td width="284" style="border-left: none;">ะšะพะผะฟะฐะฝะธั</td>
  37 + <td width="75">ะŸั€ะพะตะบั‚ั‹</td>
  38 + <td width="117">ะ ะตะฐะปะธะทะพะฒะฐะฝะฝั‹ะต</td>
  39 + </tr>
  40 + <?php
  41 + foreach($user->jobs as $job) {
  42 + ?>
  43 + <tr>
  44 + <td style="border-left: none"><?= $job->name ?></td>
  45 + <td><?= $job->total_count ?></td>
  46 + <td><?= $job->complete_count ?></td>
  47 + </tr>
  48 + <?php
  49 + }
  50 + ?>
  51 + </table>
  52 + </div>
  53 + </div>
55 </div> 54 </div>
56 - </div>  
57 -  
58 -  
59 - </div> 55 + <?php
  56 + }
  57 + ?>
60 </div> 58 </div>
61 <div class="proektant-profile-sidebar-right"> 59 <div class="proektant-profile-sidebar-right">
62 <div class="style"> 60 <div class="style">
63 <div class="profile-phone-site style"> 61 <div class="profile-phone-site style">
64 - <?= $this->render('/patrial/show_phone',[  
65 - 'phones' => $phones  
66 - ])?>  
67 - <?= $this->render('/patrial/show_site',[  
68 - 'sites' => $sites  
69 - ])?> 62 + <?= $this->render('/patrial/show_phone', [
  63 + 'phones' => $phones,
  64 + ]) ?>
  65 + <?= $this->render('/patrial/show_site', [
  66 + 'sites' => $sites,
  67 + ]) ?>
70 </div> 68 </div>
71 <div class="profile-features style"> 69 <div class="profile-features style">
72 <ul> 70 <ul>
73 - <li><span>ะ“ะตะพะณั€ะฐั„ะธั ั€ะฐะฑะพั‚: </span><?= implode(',',array_filter(ArrayHelper::getColumn($user->portfolios, 'city'))) ?></li> 71 + <li>
  72 + <span>ะ“ะตะพะณั€ะฐั„ะธั ั€ะฐะฑะพั‚: </span><?= implode(',', array_filter(ArrayHelper::getColumn($user->portfolios, 'city'))) ?>
  73 + </li>
74 <li><span>ะœะตัั‚ะพะฝะฐั…ะพะถะดะตะฝะธะต: </span><?= $user->userInfo->city ?></li> 74 <li><span>ะœะตัั‚ะพะฝะฐั…ะพะถะดะตะฝะธะต: </span><?= $user->userInfo->city ?></li>
75 <li> 75 <li>
76 <div class="features-tags features-tags-profile"> 76 <div class="features-tags features-tags-profile">
77 - <?php foreach($user->specializations as $specialization):?> 77 + <?php foreach($user->specializations as $specialization): ?>
78 <span><a href="#"><?= $specialization->specialization_name ?></a>, </span> 78 <span><a href="#"><?= $specialization->specialization_name ?></a>, </span>
79 <?php endforeach; ?> 79 <?php endforeach; ?>
80 </div> 80 </div>
81 </li> 81 </li>
82 <li><span>ะ ะฐะฑะพั‚ะฐ ั ะฟั€ะพะณั€ะฐะผะผะฐะผะธ: </span><?= $soft ?></li> 82 <li><span>ะ ะฐะฑะพั‚ะฐ ั ะฟั€ะพะณั€ะฐะผะผะฐะผะธ: </span><?= $soft ?></li>
83 <li><span>ะ“ะฐั€ะฐะฝั‚ะธั: </span><?= $user->userInfo->guarantee ?> ะณะพะดะฐ</li> 83 <li><span>ะ“ะฐั€ะฐะฝั‚ะธั: </span><?= $user->userInfo->guarantee ?> ะณะพะดะฐ</li>
84 - <li><span>ะ”ะพะณะพะฒะพั€: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->contract)?></li>  
85 - <li><span>ะกะผะตั‚ะฐ: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->estimate)?></li>  
86 - <li><span>ะ—ะฐะบัƒะฟะบะฐ ัั‚ั€ะพะนะผะฐั‚ะตั€ะธะฐะปะพะฒ: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->purchase)?></li>  
87 - <li><span>ะ”ะพัั‚ะฐะฒะบะฐ ัั‚ั€ะพะนะผะฐั‚ะตั€ะธะฐะปะพะฒ: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->delivery)?></li> 84 + <li>
  85 + <span>ะ”ะพะณะพะฒะพั€: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->contract) ?>
  86 + </li>
  87 + <li>
  88 + <span>ะกะผะตั‚ะฐ: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->estimate) ?>
  89 + </li>
  90 + <li>
  91 + <span>ะ—ะฐะบัƒะฟะบะฐ ัั‚ั€ะพะนะผะฐั‚ะตั€ะธะฐะปะพะฒ: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->purchase) ?>
  92 + </li>
  93 + <li>
  94 + <span>ะ”ะพัั‚ะฐะฒะบะฐ ัั‚ั€ะพะนะผะฐั‚ะตั€ะธะฐะปะพะฒ: </span><?= \Yii::$app->formatter->asBoolean($user->userInfo->delivery) ?>
  95 + </li>
88 <li><span>ะŸั€ะตะดะพะฟะปะฐั‚ะฐ: </span><?= $user->userInfo->prepayment ?> %</li> 96 <li><span>ะŸั€ะตะดะพะฟะปะฐั‚ะฐ: </span><?= $user->userInfo->prepayment ?> %</li>
89 </ul> 97 </ul>
90 </div> 98 </div>
@@ -145,7 +153,8 @@ $this-&gt;title = &#39;My Yii Application&#39;; @@ -145,7 +153,8 @@ $this-&gt;title = &#39;My Yii Application&#39;;
145 <a href="#" class="company-comm-see-all"><span>ะ ะฐะทะฒะตั€ะฝัƒั‚ัŒ</span></a> 153 <a href="#" class="company-comm-see-all"><span>ะ ะฐะทะฒะตั€ะฝัƒั‚ัŒ</span></a>
146 </div> 154 </div>
147 </div> 155 </div>
148 - <div class="company-performer-comm-see-all-butt style"><a href="#">ะงะธั‚ะฐั‚ัŒ ะฒัะต ะพั‚ะทั‹ะฒั‹</a></div> 156 + <div class="company-performer-comm-see-all-butt style"><a href="#">ะงะธั‚ะฐั‚ัŒ ะฒัะต ะพั‚ะทั‹ะฒั‹</a>
  157 + </div>
149 </div> 158 </div>
150 </div> 159 </div>
151 </div> 160 </div>
frontend/web/css/style.css
@@ -6703,4 +6703,8 @@ input[disabled], select[disabled] { @@ -6703,4 +6703,8 @@ input[disabled], select[disabled] {
6703 .list_item.title {margin-top: 20px} 6703 .list_item.title {margin-top: 20px}
6704 .search_customer_image { 6704 .search_customer_image {
6705 height: 100%; 6705 height: 100%;
  6706 +}
  6707 +.project_owner_control a {
  6708 + display: inline-block;
  6709 + margin: 0 10px;
6706 } 6710 }
6707 \ No newline at end of file 6711 \ No newline at end of file
frontend/web/images/sidebar-ico/ico_money.png 0 โ†’ 100644

1.1 KB

frontend/web/js/forms.js
@@ -383,6 +383,86 @@ $(document).ready( @@ -383,6 +383,86 @@ $(document).ready(
383 // addToFavorites() 383 // addToFavorites()
384 } 384 }
385 ) 385 )
  386 +
  387 + //project comment state
  388 + $(document).on('click', '.artbox_project_make_candidate', function(e) {
  389 + e.preventDefault();
  390 + var project_id = $(this).data('project-id');
  391 + var comment_id = $(this).data('comment-id');
  392 + var state = 2;
  393 + var link = $(this);
  394 + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) {
  395 + if(data.error) {
  396 + alert(data.error);
  397 + } else {
  398 + alert(data.message);
  399 + }
  400 + }, 'json').fail(
  401 + function()
  402 + {
  403 + alert(txtErrorModal);
  404 + }
  405 + );
  406 + });
  407 + $(document).on('click', '.artbox_project_make_new', function(e) {
  408 + e.preventDefault();
  409 + var project_id = $(this).data('project-id');
  410 + var comment_id = $(this).data('comment-id');
  411 + var state = 1;
  412 + var link = $(this);
  413 + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) {
  414 + if(data.error) {
  415 + alert(data.error);
  416 + } else {
  417 + alert(data.message);
  418 + }
  419 + }, 'json').fail(
  420 + function()
  421 + {
  422 + alert(txtErrorModal);
  423 + }
  424 + );
  425 + });
  426 + $(document).on('click', '.artbox_project_make_performer', function(e) {
  427 + e.preventDefault();
  428 + var project_id = $(this).data('project-id');
  429 + var comment_id = $(this).data('comment-id');
  430 + var state = 3;
  431 + var link = $(this);
  432 + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) {
  433 + if(data.error) {
  434 + alert(data.error);
  435 + } else {
  436 + alert(data.message);
  437 + }
  438 + }, 'json').fail(
  439 + function()
  440 + {
  441 + alert(txtErrorModal);
  442 + }
  443 + );
  444 + });
  445 + $(document).on('click', '.artbox_project_make_deny', function(e) {
  446 + e.preventDefault();
  447 + var project_id = $(this).data('project-id');
  448 + var comment_id = $(this).data('comment-id');
  449 + var state = 4;
  450 + var link = $(this);
  451 + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) {
  452 + if(data.error) {
  453 + alert(data.error);
  454 + } else {
  455 + alert(data.message);
  456 + }
  457 + }, 'json').fail(
  458 + function()
  459 + {
  460 + alert(txtErrorModal);
  461 + }
  462 + );
  463 + });
  464 +
  465 +
386 //offer 466 //offer
387 $('a.get-project, .blog-buttons-offer').click( 467 $('a.get-project, .blog-buttons-offer').click(
388 function(e) 468 function(e)