Commit 64a022e69d17e39aab76b875f1e26d299ee9dda8

Authored by Eugeny Galkovskiy
2 parents 19fc24d1 87b556b5

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	frontend/web/css/style.css
Showing 61 changed files with 2029 additions and 1106 deletions   Show diff stats
  1 +/frontend/models/ValidateHelper.php
1 /tests 2 /tests
2 /frontend/web/js/Validation.ts 3 /frontend/web/js/Validation.ts
3 /frontend/web/js/typescript.ts 4 /frontend/web/js/typescript.ts
common/behaviors/ShowImage.php
@@ -84,4 +84,12 @@ @@ -84,4 +84,12 @@
84 84
85 } 85 }
86 86
  87 + public function ShowAvatar($dir, $width, $height = NULL) {
  88 + if(empty($dir)) {
  89 + return '/images/avatar-bg.png';
  90 + } else {
  91 + return $this->minImg($dir, $width, $height);
  92 + }
  93 + }
  94 +
87 } 95 }
88 \ No newline at end of file 96 \ No newline at end of file
common/models/FeedbackCompany.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\models;
  4 +
  5 +use Yii;
  6 +use yii\behaviors\TimestampBehavior;
  7 +
  8 +/**
  9 + * This is the model class for table "feedback_company".
  10 + *
  11 + * @property integer $feedback_company_id
  12 + * @property integer $date_add
  13 + * @property string $name
  14 + * @property string $phone
  15 + * @property string $ip
  16 + * @property integer $user_id
  17 + * @property integer $status
  18 + *
  19 + * @property User $user
  20 + */
  21 +class FeedbackCompany extends \yii\db\ActiveRecord
  22 +{
  23 +
  24 + const STATUS_NEW = 1;
  25 + const STATUS_READ = 2;
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public static function tableName()
  30 + {
  31 + return 'feedback_company';
  32 + }
  33 +
  34 + /**
  35 + * @inheritdoc
  36 + */
  37 + public function rules()
  38 + {
  39 + return [
  40 + [['name', 'phone', 'user_id'], 'required'],
  41 + [['user_id'], 'integer'],
  42 + [['name', 'phone'], 'string', 'max' => 255],
  43 + [['phone'], 'match', 'pattern' => '/^\+?(?:\d{0,3})?[\(\s]?\d{0,5}[\)\s]?\d{3}[-\s]?\d{2}[-\s]?\d{2}$/'],
  44 + [['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id'], 'filter' => ['type' => 2]],
  45 + ];
  46 + }
  47 +
  48 + /**
  49 + * @inheritdoc
  50 + */
  51 + public function attributeLabels()
  52 + {
  53 + return [
  54 + 'feedback_company_id' => 'Feedback Company ID',
  55 + 'date_add' => Yii::t('app', 'Feedback date add'),
  56 + 'name' => Yii::t('app', 'Feedback name'),
  57 + 'phone' => Yii::t('app', 'Feedback phone'),
  58 + 'ip' => 'Ip',
  59 + 'user_id' => 'User ID',
  60 + 'status' => Yii::t('app', 'status'),
  61 + ];
  62 + }
  63 +
  64 + /**
  65 + * @inheritdoc
  66 + */
  67 + public function behaviors()
  68 + {
  69 + return [
  70 + [
  71 + 'class' => TimestampBehavior::className(),
  72 + 'createdAtAttribute' => 'date_add',
  73 + 'updatedAtAttribute' => false,
  74 + ],
  75 + ];
  76 + }
  77 +
  78 + /**
  79 + * @return \yii\db\ActiveQuery
  80 + */
  81 + public function getUser()
  82 + {
  83 + return $this->hasOne(User::className(), ['id' => 'user_id']);
  84 + }
  85 +}
common/models/FeedbackCompanySearch.php 0 → 100644
  1 +<?php
  2 +
  3 + namespace common\models;
  4 +
  5 + use Yii;
  6 + use yii\data\ActiveDataProvider;
  7 +
  8 + /**
  9 + * FeedbackCompanySearch represents the model behind the search form about
  10 + * `common\models\FeedbackCompany`.
  11 + */
  12 + class FeedbackCompanySearch extends FeedbackCompany
  13 + {
  14 +
  15 + public $date_add_from;
  16 +
  17 + public $date_add_to;
  18 +
  19 + /**
  20 + * @inheritdoc
  21 + */
  22 + public function rules()
  23 + {
  24 + return [
  25 + [
  26 + [
  27 + 'name',
  28 + 'date_add',
  29 + 'phone',
  30 + 'date_add_from',
  31 + 'date_add_to',
  32 + ],
  33 + 'safe',
  34 + ],
  35 + [
  36 + [ 'status' ],
  37 + 'integer',
  38 + ],
  39 + [
  40 + 'date_add_to',
  41 + 'compare',
  42 + 'compareAttribute' => 'date_add_from',
  43 + 'operator' => '>=',
  44 + ],
  45 + ];
  46 + }
  47 +
  48 + public function search($params)
  49 + {
  50 + $query = FeedbackCompany::find();
  51 +
  52 + $query->where([ 'user_id' => \Yii::$app->user->id ]);
  53 +
  54 + $dataProvider = new ActiveDataProvider([
  55 + 'query' => $query,
  56 + ]);
  57 +
  58 + $this->load($params);
  59 +
  60 + if(!$this->validate()) {
  61 + return $dataProvider;
  62 + }
  63 +
  64 + $query->andFilterWhere([
  65 + 'like',
  66 + 'LOWER(name)',
  67 + mb_strtolower($this->name),
  68 + ])
  69 + ->andFilterWhere([
  70 + 'like',
  71 + 'LOWER(phone)',
  72 + mb_strtolower($this->phone),
  73 + ])
  74 + ->andFilterWhere([ 'status' => $this->status ]);
  75 +
  76 + $date_add_from = $this->date_add_from;
  77 + $date_add_to = $this->date_add_to;
  78 + if(!empty( $date_add_from )) {
  79 + $date_add_from = strtotime($date_add_from);
  80 + }
  81 + if(!empty( $date_add_to )) {
  82 + $date_add_to = strtotime($date_add_to) + 86400;
  83 + }
  84 + if(!empty( $date_add_from ) && !empty( $date_add_to )) {
  85 + $query->andWhere([
  86 + 'between',
  87 + 'date_add',
  88 + $date_add_from,
  89 + $date_add_to,
  90 + ]);
  91 + } elseif(!empty( $date_add_from )) {
  92 + $query->andWhere([
  93 + '>=',
  94 + 'date_add',
  95 + $date_add_from,
  96 + ]);
  97 + } elseif(!empty( $date_add_to )) {
  98 + $query->andWhere([
  99 + '<=',
  100 + 'date_add',
  101 + $date_add_to,
  102 + ]);
  103 + }
  104 +
  105 + return $dataProvider;
  106 +
  107 + }
  108 + }
common/models/Gallery.php
@@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
61 { 61 {
62 return [ 62 return [
63 [ 63 [
64 - [ 'name' ], 64 + [ 'name', 'cover' ],
65 'required', 65 'required',
66 ], 66 ],
67 [ 67 [
common/models/PortfolioUser.php
@@ -136,6 +136,7 @@ @@ -136,6 +136,7 @@
136 $gallery = new Gallery([ 136 $gallery = new Gallery([
137 'user_id' => $this->user_id, 137 'user_id' => $this->user_id,
138 'name' => $this->portfolio->name, 138 'name' => $this->portfolio->name,
  139 + 'cover' => '/images/imageNotFound.jpg',
139 ]); 140 ]);
140 if($gallery->save()) { 141 if($gallery->save()) {
141 $portfolioGallery = new PortfolioGallery([ 142 $portfolioGallery = new PortfolioGallery([
common/models/TenderSearch.php
@@ -26,6 +26,8 @@ @@ -26,6 +26,8 @@
26 26
27 public $payment; 27 public $payment;
28 28
  29 + public $info;
  30 +
29 /** 31 /**
30 * @inheritdoc 32 * @inheritdoc
31 */ 33 */
@@ -44,6 +46,7 @@ @@ -44,6 +46,7 @@
44 [ 46 [
45 'city', 47 'city',
46 'payment', 48 'payment',
  49 + 'info',
47 ], 50 ],
48 'safe', 51 'safe',
49 ], 52 ],
@@ -87,13 +90,13 @@ @@ -87,13 +90,13 @@
87 public function attributeLabels() 90 public function attributeLabels()
88 { 91 {
89 return [ 92 return [
90 - 'specialization' => Yii::t('app', 'specialization'), 93 + 'specialization' => Yii::t('app', 'specialization'),
91 'budget_currency' => Yii::t('app', 'budget_currency'), 94 'budget_currency' => Yii::t('app', 'budget_currency'),
92 - 'contractual' => Yii::t('app', 'contractual'),  
93 - 'city' => Yii::t('app', 'city'),  
94 - 'payment' => Yii::t('app', 'payment'),  
95 - 'budget_from' => Yii::t('app', 'budget_from'),  
96 - 'budget_to' => Yii::t('app', 'budget_to'), 95 + 'contractual' => Yii::t('app', 'contractual'),
  96 + 'city' => Yii::t('app', 'city'),
  97 + 'payment' => Yii::t('app', 'payment'),
  98 + 'budget_from' => Yii::t('app', 'budget_from'),
  99 + 'budget_to' => Yii::t('app', 'budget_to'),
97 ]; 100 ];
98 } 101 }
99 102
@@ -196,6 +199,11 @@ @@ -196,6 +199,11 @@
196 'project_payment.payment_id' => $this->payment, 199 'project_payment.payment_id' => $this->payment,
197 'city' => $this->city, 200 'city' => $this->city,
198 ]) 201 ])
  202 + ->andFilterWhere([
  203 + 'like',
  204 + 'LOWER(project.name)',
  205 + mb_strtolower($this->info),
  206 + ])
199 ->andWhere([ 207 ->andWhere([
200 'project_payment.payment_id' => $this->payment, 208 'project_payment.payment_id' => $this->payment,
201 ]); 209 ]);
common/models/User.php
@@ -101,6 +101,10 @@ @@ -101,6 +101,10 @@
101 { 101 {
102 return [ 102 return [
103 [ 103 [
  104 + [ 'firstname' ],
  105 + 'required',
  106 + ],
  107 + [
104 'status', 108 'status',
105 'default', 109 'default',
106 'value' => self::STATUS_ACTIVE, 110 'value' => self::STATUS_ACTIVE,
@@ -467,7 +471,7 @@ @@ -467,7 +471,7 @@
467 array_splice($result, 2); 471 array_splice($result, 2);
468 } 472 }
469 473
470 - return implode(',', $result); 474 + return implode('', $result);
471 } 475 }
472 476
473 /** 477 /**
@@ -835,11 +839,42 @@ @@ -835,11 +839,42 @@
835 ->scalar(); 839 ->scalar();
836 } 840 }
837 841
  842 + public function getNewMessagesCount()
  843 + {
  844 + $chats = Chat::find()
  845 + ->select([ 'chat_id' ])
  846 + ->where([
  847 + 'or',
  848 + [ 'from_user' => $this->id ],
  849 + [ 'to_user' => $this->id ],
  850 + ])
  851 + ->column();
  852 + return Message::find()->select(['chat_id'])->distinct()->where(['chat_id' => $chats, 'status' => Message::NEW_MESSAGE])->andWhere(['not', ['user_id' => $this->id]])->count();
  853 + }
  854 +
838 public function getCommentProjects() 855 public function getCommentProjects()
839 { 856 {
840 return $this->hasMany(CommentProject::className(), [ 'user_id' => 'id' ]); 857 return $this->hasMany(CommentProject::className(), [ 'user_id' => 'id' ]);
841 } 858 }
842 859
  860 + public function getCommentProjectsActive()
  861 + {
  862 + return $this->getCommentProjects()
  863 + ->where([
  864 + 'between',
  865 + 'state',
  866 + CommentProject::STATE_NEW,
  867 + CommentProject::STATE_PERFORMER,
  868 + ])
  869 + ->andWhere([
  870 + 'status' => [
  871 + CommentProject::STATUS_ACTIVE,
  872 + CommentProject::STATUS_ANONYMOUS,
  873 + CommentProject::STATUS_PERSONAL,
  874 + ],
  875 + ]);
  876 + }
  877 +
843 public function getChat($user_id) 878 public function getChat($user_id)
844 { 879 {
845 return Chat::find() 880 return Chat::find()
common/models/UserInfo.php
@@ -82,6 +82,7 @@ @@ -82,6 +82,7 @@
82 [ 82 [
83 [ 83 [
84 'email', 84 'email',
  85 + 'city',
85 ], 86 ],
86 'required', 87 'required',
87 ], 88 ],
common/modules/comment/widgets/CommentWidget.php
@@ -277,6 +277,7 @@ @@ -277,6 +277,7 @@
277 $this->comment_class->checkRating(); 277 $this->comment_class->checkRating();
278 if($this->comment_class->rating->load($data) && $this->comment_class->rating->save()) { 278 if($this->comment_class->rating->load($data) && $this->comment_class->rating->save()) {
279 $this->isSuccess = true; 279 $this->isSuccess = true;
  280 + \Yii::$app->response->redirect('');
280 } 281 }
281 } else { 282 } else {
282 $this->isSuccess = true; 283 $this->isSuccess = true;
common/modules/comment/widgets/views/_project_comment_view.php
@@ -17,11 +17,11 @@ @@ -17,11 +17,11 @@
17 <div class="performer-vacancy-sidebar-left"> 17 <div class="performer-vacancy-sidebar-left">
18 <div class="performer-vacancy-sidebar-img style"> 18 <div class="performer-vacancy-sidebar-img style">
19 <?php 19 <?php
20 - if(!empty($user->userInfo->image)) {  
21 - echo Html::img($user->userInfo->image);  
22 - } else {  
23 - echo Html::img('/images/avatar-bg.png');  
24 - } 20 + if(!empty( $user->userInfo->image )) {
  21 + echo Html::img($user->userInfo->image);
  22 + } else {
  23 + echo Html::img('/images/avatar-bg.png');
  24 + }
25 ?> 25 ?>
26 </div> 26 </div>
27 <div class="performer-vacancy-sidebar-all style"> 27 <div class="performer-vacancy-sidebar-all style">
@@ -69,7 +69,9 @@ @@ -69,7 +69,9 @@
69 </div> 69 </div>
70 </li> 70 </li>
71 </ul> 71 </ul>
72 - <?= Html::a('Посмотреть профиль', $user->link, [ 'class' => 'tender-see-profile style', 'target' => '_blank' ]) ?> 72 + <?= Html::a('Посмотреть профиль', $user->link, [ 'class' => 'tender-see-profile style',
  73 + 'target' => '_blank',
  74 + ]) ?>
73 </div> 75 </div>
74 </div> 76 </div>
75 </div> 77 </div>
@@ -87,9 +89,15 @@ @@ -87,9 +89,15 @@
87 <div class="search-worker-blocks-title-title"><?= $user->name ?></div> 89 <div class="search-worker-blocks-title-title"><?= $user->name ?></div>
88 <?php 90 <?php
89 echo StarRating::widget([ 91 echo StarRating::widget([
90 - 'name' => 'rating_review_comment',  
91 - 'value' => $user->userInfo->rating,  
92 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 92 + 'name' => 'rating_review_comment',
  93 + 'value' => $user->userInfo->rating,
  94 + 'pluginOptions' => [
  95 + 'displayOnly' => true,
  96 + 'size' => 'xxs',
  97 + 'min' => 0,
  98 + 'max' => 10,
  99 + 'stars' => 10,
  100 + ],
93 ]); 101 ]);
94 ?> 102 ?>
95 <?= Html::a(count($user->comments) . ' отзывов', $user->getLink('review'), [ 'class' => 'link-to-comm' ]) ?> 103 <?= Html::a(count($user->comments) . ' отзывов', $user->getLink('review'), [ 'class' => 'link-to-comm' ]) ?>
@@ -104,8 +112,8 @@ @@ -104,8 +112,8 @@
104 <li> 112 <li>
105 <span></span> 113 <span></span>
106 <?= Html::a($file->name, $file->dir, [ 114 <?= Html::a($file->name, $file->dir, [
107 - 'class' => 'download-link-file',  
108 - 'download' => 'download' 115 + 'class' => 'download-link-file',
  116 + 'download' => 'download',
109 ]) ?> 117 ]) ?>
110 <?= Html::a('Скачать', $file->dir, [ 118 <?= Html::a('Скачать', $file->dir, [
111 'class' => 'download-link', 119 'class' => 'download-link',
@@ -122,68 +130,68 @@ @@ -122,68 +130,68 @@
122 <?= Html::a('Контакты', $user->link, [ 'class' => 'get-list-new' ]) ?> 130 <?= Html::a('Контакты', $user->link, [ 'class' => 'get-list-new' ]) ?>
123 131
124 <?php 132 <?php
125 - if($model->status == $model::STATUS_ANONYMOUS) {  
126 - echo Html::tag('div', 'Анонимное предложение', [ 'class' => 'project_status' ]);  
127 - }  
128 - if(\Yii::$app->user->getId() == $model->owner->user_id) {  
129 - ?>  
130 - <div class="project_owner_state">  
131 - <p>  
132 - <?php  
133 - switch($model->state) {  
134 - case 1:  
135 - echo 'Предложение не рассмотрено';  
136 - break;  
137 - case 2:  
138 - echo 'Исполнитель поставлен на рассмотрение';  
139 - break;  
140 - case 3:  
141 - echo 'Исполнитель назначен исполнителем';  
142 - break;  
143 - case 4:  
144 - echo 'Вы отказали данному исполнителю';  
145 - break;  
146 - case 5:  
147 - echo 'Исполнитель отказался от данного предложения';  
148 - break;  
149 - }  
150 - ?>  
151 - </p>  
152 - </div>  
153 - <?php  
154 - if($model->state != $model::STATE_TRASH) { 133 + if($model->status == $model::STATUS_ANONYMOUS) {
  134 + echo Html::tag('div', 'Анонимное предложение', [ 'class' => 'project_status' ]);
  135 + }
  136 + if(\Yii::$app->user->getId() == $model->owner->user_id) {
155 ?> 137 ?>
156 - <div class="project_owner_control">  
157 - <span>Отметить как: </span>  
158 - <p class="new_mark_"></p>  
159 - <div> 138 + <div class="project_owner_state">
  139 + <p>
160 <?php 140 <?php
161 - echo Html::a('новый', [ '#' ], [  
162 - 'data-project-id' => $model->owner->project_id,  
163 - 'data-comment-id' => $model->comment_id,  
164 - 'class' => 'artbox_project_make_new'.(($model->state == $model::STATE_NEW)?' active':''),  
165 - ]);  
166 - echo Html::a('кандидат', [ '#' ], [  
167 - 'data-project-id' => $model->owner->project_id,  
168 - 'data-comment-id' => $model->comment_id,  
169 - 'class' => 'artbox_project_make_candidate'.(($model->state == $model::STATE_CANDIDATE)?' active':''),  
170 - ]);  
171 - echo Html::a('исполнитель', [ '#' ], [  
172 - 'data-project-id' => $model->owner->project_id,  
173 - 'data-comment-id' => $model->comment_id,  
174 - 'class' => 'artbox_project_make_performer'.(($model->state == $model::STATE_PERFORMER)?' active':''),  
175 - ]);  
176 - echo Html::a('отказать', [ '#' ], [  
177 - 'data-project-id' => $model->owner->project_id,  
178 - 'data-comment-id' => $model->comment_id,  
179 - 'class' => 'artbox_project_make_deny'.(($model->state == $model::STATE_DENY)?' active':''),  
180 - ]); 141 + switch($model->state) {
  142 + case 1:
  143 + echo 'Предложение не рассмотрено';
  144 + break;
  145 + case 2:
  146 + echo 'Исполнитель поставлен на рассмотрение';
  147 + break;
  148 + case 3:
  149 + echo 'Исполнитель назначен исполнителем';
  150 + break;
  151 + case 4:
  152 + echo 'Вы отказали данному исполнителю';
  153 + break;
  154 + case 5:
  155 + echo 'Исполнитель отказался от данного предложения';
  156 + break;
  157 + }
181 ?> 158 ?>
182 - </div> 159 + </p>
183 </div> 160 </div>
184 <?php 161 <?php
  162 + if($model->state != $model::STATE_TRASH) {
  163 + ?>
  164 + <div class="project_owner_control">
  165 + <span>Отметить как: </span>
  166 + <p class="new_mark_"></p>
  167 + <div>
  168 + <?php
  169 + echo Html::a('новый', [ '#' ], [
  170 + 'data-project-id' => $model->owner->project_id,
  171 + 'data-comment-id' => $model->comment_id,
  172 + 'class' => 'artbox_project_make_new' . ( ( $model->state == $model::STATE_NEW ) ? ' active' : '' ),
  173 + ]);
  174 + echo Html::a('кандидат', [ '#' ], [
  175 + 'data-project-id' => $model->owner->project_id,
  176 + 'data-comment-id' => $model->comment_id,
  177 + 'class' => 'artbox_project_make_candidate' . ( ( $model->state == $model::STATE_CANDIDATE ) ? ' active' : '' ),
  178 + ]);
  179 + echo Html::a('исполнитель', [ '#' ], [
  180 + 'data-project-id' => $model->owner->project_id,
  181 + 'data-comment-id' => $model->comment_id,
  182 + 'class' => 'artbox_project_make_performer' . ( ( $model->state == $model::STATE_PERFORMER ) ? ' active' : '' ),
  183 + ]);
  184 + echo Html::a('отказать', [ '#' ], [
  185 + 'data-project-id' => $model->owner->project_id,
  186 + 'data-comment-id' => $model->comment_id,
  187 + 'class' => 'artbox_project_make_deny' . ( ( $model->state == $model::STATE_DENY ) ? ' active' : '' ),
  188 + ]);
  189 + ?>
  190 + </div>
  191 + </div>
  192 + <?php
  193 + }
185 } 194 }
186 - }  
187 ?> 195 ?>
188 </div> 196 </div>
189 197
common/modules/comment/widgets/views/_review_comment_view.php
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 * @var User $user 15 * @var User $user
16 */ 16 */
17 $user = $model->user; 17 $user = $model->user;
18 - $model->buildButtons(['delete']); 18 + $model->buildButtons([ 'delete' ]);
19 ?> 19 ?>
20 <div class="comments-name <?= CommentWidget::$baseClass[ 'comment_author' ] ?>"> 20 <div class="comments-name <?= CommentWidget::$baseClass[ 'comment_author' ] ?>">
21 <?= $model->getAuthor(' (Гость)') ?> 21 <?= $model->getAuthor(' (Гость)') ?>
@@ -31,9 +31,14 @@ @@ -31,9 +31,14 @@
31 <?php 31 <?php
32 if(!empty( $model->rating )) { 32 if(!empty( $model->rating )) {
33 echo StarRating::widget([ 33 echo StarRating::widget([
34 - 'name' => 'rating_review_comment',  
35 - 'value' => $model->rating->value,  
36 - 'pluginOptions' => ['displayOnly' => true] 34 + 'name' => 'rating_review_comment',
  35 + 'value' => $model->rating->value,
  36 + 'pluginOptions' => [
  37 + 'displayOnly' => true,
  38 + 'min' => 0,
  39 + 'max' => 10,
  40 + 'stars' => 10,
  41 + ],
37 ]); 42 ]);
38 } 43 }
39 ?> 44 ?>
@@ -43,7 +48,7 @@ @@ -43,7 +48,7 @@
43 <div> 48 <div>
44 <?php 49 <?php
45 if(!empty( $model->buttons[ 'delete' ] )) { 50 if(!empty( $model->buttons[ 'delete' ] )) {
46 - echo Html::a(($model->user_id != NULL && $model->user_id == \Yii::$app->user->id)?'Удалить':'Пожаловаться ', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]); 51 + echo Html::a(( $model->user_id != NULL && $model->user_id == \Yii::$app->user->id ) ? 'Удалить' : 'Пожаловаться ', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]);
47 } 52 }
48 if(!empty( $model->buttons[ 'update' ] )) { 53 if(!empty( $model->buttons[ 'update' ] )) {
49 echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]); 54 echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]);
common/modules/comment/widgets/views/form-comment-review.php
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 use yii\web\View; 11 use yii\web\View;
12 use yii\widgets\ActiveForm; 12 use yii\widgets\ActiveForm;
13 use yii\helpers\Html; 13 use yii\helpers\Html;
  14 +
14 ?> 15 ?>
15 <?php 16 <?php
16 if(!empty( $dataProvider )) { 17 if(!empty( $dataProvider )) {
@@ -32,7 +33,17 @@ @@ -32,7 +33,17 @@
32 } 33 }
33 echo $form->field(( !empty( $model->rating ) ? $model->rating : $rating ), 'value') 34 echo $form->field(( !empty( $model->rating ) ? $model->rating : $rating ), 'value')
34 ->label(false) 35 ->label(false)
35 - ->widget(StarRating::className(), ['pluginOptions' => ['size'=>'xxs', 'step' => 1, 'value' => 2, 'showCaption' => false]]); 36 + ->widget(StarRating::className(), [
  37 + 'pluginOptions' => [
  38 + 'size' => 'xxs',
  39 + 'step' => 1,
  40 + 'value' => 2,
  41 + 'showCaption' => false,
  42 + 'stars' => 10,
  43 + 'min' => 0,
  44 + 'max' => 10,
  45 + ],
  46 + ]);
36 if($model->scenario == $model::SCENARIO_GUEST) { 47 if($model->scenario == $model::SCENARIO_GUEST) {
37 echo $form->field($model, 'user_name', [ 48 echo $form->field($model, 'user_name', [
38 'options' => [ 49 'options' => [
@@ -56,7 +67,7 @@ @@ -56,7 +67,7 @@
56 if(!empty( $model->comment_pid )) { 67 if(!empty( $model->comment_pid )) {
57 echo Html::tag('div', Html::activeHiddenInput($model, 'comment_pid') . Html::tag('p', $model->parent->author, [ 'class' => 'artbox_comment_reply_author' ]), [ 'class' => CommentWidget::$baseClass[ 'reply_block' ] ]); 68 echo Html::tag('div', Html::activeHiddenInput($model, 'comment_pid') . Html::tag('p', $model->parent->author, [ 'class' => 'artbox_comment_reply_author' ]), [ 'class' => CommentWidget::$baseClass[ 'reply_block' ] ]);
58 } else { 69 } else {
59 - echo Html::tag('div', '', [ 'class' => CommentWidget::$baseClass[ 'reply_block' ].' test_class' ]); 70 + echo Html::tag('div', '', [ 'class' => CommentWidget::$baseClass[ 'reply_block' ] . ' test_class' ]);
60 } 71 }
61 echo $form->field($model, 'text', [ 72 echo $form->field($model, 'text', [
62 'options' => [ 73 'options' => [
common/modules/comment/widgets/views/form-comment.php
@@ -19,11 +19,16 @@ @@ -19,11 +19,16 @@
19 if($rating) { 19 if($rating) {
20 echo $form->field(( !empty( $model->rating ) ? $model->rating : $rating ), 'value') 20 echo $form->field(( !empty( $model->rating ) ? $model->rating : $rating ), 'value')
21 ->label(false) 21 ->label(false)
22 - ->widget(StarRating::className(), [ 'pluginOptions' => [ 'size' => 'xxs',  
23 - 'step' => 1,  
24 - 'value' => 2,  
25 - 'showCaption' => false,  
26 - ], 22 + ->widget(StarRating::className(), [
  23 + 'pluginOptions' => [
  24 + 'size' => 'xxs',
  25 + 'step' => 1,
  26 + 'value' => 2,
  27 + 'showCaption' => false,
  28 + 'min' => 0,
  29 + 'max' => 10,
  30 + 'stars' => 10,
  31 + ],
27 ]); 32 ]);
28 } 33 }
29 34
common/modules/comment/widgets/views/project_comment_view.php
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 ->with('userInfo') 19 ->with('userInfo')
20 ->one(); 20 ->one();
21 } 21 }
22 - $model->buildButtons(['delete']); 22 + $model->buildButtons([ 'delete' ]);
23 ?> 23 ?>
24 <div class="new-portf-comm-read artbox_comment_container" data-key="<?= $model->comment_id ?>" data-form="<?= $model->formName() ?>"> 24 <div class="new-portf-comm-read artbox_comment_container" data-key="<?= $model->comment_id ?>" data-form="<?= $model->formName() ?>">
25 <div class="style"> 25 <div class="style">
@@ -49,9 +49,15 @@ @@ -49,9 +49,15 @@
49 <?php 49 <?php
50 if($rating = $model->hasRating()) { 50 if($rating = $model->hasRating()) {
51 echo StarRating::widget([ 51 echo StarRating::widget([
52 - 'name' => 'rating_project_comment',  
53 - 'value' => $rating->value,  
54 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 52 + 'name' => 'rating_project_comment',
  53 + 'value' => $rating->value,
  54 + 'pluginOptions' => [
  55 + 'displayOnly' => true,
  56 + 'size' => 'xxs',
  57 + 'min' => 0,
  58 + 'max' => 10,
  59 + 'stars' => 10,
  60 + ],
55 ]); 61 ]);
56 } 62 }
57 ?> 63 ?>
@@ -69,7 +75,7 @@ @@ -69,7 +75,7 @@
69 <div> 75 <div>
70 <?php 76 <?php
71 if(!empty( $model->buttons[ 'delete' ] )) { 77 if(!empty( $model->buttons[ 'delete' ] )) {
72 - echo Html::a(($model->user_id != NULL && $model->user_id == \Yii::$app->user->id)?'Удалить':'Пожаловаться ', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]); 78 + echo Html::a(( $model->user_id != NULL && $model->user_id == \Yii::$app->user->id ) ? 'Удалить' : 'Пожаловаться ', $model->buttons[ 'delete' ], [ 'class' => CommentWidget::$baseClass[ 'comment_delete' ] ]);
73 } 79 }
74 if(!empty( $model->buttons[ 'update' ] )) { 80 if(!empty( $model->buttons[ 'update' ] )) {
75 echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]); 81 echo Html::a('Редактировать', $model->buttons[ 'update' ], [ 'class' => CommentWidget::$baseClass[ 'comment_update' ] ]);
common/modules/file/widgets/ImageUploader.php
1 <?php 1 <?php
2 -/**  
3 - * Created by PhpStorm.  
4 - * User: vitaliy  
5 - * Date: 05.10.15  
6 - * Time: 16:18  
7 - */  
8 2
9 namespace common\modules\file\widgets; 3 namespace common\modules\file\widgets;
10 use yii\base\Widget; 4 use yii\base\Widget;
common/modules/file/widgets/views/image_sizer.php
@@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
4 $field_name = mb_strtolower($model->formName()) . "-" . $field; 4 $field_name = mb_strtolower($model->formName()) . "-" . $field;
5 5
6 $id = $model->tableSchema->primaryKey[ 0 ]; 6 $id = $model->tableSchema->primaryKey[ 0 ];
7 -  
8 ?> 7 ?>
9 <div class="file-uploader-block"> 8 <div class="file-uploader-block">
10 <?php if(!$multi): ?> 9 <?php if(!$multi): ?>
@@ -40,7 +39,6 @@ @@ -40,7 +39,6 @@
40 $( 39 $(
41 function() 40 function()
42 { 41 {
43 -  
44 $("#<?= $field?>").fileupload( 42 $("#<?= $field?>").fileupload(
45 { 43 {
46 dataType : 'json', formData : {size : '<?= json_encode($size)?>'}, 44 dataType : 'json', formData : {size : '<?= json_encode($size)?>'},
@@ -66,7 +64,7 @@ @@ -66,7 +64,7 @@
66 block.append(img); 64 block.append(img);
67 block.parents('.file-uploader-block').parent() 65 block.parents('.file-uploader-block').parent()
68 .addClass('success_download'); 66 .addClass('success_download');
69 - $("#<?=$field_name?>").val(data.result.link); 67 + $("#<?=$field_name?>").val(data.result.link).trigger('change');
70 $("#<?=$field?>_new_img").val(data.result.link); 68 $("#<?=$field?>_new_img").val(data.result.link);
71 } 69 }
72 } 70 }
@@ -90,7 +88,7 @@ @@ -90,7 +88,7 @@
90 { 88 {
91 } 89 }
92 ); 90 );
93 - $("#<?=$field_name?>").val(new_url); 91 + $("#<?=$field_name?>").val(new_url).trigger('change');
94 } 92 }
95 ); 93 );
96 94
@@ -101,7 +99,9 @@ @@ -101,7 +99,9 @@
101 .removeClass('success_download'); 99 .removeClass('success_download');
102 $("#<?= $field?>_img_block").parent().parent().find('.admin-ava-wr') 100 $("#<?= $field?>_img_block").parent().parent().find('.admin-ava-wr')
103 .remove(); 101 .remove();
104 - 102 + if($(this).hasClass('remover_image')) {
  103 + $('#<?=$field?>_new_img').val('');
  104 + }
105 $("#<?=$field?>_buttons_block").remove(); 105 $("#<?=$field?>_buttons_block").remove();
106 var old_url = $('#<?=$field?>_old_img').val(); 106 var old_url = $('#<?=$field?>_old_img').val();
107 var new_url = $('#<?=$field?>_new_img').val(); 107 var new_url = $('#<?=$field?>_new_img').val();
@@ -112,10 +112,16 @@ @@ -112,10 +112,16 @@
112 ); 112 );
113 <?php 113 <?php
114 if($remover) { 114 if($remover) {
115 - echo "$(\"#$field_name\").val('');  
116 - $('#{$field}_img_block').find('img').remove();"; 115 + echo "if(old_url.length<1 || new_url.length<1) {
  116 + $(\"#$field_name\").val('');
  117 + $('#{$field}_img_block').find('img').remove();
  118 + } else {
  119 + $(\"#$field_name\").val(old_url).trigger('change');
  120 + $('#{$field}_remove_img').append('<img src=\'/images/delete-ico.png\'>');
  121 + $('#{$field}_img_block').find('.admin-avatar-pattern').append('<img src=\"'+old_url+'\">');
  122 + }";
117 } else { 123 } else {
118 - echo "$(\"#$field_name\").val(old_url); 124 + echo "$(\"#$field_name\").val(old_url).trigger('change');
119 if(old_url.length<=1){ 125 if(old_url.length<=1){
120 $('#{$field}_img_block').find('img').remove() 126 $('#{$field}_img_block').find('img').remove()
121 } 127 }
common/modules/fileloader/models/Fileloader.php
@@ -46,6 +46,7 @@ class Fileloader extends \yii\db\ActiveRecord @@ -46,6 +46,7 @@ class Fileloader extends \yii\db\ActiveRecord
46 public function rules() 46 public function rules()
47 { 47 {
48 return [ 48 return [
  49 + [['files'], 'file', 'maxSize' => 5242880],
49 [['status'], 'integer'], 50 [['status'], 'integer'],
50 [['name'], 'string', 'max' => 50], 51 [['name'], 'string', 'max' => 50],
51 [['dir'], 'string', 'max' => 255], 52 [['dir'], 'string', 'max' => 255],
common/modules/fileloader/resources/handler.js
@@ -23,6 +23,7 @@ $(function() { @@ -23,6 +23,7 @@ $(function() {
23 data.result.result.input + '<p class="fileloader-item-name">'+ 23 data.result.result.input + '<p class="fileloader-item-name">'+
24 '<a href="'+data.result.result.file_href+'" target="_blank">'+data.result.result.file_name+'</a></p>'+'<span class="fileloader-item-remove glyphicon glyphicon-remove"></span>'+ 24 '<a href="'+data.result.result.file_href+'" target="_blank">'+data.result.result.file_name+'</a></p>'+'<span class="fileloader-item-remove glyphicon glyphicon-remove"></span>'+
25 '</div>'; 25 '</div>';
  26 + $('#modal_form_contacts .contacts-form-help span').css({display:'none'});
26 if(!multiple) { 27 if(!multiple) {
27 var inputs = $(wrapper).find('.fileloader-item-remove'); 28 var inputs = $(wrapper).find('.fileloader-item-remove');
28 $.each(inputs, function(i, v) { 29 $.each(inputs, function(i, v) {
@@ -36,7 +37,6 @@ $(function() { @@ -36,7 +37,6 @@ $(function() {
36 } 37 }
37 }); 38 });
38 } 39 }
39 -  
40 $(document).on('click', '.fileloader-item-remove', function(e) { 40 $(document).on('click', '.fileloader-item-remove', function(e) {
41 var wrapper = $(this).parents('.fileloader-item-wrapper').first(); 41 var wrapper = $(this).parents('.fileloader-item-wrapper').first();
42 var id = $(wrapper).data('id'); 42 var id = $(wrapper).data('id');
@@ -47,6 +47,7 @@ $(function() { @@ -47,6 +47,7 @@ $(function() {
47 }, 47 },
48 function(data) {} 48 function(data) {}
49 ); 49 );
  50 + $('#modal_form_contacts .contacts-form-help span').css({display:'block'});
50 $(wrapper).remove(); 51 $(wrapper).remove();
51 }); 52 });
52 }); 53 });
common/widgets/views/phone_field.php
1 <?php 1 <?php
2 use yii\helpers\Html; 2 use yii\helpers\Html;
3 - use yii\widgets\MaskedInput;  
4 3
5 ?> 4 ?>
6 <fieldset> 5 <fieldset>
7 6
8 <div class="field_list"> 7 <div class="field_list">
9 8
  9 + <?php $t = 0;
10 10
11 - <?php $t = 0; 11 + $label = 0; // add this var
12 12
13 - $label = 0; // add this var  
14 -  
15 - for($i=1; $i <= count($model); $i++):  
16 - $row = $i;  
17 -  
18 - ?>  
19 -  
20 - <?= Html::beginTag('div',['class'=>'form-group','id'=>isset($model[$i]['parent_key']) ? $model[$i]['parent_key'] : 0 ])?>  
21 - <div class="input-blocks">  
22 - <label for="cont-phone-<?= ++$label ?>">Телефон</label>  
23 - <input id="cont-phone-<?= $label ?>" type="tel" pattern="^\+?(?:\d{0,3})?[\(\s]?\d{0,5}[\)\s]?\d{3}[-\s]?\d{2}[-\s]?\d{2}$" placeholder="+xx(xxx)xxx-xx-xx" class="form-control custom-input-2" value="<?= isset($model[$t]['value']) ? $model[$t]['value'] : '' ?>" name="Fields[phone][<?=$row?>][0][phone]" />  
24 - </div>  
25 - <span data-id="<?= isset($model[$i]['parent_key']) ? $model[$i]['parent_key'] : 0 ?>" title="<?= Yii::t('app','add') ?>" class="glyphicon glyphicon-trash delete-field-item"></span>  
26 - <?= Html::endTag('div')?>  
27 - <?php $i = ++ $t; ?>  
28 - <?php endfor; ?> 13 + for($i = 1; $i <= count($model); $i++):
  14 + $row = $i;
  15 + ?>
  16 + <?= Html::beginTag('div', [
  17 + 'class' => 'form-group form-group-phone-' . ( isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0 ),
  18 + 'id' => isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0,
  19 + ]) ?>
  20 + <div class="input-blocks">
  21 + <label for="cont-phone-<?= ++$label ?>">Телефон</label>
  22 + <input id="cont-phone-<?= $label ?>" type="tel" placeholder="+xx(xxx)xxx-xx-xx" class="form-control custom-input-2" value="<?= isset( $model[ $t ][ 'value' ] ) ? $model[ $t ][ 'value' ] : '' ?>" name="Fields[phone][<?= $row ?>][0][phone]"/>
  23 + </div>
  24 + <div class="help-block"></div>
  25 + <span data-id="<?= isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0 ?>" title="<?= Yii::t('app', 'add') ?>" class="glyphicon glyphicon-trash delete-field-item"></span>
  26 + <?php
  27 + $js = "
  28 + var id = 'cont-phone-" . $label . "';
  29 + $('#w0').yiiActiveForm('add', {
  30 + container: '.form-group-phone-" . ( isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0 ) . "',
  31 + error: '.help-block',
  32 + id: id,
  33 + input: '#'+id,
  34 + name: 'Fields[phone][" . $row . "][0][phone]',
  35 + validate: function(attribute, value, messages, deferred) {yii.validation.regularExpression(value, messages, {'pattern':/^\+?(?:\d{0,3})?[\(\s]?\d{0,5}[\)\s]?\d{3}[-\s]?\d{2}[-\s]?\d{2}$/,'not':false,'message':'Телефон введен неверно . ','skipOnEmpty':1});}
  36 + });
  37 + ";
  38 + $this->registerJs($js, $this::POS_LOAD);
  39 + ?>
  40 + <?= Html::endTag('div') ?>
  41 + <?php $i = ++$t; ?>
  42 + <?php endfor; ?>
29 43
30 </div> 44 </div>
31 <p class="btn btn-success add_field_<?= $this->context->id ?>">Добавить еще</p> 45 <p class="btn btn-success add_field_<?= $this->context->id ?>">Добавить еще</p>
32 46
33 </fieldset> 47 </fieldset>
34 -<script>  
35 - var start_i_<?=$this->context->id?> = <?=$i?>;  
36 - var start_label_<?=$this->context->id?> = <?=$label?>; // add this var  
37 - $( document ).ready(function(){  
38 - $('.add_field_<?=$this->context->id?>').click(function(){  
39 - var block = $ (this)  
40 - .siblings('.field_list');  
41 - var block_id = $(this).parent('fieldset');  
42 - var sub_block = '<div class="form-group" >'+  
43 - '<div class="input-blocks">'+  
44 - '<label for="cont-phone-' + ++start_label_<?=$this->context->id?> +'">Телефон</label>'+  
45 - '<input id="cont-phone-' + start_label_<?=$this->context->id?> +'" type="tel" pattern="^\\+?(?:\\d{0,3})?[\\(\\s]?\\d{0,5}[\\)\\s]?\\d{3}[-\\s]?\\d{2}[-\\s]?\\d{2}$" placeholder="+xx(xxx)xxx-xx-xx" class="form-control custom-input-2" value="" name="Fields[phone]['+ start_i_<?=$this->context->id?>++ +'][0][phone]" />'+  
46 - '</div>'+  
47 - '<span class="glyphicon glyphicon-trash delete-field-item custom-remove-ico"></span>'+  
48 - '<div>';  
49 -// console.log(block);  
50 - block.append(sub_block);  
51 -  
52 - });  
53 - });  
54 -</script> 48 +<?php
  49 + $js = "
  50 + var start_i_" . $this->context->id . " = " . $i . ";
  51 + var start_label_" . $this->context->id . " = " . $label . ";
  52 + $(document).on('click', '.add_field_" . $this->context->id . "', function() {
  53 + var block = $(this)
  54 + .siblings('.field_list');
  55 + var block_id = $(this).parent('fieldset');
  56 + ++start_label_" . $this->context->id . ";
  57 + var sub_block = '<div class=\"form-group form-group-phone-'+start_label_" . $this->context->id . "+'\" >' + '<div class=\"input-blocks\">' + '<label for=\"cont-phone-' + start_label_" . $this->context->id . " + '\">Телефон</label>' + '<input id=\"cont-phone-' + start_label_" . $this->context->id . " + '\" type=\"tel\" placeholder=\"+xx(xxx)xxx-xx-xx\" class=\"form-control custom-input-2\" value=\"\" name=\"Fields[phone][' + start_i_" . $this->context->id . "++ + '][0][phone]\" />' + '</div><div class=\"help-block\"></div><span class=\"glyphicon glyphicon-trash delete-field-item custom-remove-ico\"></span>' + '<div>';
  58 + block.append(sub_block);
  59 + $('#w0').yiiActiveForm('add', {
  60 + container: '.form-group-phone-'+start_label_" . $this->context->id . ",
  61 + error: '.help-block',
  62 + id: 'cont-phone-'+start_label_" . $this->context->id . ",
  63 + input: '#cont-phone-'+start_label_" . $this->context->id . ",
  64 + name: 'Fields[phone][' + start_label_" . $this->context->id . "++ + '][0][phone]',
  65 + validate: function(attribute, value, messages, deferred) {yii.validation.regularExpression(value, messages, {'pattern':/^\+?(?:\d{0,3})?[\(\s]?\d{0,5}[\)\s]?\d{3}[-\s]?\d{2}[-\s]?\d{2}$/,'not':false,'message':'Телефон введен неверно . ','skipOnEmpty':1});}
  66 + });
  67 + });
  68 + ";
  69 + $this->registerJs($js, $this::POS_LOAD);
  70 +?>
55 71
56 72
common/widgets/views/site_field.php
1 <?php 1 <?php
2 -use yii\behaviors\SluggableBehavior;  
3 -use yii\helpers\Html; 2 + use yii\helpers\Html;
4 3
5 ?> 4 ?>
6 <fieldset> 5 <fieldset>
7 6
8 -  
9 <div class="field_list"> 7 <div class="field_list">
10 8
  9 + <?php $t = 0;
11 10
12 - <?php $t = 0;  
13 -  
14 - $label = 0;  
15 -  
16 - for($i=1; $i <= count($model); $i++):  
17 - $row = $i; 11 + $label = 0;
18 12
19 - ?>  
20 -  
21 - <?= Html::beginTag('div',['class'=>'form-group','id'=>isset($model[$i]['parent_key']) ? $model[$i]['parent_key'] : 0 ])?>  
22 - <div class="input-blocks">  
23 - <label for="cont-site-<?= ++$label ?>">Сайт</label>  
24 - <input id="cont-site-<?= $label ?>" type="url" placeholder="http://" class="form-control custom-input-2" value="<?= isset($model[$t]['value']) ? $model[$t]['value'] : '' ?>" name="Fields[site][<?=$row?>][0][site]" />  
25 - </div>  
26 - <span data-id="<?= isset($model[$i]['parent_key']) ? $model[$i]['parent_key'] : 0 ?>" title="<?= Yii::t('app','add') ?>" class="glyphicon glyphicon-trash delete-field-item"></span>  
27 - <?= Html::endTag('div')?>  
28 - <?php $i = ++ $t; ?>  
29 - <?php endfor; ?> 13 + for($i = 1; $i <= count($model); $i++):
  14 + $row = $i;
  15 + ?>
  16 + <?= Html::beginTag('div', [
  17 + 'class' => 'form-group form-group-site-'. ( isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0 ),
  18 + 'id' => isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0,
  19 + ]) ?>
  20 + <div class="input-blocks">
  21 + <label for="cont-site-<?= ++$label ?>">Сайт</label>
  22 + <input id="cont-site-<?= $label ?>" type="text" placeholder="http://" class="form-control custom-input-2" value="<?= isset( $model[ $t ][ 'value' ] ) ? $model[ $t ][ 'value' ] : '' ?>" name="Fields[site][<?= $row ?>][0][site]"/>
  23 + </div>
  24 + <div class="help-block"></div>
  25 + <span data-id="<?= isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0 ?>" title="<?= Yii::t('app', 'add') ?>" class="glyphicon glyphicon-trash delete-field-item"></span>
  26 + <?php
  27 + $js = "
  28 + var id = 'cont-site-" . $label . "';
  29 + $('#w0').yiiActiveForm('add', {
  30 + container: '.form-group-site-" . ( isset( $model[ $i ][ 'parent_key' ] ) ? $model[ $i ][ 'parent_key' ] : 0 ) . "',
  31 + error: '.help-block',
  32 + id: id,
  33 + input: '#'+id,
  34 + name: 'Fields[site][" . $row . "][0][site]',
  35 + validate: function(attribute, value, messages, deferred) {yii.validation.url(value, messages, {\"pattern\":/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i,\"message\":\"Введенный адрес не является правильным URL.\",\"enableIDN\":false,\"skipOnEmpty\":1});}
  36 + });
  37 + ";
  38 + $this->registerJs($js, $this::POS_LOAD);
  39 + ?>
  40 + <?= Html::endTag('div') ?>
  41 + <?php $i = ++$t; ?>
  42 + <?php endfor; ?>
30 </div> 43 </div>
31 - <p class="btn btn-success add_field_<?= $this->context->id ?>"><?= Yii::t('app','add_more') ?></p> 44 + <p class="btn btn-success add_field_<?= $this->context->id ?>"><?= Yii::t('app', 'add_more') ?></p>
32 45
33 </fieldset> 46 </fieldset>
34 -<script>  
35 - var start_i_<?=$this->context->id?> = <?=$i?>;  
36 - var start_label_<?=$this->context->id?> = <?=$label?>; // add this var  
37 - $( document ).ready(function(){  
38 - $('.add_field_<?=$this->context->id?>').click(function(){  
39 - var block = $ (this)  
40 - .siblings('.field_list');  
41 - var block_id = $(this).parent('fieldset');  
42 - var sub_block = '<div class="form-group" >'+  
43 -  
44 - '<div class="input-blocks">'+  
45 - '<label for="cont-site-' + ++start_label_<?=$this->context->id?> +'">Сайт</label>'+  
46 - '<input id="cont-site-' + start_label_<?=$this->context->id?> +'" type="url" placeholder="http://" class="form-control custom-input-2" value="" name="Fields[site]['+ start_i_<?=$this->context->id?>++ +'][0][site]" />'+  
47 - '</div>'+  
48 - '<span title="<?= Yii::t('app','add') ?>" class="glyphicon glyphicon-trash delete-field-item"></span>'+  
49 - '<div>';  
50 - block.append(sub_block);  
51 -  
52 - });  
53 - });  
54 -</script> 47 +<?php
  48 + $js = "
  49 + var start_i_" . $this->context->id . " = " . $i . ";
  50 + var start_label_" . $this->context->id . " = " . $label . ";
  51 + $(document).on('click', '.add_field_" . $this->context->id . "', function() {
  52 + var block = $(this)
  53 + .siblings('.field_list');
  54 + var block_id = $(this).parent('fieldset');
  55 + ++start_label_" . $this->context->id . ";
  56 + var sub_block = '<div class=\"form-group form-group-site-'+start_label_" . $this->context->id . "+'\" >' + '<div class=\"input-blocks\">' + '<label for=\"cont-site-' + start_label_" . $this->context->id . " + '\">Сайт</label>' + '<input id=\"cont-site-' + start_label_" . $this->context->id . " + '\" type=\"text\" placeholder=\"http://\" class=\"form-control custom-input-2\" value=\"\" name=\"Fields[site][' + start_i_" . $this->context->id . "++ + '][0][site]\" />' + '</div><div class=\"help-block\"></div><span class=\"glyphicon glyphicon-trash delete-field-item custom-remove-ico\"></span>' + '<div>';
  57 + block.append(sub_block);
  58 + $('#w0').yiiActiveForm('add', {
  59 + container: '.form-group-site-'+start_label_" . $this->context->id . ",
  60 + error: '.help-block',
  61 + id: 'cont-site-'+start_label_" . $this->context->id . ",
  62 + input: '#cont-site-'+start_label_" . $this->context->id . ",
  63 + name: 'Fields[site][' + start_label_" . $this->context->id . "++ + '][0][site]',
  64 + validate: function(attribute, value, messages, deferred) {yii.validation.url(value, messages, {\"pattern\":/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i,\"message\":\"Введенный адрес не является правильным URL.\",\"enableIDN\":false,\"skipOnEmpty\":1});}
  65 + });
  66 + });
  67 + ";
  68 + $this->registerJs($js, $this::POS_LOAD);
  69 +?>
55 70
56 71
console/migrations/m160519_124222_create_feedback_company.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\db\Migration;
  4 +
  5 +/**
  6 + * Handles the creation for table `feedback_company`.
  7 + */
  8 +class m160519_124222_create_feedback_company extends Migration
  9 +{
  10 + /**
  11 + * @inheritdoc
  12 + */
  13 + public function up()
  14 + {
  15 + $this->createTable('feedback_company', [
  16 + 'feedback_company_id' => $this->primaryKey(),
  17 + 'date_add' => $this->integer()->notNull(),
  18 + 'name' => $this->string()->notNull(),
  19 + 'phone' => $this->string()->notNull(),
  20 + 'ip' => $this->string()->notNull(),
  21 + 'user_id' => $this->integer()->notNull(),
  22 + 'status' => $this->integer()->notNull()->defaultValue(1),
  23 + ]);
  24 +
  25 + $this->addForeignKey('feedback_company_user', '{{%feedback_company}}', 'user_id', '{{%user}}', 'id', 'CASCADE', 'CASCADE');
  26 + }
  27 +
  28 + /**
  29 + * @inheritdoc
  30 + */
  31 + public function down()
  32 + {
  33 + $this->dropForeignKey('feedback_company_user', '{{%feedback_company}}');
  34 + $this->dropTable('feedback_company');
  35 + }
  36 +}
frontend/controllers/AccountsController.php
@@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
8 use common\models\Currency; 8 use common\models\Currency;
9 use common\models\Department; 9 use common\models\Department;
10 use common\models\Employment; 10 use common\models\Employment;
  11 + use common\models\FeedbackCompany;
  12 + use common\models\FeedbackCompanySearch;
11 use common\models\Fields; 13 use common\models\Fields;
12 use common\models\File; 14 use common\models\File;
13 use common\models\Gallery; 15 use common\models\Gallery;
@@ -40,6 +42,7 @@ @@ -40,6 +42,7 @@
40 use yii\filters\VerbFilter; 42 use yii\filters\VerbFilter;
41 use yii\web\Controller; 43 use yii\web\Controller;
42 use yii\web\NotFoundHttpException; 44 use yii\web\NotFoundHttpException;
  45 + use yii\web\Response;
43 use yii\web\UploadedFile; 46 use yii\web\UploadedFile;
44 47
45 /** 48 /**
@@ -59,7 +62,6 @@ @@ -59,7 +62,6 @@
59 'class' => AccessControl::className(), 62 'class' => AccessControl::className(),
60 'rules' => [ 63 'rules' => [
61 [ 64 [
62 - //'actions' => ['cabinet','change-password', 'bookmarks', 'projects'],  
63 'allow' => true, 65 'allow' => true,
64 'roles' => [ '@' ], 66 'roles' => [ '@' ],
65 ], 67 ],
@@ -74,6 +76,8 @@ @@ -74,6 +76,8 @@
74 'projects-delete' => [ 'POST' ], 76 'projects-delete' => [ 'POST' ],
75 'blog-delete' => [ 'POST' ], 77 'blog-delete' => [ 'POST' ],
76 'gallery-cover' => [ 'POST' ], 78 'gallery-cover' => [ 'POST' ],
  79 + 'feedback-delete' => [ 'POST' ],
  80 + 'feedback-read' => [ 'POST' ],
77 ], 81 ],
78 ], 82 ],
79 ]; 83 ];
@@ -87,7 +91,14 @@ @@ -87,7 +91,14 @@
87 'status' => 2, 91 'status' => 2,
88 ]) 92 ])
89 ->count(); 93 ->count();
  94 + $feedback_company_count = FeedbackCompany::find()
  95 + ->where([
  96 + 'user_id' => \Yii::$app->user->id,
  97 + 'status' => FeedbackCompany::STATUS_NEW,
  98 + ])
  99 + ->count();
90 $this->view->params[ 'portfolio_user_count' ] = $portfolio_user_count; 100 $this->view->params[ 'portfolio_user_count' ] = $portfolio_user_count;
  101 + $this->view->params[ 'feedback_company_count' ] = $feedback_company_count;
91 return parent::beforeAction($action); // TODO: Change the autogenerated stub 102 return parent::beforeAction($action); // TODO: Change the autogenerated stub
92 } 103 }
93 104
@@ -288,6 +299,86 @@ @@ -288,6 +299,86 @@
288 } 299 }
289 300
290 /** 301 /**
  302 + * Page of Company feedback
  303 + * @return string
  304 + */
  305 + public function actionFeedbackCompany()
  306 + {
  307 + $searchModel = new FeedbackCompanySearch();
  308 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  309 + $dataProvider->pagination = [
  310 + 'pageSize' => 20,
  311 + ];
  312 + $dataProvider->sort = new Sort([
  313 + 'defaultOrder' => [
  314 + 'status' => SORT_ASC,
  315 + 'date_add' => SORT_DESC,
  316 + ],
  317 + ]);
  318 +
  319 + return $this->render('feedback-company', [
  320 + 'searchModel' => $searchModel,
  321 + 'dataProvider' => $dataProvider,
  322 + ]);
  323 + }
  324 +
  325 + /**
  326 + * Delete company feedback
  327 + *
  328 + * @param int $id
  329 + *
  330 + * @return Response
  331 + * @throws NotFoundHttpException
  332 + * @throws \Exception
  333 + */
  334 + public function actionFeedbackDelete($id)
  335 + {
  336 + $model = FeedbackCompany::find()
  337 + ->where([
  338 + 'feedback_company_id' => $id,
  339 + 'user_id' => \Yii::$app->user->id,
  340 + ])
  341 + ->one();
  342 +
  343 + if(empty( $model )) {
  344 + throw new NotFoundHttpException('Заявка не найдена');
  345 + } else {
  346 + $model->delete();
  347 + return $this->redirect([ 'accounts/feedback-company' ]);
  348 + }
  349 + }
  350 +
  351 + /**
  352 + * Mark feedback as read
  353 + *
  354 + * @param int $id
  355 + *
  356 + * @return Response
  357 + * @throws NotFoundHttpException
  358 + */
  359 + public function actionFeedbackRead($id)
  360 + {
  361 + $model = FeedbackCompany::find()
  362 + ->where([
  363 + 'feedback_company_id' => $id,
  364 + 'user_id' => \Yii::$app->user->id,
  365 + ])
  366 + ->andWhere([
  367 + 'not',
  368 + [ 'status' => FeedbackCompany::STATUS_READ ],
  369 + ])
  370 + ->one();
  371 +
  372 + if(empty( $model )) {
  373 + throw new NotFoundHttpException('Заявка не найдена');
  374 + } else {
  375 + $model->status = FeedbackCompany::STATUS_READ;
  376 + $model->save(false);
  377 + return $this->redirect([ 'accounts/feedback-company' ]);
  378 + }
  379 + }
  380 +
  381 + /**
291 * Page of User's image galleries 382 * Page of User's image galleries
292 * @return string 383 * @return string
293 */ 384 */
@@ -1041,7 +1132,7 @@ @@ -1041,7 +1132,7 @@
1041 $user->new_password = $post[ 'new_password' ]; 1132 $user->new_password = $post[ 'new_password' ];
1042 } 1133 }
1043 if(empty( $post[ 'old_password' ] )) { 1134 if(empty( $post[ 'old_password' ] )) {
1044 - $user->addError('old_password', 'Введите новый пароль'); 1135 + $user->addError('old_password', 'Введите старый пароль');
1045 } else { 1136 } else {
1046 $user->old_password = $post[ 'old_password' ]; 1137 $user->old_password = $post[ 'old_password' ];
1047 } 1138 }
frontend/controllers/AjaxController.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 namespace frontend\controllers; 2 namespace frontend\controllers;
3 3
4 use common\models\Feedback; 4 use common\models\Feedback;
  5 + use common\models\FeedbackCompany;
5 use common\models\Portfolio; 6 use common\models\Portfolio;
6 use common\models\PortfolioUser; 7 use common\models\PortfolioUser;
7 use common\models\User; 8 use common\models\User;
@@ -27,6 +28,9 @@ @@ -27,6 +28,9 @@
27 public function actionProjectUser() 28 public function actionProjectUser()
28 { 29 {
29 $ids = json_decode(\Yii::$app->request->get('ids')); 30 $ids = json_decode(\Yii::$app->request->get('ids'));
  31 + if(!empty(\Yii::$app->user->id)) {
  32 + array_push($ids, \Yii::$app->user->id);
  33 + }
30 $model = new UserSearch(); 34 $model = new UserSearch();
31 $dataProvider = $model->search(\Yii::$app->request->queryParams); 35 $dataProvider = $model->search(\Yii::$app->request->queryParams);
32 $dataProvider->query->andFilterWhere([ 36 $dataProvider->query->andFilterWhere([
@@ -185,4 +189,18 @@ @@ -185,4 +189,18 @@
185 return ['error' => 'Error detected', 'result' => ['form' => $form]]; 189 return ['error' => 'Error detected', 'result' => ['form' => $form]];
186 } 190 }
187 191
  192 + public function actionFeedbackCompany()
  193 + {
  194 + $request = \Yii::$app->request;
  195 + $response = \Yii::$app->response;
  196 + $response->format = $response::FORMAT_JSON;
  197 + $model = new FeedbackCompany(['ip' => $request->userIP]);
  198 + if($model->load($request->post())) {
  199 + if($model->save()) {
  200 + return ['result' => ['message' => 'Вопрос успешно отправлен, представители компании свяжутся с Вами в ближайшее время']];
  201 + }
  202 + }
  203 + return ['error' => 'Ошибка формы'];
  204 + }
  205 +
188 } 206 }
frontend/controllers/CompanyController.php
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
16 use yii\data\ArrayDataProvider; 16 use yii\data\ArrayDataProvider;
17 use yii\data\Pagination; 17 use yii\data\Pagination;
18 use yii\data\Sort; 18 use yii\data\Sort;
  19 + use yii\db\ActiveQuery;
19 use yii\helpers\ArrayHelper; 20 use yii\helpers\ArrayHelper;
20 use yii\web\BadRequestHttpException; 21 use yii\web\BadRequestHttpException;
21 use yii\web\Controller; 22 use yii\web\Controller;
@@ -38,6 +39,19 @@ @@ -38,6 +39,19 @@
38 $company_id = $action->controller->actionParams[ 'company_id' ]; 39 $company_id = $action->controller->actionParams[ 'company_id' ];
39 $user = User::findOne($company_id); 40 $user = User::findOne($company_id);
40 if(!empty( $user->userInfo )) { 41 if(!empty( $user->userInfo )) {
  42 + if($user->userInfo->is_freelancer xor $user->userInfo->is_customer) {
  43 + $type = $action->controller->actionParams['type'];
  44 + $get = \Yii::$app->request->get();
  45 + if(!empty($type)) {
  46 + if($user->userInfo->is_freelancer && $type == 'customer') {
  47 + $get['type'] = 'implementer';
  48 + $this->redirect(array_merge([$action->id], $get));
  49 + } elseif($user->userInfo->is_customer && $type == 'implementer') {
  50 + $get['type'] = 'customer';
  51 + $this->redirect(array_merge([$action->id], $get));
  52 + }
  53 + }
  54 + }
41 $user->userInfo->updateCounters([ 'view_count' => 1 ]); 55 $user->userInfo->updateCounters([ 'view_count' => 1 ]);
42 } 56 }
43 } 57 }
@@ -178,7 +192,7 @@ @@ -178,7 +192,7 @@
178 'pagination' => [ 192 'pagination' => [
179 'pageSize' => 9, 193 'pageSize' => 9,
180 ], 194 ],
181 - 'sort' => new Sort([ 195 + 'sort' => new Sort([
182 'defaultOrder' => [ 196 'defaultOrder' => [
183 'portfolio_id' => SORT_DESC, 197 'portfolio_id' => SORT_DESC,
184 ], 198 ],
@@ -248,15 +262,36 @@ @@ -248,15 +262,36 @@
248 $user = User::findOne($company_id); 262 $user = User::findOne($company_id);
249 $portfolio = $user->getPortfolios() 263 $portfolio = $user->getPortfolios()
250 ->where([ 'portfolio_id' => $portfolio_id ]) 264 ->where([ 'portfolio_id' => $portfolio_id ])
251 - ->with('portfolioUsers') 265 + ->with([
  266 + 'portfolioUsers' => function($query) {
  267 + /**
  268 + * @var ActiveQuery $query
  269 + */
  270 + $query->andWhere([ 'status' => 1 ]);
  271 + },
  272 + ])
252 ->with('portfolioUsers.gallery') 273 ->with('portfolioUsers.gallery')
253 ->one(); 274 ->one();
  275 + if(empty($portfolio)) {
  276 + throw new NotFoundHttpException('Портфолио не найдено');
  277 + }
254 if(!empty( $portfolio_user )) { 278 if(!empty( $portfolio_user )) {
255 $portfolio_user = PortfolioUser::find() 279 $portfolio_user = PortfolioUser::find()
256 - ->where([ 'portfolio_user_id' => $portfolio_user ]) 280 + ->where([
  281 + 'portfolio_user_id' => $portfolio_user,
  282 + 'status' => 1,
  283 + ])
257 ->with('gallery') 284 ->with('gallery')
258 ->with('user') 285 ->with('user')
259 ->one(); 286 ->one();
  287 + if(empty( $portfolio_user )) {
  288 + $this->redirect([
  289 + 'portfolio-view',
  290 + 'performer_id' => $company_id,
  291 + 'portfolio_id' => $portfolio_id,
  292 + 'type' => $type,
  293 + ]);
  294 + }
260 } else { 295 } else {
261 $portfolio->updateCounters([ 'view_count' => 1 ]); 296 $portfolio->updateCounters([ 'view_count' => 1 ]);
262 } 297 }
@@ -328,7 +363,6 @@ @@ -328,7 +363,6 @@
328 if(!$company instanceof User) { 363 if(!$company instanceof User) {
329 throw new BadRequestHttpException('Пользователь не найден'); 364 throw new BadRequestHttpException('Пользователь не найден');
330 } 365 }
331 -  
332 $article = Blog::find() 366 $article = Blog::find()
333 ->where([ 367 ->where([
334 'link' => $link, 368 'link' => $link,
@@ -336,6 +370,9 @@ @@ -336,6 +370,9 @@
336 ]) 370 ])
337 ->with('comments') 371 ->with('comments')
338 ->one(); 372 ->one();
  373 + if(empty($article)) {
  374 + throw new NotFoundHttpException('Запись не найдена');
  375 + }
339 $article->updateCounters([ 'view_count' => 1 ]); 376 $article->updateCounters([ 'view_count' => 1 ]);
340 377
341 return $this->render('blog-view', [ 378 return $this->render('blog-view', [
@@ -349,6 +386,10 @@ @@ -349,6 +386,10 @@
349 { 386 {
350 $company = User::findOne($company_id); 387 $company = User::findOne($company_id);
351 388
  389 + if(empty($company)) {
  390 + throw new NotFoundHttpException('Company not found');
  391 + }
  392 +
352 return $this->render('review', [ 393 return $this->render('review', [
353 'company' => $company, 394 'company' => $company,
354 ]); 395 ]);
frontend/controllers/PerformerController.php
@@ -12,10 +12,12 @@ @@ -12,10 +12,12 @@
12 use yii\data\ArrayDataProvider; 12 use yii\data\ArrayDataProvider;
13 use yii\data\Pagination; 13 use yii\data\Pagination;
14 use yii\data\Sort; 14 use yii\data\Sort;
  15 + use yii\db\ActiveQuery;
15 use yii\helpers\ArrayHelper; 16 use yii\helpers\ArrayHelper;
16 use yii\web\BadRequestHttpException; 17 use yii\web\BadRequestHttpException;
17 use yii\web\Controller; 18 use yii\web\Controller;
18 use common\models\User; 19 use common\models\User;
  20 + use yii\web\NotFoundHttpException;
19 21
20 /** 22 /**
21 * Site controller 23 * Site controller
@@ -35,6 +37,19 @@ @@ -35,6 +37,19 @@
35 $performer_id = $action->controller->actionParams[ 'performer_id' ]; 37 $performer_id = $action->controller->actionParams[ 'performer_id' ];
36 $user = User::findOne($performer_id); 38 $user = User::findOne($performer_id);
37 if(!empty( $user->userInfo )) { 39 if(!empty( $user->userInfo )) {
  40 + if($user->userInfo->is_freelancer xor $user->userInfo->is_customer) {
  41 + $type = $action->controller->actionParams['type'];
  42 + $get = \Yii::$app->request->get();
  43 + if(!empty($type)) {
  44 + if($user->userInfo->is_freelancer && $type == 'customer') {
  45 + $get['type'] = 'implementer';
  46 + $this->redirect(array_merge([$action->id], $get));
  47 + } elseif($user->userInfo->is_customer && $type == 'implementer') {
  48 + $get['type'] = 'customer';
  49 + $this->redirect(array_merge([$action->id], $get));
  50 + }
  51 + }
  52 + }
38 $user->userInfo->updateCounters([ 'view_count' => 1 ]); 53 $user->userInfo->updateCounters([ 'view_count' => 1 ]);
39 } 54 }
40 } 55 }
@@ -67,7 +82,7 @@ @@ -67,7 +82,7 @@
67 ->one(); 82 ->one();
68 83
69 if(!$user instanceof User) { 84 if(!$user instanceof User) {
70 - throw new BadRequestHttpException('Пользователь не найден'); 85 + throw new NotFoundHttpException('Пользователь не найден');
71 } 86 }
72 87
73 $educations = Fields::getData($user->id, $user->className(), 'education'); 88 $educations = Fields::getData($user->id, $user->className(), 'education');
@@ -182,15 +197,36 @@ @@ -182,15 +197,36 @@
182 $user = User::findOne($performer_id); 197 $user = User::findOne($performer_id);
183 $portfolio = $user->getPortfolios() 198 $portfolio = $user->getPortfolios()
184 ->where([ 'portfolio_id' => $portfolio_id ]) 199 ->where([ 'portfolio_id' => $portfolio_id ])
185 - ->with('portfolioUsers') 200 + ->with([
  201 + 'portfolioUsers' => function($query) {
  202 + /**
  203 + * @var ActiveQuery $query
  204 + */
  205 + $query->andWhere([ 'status' => 1 ]);
  206 + },
  207 + ])
186 ->with('portfolioUsers.gallery') 208 ->with('portfolioUsers.gallery')
187 ->one(); 209 ->one();
  210 + if(empty($portfolio)) {
  211 + throw new NotFoundHttpException('Портфолио не найдено');
  212 + }
188 if(!empty( $portfolio_user )) { 213 if(!empty( $portfolio_user )) {
189 $portfolio_user = PortfolioUser::find() 214 $portfolio_user = PortfolioUser::find()
190 - ->where([ 'portfolio_user_id' => $portfolio_user ]) 215 + ->where([
  216 + 'portfolio_user_id' => $portfolio_user,
  217 + 'status' => 1,
  218 + ])
191 ->with('gallery') 219 ->with('gallery')
192 ->with('user') 220 ->with('user')
193 ->one(); 221 ->one();
  222 + if(empty( $portfolio_user )) {
  223 + $this->redirect([
  224 + 'portfolio-view',
  225 + 'performer_id' => $performer_id,
  226 + 'portfolio_id' => $portfolio_id,
  227 + 'type' => $type,
  228 + ]);
  229 + }
194 } else { 230 } else {
195 $portfolio->updateCounters([ 'view_count' => 1 ]); 231 $portfolio->updateCounters([ 'view_count' => 1 ]);
196 } 232 }
@@ -264,6 +300,9 @@ @@ -264,6 +300,9 @@
264 ]) 300 ])
265 ->with('comments') 301 ->with('comments')
266 ->one(); 302 ->one();
  303 + if(empty($article)) {
  304 + throw new NotFoundHttpException('Запись не найдена');
  305 + }
267 $article->updateCounters([ 'view_count' => 1 ]); 306 $article->updateCounters([ 'view_count' => 1 ]);
268 307
269 return $this->render('blog-view', [ 308 return $this->render('blog-view', [
@@ -309,7 +348,7 @@ @@ -309,7 +348,7 @@
309 } 348 }
310 349
311 $gallery = new ActiveDataProvider([ 350 $gallery = new ActiveDataProvider([
312 - 'query' => $user->getGalleries(), 351 + 'query' => $user->getGalleries()->andWhere(['not', ['photo' => '']])->andWhere(['not', ['photo' => NULL]]),
313 'pagination' => [ 352 'pagination' => [
314 'pageSize' => 5, 353 'pageSize' => 5,
315 ], 354 ],
frontend/controllers/SearchController.php
@@ -11,6 +11,7 @@ use frontend\models\SearchVacancyForm; @@ -11,6 +11,7 @@ use frontend\models\SearchVacancyForm;
11 use Yii; 11 use Yii;
12 use frontend\models\Options; 12 use frontend\models\Options;
13 use frontend\models\OptionValues; 13 use frontend\models\OptionValues;
  14 +use yii\base\InvalidParamException;
14 use yii\data\ActiveDataProvider; 15 use yii\data\ActiveDataProvider;
15 use yii\data\Pagination; 16 use yii\data\Pagination;
16 use yii\web\Controller; 17 use yii\web\Controller;
@@ -42,6 +43,32 @@ use frontend\models\Option; @@ -42,6 +43,32 @@ use frontend\models\Option;
42 ]; 43 ];
43 } 44 }
44 45
  46 + public function actionCommon($action)
  47 + {
  48 + $query = \Yii::$app->request->get('query');
  49 + $actions = [
  50 + 1 => 'project',
  51 + 2 => 'performer',
  52 + 3 => 'customer'
  53 + ];
  54 + if(!array_key_exists($action, $actions)) {
  55 + return $this->redirect(['/', 'query' => $query]);
  56 + } else {
  57 + switch($action) {
  58 + case 1:
  59 + return $this->redirect(['search/'.$actions[$action], 'TenderSearch[info]' => $query]);
  60 + break;
  61 + case 2:
  62 + return $this->redirect(['search/'.$actions[$action], 'SearchPerformerForm[search]' => $query]);
  63 + break;
  64 + case 3:
  65 + return $this->redirect(['search/'.$actions[$action], 'CustomerSearch[info]' => $query]);
  66 + break;
  67 + }
  68 + }
  69 + return false;
  70 + }
  71 +
45 public function actionProject() 72 public function actionProject()
46 { 73 {
47 $model = new TenderSearch(); 74 $model = new TenderSearch();
frontend/messages/ru/app.php
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 'description' => 'Описание', 10 'description' => 'Описание',
11 'cover' => 'Фото главное', 11 'cover' => 'Фото главное',
12 'chat_id' => 'Chat ID', 12 'chat_id' => 'Chat ID',
13 - 'status' => 'Status', 13 + 'status' => 'Статус',
14 'comment' => 'Comment', 14 'comment' => 'Comment',
15 'from_user' => 'From User', 15 'from_user' => 'From User',
16 'to_user' => 'To User', 16 'to_user' => 'To User',
@@ -179,5 +179,4 @@ @@ -179,5 +179,4 @@
179 'Feedback answer' => 'Вопрос', 179 'Feedback answer' => 'Вопрос',
180 'Feedback file' => 'Файл', 180 'Feedback file' => 'Файл',
181 'Feedback date add' => 'Дата обращения', 181 'Feedback date add' => 'Дата обращения',
182 - 'Projects' => 'Проекты',  
183 ]; 182 ];
184 \ No newline at end of file 183 \ No newline at end of file
frontend/views/accounts/_gallery_form.php
1 <?php 1 <?php
2 /** 2 /**
3 * @var Gallery $gallery 3 * @var Gallery $gallery
4 - * @var User $user 4 + * @var User $user
5 */ 5 */
6 use common\components\Request; 6 use common\components\Request;
7 use common\models\Gallery; 7 use common\models\Gallery;
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 <div class="input-blocks-wrapper"> 24 <div class="input-blocks-wrapper">
25 <div class="input-blocks"> 25 <div class="input-blocks">
26 <?= $form->field($gallery, 'name') 26 <?= $form->field($gallery, 'name')
27 - ->textInput (['class'=> 'custom-input-2']) ?> 27 + ->textInput([ 'class' => 'custom-input-2' ]) ?>
28 </div> 28 </div>
29 </div> 29 </div>
30 30
@@ -32,27 +32,47 @@ @@ -32,27 +32,47 @@
32 <?= ImageUploader::widget([ 32 <?= ImageUploader::widget([
33 'model' => $gallery, 33 'model' => $gallery,
34 'field' => 'cover', 34 'field' => 'cover',
35 - 'size' => [ 35 + 'size' => [
36 [ 36 [
37 - 'width' => 210,  
38 - 'height' => 150,  
39 - ] 37 + 'width' => 210,
  38 + 'height' => 150,
  39 + ],
40 ], 40 ],
41 - 41 + 'remover' => true,
42 'multi' => false, 42 'multi' => false,
43 'gallery' => $gallery->cover, 43 'gallery' => $gallery->cover,
44 'name' => 'Загрузить главное фото', 44 'name' => 'Загрузить главное фото',
45 ]); ?> 45 ]); ?>
  46 + <div class="help-block"></div>
  47 + <?php
  48 + $client = '';
  49 + foreach($gallery->getActiveValidators('cover') as $validator) {
  50 + $client .= $validator->clientValidateAttribute($gallery, 'cover', $this);
  51 + }
  52 + $js = "
  53 + $('#".$form->id."').yiiActiveForm(
  54 + 'add', {
  55 + container : '.admin-avatar',
  56 + error : '.help-block',
  57 + id : 'gallery-cover',
  58 + input : '#gallery-cover',
  59 + name : 'Gallery[cover]',
  60 + validate: function(attribute, value, messages, deferred) { ".$client." }
  61 + }
  62 + );
  63 + ";
  64 + $this->registerJs($js, $this::POS_LOAD);
  65 + ?>
46 </div> 66 </div>
47 <div class="admin-gallery-photos-load-wr style"> 67 <div class="admin-gallery-photos-load-wr style">
48 <?= ImageUploader::widget([ 68 <?= ImageUploader::widget([
49 'model' => $gallery, 69 'model' => $gallery,
50 'field' => 'photo', 70 'field' => 'photo',
51 - 'size' => [ 71 + 'size' => [
52 [ 72 [
53 - 'width' => 152,  
54 - 'height' => 108,  
55 - ] 73 + 'width' => 152,
  74 + 'height' => 108,
  75 + ],
56 ], 76 ],
57 'multi' => true, 77 'multi' => true,
58 'gallery' => $gallery->photo, 78 'gallery' => $gallery->photo,
@@ -61,29 +81,28 @@ @@ -61,29 +81,28 @@
61 </div> 81 </div>
62 82
63 83
64 -  
65 <div class="input-blocks-wrapper"> 84 <div class="input-blocks-wrapper">
66 <div class="admin-save-btn skills-save-btn admin-add-remove-wr style"> 85 <div class="admin-save-btn skills-save-btn admin-add-remove-wr style">
67 - <?= Html::submitButton($gallery->isNewRecord? Yii::t('app', 'add'):'Обновить', [ 'class' => 'input-blocks-wrapper button' ]) ?> 86 + <?= Html::submitButton($gallery->isNewRecord ? Yii::t('app', 'add') : 'Обновить', [ 'class' => 'input-blocks-wrapper button' ]) ?>
68 <div class="admin-remove-note"> 87 <div class="admin-remove-note">
69 <?php 88 <?php
70 - if(!$gallery->isNewRecord) {  
71 - echo Html::a(Yii::t('app', 'delete'), [  
72 - 'accounts/gallery-delete',  
73 - 'id' => $gallery->gallery_id,  
74 - ], [  
75 - 'title' => Yii::t('app', 'delete'),  
76 - 'aria-label' => Yii::t('app', 'delete'),  
77 - 'data-confirm' => Yii::t('app', 'delete_confirm'),  
78 - 'data-method' => 'post',  
79 - 'data-pjax' => 0,  
80 - ]);  
81 - } 89 + if(!$gallery->isNewRecord) {
  90 + echo Html::a(Yii::t('app', 'delete'), [
  91 + 'accounts/gallery-delete',
  92 + 'id' => $gallery->gallery_id,
  93 + ], [
  94 + 'title' => Yii::t('app', 'delete'),
  95 + 'aria-label' => Yii::t('app', 'delete'),
  96 + 'data-confirm' => Yii::t('app', 'delete_confirm'),
  97 + 'data-method' => 'post',
  98 + 'data-pjax' => 0,
  99 + ]);
  100 + }
82 ?> 101 ?>
83 </div> 102 </div>
84 103
85 <div class="admin-back-note"> 104 <div class="admin-back-note">
86 - <?= Html::a('вернуться', Request::getIsLocal(\Yii::$app->request->referrer)?\Yii::$app->request->referrer:['accounts/gallery' ]) ?> 105 + <?= Html::a('вернуться', Request::getIsLocal(\Yii::$app->request->referrer) ? \Yii::$app->request->referrer : [ 'accounts/gallery' ]) ?>
87 </div> 106 </div>
88 </div> 107 </div>
89 </div> 108 </div>
frontend/views/accounts/_portfolio_form.php
@@ -288,12 +288,11 @@ $form-&gt;end(); @@ -288,12 +288,11 @@ $form-&gt;end();
288 $.post( 288 $.post(
289 "/accounts/gallery-cover", {gallery_id : gallery_id}, function(data) 289 "/accounts/gallery-cover", {gallery_id : gallery_id}, function(data)
290 { 290 {
291 - if(!($('#cover_old_img').val().length)) 291 + if(data.length && !($('#cover_old_img').val().length) && !($('#portfolio-cover').val().length))
292 { 292 {
293 - $('#cover_picture_link').val(data); 293 + $('#portfolio-cover').val(data);
294 var newimg = document.createElement("img"); 294 var newimg = document.createElement("img");
295 newimg.setAttribute("src", data); 295 newimg.setAttribute("src", data);
296 -  
297 $('#cover_img_block .admin-avatar-pattern').append(newimg); 296 $('#cover_img_block .admin-avatar-pattern').append(newimg);
298 } 297 }
299 } 298 }
frontend/views/accounts/feedback-company.php 0 → 100644
  1 +<?php
  2 + use common\models\FeedbackCompanySearch;
  3 + use yii\data\ActiveDataProvider;
  4 + use yii\grid\ActionColumn;
  5 + use yii\grid\GridView;
  6 + use yii\grid\SerialColumn;
  7 + use yii\helpers\Html;
  8 + use yii\jui\DatePicker;
  9 + use yii\web\View;
  10 +
  11 + /**
  12 + * @var View $this
  13 + * @var FeedbackCompanySearch $searchModel
  14 + * @var ActiveDataProvider $dataProvider
  15 + */
  16 + $this->title = 'Заявки';
  17 + $this->params[ 'breadcrumbs' ][] = $this->title;
  18 +?>
  19 +<div class="login-left-column-title fix"><?= $this->title ?></div>
  20 +<div class="admin-table-portfolio">
  21 + <?= GridView::widget([
  22 + 'options' => [ 'class' => 'style admin-all-pages-wr fix_last_td_' ],
  23 + 'dataProvider' => $dataProvider,
  24 + 'filterModel' => $searchModel,
  25 + 'columns' => [
  26 + [ 'class' => SerialColumn::className() ],
  27 + [
  28 + 'attribute' => 'date_add',
  29 + 'filter' => "<div class=\"input-group input-group-xs input-daterange\">
  30 +<span class='field-teamsearch-experience_from_from'>" . DatePicker::widget([
  31 + 'model' => $searchModel,
  32 + 'attribute' => 'date_add_from',
  33 + 'language' => 'ru',
  34 + 'dateFormat' => 'yyyy-MM-dd',
  35 + 'clientOptions' => [
  36 + 'changeYear' => true,
  37 + 'changeMonth' => true,
  38 + 'maxDate' => ($searchModel->date_add_to?:date('Y-m-d')),
  39 + ],
  40 + ]) . "</span>
  41 +<span class=\"input-group-addon kv-field-separator\">
  42 +<i class=\"glyphicon glyphicon-resize-horizontal\"></i>
  43 +</span>
  44 +<span class='field-teamsearch-experience_from_to'>" . DatePicker::widget([
  45 + 'model' => $searchModel,
  46 + 'attribute' => 'date_add_to',
  47 + 'language' => 'ru',
  48 + 'dateFormat' => 'yyyy-MM-dd',
  49 + 'clientOptions' => [
  50 + 'changeYear' => true,
  51 + 'changeMonth' => true,
  52 + 'minDate' => $searchModel->date_add_from,
  53 + 'maxDate' => date('Y-m-d'),
  54 + ],
  55 + ]) . "</span>
  56 +</div>",
  57 + 'value' => function($model, $key) {
  58 + return date('Y-m-d H:i:s', $model->date_add);
  59 + },
  60 + ],
  61 + [
  62 + 'attribute' => 'name',
  63 + 'label' => 'Имя и фамилия',
  64 + ],
  65 + 'phone',
  66 + [
  67 + 'attribute' => 'status',
  68 + 'filter' => [
  69 + 1 => 'Только непрочитанные',
  70 + ],
  71 + 'filterInputOptions' => [
  72 + 'prompt' => 'Все записи',
  73 + 'class' => 'form-control',
  74 + ],
  75 + ],
  76 + [
  77 + 'class' => ActionColumn::className(),
  78 + 'buttons' => [
  79 + 'delete' => function($url, $model, $key) {
  80 + return Html::a(Html::tag('span', '', [
  81 + 'class' => 'glyphicon glyphicon-trash',
  82 + ]), [
  83 + 'accounts/feedback-delete',
  84 + 'id' => $model->feedback_company_id,
  85 + ], [
  86 + 'title' => 'Удалить',
  87 + 'aria-label' => 'Удалить',
  88 + 'data-confirm' => 'Вы уверены, что хотите удалить данную заявку?',
  89 + 'data-method' => 'post',
  90 + 'data-pjax' => 0,
  91 + ]);
  92 + },
  93 + 'read' => function($url, $model, $key) {
  94 + if($model->status == $model::STATUS_NEW) {
  95 + return Html::a(Html::tag('span', '', [
  96 + 'class' => 'glyphicon glyphicon-ok',
  97 + ]), [
  98 + 'accounts/feedback-read',
  99 + 'id' => $model->feedback_company_id,
  100 + ], [
  101 + 'title' => 'Прочесть',
  102 + 'aria-label' => 'Прочесть',
  103 + 'data-confirm' => 'Вы уверены, что хотите отметить заявку прочтенной?',
  104 + 'data-method' => 'post',
  105 + 'data-pjax' => 0,
  106 + ]);
  107 + } else {
  108 + return false;
  109 + }
  110 + },
  111 + ],
  112 + 'template' => '{read}{delete}',
  113 + ],
  114 + ],
  115 + ]); ?>
  116 +</div>
frontend/views/accounts/general.php
@@ -256,6 +256,7 @@ @@ -256,6 +256,7 @@
256 ], 256 ],
257 257
258 ], 258 ],
  259 + 'remover' => true,
259 'multi' => false, 260 'multi' => false,
260 'gallery' => $user_info->image, 261 'gallery' => $user_info->image,
261 'name' => 'Выбрать файл', 262 'name' => 'Выбрать файл',
frontend/views/accounts/projects.php
@@ -66,7 +66,7 @@ @@ -66,7 +66,7 @@
66 [ 66 [
67 'attribute' => 'budget', 67 'attribute' => 'budget',
68 'filter' => Html::activeInput('text', $searchModel, 'budget_approx', ['class'=>'form-control']), 68 'filter' => Html::activeInput('text', $searchModel, 'budget_approx', ['class'=>'form-control']),
69 - 'value' => function($model, $key, $index, $column) { 69 + 'content' => function($model, $key, $index, $column) {
70 /** 70 /**
71 * @var Project $model 71 * @var Project $model
72 */ 72 */
frontend/views/ajax/feedback_form.php
@@ -2,18 +2,18 @@ @@ -2,18 +2,18 @@
2 /** 2 /**
3 * @var Feedback $model 3 * @var Feedback $model
4 */ 4 */
  5 + use common\models\Feedback;
  6 + use common\modules\fileloader\widgets\FileloaderWidget;
  7 + use yii\helpers\Html;
  8 + use yii\widgets\ActiveForm;
5 ?> 9 ?>
6 <div id="modal_form_contacts"> 10 <div id="modal_form_contacts">
7 <div class="closed-form"></div> 11 <div class="closed-form"></div>
8 <div class="form-resume-wr"> 12 <div class="form-resume-wr">
9 <div class="form-resume-sub style">Отправить сообщение администрации МФП</div> 13 <div class="form-resume-sub style">Отправить сообщение администрации МФП</div>
10 <?php 14 <?php
11 - use common\models\Feedback;  
12 - use common\modules\fileloader\widgets\FileloaderWidget;  
13 - use yii\helpers\Html;  
14 - use yii\widgets\ActiveForm;  
15 -  
16 $form = ActiveForm::begin([ 15 $form = ActiveForm::begin([
  16 + 'id' => 'feedback_'.\Yii::$app->security->generateRandomString(3),
17 'options' => [ 17 'options' => [
18 'enctype' => 'multipart/form-data', 18 'enctype' => 'multipart/form-data',
19 'class' => 'feedback_form', 19 'class' => 'feedback_form',
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 ->label(false) 34 ->label(false)
35 ->widget(FileloaderWidget::className(), [ 35 ->widget(FileloaderWidget::className(), [
36 'labelOptions' => [ 36 'labelOptions' => [
37 - 'label' => '<div class="contacts-form-wrapper style"><div class="contacts-form style"><span>Прикрепить файл</span></div><div class="contacts-form-help style"><span>Максимальный размер файла 5 МБ</span></div></div>', 37 + 'label' => '<div class="contacts-form-wrapper style"><div class="contacts-form style"><span style="font-weight: normal">Прикрепить файл</span></div><div class="contacts-form-help style"><span>Максимальный размер файла 5 МБ</span></div></div>',
38 ], 38 ],
39 'inputOptions' => [ 39 'inputOptions' => [
40 'multiple' => false, 40 'multiple' => false,
frontend/views/ajax/project_user.php
@@ -46,10 +46,6 @@ @@ -46,10 +46,6 @@
46 <span class="project_user_remove" style="background: url('/images/delete-ico.png') no-repeat; width: 13px; height: 13px; display: block; background-size: cover; cursor:pointer"></span> 46 <span class="project_user_remove" style="background: url('/images/delete-ico.png') no-repeat; width: 13px; height: 13px; display: block; background-size: cover; cursor:pointer"></span>
47 </div> 47 </div>
48 </div> 48 </div>
49 -  
50 -  
51 -  
52 -  
53 </div> 49 </div>
54 <script> 50 <script>
55 var blocks = $('.add_project_user_list .project_user_wrapper') 51 var blocks = $('.add_project_user_list .project_user_wrapper')
frontend/views/ajax/users.php
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 BootstrapPluginAsset::register($this); 22 BootstrapPluginAsset::register($this);
23 $pjax = Pjax::begin([ 23 $pjax = Pjax::begin([
24 'enablePushState' => false, 24 'enablePushState' => false,
25 - 'id' => 'pjax-user', 25 + 'id' => 'pjax-user_'.\Yii::$app->security->generateRandomString(3),
26 ]); 26 ]);
27 $js = "$('.user_search_modal_input').tooltip({placement: 'top', title: function() { return $(this).data('error'); }, trigger: 'manual'}); 27 $js = "$('.user_search_modal_input').tooltip({placement: 'top', title: function() { return $(this).data('error'); }, trigger: 'manual'});
28 $('.user_search_modal_input').tooltip('show');"; 28 $('.user_search_modal_input').tooltip('show');";
frontend/views/chat/message.php
@@ -26,9 +26,15 @@ @@ -26,9 +26,15 @@
26 <div class="cab-mes-read-cont-stars"> 26 <div class="cab-mes-read-cont-stars">
27 <?php 27 <?php
28 echo StarRating::widget([ 28 echo StarRating::widget([
29 - 'name' => 'rating_messange',  
30 - 'value' => $chat->interlocutor->userInfo->rating,  
31 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 29 + 'name' => 'rating_messange',
  30 + 'value' => $chat->interlocutor->userInfo->rating,
  31 + 'pluginOptions' => [
  32 + 'displayOnly' => true,
  33 + 'size' => 'xxs',
  34 + 'min' => 0,
  35 + 'max' => 10,
  36 + 'stars' => 10,
  37 + ],
32 ]); 38 ]);
33 ?> 39 ?>
34 </div> 40 </div>
@@ -47,7 +53,7 @@ @@ -47,7 +53,7 @@
47 <div class="performance-vacancy-add-favorite"> 53 <div class="performance-vacancy-add-favorite">
48 <?php 54 <?php
49 echo Html::a('', [ '#' ], [ 55 echo Html::a('', [ '#' ], [
50 - 'class' => $chat->interlocutor->isBookmarked?'artbox_bookmark_remove_performer':'artbox_bookmark_add_performer', 56 + 'class' => $chat->interlocutor->isBookmarked ? 'artbox_bookmark_remove_performer' : 'artbox_bookmark_add_performer',
51 'data' => [ 'id' => $chat->interlocutor->id ], 57 'data' => [ 'id' => $chat->interlocutor->id ],
52 ]); 58 ]);
53 ?> 59 ?>
@@ -147,7 +153,7 @@ @@ -147,7 +153,7 @@
147 </div> 153 </div>
148 <div class="comment_type"> 154 <div class="comment_type">
149 <?php $form = ActiveForm::begin([ 155 <?php $form = ActiveForm::begin([
150 - 'method' => 'post', 156 + 'method' => 'post',
151 'options' => [ 'enctype' => 'multipart/form-data' ], 157 'options' => [ 'enctype' => 'multipart/form-data' ],
152 ]); ?> 158 ]); ?>
153 159
frontend/views/company/_company_common_review.php
@@ -9,9 +9,15 @@ @@ -9,9 +9,15 @@
9 <?php 9 <?php
10 if(!empty( $model->rating )) { 10 if(!empty( $model->rating )) {
11 echo StarRating::widget([ 11 echo StarRating::widget([
12 - 'name' => 'rating_company_review',  
13 - 'value' => $model->rating->value,  
14 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 12 + 'name' => 'rating_company_review',
  13 + 'value' => $model->rating->value,
  14 + 'pluginOptions' => [
  15 + 'displayOnly' => true,
  16 + 'size' => 'xxs',
  17 + 'min' => 0,
  18 + 'max' => 10,
  19 + 'stars' => 10,
  20 + ],
15 ]); 21 ]);
16 } 22 }
17 ?> 23 ?>
frontend/views/company/_company_team_review.php
@@ -14,9 +14,15 @@ @@ -14,9 +14,15 @@
14 <?php 14 <?php
15 if(!empty( $model->rating )) { 15 if(!empty( $model->rating )) {
16 echo StarRating::widget([ 16 echo StarRating::widget([
17 - 'name' => 'rating_company_team',  
18 - 'value' => $model->rating->value,  
19 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 17 + 'name' => 'rating_company_team',
  18 + 'value' => $model->rating->value,
  19 + 'pluginOptions' => [
  20 + 'displayOnly' => true,
  21 + 'size' => 'xxs',
  22 + 'min' => 0,
  23 + 'max' => 10,
  24 + 'stars' => 10,
  25 + ],
20 ]); 26 ]);
21 } 27 }
22 ?> 28 ?>
frontend/views/company/_feedback_company.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var User $company
  4 + * @var User $user
  5 + * @var View $this
  6 + */
  7 + use common\models\FeedbackCompany;
  8 + use common\models\User;
  9 + use yii\helpers\Html;
  10 + use yii\web\View;
  11 + use yii\widgets\ActiveForm;
  12 +
  13 + $user = \Yii::$app->user->identity;
  14 + $model = new FeedbackCompany([ 'user_id' => $company->id ]);
  15 + if(!empty( $user )) {
  16 + $model->name = $user->name;
  17 + $phones = $user->getPhones();
  18 + if(!empty( $phones )) {
  19 + $model->phone = $phones[ 1 ][ 'phone' ];
  20 + }
  21 + }
  22 +?>
  23 + <div class="performance-vacancy-call-back">
  24 + <div class="performance-vacancy-call-back-title">Оставьте заявку<br/>и мы вам перезвоним
  25 + </div>
  26 + <?php
  27 + $form = ActiveForm::begin([
  28 + 'action' => [ 'ajax/feedback-company' ],
  29 + 'method' => 'POST',
  30 + 'options' => [ 'class' => 'callback' ],
  31 + ]);
  32 + echo $form->field($model, 'user_id')
  33 + ->label(false)
  34 + ->hiddenInput();
  35 + echo $form->field($model, 'name', [ 'options' => [ 'class' => 'input-blocks-wrapper' ] ])
  36 + ->textInput([ 'placeholder' => 'Иванов Иван' ]);
  37 + echo $form->field($model, 'phone', [ 'options' => [ 'class' => 'input-blocks-wrapper' ] ])
  38 + ->textInput([ 'placeholder' => '+38(093)111-11-11' ]);
  39 + echo Html::submitInput('Перезвонить мне', [ 'id' => 'feedback_company_submit' ]);
  40 + $form->end();
  41 + ?>
  42 + <div class="performance-vacancy-call-back-conf">Гарантируем конфидециальность</div>
  43 + </div>
  44 +<?php
  45 + $js = "
  46 + $(document).on('click', '#feedback_company_submit', function(e) {
  47 + e.preventDefault();
  48 + var form = $(this).parents('form');
  49 + var action = $(form).attr('action');
  50 + var id = $(form).attr('id');
  51 + $('#'+id).data('yiiActiveForm').submitting = true;
  52 + $('#'+id).yiiActiveForm('validate');
  53 + if($(form).find('.input-blocks-wrapper.has-error').length <= 0) {
  54 + $.post(action, $(form).serialize(), function(data) {
  55 + if(data.error) {
  56 + alert(data.error);
  57 + } else {
  58 + alert(data.result.message);
  59 + document.getElementById(id).reset();
  60 + }
  61 + });
  62 + }
  63 + });
  64 + ";
  65 + $this->registerJs($js);
  66 +?>
0 \ No newline at end of file 67 \ No newline at end of file
frontend/views/company/_portfolio_list_view.php
@@ -15,8 +15,8 @@ @@ -15,8 +15,8 @@
15 'company/portfolio-view', 15 'company/portfolio-view',
16 'company_id' => $model->user_id, 16 'company_id' => $model->user_id,
17 'portfolio_id' => $model->portfolio_id, 17 'portfolio_id' => $model->portfolio_id,
18 - 'type' => (!empty($this->params['type']))?$this->params['type']:null,  
19 - ])); ?> 18 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  19 + ]), [ 'data-pjax' => 0 ]); ?>
20 </div> 20 </div>
21 <div class="portfolio-project-blocks-title-wr"> 21 <div class="portfolio-project-blocks-title-wr">
22 <div class="portfolio-project-blocks-title"> 22 <div class="portfolio-project-blocks-title">
@@ -24,8 +24,8 @@ @@ -24,8 +24,8 @@
24 'company/portfolio-view', 24 'company/portfolio-view',
25 'company_id' => $model->user_id, 25 'company_id' => $model->user_id,
26 'portfolio_id' => $model->portfolio_id, 26 'portfolio_id' => $model->portfolio_id,
27 - 'type' => (!empty($this->params['type']))?$this->params['type']:null,  
28 - ])) ?> 27 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  28 + ]), [ 'data-pjax' => 0 ]) ?>
29 </div> 29 </div>
30 </div> 30 </div>
31 </div> 31 </div>
@@ -35,21 +35,25 @@ @@ -35,21 +35,25 @@
35 <div class="portfolio-project-views-img"> 35 <div class="portfolio-project-views-img">
36 <img src="/images/portfolio-project/ico-1.png"/></div> 36 <img src="/images/portfolio-project/ico-1.png"/></div>
37 </div> 37 </div>
38 - <div class="portfolio-project-views-txt"><?=$model->view_count?></div> 38 + <div class="portfolio-project-views-txt"><?= $model->view_count ?></div>
39 </div> 39 </div>
40 <div class="portfolio-project-rati ico-views-bl"> 40 <div class="portfolio-project-rati ico-views-bl">
41 <div class="portfolio-project-views-img-wr"> 41 <div class="portfolio-project-views-img-wr">
42 <div class="portfolio-project-views-img"> 42 <div class="portfolio-project-views-img">
43 <img src="/images/portfolio-project/ico-2.png"/></div> 43 <img src="/images/portfolio-project/ico-2.png"/></div>
44 </div> 44 </div>
45 - <div class="portfolio-project-views-txt"><?php if(!empty($model->ratingValue)) { echo $model->ratingValue; } else { echo 'Нет'; } ?></div> 45 + <div class="portfolio-project-views-txt"><?php if(!empty( $model->ratingValue )) {
  46 + echo $model->ratingValue;
  47 + } else {
  48 + echo 'Нет';
  49 + } ?></div>
46 </div> 50 </div>
47 <div class="ico-views-bl"> 51 <div class="ico-views-bl">
48 <div class="portfolio-project-views-img-wr"> 52 <div class="portfolio-project-views-img-wr">
49 <div class="portfolio-project-views-img"> 53 <div class="portfolio-project-views-img">
50 <img src="/images/portfolio-project/ico-3.png"/></div> 54 <img src="/images/portfolio-project/ico-3.png"/></div>
51 </div> 55 </div>
52 - <div class="portfolio-project-views-txt"><?=count($model->comments)?></div> 56 + <div class="portfolio-project-views-txt"><?= count($model->comments) ?></div>
53 </div> 57 </div>
54 </div> 58 </div>
55 <div title="<?= implode(', ', ArrayHelper::getColumn($model->specializations, 'specialization_name')) ?>" class="portfolio-project-blocks-tags"><?= implode(', ', ArrayHelper::getColumn($model->specializations, 'specialization_name')) ?></div> 59 <div title="<?= implode(', ', ArrayHelper::getColumn($model->specializations, 'specialization_name')) ?>" class="portfolio-project-blocks-tags"><?= implode(', ', ArrayHelper::getColumn($model->specializations, 'specialization_name')) ?></div>
frontend/views/company/gallery.php
@@ -52,7 +52,9 @@ @@ -52,7 +52,9 @@
52 { 52 {
53 $('#demo5').scrollbox( 53 $('#demo5').scrollbox(
54 { 54 {
55 - direction : 'h', distance : 220, autoPlay : false 55 + direction : 'h',
  56 + distance : 220,
  57 + autoPlay : false
56 } 58 }
57 ); 59 );
58 $('#demo5-backward').click( 60 $('#demo5-backward').click(
frontend/views/company/portfolio-view.php
@@ -78,6 +78,9 @@ @@ -78,6 +78,9 @@
78 'pluginOptions' => [ 78 'pluginOptions' => [
79 'displayOnly' => true, 79 'displayOnly' => true,
80 'size' => 'xxs', 80 'size' => 'xxs',
  81 + 'min' => 0,
  82 + 'max' => 10,
  83 + 'stars' => 10,
81 ], 84 ],
82 ]); 85 ]);
83 ?> 86 ?>
@@ -118,7 +121,9 @@ @@ -118,7 +121,9 @@
118 <?php 121 <?php
119 foreach($portfolio->ShowGallery($portfolio->gallery->photo) as $one_photo) { 122 foreach($portfolio->ShowGallery($portfolio->gallery->photo) as $one_photo) {
120 ?> 123 ?>
121 - <li><img src="<?= $one_photo ?>" alt=""/></li> 124 + <li>
  125 + <img src="<?= $portfolio->minImg($one_photo, 210, 150) ?>" alt=""/>
  126 + </li>
122 <?php 127 <?php
123 } 128 }
124 ?> 129 ?>
@@ -248,7 +253,10 @@ @@ -248,7 +253,10 @@
248 { 253 {
249 $('.new-portf-slider #demo5').scrollbox( 254 $('.new-portf-slider #demo5').scrollbox(
250 { 255 {
251 - direction : 'h', distance : 210, autoPlay : false, onMouseOverPause : false 256 + direction : 'h',
  257 + distance : 210,
  258 + autoPlay : false,
  259 + onMouseOverPause : false
252 } 260 }
253 ); 261 );
254 $('#demo5-backward').click( 262 $('#demo5-backward').click(
frontend/views/layouts/admin.php
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false, 59 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false,
60 ], 60 ],
61 [ 61 [
62 - 'label' => 'Галерея Изображения', 62 + 'label' => 'Галерея Изображений',
63 'url' => [ 'accounts/gallery' ], 63 'url' => [ 'accounts/gallery' ],
64 'active' => preg_match('/^gallery(?!-video).*$/', $this->context->action->id) ? true : false, 64 'active' => preg_match('/^gallery(?!-video).*$/', $this->context->action->id) ? true : false,
65 ], 65 ],
@@ -110,6 +110,10 @@ @@ -110,6 +110,10 @@
110 'label' => 'Вакансии', 110 'label' => 'Вакансии',
111 'url' => [ 'accounts/vacancy' ], 111 'url' => [ 'accounts/vacancy' ],
112 'active' => preg_match('/^vacancy.*$/', $this->context->action->id) ? true : false, 112 'active' => preg_match('/^vacancy.*$/', $this->context->action->id) ? true : false,
  113 + ], [
  114 + 'label' => "Заявки <span class='ico_num'>{$this->params['feedback_company_count']}</span>",
  115 + 'url' => [ 'accounts/feedback-company' ],
  116 + 'encode' => false,
113 ]); 117 ]);
114 118
115 } 119 }
frontend/views/layouts/company.php
@@ -19,27 +19,9 @@ @@ -19,27 +19,9 @@
19 <div class="box-all"> 19 <div class="box-all">
20 <?php 20 <?php
21 if($this->params[ 'company' ]->id != \Yii::$app->user->getId()) { 21 if($this->params[ 'company' ]->id != \Yii::$app->user->getId()) {
22 - ?>  
23 - <div class="performance-vacancy-call-back">  
24 - <div class="performance-vacancy-call-back-title">Оставьте заявку<br/>и мы вам перезвоним  
25 - </div>  
26 - <form class="callback" action="">  
27 -  
28 - <div class="input-blocks-wrapper">  
29 - <label for="callbac_name">Имя</label>  
30 - <input id="callbac_name" type="text"/>  
31 - </div>  
32 -  
33 - <div class="input-blocks-wrapper">  
34 - <label for="callbac_phone">Телефон</label>  
35 - <input id="callbac_phone" type="text"/>  
36 - </div>  
37 -  
38 - <input id="callbac_submit" type="submit" value="Перезвонить мне"/>  
39 - </form>  
40 - <div class="performance-vacancy-call-back-conf">Гарантируем конфидециальность</div>  
41 - </div>  
42 - <?php 22 + // Форма "оставить заявку"
  23 + echo $this->render('//company/_feedback_company', [ 'company' => $this->params[ 'company' ] ]);
  24 + // Конец формы "оставить заявку"
43 if(!empty( \Yii::$app->user->identity )) { 25 if(!empty( \Yii::$app->user->identity )) {
44 ?> 26 ?>
45 <div class="performance-vacancy-add-favorite"> 27 <div class="performance-vacancy-add-favorite">
@@ -68,79 +50,88 @@ @@ -68,79 +50,88 @@
68 <div class="box-wr"> 50 <div class="box-wr">
69 <div class="box-all"> 51 <div class="box-all">
70 <?php 52 <?php
71 - echo Menu::widget([  
72 - 'options' => [  
73 - 'class' => 'menu-content',  
74 - ],  
75 - 'activeCssClass' => 'active-menu-content',  
76 - 'items' => [  
77 - [  
78 - 'label' => 'Общее',  
79 - 'url' => [  
80 - 'company/common',  
81 - 'company_id' => $this->params[ 'company' ]->id,  
82 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
83 - ], 53 + $items = [
  54 + [
  55 + 'label' => 'Общее',
  56 + 'url' => [
  57 + 'company/common',
  58 + 'company_id' => $this->params[ 'company' ]->id,
  59 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
84 ], 60 ],
85 - [  
86 - 'label' => 'Выполненные работы',  
87 - 'url' => [  
88 - 'company/portfolio',  
89 - 'company_id' => $this->params[ 'company' ]->id,  
90 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
91 - ],  
92 - 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer' ) ? true : false, 61 + ],
  62 + [
  63 + 'label' => 'Выполненные работы',
  64 + 'url' => [
  65 + 'company/portfolio',
  66 + 'company_id' => $this->params[ 'company' ]->id,
  67 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
93 ], 68 ],
94 - [  
95 - 'label' => 'Заказанные работы',  
96 - 'url' => [  
97 - 'company/projects',  
98 - 'company_id' => $this->params[ 'company' ]->id,  
99 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
100 - ],  
101 - 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer' ) ? true : false, 69 + 'active' => preg_match('/^portfolio.*$/', $this->context->action->id) ? true : false,
  70 + 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer' ) ? true : false,
  71 + ],
  72 + [
  73 + 'label' => 'Заказанные работы',
  74 + 'url' => [
  75 + 'company/projects',
  76 + 'company_id' => $this->params[ 'company' ]->id,
  77 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
102 ], 78 ],
103 - [  
104 - 'label' => 'Команда',  
105 - 'url' => [  
106 - 'company/team',  
107 - 'company_id' => $this->params[ 'company' ]->id,  
108 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
109 - ], 79 + 'active' => preg_match('/^projects.*$/', $this->context->action->id) ? true : false,
  80 + 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer' ) ? true : false,
  81 + ],
  82 + [
  83 + 'label' => 'Вакансии',
  84 + 'url' => [
  85 + 'company/vacancy-list',
  86 + 'company_id' => $this->params[ 'company' ]->id,
  87 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
110 ], 88 ],
111 - [  
112 - 'label' => 'Вакансии',  
113 - 'url' => [  
114 - 'company/vacancy-list',  
115 - 'company_id' => $this->params[ 'company' ]->id,  
116 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
117 - ], 89 + 'active' => preg_match('/^vacancy.*$/', $this->context->action->id) ? true : false,
  90 + ],
  91 + [
  92 + 'label' => 'Мнения',
  93 + 'url' => [
  94 + 'company/review',
  95 + 'company_id' => $this->params[ 'company' ]->id,
  96 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
118 ], 97 ],
119 - [  
120 - 'label' => 'Блог',  
121 - 'url' => [  
122 - 'company/blog-list',  
123 - 'company_id' => $this->params[ 'company' ]->id,  
124 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 98 + ],
  99 + ];
  100 + if(empty($this->params['type']) || $this->params[ 'type' ] == 'implementer') {
  101 + $items = array_merge($items, [
  102 + [
  103 + 'label' => 'Команда',
  104 + 'url' => [
  105 + 'company/team',
  106 + 'company_id' => $this->params[ 'company' ]->id,
  107 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  108 + ],
125 ], 109 ],
126 - ],  
127 - [  
128 - 'label' => 'Мнения',  
129 - 'url' => [  
130 - 'company/review',  
131 - 'company_id' => $this->params[ 'company' ]->id,  
132 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 110 + [
  111 + 'label' => 'Блог',
  112 + 'url' => [
  113 + 'company/blog-list',
  114 + 'company_id' => $this->params[ 'company' ]->id,
  115 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  116 + ],
  117 + 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false,
133 ], 118 ],
134 - ],  
135 - [  
136 - 'label' => 'Галерея',  
137 - 'url' => [  
138 - 'company/gallery',  
139 - 'company_id' => $this->params[ 'company' ]->id,  
140 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 119 + [
  120 + 'label' => 'Галерея',
  121 + 'url' => [
  122 + 'company/gallery',
  123 + 'company_id' => $this->params[ 'company' ]->id,
  124 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  125 + ],
141 ], 126 ],
142 - ], 127 + ]);
  128 + }
  129 + echo Menu::widget([
  130 + 'options' => [
  131 + 'class' => 'menu-content',
143 ], 132 ],
  133 + 'activeCssClass' => 'active-menu-content',
  134 + 'items' => $items,
144 ]); 135 ]);
145 ?> 136 ?>
146 </div> 137 </div>
@@ -157,48 +148,64 @@ @@ -157,48 +148,64 @@
157 <ul> 148 <ul>
158 <li class="activejob"> 149 <li class="activejob">
159 <?php 150 <?php
160 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
161 - echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));  
162 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
163 - echo Html::a('Заказчик', Url::current([ 'type' => NULL ])); 151 + if($this->params[ 'company' ]->userInfo->is_freelancer xor $this->params[ 'company' ]->userInfo->is_customer) {
  152 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  153 + echo Html::tag('span', 'Заказчик', [ 'class' => 'activejob_span' ]);
  154 + } else {
  155 + echo Html::tag('span', 'Исполнитель', [ 'class' => 'activejob_span' ]);
  156 + }
164 } else { 157 } else {
165 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ])); 158 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  159 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  160 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  161 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  162 + } else {
  163 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  164 + }
  165 + ?>
  166 + <div class="sidebar-droped-wr style">
  167 + <ul>
  168 + <li>
  169 + <?php
  170 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  171 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  172 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  173 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  174 + } else {
  175 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  176 + }
  177 + ?>
  178 + </li>
  179 + <li style="display: none">
  180 + <?php
  181 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  182 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  183 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  184 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  185 + } else {
  186 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  187 + }
  188 + ?>
  189 + </ul>
  190 + </div>
  191 + <?php
166 } 192 }
167 ?> 193 ?>
168 - <div class="sidebar-droped-wr style">  
169 - <ul>  
170 - <li>  
171 - <?php  
172 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
173 - echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));  
174 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
175 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));  
176 - } else {  
177 - echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));  
178 - }  
179 - ?>  
180 - </li>  
181 - <li style="display: none">  
182 - <?php  
183 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
184 - echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));  
185 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
186 - echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));  
187 - } else {  
188 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));  
189 - }  
190 - ?>  
191 - </ul>  
192 - </div>  
193 </li> 194 </li>
194 </ul> 195 </ul>
195 </div> 196 </div>
196 <div class="performance-vacancy-sidebar-stars style"> 197 <div class="performance-vacancy-sidebar-stars style">
197 <?php 198 <?php
198 echo StarRating::widget([ 199 echo StarRating::widget([
199 - 'name' => 'rating_company',  
200 - 'value' => $this->params[ 'company' ]->userInfo->rating,  
201 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 200 + 'name' => 'rating_company',
  201 + 'value' => $this->params[ 'company' ]->userInfo->rating,
  202 + 'pluginOptions' => [
  203 + 'displayOnly' => true,
  204 + 'size' => 'xxs',
  205 + 'min' => 0,
  206 + 'max' => 10,
  207 + 'stars' => 10,
  208 + ],
202 ]); 209 ]);
203 ?> 210 ?>
204 </div> 211 </div>
@@ -213,7 +220,7 @@ @@ -213,7 +220,7 @@
213 } 220 }
214 ?> 221 ?>
215 </div> 222 </div>
216 - <div class="performer-vacancy-sidebar-img style"><?= Html::img($this->params[ 'company' ]->userInfo->image); ?></div> 223 + <div class="performer-vacancy-sidebar-img style"><?= Html::img($this->params[ 'company' ]->userInfo->ShowAvatar($this->params[ 'company' ]->userInfo->image, 180,180)); ?></div>
217 <div class="performer-vacancy-sidebar-all style"> 224 <div class="performer-vacancy-sidebar-all style">
218 <?= $this->render('/patrial/social_list', [ 225 <?= $this->render('/patrial/social_list', [
219 'params' => $this->params, 226 'params' => $this->params,
@@ -244,11 +251,11 @@ @@ -244,11 +251,11 @@
244 <div class="sidebarvievstxt"> 251 <div class="sidebarvievstxt">
245 <span class="sidebar-views-txt">Сотрудники:<br/></span> 252 <span class="sidebar-views-txt">Сотрудники:<br/></span>
246 <?php 253 <?php
247 - if(!empty($this->params[ 'company' ]->companyInfo->staff)) {  
248 - echo $this->params[ 'company' ]->companyInfo->staff;  
249 - } else {  
250 - echo 0;  
251 - } 254 + if(!empty( $this->params[ 'company' ]->companyInfo->staff )) {
  255 + echo $this->params[ 'company' ]->companyInfo->staff;
  256 + } else {
  257 + echo 0;
  258 + }
252 ?> 259 ?>
253 </div> 260 </div>
254 </li> 261 </li>
@@ -294,7 +301,9 @@ @@ -294,7 +301,9 @@
294 <script> 301 <script>
295 $('div.rating').rating( 302 $('div.rating').rating(
296 { 303 {
297 - fx : 'full', readOnly : 'true', url : 'rating.php' 304 + fx : 'full',
  305 + readOnly : 'true',
  306 + url : 'rating.php'
298 } 307 }
299 ); 308 );
300 </script> 309 </script>
frontend/views/layouts/gallery-company.php
@@ -16,27 +16,9 @@ @@ -16,27 +16,9 @@
16 <div class="box-all"> 16 <div class="box-all">
17 <?php 17 <?php
18 if($this->params[ 'company' ]->id != \Yii::$app->user->getId()) { 18 if($this->params[ 'company' ]->id != \Yii::$app->user->getId()) {
19 - ?>  
20 - <div class="performance-vacancy-call-back">  
21 - <div class="performance-vacancy-call-back-title">Оставьте заявку<br/>и мы вам перезвоним  
22 - </div>  
23 - <form class="callback" action="">  
24 -  
25 - <div class="input-blocks-wrapper">  
26 - <label for="callbac_name">Имя</label>  
27 - <input id="callbac_name" type="text"/>  
28 - </div>  
29 -  
30 - <div class="input-blocks-wrapper">  
31 - <label for="callbac_phone">Телефон</label>  
32 - <input id="callbac_phone" type="text"/>  
33 - </div>  
34 -  
35 - <input id="callbac_submit" type="submit" value="Перезвонить мне"/>  
36 - </form>  
37 - <div class="performance-vacancy-call-back-conf">Гарантируем конфидециальность</div>  
38 - </div>  
39 - <?php 19 + // Форма "оставить заявку"
  20 + echo $this->render('//company/_feedback_company', [ 'company' => $this->params[ 'company' ] ]);
  21 + // Конец формы "оставить заявку"
40 if(!empty( \Yii::$app->user->identity )) { 22 if(!empty( \Yii::$app->user->identity )) {
41 ?> 23 ?>
42 <div class="performance-vacancy-add-favorite"> 24 <div class="performance-vacancy-add-favorite">
@@ -65,38 +47,55 @@ @@ -65,38 +47,55 @@
65 <div class="box-wr"> 47 <div class="box-wr">
66 <div class="box-all"> 48 <div class="box-all">
67 <?php 49 <?php
68 - echo Menu::widget([  
69 - 'options' => [  
70 - 'class' => 'menu-content', 50 + $items = [
  51 + [
  52 + 'label' => 'Общее',
  53 + 'url' => [
  54 + 'company/common',
  55 + 'company_id' => $this->params[ 'company' ]->id,
  56 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  57 + ],
71 ], 58 ],
72 - 'activeCssClass' => 'active-menu-content',  
73 - 'items' => [  
74 - [  
75 - 'label' => 'Общее',  
76 - 'url' => [  
77 - 'company/common',  
78 - 'company_id' => $this->params[ 'company' ]->id,  
79 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
80 - ], 59 + [
  60 + 'label' => 'Выполненные работы',
  61 + 'url' => [
  62 + 'company/portfolio',
  63 + 'company_id' => $this->params[ 'company' ]->id,
  64 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
81 ], 65 ],
82 - [  
83 - 'label' => 'Выполненные работы',  
84 - 'url' => [  
85 - 'company/portfolio',  
86 - 'company_id' => $this->params[ 'company' ]->id,  
87 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
88 - ],  
89 - 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params['type'] == 'implementer' ) ? true : false, 66 + 'active' => preg_match('/^portfolio.*$/', $this->context->action->id) ? true : false,
  67 + 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer' ) ? true : false,
  68 + ],
  69 + [
  70 + 'label' => 'Заказанные работы',
  71 + 'url' => [
  72 + 'company/projects',
  73 + 'company_id' => $this->params[ 'company' ]->id,
  74 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
90 ], 75 ],
91 - [  
92 - 'label' => 'Заказанные работы',  
93 - 'url' => [  
94 - 'company/projects',  
95 - 'company_id' => $this->params[ 'company' ]->id,  
96 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
97 - ],  
98 - 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params['type'] == 'customer' ) ? true : false, 76 + 'active' => preg_match('/^projects.*$/', $this->context->action->id) ? true : false,
  77 + 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer' ) ? true : false,
  78 + ],
  79 + [
  80 + 'label' => 'Вакансии',
  81 + 'url' => [
  82 + 'company/vacancy-list',
  83 + 'company_id' => $this->params[ 'company' ]->id,
  84 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
99 ], 85 ],
  86 + 'active' => preg_match('/^vacancy.*$/', $this->context->action->id) ? true : false,
  87 + ],
  88 + [
  89 + 'label' => 'Мнения',
  90 + 'url' => [
  91 + 'company/review',
  92 + 'company_id' => $this->params[ 'company' ]->id,
  93 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
  94 + ],
  95 + ],
  96 + ];
  97 + if(empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer') {
  98 + $items = array_merge($items, [
100 [ 99 [
101 'label' => 'Команда', 100 'label' => 'Команда',
102 'url' => [ 101 'url' => [
@@ -106,28 +105,13 @@ @@ -106,28 +105,13 @@
106 ], 105 ],
107 ], 106 ],
108 [ 107 [
109 - 'label' => 'Вакансии',  
110 - 'url' => [  
111 - 'company/vacancy-list',  
112 - 'company_id' => $this->params[ 'company' ]->id,  
113 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
114 - ],  
115 - ],  
116 - [  
117 'label' => 'Блог', 108 'label' => 'Блог',
118 'url' => [ 109 'url' => [
119 'company/blog-list', 110 'company/blog-list',
120 'company_id' => $this->params[ 'company' ]->id, 111 'company_id' => $this->params[ 'company' ]->id,
121 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 112 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
122 ], 113 ],
123 - ],  
124 - [  
125 - 'label' => 'Мнения',  
126 - 'url' => [  
127 - 'company/review',  
128 - 'company_id' => $this->params[ 'company' ]->id,  
129 - 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,  
130 - ], 114 + 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false,
131 ], 115 ],
132 [ 116 [
133 'label' => 'Галерея', 117 'label' => 'Галерея',
@@ -137,7 +121,14 @@ @@ -137,7 +121,14 @@
137 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 121 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
138 ], 122 ],
139 ], 123 ],
  124 + ]);
  125 + }
  126 + echo Menu::widget([
  127 + 'options' => [
  128 + 'class' => 'menu-content',
140 ], 129 ],
  130 + 'activeCssClass' => 'active-menu-content',
  131 + 'items' => $items,
141 ]); 132 ]);
142 ?> 133 ?>
143 </div> 134 </div>
@@ -154,48 +145,64 @@ @@ -154,48 +145,64 @@
154 <ul> 145 <ul>
155 <li class="activejob"> 146 <li class="activejob">
156 <?php 147 <?php
157 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
158 - echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));  
159 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
160 - echo Html::a('Заказчик', Url::current([ 'type' => NULL ])); 148 + if($this->params[ 'company' ]->userInfo->is_freelancer xor $this->params[ 'company' ]->userInfo->is_customer) {
  149 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  150 + echo Html::tag('span', 'Заказчик', [ 'class' => 'activejob_span' ]);
  151 + } else {
  152 + echo Html::tag('span', 'Исполнитель', [ 'class' => 'activejob_span' ]);
  153 + }
161 } else { 154 } else {
162 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ])); 155 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  156 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  157 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  158 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  159 + } else {
  160 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  161 + }
  162 + ?>
  163 + <div class="sidebar-droped-wr style">
  164 + <ul>
  165 + <li>
  166 + <?php
  167 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  168 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  169 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  170 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  171 + } else {
  172 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  173 + }
  174 + ?>
  175 + </li>
  176 + <li style="display: none">
  177 + <?php
  178 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  179 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  180 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  181 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  182 + } else {
  183 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  184 + }
  185 + ?>
  186 + </ul>
  187 + </div>
  188 + <?php
163 } 189 }
164 ?> 190 ?>
165 - <div class="sidebar-droped-wr style">  
166 - <ul>  
167 - <li>  
168 - <?php  
169 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
170 - echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));  
171 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
172 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));  
173 - } else {  
174 - echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));  
175 - }  
176 - ?>  
177 - </li>  
178 - <li style="display: none">  
179 - <?php  
180 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
181 - echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));  
182 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
183 - echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));  
184 - } else {  
185 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));  
186 - }  
187 - ?>  
188 - </ul>  
189 - </div>  
190 </li> 191 </li>
191 </ul> 192 </ul>
192 </div> 193 </div>
193 <div class="performance-vacancy-sidebar-stars style"> 194 <div class="performance-vacancy-sidebar-stars style">
194 <?php 195 <?php
195 echo StarRating::widget([ 196 echo StarRating::widget([
196 - 'name' => 'rating_company',  
197 - 'value' => $this->params[ 'company' ]->userInfo->rating,  
198 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 197 + 'name' => 'rating_company',
  198 + 'value' => $this->params[ 'company' ]->userInfo->rating,
  199 + 'pluginOptions' => [
  200 + 'displayOnly' => true,
  201 + 'size' => 'xxs',
  202 + 'min' => 0,
  203 + 'max' => 10,
  204 + 'stars' => 10,
  205 + ],
199 ]); 206 ]);
200 ?> 207 ?>
201 </div> 208 </div>
@@ -211,7 +218,7 @@ @@ -211,7 +218,7 @@
211 ?> 218 ?>
212 </div> 219 </div>
213 <div class="performer-vacancy-sidebar-img style"> 220 <div class="performer-vacancy-sidebar-img style">
214 - <?= Html::img($this->params[ 'company' ]->userInfo->image); ?> 221 + <?= Html::img($this->params[ 'company' ]->userInfo->ShowAvatar($this->params[ 'company' ]->userInfo->image, 180,180)); ?>
215 </div> 222 </div>
216 </div> 223 </div>
217 </div> 224 </div>
@@ -229,7 +236,9 @@ @@ -229,7 +236,9 @@
229 <script> 236 <script>
230 $('div.rating').rating( 237 $('div.rating').rating(
231 { 238 {
232 - fx : 'full', readOnly : 'true', url : 'rating.php' 239 + fx : 'full',
  240 + readOnly : 'true',
  241 + url : 'rating.php'
233 } 242 }
234 ); 243 );
235 </script> 244 </script>
frontend/views/layouts/gallery.php
@@ -2,16 +2,16 @@ @@ -2,16 +2,16 @@
2 2
3 use kartik\rating\StarRating; 3 use kartik\rating\StarRating;
4 use yii\helpers\Html; 4 use yii\helpers\Html;
5 -use yii\helpers\Url;  
6 -use yii\widgets\Breadcrumbs;  
7 -use yii\widgets\Menu; 5 + use yii\helpers\Url;
  6 + use yii\widgets\Breadcrumbs;
  7 + use yii\widgets\Menu;
8 8
9 -\frontend\assets\AppAsset::register($this);  
10 -/* @var $content string */  
11 -$this->beginContent('@app/views/layouts/main.php'); 9 + \frontend\assets\AppAsset::register($this);
  10 + /* @var $content string */
  11 + $this->beginContent('@app/views/layouts/main.php');
12 ?> 12 ?>
13 <div class="section-box content"> 13 <div class="section-box content">
14 - <div class="section-box-16" style="background: url('<?= $this->params['user']->userInfo->poster;?>') 50% no-repeat"> 14 + <div class="section-box-16" style="background: url('<?= $this->params[ 'user' ]->userInfo->poster; ?>') 50% no-repeat">
15 <div class="box-wr"> 15 <div class="box-wr">
16 <div class="box-all"> 16 <div class="box-all">
17 <div class="blog-buttons-wr style"> 17 <div class="blog-buttons-wr style">
@@ -64,39 +64,44 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;); @@ -64,39 +64,44 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
64 'url' => [ 64 'url' => [
65 'performer/common', 65 'performer/common',
66 'performer_id' => $this->params[ 'user' ]->id, 66 'performer_id' => $this->params[ 'user' ]->id,
67 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 67 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
68 ], 68 ],
69 ], 69 ],
70 [ 70 [
71 - 'label' => 'Портфолио',  
72 - 'url' => [ 71 + 'label' => 'Портфолио',
  72 + 'url' => [
73 'performer/portfolio', 73 'performer/portfolio',
74 'performer_id' => $this->params[ 'user' ]->id, 74 'performer_id' => $this->params[ 'user' ]->id,
75 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 75 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
76 ], 76 ],
  77 + 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer' ) ? true : false,
  78 + 'active' => preg_match('/^portfolio.*$/', $this->context->action->id) ? true : false,
77 ], 79 ],
78 [ 80 [
79 - 'label' => 'Заказанные работы',  
80 - 'url' => [ 81 + 'label' => 'Заказанные работы',
  82 + 'url' => [
81 'performer/projects', 83 'performer/projects',
82 'performer_id' => $this->params[ 'user' ]->id, 84 'performer_id' => $this->params[ 'user' ]->id,
83 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 85 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
84 ], 86 ],
  87 + 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer' ) ? true : false,
  88 + 'active' => preg_match('/^projects.*$/', $this->context->action->id) ? true : false,
85 ], 89 ],
86 [ 90 [
87 'label' => 'Блог', 91 'label' => 'Блог',
88 'url' => [ 92 'url' => [
89 'performer/blog-list', 93 'performer/blog-list',
90 'performer_id' => $this->params[ 'user' ]->id, 94 'performer_id' => $this->params[ 'user' ]->id,
91 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 95 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
92 ], 96 ],
  97 + 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false,
93 ], 98 ],
94 [ 99 [
95 'label' => 'Мнения', 100 'label' => 'Мнения',
96 'url' => [ 101 'url' => [
97 'performer/review', 102 'performer/review',
98 'performer_id' => $this->params[ 'user' ]->id, 103 'performer_id' => $this->params[ 'user' ]->id,
99 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 104 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
100 ], 105 ],
101 ], 106 ],
102 [ 107 [
@@ -104,7 +109,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;); @@ -104,7 +109,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
104 'url' => [ 109 'url' => [
105 'performer/workplace', 110 'performer/workplace',
106 'performer_id' => $this->params[ 'user' ]->id, 111 'performer_id' => $this->params[ 'user' ]->id,
107 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 112 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
108 ], 113 ],
109 ], 114 ],
110 [ 115 [
@@ -112,7 +117,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;); @@ -112,7 +117,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
112 'url' => [ 117 'url' => [
113 'performer/gallery', 118 'performer/gallery',
114 'performer_id' => $this->params[ 'user' ]->id, 119 'performer_id' => $this->params[ 'user' ]->id,
115 - 'type' => (!empty($this->params['type']))?$this->params['type']:null, 120 + 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
116 ], 121 ],
117 ], 122 ],
118 ], 123 ],
@@ -127,53 +132,69 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;); @@ -127,53 +132,69 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
127 <div class="performer-vacancy-sidebar-left-wr gallery-page-sidebar"> 132 <div class="performer-vacancy-sidebar-left-wr gallery-page-sidebar">
128 <div class="performer-vacancy-sidebar-left"> 133 <div class="performer-vacancy-sidebar-left">
129 <div class="performance-vacancy-sidebar-company-wr"> 134 <div class="performance-vacancy-sidebar-company-wr">
130 - <div class="performance-vacancy-sidebar-company-title style"><?=$this->params['user']->name?></div> 135 + <div class="performance-vacancy-sidebar-company-title style"><?= $this->params[ 'user' ]->name ?></div>
131 <div class="performance-vacancy-sidebar-company-job style"> 136 <div class="performance-vacancy-sidebar-company-job style">
132 <ul> 137 <ul>
133 <li class="activejob"> 138 <li class="activejob">
134 <?php 139 <?php
135 - if(!empty($this->params['type']) && $this->params['type'] == 'implementer') {  
136 - echo Html::a('Исполнитель', Url::current(['type' => 'implementer']));  
137 - } elseif(!empty($this->params['type']) && $this->params['type'] == 'customer') {  
138 - echo Html::a('Заказчик', Url::current(['type' => null])); 140 + if($this->params[ 'user' ]->userInfo->is_freelancer xor $this->params[ 'user' ]->userInfo->is_customer) {
  141 + if(!empty($this->params[ 'type' ]) && $this->params[ 'type' ] == 'customer') {
  142 + echo Html::tag('span', 'Заказчик', [ 'class' => 'activejob_span' ]);
  143 + } else {
  144 + echo Html::tag('span', 'Исполнитель', [ 'class' => 'activejob_span' ]);
  145 + }
139 } else { 146 } else {
140 - echo Html::a('Исполнитель', Url::current(['type' => null])); 147 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  148 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  149 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  150 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  151 + } else {
  152 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  153 + }
  154 + ?>
  155 + <div class="sidebar-droped-wr style">
  156 + <ul>
  157 + <li>
  158 + <?php
  159 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  160 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  161 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  162 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  163 + } else {
  164 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  165 + }
  166 + ?>
  167 + </li>
  168 + <li style="display: none">
  169 + <?php
  170 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  171 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  172 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  173 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  174 + } else {
  175 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  176 + }
  177 + ?>
  178 + </ul>
  179 + </div>
  180 + <?php
141 } 181 }
142 ?> 182 ?>
143 - <div class="sidebar-droped-wr style">  
144 - <ul>  
145 - <li>  
146 - <?php  
147 - if(!empty($this->params['type']) && $this->params['type'] == 'implementer') {  
148 - echo Html::a('Заказчик', Url::current(['type' => 'customer']));  
149 - } elseif(!empty($this->params['type']) && $this->params['type'] == 'customer') {  
150 - echo Html::a('Исполнитель', Url::current(['type' => null]));  
151 - } else {  
152 - echo Html::a('Заказчик', Url::current(['type' => 'customer']));  
153 - }  
154 - ?>  
155 - </li>  
156 - <li style="display: none">  
157 - <?php  
158 - if(!empty($this->params['type']) && $this->params['type'] == 'implementer') {  
159 - echo Html::a('Исполнитель', Url::current(['type' => 'implementer']));  
160 - } elseif(!empty($this->params['type']) && $this->params['type'] == 'customer') {  
161 - echo Html::a('Заказчик', Url::current(['type' => null]));  
162 - } else {  
163 - echo Html::a('Исполнитель', Url::current(['type' => null]));  
164 - }  
165 - ?>  
166 - </ul>  
167 - </div>  
168 </li> 183 </li>
169 </ul> 184 </ul>
170 </div> 185 </div>
171 <div class="performance-vacancy-sidebar-stars style"> 186 <div class="performance-vacancy-sidebar-stars style">
172 <?php 187 <?php
173 echo StarRating::widget([ 188 echo StarRating::widget([
174 - 'name' => 'rating_company',  
175 - 'value' => $this->params[ 'user' ]->userInfo->rating,  
176 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 189 + 'name' => 'rating_company',
  190 + 'value' => $this->params[ 'user' ]->userInfo->rating,
  191 + 'pluginOptions' => [
  192 + 'displayOnly' => true,
  193 + 'size' => 'xxs',
  194 + 'min' => 0,
  195 + 'max' => 10,
  196 + 'stars' => 10,
  197 + ],
177 ]); 198 ]);
178 ?> 199 ?>
179 </div> 200 </div>
@@ -189,7 +210,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;); @@ -189,7 +210,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
189 ?> 210 ?>
190 </div> 211 </div>
191 <div class="performer-vacancy-sidebar-img style"> 212 <div class="performer-vacancy-sidebar-img style">
192 - <?= Html::img($this->params['user']->userInfo->image);?> 213 + <?= Html::img($this->params[ 'user' ]->userInfo->image); ?>
193 </div> 214 </div>
194 </div> 215 </div>
195 </div> 216 </div>
@@ -205,11 +226,13 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;); @@ -205,11 +226,13 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
205 </div> 226 </div>
206 </div> 227 </div>
207 <script> 228 <script>
208 - $('div.rating').rating({  
209 - fx: 'full',  
210 - readOnly: 'true',  
211 - url: 'rating.php'  
212 - }); 229 + $('div.rating').rating(
  230 + {
  231 + fx : 'full',
  232 + readOnly : 'true',
  233 + url : 'rating.php'
  234 + }
  235 + );
213 </script> 236 </script>
214 237
215 <?php $this->endContent() ?> 238 <?php $this->endContent() ?>
216 \ No newline at end of file 239 \ No newline at end of file
frontend/views/layouts/main.php
1 <?php 1 <?php
2 2
3 -/* @var $this \yii\web\View */  
4 -/* @var $content string */ 3 + /* @var $this \yii\web\View */
  4 + /* @var $content string */
5 5
6 -use yii\helpers\Html;  
7 -use yii\widgets\Menu;  
8 -use frontend\assets\AppAsset;  
9 -AppAsset::register($this); 6 + use common\modules\comment\models\CommentProject;
  7 + use yii\helpers\Html;
  8 + use yii\helpers\Url;
  9 + use yii\widgets\Menu;
  10 + use frontend\assets\AppAsset;
  11 +
  12 + AppAsset::register($this);
10 ?> 13 ?>
11 14
12 <?php $this->beginPage() ?> 15 <?php $this->beginPage() ?>
@@ -18,8 +21,6 @@ AppAsset::register($this); @@ -18,8 +21,6 @@ AppAsset::register($this);
18 <head> 21 <head>
19 22
20 23
21 -  
22 -  
23 <meta charset="<?= Yii::$app->charset ?>"> 24 <meta charset="<?= Yii::$app->charset ?>">
24 25
25 <?= Html::csrfMetaTags() ?> 26 <?= Html::csrfMetaTags() ?>
@@ -39,32 +40,36 @@ AppAsset::register($this); @@ -39,32 +40,36 @@ AppAsset::register($this);
39 <a href="/"><img class="logo" src="/images/logo.png" width="100" height="68" alt=""/></a> 40 <a href="/"><img class="logo" src="/images/logo.png" width="100" height="68" alt=""/></a>
40 <div class="header-proektant-slogan">Международная Федерация Проектантов</div> 41 <div class="header-proektant-slogan">Международная Федерация Проектантов</div>
41 <ul class="header-contacts-menu"> 42 <ul class="header-contacts-menu">
42 - <li><span><img src="/images/icon_question_01.png" alt=""/></span><?= Html::a('Задать вопрос','', ['class' =>'contactsLinkModalFirst'])?></li>  
43 - <li><span><img src="/images/icon_help_01.png" alt=""/></span><?= Html::a('Помощь',['/site/help'], ['class' =>'contactsLinkModal'])?></li> 43 + <li>
  44 + <span><img src="/images/icon_question_01.png" alt=""/></span><?= Html::a('Задать вопрос', '', [ 'class' => 'contactsLinkModalFirst' ]) ?>
  45 + </li>
  46 + <li>
  47 + <span><img src="/images/icon_help_01.png" alt=""/></span><?= Html::a('Помощь', [ '/site/help' ], [ 'class' => 'contactsLinkModal' ]) ?>
  48 + </li>
44 </ul> 49 </ul>
45 <div class="header-cabinet-wr"> 50 <div class="header-cabinet-wr">
46 <?php 51 <?php
47 - if (Yii::$app->user->isGuest): ?>  
48 - <div class="header-cabinet-foto"> 52 + if(Yii::$app->user->isGuest): ?>
  53 + <div class="header-cabinet-foto">
49 54
50 - </div>  
51 - <div class="header-cabinet-profile not-login">Профиль</div>  
52 - <div>  
53 - <?= Html::a('Вход',['/site/login'], ['class'=>'loginLinkModal']) ?>  
54 - <?= Html::a('Регистрация',['/site/registration']) ?>  
55 - </div> 55 + </div>
  56 + <div class="header-cabinet-profile not-login">Профиль</div>
  57 + <div>
  58 + <?= Html::a('Вход', [ '/site/login' ], [ 'class' => 'loginLinkModal' ]) ?>
  59 + <?= Html::a('Регистрация', [ '/site/registration' ]) ?>
  60 + </div>
56 61
57 - <?php else : ?>  
58 - <div class="header-cabinet-foto">  
59 - <?php  
60 - if(!empty(\Yii::$app->user->identity->userInfo->image)) {  
61 - echo Html::img(Yii::$app->user->identity->minImg(Yii::$app->user->identity->userInfo->image,48,48));  
62 - }  
63 - ?>  
64 - </div>  
65 - <div class="header-cabinet-profile">Профиль</div>  
66 - <?= Html::a(Yii::$app->user->identity->email,['/accounts']) ?>  
67 - <?php endif; ?> 62 + <?php else : ?>
  63 + <div class="header-cabinet-foto">
  64 + <?php
  65 + if(!empty( \Yii::$app->user->identity->userInfo->image )) {
  66 + echo Html::img(Yii::$app->user->identity->minImg(Yii::$app->user->identity->userInfo->image, 48, 48));
  67 + }
  68 + ?>
  69 + </div>
  70 + <div class="header-cabinet-profile">Профиль</div>
  71 + <?= Html::a(Yii::$app->user->identity->email, [ '/accounts' ]) ?>
  72 + <?php endif; ?>
68 73
69 </div> 74 </div>
70 </div> 75 </div>
@@ -82,18 +87,18 @@ AppAsset::register($this); @@ -82,18 +87,18 @@ AppAsset::register($this);
82 87
83 <li> 88 <li>
84 <?php 89 <?php
85 - if(\Yii::$app->user->isGuest) {  
86 - echo Html::a('Войти в профиль', ['site/login']);  
87 - } else {  
88 - echo Html::a('Редактировать профиль', ['accounts/']);  
89 - } 90 + if(\Yii::$app->user->isGuest) {
  91 + echo Html::a('Войти в профиль', [ 'site/login' ]);
  92 + } else {
  93 + echo Html::a('Редактировать профиль', [ 'accounts/' ]);
  94 + }
90 ?> 95 ?>
91 </li> 96 </li>
92 </ul> 97 </ul>
93 <ul> 98 <ul>
94 - <li><?= Html::a(Yii::t('app', 'Project list'), ['search/project'])?></li>  
95 - <li><?= Html::a('Список вакансий', ['search/vacancy'])?></li>  
96 - <li><?= Html::a('Список заказчиков', ['search/customer'])?></li> 99 + <li><?= Html::a(Yii::t('app', 'Project list'), [ 'search/project' ]) ?></li>
  100 + <li><?= Html::a('Список вакансий', [ 'search/vacancy' ]) ?></li>
  101 + <li><?= Html::a('Список заказчиков', [ 'search/customer' ]) ?></li>
97 </ul> 102 </ul>
98 </div> 103 </div>
99 </li> 104 </li>
@@ -102,13 +107,19 @@ AppAsset::register($this); @@ -102,13 +107,19 @@ AppAsset::register($this);
102 <div class="main-menu-hover"> 107 <div class="main-menu-hover">
103 <ul> 108 <ul>
104 109
105 - <li><?= Html::a(Yii::t('app', 'Add project'), ['accounts/projects-create'])?></li>  
106 - <li><?= Html::a('Разместить вакансию', ['accounts/vacancy'])?></li> 110 + <li><?= Html::a(Yii::t('app', 'Add project'), [ 'accounts/projects-create' ]) ?></li>
  111 + <li><?= Html::a('Разместить вакансию', [ 'accounts/vacancy' ]) ?></li>
107 </ul> 112 </ul>
108 <ul> 113 <ul>
109 114
110 - <li><?= Html::a('Список проектантов', ['search/performer','SearchPerformerForm[type]'=>'1'])?></li>  
111 - <li><?= Html::a('Список проектных компаний', ['search/performer','SearchPerformerForm[type]'=>'2'])?></li> 115 + <li><?= Html::a('Список проектантов', [
  116 + 'search/performer',
  117 + 'SearchPerformerForm[type]' => '1',
  118 + ]) ?></li>
  119 + <li><?= Html::a('Список проектных компаний', [
  120 + 'search/performer',
  121 + 'SearchPerformerForm[type]' => '2',
  122 + ]) ?></li>
112 </ul> 123 </ul>
113 </div> 124 </div>
114 </li> 125 </li>
@@ -117,28 +128,28 @@ AppAsset::register($this); @@ -117,28 +128,28 @@ AppAsset::register($this);
117 <div class="main-menu-hover"> 128 <div class="main-menu-hover">
118 <ul> 129 <ul>
119 130
120 - <li><?= Html::a(Yii::t('app', 'Add project'), ['accounts/projects-create'])?></li>  
121 - <li><?= Html::a('Разместить вакансию', ['accounts/vacancy-create'])?></li>  
122 - <li><?= Html::a('Редактировать портфолио', ['accounts/portfolio'])?></li> 131 + <li><?= Html::a(Yii::t('app', 'Add project'), [ 'accounts/projects-create' ]) ?></li>
  132 + <li><?= Html::a('Разместить вакансию', [ 'accounts/vacancy-create' ]) ?></li>
  133 + <li><?= Html::a('Редактировать портфолио', [ 'accounts/portfolio' ]) ?></li>
123 </ul> 134 </ul>
124 <ul> 135 <ul>
125 - <li><?= Html::a('Список проектантов', ['search/performer'])?></li>  
126 - <li><?= Html::a(Yii::t('app', 'Project list'), ['search/project'])?></li>  
127 - <li><?= Html::a('Список заказчиков', ['search/customer'])?></li> 136 + <li><?= Html::a('Список проектантов', [ 'search/performer' ]) ?></li>
  137 + <li><?= Html::a(Yii::t('app', 'Project list'), [ 'search/project' ]) ?></li>
  138 + <li><?= Html::a('Список заказчиков', [ 'search/customer' ]) ?></li>
128 </ul> 139 </ul>
129 </div> 140 </div>
130 </li> 141 </li>
131 </ul> 142 </ul>
132 143
133 <div class="search-main-menu"> 144 <div class="search-main-menu">
134 - <form action="">  
135 - <input value="" name="" type="search"/>  
136 - <input type="hidden" value="1" name="" /> 145 + <form action="<?= Url::to([ 'search/common' ]) ?>" method="get">
  146 + <input value="" name="query" type="text"/>
  147 + <input type="hidden" value="1" name="action"/>
137 <button type="submit" value=""></button> 148 <button type="submit" value=""></button>
138 <div class="search-list"> 149 <div class="search-list">
139 - <span><?=Yii::t('app', 'Projects')?></span> 150 + <span><?= Yii::t('app', 'Projects') ?></span>
140 <ul class="search-ul"> 151 <ul class="search-ul">
141 - <li><?=Yii::t('app', 'Projects')?></li> 152 + <li><?= Yii::t('app', 'Projects') ?></li>
142 <li>Исполнители</li> 153 <li>Исполнители</li>
143 <li>Заказчики</li> 154 <li>Заказчики</li>
144 </ul> 155 </ul>
@@ -148,25 +159,25 @@ AppAsset::register($this); @@ -148,25 +159,25 @@ AppAsset::register($this);
148 <?php 159 <?php
149 if(!\Yii::$app->user->isGuest) { 160 if(!\Yii::$app->user->isGuest) {
150 echo Menu::widget([ 161 echo Menu::widget([
151 - 'options' => [  
152 - 'tag' => 'div', 162 + 'options' => [
  163 + 'tag' => 'div',
153 'class' => 'main-menu-icons-wr', 164 'class' => 'main-menu-icons-wr',
154 ], 165 ],
155 'itemOptions' => [ 166 'itemOptions' => [
156 'tag' => false, 167 'tag' => false,
157 ], 168 ],
158 - 'items' => [ 169 + 'items' => [
159 [ 170 [
160 - 'url' => ['/projects'],  
161 - 'template' => '<a href="{url}" class="main-menu-icons-home"><span>'.count(\Yii::$app->user->identity->commentProjects).'</span></a>', 171 + 'url' => [ '/projects' ],
  172 + 'template' => '<a href="{url}" class="main-menu-icons-home"><span>' . count(\Yii::$app->user->identity->commentProjectsActive) . '</span></a>',
162 ], 173 ],
163 [ 174 [
164 - 'url' => ['chat/list'],  
165 - 'template' => '<a href="{url}" class="main-menu-icons-edit"><span>'.\Yii::$app->user->identity->chatCount.'</span></a>', 175 + 'url' => [ 'chat/list' ],
  176 + 'template' => '<a href="{url}" class="main-menu-icons-edit"><span>' . \Yii::$app->user->identity->newMessagesCount . '</span></a>',
166 ], 177 ],
167 [ 178 [
168 - 'url' => ['/bookmarks'],  
169 - 'template' => "<a href='{url}' class='main-menu-icons-copy'><span>".count(\Yii::$app->user->identity->bookmarks)."</span></a>", 179 + 'url' => [ '/bookmarks' ],
  180 + 'template' => "<a href='{url}' class='main-menu-icons-copy'><span>" . count(\Yii::$app->user->identity->bookmarks) . "</span></a>",
170 ], 181 ],
171 ], 182 ],
172 ]); 183 ]);
@@ -189,70 +200,81 @@ AppAsset::register($this); @@ -189,70 +200,81 @@ AppAsset::register($this);
189 <div class="footer-all-wr"> 200 <div class="footer-all-wr">
190 <div class="footer-menu-wrapper first-footer-menu"> 201 <div class="footer-menu-wrapper first-footer-menu">
191 <?php 202 <?php
  203 + $items = [
  204 + [
  205 + 'label' => Yii::t('app', 'Projects'),
  206 + 'url' => [ 'search/project' ],
  207 + ],
  208 + [
  209 + 'label' => 'Вакансии',
  210 + 'url' => [ 'search/vacancy' ],
  211 + ],
  212 + [
  213 + 'label' => 'Рейтинг проектантов',
  214 + 'url' => [ 'search/performer' ],
  215 + ],
  216 + ];
  217 + if(empty( \Yii::$app->user->id )) {
  218 + array_unshift($items, [
  219 + 'label' => 'Регистрация проектанта',
  220 + 'url' => [ '/site/registration' ],
  221 + ]);
  222 + }
192 echo Menu::widget([ 223 echo Menu::widget([
193 'options' => [ 224 'options' => [
194 'class' => 'footer-menu', 225 'class' => 'footer-menu',
195 ], 226 ],
196 - 'items' => [  
197 - [  
198 - 'label' => 'Регистрация проектанта',  
199 - 'url' => ['site/signup'],  
200 - ],  
201 - [  
202 - 'label' => Yii::t('app', 'Projects'),  
203 - 'url' => ['search/project'],  
204 - ],  
205 - [  
206 - 'label' => 'Вакансии',  
207 - 'url' => ['search/vacancy'],  
208 - ],  
209 - [  
210 - 'label' => 'Рейтинг проектантов',  
211 - 'url' => ['search/performer'],  
212 - ],  
213 - ] 227 + 'items' => $items,
214 ]); 228 ]);
  229 + unset( $items );
215 ?> 230 ?>
216 </div> 231 </div>
217 232
218 <div class="footer-menu-wrapper second-footer-menu"> 233 <div class="footer-menu-wrapper second-footer-menu">
219 <?php 234 <?php
  235 + $items = [
  236 + [
  237 + 'label' => 'Рейтинг компаний',
  238 + 'url' => [
  239 + 'search/performer',
  240 + 'SearchPerformerForm[type]' => 2,
  241 + ],
  242 + ],
  243 + ];
  244 + if(empty( \Yii::$app->user->id )) {
  245 + array_unshift($items, [
  246 + 'label' => 'Регистрация заказчика',
  247 + 'url' => [ '/site/registration' ],
  248 + ]);
  249 + }
220 echo Menu::widget([ 250 echo Menu::widget([
221 'options' => [ 251 'options' => [
222 'class' => 'footer-menu', 252 'class' => 'footer-menu',
223 ], 253 ],
224 - 'items' => [  
225 - [  
226 - 'label' => 'Регистрация заказчика',  
227 - 'url' => ['site/signup'],  
228 - ],  
229 - [  
230 - 'label' => 'Рейтинг компаний',  
231 - 'url' => ['search/index'],  
232 - ],  
233 - ] 254 + 'items' => $items,
234 ]); 255 ]);
  256 + unset( $items );
235 ?> 257 ?>
236 <div class="footer-menu-project"> 258 <div class="footer-menu-project">
237 <?php 259 <?php
238 echo Menu::widget([ 260 echo Menu::widget([
239 - 'options' => [  
240 - 'tag' => 'div', 261 + 'options' => [
  262 + 'tag' => 'div',
241 'class' => 'footer-menu-project-ico', 263 'class' => 'footer-menu-project-ico',
242 ], 264 ],
243 'encodeLabels' => false, 265 'encodeLabels' => false,
244 - 'itemOptions' => [ 266 + 'itemOptions' => [
245 'tag' => false, 267 'tag' => false,
246 ], 268 ],
247 'linkTemplate' => '<a target="_blank" href="{url}">{label}</a>', 269 'linkTemplate' => '<a target="_blank" href="{url}">{label}</a>',
248 - 'items' => [ 270 + 'items' => [
249 [ 271 [
250 'label' => "<img src='/images/soc-ico-1.png' alt=''/>", 272 'label' => "<img src='/images/soc-ico-1.png' alt=''/>",
251 - 'url' => 'http://rss.com', 273 + 'url' => 'http://rss.com',
252 ], 274 ],
253 [ 275 [
254 'label' => "<img src='/images/soc-ico-2.png' alt=''/>", 276 'label' => "<img src='/images/soc-ico-2.png' alt=''/>",
255 - 'url' => 'http://twitter.com', 277 + 'url' => 'http://twitter.com',
256 ], 278 ],
257 ], 279 ],
258 ]); 280 ]);
@@ -263,49 +285,56 @@ AppAsset::register($this); @@ -263,49 +285,56 @@ AppAsset::register($this);
263 285
264 <div class="footer-menu-wrapper third-footer-menu"> 286 <div class="footer-menu-wrapper third-footer-menu">
265 <?php 287 <?php
266 - echo Menu::widget([  
267 - 'options' => [  
268 - 'class' => 'footer-menu',  
269 - ],  
270 - 'items' => [  
271 - [  
272 - 'label' => 'Регистрация компаний',  
273 - 'url' => ['site/signup'],  
274 - ], 288 + $items = [
275 [ 289 [
276 'label' => 'Рейтинг компаний', 290 'label' => 'Рейтинг компаний',
277 - 'url' => ['search/company'], 291 + 'url' => [
  292 + 'search/performer',
  293 + 'SearchPerformerForm[type]' => 2,
  294 + ],
278 ], 295 ],
279 - ]  
280 - ]);  
281 - ?>  
282 - <div class="footer-menu-project-two">  
283 - <?php 296 + ];
  297 + if(empty( \Yii::$app->user->id )) {
  298 + array_unshift($items, [
  299 + 'label' => 'Регистрация компаний',
  300 + 'url' => [ '/site/registration' ],
  301 + ]);
  302 + }
284 echo Menu::widget([ 303 echo Menu::widget([
285 'options' => [ 304 'options' => [
286 - 'tag' => 'div',  
287 - 'class' => 'footer-menu-project-ico',  
288 - ],  
289 - 'encodeLabels' => false,  
290 - 'itemOptions' => [  
291 - 'tag' => false, 305 + 'class' => 'footer-menu',
292 ], 306 ],
293 - 'linkTemplate' => '<a target="_blank" href="{url}">{label}</a>',  
294 - 'items' => [  
295 - [  
296 - 'label' => "<img src='/images/soc-ico-3.png' alt=''/>",  
297 - 'url' => 'http://fb.com', 307 + 'items' => $items,
  308 + ]);
  309 + unset( $items );
  310 + ?>
  311 + <div class="footer-menu-project-two">
  312 + <?php
  313 + echo Menu::widget([
  314 + 'options' => [
  315 + 'tag' => 'div',
  316 + 'class' => 'footer-menu-project-ico',
298 ], 317 ],
299 - [  
300 - 'label' => "<img src='/images/soc-ico-4.png' alt=''/>",  
301 - 'url' => 'http://vk.com', 318 + 'encodeLabels' => false,
  319 + 'itemOptions' => [
  320 + 'tag' => false,
302 ], 321 ],
303 - [  
304 - 'label' => "<img src='/images/soc-ico-5.png' alt=''/>",  
305 - 'url' => 'http://plus.google.com', 322 + 'linkTemplate' => '<a target="_blank" href="{url}">{label}</a>',
  323 + 'items' => [
  324 + [
  325 + 'label' => "<img src='/images/soc-ico-3.png' alt=''/>",
  326 + 'url' => 'http://fb.com',
  327 + ],
  328 + [
  329 + 'label' => "<img src='/images/soc-ico-4.png' alt=''/>",
  330 + 'url' => 'http://vk.com',
  331 + ],
  332 + [
  333 + 'label' => "<img src='/images/soc-ico-5.png' alt=''/>",
  334 + 'url' => 'http://plus.google.com',
  335 + ],
306 ], 336 ],
307 - ],  
308 - ]); 337 + ]);
309 ?> 338 ?>
310 <div class="footer-menu-project-ico-txt">новости сервера</div> 339 <div class="footer-menu-project-ico-txt">новости сервера</div>
311 </div> 340 </div>
@@ -313,41 +342,43 @@ AppAsset::register($this); @@ -313,41 +342,43 @@ AppAsset::register($this);
313 342
314 <div class="footer-menu-wrapper last-footer-menu"> 343 <div class="footer-menu-wrapper last-footer-menu">
315 <?php 344 <?php
316 - echo Menu::widget([  
317 - 'options' => [  
318 - 'class' => 'footer-menu',  
319 - ],  
320 - 'items' => [  
321 - [  
322 - 'label' => 'Русский',  
323 - 'url' => [' ']  
324 - ],  
325 - [  
326 - 'label' => 'Конфиденциальность',  
327 - 'url' => [' ']  
328 - ],  
329 - [  
330 - 'label' => 'Условия использования',  
331 - 'url' => [' ']  
332 - ],  
333 - [  
334 - 'label' => 'Файлы cookie',  
335 - 'url' => [' ']  
336 - ],  
337 - [  
338 - 'label' => 'Реклама',  
339 - 'url' => [' ']  
340 - ],  
341 - [  
342 - 'label' => 'Ad Choices',  
343 - 'url' => [' '] 345 + /* No content
  346 + echo Menu::widget([
  347 + 'options' => [
  348 + 'class' => 'footer-menu',
344 ], 349 ],
345 - [  
346 - 'label' => 'Еще',  
347 - 'url' => [' '] 350 + 'items' => [
  351 + [
  352 + 'label' => 'Русский',
  353 + 'url' => [ ' ' ],
  354 + ],
  355 + [
  356 + 'label' => 'Конфиденциальность',
  357 + 'url' => [ ' ' ],
  358 + ],
  359 + [
  360 + 'label' => 'Условия использования',
  361 + 'url' => [ ' ' ],
  362 + ],
  363 + [
  364 + 'label' => 'Файлы cookie',
  365 + 'url' => [ ' ' ],
  366 + ],
  367 + [
  368 + 'label' => 'Реклама',
  369 + 'url' => [ ' ' ],
  370 + ],
  371 + [
  372 + 'label' => 'Ad Choices',
  373 + 'url' => [ ' ' ],
  374 + ],
  375 + [
  376 + 'label' => 'Еще',
  377 + 'url' => [ ' ' ],
  378 + ],
348 ], 379 ],
349 - ]  
350 - ]); 380 + ]);
  381 + */
351 ?> 382 ?>
352 </div> 383 </div>
353 384
@@ -365,7 +396,7 @@ AppAsset::register($this); @@ -365,7 +396,7 @@ AppAsset::register($this);
365 <div class="artweb-wr"> 396 <div class="artweb-wr">
366 <a target="_blank" href="http://artweb.ua/">Создание сайтов</a> 397 <a target="_blank" href="http://artweb.ua/">Создание сайтов</a>
367 <div class="artweb-img"> 398 <div class="artweb-img">
368 - <a target="_blank" href="http://artweb.ua/"><img src="/images/artweb.png" /></a> 399 + <a target="_blank" href="http://artweb.ua/"><img src="/images/artweb.png"/></a>
369 </div> 400 </div>
370 </div> 401 </div>
371 </div> 402 </div>
frontend/views/layouts/performer.php
@@ -80,6 +80,7 @@ @@ -80,6 +80,7 @@
80 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 80 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
81 ], 81 ],
82 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer' ) ? true : false, 82 'visible' => ( empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] == 'implementer' ) ? true : false,
  83 + 'active' => preg_match('/^portfolio.*$/', $this->context->action->id) ? true : false,
83 ], 84 ],
84 [ 85 [
85 'label' => 'Заказанные работы', 86 'label' => 'Заказанные работы',
@@ -89,6 +90,7 @@ @@ -89,6 +90,7 @@
89 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 90 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
90 ], 91 ],
91 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer' ) ? true : false, 92 'visible' => ( !empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer' ) ? true : false,
  93 + 'active' => preg_match('/^projects.*$/', $this->context->action->id) ? true : false,
92 ], 94 ],
93 [ 95 [
94 'label' => 'Блог', 96 'label' => 'Блог',
@@ -97,6 +99,7 @@ @@ -97,6 +99,7 @@
97 'performer_id' => $this->params[ 'user' ]->id, 99 'performer_id' => $this->params[ 'user' ]->id,
98 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL, 100 'type' => ( !empty( $this->params[ 'type' ] ) ) ? $this->params[ 'type' ] : NULL,
99 ], 101 ],
  102 + 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false,
100 ], 103 ],
101 [ 104 [
102 'label' => 'Мнения', 105 'label' => 'Мнения',
@@ -139,48 +142,64 @@ @@ -139,48 +142,64 @@
139 <ul> 142 <ul>
140 <li class="activejob"> 143 <li class="activejob">
141 <?php 144 <?php
142 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
143 - echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));  
144 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
145 - echo Html::a('Заказчик', Url::current([ 'type' => NULL ])); 145 + if($this->params[ 'user' ]->userInfo->is_freelancer xor $this->params[ 'user' ]->userInfo->is_customer) {
  146 + if(!empty($this->params[ 'type' ]) && $this->params[ 'type' ] == 'customer') {
  147 + echo Html::tag('span', 'Заказчик', [ 'class' => 'activejob_span' ]);
  148 + } else {
  149 + echo Html::tag('span', 'Исполнитель', [ 'class' => 'activejob_span' ]);
  150 + }
146 } else { 151 } else {
147 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ])); 152 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  153 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  154 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  155 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  156 + } else {
  157 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  158 + }
  159 + ?>
  160 + <div class="sidebar-droped-wr style">
  161 + <ul>
  162 + <li>
  163 + <?php
  164 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  165 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  166 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  167 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  168 + } else {
  169 + echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));
  170 + }
  171 + ?>
  172 + </li>
  173 + <li style="display: none">
  174 + <?php
  175 + if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {
  176 + echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));
  177 + } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {
  178 + echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));
  179 + } else {
  180 + echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));
  181 + }
  182 + ?>
  183 + </ul>
  184 + </div>
  185 + <?php
148 } 186 }
149 ?> 187 ?>
150 - <div class="sidebar-droped-wr style">  
151 - <ul>  
152 - <li>  
153 - <?php  
154 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
155 - echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));  
156 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
157 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));  
158 - } else {  
159 - echo Html::a('Заказчик', Url::current([ 'type' => 'customer' ]));  
160 - }  
161 - ?>  
162 - </li>  
163 - <li style="display: none">  
164 - <?php  
165 - if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'implementer') {  
166 - echo Html::a('Исполнитель', Url::current([ 'type' => 'implementer' ]));  
167 - } elseif(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') {  
168 - echo Html::a('Заказчик', Url::current([ 'type' => NULL ]));  
169 - } else {  
170 - echo Html::a('Исполнитель', Url::current([ 'type' => NULL ]));  
171 - }  
172 - ?>  
173 - </ul>  
174 - </div>  
175 </li> 188 </li>
176 </ul> 189 </ul>
177 </div> 190 </div>
178 <div class="performance-vacancy-sidebar-stars style"> 191 <div class="performance-vacancy-sidebar-stars style">
179 <?php 192 <?php
180 echo StarRating::widget([ 193 echo StarRating::widget([
181 - 'name' => 'rating_company',  
182 - 'value' => $this->params[ 'user' ]->userInfo->rating,  
183 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 194 + 'name' => 'rating_company',
  195 + 'value' => $this->params[ 'user' ]->userInfo->rating,
  196 + 'pluginOptions' => [
  197 + 'displayOnly' => true,
  198 + 'size' => 'xxs',
  199 + 'min' => 0,
  200 + 'max' => 10,
  201 + 'stars' => 10,
  202 + ],
184 ]); 203 ]);
185 ?> 204 ?>
186 </div> 205 </div>
@@ -260,7 +279,7 @@ @@ -260,7 +279,7 @@
260 <span class="sidebar-views-txt">Стоимость работ:<br/></span> 279 <span class="sidebar-views-txt">Стоимость работ:<br/></span>
261 <?php 280 <?php
262 if(!empty( $this->params[ 'user' ]->userInfo->salary )) { 281 if(!empty( $this->params[ 'user' ]->userInfo->salary )) {
263 - echo 'от '.$this->params[ 'user' ]->userInfo->salary . ' ' . $this->params[ 'user' ]->userInfo->currency->label.' за час'; 282 + echo 'от ' . $this->params[ 'user' ]->userInfo->salary . ' ' . $this->params[ 'user' ]->userInfo->currency->label . ' за час';
264 } else { 283 } else {
265 echo 'Не указано'; 284 echo 'Не указано';
266 } 285 }
@@ -308,7 +327,9 @@ @@ -308,7 +327,9 @@
308 <script> 327 <script>
309 $('div.rating').rating( 328 $('div.rating').rating(
310 { 329 {
311 - fx : 'full', readOnly : 'true', url : 'rating.php' 330 + fx : 'full',
  331 + readOnly : 'true',
  332 + url : 'rating.php'
312 } 333 }
313 ); 334 );
314 </script> 335 </script>
frontend/views/performer/common.php
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 * @var array $developments 10 * @var array $developments
11 * @var array $educations 11 * @var array $educations
12 * @var array $courses 12 * @var array $courses
13 - * @var int[] $geography 13 + * @var int[] $geography
14 */ 14 */
15 $this->params[ 'user' ] = $user; 15 $this->params[ 'user' ] = $user;
16 16
@@ -23,10 +23,10 @@ @@ -23,10 +23,10 @@
23 if(!$first) { 23 if(!$first) {
24 $geographyString .= ', '; 24 $geographyString .= ', ';
25 } 25 }
26 - $geographyString .= $city . ' ('.$count.')'; 26 + $geographyString .= $city . ' (' . $count . ')';
27 $first = 0; 27 $first = 0;
28 } 28 }
29 - unset($first); 29 + unset( $first );
30 ?> 30 ?>
31 <div class="proektant-profile-content"> 31 <div class="proektant-profile-content">
32 <?php 32 <?php
@@ -236,11 +236,17 @@ @@ -236,11 +236,17 @@
236 <div class="company-performer-comments-bl"> 236 <div class="company-performer-comments-bl">
237 <?php 237 <?php
238 if(!empty( $user->comments[ $i ]->rating )) { 238 if(!empty( $user->comments[ $i ]->rating )) {
239 - echo StarRating::widget([  
240 - 'name' => 'rating_common',  
241 - 'value' => $user->comments[ $i ]->rating->value,  
242 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs']  
243 - ]); 239 + echo StarRating::widget([
  240 + 'name' => 'rating_common',
  241 + 'value' => $user->comments[ $i ]->rating->value,
  242 + 'pluginOptions' => [
  243 + 'displayOnly' => true,
  244 + 'size' => 'xxs',
  245 + 'min' => 0,
  246 + 'max' => 10,
  247 + 'stars' => 10,
  248 + ],
  249 + ]);
244 } 250 }
245 ?> 251 ?>
246 <div class="company-performer-comments-autor">Мнение от: <?= $user->comments[ $i ]->getAuthor(' (Гость)') ?></div> 252 <div class="company-performer-comments-autor">Мнение от: <?= $user->comments[ $i ]->getAuthor(' (Гость)') ?></div>
frontend/views/performer/gallery.php
@@ -9,31 +9,35 @@ @@ -9,31 +9,35 @@
9 $this->params[ 'user' ] = $user; 9 $this->params[ 'user' ] = $user;
10 $this->title = 'My Yii Application'; 10 $this->title = 'My Yii Application';
11 ?> 11 ?>
12 -<div class="video-performer-wrapper style">  
13 - <div class="gallery-title">Видео: <?= count($videos) ?></div>  
14 - <div class="slider-video-wr">  
15 - <div id="demo5" class="scroll-img video-slider">  
16 - <ul>  
17 - <?php foreach($videos as $video): ?>  
18 - <li>  
19 - <div class="iframe-video">  
20 - <iframe width="560" height="320" src="<?= $video[ 'youtube' ] ?>" frameborder="0" allowfullscreen></iframe>  
21 - </div> 12 +<?php
  13 + if(!empty( $videos )) {
  14 + ?>
  15 + <div class="video-performer-wrapper style">
  16 + <div class="gallery-title">Видео: <?= count($videos) ?></div>
  17 + <div class="slider-video-wr">
  18 + <div id="demo5" class="scroll-img video-slider">
  19 + <ul>
  20 + <?php foreach($videos as $video): ?>
  21 + <li>
  22 + <div class="iframe-video">
  23 + <iframe width="560" height="320" src="<?= $video[ 'youtube' ] ?>" frameborder="0" allowfullscreen></iframe>
  24 + </div>
22 25
23 - <a href="#"></a><span></span>  
24 - </li>  
25 - <?php endforeach; ?> 26 + <a href="#"></a><span></span>
  27 + </li>
  28 + <?php endforeach; ?>
26 29
27 - </ul>  
28 - </div>  
29 - <div id="demo5-btn" class="text-center">  
30 - <button class="btn" id="demo5-backward"></button>  
31 - <button class="btn" id="demo5-forward"></button> 30 + </ul>
  31 + </div>
  32 + <div id="demo5-btn" class="text-center">
  33 + <button class="btn" id="demo5-backward"></button>
  34 + <button class="btn" id="demo5-forward"></button>
  35 + </div>
  36 + </div>
32 </div> 37 </div>
33 - </div>  
34 -  
35 -  
36 -</div> 38 + <?php
  39 + }
  40 +?>
37 <div class="gallery-performer-wrapper style"> 41 <div class="gallery-performer-wrapper style">
38 <div class="gallery-performer-margin"> 42 <div class="gallery-performer-margin">
39 <?= ListView::widget([ 43 <?= ListView::widget([
@@ -50,7 +54,9 @@ @@ -50,7 +54,9 @@
50 { 54 {
51 $('#demo5').scrollbox( 55 $('#demo5').scrollbox(
52 { 56 {
53 - direction : 'h', distance : 220, autoPlay : false 57 + direction : 'h',
  58 + distance : 220,
  59 + autoPlay : false
54 } 60 }
55 ); 61 );
56 $('#demo5-backward').click( 62 $('#demo5-backward').click(
frontend/views/performer/portfolio-view.php
@@ -80,6 +80,9 @@ @@ -80,6 +80,9 @@
80 'pluginOptions' => [ 80 'pluginOptions' => [
81 'displayOnly' => true, 81 'displayOnly' => true,
82 'size' => 'xxs', 82 'size' => 'xxs',
  83 + 'min' => 0,
  84 + 'max' => 10,
  85 + 'stars' => 10,
83 ], 86 ],
84 ]); 87 ]);
85 ?> 88 ?>
@@ -120,7 +123,9 @@ @@ -120,7 +123,9 @@
120 <?php 123 <?php
121 foreach($portfolio->ShowGallery($portfolio->gallery->photo) as $one_photo) { 124 foreach($portfolio->ShowGallery($portfolio->gallery->photo) as $one_photo) {
122 ?> 125 ?>
123 - <li><img src="<?= $portfolio->minImg($one_photo, 210, 150) ?>" alt=""/></li> 126 + <li>
  127 + <img src="<?= $portfolio->minImg($one_photo, 210, 150) ?>" alt=""/>
  128 + </li>
124 <?php 129 <?php
125 } 130 }
126 ?> 131 ?>
@@ -171,8 +176,13 @@ @@ -171,8 +176,13 @@
171 <div class="new-portf-slider-wr style"> 176 <div class="new-portf-slider-wr style">
172 <p>Участники проекта:</p> 177 <p>Участники проекта:</p>
173 <?php 178 <?php
174 - foreach($portfolio->portfolioUsers as $portfolioUser) {  
175 - $gallery = $portfolio->ShowGallery($portfolioUser->gallery->photo); 179 + foreach($portfolio->getPortfolioUsers()
  180 + ->where([ 'status' => 1 ])
  181 + ->with('gallery')
  182 + ->all() as $portfolioUser) {
  183 + if(!empty( $portfolioUser->gallery )) {
  184 + $gallery = $portfolio->ShowGallery($portfolioUser->gallery->photo);
  185 + }
176 ?> 186 ?>
177 <a href="<?= Url::to([ 187 <a href="<?= Url::to([
178 'performer/portfolio-view', 188 'performer/portfolio-view',
@@ -251,7 +261,10 @@ @@ -251,7 +261,10 @@
251 { 261 {
252 $('.new-portf-slider #demo5').scrollbox( 262 $('.new-portf-slider #demo5').scrollbox(
253 { 263 {
254 - direction : 'h', distance : 230, autoPlay : false, onMouseOverPause : false 264 + direction : 'h',
  265 + distance : 230,
  266 + autoPlay : false,
  267 + onMouseOverPause : false
255 } 268 }
256 ); 269 );
257 $('#demo5-backward').click( 270 $('#demo5-backward').click(
@@ -268,8 +281,9 @@ @@ -268,8 +281,9 @@
268 ); 281 );
269 var widthSlider = $('.new-portf-slider ul li').length 282 var widthSlider = $('.new-portf-slider ul li').length
270 $('.new-portf-slider ul').css({width : ((widthSlider * 230) - 20)}) 283 $('.new-portf-slider ul').css({width : ((widthSlider * 230) - 20)})
271 - if (widthSlider<=3) {  
272 - $('#demo5-forward, #demo5-backward').css({display:'none'}) 284 + if(widthSlider <= 3)
  285 + {
  286 + $('#demo5-forward, #demo5-backward').css({display : 'none'})
273 } 287 }
274 } 288 }
275 ); 289 );
frontend/views/search/_customer_list_view.php
@@ -31,27 +31,33 @@ @@ -31,27 +31,33 @@
31 </div> 31 </div>
32 <div class="search_perform-stars-wr"> 32 <div class="search_perform-stars-wr">
33 33
34 - <?php  
35 - if($rating = $model->userInfo->rating) {  
36 - echo StarRating::widget([  
37 - 'name' => 'rating_customer',  
38 - 'value' => $rating,  
39 - 'pluginOptions' => [  
40 - 'displayOnly' => true,  
41 - 'size' => 'xxs',  
42 - ],  
43 - ]);  
44 - } else {  
45 - echo StarRating::widget([  
46 - 'name' => 'rating_customer',  
47 - 'value' => 0,  
48 - 'pluginOptions' => [  
49 - 'displayOnly' => true,  
50 - 'size' => 'xxs',  
51 - ],  
52 - ]);  
53 - }  
54 - ?> 34 + <?php
  35 + if($rating = $model->userInfo->rating) {
  36 + echo StarRating::widget([
  37 + 'name' => 'rating_customer',
  38 + 'value' => $rating,
  39 + 'pluginOptions' => [
  40 + 'displayOnly' => true,
  41 + 'size' => 'xxs',
  42 + 'min' => 0,
  43 + 'max' => 10,
  44 + 'stars' => 10,
  45 + ],
  46 + ]);
  47 + } else {
  48 + echo StarRating::widget([
  49 + 'name' => 'rating_customer',
  50 + 'value' => 0,
  51 + 'pluginOptions' => [
  52 + 'displayOnly' => true,
  53 + 'size' => 'xxs',
  54 + 'min' => 0,
  55 + 'max' => 10,
  56 + 'stars' => 10,
  57 + ],
  58 + ]);
  59 + }
  60 + ?>
55 61
56 <div class="search_perform-stars-txt"> 62 <div class="search_perform-stars-txt">
57 <?= count($model->comments) ?> отзывов 63 <?= count($model->comments) ?> отзывов
frontend/views/search/_performer_list_view.php
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 ->limit(4) 16 ->limit(4)
17 ->all(), 'cover'); ?> 17 ->all(), 'cover'); ?>
18 <?php 18 <?php
19 - if(!empty($portfolios)) { 19 + if(!empty( $portfolios )) {
20 for($i = 0; $i < count($portfolios); $i++) { 20 for($i = 0; $i < count($portfolios); $i++) {
21 if($i) { 21 if($i) {
22 echo Html::a(Html::img($portfolios[ $i ]), '#', [ 'class' => 'small-img-search gallery-box-min' ]); 22 echo Html::a(Html::img($portfolios[ $i ]), '#', [ 'class' => 'small-img-search gallery-box-min' ]);
@@ -61,9 +61,15 @@ @@ -61,9 +61,15 @@
61 <div> 61 <div>
62 <?php 62 <?php
63 echo StarRating::widget([ 63 echo StarRating::widget([
64 - 'name' => 'rating_performer',  
65 - 'value' => $model->userInfo->rating,  
66 - 'pluginOptions' => ['displayOnly' => true, 'size' => 'xxs'] 64 + 'name' => 'rating_performer',
  65 + 'value' => $model->userInfo->rating,
  66 + 'pluginOptions' => [
  67 + 'displayOnly' => true,
  68 + 'size' => 'xxs',
  69 + 'min' => 0,
  70 + 'max' => 10,
  71 + 'stars' => 10,
  72 + ],
67 ]); 73 ]);
68 ?> 74 ?>
69 </div> 75 </div>
@@ -111,7 +117,10 @@ @@ -111,7 +117,10 @@
111 'data-id' => $model->id, 117 'data-id' => $model->id,
112 ]); 118 ]);
113 } 119 }
114 - echo Html::a(Yii::t('app', 'Offer project'), ['#'], ['class' => 'get-project', 'data' => ['performer-id' => $model->id]]); 120 + echo Html::a(Yii::t('app', 'Offer project'), [ '#' ], [
  121 + 'class' => 'get-project',
  122 + 'data' => [ 'performer-id' => $model->id ],
  123 + ]);
115 } 124 }
116 ?> 125 ?>
117 </div> 126 </div>
frontend/views/search/_vacancy_list_view.php
@@ -30,9 +30,9 @@ @@ -30,9 +30,9 @@
30 <div class="performer-vacant-reclam-bl-content"> 30 <div class="performer-vacant-reclam-bl-content">
31 <span><?= TextHelper::truncateHtmlText($model->description, 200, '...') ?></span> 31 <span><?= TextHelper::truncateHtmlText($model->description, 200, '...') ?></span>
32 <?= Html::a('<img src="/images/performar_vacancy/arrow-post.png" alt=""/>', [ 32 <?= Html::a('<img src="/images/performar_vacancy/arrow-post.png" alt=""/>', [
33 - 'vacancy-view', 33 + 'company/vacancy-view',
34 'company_id' => $model->user_id, 34 'company_id' => $model->user_id,
35 - 'vacancy_id' => $model->vacancy_id, 35 + 'link' => $model->link,
36 ], [ 'class' => 'performer-vacant-reclam-bl-content-read' ]) ?> 36 ], [ 'class' => 'performer-vacant-reclam-bl-content-read' ]) ?>
37 </div> 37 </div>
38 </div> 38 </div>
39 \ No newline at end of file 39 \ No newline at end of file
frontend/views/search/project.php
@@ -30,6 +30,11 @@ @@ -30,6 +30,11 @@
30 'options' => [ 'class' => 'search-work-form' ], 30 'options' => [ 'class' => 'search-work-form' ],
31 'action' => [ '' ], 31 'action' => [ '' ],
32 ]); 32 ]);
  33 + echo $form->field($model, 'info', [ 'options' => [ 'class' => 'info-search-input' ] ])
  34 + ->label('Поиск')
  35 + ->textInput([ 'class' => 'form-control',
  36 + 'placeholder' => 'Текст для поиска',
  37 + ]);
33 echo $form->field($model, 'specialization') 38 echo $form->field($model, 'specialization')
34 ->dropDownList($specialization, [ 'prompt' => 'Любая' ]); 39 ->dropDownList($specialization, [ 'prompt' => 'Любая' ]);
35 40
@@ -74,7 +79,7 @@ @@ -74,7 +79,7 @@
74 'template' => "{input}\n{label}\n{hint}\n{error}", 79 'template' => "{input}\n{label}\n{hint}\n{error}",
75 'options' => [ 'class' => 'blocks-check-list' ], 80 'options' => [ 'class' => 'blocks-check-list' ],
76 ]) 81 ])
77 - ->label("<span></span>{$model->getAttributeLabel('contractual')}", ['class' => '']) 82 + ->label("<span></span>{$model->getAttributeLabel('contractual')}", [ 'class' => '' ])
78 ->checkbox([ ], false) ?> 83 ->checkbox([ ], false) ?>
79 <?= $form->field($model, 'payment', [ 'template' => "{input}\n{error}" ]) 84 <?= $form->field($model, 'payment', [ 'template' => "{input}\n{error}" ])
80 ->checkboxList($payments, [ 85 ->checkboxList($payments, [
@@ -94,93 +99,7 @@ @@ -94,93 +99,7 @@
94 </div> 99 </div>
95 <?php 100 <?php
96 $form->end(); 101 $form->end();
97 - /*  
98 ?> 102 ?>
99 - <form action="" class="search-work-form">  
100 -  
101 - <div class="blocks-check-list-wrapp">  
102 - <div class="blocks-check-title">Профиль</div>  
103 - <div class="blocks-check-list-wrapp">  
104 - <select>  
105 - <option selected disabled>Дизайн</option>  
106 - <option value="">Ландшафтный дизайн</option>  
107 - <option value="">Интерьерный дизайн</option>  
108 - </select>  
109 - </div>  
110 -  
111 - <div class="blocks-check-list-wrapp">  
112 - <select>  
113 - <option selected disabled>Архитектура</option>  
114 - <option value="">Ландшафтный дизайн</option>  
115 - <option value="">Интерьерный дизайн</option>  
116 - </select>  
117 - </div>  
118 -  
119 - <div class="blocks-check-list-wrapp">  
120 - <select>  
121 - <option selected disabled>Строительство</option>  
122 - <option value="">Ландшафтный дизайн</option>  
123 - <option value="">Интерьерный дизайн</option>  
124 - </select>  
125 - </div>  
126 - </div>  
127 -  
128 - <div class="blocks-check-list-wrapp">  
129 - <div class="blocks-check-title">Регион</div>  
130 - <select>  
131 - <option selected value="">Все страны</option>  
132 - <option style="color: #000; font-weight: bold !important;" value="">Украина</option>  
133 - <option value="">Россия</option>  
134 - <option value="">Белорусь</option>  
135 - </select>  
136 - </div>  
137 - <div class="blocks-check-list-wrapp">  
138 - <select id="theme-1">  
139 - <option selected disabled>Город</option>  
140 - <option value="">Все</option>  
141 - <option value="">Киев</option>  
142 - <option value="">Житомир</option>  
143 - <option value="">Львов</option>  
144 - <option value="">Киев</option>  
145 - <option value="">Житомир</option>  
146 - <option value="">Львов</option>  
147 - </select>  
148 - </div>  
149 -  
150 - <div class="blocks-check-list-wrapp">  
151 - <div class="blocks-check-title">Бюджет</div>  
152 - <div class="form-price-wr">  
153 - <input type="text" placeholder="от"/>  
154 - <input type="text" placeholder="до"/>  
155 - <div class="blocks-check-list-wrapp check-valuta">  
156 - <select>  
157 - <option selected>грн</option>  
158 - <option value="">$</option>  
159 - <option value="">eur</option>  
160 - </select>  
161 - </div>  
162 - </div>  
163 - <div class="blocks-check-list">  
164 - <input type="checkbox" name="group2" class="check-search" id="theme-4"><label for="theme-4"><span></span>Договорной</label>  
165 - </div>  
166 - <div class="blocks-check-list">  
167 - <input type="checkbox" name="group2" class="check-search" id="theme-5"><label for="theme-5"><span></span>Компании</label>  
168 - </div>  
169 - <div class="blocks-check-list">  
170 - <input type="checkbox" name="group2" class="check-search" id="theme-6"><label for="theme-6"><span></span>Проектанты</label>  
171 - </div>  
172 - <div class="blocks-check-list">  
173 - <input checked type="checkbox" name="group2" class="check-search" id="theme-7"><label for="theme-7"><span></span>Все</label>  
174 - </div>  
175 - </div>  
176 -  
177 -  
178 - <a href="#" class="reset-filter">Сбросить фильтр</a>  
179 - <div class="blocks-check-list-submit">  
180 - <input type="submit" value="Найти"/>  
181 - </div>  
182 - </form>  
183 - */ ?>  
184 </div> 103 </div>
185 <div class="right-search-work"> 104 <div class="right-search-work">
186 <div class="search-worker-title style">Сейчас <?= $dataProvider->totalCount ?> предложений</div> 105 <div class="search-worker-title style">Сейчас <?= $dataProvider->totalCount ?> предложений</div>
@@ -197,7 +116,9 @@ @@ -197,7 +116,9 @@
197 </div> 116 </div>
198 </div> 117 </div>
199 <div> 118 <div>
  119 + <?php
200 120
  121 + ?>
201 <div class="section-box" style="height: 720px; overflow: hidden"> 122 <div class="section-box" style="height: 720px; overflow: hidden">
202 <div class="map-settings-opacity"></div> 123 <div class="map-settings-opacity"></div>
203 <div class="map-settings-wrapp"> 124 <div class="map-settings-wrapp">
@@ -226,7 +147,7 @@ @@ -226,7 +147,7 @@
226 </ul> 147 </ul>
227 <ul class="min_markers_two"> 148 <ul class="min_markers_two">
228 <li><span><img src="/images/markers/marker-min-10.png"/></span> 149 <li><span><img src="/images/markers/marker-min-10.png"/></span>
229 - <p><?=Yii::t('app', 'projects')?></p></li> 150 + <p><?= Yii::t('app', 'projects') ?></p></li>
230 <li><span><img src="/images/markers/marker-min-11.png"/></span> 151 <li><span><img src="/images/markers/marker-min-11.png"/></span>
231 <p>подряды</p></li> 152 <p>подряды</p></li>
232 </ul> 153 </ul>
@@ -240,12 +161,16 @@ @@ -240,12 +161,16 @@
240 var start_position = new google.maps.LatLng('56', '30'); 161 var start_position = new google.maps.LatLng('56', '30');
241 var settings = { 162 var settings = {
242 zoom : 7, // scrollwheel: false, 163 zoom : 7, // scrollwheel: false,
243 - center : start_position, mapTypeControl : false, 164 + center : start_position,
  165 + mapTypeControl : false,
244 mapTypeControlOptions : {style : google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 166 mapTypeControlOptions : {style : google.maps.MapTypeControlStyle.DROPDOWN_MENU},
245 navigationControl : false, 167 navigationControl : false,
246 navigationControlOptions : {style : google.maps.NavigationControlStyle.SMALL}, 168 navigationControlOptions : {style : google.maps.NavigationControlStyle.SMALL},
247 - scaleControl : false, streetViewControl : false, rotateControl : false,  
248 - zoomControl : false, mapTypeId : google.maps.MapTypeId.ROADMAP 169 + scaleControl : false,
  170 + streetViewControl : false,
  171 + rotateControl : false,
  172 + zoomControl : false,
  173 + mapTypeId : google.maps.MapTypeId.ROADMAP
249 }; 174 };
250 var map = new google.maps.Map(document.getElementById("map_canvas"), settings); 175 var map = new google.maps.Map(document.getElementById("map_canvas"), settings);
251 176
@@ -308,45 +233,57 @@ @@ -308,45 +233,57 @@
308 233
309 var marker = new google.maps.Marker( 234 var marker = new google.maps.Marker(
310 { 235 {
311 - position : new google.maps.LatLng('56', '35.3'), map : map,  
312 - title : 'Marker Title2', icon : image1 236 + position : new google.maps.LatLng('56', '35.3'),
  237 + map : map,
  238 + title : 'Marker Title2',
  239 + icon : image1
313 } 240 }
314 ); 241 );
315 markers.push(marker); 242 markers.push(marker);
316 243
317 var marker = new google.maps.Marker( 244 var marker = new google.maps.Marker(
318 { 245 {
319 - position : new google.maps.LatLng('56', '36'), map : map,  
320 - title : 'Marker Title2', icon : image2 246 + position : new google.maps.LatLng('56', '36'),
  247 + map : map,
  248 + title : 'Marker Title2',
  249 + icon : image2
321 } 250 }
322 ); 251 );
323 markers.push(marker); 252 markers.push(marker);
324 253
325 var marker = new google.maps.Marker( 254 var marker = new google.maps.Marker(
326 { 255 {
327 - position : new google.maps.LatLng('56', '34.5'), map : map,  
328 - title : 'Marker Title3', icon : image18 256 + position : new google.maps.LatLng('56', '34.5'),
  257 + map : map,
  258 + title : 'Marker Title3',
  259 + icon : image18
329 } 260 }
330 ); 261 );
331 markers.push(marker); 262 markers.push(marker);
332 263
333 var marker = new google.maps.Marker( 264 var marker = new google.maps.Marker(
334 { 265 {
335 - position : new google.maps.LatLng('56', '35'), map : map,  
336 - title : 'Marker Title4', icon : image13 266 + position : new google.maps.LatLng('56', '35'),
  267 + map : map,
  268 + title : 'Marker Title4',
  269 + icon : image13
337 } 270 }
338 ); 271 );
339 markers.push(marker); 272 markers.push(marker);
340 273
341 var clusterStyles = [ 274 var clusterStyles = [
342 { 275 {
343 - url : '/images/markers/clasters.png', height : 36, width : 36 276 + url : '/images/markers/clasters.png',
  277 + height : 36,
  278 + width : 36
344 } 279 }
345 280
346 ]; 281 ];
347 markerClusterer = new MarkerClusterer( 282 markerClusterer = new MarkerClusterer(
348 map, markers, { 283 map, markers, {
349 - maxZoom : 10, gridSize : 100, styles : clusterStyles 284 + maxZoom : 10,
  285 + gridSize : 100,
  286 + styles : clusterStyles
350 } 287 }
351 ); 288 );
352 //балун 289 //балун
@@ -365,6 +302,10 @@ @@ -365,6 +302,10 @@
365 </script> 302 </script>
366 </div> 303 </div>
367 <div id="map_canvas" style="width: 100%; height:100%;"></div> 304 <div id="map_canvas" style="width: 100%; height:100%;"></div>
  305 + <?php
  306 +
  307 + /* Решено убрать нижний слайдер
  308 + ?>
368 <div class="slider_map-wr"> 309 <div class="slider_map-wr">
369 <div class="slider_map_overlay"></div> 310 <div class="slider_map_overlay"></div>
370 <div class="slider_map"> 311 <div class="slider_map">
@@ -456,7 +397,10 @@ @@ -456,7 +397,10 @@
456 </div> 397 </div>
457 </div> 398 </div>
458 </div> 399 </div>
459 - </div>  
460 - 400 + <?php
  401 + */
  402 + ?>
461 </div> 403 </div>
  404 +
  405 +</div>
462 </div> 406 </div>
frontend/views/site/index.php
1 <?php 1 <?php
2 use \yii\helpers\Html; 2 use \yii\helpers\Html;
3 use \common\models\Specialization; 3 use \common\models\Specialization;
4 -  
5 /** 4 /**
6 * @var $this yii\web\View 5 * @var $this yii\web\View
7 * @var $specializations common\models\Specialization 6 * @var $specializations common\models\Specialization
8 */ 7 */
9 -  
10 $this->title = 'My Yii Application'; 8 $this->title = 'My Yii Application';
11 ?> 9 ?>
12 <div class="section-box-1"> 10 <div class="section-box-1">
@@ -108,6 +106,7 @@ @@ -108,6 +106,7 @@
108 <li class="federation-home-list-active"><span>Заказчикам</span></li> 106 <li class="federation-home-list-active"><span>Заказчикам</span></li>
109 <li><span>Компаниям</span></li> 107 <li><span>Компаниям</span></li>
110 <li><span>Проектантам</span></li> 108 <li><span>Проектантам</span></li>
  109 + <li><span>Проекту</span></li>
111 <li><span>Наша миссия</span></li> 110 <li><span>Наша миссия</span></li>
112 </ul> 111 </ul>
113 </div> 112 </div>
@@ -117,16 +116,19 @@ @@ -117,16 +116,19 @@
117 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/> 116 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/>
118 </div> 117 </div>
119 <div class="federation-home-text">Описания рейтингов</div> 118 <div class="federation-home-text">Описания рейтингов</div>
  119 + <div class="federation-home-text-two">Для поиска лучших Команд или Проектантов </div>
120 </div> 120 </div>
121 <div class="federation-home-blocks"> 121 <div class="federation-home-blocks">
122 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/> 122 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/>
123 </div> 123 </div>
124 <div class="federation-home-text">Вы получаете лучшую цену</div> 124 <div class="federation-home-text">Вы получаете лучшую цену</div>
  125 + <div class="federation-home-text-two">Для понимания специализации Компании или Проектанта, с которой работает или будет работать</div>
125 </div> 126 </div>
126 <div class="federation-home-blocks"> 127 <div class="federation-home-blocks">
127 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/> 128 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/>
128 </div> 129 </div>
129 <div class="federation-home-text">Гарантии получения проекта в срок</div> 130 <div class="federation-home-text">Гарантии получения проекта в срок</div>
  131 + <div class="federation-home-text-two">Для оценки рисков при выборе исполнителя</div>
130 </div> 132 </div>
131 </div> 133 </div>
132 134
@@ -135,16 +137,19 @@ @@ -135,16 +137,19 @@
135 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/> 137 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/>
136 </div> 138 </div>
137 <div class="federation-home-text">2Описания рейтингов</div> 139 <div class="federation-home-text">2Описания рейтингов</div>
  140 + <div class="federation-home-text-two">Формирование имиджа Компании и узнаваемости Заказчиками и ведущими Проектантами</div>
138 </div> 141 </div>
139 <div class="federation-home-blocks"> 142 <div class="federation-home-blocks">
140 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/> 143 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/>
141 </div> 144 </div>
142 <div class="federation-home-text">2Вы получаете лучшую цену</div> 145 <div class="federation-home-text">2Вы получаете лучшую цену</div>
  146 + <div class="federation-home-text-two">Для синергии с партнерами и поиска лучших Проектантов в Команду</div>
143 </div> 147 </div>
144 <div class="federation-home-blocks"> 148 <div class="federation-home-blocks">
145 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/> 149 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/>
146 </div> 150 </div>
147 <div class="federation-home-text">2Гарантии получения проекта в срок</div> 151 <div class="federation-home-text">2Гарантии получения проекта в срок</div>
  152 + <div class="federation-home-text-two">Формирования Лучшей Команды за Проектантами которой прейдут Заказчики</div>
148 </div> 153 </div>
149 </div> 154 </div>
150 155
@@ -153,16 +158,19 @@ @@ -153,16 +158,19 @@
153 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/> 158 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/>
154 </div> 159 </div>
155 <div class="federation-home-text">3Описания рейтингов</div> 160 <div class="federation-home-text">3Описания рейтингов</div>
  161 + <div class="federation-home-text-two">Для оценки уровня Опыта в специализации</div>
156 </div> 162 </div>
157 <div class="federation-home-blocks"> 163 <div class="federation-home-blocks">
158 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/> 164 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/>
159 </div> 165 </div>
160 <div class="federation-home-text">3Вы получаете лучшую цену</div> 166 <div class="federation-home-text">3Вы получаете лучшую цену</div>
  167 + <div class="federation-home-text-two">Для представления себя Рынку как профессионала в определенной области</div>
161 </div> 168 </div>
162 <div class="federation-home-blocks"> 169 <div class="federation-home-blocks">
163 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/> 170 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/>
164 </div> 171 </div>
165 <div class="federation-home-text">3Гарантии получения проекта в срок</div> 172 <div class="federation-home-text">3Гарантии получения проекта в срок</div>
  173 + <div class="federation-home-text-two">Для поиска Проектов в которых можно реализовать себя</div>
166 </div> 174 </div>
167 </div> 175 </div>
168 176
@@ -171,17 +179,44 @@ @@ -171,17 +179,44 @@
171 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/> 179 <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/>
172 </div> 180 </div>
173 <div class="federation-home-text">4Описания рейтингов</div> 181 <div class="federation-home-text">4Описания рейтингов</div>
  182 + <div class="federation-home-text-two">Качество. Чем профессиональней будут исполнители, тем лучше будут приняты решения для проекта</div>
174 </div> 183 </div>
175 <div class="federation-home-blocks"> 184 <div class="federation-home-blocks">
176 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/> 185 <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/>
177 </div> 186 </div>
178 <div class="federation-home-text">4Вы получаете лучшую цену</div> 187 <div class="federation-home-text">4Вы получаете лучшую цену</div>
  188 + <div class="federation-home-text-two">Цена. Чем меньше будет ошибок, тем более рентабельным будет Проект и окажется цена</div>
179 </div> 189 </div>
180 <div class="federation-home-blocks"> 190 <div class="federation-home-blocks">
181 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/> 191 <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/>
182 </div> 192 </div>
183 <div class="federation-home-text">4Гарантии получения проекта в срок</div> 193 <div class="federation-home-text">4Гарантии получения проекта в срок</div>
  194 + <div class="federation-home-text-two">Скорость. Чем слаженней будет командная работа профессионалов, тем выше будет скорость</div>
  195 + </div>
  196 + </div>
  197 +
  198 + <div class="federation-home-blocks-wr-blocks">
  199 +
  200 + <div class="federation-home-blocks">
  201 + <div class="federation-home-ico"><img src="/images/ico-fed-1.png" alt=""/>
  202 + </div>
  203 + <div class="federation-home-text">Знание</div>
  204 +<!-- <div class="federation-home-text-two">Помочь профессиональному Проектанту (PRO=Знание*Опыт*Продуктивность) реализовать лучший(Качество) Проект(Опыт) в постоянно развивающейся и продуктивной (Скорость) Компании(Команде) для понимающих(не жадных, лучших - ) Заказчиков.</div>-->
184 </div> 205 </div>
  206 + <div class="federation-home-blocks">
  207 + <div class="federation-home-ico"><img src="/images/ico-fed-2.png" alt=""/>
  208 + </div>
  209 + <div class="federation-home-text">Опыт</div>
  210 +<!-- <div class="federation-home-text-two">Постоянное развитие Рынка Проектантов и поддержка их профессионального роста</div>-->
  211 + </div>
  212 + <div class="federation-home-blocks">
  213 + <div class="federation-home-ico"><img src="/images/ico-fed-3.png" alt=""/>
  214 + </div>
  215 + <div class="federation-home-text">Продуктивность</div>
  216 +<!-- <div class="federation-home-text-two"></div>-->
  217 + </div>
  218 +
  219 + <div class="style new_txt_fed_home">Помочь профессиональному Проектанту реализовать лучший Проект в постоянно развивающейся и продуктивной Компании для понимающих Заказчиков</div>
185 </div> 220 </div>
186 </div> 221 </div>
187 </div> 222 </div>
frontend/views/tender/view.php
@@ -67,6 +67,9 @@ @@ -67,6 +67,9 @@
67 'pluginOptions' => [ 67 'pluginOptions' => [
68 'displayOnly' => true, 68 'displayOnly' => true,
69 'size' => 'xxs', 69 'size' => 'xxs',
  70 + 'min' => 0,
  71 + 'max' => 10,
  72 + 'stars' => 10,
70 ], 73 ],
71 ]); 74 ]);
72 ?> 75 ?>
@@ -209,13 +212,18 @@ @@ -209,13 +212,18 @@
209 { 212 {
210 var start_position = new google.maps.LatLng('56', '30'); 213 var start_position = new google.maps.LatLng('56', '30');
211 var settings = { 214 var settings = {
212 - zoom : 7, scrollwheel : false, center : start_position, 215 + zoom : 7,
  216 + scrollwheel : false,
  217 + center : start_position,
213 mapTypeControl : false, 218 mapTypeControl : false,
214 mapTypeControlOptions : {style : google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 219 mapTypeControlOptions : {style : google.maps.MapTypeControlStyle.DROPDOWN_MENU},
215 navigationControl : false, 220 navigationControl : false,
216 navigationControlOptions : {style : google.maps.NavigationControlStyle.SMALL}, 221 navigationControlOptions : {style : google.maps.NavigationControlStyle.SMALL},
217 - scaleControl : false, streetViewControl : false, rotateControl : false,  
218 - zoomControl : true, mapTypeId : google.maps.MapTypeId.ROADMAP 222 + scaleControl : false,
  223 + streetViewControl : false,
  224 + rotateControl : false,
  225 + zoomControl : true,
  226 + mapTypeId : google.maps.MapTypeId.ROADMAP
219 }; 227 };
220 var map = new google.maps.Map(document.getElementById("map_canvas"), settings); 228 var map = new google.maps.Map(document.getElementById("map_canvas"), settings);
221 229
@@ -225,8 +233,10 @@ @@ -225,8 +233,10 @@
225 233
226 var marker = new google.maps.Marker( 234 var marker = new google.maps.Marker(
227 { 235 {
228 - position : new google.maps.LatLng('56', '35.3'), map : map,  
229 - title : 'Marker Title2', icon : image1 236 + position : new google.maps.LatLng('56', '35.3'),
  237 + map : map,
  238 + title : 'Marker Title2',
  239 + icon : image1
230 } 240 }
231 ); 241 );
232 242
@@ -247,69 +257,69 @@ @@ -247,69 +257,69 @@
247 </div> 257 </div>
248 </div> 258 </div>
249 259
250 - </div>  
251 -  
252 - <div class="tabs_views-wr">  
253 - <div class="_tabs style">  
254 - <div class="box-wr">  
255 - <div class="box-all">  
256 - <?php  
257 - Pjax::begin();  
258 - echo \common\modules\comment\widgets\CommentWidget::widget([  
259 - 'context' => $this,  
260 - 'model' => $model::className(),  
261 - 'model_id' => $model->project_id,  
262 - 'comment_class' => \common\modules\comment\models\CommentProject::className(),  
263 - 'class_options' => [  
264 - 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,  
265 - 'user_id' => \Yii::$app->user->getId(),  
266 - 'guestComment' => false,  
267 - 'status' => \common\modules\comment\models\CommentProject::STATUS_ACTIVE,  
268 - ],  
269 - 'list_options' => [  
270 - 'view' => 'list-project-comment',  
271 - 'class' => 'section box tender-offer-proj-wr',  
272 - ],  
273 - 'form_options' => [  
274 - 'view' => 'form-project-comment',  
275 - 'tag' => 'div',  
276 - 'class' => 'artbox_comment_form section-box tender-add-answer',  
277 - ],  
278 - 'options' => [  
279 - 'tag' => false,  
280 - ],  
281 - ]);  
282 - Pjax::end();  
283 - ?> 260 + </div>
  261 +
  262 + <div class="tabs_views-wr">
  263 + <div class="_tabs style">
  264 + <div class="box-wr">
  265 + <div class="box-all">
  266 + <?php
  267 + Pjax::begin();
  268 + echo \common\modules\comment\widgets\CommentWidget::widget([
  269 + 'context' => $this,
  270 + 'model' => $model::className(),
  271 + 'model_id' => $model->project_id,
  272 + 'comment_class' => \common\modules\comment\models\CommentProject::className(),
  273 + 'class_options' => [
  274 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  275 + 'user_id' => \Yii::$app->user->getId(),
  276 + 'guestComment' => false,
  277 + 'status' => \common\modules\comment\models\CommentProject::STATUS_ACTIVE,
  278 + ],
  279 + 'list_options' => [
  280 + 'view' => 'list-project-comment',
  281 + 'class' => 'section box tender-offer-proj-wr',
  282 + ],
  283 + 'form_options' => [
  284 + 'view' => 'form-project-comment',
  285 + 'tag' => 'div',
  286 + 'class' => 'artbox_comment_form section-box tender-add-answer',
  287 + ],
  288 + 'options' => [
  289 + 'tag' => false,
  290 + ],
  291 + ]);
  292 + Pjax::end();
  293 + ?>
  294 + </div>
284 </div> 295 </div>
285 </div> 296 </div>
286 - </div>  
287 - <div class="_tabs style">  
288 - <div class="box-wr">  
289 - <div class="box-all">  
290 - <?php  
291 - Pjax::begin();  
292 - echo \common\modules\comment\widgets\CommentWidget::widget([  
293 - 'context' => $this,  
294 - 'model' => $model->className(),  
295 - 'model_id' => $model->project_id,  
296 - 'comment_class' => \common\modules\comment\models\CommentProjectAnswer::className(),  
297 - 'class_options' => [  
298 - 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,  
299 - 'user_id' => \Yii::$app->user->getId(),  
300 - 'guestComment' => false,  
301 - 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,  
302 - ],  
303 - 'provider_options' => [  
304 - 'pagination' => [  
305 - 'pageSize' => 2, 297 + <div class="_tabs style">
  298 + <div class="box-wr">
  299 + <div class="box-all">
  300 + <?php
  301 + Pjax::begin();
  302 + echo \common\modules\comment\widgets\CommentWidget::widget([
  303 + 'context' => $this,
  304 + 'model' => $model->className(),
  305 + 'model_id' => $model->project_id,
  306 + 'comment_class' => \common\modules\comment\models\CommentProjectAnswer::className(),
  307 + 'class_options' => [
  308 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  309 + 'user_id' => \Yii::$app->user->getId(),
  310 + 'guestComment' => false,
  311 + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,
  312 + ],
  313 + 'provider_options' => [
  314 + 'pagination' => [
  315 + 'pageSize' => 2,
  316 + ],
306 ], 317 ],
307 - ],  
308 - 'success_options' => [  
309 - 'tag' => 'div',  
310 -// 'content' => 'Вопрос успешно создан и появится как только будет получен ответ',  
311 - 'content' => function(){  
312 - return "<script> 318 + 'success_options' => [
  319 + 'tag' => 'div',
  320 + // 'content' => 'Вопрос успешно создан и появится как только будет получен ответ',
  321 + 'content' => function() {
  322 + return "<script>
313 addRemoveBlocks() 323 addRemoveBlocks()
314 function addRemoveBlocks() 324 function addRemoveBlocks()
315 { 325 {
@@ -343,136 +353,148 @@ @@ -343,136 +353,148 @@
343 setTimeout(closeSuccsescomm, 4000) 353 setTimeout(closeSuccsescomm, 4000)
344 } 354 }
345 </script>"; 355 </script>";
346 - },  
347 - 'class' => 'test-class-success',  
348 - ],  
349 - 'list_options' => [  
350 - 'view' => 'list-comment-question',  
351 - ],  
352 - 'form_options' => [  
353 - 'view' => 'form-comment-answer',  
354 - 'tag' => 'span',  
355 - 'class' => ( ( $model->user_id == \Yii::$app->user->id ) ? 'hidden' : '' ),  
356 - ],  
357 - 'options' => [  
358 - 'class' => 'proektant-comments-wr fix_te style',  
359 - ],  
360 - ]);  
361 - Pjax::end();  
362 - ?> 356 + },
  357 + 'class' => 'test-class-success',
  358 + ],
  359 + 'list_options' => [
  360 + 'view' => 'list-comment-question',
  361 + ],
  362 + 'form_options' => [
  363 + 'view' => 'form-comment-answer',
  364 + 'tag' => 'span',
  365 + 'class' => ( ( $model->user_id == \Yii::$app->user->id ) ? 'hidden' : '' ),
  366 + ],
  367 + 'options' => [
  368 + 'class' => 'proektant-comments-wr fix_te style',
  369 + ],
  370 + ]);
  371 + Pjax::end();
  372 + ?>
  373 + </div>
363 </div> 374 </div>
364 </div> 375 </div>
365 </div> 376 </div>
366 </div> 377 </div>
367 - </div>  
368 378
369 379
370 -</div>  
371 -<script>  
372 - $(document).ready(  
373 - function()  
374 - {  
375 - tabs_();  
376 - inputNumber();  
377 - tenderMark();  
378 -  
379 - function inputNumber() 380 + </div>
  381 + <script>
  382 + $(document).ready(
  383 + function()
380 { 384 {
381 - $("#commentproject-budget_from, #commentproject-budget_to, #commentproject-term_from, #commentproject-term_to")  
382 - .keypress(  
383 - function(e)  
384 - {  
385 - return 8 == e.which || e.which > 47 && e.which < 58 ? void 0 : !1  
386 - }  
387 - )  
388 - } 385 + tabs_();
  386 + inputNumber();
  387 + tenderMark();
389 388
390 - function tabs_()  
391 - {  
392 - $('.tabs_list').css('display', 'block')  
393 - if(location.hash=='#tabs_2') {  
394 - $('._tabs').css({display : 'block'})  
395 - $('._tabs:first-child').css({display : 'none'})  
396 - $('.tabs_list ul li').addClass('active')  
397 - $('.tabs_list ul li:first-child').removeClass('active')  
398 - } else {  
399 - $('._tabs').css({display : 'none'})  
400 - $('._tabs:first-child').css({display : 'block'}) 389 + function inputNumber()
  390 + {
  391 + $("#commentproject-budget_from, #commentproject-budget_to, #commentproject-term_from, #commentproject-term_to")
  392 + .keypress(
  393 + function(e)
  394 + {
  395 + return 8 == e.which || e.which > 47 && e.which < 58 ? void 0 : !1
  396 + }
  397 + )
401 } 398 }
402 399
403 - $('.tabs_list ul li').click(  
404 - function() 400 + function tabs_()
  401 + {
  402 + $('.tabs_list').css('display', 'block')
  403 + if(location.hash == '#tabs_2')
405 { 404 {
406 - $('.tabs_list ul li').removeClass('active')  
407 - $(this).addClass('active')  
408 - var index = $(this).index()  
409 - var tabs = $('._tabs')  
410 - tabs.css({display : 'none'})  
411 - $(tabs[index]).css({display : 'block'})  
412 - var thisHash = $(this).find('a').attr('href')  
413 - window.location.hash = thisHash; 405 + $('._tabs').css({display : 'block'})
  406 + $('._tabs:first-child').css({display : 'none'})
  407 + $('.tabs_list ul li').addClass('active')
  408 + $('.tabs_list ul li:first-child').removeClass('active')
  409 + } else
  410 + {
  411 + $('._tabs').css({display : 'none'})
  412 + $('._tabs:first-child').css({display : 'block'})
414 } 413 }
415 - )  
416 -  
417 - }  
418 414
419 - function tenderMark()  
420 - {  
421 - var markParrent = $('.project_owner_control')  
422 - markParrent.addClass('_on')  
423 - for(var i = 0; i < markParrent.length; i++)  
424 - {  
425 - var markTxt = $(markParrent[i]).find('a.active')  
426 - $(markParrent[i]).find('p.new_mark_').html(markTxt.text())  
427 - markTxt.css({display : 'none'}) 415 + $('.tabs_list ul li').click(
  416 + function()
  417 + {
  418 + $('.tabs_list ul li').removeClass('active')
  419 + $(this).addClass('active')
  420 + var index = $(this).index()
  421 + var tabs = $('._tabs')
  422 + tabs.css({display : 'none'})
  423 + $(tabs[index]).css({display : 'block'})
  424 + var thisHash = $(this).find('a').attr('href')
  425 + window.location.hash = thisHash;
  426 + }
  427 + )
  428 +
428 } 429 }
429 430
430 - markParrent.click(  
431 - function() 431 + function tenderMark()
  432 + {
  433 + var markParrent = $('.project_owner_control')
  434 + markParrent.addClass('_on')
  435 + for(var i = 0; i < markParrent.length; i++)
432 { 436 {
433 - $(this).toggleClass('focus')  
434 - if($(this).hasClass('focus'))  
435 - {  
436 - $(this).addClass('shadow_')  
437 - var height = $(this).height()  
438 - var newHeight = ($(this).find('div').height()) + 2  
439 - $(this).css({height : (height + newHeight)})  
440 - markParrent.find('a').click(  
441 - function()  
442 - {  
443 - $(this).parent().prev().html($(this).text()) 437 + var markTxt = $(markParrent[i]).find('a.active')
  438 + $(markParrent[i]).find('p.new_mark_').html(markTxt.text())
  439 + markTxt.css({display : 'none'})
  440 + }
444 441
445 - }  
446 - )  
447 - } else 442 + markParrent.click(
  443 + function()
448 { 444 {
449 - $(this).removeClass('shadow_')  
450 - $(this).css({height : 29}) 445 + $(this).toggleClass('focus')
  446 + if($(this).hasClass('focus'))
  447 + {
  448 + $(this).addClass('shadow_')
  449 + var height = $(this).height()
  450 + var newHeight = ($(this).find('div').height()) + 2
  451 + $(this).css({height : (height + newHeight)})
  452 + markParrent.find('a').click(
  453 + function()
  454 + {
  455 + $(this).parent().prev().html($(this).text())
  456 +
  457 + }
  458 + )
  459 + } else
  460 + {
  461 + $(this).removeClass('shadow_')
  462 + $(this).css({height : 29})
  463 + }
451 } 464 }
452 - }  
453 - )  
454 -// submitForm();  
455 - function submitForm() {  
456 - $('.input-blocks-comm-button button').click(function () {  
457 - setInterval(function () {  
458 - var length = ($('.test-class-success').length)  
459 - if(length>0){  
460 - console.log('has') 465 + )
  466 + // submitForm();
  467 + function submitForm()
  468 + {
  469 + $('.input-blocks-comm-button button').click(
  470 + function()
  471 + {
  472 + setInterval(
  473 + function()
  474 + {
  475 + var length = ($('.test-class-success').length)
  476 + if(length > 0)
  477 + {
  478 + console.log('has')
  479 + }
  480 + }, 100
  481 + )
  482 +
461 } 483 }
462 - },100) 484 + )
  485 + }
463 486
464 - })  
465 } 487 }
466 488
467 } 489 }
468 -  
469 - }  
470 - )  
471 -</script>  
472 -<script>  
473 - $('div.rating, div.rating-new').rating(  
474 - {  
475 - fx : 'full', readOnly : 'true', url : 'rating.php'  
476 - }  
477 - );  
478 -</script>  
479 \ No newline at end of file 490 \ No newline at end of file
  491 + )
  492 + </script>
  493 + <script>
  494 + $('div.rating, div.rating-new').rating(
  495 + {
  496 + fx : 'full',
  497 + readOnly : 'true',
  498 + url : 'rating.php'
  499 + }
  500 + );
  501 + </script>
480 \ No newline at end of file 502 \ No newline at end of file
frontend/web/css/style.css
@@ -2488,7 +2488,8 @@ input[type=file]::-webkit-file-upload-button { @@ -2488,7 +2488,8 @@ input[type=file]::-webkit-file-upload-button {
2488 } 2488 }
2489 2489
2490 .performance-vacancy-sidebar-stars { 2490 .performance-vacancy-sidebar-stars {
2491 - margin-top: 24px 2491 + /*margin-top: 24px;*/
  2492 + margin-top: -5px;
2492 } 2493 }
2493 .performance-vacancy-sidebar-stars .rating-container {height: 19px} 2494 .performance-vacancy-sidebar-stars .rating-container {height: 19px}
2494 /****perform-vacancy-page****/ 2495 /****perform-vacancy-page****/
@@ -2750,7 +2751,7 @@ input[type=file]::-webkit-file-upload-button { @@ -2750,7 +2751,7 @@ input[type=file]::-webkit-file-upload-button {
2750 } 2751 }
2751 2752
2752 .blog-post-wr:first-child { 2753 .blog-post-wr:first-child {
2753 - margin-top: 15px; 2754 + margin-top: -1px
2754 } 2755 }
2755 2756
2756 .blog-post-title p { 2757 .blog-post-title p {
@@ -8842,14 +8843,10 @@ ul.menu-admin li.logout-li, ul.menu-admin li.logout-li a, ul.menu-admin li:last- @@ -8842,14 +8843,10 @@ ul.menu-admin li.logout-li, ul.menu-admin li.logout-li a, ul.menu-admin li:last-
8842 text-align: center; 8843 text-align: center;
8843 } 8844 }
8844 8845
8845 -.admin-avatar-pattern .remover_image#image_remove_img { 8846 +.admin-avatar-pattern .remover_image {
8846 left: 180px !important; 8847 left: 180px !important;
8847 } 8848 }
8848 8849
8849 -.admin-avatar-pattern .remover_image#poster_remove_img {  
8850 - left: 700px !important;  
8851 -}  
8852 -  
8853 .admin-pattern .file-help-1 { 8850 .admin-pattern .file-help-1 {
8854 display: none 8851 display: none
8855 } 8852 }
@@ -12431,4 +12428,5 @@ li.active-menu-admin:hover a .ico_num { @@ -12431,4 +12428,5 @@ li.active-menu-admin:hover a .ico_num {
12431 background: url("/images/delet-file.png") no-repeat; 12428 background: url("/images/delet-file.png") no-repeat;
12432 padding-left: 0 !important; 12429 padding-left: 0 !important;
12433 } 12430 }
12434 -#modal_form_contacts .fileloader-item-remove:before {display:none;}  
12435 \ No newline at end of file 12431 \ No newline at end of file
  12432 +#modal_form_contacts .fileloader-item-remove:before {display:none;}
  12433 +.command-block-name {height: 50px;overflow: hidden; font-size: 16px;}
12436 \ No newline at end of file 12434 \ No newline at end of file
frontend/web/js/artbox.maps.js
@@ -67,7 +67,6 @@ $( @@ -67,7 +67,6 @@ $(
67 ); 67 );
68 function showMarkers(variable, elements) 68 function showMarkers(variable, elements)
69 { 69 {
70 - console.log(elements);  
71 var position = { 70 var position = {
72 lat : undefined, 71 lat : undefined,
73 lng : undefined 72 lng : undefined
frontend/web/js/script.js
@@ -293,15 +293,6 @@ $(document).ready( @@ -293,15 +293,6 @@ $(document).ready(
293 293
294 function federationHome() 294 function federationHome()
295 { 295 {
296 - var menu_width = 0;  
297 - $('.federation-home-list li').each(  
298 - function()  
299 - {  
300 - menu_width = menu_width + $(this).outerWidth() + 9  
301 - }  
302 - );  
303 - $('.federation-home-list').css({width : menu_width});  
304 -  
305 $('.federation-home-list li').click( 296 $('.federation-home-list li').click(
306 function() 297 function()
307 { 298 {