Commit 7b71f0dec62588fe13168ba03d5f07e5ea7b7bb7

Authored by Administrator
2 parents 2e53da7e c20fd11a

Merge remote-tracking branch 'origin/master'

Showing 37 changed files with 1718 additions and 1109 deletions   Show diff stats
common/models/Blog.php
... ... @@ -2,6 +2,7 @@
2 2  
3 3 namespace common\models;
4 4  
  5 + use common\modules\comment\models\Comment;
5 6 use Yii;
6 7 use yii\behaviors\BlameableBehavior;
7 8 use yii\behaviors\TimestampBehavior;
... ... @@ -30,7 +31,6 @@
30 31 return 'blog';
31 32 }
32 33  
33   -
34 34 /**
35 35 * @inheritdoc
36 36 */
... ... @@ -49,11 +49,11 @@
49 49 'value' => new Expression('NOW()'),
50 50 ],
51 51 'slug' => [
52   - 'class' => 'common\behaviors\Slug',
53   - 'in_attribute' => 'name',
  52 + 'class' => 'common\behaviors\Slug',
  53 + 'in_attribute' => 'name',
54 54 'out_attribute' => 'link',
55   - 'translit' => true
56   - ]
  55 + 'translit' => true,
  56 + ],
57 57 ];
58 58 }
59 59  
... ... @@ -64,7 +64,10 @@
64 64 {
65 65 return [
66 66 [
67   - [ 'name', 'description' ],
  67 + [
  68 + 'name',
  69 + 'description',
  70 + ],
68 71 'required',
69 72 ],
70 73 [
... ... @@ -83,8 +86,9 @@
83 86 ];
84 87 }
85 88  
86   - public function getDateCreate(){
87   - return date('Y-m-d',strtotime($this->date_add));
  89 + public function getDateCreate()
  90 + {
  91 + return date('Y-m-d', strtotime($this->date_add));
88 92 }
89 93  
90 94 /**
... ... @@ -104,4 +108,10 @@
104 108 'cover' => Yii::t('app', 'Фото главное'),
105 109 ];
106 110 }
  111 +
  112 + public function getComments()
  113 + {
  114 + return $this->hasMany(Comment::className(), [ 'model_id' => 'blog_id' ])
  115 + ->where([ 'model' => $this->className() ]);
  116 + }
107 117 }
... ...
common/models/Message.php
... ... @@ -89,8 +89,6 @@ class Message extends \yii\db\ActiveRecord
89 89  
90 90 }
91 91  
92   -
93   -
94 92 public function isMy(){
95 93 if($this->user_id == \Yii::$app->user->id){
96 94 return true;
... ...
common/models/Project.php
... ... @@ -33,6 +33,7 @@
33 33 class Project extends \yii\db\ActiveRecord
34 34 {
35 35  
  36 + public $files;
36 37 /**
37 38 * @inheritdoc
38 39 */
... ... @@ -94,6 +95,7 @@
94 95 [
95 96 'specializationInput',
96 97 'paymentInput',
  98 + 'files',
97 99 ],
98 100 'safe',
99 101 ],
... ... @@ -258,4 +260,17 @@
258 260 {
259 261 $this->specializationString = $value;
260 262 }
  263 +
  264 + /**
  265 + * @return File[]
  266 + */
  267 + public function getFilesList()
  268 + {
  269 + $files = json_decode($this->files);
  270 + if(!empty( $files )) {
  271 + return File::findAll($files);
  272 + } else {
  273 + return [ ];
  274 + }
  275 + }
261 276 }
... ...
common/models/TenderSearch.php
... ... @@ -66,6 +66,13 @@
66 66 ],
67 67 [
68 68 [
  69 + 'contractual',
  70 + ],
  71 + 'default',
  72 + 'value' => 1,
  73 + ],
  74 + [
  75 + [
69 76 'budget_currency',
70 77 ],
71 78 'default',
... ...
common/models/User.php
... ... @@ -9,6 +9,7 @@
9 9 use yii\behaviors\TimestampBehavior;
10 10 use yii\db\ActiveQuery;
11 11 use yii\db\ActiveRecord;
  12 + use yii\helpers\Url;
12 13 use yii\rbac\ManagerInterface;
13 14 use yii\rbac\Role;
14 15 use yii\web\IdentityInterface;
... ... @@ -28,6 +29,32 @@
28 29 * @property string $password write-only password
29 30 * @property string $type
30 31 * @property UserInfo $userInfo
  32 + * @property string $userName
  33 + * @property array[] $roles
  34 + * @property CompanyInfo $companyInfo
  35 + * @property array[] $phones
  36 + * @property array[] $site
  37 + * @property string $address
  38 + * @property string $liveTime
  39 + * @property Payment[] $payments
  40 + * @property integer[] $paymentInput
  41 + * @property Specialization[] $specializations
  42 + * @property integer[] $specializationInput
  43 + * @property Blog[] $blog
  44 + * @property Job[] $jobs
  45 + * @property Job $currentJob
  46 + * @property Portfolio[] $portfolios
  47 + * @property Project[] $projects
  48 + * @property Team[] $teams
  49 + * @property Vacancy[] $vacancies
  50 + * @property Gallery[] $galleries
  51 + * @property UserInfo|CompanyInfo $owner
  52 + * @property string $name
  53 + * @property Comment[] $comments
  54 + * @property Rating[] $commentRating
  55 + * @property int $ratingPG
  56 + * @property string $lastVisit
  57 + * @property string $link
31 58 */
32 59 class User extends ActiveRecord implements IdentityInterface, UserRbacInterface
33 60 {
... ... @@ -51,8 +78,6 @@
51 78 return '{{%user}}';
52 79 }
53 80  
54   -
55   -
56 81 /**
57 82 * @inheritdoc
58 83 */
... ... @@ -60,7 +85,7 @@
60 85 {
61 86 return [
62 87 [
63   - 'class' => 'common\behaviors\ShowImage',
  88 + 'class' => 'common\behaviors\ShowImage',
64 89 ],
65 90 TimestampBehavior::className(),
66 91 ];
... ... @@ -560,11 +585,21 @@
560 585 ->inverseOf('user');
561 586 }
562 587  
  588 + /**
  589 + * Return all user's galleries
  590 + *
  591 + * @return ActiveQuery
  592 + */
563 593 public function getGalleries()
564 594 {
565 595 return $this->hasMany(Gallery::className(), [ 'user_id' => 'id' ]);
566 596 }
567 597  
  598 + /**
  599 + * Return company info or user info according to user type
  600 + *
  601 + * @return ActiveQuery
  602 + */
568 603 public function getOwner()
569 604 {
570 605 if($this->type == 2) {
... ... @@ -574,6 +609,11 @@
574 609 }
575 610 }
576 611  
  612 + /**
  613 + * Return company name or user firstname and lastname according to user type
  614 + *
  615 + * @return string
  616 + */
577 617 public function getName()
578 618 {
579 619 if($this->type == 2) {
... ... @@ -584,6 +624,8 @@
584 624 }
585 625  
586 626 /**
  627 + * Return all comments to user
  628 + *
587 629 * @return ActiveQuery
588 630 */
589 631 public function getComments()
... ... @@ -597,6 +639,8 @@
597 639 }
598 640  
599 641 /**
  642 + * Return all ratings to user
  643 + *
600 644 * @return ActiveQuery
601 645 */
602 646 public function getCommentRating()
... ... @@ -608,13 +652,20 @@
608 652 ]);
609 653 }
610 654  
  655 + /**
  656 + * Return user's rating<br>
  657 + * <b>Available only for PostgreSQL</b>
  658 + *
  659 + * @return int
  660 + * @throws InvalidConfigException
  661 + */
611 662 public function getRatingPG()
612 663 {
613 664 if(\Yii::$app->db->driverName != 'pgsql') {
614 665 throw new InvalidConfigException('This method is available only in PostgreSQL');
615 666 }
616 667 return $this->getCommentRating()
617   - ->select('ROUND(SUM("rating"."value")/COUNT("rating"."rating_id")::float) as rating')
  668 + ->select(['rating' => 'ROUND(SUM("rating"."value")/COUNT("rating"."rating_id")::numeric, 2)'])
618 669 ->andWhere([
619 670 'not',
620 671 [ 'rating.value' => NULL ],
... ... @@ -622,6 +673,15 @@
622 673 ->scalar();
623 674 }
624 675  
  676 + /**
  677 + * Recalculate rating and write it to db.
  678 + *
  679 + * <b>Only for PostgreSQL</b>
  680 + *
  681 + * @see \common\models\User::getRatingPG()
  682 + *
  683 + * @throws InvalidConfigException
  684 + */
625 685 public function updateRating()
626 686 {
627 687 if($rating = $this->getRatingPG()) {
... ... @@ -630,4 +690,23 @@
630 690 }
631 691 }
632 692  
  693 + public function getLastVisit()
  694 + {
  695 + return \Yii::$app->formatter->asRelativeTime($this->userInfo->date_visit);
  696 + }
  697 +
  698 + /**
  699 + * Return link to user personal page according to user type
  700 + *
  701 + * @return string
  702 + */
  703 + public function getLink($page = 'common')
  704 + {
  705 + if($this->type == 2) {
  706 + return Url::to(['company/'.$page, 'company_id' => $this->id]);
  707 + } else {
  708 + return Url::to(['performer/'.$page, 'performer_id' => $this->id]);
  709 + }
  710 + }
  711 +
633 712 }
... ...
common/models/Vacancy.php
... ... @@ -7,6 +7,7 @@
7 7 use yii\behaviors\TimestampBehavior;
8 8 use yii\db\ActiveQuery;
9 9 use yii\db\Expression;
  10 + use yii\helpers\ArrayHelper;
10 11  
11 12 /**
12 13 * This is the model class for table "vacancy".
... ... @@ -31,6 +32,7 @@
31 32  
32 33 const STATUS_ACTIVE = 1;
33 34 const STATUS_CLOSED = 3;
  35 +
34 36 /**
35 37 * @inheritdoc
36 38 */
... ... @@ -57,11 +59,11 @@
57 59 'value' => new Expression('NOW()'),
58 60 ],
59 61 'slug' => [
60   - 'class' => 'common\behaviors\Slug',
61   - 'in_attribute' => 'name',
  62 + 'class' => 'common\behaviors\Slug',
  63 + 'in_attribute' => 'name',
62 64 'out_attribute' => 'link',
63   - 'translit' => true
64   - ]
  65 + 'translit' => true,
  66 + ],
65 67 ];
66 68 }
67 69  
... ... @@ -72,7 +74,12 @@
72 74 {
73 75 return [
74 76 [
75   - [ 'name', 'description', 'city', 'link' ],
  77 + [
  78 + 'name',
  79 + 'description',
  80 + 'city',
  81 + 'link',
  82 + ],
76 83 'required',
77 84 ],
78 85 [
... ... @@ -80,22 +87,31 @@
80 87 'string',
81 88 ],
82 89 [
83   - [ 'employmentInput', 'specializationInput', ],
  90 + [
  91 + 'employmentInput',
  92 + 'specializationInput',
  93 + ],
84 94 'safe',
85 95 ],
86 96 [
87   - ['salary_currency', 'status',],
88   - 'integer'
  97 + [
  98 + 'salary_currency',
  99 + 'status',
  100 + ],
  101 + 'integer',
89 102 ],
90 103 [
91   - ['salary'],
  104 + [ 'salary' ],
92 105 'integer',
93 106 'min' => 0,
94 107 ],
95 108 [
96   - [ 'employmentInput', 'specializationInput' ],
  109 + [
  110 + 'employmentInput',
  111 + 'specializationInput',
  112 + ],
97 113 'default',
98   - 'value' => [],
  114 + 'value' => [ ],
99 115 ],
100 116 [
101 117 [ 'view_count' ],
... ... @@ -118,7 +134,7 @@
118 134 'max' => 255,
119 135 ],
120 136 [
121   - ['phone'],
  137 + [ 'phone' ],
122 138 'match',
123 139 'pattern' => '/^\+?(?:\d{0,3})?[\(\s]?\d{0,5}[\)\s]?\d{3}[-\s]?\d{2}[-\s]?\d{2}$/',
124 140 ],
... ... @@ -179,22 +195,25 @@
179 195 return Fields::getData($this->vacancy_id, Vacancy::className(), 'requirements');
180 196 }
181 197  
  198 + public function getVacancySpecializations()
  199 + {
  200 + return $this->hasMany(VacancySpecialization::className(), [ 'specialization_id' => 'specialization_id' ]);
  201 + }
  202 +
182 203 /**
183 204 * @return ActiveQuery
184 205 */
185 206 public function getSpecializations()
186 207 {
187 208 return $this->hasMany(Specialization::className(), [ 'specialization_id' => 'specialization_id' ])
188   - ->viaTable('vacancy_specialization', [ 'vacancy_id' => 'vacancy_id' ]);
  209 + ->viaTable('vacancy_specialization', [ 'vacancy_id' => 'vacancy_id' ]);
189 210 }
190 211  
191   -
192 212 public function getSalaryCurrency()
193 213 {
194 214 return $this->hasOne(Currency::className(), [ 'currency_id' => 'salary_currency' ]);
195 215 }
196 216  
197   -
198 217 /**
199 218 * Return array of Vacancy's specialization IDs
200 219 * @return integer[]
... ...
common/modules/comment/models/Comment.php
1 1 <?php
2 2 namespace common\modules\comment\models;
3 3  
  4 + use common\models\User;
4 5 use yii\db\ActiveQuery;
5 6  
6 7 /**
... ... @@ -18,6 +19,8 @@
18 19 * @property string $date_delete
19 20 * @property string $model
20 21 * @property int $model_id
  22 + * @property Rating $rating
  23 + * @property User $user
21 24 * @package common\modules\comment\models
22 25 */
23 26 class Comment extends \yii\db\ActiveRecord
... ... @@ -117,6 +120,19 @@
117 120 ];
118 121 }
119 122  
  123 + public function afterSave($insert, $changedAttributes)
  124 + {
  125 + if($this->model == User::className()) {
  126 + if($user = User::findOne($this->model_id)) {
  127 + /**
  128 + * @var User $user
  129 + */
  130 + $user->updateRating();
  131 + }
  132 + }
  133 + parent::afterSave($insert, $changedAttributes);
  134 + }
  135 +
120 136 public static function tableName()
121 137 {
122 138 return '{{%comment}}';
... ... @@ -157,7 +173,7 @@
157 173 'comment.model' => $model,
158 174 'comment.model_id' => $model_id,
159 175 'comment.status' => 1,
160   - ]);
  176 + ])->with('rating');
161 177 }
162 178  
163 179 public function postComment()
... ... @@ -294,7 +310,7 @@
294 310 'model' => $this->className(),
295 311 ])
296 312 ->one();
297   - if(!$rating instanceof \common\modules\comment\models\Rating) {
  313 + if(!$rating instanceof \common\modules\comment\models\Rating && !$this->isNewRecord) {
298 314 $rating = new \common\modules\comment\models\Rating([
299 315 'model' => $this->className(),
300 316 'model_id' => $this->comment_id,
... ... @@ -331,4 +347,9 @@
331 347 }
332 348 }
333 349  
  350 + public function getUser()
  351 + {
  352 + return $this->hasOne(User::className(), [ 'id' => 'user_id' ]);
  353 + }
  354 +
334 355 }
... ...
common/modules/comment/models/CommentProject.php
... ... @@ -3,26 +3,29 @@
3 3  
4 4 use common\models\Currency;
5 5 use common\models\File;
  6 + use common\models\User;
6 7 use yii\db\ActiveQuery;
  8 + use yii\db\ActiveRecord;
7 9 use yii\web\UploadedFile;
8 10  
9 11 /**
10 12 * Class Comment
11   - * @property bool $guestComment
12   - * @property integer $comment_id
13   - * @property string $text
14   - * @property int $user_id
15   - * @property int $status
16   - * @property string $date_add
17   - * @property string $date_update
18   - * @property string $date_delete
19   - * @property string $model
20   - * @property int $model_id
21   - * @property string $files
22   - * @property float $budget_from
23   - * @property float $budget_to
24   - * @property int $term_from
25   - * @property int $term_to
  13 + * @property bool $guestComment
  14 + * @property integer $comment_id
  15 + * @property string $text
  16 + * @property int $user_id
  17 + * @property int $status
  18 + * @property string $date_add
  19 + * @property string $date_update
  20 + * @property string $date_delete
  21 + * @property string $model
  22 + * @property int $model_id
  23 + * @property string $files
  24 + * @property float $budget_from
  25 + * @property float $budget_to
  26 + * @property int $term_from
  27 + * @property int $term_to
  28 + * @property Currency $currency
26 29 * @package common\modules\comment\models
27 30 */
28 31 class CommentProject extends \yii\db\ActiveRecord
... ... @@ -42,6 +45,7 @@
42 45 * @var bool
43 46 */
44 47 public $guestComment = false;
  48 +
45 49 public $file;
46 50  
47 51 public function rules()
... ... @@ -84,7 +88,7 @@
84 88 [
85 89 [ 'budget_currency' ],
86 90 'exist',
87   - 'targetClass' => Currency::className(),
  91 + 'targetClass' => Currency::className(),
88 92 'targetAttribute' => 'currency_id',
89 93 ],
90 94 [
... ... @@ -118,7 +122,7 @@
118 122 'term_to',
119 123 'file',
120 124 ],
121   - self::SCENARIO_GUEST => [
  125 + self::SCENARIO_GUEST => [
122 126  
123 127 ],
124 128 ];
... ... @@ -150,11 +154,11 @@
150 154 public function attributeLabels()
151 155 {
152 156 return [
153   - 'text' => \Yii::t('app', 'Текст ответа'),
  157 + 'text' => \Yii::t('app', 'Текст ответа'),
154 158 'budget_from' => \Yii::t('app', 'от'),
155   - 'budget_to' => \Yii::t('app', 'до'),
156   - 'term_from' => \Yii::t('app', 'от'),
157   - 'term_to' => \Yii::t('app', 'до'),
  159 + 'budget_to' => \Yii::t('app', 'до'),
  160 + 'term_from' => \Yii::t('app', 'от'),
  161 + 'term_to' => \Yii::t('app', 'до'),
158 162 ];
159 163 }
160 164  
... ... @@ -163,10 +167,10 @@
163 167 return $this->guestComment;
164 168 }
165 169  
166   -// public function setGuestComment($value)
167   -// {
168   -// $this->guestComment = $value;
169   -// }
  170 + // public function setGuestComment($value)
  171 + // {
  172 + // $this->guestComment = $value;
  173 + // }
170 174  
171 175 /**
172 176 * @param string $model
... ... @@ -181,27 +185,28 @@
181 185 'comment_project.model' => $model,
182 186 'comment_project.model_id' => $model_id,
183 187 'comment_project.status' => 1,
184   - ]);
  188 + ])
  189 + ->with('currency', 'user', 'user.userInfo', 'user.companyInfo', 'user.comments');
185 190 }
186 191  
187 192 public function postComment()
188 193 {
189 194 if($this->checkCreate()) {
190   - if(!empty(\Yii::$app->request->post($this->formName())['anonymous'])) {
  195 + if(!empty( \Yii::$app->request->post($this->formName())[ 'anonymous' ] )) {
191 196 $this->status = self::STATUS_ANONYMOUS;
192 197 }
193 198 $this->file = UploadedFile::getInstances($this, 'file');
194   - if(!empty($this->file)) {
195   - $file_id = [];
196   - if(is_array($this->file)){
197   - foreach($this->file as $file){
198   - if($file instanceof UploadedFile){
  199 + if(!empty( $this->file )) {
  200 + $file_id = [ ];
  201 + if(is_array($this->file)) {
  202 + foreach($this->file as $file) {
  203 + if($file instanceof UploadedFile) {
199 204 $file_model = new File();
200 205 $file_id[] = $file_model->saveFile($file);
201 206 }
202 207 }
203 208 } else {
204   - if($this->file instanceof UploadedFile){
  209 + if($this->file instanceof UploadedFile) {
205 210 $file_model = new File();
206 211 $file_id[] = $file_model->saveFile($this->file);
207 212 }
... ... @@ -325,4 +330,47 @@
325 330 // }
326 331 }
327 332  
  333 + /**
  334 + * @return ActiveQuery
  335 + */
  336 + public function getCurrency()
  337 + {
  338 + return $this->hasOne(Currency::className(), [ 'currency_id' => 'budget_currency' ]);
  339 + }
  340 +
  341 + /**
  342 + * @return File[]
  343 + */
  344 + public function getFilesList()
  345 + {
  346 + $files = json_decode($this->files);
  347 + if(!empty( $files )) {
  348 + return File::findAll($files);
  349 + } else {
  350 + return [ ];
  351 + }
  352 + }
  353 +
  354 + /**
  355 + * @return ActiveRecord
  356 + * @throws \TypeError
  357 + */
  358 + public function getOwner()
  359 + {
  360 + $model = new $this->model();
  361 + if($model instanceof ActiveRecord) {
  362 + return $model->findOne($this->model_id);
  363 + } else {
  364 + throw new \TypeError('Model must extends Active Record Class');
  365 + }
  366 + }
  367 +
  368 + /**
  369 + * @return User
  370 + */
  371 + public function getUser()
  372 + {
  373 + return $this->hasOne(User::className(), ['id' => 'user_id']);
  374 + }
  375 +
328 376 }
... ...
common/modules/comment/widgets/CommentWidget.php
... ... @@ -197,12 +197,16 @@
197 197 if(empty( $view )) {
198 198 throw new \yii\base\InvalidConfigException("form_options[view] must be set");
199 199 }
200   - return $this->render($view, [
201   - 'model' => $this->comment_class,
202   - 'rating' => $this->rating_class,
203   - 'user' => \Yii::$app->user->identity,
204   - 'dataProvider' => $this->dataProvider,
205   - ]);
  200 + if($this->comment_class->guestComment || !empty(\Yii::$app->user->identity)) {
  201 + return $this->render($view, [
  202 + 'model' => $this->comment_class,
  203 + 'rating' => $this->rating_class,
  204 + 'user' => \Yii::$app->user->identity,
  205 + 'dataProvider' => $this->dataProvider,
  206 + ]);
  207 + } else {
  208 + return '';
  209 + }
206 210 }
207 211  
208 212 public function renderWidget()
... ...
common/modules/comment/widgets/views/_project_comment_view.php
... ... @@ -10,13 +10,7 @@
10 10 * @var \yii\widgets\ListView $widget current ListView instance
11 11 * @var User $user
12 12 */
13   - $user = NULL;
14   - if(!empty( $model->user_id )) {
15   - $user = User::find()
16   - ->where([ 'id' => $model->user_id ])
17   - ->with('userInfo')
18   - ->one();
19   - }
  13 + $user = $model->user;
20 14 ?>
21 15 <div class="performer-vacancy-sidebar-left-wr">
22 16 <div class="performer-vacancy-sidebar-left">
... ... @@ -28,22 +22,22 @@
28 22 <ul>
29 23 <?php
30 24 if(!empty( $user->userInfo->social_fb )) {
31   - echo '<li>'.Html::a(Html::img('/images/ico-fb.png'), $user->userInfo->social_fb, ['target' => '_blank']).'</li>';
  25 + echo '<li>' . Html::a(Html::img('/images/ico-fb.png'), $user->userInfo->social_fb, [ 'target' => '_blank' ]) . '</li>';
32 26 }
33 27 ?>
34 28 <?php
35 29 if(!empty( $user->userInfo->social_t )) {
36   - echo '<li>'.Html::a(Html::img('/images/ico-tw.png'), $user->userInfo->social_t, ['target' => '_blank']).'</li>';
  30 + echo '<li>' . Html::a(Html::img('/images/ico-tw.png'), $user->userInfo->social_t, [ 'target' => '_blank' ]) . '</li>';
37 31 }
38 32 ?>
39 33 <?php
40 34 if(!empty( $user->userInfo->social_in )) {
41   - echo '<li>'.Html::a(Html::img('/images/ico-in.png'), $user->userInfo->social_in, ['target' => '_blank']).'</li>';
  35 + echo '<li>' . Html::a(Html::img('/images/ico-in.png'), $user->userInfo->social_in, [ 'target' => '_blank' ]) . '</li>';
42 36 }
43 37 ?>
44 38 <?php
45 39 if(!empty( $user->userInfo->social_vk )) {
46   - echo '<li>'.Html::a(Html::img('/images/ico-vk.png'), $user->userInfo->social_vk, ['target' => '_blank']).'</li>';
  40 + echo '<li>' . Html::a(Html::img('/images/ico-vk.png'), $user->userInfo->social_vk, [ 'target' => '_blank' ]) . '</li>';
47 41 }
48 42 ?>
49 43 </ul>
... ... @@ -54,60 +48,62 @@
54 48 <div class="sidebarvievstxt"><?= $user->userInfo->view_count ?></div>
55 49 </li>
56 50 <li><img src="/images/sidebar-ico/ico-9.png" alt="">
57   - <div class="sidebarvievstxt"><span class="sidebar-views-txt">Статус: </span><?= (empty($user->userInfo->busy)?'Свободен':'Занят') ?>
  51 + <div class="sidebarvievstxt">
  52 + <span class="sidebar-views-txt">Статус: </span><?= ( empty( $user->userInfo->busy ) ? 'Свободен' : 'Занят' ) ?>
58 53 </div>
59 54 </li>
60 55 <li><img src="/images/sidebar-ico/ico-2.png" alt="">
61 56 <div class="sidebarvievstxt">
62   - <span class="sidebar-views-txt">На сайте: </span>1г. 8 мес.
  57 + <span class="sidebar-views-txt">На сайте: </span><?= $user->liveTime ?>
63 58 </div>
64 59 </li>
65 60 <li><img src="/images/sidebar-ico/ico-3.png" alt="">
66   - <div class="sidebarvievstxt"><span class="sidebar-views-txt">Последний визит:<br></span>2 дня назад
  61 + <div class="sidebarvievstxt"><span class="sidebar-views-txt">Последний визит:<br></span><?= $user->lastVisit ?>
67 62 </div>
68 63 </li>
69 64 </ul>
70   - <a href="#" class="tender-see-profile style">Посмотреть профиль</a>
  65 + <?= Html::a('Посмотреть профиль', $user->link, [ 'class' => 'tender-see-profile style' ]) ?>
71 66 </div>
72 67 </div>
73 68 </div>
74 69 </div>
75 70 <div class="tender-offer-proj-block-right-wr">
76 71 <div class="tender-offer-proj-block-right">
77   - <div class="tender-offer-proj-min-blocks"><span>2000 грн</span></div>
78   - <div class="tender-offer-proj-min-blocks"><span>3 ДНЯ</span></div>
  72 + <div class="tender-offer-proj-min-blocks">
  73 + <span><?= $model->budget_from . '-' . $model->budget_to . ' ' . $model->currency->label ?></span>
  74 + </div>
  75 + <div class="tender-offer-proj-min-blocks">
  76 + <span><?= $model->term_from . '-' . $model->term_to ?> ДНЯ</span></div>
79 77 </div>
80 78 <div class="tender-offer-proj-block-left">
81 79 <div class="search-worker-blocks-title-wr">
82   - <div class="search-worker-blocks-title-title">Петер Цумтор</div>
  80 + <div class="search-worker-blocks-title-title"><?= $user->name ?></div>
83 81 <div class="rating-new">
84 82 <!--оценка-->
85   - <input type="hidden" class="val" value="4"/>
  83 + <input type="hidden" class="val" value="<?= $user->userInfo->rating ?>"/>
86 84 </div>
87   - <a href="#" class="link-to-comm">30 отзывов</a>
  85 + <?= Html::a(count($user->comments). ' отзывов', $user->getLink('review'), ['class' => 'link-to-comm']) ?>
88 86 </div>
89 87 <div class="tender-offer-proj-txt">
90   - <p>1.1 Строительная площадка расположена по адресу: г. Киев.</p>
91   - <p>1.2 Существующий объект представляет собой помещение общей площадью ориентировочно – 140 м2.</p>
92   - <p>1.3. Цель проекта состоит в проведении внутренних общестроительных и отделочных работ.</p>
93   - <p>1.4. При разработке методов строительства и выборе материалов, используемых в настоящем проекте, необходимо учитывать климатические условия, характерные для г. Киева.</p>
94   - <p>1.5. Требования к проектированию и производству работ определяются следующими документами:</p>
95   - <p>- Техническим заданием.</p>
96   - <p>- Строительными нормами и правилами.</p>
97   - <p>Все проектные решения и все разделы рабочего проекта должны быть согласованы с Заказчиком в объеме, необходимом для последующей сдачи инженерных систем и коммуникаций.</p>
  88 + <?= $model->text ?>
98 89 </div>
99 90 <ul class="download-list-files">
100   - <li>
101   - <span></span><a href="#" class="download-link-file">КП.doc</a><a href="#" class="download-link">Скачать</a>
102   - </li>
103   - <li>
104   - <span></span><a href="#" class="download-link-file">Резюме.txt</a><a href="#" class="download-link">Скачать</a>
105   - </li>
  91 + <?php
  92 + foreach($model->getFilesList() as $file) {
  93 + ?>
  94 + <li>
  95 + <span></span>
  96 + <?= Html::a($file->name, $file->dir, ['class' => 'download-link-file']) ?>
  97 + <?= Html::a('Скачать', $file->dir, ['class' => 'download-link', 'download' => 'download']) ?>
  98 + </li>
  99 + <?php
  100 + }
  101 + ?>
106 102 </ul>
107 103 </div>
108 104 <div class="tender-more-buttons-wr">
109   - <a class="get-project-new" href="#">Портфолио</a>
110   - <a class="get-list-new" href="#">Конаткты</a>
  105 + <?= Html::a('Портфолио', $user->getLink('portfolio'), ['class' => 'get-project-new']) ?>
  106 + <?= Html::a('Контакты', $user->link, ['class' => 'get-list-new']) ?>
111 107 </div>
112 108  
113 109 </div>
... ...
common/modules/comment/widgets/views/_review_comment_view.php 0 → 100644
  1 +<?php
  2 + use common\models\User;
  3 + use yii\helpers\Html;
  4 +
  5 + /**
  6 + * @var \common\modules\comment\models\Comment $model Current comment model
  7 + * @var integer $key ID of current comment
  8 + * @var integer $index index of current element according
  9 + * to current page, starting from 0
  10 + * @var \yii\widgets\ListView $widget current ListView instance
  11 + * @var User $user
  12 + */
  13 + $user = $model->user;
  14 +?>
  15 + <div class="comments-name"><?= $user->name ?></div>
  16 +<?php
  17 + /* == STATUS PRO ==
  18 + ?>
  19 + <div class="comments-status"><span>Pro</span></div>
  20 + <?php
  21 + */
  22 +?>
  23 + <div class="comments-date"><?= \Yii::$app->formatter->asDate($model->date_add, 'php:d.m.Y') ?></div>
  24 +<?php
  25 + if(!empty( $model->rating )) {
  26 + ?>
  27 + <div class="rating">
  28 + <!--оценка-->
  29 + <input type="hidden" class="val" value="<?= $model->rating->value ?>"/>
  30 + </div>
  31 + <?php
  32 + }
  33 +?>
  34 + <div class="comments-content">
  35 + <?= $model->text ?>
  36 + </div>
  37 +<?php
  38 + /* == PROJECT INFO ==
  39 + ?>
  40 + <div class="comments-project-link">Проект: <a href="#">Ремонт спальни</a></div>
  41 + <?php
  42 + */
  43 +?>
0 44 \ No newline at end of file
... ...
common/modules/comment/widgets/views/form-comment-review.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var \common\modules\comment\models\Comment $model
  4 + * @var \common\models\User $user
  5 + * @var \yii\data\ActiveDataProvider $dataProvider
  6 + * @var null|\common\modules\comment\models\Rating $rating
  7 + */
  8 + use yii\widgets\ActiveForm;
  9 + use yii\helpers\Html;
  10 +
  11 +?>
  12 +<div class="workplace-title style">
  13 + <p></p>Отзывы о пользователе: <?= $dataProvider->totalCount ?></p></div>
  14 +<div class="new-portf-add-comm style">
  15 + <?php
  16 + $form = ActiveForm::begin();
  17 + echo $form->field($rating, 'value')
  18 + ->label(false)
  19 + ->radioList([
  20 + 1 => 1,
  21 + 2 => 2,
  22 + 3 => 3,
  23 + 4 => 4,
  24 + 5 => 5,
  25 + ]);
  26 + if($model->scenario == $model::SCENARIO_GUEST) {
  27 + echo $form->field($model, 'user_name', [
  28 + 'options' => [
  29 + 'class' => 'input-blocks-comm',
  30 + ],
  31 + 'inputOptions' => [
  32 + 'class' => 'custom-input-4',
  33 + ],
  34 + ])
  35 + ->textInput();
  36 + echo $form->field($model, 'user_email', [
  37 + 'options' => [
  38 + 'class' => 'input-blocks-comm',
  39 + ],
  40 + 'inputOptions' => [
  41 + 'class' => 'custom-input-4',
  42 + ],
  43 + ])
  44 + ->textInput();
  45 + }
  46 +
  47 + ?>
  48 + <div class="artbox_comment_reply_block"></div>
  49 + <?php
  50 + echo $form->field($model, 'text', [
  51 + 'options' => [
  52 + 'class' => 'input-blocks-comm area-comm',
  53 + ],
  54 + 'inputOptions' => [
  55 + 'class' => 'custom-area-4',
  56 + ],
  57 + ])
  58 + ->textarea();
  59 + ?>
  60 + <div class="input-blocks-comm-button style">
  61 + <?= Html::submitButton('Добавить комментарий') ?>
  62 + </div>
  63 + <?php
  64 + $form->end();
  65 + ?>
  66 +</div>
0 67 \ No newline at end of file
... ...
common/modules/comment/widgets/views/form-project-comment.php
... ... @@ -22,7 +22,7 @@
22 22 <div class="form-value-wr style">
23 23 <div class="form-ico-ded-wr">
24 24 <div class="header-cabinet-foto">
25   - <?= Html::img($user->userInfo->image) ?>
  25 + <?= Html::img(($user->userInfo->image)?:'') ?>
26 26 </div>
27 27 <div class="form-value-ded-name">
28 28 <?= $user->name ?>
... ...
common/modules/comment/widgets/views/list-comment-review.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var \yii\data\DataProviderInterface $dataProvider
  4 + */
  5 +echo \yii\widgets\ListView::widget([
  6 + 'dataProvider' => $dataProvider,
  7 + 'itemView' => '_review_comment_view',
  8 + 'options' => [
  9 + 'tag' => 'ul',
  10 + 'class' => 'proektant-comments style'
  11 + ],
  12 + 'itemOptions' => [
  13 + 'tag' => 'li',
  14 + ],
  15 + 'layout' => "{items}\n{pager}",
  16 +]);
0 17 \ No newline at end of file
... ...
common/modules/comment/widgets/views/list-project-comment.php
... ... @@ -5,7 +5,7 @@
5 5 ?>
6 6 <div class="box-wr">
7 7 <div class="box-all">
8   - <div class="tender-offer-proj-title-all style">Предложения проектантов</div>
  8 + <div class="tender-offer-proj-title-all style">Предложения проектантов (<?=$dataProvider->getTotalCount()?>)</div>
9 9 <div class="tender-offer-proj-blocks-wr style">
10 10 <?php
11 11 echo \yii\widgets\ListView::widget([
... ...
frontend/controllers/AccountsController.php
... ... @@ -9,6 +9,7 @@
9 9 use common\models\Department;
10 10 use common\models\Employment;
11 11 use common\models\Fields;
  12 + use common\models\File;
12 13 use common\models\Gallery;
13 14 use common\models\GallerySearch;
14 15 use common\models\Job;
... ... @@ -36,6 +37,7 @@
36 37 use yii\filters\VerbFilter;
37 38 use yii\web\Controller;
38 39 use yii\web\NotFoundHttpException;
  40 + use yii\web\UploadedFile;
39 41  
40 42 /**
41 43 * Site controller
... ... @@ -626,6 +628,24 @@
626 628 $post = \Yii::$app->request->post();
627 629 if(!empty( $post )) {
628 630 $project->load($post);
  631 + $project->files = UploadedFile::getInstances($project, 'files');
  632 + if(!empty( $project->files )) {
  633 + $file_id = [ ];
  634 + if(is_array($project->files)) {
  635 + foreach($project->files as $file) {
  636 + if($file instanceof UploadedFile) {
  637 + $file_model = new File();
  638 + $file_id[] = $file_model->saveFile($file);
  639 + }
  640 + }
  641 + } else {
  642 + if($project->files instanceof UploadedFile) {
  643 + $file_model = new File();
  644 + $file_id[] = $file_model->saveFile($this->file);
  645 + }
  646 + }
  647 + $project->file = json_encode($file_id);
  648 + }
629 649 $project->validate();
630 650 if(!$project->hasErrors()) {
631 651 $date_end = new \DateTime();
... ... @@ -706,6 +726,24 @@
706 726 $post = \Yii::$app->request->post();
707 727 if(!empty( $post )) {
708 728 $project->load($post);
  729 + $project->files = UploadedFile::getInstances($project, 'files');
  730 + if(!empty( $project->files )) {
  731 + $file_id = [ ];
  732 + if(is_array($project->files)) {
  733 + foreach($project->files as $file) {
  734 + if($file instanceof UploadedFile) {
  735 + $file_model = new File();
  736 + $file_id[] = $file_model->saveFile($file);
  737 + }
  738 + }
  739 + } else {
  740 + if($project->files instanceof UploadedFile) {
  741 + $file_model = new File();
  742 + $file_id[] = $file_model->saveFile($this->file);
  743 + }
  744 + }
  745 + $project->file = json_encode($file_id);
  746 + }
709 747 $project->validate();
710 748 if(!$project->hasErrors()) {
711 749 $date_end = new \DateTime();
... ...
frontend/controllers/CompanyController.php
1 1 <?php
2   -namespace frontend\controllers;
3   -
4   -
5   -use common\models\Blog;
6   -use common\models\Fields;
7   -use common\models\Gallery;
8   -use common\models\Portfolio;
9   -use common\models\PortfolioSpecialization;
10   -use common\models\Team;
11   -use common\models\Vacancy;
12   -use common\models\VacancySpecialization;
13   -use Yii;
14   -use yii\data\ActiveDataProvider;
15   -use yii\data\ArrayDataProvider;
16   -use yii\data\Pagination;
17   -use yii\helpers\ArrayHelper;
18   -use yii\web\BadRequestHttpException;
19   -use yii\web\Controller;
20   -use common\models\User;
21   -/**
22   - * Site controller
23   - */
24   -class CompanyController extends Controller
25   -{
26   - public $layout = 'company';
27   -
28   - public $defaultAction = 'common';
  2 + namespace frontend\controllers;
  3 +
  4 + use common\models\Blog;
  5 + use common\models\Fields;
  6 + use common\models\Gallery;
  7 + use common\models\Portfolio;
  8 + use common\models\PortfolioSpecialization;
  9 + use common\models\Team;
  10 + use common\models\Vacancy;
  11 + use common\models\VacancySpecialization;
  12 + use Yii;
  13 + use yii\data\ActiveDataProvider;
  14 + use yii\data\ArrayDataProvider;
  15 + use yii\data\Pagination;
  16 + use yii\helpers\ArrayHelper;
  17 + use yii\web\BadRequestHttpException;
  18 + use yii\web\Controller;
  19 + use common\models\User;
29 20  
30 21 /**
31   - * @inheritdoc
  22 + * Site controller
32 23 */
33   - public function actions()
  24 + class CompanyController extends Controller
34 25 {
35   - return [
36   - 'error' => [
37   - 'class' => 'yii\web\ErrorAction',
38   - ],
39   - 'captcha' => [
40   - 'class' => 'yii\captcha\CaptchaAction',
41   - 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
42   - ],
43   - ];
44   - }
45   -
46   - public function actionIndex()
47   - {
48   - $this->redirect('site/index');
49   - }
50   -
51   - public function actionCommon($company_id)
52   - {
53   - $company = User::findOne($company_id);
54   -
55   - $educations = Fields::getData($company->id,$company->className(),'education');
56   - $phones = Fields::getData($company->id,$company->className(),'phone');
57   - $sites = Fields::getData($company->id,$company->className(),'site');
58   - $soft = implode(', ',ArrayHelper::getColumn(Fields::getData($company->id,$company->className(),'soft'), 'soft'));
59   -
60   - return $this->render('common',[
61   - 'company' => $company,
62   - 'educations' => $educations,
63   - 'phones' => $phones,
64   - 'sites' => $sites,
65   - 'soft' => $soft
66   - ]);
67   - }
68   -
69   - public function actionPortfolio($company_id)
70   - {
71   - $company = User::findOne($company_id);
72 26  
73   - if(!$company instanceof User){
74   - throw new BadRequestHttpException('Пользователь не найден');
  27 + public $layout = 'company';
  28 +
  29 + public $defaultAction = 'common';
  30 +
  31 + /**
  32 + * @inheritdoc
  33 + */
  34 + public function actions()
  35 + {
  36 + return [
  37 + 'error' => [
  38 + 'class' => 'yii\web\ErrorAction',
  39 + ],
  40 + 'captcha' => [
  41 + 'class' => 'yii\captcha\CaptchaAction',
  42 + 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : NULL,
  43 + ],
  44 + ];
75 45 }
76   - $projects = ArrayHelper::getColumn($company->portfolios,'portfolio_id');
77 46  
78   -
79   - $filters = PortfolioSpecialization::find()->select(["specialization_id","COUNT('specialization_id') AS count"])
80   - ->where(["portfolio_id"=>$projects ])->groupBy("specialization_id")->all();
81   -
82   - $portfolio = new ArrayDataProvider([
83   - 'allModels' => $company->getPortfolios()->orderBy('portfolio_id')->all(),
84   - 'pagination' => [
85   - 'pageSize' => 9,
86   - ],
87   - ]);
88   -
89   - return $this->render('portfolio',[
90   - 'company' => $company,
91   - 'filters' => $filters,
92   - 'portfolio' => $portfolio,
93   - 'count' => count($company->portfolios)
94   - ]);
95   - }
96   -
97   - public function actionPortfolioFilter($performer_id, $filter){
98   - $company = User::findOne($performer_id);
99   -
100   - if(!$company instanceof User){
101   - throw new BadRequestHttpException('Пользователь не найден');
  47 + public function actionIndex()
  48 + {
  49 + $this->redirect('site/index');
102 50 }
103   - $portfolios = ArrayHelper::getColumn($company->portfolios,'portfolio_id');
104   -
105   -
106   - $filters = PortfolioSpecialization::find()->select(["specialization_id","COUNT('specialization_id') AS count"])
107   - ->where(["portfolio_id"=>$portfolios ])->groupBy("specialization_id")->all();
108   -
109 51  
110   - $filter_result = PortfolioSpecialization::find()
111   - ->where(['specialization_id'=>$filter,
112   - 'portfolio_id'=>$portfolios
113   - ])->all();
114   -
115   -
116   - $portfolio = new ArrayDataProvider([
117   - 'allModels' => Portfolio::find()->where(['portfolio_id'=>ArrayHelper::getColumn($filter_result,'portfolio_id')])->all(),
118   - 'pagination' => [
119   - 'pageSize' => 9,
120   - ],
121   - ]);
122   -
123   - return $this->render('portfolio',[
124   - 'company' => $company,
125   - 'filters' => $filters,
126   - 'portfolio' => $portfolio,
127   - 'filter_id' => $filter,
128   - 'count' => count($company->portfolios)
129   - ]);
130   - }
131   -
132   - public function actionPortfolioView($company_id , $portfolio_id)
133   - {
134   - $user = User::findOne($company_id);
135   - $portfolio = $user->getPortfolios()
136   - ->where([ 'portfolio_id' => $portfolio_id ])
137   - ->one();
138   - $portfolio->updateCounters([ 'view_count' => 1 ]);
139   - return $this->render('portfolio-view', [
140   - 'user' => $user,
141   - 'portfolio' => $portfolio,
142   - ]);
143   - }
144   -
145   - public function actionTeam($company_id)
146   - {
147   - $company = User::findOne($company_id);
148   -
149   - if(!$company instanceof User){
150   - throw new BadRequestHttpException('Пользователь не найден');
  52 + public function actionCommon($company_id)
  53 + {
  54 + $company = User::findOne($company_id);
  55 +
  56 + $educations = Fields::getData($company->id, $company->className(), 'education');
  57 + $phones = Fields::getData($company->id, $company->className(), 'phone');
  58 + $sites = Fields::getData($company->id, $company->className(), 'site');
  59 + $soft = implode(', ', ArrayHelper::getColumn(Fields::getData($company->id, $company->className(), 'soft'), 'soft'));
  60 +
  61 + return $this->render('common', [
  62 + 'company' => $company,
  63 + 'educations' => $educations,
  64 + 'phones' => $phones,
  65 + 'sites' => $sites,
  66 + 'soft' => $soft,
  67 + ]);
151 68 }
152 69  
153   -
154   - $query = Team::find()->where(['user_id'=>$company_id]);
155   -
156   - $countQuery = clone $query;
157   -
158   - $pagination = new Pagination(['totalCount' => $countQuery->count(),
159   - 'pageSize' => 9,
160   - ]);
161   -
162   - $team = $query->offset($pagination->offset)
163   - ->limit($pagination->limit)
164   - ->all();
165   -
166   - $team = new ArrayDataProvider([
167   - 'allModels' => $team,
168   - ]);
169   -
170   -
171   - return $this->render('team',[
172   - 'company' => $company,
173   - 'team' => $team,
174   - 'pagination' => $pagination
175   - ]);
176   - }
177   -
178   - public function actionBlogList($company_id)
179   - {
180   - $company = User::findOne($company_id);
181   -
182   - if(!$company instanceof User){
183   - throw new BadRequestHttpException('Пользователь не найден');
  70 + public function actionPortfolio($company_id)
  71 + {
  72 + $company = User::findOne($company_id);
  73 +
  74 + if(!$company instanceof User) {
  75 + throw new BadRequestHttpException('Пользователь не найден');
  76 + }
  77 + $projects = ArrayHelper::getColumn($company->portfolios, 'portfolio_id');
  78 +
  79 + $filters = PortfolioSpecialization::find()
  80 + ->select([
  81 + "specialization_id",
  82 + "COUNT('specialization_id') AS count",
  83 + ])
  84 + ->where([ "portfolio_id" => $projects ])
  85 + ->groupBy("specialization_id")
  86 + ->all();
  87 +
  88 + $portfolio = new ArrayDataProvider([
  89 + 'allModels' => $company->getPortfolios()
  90 + ->orderBy('portfolio_id')
  91 + ->all(),
  92 + 'pagination' => [
  93 + 'pageSize' => 9,
  94 + ],
  95 + ]);
  96 +
  97 + return $this->render('portfolio', [
  98 + 'company' => $company,
  99 + 'filters' => $filters,
  100 + 'portfolio' => $portfolio,
  101 + 'count' => count($company->portfolios),
  102 + ]);
184 103 }
185 104  
  105 + public function actionPortfolioFilter($performer_id, $filter)
  106 + {
  107 + $company = User::findOne($performer_id);
  108 +
  109 + if(!$company instanceof User) {
  110 + throw new BadRequestHttpException('Пользователь не найден');
  111 + }
  112 + $portfolios = ArrayHelper::getColumn($company->portfolios, 'portfolio_id');
  113 +
  114 + $filters = PortfolioSpecialization::find()
  115 + ->select([
  116 + "specialization_id",
  117 + "COUNT('specialization_id') AS count",
  118 + ])
  119 + ->where([ "portfolio_id" => $portfolios ])
  120 + ->groupBy("specialization_id")
  121 + ->all();
  122 +
  123 + $filter_result = PortfolioSpecialization::find()
  124 + ->where([
  125 + 'specialization_id' => $filter,
  126 + 'portfolio_id' => $portfolios,
  127 + ])
  128 + ->all();
  129 +
  130 + $portfolio = new ArrayDataProvider([
  131 + 'allModels' => Portfolio::find()
  132 + ->where([ 'portfolio_id' => ArrayHelper::getColumn($filter_result, 'portfolio_id') ])
  133 + ->all(),
  134 + 'pagination' => [
  135 + 'pageSize' => 9,
  136 + ],
  137 + ]);
  138 +
  139 + return $this->render('portfolio', [
  140 + 'company' => $company,
  141 + 'filters' => $filters,
  142 + 'portfolio' => $portfolio,
  143 + 'filter_id' => $filter,
  144 + 'count' => count($company->portfolios),
  145 + ]);
  146 + }
186 147  
187   - $query = Blog::find()->where(['user_id'=>$company_id]);
  148 + public function actionPortfolioView($company_id, $portfolio_id)
  149 + {
  150 + $user = User::findOne($company_id);
  151 + $portfolio = $user->getPortfolios()
  152 + ->where([ 'portfolio_id' => $portfolio_id ])
  153 + ->one();
  154 + $portfolio->updateCounters([ 'view_count' => 1 ]);
  155 + return $this->render('portfolio-view', [
  156 + 'user' => $user,
  157 + 'portfolio' => $portfolio,
  158 + ]);
  159 + }
188 160  
189   - $countQuery = clone $query;
  161 + public function actionTeam($company_id)
  162 + {
  163 + $company = User::findOne($company_id);
  164 + if(!$company instanceof User) {
  165 + throw new BadRequestHttpException('Пользователь не найден');
  166 + }
  167 + $comments = new ActiveDataProvider([
  168 + 'query' => $company->getComments(),
  169 + 'pagination' => [
  170 + 'pageSize' => 4
  171 + ],
  172 + ]);
  173 + $query = Team::find()
  174 + ->where([ 'user_id' => $company_id ]);
  175 + $team = new ActiveDataProvider([
  176 + 'query' => $query,
  177 + 'pagination' => [
  178 + 'pageSize' => 9,
  179 + ],
  180 + ]);
  181 + return $this->render('team', [
  182 + 'company' => $company,
  183 + 'team' => $team,
  184 + 'comments' => $comments,
  185 + ]);
  186 + }
190 187  
191   - $pagination = new Pagination(['totalCount' => $countQuery->count(),
192   - 'pageSize' => 5,
193   - ]);
  188 + public function actionBlogList($company_id)
  189 + {
  190 + $company = User::findOne($company_id);
194 191  
195   - $article = $query->offset($pagination->offset)
196   - ->limit($pagination->limit)
197   - ->all();
  192 + if(!$company instanceof User) {
  193 + throw new BadRequestHttpException('Пользователь не найден');
  194 + }
198 195  
199   - $blog = new ArrayDataProvider([
200   - 'allModels' => $article,
201   - ]);
  196 + $query = Blog::find()
  197 + ->where([ 'user_id' => $company_id ]);
202 198  
  199 + $countQuery = clone $query;
203 200  
204   - return $this->render('blog-list',[
205   - 'company' => $company,
206   - 'blog' => $blog,
207   - 'pagination' => $pagination
208   - ]);
209   - }
  201 + $pagination = new Pagination([
  202 + 'totalCount' => $countQuery->count(),
  203 + 'pageSize' => 5,
  204 + ]);
210 205  
  206 + $article = $query->offset($pagination->offset)
  207 + ->limit($pagination->limit)
  208 + ->with('comments')
  209 + ->all();
211 210  
212   - public function actionBlogView($company_id, $link)
213   - {
214   - $company = User::findOne($company_id);
  211 + $blog = new ArrayDataProvider([
  212 + 'allModels' => $article,
  213 + ]);
215 214  
216   - if(!$company instanceof User){
217   - throw new BadRequestHttpException('Пользователь не найден');
  215 + return $this->render('blog-list', [
  216 + 'company' => $company,
  217 + 'blog' => $blog,
  218 + 'pagination' => $pagination,
  219 + ]);
218 220 }
219 221  
  222 + public function actionBlogView($company_id, $link)
  223 + {
  224 + $company = User::findOne($company_id);
220 225  
221   - $article = Blog::findOne(['link'=>$link,'user_id'=>$company_id]);
222   - $article->view_count ++;
223   - $article->save();
  226 + if(!$company instanceof User) {
  227 + throw new BadRequestHttpException('Пользователь не найден');
  228 + }
224 229  
  230 + $article = Blog::find()
  231 + ->where([
  232 + 'link' => $link,
  233 + 'user_id' => $company_id,
  234 + ])
  235 + ->with('comments')
  236 + ->one();
  237 + $article->updateCounters([ 'view_count' => 1 ]);
225 238  
226   - return $this->render('blog-view',[
227   - 'company' => $company,
228   - 'article' =>$article,
229   -
230   - ]);
231   - }
232   -
233   - public function actionReview($company_id)
234   - {
235   - $company = User::findOne($company_id);
236   -
237   - return $this->render('review',[
238   - 'company' => $company
239   - ]);
240   - }
241   -
242   - public function actionVacancyList($company_id)
243   - {
244   -
245   - $company = User::findOne($company_id);
  239 + return $this->render('blog-view', [
  240 + 'company' => $company,
  241 + 'article' => $article,
246 242  
247   - if(!$company instanceof User){
248   - throw new BadRequestHttpException('Пользователь не найден');
  243 + ]);
249 244 }
250 245  
  246 + public function actionReview($company_id)
  247 + {
  248 + $company = User::findOne($company_id);
251 249  
252   - $query = $company->getVacancies();
  250 + return $this->render('review', [
  251 + 'company' => $company,
  252 + ]);
  253 + }
253 254  
254   - $countQuery = clone $query;
  255 + public function actionVacancyList($company_id)
  256 + {
255 257  
256   - $pagination = new Pagination(['totalCount' => $countQuery->count(),
257   - 'pageSize' => 5,
258   - ]);
  258 + $company = User::findOne($company_id);
259 259  
260   - $vacancy = $query->offset($pagination->offset)
261   - ->limit($pagination->limit);
  260 + if(!$company instanceof User) {
  261 + throw new BadRequestHttpException('Пользователь не найден');
  262 + }
262 263  
  264 + $query = $company->getVacancies();
263 265  
264   - $provider = new ActiveDataProvider([
265   - 'query' => $vacancy,
266   - 'pagination' => false,
267   - 'sort' => [
268   - 'defaultOrder' => [
269   - 'date_add' => SORT_DESC,
270   - 'name' => SORT_ASC,
271   - ]
272   - ],
273   - ]);
  266 + $provider = new ActiveDataProvider([
  267 + 'query' => $query,
  268 + 'pagination' => [
  269 + 'pageSize' => 5,
  270 + ],
  271 + 'sort' => [
  272 + 'defaultOrder' => [
  273 + 'date_add' => SORT_DESC,
  274 + 'name' => SORT_ASC,
  275 + ],
  276 + ],
  277 + ]);
274 278  
  279 + return $this->render('vacancy-list', [
  280 + 'company' => $company,
  281 + 'provider' => $provider,
  282 + ]);
275 283  
  284 + }
276 285  
277   - return $this->render('vacancy-list',[
278   - 'company' => $company,
279   - 'provider' => $provider,
280   - 'pagination' => $pagination
281   - ]);
  286 + public function actionVacancyView($company_id, $link)
  287 + {
  288 + $company = User::findOne($company_id);
  289 + $vacancy = $company->getVacancies()
  290 + ->where([ 'link' => $link ])
  291 + ->with([
  292 + 'employments',
  293 + 'specializations',
  294 + ])
  295 + ->one();
  296 +
  297 + $specialization_id = $vacancy->getSpecializations()
  298 + ->select('specialization_id')
  299 + ->column();
  300 +
  301 + $vacancy_id = VacancySpecialization::find()
  302 + ->where([ 'specialization_id' => $specialization_id ])
  303 + ->select('vacancy_id')
  304 + ->column();
  305 +
  306 + $similar_vacancies = Vacancy::find()
  307 + ->where([
  308 + 'city' => $vacancy->city,
  309 + 'vacancy_id' => $vacancy_id,
  310 + ])
  311 + ->andFilterWhere([
  312 + '<>',
  313 + 'vacancy_id',
  314 + $vacancy->vacancy_id,
  315 + ])
  316 + ->orderBy([ 'vacancy_id' => SORT_DESC ])
  317 + ->limit(3)
  318 + ->all();
  319 +
  320 + return $this->render('vacancy-view', [
  321 + 'company' => $company,
  322 + 'vacancy' => $vacancy,
  323 + 'similar_vacancies' => $similar_vacancies,
  324 + ]);
  325 + }
282 326  
283   - }
  327 + public function actionGallery($company_id)
  328 + {
  329 + $company = User::findOne($company_id);
284 330  
285   - public function actionVacancyView($company_id, $link)
286   - {
287   - $company = User::findOne($company_id);
288   - $vacancy = $company->getVacancies()->where(['link' => $link])->with(['employments'])->one();
  331 + if(!$company instanceof User) {
  332 + throw new BadRequestHttpException('Пользователь не найден');
  333 + }
289 334  
  335 + $query = Gallery::find()
  336 + ->where([ 'user_id' => $company_id ]);
290 337  
291   - $specialization_id = $vacancy->getSpecializations()->select('specialization_id')->column();
  338 + $countQuery = clone $query;
292 339  
293   - $vacancy_id = VacancySpecialization::find()->where(['specialization_id'=>$specialization_id])->select('vacancy_id')->column();
  340 + $pagination = new Pagination([
  341 + 'totalCount' => $countQuery->count(),
  342 + 'pageSize' => 5,
  343 + ]);
294 344  
  345 + $gallery = $query->offset($pagination->offset)
  346 + ->limit($pagination->limit)
  347 + ->all();
295 348  
296   - $similar_vacancies = Vacancy::find()
297   - ->where([
298   - 'city' => $vacancy->city,
299   - 'vacancy_id' => $vacancy_id
300   - ])
301   - ->andFilterWhere([
302   - '<>',
303   - 'vacancy_id',
304   - $vacancy->vacancy_id
305   - ])->limit(3)
306   - ->all();
307   -
308   - return $this->render('vacancy-view',[
309   - 'company' => $company,
310   - 'vacancy' => $vacancy,
311   - 'similar_vacancies' => $similar_vacancies
312   - ]);
313   - }
  349 + $gallery = new ArrayDataProvider([
  350 + 'allModels' => $gallery,
  351 + ]);
314 352  
  353 + $videos = Fields::getData($company->id, Gallery::className(), 'youtube');
315 354  
316   - public function actionGallery($company_id)
317   - {
318   - $company = User::findOne($company_id);
  355 + $this->layout = 'gallery-company';
319 356  
320   - if(!$company instanceof User){
321   - throw new BadRequestHttpException('Пользователь не найден');
  357 + return $this->render('gallery', [
  358 + 'company' => $company,
  359 + 'gallery' => $gallery,
  360 + 'pagination' => $pagination,
  361 + 'videos' => $videos,
  362 + ]);
322 363 }
323   -
324   -
325   - $query = Gallery::find()->where(['user_id'=>$company_id]);
326   -
327   - $countQuery = clone $query;
328   -
329   - $pagination = new Pagination(['totalCount' => $countQuery->count(),
330   - 'pageSize' => 5,
331   - ]);
332   -
333   - $gallery = $query->offset($pagination->offset)
334   - ->limit($pagination->limit)
335   - ->all();
336   -
337   - $gallery = new ArrayDataProvider([
338   - 'allModels' => $gallery,
339   - ]);
340   -
341   - $videos = Fields::getData($company->id,Gallery::className(),'youtube');
342   -
343   - $this->layout = 'gallery-company';
344   -
345   - return $this->render('gallery',[
346   - 'company' => $company,
347   - 'gallery' =>$gallery,
348   - 'pagination' => $pagination,
349   - 'videos' => $videos
350   - ]);
351 364 }
352   -}
... ...
frontend/controllers/PerformerController.php
... ... @@ -97,7 +97,9 @@
97 97 ->all();
98 98  
99 99 $portfolio = new ArrayDataProvider([
100   - 'allModels' => $user->getPortfolios()->orderBy('portfolio_id')->all(),
  100 + 'allModels' => $user->getPortfolios()
  101 + ->orderBy('portfolio_id')
  102 + ->all(),
101 103 'pagination' => [
102 104 'pageSize' => 9,
103 105 ],
... ... @@ -187,6 +189,7 @@
187 189  
188 190 $article = $query->offset($pagination->offset)
189 191 ->limit($pagination->limit)
  192 + ->with('comments')
190 193 ->all();
191 194  
192 195 $blog = new ArrayDataProvider([
... ... @@ -208,16 +211,17 @@
208 211 throw new BadRequestHttpException('Пользователь не найден');
209 212 }
210 213  
211   - $article = Blog::findOne([
212   - 'link' => $link,
213   - 'user_id' => $performer_id,
214   - ]);
  214 + $article = Blog::find()
  215 + ->where([
  216 + 'link' => $link,
  217 + 'user_id' => $performer_id,
  218 + ])
  219 + ->with('comments')->one();
215 220 $article->updateCounters([ 'view_count' => 1 ]);
216 221  
217 222 return $this->render('blog-view', [
218 223 'user' => $user,
219 224 'article' => $article,
220   -
221 225 ]);
222 226 }
223 227  
... ... @@ -254,7 +258,8 @@
254 258 throw new BadRequestHttpException('Пользователь не найден');
255 259 }
256 260  
257   - $query = Gallery::find()->where([ 'user_id' => $performer_id ]);
  261 + $query = Gallery::find()
  262 + ->where([ 'user_id' => $performer_id ]);
258 263  
259 264 $countQuery = clone $query;
260 265  
... ...
frontend/views/accounts/_projects_form.php
... ... @@ -23,21 +23,21 @@
23 23 <div class="login-left-column-title"><?= $this->title ?></div>
24 24  
25 25 <?php
26   - $form = ActiveForm::begin();
  26 + $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
27 27 ?>
28 28  
29 29  
30 30 <div class="input-blocks-wrapper">
31 31 <div class="input-blocks">
32 32 <?= $form->field($project, 'name')
33   - ->textInput (['class'=> 'custom-input-2']) ?>
  33 + ->textInput([ 'class' => 'custom-input-2' ]) ?>
34 34 </div>
35 35 </div>
36 36  
37 37 <div class="input-blocks-wrapper">
38 38 <div class="input-blocks admin-project-list admin-currency-second">
39 39 <?= $form->field($project, 'project_pid')
40   - ->dropDownList($projects, [ 'prompt' => 'Родительский проект' ]) ?>
  40 + ->dropDownList($projects, [ 'prompt' => 'Родительский проект' ]) ?>
41 41 </div>
42 42 </div>
43 43  
... ... @@ -63,15 +63,15 @@
63 63 <li>
64 64 <a href="#" title="<?= $child_second->specialization_name ?>">
65 65 <?= $form->field($project, "specializationInput[{$child_second->specialization_id}]", [
66   - 'template' => '{input}{label}{hint}{error}',
  66 + 'template' => '{input}{label}{hint}{error}',
67 67 ])
68   - ->label('<span></span>' . $child_second->specialization_name)
69   - ->checkbox([
70   - 'value' => $child_second->specialization_id,
71   - 'label' => NULL,
72   - 'uncheck' => NULL,
73   - 'class' => 'custom-check',
74   - ], false) ?>
  68 + ->label('<span></span>' . $child_second->specialization_name)
  69 + ->checkbox([
  70 + 'value' => $child_second->specialization_id,
  71 + 'label' => NULL,
  72 + 'uncheck' => NULL,
  73 + 'class' => 'custom-check',
  74 + ], false) ?>
75 75 </a>
76 76 </li>
77 77 <?php endif; ?>
... ... @@ -91,7 +91,9 @@
91 91 </div>
92 92 </div>
93 93  
94   -<div class="admin-specialization-selected style"><ul></ul></div>
  94 +<div class="admin-specialization-selected style">
  95 + <ul></ul>
  96 +</div>
95 97  
96 98  
97 99 <div class="conacts-admin style">Адрес проекта:</div>
... ... @@ -99,38 +101,33 @@
99 101 <div class="input-blocks-wrapper">
100 102 <div class="input-blocks">
101 103 <?= $form->field($project, 'city')
102   - ->widget(Select2::classname(), [
103   - 'options' => [ 'placeholder' => 'Выбор города ...' ],
104   - 'pluginOptions' => [
105   - 'allowClear' => true,
106   - 'minimumInputLength' => 3,
107   - 'ajax' => [
108   - 'url' => \yii\helpers\Url::to([ 'site/city' ]),
109   - 'dataType' => 'json',
110   - 'data' => new JsExpression('function(params) { return {q:params.term}; }'),
111   - ],
112   - 'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
113   - 'templateResult' => new JsExpression('function(city) { return city.text; }'),
114   - 'templateSelection' => new JsExpression('function (city) { return city.text; }'),
115   - ],
116   - ]);
117   - ?>
  104 + ->widget(Select2::classname(), [
  105 + 'options' => [ 'placeholder' => 'Выбор города ...' ],
  106 + 'pluginOptions' => [
  107 + 'allowClear' => true,
  108 + 'minimumInputLength' => 3,
  109 + 'ajax' => [
  110 + 'url' => \yii\helpers\Url::to([ 'site/city' ]),
  111 + 'dataType' => 'json',
  112 + 'data' => new JsExpression('function(params) { return {q:params.term}; }'),
  113 + ],
  114 + 'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
  115 + 'templateResult' => new JsExpression('function(city) { return city.text; }'),
  116 + 'templateSelection' => new JsExpression('function (city) { return city.text; }'),
  117 + ],
  118 + ]); ?>
118 119 </div>
119 120  
120 121  
121   -
122   -
123   -
124 122 <div class="input-blocks street-input">
125 123 <?= $form->field($project, 'street', [ 'template' => "{label}{input}{hint}{error}" ])
126   - ->textInput (['class'=> 'custom-input-2']) ?>
  124 + ->textInput([ 'class' => 'custom-input-2' ]) ?>
127 125 </div>
128 126  
129 127  
130   -
131 128 <div class="input-blocks home-input">
132 129 <?= $form->field($project, 'house', [ 'template' => "{label}{input}{hint}{error}" ])
133   - ->textInput (['class'=> 'custom-input-2']) ?>
  130 + ->textInput([ 'class' => 'custom-input-2' ]) ?>
134 131 </div>
135 132 </div>
136 133 </div>
... ... @@ -138,20 +135,22 @@
138 135 <div class="input-blocks-wrapper">
139 136 <div class="input-blocks admin-project-list-two admin-currency-first">
140 137 <?= $form->field($project, 'budget', [
141   - 'template' => "{label}<br />{input}\n{hint}\n{error}"
  138 + 'template' => "{label}<br />{input}\n{hint}\n{error}",
142 139 ])
143   - ->textInput (['class'=> 'custom-input-2 custom-input-2-date','type'=>'number']) ?>
  140 + ->textInput([
  141 + 'class' => 'custom-input-2 custom-input-2-date',
  142 + 'type' => 'number',
  143 + ]) ?>
144 144 </div>
145 145 <div class="input-blocks admin-project-list-two admin-currency-second">
146   - <?=
147   - $form->field($project, 'budget_currency')->label(false)->dropDownList(Currency::getCurrencyDropdown(), ['class'=> 'custom-input-2']);
148   - ?>
  146 + <?= $form->field($project, 'budget_currency')
  147 + ->label(false)
  148 + ->dropDownList(Currency::getCurrencyDropdown(), [ 'class' => 'custom-input-2' ]); ?>
149 149 </div>
150 150 <div class="input-blocks admin-who-check-payment admin-project-contractual">
151   - <?= $form->field($project, 'contractual', ['template' => "{input}{label}\n{hint}\n{error}"])
152   - ->checkbox (['class'=> 'custom-check'], false)
153   - ->label ('<span></span>Договорной')
154   - ?>
  151 + <?= $form->field($project, 'contractual', [ 'template' => "{input}{label}\n{hint}\n{error}" ])
  152 + ->checkbox([ 'class' => 'custom-check' ], false)
  153 + ->label('<span></span>Договорной') ?>
155 154 </div>
156 155  
157 156 </div>
... ... @@ -159,37 +158,37 @@
159 158 <div class="input-blocks-wrapper">
160 159 <div class="input-blocks">
161 160 <?= $form->field($project, 'payment_variant')
162   - ->radioList([
163   - 1 => 'Без предоплаты',
164   - 2 => 'Предоплата возможна',
165   - ],[
166   - 'item' => function($index, $label, $name, $checked, $value) {
167   - $return = '<div class="admin-who-check">';
168   - $return .= '<input class="custom-radio" id="select_admin_mfp'.$value.'" type="radio" name="' . $name . '" value="' . $value . '" '.($checked ? "checked" :"").' >';
169   - $return .= '<label for="select_admin_mfp'.$value.'" >';
170   - $return .= '<span></span>' . ucwords($label);
171   - $return .= '</label>';
172   - $return .= '</div>';
173   - return $return;
174   - }
175   - ]) ?>
  161 + ->radioList([
  162 + 1 => 'Без предоплаты',
  163 + 2 => 'Предоплата возможна',
  164 + ], [
  165 + 'item' => function($index, $label, $name, $checked, $value) {
  166 + $return = '<div class="admin-who-check">';
  167 + $return .= '<input class="custom-radio" id="select_admin_mfp' . $value . '" type="radio" name="' . $name . '" value="' . $value . '" ' . ( $checked ? "checked" : "" ) . ' >';
  168 + $return .= '<label for="select_admin_mfp' . $value . '" >';
  169 + $return .= '<span></span>' . ucwords($label);
  170 + $return .= '</label>';
  171 + $return .= '</div>';
  172 + return $return;
  173 + },
  174 + ]) ?>
176 175 </div>
177 176 </div>
178 177  
179 178 <div class="input-blocks-wrapper">
180 179 <div class="input-blocks">
181 180 <?= $form->field($project, 'paymentInput')
182   - ->checkboxList($payment,[
183   - 'item' => function($index, $label, $name, $checked, $value) {
184   - $return = '<div class="admin-who-check-payment">';
185   - $return .= '<input class="custom-check" id="check_admin_mfp'.$value.'" type="checkbox" name="' . $name . '" value="' . $value . '" '.($checked ? "checked" :"").' >';
186   - $return .= '<label for="check_admin_mfp'.$value.'" >';
187   - $return .= '<span></span>' . ucwords($label);
188   - $return .= '</label>';
189   - $return .= '</div>';
190   - return $return;
191   - }
192   - ]) ?>
  181 + ->checkboxList($payment, [
  182 + 'item' => function($index, $label, $name, $checked, $value) {
  183 + $return = '<div class="admin-who-check-payment">';
  184 + $return .= '<input class="custom-check" id="check_admin_mfp' . $value . '" type="checkbox" name="' . $name . '" value="' . $value . '" ' . ( $checked ? "checked" : "" ) . ' >';
  185 + $return .= '<label for="check_admin_mfp' . $value . '" >';
  186 + $return .= '<span></span>' . ucwords($label);
  187 + $return .= '</label>';
  188 + $return .= '</div>';
  189 + return $return;
  190 + },
  191 + ]) ?>
193 192 </div>
194 193 </div>
195 194  
... ... @@ -197,7 +196,10 @@
197 196 <div class="input-blocks-wrapper">
198 197 <div class="input-blocks admin-project-days">
199 198 <?= $form->field($project, 'deadline', [ 'template' => "{label}<br />{input}<span class='admn-input-txt' style='padding-left: 10px'>дней</span>\n{hint}\n{error}" ])
200   - ->textInput (['class'=> 'custom-input-2 custom-input-2-date','type'=>'number']) ?>
  199 + ->textInput([
  200 + 'class' => 'custom-input-2 custom-input-2-date',
  201 + 'type' => 'number',
  202 + ]) ?>
201 203 </div>
202 204 </div>
203 205  
... ... @@ -216,9 +218,8 @@
216 218 <div class="not-file-mb-adm">До 3 Мб файл</div>
217 219 </div>
218 220 <div style="opacity: 0; height: 54px; width: 100%; float: left;position: absolute; top: 0;left: 0; z-index: 2;-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=0)'">
219   - <?= $form->field($project, 'file')
220   -
221   - ->fileInput([ 'multiple' => 'multiple' ]) ?>
  221 + <?= $form->field($project, 'files[]')
  222 + ->fileInput([ 'multiple' => 'multiple' ]) ?>
222 223 </div>
223 224  
224 225 </div>
... ... @@ -227,17 +228,17 @@
227 228 <div class="input-blocks-wrapper">
228 229 <div class="input-blocks admin-project-list admin-currency-second">
229 230 <?= $form->field($project, 'date_end')
230   - ->dropDownList([
231   - 1 => 'Неделя',
232   - 2 => '2 недели',
233   - 3 => 'Месяц',
234   - ]) ?>
  231 + ->dropDownList([
  232 + 1 => 'Неделя',
  233 + 2 => '2 недели',
  234 + 3 => 'Месяц',
  235 + ]) ?>
235 236 </div>
236 237 </div>
237 238  
238 239 <div class="input-blocks-wrapper">
239 240 <div class="admin-save-btn skills-save-btn admin-add-remove-wr style">
240   - <?= Html::submitButton($project->isNewRecord?'Добавить':'Обновить', [ 'class' => 'input-blocks-wrapper button' ]) ?>
  241 + <?= Html::submitButton($project->isNewRecord ? 'Добавить' : 'Обновить', [ 'class' => 'input-blocks-wrapper button' ]) ?>
241 242 <div class="admin-remove-note">
242 243 <?php
243 244 if(!$project->isNewRecord) {
... ... @@ -255,7 +256,7 @@
255 256 ?>
256 257 </div>
257 258 <div class="admin-back-note">
258   - <?= Html::a('вернуться', Request::getIsLocal(\Yii::$app->request->referrer)?\Yii::$app->request->referrer:['accounts/projects' ]) ?>
  259 + <?= Html::a('вернуться', Request::getIsLocal(\Yii::$app->request->referrer) ? \Yii::$app->request->referrer : [ 'accounts/projects' ]) ?>
259 260 </div>
260 261 </div>
261 262 </div>
... ... @@ -264,29 +265,45 @@
264 265 $form->end();
265 266 ?>
266 267 <script>
267   - $(document).ready(function(){
268   - $('.input-blocks.admin-currency-second select').change(function(){
269   - $(this).blur()
270   - })
271   -
272   - if($('.admin-project-contractual input[type="checkbox"]').prop("checked")) {
273   - $('.admin-project-list-two input, .admin-project-list-two select').attr('disabled', 'disabled')
274   - }
275   - $('.admin-project-contractual input[type="checkbox"]').change(function(){
276   - if($(this).prop("checked")) {
277   - $('.admin-project-list-two input, .admin-project-list-two select').attr('disabled','disabled')
278   - } else {
279   - $('.admin-project-list-two input, .admin-project-list-two select').removeAttr('disabled')
280   - }
281   - })
282   -
283   -
284   - $('.admin-project-file input[type="file"]').change(function(){
285   - var strInput = this.value
286   - $('.admin-project-file .not-file-mb-adm').html(strInput.replace(/^.*\\/, ""))
  268 + $(document).ready(
  269 + function()
  270 + {
  271 + $('.input-blocks.admin-currency-second select').change(
  272 + function()
  273 + {
  274 + $(this).blur()
  275 + }
  276 + )
  277 +
  278 + if($('.admin-project-contractual input[type="checkbox"]').prop("checked"))
  279 + {
  280 + $('.admin-project-list-two input, .admin-project-list-two select')
  281 + .attr('disabled', 'disabled')
  282 + }
  283 + $('.admin-project-contractual input[type="checkbox"]').change(
  284 + function()
  285 + {
  286 + if($(this).prop("checked"))
  287 + {
  288 + $('.admin-project-list-two input, .admin-project-list-two select')
  289 + .attr('disabled', 'disabled')
  290 + } else
  291 + {
  292 + $('.admin-project-list-two input, .admin-project-list-two select')
  293 + .removeAttr('disabled')
  294 + }
  295 + }
  296 + )
287 297  
288   - });
  298 + $('.admin-project-file input[type="file"]').change(
  299 + function()
  300 + {
  301 + var strInput = this.value
  302 + $('.admin-project-file .not-file-mb-adm').html(strInput.replace(/^.*\\/, ""))
289 303  
  304 + }
  305 + );
290 306  
291   - })
  307 + }
  308 + )
292 309 </script>
... ...
frontend/views/company/_blog_list_view.php
1 1 <?php
2   -use frontend\helpers\TextHelper;
3   -use yii\helpers\Html;
4   -use yii\helpers\StringHelper;
5   -use yii\helpers\Url;
  2 + /**
  3 + * @var Blog $model
  4 + */
  5 + use common\models\Blog;
  6 + use frontend\helpers\TextHelper;
  7 + use yii\helpers\Html;
  8 + use yii\helpers\Url;
6 9  
7 10 ?>
8 11 <div class="blog-post-wr">
9 12 <div class="blog-post-title style">
10   - <?= Html::a($model->name, Url::toRoute(['company/blog-view','company_id'=>$this->params['company']->id,'link'=>$model->link]),['class'=>'blog-new-link']);?>
  13 + <?= Html::a($model->name, Url::toRoute([
  14 + 'company/blog-view',
  15 + 'company_id' => $this->params[ 'company' ]->id,
  16 + 'link' => $model->link,
  17 + ]), [ 'class' => 'blog-new-link' ]); ?>
11 18 </div>
12 19 <div class="blog-post-icons-wr style">
13 20 <div class="blog-post-date">
14   - <span></span><p><?= $model->dateCreate?></p>
  21 + <span></span>
  22 + <p><?= \Yii::$app->formatter->asDate($model->dateCreate, 'php:d.m.Y') ?></p>
15 23 </div>
16 24 <div class="blog-post-views">
17   - <span></span><p><?= $model->view_count?></p>
  25 + <span></span>
  26 + <p><?= $model->view_count ?></p>
18 27 </div>
19 28 <div class="blog-post-comm-num">
20   - <span></span><p><?= $model->view_count?></p>
  29 + <span></span>
  30 + <p><?= count($model->comments) ?></p>
21 31 </div>
22 32 </div>
23 33 <div class="blog-post-content style">
24   - <?= Html::a(Html::img($model->cover), Url::toRoute(['/company/blog-view','company_id'=>$this->params['company']->id,'link'=>$model->link]));?>
25   - <?= TextHelper::truncateHtmlText($model->description, 1300)?>
  34 + <?= Html::a(Html::img($model->cover), Url::toRoute([
  35 + '/company/blog-view',
  36 + 'company_id' => $this->params[ 'company' ]->id,
  37 + 'link' => $model->link,
  38 + ])); ?>
  39 + <?= TextHelper::truncateHtmlText($model->description, 1300) ?>
26 40 </div>
27   - <?= Html::a('<span>Подробнее</span>', Url::toRoute(['company/blog-view','company_id'=>$this->params['company']->id,'link'=>$model->link]),['class'=>'blog-post-see-all style']);?>
  41 + <?= Html::a('<span>Подробнее</span>', Url::toRoute([
  42 + 'company/blog-view',
  43 + 'company_id' => $this->params[ 'company' ]->id,
  44 + 'link' => $model->link,
  45 + ]), [ 'class' => 'blog-post-see-all style' ]); ?>
28 46 </div>
29 47 \ No newline at end of file
... ...
frontend/views/company/_company_list_view.php
... ... @@ -6,7 +6,13 @@
6 6 <div class="command-block-wrapper">
7 7 <div class="command-block-wr-two">
8 8 <div class="command-block-foto">
9   - <?= Html::a(( $model->photo ? Html::img($model->photo) : '' ) . '<div class="hover-command-bg"></div>', Url::toRoute([ '#' ])) ?>
  9 + <?php
  10 + if(empty( $model->link )) {
  11 + echo ( $model->photo ? Html::img($model->photo) : '' ) . '<div class="hover-command-bg"></div>';
  12 + } else {
  13 + echo Html::a(( $model->photo ? Html::img($model->photo) : '' ) . '<div class="hover-command-bg"></div>', 'http://'.$model->link);
  14 + }
  15 + ?>
10 16 </div>
11 17 <div class="command-block-name"><?= $model->user ?></div>
12 18 <?php
... ...
frontend/views/company/_company_team_review.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var Comment $model
  4 + * @var int $key
  5 + * @var int $index
  6 + * @var ListView $widget
  7 + */
  8 + use common\modules\comment\models\Comment;
  9 + use yii\helpers\Html;
  10 + use yii\widgets\ListView;
  11 +
  12 +?>
  13 +<?php
  14 + if(!empty( $model->rating )) {
  15 + ?>
  16 + <div class="rating">
  17 + <!--оценка-->
  18 + <input type="hidden" class="val" value="<?= $model->rating->value ?>"/>
  19 + <!--количество голосов-->
  20 + <input type="hidden" class="votes" value="1"/>
  21 + </div>
  22 + <?php
  23 + }
  24 +?>
  25 +<?php
  26 + if(!empty( $model->user_id )) {
  27 + ?>
  28 + <div class="company-performer-comments-autor">Отзыв от: <?= $model->author->name ?></div>
  29 + <?php
  30 + } else {
  31 + ?>
  32 + <div class="company-performer-comments-autor">Отзыв от: <?= $model->user_name ?></div>
  33 + <?php
  34 + }
  35 +?>
  36 +<div class="company-performer-comments-txt"><?= $model->text ?></div>
  37 +<a href="#" class="company-comm-see-all"><span>Развернуть</span></a>
... ...
frontend/views/company/_vacancy_list_view.php
1 1 <?php
  2 + /**
  3 + * @var Vacancy $model
  4 + */
  5 + use common\models\Vacancy;
2 6 use frontend\helpers\TextHelper;
3 7 use yii\bootstrap\Html;
4 8 use yii\helpers\Url;
5   - use yii\helpers\StringHelper;
6 9  
7 10 ?>
8 11  
... ... @@ -14,7 +17,7 @@
14 17 ]), [ 'class' => 'performer-vacant-reclam-bl-title' ]) ?>
15 18 <div class="performer-vacant-reclam-bl-title-two">
16 19 <?= $model->city ?>
17   - <?= \Yii::$app->formatter->asDatetime($model->date_add, 'Y-MM-dd') ?>
  20 + <?= \Yii::$app->formatter->asDate($model->date_add, 'dd.MM.Y') ?>
18 21 <?php
19 22 if(!empty( $model->salary )) {
20 23 ?>
... ...
frontend/views/company/blog-view.php
1 1 <?php
2   -use \yii\helpers\Html;
  2 + /**
  3 + * @var View $this
  4 + * @var Blog $article
  5 + * @var User $company
  6 + */
  7 + use common\models\Blog;
  8 + use common\models\User;
  9 + use yii\web\View;
3 10  
4   -/* @var $this yii\web\View */
5   -$this->params['company'] = $company;
6   -
7   -$this->title = $article->name ;
  11 + $this->params[ 'company' ] = $company;
  12 + $this->title = $article->name;
8 13 ?>
9 14 <div class="performer-vacancy-vacant-title-reclam-wr style">
10 15 <div class="blog-post-wr">
... ... @@ -12,15 +17,15 @@ $this-&gt;title = $article-&gt;name ;
12 17 <div class="blog-post-icons-wr style">
13 18 <div class="blog-post-date">
14 19 <span></span>
15   - <p><?= $article->dateCreate?></p>
  20 + <p><?= \Yii::$app->formatter->asDate($article->dateCreate, 'php:d.m.Y') ?></p>
16 21 </div>
17 22 <div class="blog-post-views">
18 23 <span></span>
19   - <p><?= $article->view_count?></p>
  24 + <p><?= $article->view_count ?></p>
20 25 </div>
21 26 <div class="blog-post-comm-num">
22 27 <span></span>
23   - <p><?= $article->view_count?></p>
  28 + <p><?= count($article->comments) ?></p>
24 29 </div>
25 30 </div>
26 31 <div class="blog-post-content style">
... ... @@ -28,3 +33,29 @@ $this-&gt;title = $article-&gt;name ;
28 33 </div>
29 34 </div>
30 35 </div>
  36 +<?php
  37 + echo \common\modules\comment\widgets\CommentWidget::widget([
  38 + 'context' => $this,
  39 + 'model' => $article::className(),
  40 + 'model_id' => $article->blog_id,
  41 + 'comment_class' => \common\modules\comment\models\Comment::className(),
  42 + 'rating_class' => \common\modules\comment\models\Rating::className(),
  43 + 'class_options' => [
  44 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  45 + 'user_id' => \Yii::$app->user->getId(),
  46 + 'guestComment' => true,
  47 + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,
  48 + ],
  49 + 'list_options' => [
  50 + 'view' => 'list-comment',
  51 + ],
  52 + 'form_options' => [
  53 + 'view' => 'form-comment',
  54 + 'tag' => 'div',
  55 + 'class' => 'artbox_comment_form',
  56 + ],
  57 + 'options' => [
  58 + 'class' => 'new-portf-comments-wr style',
  59 + ],
  60 + ]);
  61 +?>
... ...
frontend/views/company/portfolio-view.php
1 1 <?php
2 2  
3   -use common\models\Portfolio;
4   -use common\models\User;
5   -use yii\helpers\Html;
6   -use yii\web\ViewAction;
  3 + use common\models\Portfolio;
  4 + use common\models\User;
  5 + use yii\helpers\Html;
  6 + use yii\web\ViewAction;
7 7  
8   -/**
9   - * @var ViewAction $this
10   - * @var User $user
11   - * @var Portfolio $portfolio
12   - */
13   -$this->params[ 'company' ] = $user;
  8 + /**
  9 + * @var ViewAction $this
  10 + * @var User $user
  11 + * @var Portfolio $portfolio
  12 + */
  13 + $this->params[ 'company' ] = $user;
14 14  
15   -$this->title = 'My Yii Application';
  15 + $this->title = 'My Yii Application';
16 16 ?>
17 17 <div class="portfolio-new-page-wrapper style">
18 18 <div class="new-portfolio-bg style ">
19   - <?= Html::img($portfolio->minImg($portfolio->cover,'720', '280')) ?>
  19 + <?= Html::img($portfolio->minImg($portfolio->cover, '720', '280')) ?>
20 20 </div>
21 21 <div class="new-portfolio-icons-rating-wr style">
22 22 <div class="new-portfolio-icons">
... ... @@ -57,29 +57,29 @@ $this-&gt;title = &#39;My Yii Application&#39;;
57 57 <div class="new-portf-slider-wr style">
58 58 <div class="new-portf-slider-title"><?= $portfolio->name ?></div>
59 59 <?php
60   - if(!empty( $portfolio->gallery ) || !empty( $portfolio->gallery->photo )) {
61   - ?>
62   - <div class="new-portf-slider style">
63   - <div class="slider-video-wr">
64   - <div id="demo5" class="scroll-img">
65   - <ul>
66   - <?php
67   - foreach( explode(',', $portfolio->gallery->photo) as $one_photo ) {
68   - ?>
69   - <li><img src="<?= $one_photo ?>" alt=""/>
  60 + if(!empty( $portfolio->gallery ) || !empty( $portfolio->gallery->photo )) {
  61 + ?>
  62 + <div class="new-portf-slider style">
  63 + <div class="slider-video-wr">
  64 + <div id="demo5" class="scroll-img">
  65 + <ul>
70 66 <?php
71   - }
  67 + foreach( explode(',', $portfolio->gallery->photo) as $one_photo ) {
72 68 ?>
73   - </ul>
74   - </div>
75   - <div id="demo5-btn" class="text-center">
76   - <button class="btn" id="demo5-backward"></button>
77   - <button class="btn" id="demo5-forward"></button>
  69 + <li><img src="<?= $one_photo ?>" alt=""/>
  70 + <?php
  71 + }
  72 + ?>
  73 + </ul>
  74 + </div>
  75 + <div id="demo5-btn" class="text-center">
  76 + <button class="btn" id="demo5-backward"></button>
  77 + <button class="btn" id="demo5-forward"></button>
  78 + </div>
78 79 </div>
79 80 </div>
80   - </div>
81   - <?php
82   - }
  81 + <?php
  82 + }
83 83 ?>
84 84 </div>
85 85  
... ... @@ -89,229 +89,235 @@ $this-&gt;title = &#39;My Yii Application&#39;;
89 89 <?= $portfolio->preview ?>
90 90 </div>
91 91 <?php
92   - if(!empty( $portfolio->description )) {
93   - ?>
94   - <div class="new-portfolio-see-all style"><span>Развернуть</span></div>
95   - <?php
96   - }
  92 + if(!empty( $portfolio->description )) {
  93 + ?>
  94 + <div class="new-portfolio-see-all style"><span>Развернуть</span></div>
  95 + <?php
  96 + }
97 97 ?>
98 98 </div>
99 99 <?php
100   - if(!empty( $portfolio->description )) {
101   - ?>
102   - <div class="new-portfolio-txt">
103   - <div class="new-portfolio-editor">
104   - <?= $portfolio->description ?>
  100 + if(!empty( $portfolio->description )) {
  101 + ?>
  102 + <div class="new-portfolio-txt">
  103 + <div class="new-portfolio-editor">
  104 + <?= $portfolio->description ?>
  105 + </div>
  106 + <div class="new-portfolio-see-all style"><span>Свернуть</span></div>
105 107 </div>
106   - <div class="new-portfolio-see-all style"><span>Свернуть</span></div>
107   - </div>
108   - <?php
109   - }
  108 + <?php
  109 + }
110 110 ?>
111 111 </div>
112 112  
113 113 <?php
114   - echo \common\modules\comment\widgets\CommentWidget::widget([
115   - 'entity' => $portfolio::tableName().'-'.$portfolio->portfolio_id,
116   - 'comment_class' => \common\modules\comment\models\Comment::className(),
117   - 'class_options' => [
118   - 'scenario' => is_int(\Yii::$app->user->getId())?\common\modules\comment\models\Comment::SCENARIO_USER:\common\modules\comment\models\Comment::SCENARIO_GUEST,
119   - 'user_id' => \Yii::$app->user->getId(),
120   - ],
121   - 'list_options' => [
122   - 'view' => 'list-comment',
123   - ],
124   - 'form_options' => [
125   - 'view' => 'form-comment',
126   - 'tag' => false,
127   - ],
128   - 'options' => [
129   - 'class' => 'new-portf-comments-wr style',
130   - ],
131   - ]);
  114 + echo \common\modules\comment\widgets\CommentWidget::widget([
  115 + 'context' => $this,
  116 + 'model' => $portfolio->className(),
  117 + 'model_id' => $portfolio->portfolio_id,
  118 + 'comment_class' => \common\modules\comment\models\Comment::className(),
  119 + 'rating_class' => \common\modules\comment\models\Rating::className(),
  120 + 'class_options' => [
  121 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  122 + 'user_id' => \Yii::$app->user->getId(),
  123 + 'guestComment' => true,
  124 + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,
  125 + ],
  126 + 'list_options' => [
  127 + 'view' => 'list-comment',
  128 + ],
  129 + 'form_options' => [
  130 + 'view' => 'form-comment',
  131 + 'tag' => 'div',
  132 + 'class' => 'artbox_comment_form',
  133 + ],
  134 + 'options' => [
  135 + 'class' => 'new-portf-comments-wr style',
  136 + ],
  137 + ]);
132 138 ?>
133 139  
134 140 <?php
135   - /*
136   - ?>
137   - <div class="new-portf-comments-wr style">
138   - <div class="new-portf-comm-count">Комментарии: 3</div>
139   - <div class="new-portf-add-comm style">
  141 + /*
  142 + ?>
  143 + <div class="new-portf-comments-wr style">
  144 + <div class="new-portf-comm-count">Комментарии: 3</div>
  145 + <div class="new-portf-add-comm style">
140 146  
141   - <form action="">
142   - <div class="input-blocks-comm">
143   - <label for="input-txt-5">Имя</label>
144   - <input class="custom-input-4" id="input-txt-5" type="text">
145   - </div>
146   - <div class="input-blocks-comm">
  147 + <form action="">
  148 + <div class="input-blocks-comm">
  149 + <label for="input-txt-5">Имя</label>
  150 + <input class="custom-input-4" id="input-txt-5" type="text">
  151 + </div>
  152 + <div class="input-blocks-comm">
147 153  
148   - <label for="input-txt-6">e-mail</label>
149   - <input class="custom-input-4" id="input-txt-6" type="text">
150   - </div>
151   - <div class="input-blocks-comm area-comm">
152   - <label for="input-txt-7">Комментарий</label>
153   - <textarea class="custom-area-4" id="input-txt-7"></textarea>
154   - </div>
155   - <div class="input-blocks-comm-button style">
156   - <button type="submit" class="">Добавить комментраий</button>
157   - </div>
158   - </form>
  154 + <label for="input-txt-6">e-mail</label>
  155 + <input class="custom-input-4" id="input-txt-6" type="text">
  156 + </div>
  157 + <div class="input-blocks-comm area-comm">
  158 + <label for="input-txt-7">Комментарий</label>
  159 + <textarea class="custom-area-4" id="input-txt-7"></textarea>
  160 + </div>
  161 + <div class="input-blocks-comm-button style">
  162 + <button type="submit" class="">Добавить комментраий</button>
  163 + </div>
  164 + </form>
159 165  
160   - </div>
  166 + </div>
161 167  
162   - <div class="new-portf-comm-read-wr style">
163   - <div class="new-portf-comm-read">
164   - <div class="style">
165   - <div class="header-cabinet-foto">
166   - <img src="/images/ded-ico.png" alt="">
167   - </div>
168   - <div class="new-prof-wrapper-read">
169   - <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
170   - <div class="new-portf-comm-read-rating">
171   - <div class="rating">
172   - <!--оценка-->
173   - <input type="hidden" class="val" value="3"/>
174   - <!--количество голосов-->
175   - <input type="hidden" class="votes" value="12"/>
  168 + <div class="new-portf-comm-read-wr style">
  169 + <div class="new-portf-comm-read">
  170 + <div class="style">
  171 + <div class="header-cabinet-foto">
  172 + <img src="/images/ded-ico.png" alt="">
  173 + </div>
  174 + <div class="new-prof-wrapper-read">
  175 + <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
  176 + <div class="new-portf-comm-read-rating">
  177 + <div class="rating">
  178 + <!--оценка-->
  179 + <input type="hidden" class="val" value="3"/>
  180 + <!--количество голосов-->
  181 + <input type="hidden" class="votes" value="12"/>
  182 + </div>
  183 + </div>
  184 + <div class="blog-post-date">
  185 + <span></span>
  186 + <p>22.09.2015</p>
176 187 </div>
177 188 </div>
178   - <div class="blog-post-date">
179   - <span></span>
180   - <p>22.09.2015</p>
  189 +
  190 + <div class="new-portf-answer">
  191 + <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
  192 + <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
181 193 </div>
182   - </div>
183 194  
184   - <div class="new-portf-answer">
185   - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
186   - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
187 195 </div>
188   -
  196 + <div class="style"></div>
189 197 </div>
190   - <div class="style"></div>
191   - </div>
192 198  
193   - <div class="new-portf-comm-read">
194   - <div class="style">
195   - <div class="header-cabinet-foto">
196   - <img src="/images/ded-ico.png" alt="">
197   - </div>
198   - <div class="new-prof-wrapper-read">
199   - <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
200   - <div class="new-portf-comm-read-rating">
201   - <div class="rating">
202   - <!--оценка-->
203   - <input type="hidden" class="val" value="4"/>
204   - <!--количество голосов-->
205   - <input type="hidden" class="votes" value="12"/>
  199 + <div class="new-portf-comm-read">
  200 + <div class="style">
  201 + <div class="header-cabinet-foto">
  202 + <img src="/images/ded-ico.png" alt="">
  203 + </div>
  204 + <div class="new-prof-wrapper-read">
  205 + <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
  206 + <div class="new-portf-comm-read-rating">
  207 + <div class="rating">
  208 + <!--оценка-->
  209 + <input type="hidden" class="val" value="4"/>
  210 + <!--количество голосов-->
  211 + <input type="hidden" class="votes" value="12"/>
  212 + </div>
  213 + </div>
  214 + <div class="blog-post-date">
  215 + <span></span>
  216 + <p>22.09.2015</p>
206 217 </div>
207 218 </div>
208   - <div class="blog-post-date">
209   - <span></span>
210   - <p>22.09.2015</p>
  219 +
  220 + <div class="new-portf-answer">
  221 + <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
  222 + <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
211 223 </div>
212   - </div>
213 224  
214   - <div class="new-portf-answer">
215   - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
216   - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
217 225 </div>
218   -
  226 + <div class="style"></div>
219 227 </div>
220   - <div class="style"></div>
221   - </div>
222 228  
223   - <div class="new-portf-comm-read">
224   - <div class="style">
225   - <div class="header-cabinet-foto">
226   - <img src="/images/ded-ico.png" alt="">
227   - </div>
228   - <div class="new-prof-wrapper-read">
229   - <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
230   - <div class="new-portf-comm-read-rating">
231   - <div class="rating">
232   - <!--оценка-->
233   - <input type="hidden" class="val" value="5"/>
234   - <!--количество голосов-->
235   - <input type="hidden" class="votes" value="12"/>
  229 + <div class="new-portf-comm-read">
  230 + <div class="style">
  231 + <div class="header-cabinet-foto">
  232 + <img src="/images/ded-ico.png" alt="">
  233 + </div>
  234 + <div class="new-prof-wrapper-read">
  235 + <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
  236 + <div class="new-portf-comm-read-rating">
  237 + <div class="rating">
  238 + <!--оценка-->
  239 + <input type="hidden" class="val" value="5"/>
  240 + <!--количество голосов-->
  241 + <input type="hidden" class="votes" value="12"/>
  242 + </div>
  243 + </div>
  244 + <div class="blog-post-date">
  245 + <span></span>
  246 + <p>22.09.2015</p>
236 247 </div>
237 248 </div>
238   - <div class="blog-post-date">
239   - <span></span>
240   - <p>22.09.2015</p>
  249 +
  250 + <div class="new-portf-answer">
  251 + <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
  252 + <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
241 253 </div>
242   - </div>
243 254  
244   - <div class="new-portf-answer">
245   - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
246   - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
247 255 </div>
248   -
  256 + <div class="style"></div>
249 257 </div>
250   - <div class="style"></div>
251   - </div>
252 258  
253   - <div class="new-portf-comm-read">
254   - <div class="style">
255   - <div class="header-cabinet-foto">
256   - <img src="/images/ded-ico.png" alt="">
257   - </div>
258   - <div class="new-prof-wrapper-read">
259   - <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
260   - <div class="new-portf-comm-read-rating">
261   - <div class="rating">
262   - <!--оценка-->
263   - <input type="hidden" class="val" value="1"/>
264   - <!--количество голосов-->
265   - <input type="hidden" class="votes" value="12"/>
  259 + <div class="new-portf-comm-read">
  260 + <div class="style">
  261 + <div class="header-cabinet-foto">
  262 + <img src="/images/ded-ico.png" alt="">
  263 + </div>
  264 + <div class="new-prof-wrapper-read">
  265 + <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
  266 + <div class="new-portf-comm-read-rating">
  267 + <div class="rating">
  268 + <!--оценка-->
  269 + <input type="hidden" class="val" value="1"/>
  270 + <!--количество голосов-->
  271 + <input type="hidden" class="votes" value="12"/>
  272 + </div>
  273 + </div>
  274 + <div class="blog-post-date">
  275 + <span></span>
  276 + <p>22.09.2015</p>
266 277 </div>
267 278 </div>
268   - <div class="blog-post-date">
269   - <span></span>
270   - <p>22.09.2015</p>
  279 +
  280 + <div class="new-portf-answer">
  281 + <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
  282 + <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
271 283 </div>
272   - </div>
273 284  
274   - <div class="new-portf-answer">
275   - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
276   - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
277 285 </div>
278   -
  286 + <div class="style"></div>
279 287 </div>
280   - <div class="style"></div>
281   - </div>
282   - <div class="new-portf-comm-read">
283   - <div class="style">
284   - <div class="header-cabinet-foto">
285   - <img src="/images/ded-ico.png" alt="">
286   - </div>
287   - <div class="new-prof-wrapper-read">
288   - <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
289   - <div class="new-portf-comm-read-rating">
290   - <div class="rating">
291   - <!--оценка-->
292   - <input type="hidden" class="val" value="2"/>
293   - <!--количество голосов-->
294   - <input type="hidden" class="votes" value="12"/>
  288 + <div class="new-portf-comm-read">
  289 + <div class="style">
  290 + <div class="header-cabinet-foto">
  291 + <img src="/images/ded-ico.png" alt="">
  292 + </div>
  293 + <div class="new-prof-wrapper-read">
  294 + <div class="new-portf-comm-read-title"><a href="#">Петер Цумтор</a></div>
  295 + <div class="new-portf-comm-read-rating">
  296 + <div class="rating">
  297 + <!--оценка-->
  298 + <input type="hidden" class="val" value="2"/>
  299 + <!--количество голосов-->
  300 + <input type="hidden" class="votes" value="12"/>
  301 + </div>
  302 + </div>
  303 + <div class="blog-post-date">
  304 + <span></span>
  305 + <p>22.09.2015</p>
295 306 </div>
296 307 </div>
297   - <div class="blog-post-date">
298   - <span></span>
299   - <p>22.09.2015</p>
  308 +
  309 + <div class="new-portf-answer">
  310 + <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
  311 + <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
300 312 </div>
301   - </div>
302 313  
303   - <div class="new-portf-answer">
304   - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
305   - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>
306 314 </div>
307   -
  315 + <div class="style"></div>
308 316 </div>
309   - <div class="style"></div>
310   - </div>
311 317  
  318 + </div>
312 319 </div>
313   - </div>
314   - */
  320 + */
315 321 ?>
316 322 </div>
317 323 <script>
... ...
frontend/views/company/review.php
1 1 <?php
  2 + /**
  3 + * @var View $this
  4 + * @var User $company
  5 + */
2 6  
3   -use \yii\helpers\Html;
  7 + use common\models\User;
  8 + use yii\web\View;
4 9  
5   -/* @var $this yii\web\View */
6   -$this->params['company'] = $company;
7   -$this->title = 'My Yii Application';
  10 + $this->params[ 'company' ] = $company;
  11 + $this->title = 'My Yii Application';
8 12 ?>
9 13 <div class="performer-vacancy-vacant-title-reclam-wr style">
10   - <div class="proektant-comments-wr style">
11   - <div class="workplace-title style"><p>Отзывы о пользователе: 4</p></div>
12   - <ul class="proektant-comments style">
13   - <li>
14   - <div class="comments-name">Иван Иванов</div>
15   - <div class="comments-status"><span>Pro</span></div>
16   - <div class="comments-date">10.07.2015</div>
17   - <div class="rating">
18   - <!--оценка-->
19   - <input type="hidden" class="val" value="2"/>
20   - </div>
21   - <div class="comments-content">
22   - <p>Уже дважды пользовались услугами мастеров и очень довольны качеством работы, профессиональной консультацией в подборе материалов и оформлением дизайна!</p>
23   - <p>Спасибо большое! Всем советуем!</p>
24   - </div>
25   - <div class="comments-project-link">Проект: <a href="#">Ремонт спальни</a></div>
26   - </li>
27   -
28   - <li>
29   - <div class="comments-name">Иван Иванов</div>
30   - <div class="comments-status"><span>Pro</span></div>
31   - <div class="comments-date">10.07.2015</div>
32   - <div class="rating">
33   - <!--оценка-->
34   - <input type="hidden" class="val" value="5"/>
35   - </div>
36   - <div class="comments-content">
37   - <p>Уже дважды пользовались услугами мастеров и очень довольны качеством работы, профессиональной консультацией в подборе материалов и оформлением дизайна!</p>
38   - <p>Спасибо большое! Всем советуем!</p>
39   - </div>
40   - <div class="comments-project-link">Проект: <a href="#">Ремонт спальни</a></div>
41   - </li>
42   -
43   - <li>
44   - <div class="comments-name">Иван Иванов</div>
45   - <div class="comments-status"><span>Pro</span></div>
46   - <div class="comments-date">10.07.2015</div>
47   - <div class="rating">
48   - <!--оценка-->
49   - <input type="hidden" class="val" value="4"/>
50   - </div>
51   - <div class="comments-content">
52   - <p>Уже дважды пользовались услугами мастеров и очень довольны качеством работы, профессиональной консультацией в подборе материалов и оформлением дизайна!</p>
53   - <p>Спасибо большое! Всем советуем!</p>
54   - </div>
55   - <div class="comments-project-link">Проект: <a href="#">Ремонт спальни</a></div>
56   - </li>
57   -
58   - <li>
59   - <div class="comments-name">Иван Иванов</div>
60   - <div class="comments-status"><span>Pro</span></div>
61   - <div class="comments-date">10.07.2015</div>
62   - <div class="rating">
63   - <!--оценка-->
64   - <input type="hidden" class="val" value="1"/>
65   - </div>
66   - <div class="comments-content">
67   - <p>Уже дважды пользовались услугами мастеров и очень довольны качеством работы, профессиональной консультацией в подборе материалов и оформлением дизайна!</p>
68   - <p>Спасибо большое! Всем советуем!</p>
69   - </div>
70   - <div class="comments-project-link">Проект: <a href="#">Ремонт спальни</a></div>
71   - </li>
72   - </ul>
73   - <div class="navi-buttons-wr style">
74   - <ul class="pagination">
75   - <li><a href="#">1</a></li>
76   - <li><a href="#">2</a></li>
77   - <li><a href="#">3</a></li>
78   - <li><a href="#">4</a></li>
79   - <li><a href="#">5</a></li>
80   - <li class="dots-next"><a href="#">...</a></li>
81   - <li><a href="#">156</a></li>
82   - </ul>
83   - </div>
84   - </div>
85   -
  14 + <?php
  15 + echo \common\modules\comment\widgets\CommentWidget::widget([
  16 + 'context' => $this,
  17 + 'model' => $company->className(),
  18 + 'model_id' => $company->id,
  19 + 'comment_class' => \common\modules\comment\models\Comment::className(),
  20 + 'rating_class' => \common\modules\comment\models\Rating::className(),
  21 + 'class_options' => [
  22 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  23 + 'user_id' => \Yii::$app->user->getId(),
  24 + 'guestComment' => false,
  25 + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,
  26 + ],
  27 + 'list_options' => [
  28 + 'view' => 'list-comment-review',
  29 + ],
  30 + 'form_options' => [
  31 + 'view' => 'form-comment-review',
  32 + 'tag' => 'span',
  33 + ],
  34 + 'options' => [
  35 + 'class' => 'proektant-comments-wr style',
  36 + ],
  37 + ]);
  38 + ?>
86 39 </div>
... ...
frontend/views/company/team.php
1 1 <?php
  2 + /**
  3 + * @var User $company
  4 + * @var ActiveDataProvider $team
  5 + * @var View $this
  6 + * @var ActiveDataProvider $comments
  7 + */
2 8  
3   -use \yii\helpers\Html;
4   -use yii\widgets\LinkPager;
5   -use yii\widgets\ListView;
  9 + use common\models\User;
  10 + use common\modules\comment\models\Comment;
  11 + use yii\data\ActiveDataProvider;
  12 + use yii\helpers\Html;
  13 + use yii\web\View;
  14 + use yii\widgets\LinkPager;
  15 + use yii\widgets\ListView;
6 16  
7   -/* @var $this yii\web\View */
8   -$this->params['company'] = $company;
9   -$this->title = 'My Yii Application';
  17 + $this->params[ 'company' ] = $company;
  18 + $this->title = 'My Yii Application';
10 19 ?>
11 20 <div class="command-blocks-wr style">
12   - <?=
13   - ListView::widget( [
  21 + <?= ListView::widget([
14 22 'dataProvider' => $team,
15   - 'itemView'=>'_company_list_view',
16   - 'summary'=>'',
17   - ] );
18   - ?>
  23 + 'itemView' => '_company_list_view',
  24 + 'layout' => '{items}',
  25 + ]); ?>
19 26  
20 27  
21 28 </div>
22 29 <div class="navi-buttons-wr style command-command-style">
23   - <?=
24   - LinkPager::widget([
25   - 'pagination' => $pagination,
26   - ]);
27   - ?>
  30 + <?= LinkPager::widget([
  31 + 'pagination' => $team->pagination,
  32 + ]); ?>
28 33 </div>
29 34 <?php
30 35 /*====Blocks for layout====*/
31   - $this->beginBlock('review');
32   -?>
33   - <div class="section-box-19">
34   - <div class="box-wr">
35   - <div class="box-all">
36   - <div class="company-performer-comm-title style">Отзывов: 54</div>
37   - <div class="company-performer-comments-wr style">
38   - <div class="company-performer-comments-bl">
39   - <div class="rating">
40   - <!--оценка-->
41   - <input type="hidden" class="val" value="3"/>
42   - <!--количество голосов-->
43   - <input type="hidden" class="votes" value="12"/>
44   - </div>
45   -
46   - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>
47   - <div class="company-performer-comments-txt"></div>
48   - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>
49   - </div>
50   -
51   - <div class="company-performer-comments-bl">
52   - <div class="rating">
53   - <!--оценка-->
54   - <input type="hidden" class="val" value="2"/>
55   - <!--количество голосов-->
56   - <input type="hidden" class="votes" value="12"/>
57   - </div>
58   -
59   - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>
60   - <div class="company-performer-comments-txt">2Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.</div>
61   - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>
62   - </div>
63   -
64   - <div class="company-performer-comments-bl">
65   - <div class="rating">
66   - <!--оценка-->
67   - <input type="hidden" class="val" value="4"/>
68   - <!--количество голосов-->
69   - <input type="hidden" class="votes" value="12"/>
70   - </div>
71   -
72   - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>
73   - <div class="company-performer-comments-txt">3Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения. Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.
74   - </div>
75   - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>
76   - </div>
77   -
78   - <div class="company-performer-comments-bl">
79   - <div class="rating">
80   - <!--оценка-->
81   - <input type="hidden" class="val" value="5"/>
82   - <!--количество голосов-->
83   - <input type="hidden" class="votes" value="12"/>
84   - </div>
85   -
86   - <div class="company-performer-comments-autor">Отзыв от: Евгения</div>
87   - <div class="company-performer-comments-txt">4Петер, очень понравились Ваши работы. Замечательный вкус!!! Тонкое сочетание стиля, цвета и формы! Очень нравится. Успехов в работе и вдохновения.
88   - </div>
89   - <a href="#" class="company-comm-see-all"><span>Развернуть</span></a>
  36 + if($comments->totalCount > 0) {
  37 + $this->beginBlock('review');
  38 + ?>
  39 + <div class="section-box-19">
  40 + <div class="box-wr">
  41 + <div class="box-all">
  42 + <div class="company-performer-comm-title style">Отзывов: <?= $comments->totalCount ?></div>
  43 + <?= ListView::widget([
  44 + 'dataProvider' => $comments,
  45 + 'itemView' => '_company_team_review',
  46 + 'layout' => '{items}',
  47 + 'options' => [
  48 + 'class' => 'company-performer-comments-wr style',
  49 + ],
  50 + 'itemOptions' => [
  51 + 'class' => 'company-performer-comments-bl',
  52 + ],
  53 + ]) ?>
  54 + <div class="company-performer-comm-see-all-butt style">
  55 + <?= Html::a('Читать все отзывы', [
  56 + 'company/review',
  57 + 'company_id' => $company->id,
  58 + ]) ?>
90 59 </div>
91 60 </div>
92   - <div class="company-performer-comm-see-all-butt style"><a href="#">Читать все отзывы</a></div>
93 61 </div>
94 62 </div>
95   - </div>
96   -<?php
97   - $this->endBlock();
  63 + <?php
  64 + $this->endBlock();
  65 + }
98 66 /*====End blocks for layout====*/
99 67 ?>
100 68 \ No newline at end of file
... ...
frontend/views/company/vacancy-list.php
... ... @@ -23,13 +23,15 @@ $this-&gt;title = &#39;My Yii Application&#39;;
23 23 'options' => [
24 24 'class' => 'list-view performer-vacancy-vacant-title-reclam-wr style',
25 25 ],
  26 + 'summary' => 'Всего {count} записей из {totalCount}',
  27 + 'layout' => "{summary}\n{items}",
26 28 ]);
27 29 ?>
28 30 </div>
29 31 <div class="navi-buttons-wr style">
30 32 <?=
31 33 LinkPager::widget([
32   - 'pagination' => $pagination,
  34 + 'pagination' => $provider->pagination,
33 35 ]);
34 36 ?>
35 37 </div>
... ...
frontend/views/company/vacancy-view.php
1 1 <?php
2 2 /**
3   - * @var $this yii\web\View
4   - * @var User $company
5   - * @var Vacancy $vacancy
  3 + * @var $this yii\web\View
  4 + * @var User $company
  5 + * @var Vacancy $vacancy
  6 + * @var Vacancy[] $similar_vacancies
6 7 */
7 8  
8 9 use common\models\User;
9 10 use common\models\Vacancy;
10 11 use yii\helpers\ArrayHelper;
11 12 use yii\helpers\Html;
12   -use yii\helpers\Url;
  13 + use yii\helpers\Url;
13 14  
14   -$this->params[ 'company' ] = $company;
  15 + $this->params[ 'company' ] = $company;
15 16 $this->title = 'My Yii Application';
16 17 ?>
17   -<div class="performer-vacancy-list style">
18   - <?php
19   - echo Html::a('к списку вакансий', [
20   - 'vacancy-list',
21   - 'company_id' => $company->id,
22   - ]);
23   - ?>
24   -</div>
25   -<div class="performer-vacancy-blocks-desk-wr style">
26   - <div class="performer-vacancy-date style"> Вакансия от <?= $vacancy->date_add ?> </div>
27   - <div class="performance-vacancy-page-title style"><?= $vacancy->name ?></div>
28   - <div class="performance-vacancy-page-options style">
29   - <ul>
30   - <?php
31   - if(!empty( $vacancy->user_name )) {
32   - echo "<li><span>Контактное лицо:</span><p>{$vacancy->user_name}</p></li>";
33   - }
34   - if(!empty( $vacancy->phone )) {
35   - echo "<li><span>Телефон:</span><p>{$vacancy->phone}</p></li>";
36   - }
37   - ?>
38   - <?php
39   - if(!empty( $vacancy->city )) {
40   - echo "<li><span>Город:</span><p>{$vacancy->city}</p></li>";
41   - }
42   - ?>
43   - <?php
44   - if(!empty( $vacancy->employments )) {
45   - echo "<li><span>Вид занятости:</span><p>" . implode(', ', ArrayHelper::getColumn($vacancy->employments, 'name')) . "</p></li>";
46   - }
47   - ?>
48   - <?php
49   - if(!empty( $vacancy->requirements )) {
50   - echo "<li><span>Требования:</span><p>" . implode(', ', ArrayHelper::getColumn($vacancy->requirements, 'requirements')) . "</p></li>";
51   - }
52   - ?>
53   - </ul>
54   - </div>
55   - <div class="performance-vacancy-description style">Описание вакансии</div>
56   - <div class="performance-vacancy-desc-txt style">
  18 + <div class="performer-vacancy-list style">
57 19 <?php
58   - echo $vacancy->description;
  20 + echo Html::a('назад', [
  21 + 'vacancy-list',
  22 + 'company_id' => $company->id,
  23 + ]);
59 24 ?>
60 25 </div>
61   - <div class="performance-vacancy-desc-form style">
62   - <a href="#">Отправить резюме</a>
63   - </div>
64   -</div>
65   -<div class="performance-vacancy-similar style">
66   - <div class="performance-vacancy-similar-title style">Похожие вакансии</div>
67   - <div class="style">
68   -
69   - <?php foreach($similar_vacancies as $similar_vacancy):?>
70   - <div class="performance-vacancy-similar-blocks-wr style">
71   -
72   - <?= Html::a($similar_vacancy->name, Url::toRoute([
73   - 'company/vacancy-view',
74   - 'company_id' => $similar_vacancy->user_id,
75   - 'link' => $similar_vacancy->link,
76   - ]), [ 'class' => 'performer-vacant-reclam-bl-title' ]) ?>
77   -
78   - <div class="performer-vacant-reclam-bl-title-two"><?= $similar_vacancy->city ?>. <?= \Yii::$app->formatter->asDatetime($similar_vacancy->date_add, 'Y-MM-dd') ?>.
  26 + <div class="performer-vacancy-blocks-desk-wr style">
  27 + <div class="performer-vacancy-date style"> Вакансия от <?= $vacancy->date_add ?> </div>
  28 + <div class="performance-vacancy-page-title style"><?= $vacancy->name ?></div>
  29 + <div class="performance-vacancy-page-options style">
  30 + <ul>
79 31 <?php
80   - if(!empty( $similar_vacancy->salary )) {
81   - ?>
82   - <?= $similar_vacancy->salary ?>
83   - <?= $similar_vacancy->salaryCurrency->label ?>
84   - <?php
85   - }
86   - ?></div>
  32 + if(!empty( $vacancy->user_name )) {
  33 + echo "<li><span>Контактное лицо:</span><p>{$vacancy->user_name}</p></li>";
  34 + }
  35 + if(!empty( $vacancy->phone )) {
  36 + echo "<li><span>Телефон:</span><p>{$vacancy->phone}</p></li>";
  37 + }
  38 + ?>
  39 + <?php
  40 + if(!empty( $vacancy->city )) {
  41 + echo "<li><span>Город:</span><p>{$vacancy->city}</p></li>";
  42 + }
  43 + ?>
  44 + <?php
  45 + if(!empty( $vacancy->employments )) {
  46 + echo "<li><span>Вид занятости:</span><p>" . implode(', ', ArrayHelper::getColumn($vacancy->employments, 'name')) . "</p></li>";
  47 + }
  48 + ?>
  49 + <?php
  50 + if(!empty( $vacancy->requirements )) {
  51 + echo "<li><span>Требования:</span><p>" . implode(', ', ArrayHelper::getColumn($vacancy->requirements, 'requirements')) . "</p></li>";
  52 + }
  53 + ?>
  54 + </ul>
  55 + </div>
  56 + <div class="performance-vacancy-description style">Описание вакансии</div>
  57 + <div class="performance-vacancy-desc-txt style">
  58 + <?php
  59 + echo $vacancy->description;
  60 + ?>
  61 + </div>
  62 + <div class="performance-vacancy-desc-form style">
  63 + <a href="#">Отправить резюме</a>
87 64 </div>
88   - <?php endforeach;?>
  65 + </div>
  66 +<?php
  67 + if(!empty( $similar_vacancies )) {
  68 + ?>
  69 + <div class="performance-vacancy-similar style">
  70 + <div class="performance-vacancy-similar-title style">Похожие вакансии</div>
  71 + <div class="style">
  72 + <?php foreach($similar_vacancies as $similar_vacancy): ?>
  73 + <div class="performance-vacancy-similar-blocks-wr style">
89 74  
  75 + <?= Html::a($similar_vacancy->name, Url::toRoute([
  76 + 'company/vacancy-view',
  77 + 'company_id' => $similar_vacancy->user_id,
  78 + 'link' => $similar_vacancy->link,
  79 + ]), [ 'class' => 'performer-vacant-reclam-bl-title' ]) ?>
90 80  
91   - </div>
92   -</div>
93 81 \ No newline at end of file
  82 + <div class="performer-vacant-reclam-bl-title-two"><?= $similar_vacancy->city ?>. <?= \Yii::$app->formatter->asDatetime($similar_vacancy->date_add, 'dd.MM.Y') ?>.
  83 + <?php
  84 + if(!empty( $similar_vacancy->salary )) {
  85 + ?>
  86 + <?= $similar_vacancy->salary ?>
  87 + <?= $similar_vacancy->salaryCurrency->label ?>
  88 + <?php
  89 + }
  90 + ?></div>
  91 + </div>
  92 + <?php endforeach; ?>
  93 + </div>
  94 + </div>
  95 + <?php
  96 + }
  97 +?>
94 98 \ No newline at end of file
... ...
frontend/views/layouts/company.php
1 1 <?php
  2 + /**
  3 + * @var string $content
  4 + * @var View $this
  5 + */
2 6  
3   -use yii\helpers\Html;
4   -use yii\widgets\Breadcrumbs;
5   -use yii\widgets\Menu;
  7 + use common\models\User;
  8 + use yii\helpers\Html;
  9 + use yii\web\View;
  10 + use yii\widgets\Menu;
6 11  
7   -
8   -/* @var $content string */
9   -$this->beginContent('@app/views/layouts/main.php');
  12 + $this->beginContent('@app/views/layouts/main.php');
10 13 ?>
11 14  
12 15 <div class="section-box content">
13   - <div class="section-box-14" style="background: url(<?= $this->params['company']->userInfo->poster;?>) 50% no-repeat ;">
  16 + <div class="section-box-14" style="background: url(<?= $this->params[ 'company' ]->userInfo->poster; ?>) 50% no-repeat ;">
14 17 <div class="box-wr">
15 18 <div class="box-all">
16 19 <div class="performance-vacancy-call-back">
17   - <div class="performance-vacancy-call-back-title">Оставьте заявку<br />и мы вам перезвоним</div>
  20 + <div class="performance-vacancy-call-back-title">Оставьте заявку<br/>и мы вам перезвоним
  21 + </div>
18 22 <form class="callback" action="">
19 23  
20 24 <div class="input-blocks-wrapper">
... ... @@ -24,7 +28,7 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
24 28  
25 29 <div class="input-blocks-wrapper">
26 30 <label for="callbac_phone">Телефон</label>
27   - <input id="callbac_phone" type="text"/>
  31 + <input id="callbac_phone" type="text"/>
28 32 </div>
29 33  
30 34 <input id="callbac_submit" type="submit" value="Перезвонить мне"/>
... ... @@ -40,38 +44,59 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
40 44 <div class="box-all">
41 45 <?php
42 46 echo Menu::widget([
43   - 'options' => [
  47 + 'options' => [
44 48 'class' => 'menu-content',
45 49 ],
46 50 'activeCssClass' => 'active-menu-content',
47   - 'items' => [
  51 + 'items' => [
48 52 [
49 53 'label' => 'Общее',
50   - 'url' => ['company/common', 'company_id'=>$this->params['company']->id],
  54 + 'url' => [
  55 + 'company/common',
  56 + 'company_id' => $this->params[ 'company' ]->id,
  57 + ],
51 58 ],
52 59 [
53 60 'label' => 'Выполненные работы',
54   - 'url' => ['company/portfolio', 'company_id'=>$this->params['company']->id],
  61 + 'url' => [
  62 + 'company/portfolio',
  63 + 'company_id' => $this->params[ 'company' ]->id,
  64 + ],
55 65 ],
56 66 [
57 67 'label' => 'Команда',
58   - 'url' => ['company/team', 'company_id'=>$this->params['company']->id],
  68 + 'url' => [
  69 + 'company/team',
  70 + 'company_id' => $this->params[ 'company' ]->id,
  71 + ],
59 72 ],
60 73 [
61 74 'label' => 'Вакансии',
62   - 'url' => ['company/vacancy-list', 'company_id'=>$this->params['company']->id],
  75 + 'url' => [
  76 + 'company/vacancy-list',
  77 + 'company_id' => $this->params[ 'company' ]->id,
  78 + ],
63 79 ],
64 80 [
65 81 'label' => 'Блог',
66   - 'url' => ['company/blog-list', 'company_id'=>$this->params['company']->id],
  82 + 'url' => [
  83 + 'company/blog-list',
  84 + 'company_id' => $this->params[ 'company' ]->id,
  85 + ],
67 86 ],
68 87 [
69 88 'label' => 'Отзывы',
70   - 'url' => ['company/review', 'company_id'=>$this->params['company']->id],
  89 + 'url' => [
  90 + 'company/review',
  91 + 'company_id' => $this->params[ 'company' ]->id,
  92 + ],
71 93 ],
72 94 [
73 95 'label' => 'Галерея',
74   - 'url' => ['company/gallery', 'company_id'=>$this->params['company']->id],
  96 + 'url' => [
  97 + 'company/gallery',
  98 + 'company_id' => $this->params[ 'company' ]->id,
  99 + ],
75 100 ],
76 101 ],
77 102 ]);
... ... @@ -93,7 +118,8 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
93 118 <div class="sidebar-droped-wr style">
94 119 <ul>
95 120 <li><a href="#">Заказчик</a></li>
96   - <li style="display: none"><a href="#">Испонитель</a></li>
  121 + <li style="display: none">
  122 + <a href="#">Испонитель</a></li>
97 123 </ul>
98 124 </div>
99 125 </li>
... ... @@ -102,45 +128,71 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
102 128 <div class="performance-vacancy-sidebar-stars style">
103 129 <div class="rating">
104 130 <!--оценка-->
105   - <input type="hidden" class="val" value="5"/>
  131 + <input type="hidden" class="val" value="<?= $this->params[ 'company' ]->userInfo->rating ?>"/>
106 132 <!--количество голосов-->
107   - <input type="hidden" class="votes" value="12"/>
  133 + <input type="hidden" class="votes" value="1"/>
108 134 </div>
109 135 </div>
110   - <div class="performance-vacancy-sidebar-comm style">30 отзывов</div>
  136 + <div class="performance-vacancy-sidebar-comm style"><?= count($this->params[ 'company' ]->comments) ?> отзывов</div>
111 137 <a href="#" class="performance-vacancy-sidebar-write style">написать отзыв</a>
112 138 </div>
113   - <div class="performer-vacancy-sidebar-img style"><?= Html::img($this->params['company']->userInfo->image);?></div>
  139 + <div class="performer-vacancy-sidebar-img style"><?= Html::img($this->params[ 'company' ]->userInfo->image); ?></div>
114 140 <div class="performer-vacancy-sidebar-all style">
115 141 <div class="performer-vacancy-sidebar-soc style">
116 142 <ul>
117 143 <li>
118   - <?= Html::a(Html::img('/images/ico-fb.png'),[$this->params['company']->userInfo->social_fb],['target'=>'_blank'])?>
  144 + <?= Html::a(Html::img('/images/ico-fb.png'), [ $this->params[ 'company' ]->userInfo->social_fb ], [ 'target' => '_blank' ]) ?>
119 145 </li>
120 146 <li>
121   - <?= Html::a(Html::img('/images/ico-tw.png'),[$this->params['company']->userInfo->social_t],['target'=>'_blank'])?>
  147 + <?= Html::a(Html::img('/images/ico-tw.png'), [ $this->params[ 'company' ]->userInfo->social_t ], [ 'target' => '_blank' ]) ?>
122 148 </li>
123 149 <li>
124   - <?= Html::a(Html::img('/images/ico-in.png'),[$this->params['company']->userInfo->social_in],['target'=>'_blank'])?>
  150 + <?= Html::a(Html::img('/images/ico-in.png'), [ $this->params[ 'company' ]->userInfo->social_in ], [ 'target' => '_blank' ]) ?>
125 151 </li>
126 152 <li>
127   - <?= Html::a(Html::img('/images/ico-vk.png'),[$this->params['company']->userInfo->social_vk],['target'=>'_blank'])?>
  153 + <?= Html::a(Html::img('/images/ico-vk.png'), [ $this->params[ 'company' ]->userInfo->social_vk ], [ 'target' => '_blank' ]) ?>
128 154 </li>
129 155 </ul>
130 156 </div>
131 157 <div class="performer-vacancy-sidebar-views style">
132 158 <ul class="style">
133   - <li><img src="/images/sidebar-ico/ico-1.png" alt=""/><div class="sidebarvievstxt"><?= $this->params['company']->userInfo->view_count;?> просмотра</div></li>
134   - <li><img src="/images/sidebar-ico/ico-2.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">На сайте: </span><?= $this->params['company']->liveTime?></div></li>
135   - <li><img src="/images/sidebar-ico/ico-3.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Последний визит: <br /></span><?= $this->params['company']->userInfo->lastVisit?></div></li>
136   - <li><img src="/images/sidebar-ico/ico-5.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Сотрудники:<br /></span><?= $this->params['company']->companyInfo->staff?></div></li>
137   - <?php foreach($this->params['company']->phones as $phone ):?>
138   - <li><img src="/images/sidebar-ico/ico-6.png" alt=""/><div class="sidebarvievstxt"><span class="sidebarvievs-phone"><?= $phone['phone'] ?></span></div></li>
139   - <?php endforeach;?>
140   - <?php foreach($this->params['company']->site as $site ):?>
141   - <li><img src="/images/sidebar-ico/ico-7.png" alt=""/><div class="sidebarvievstxt"><a target="_blank" href="<?= $site['site']?>">Сайт</a></div></li>
142   - <?php endforeach;?>
143   - <li><img src="/images/sidebar-ico/ico-8.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Адрес:<br /></span><?= $this->params['company']->address?></div></li>
  159 + <li><img src="/images/sidebar-ico/ico-1.png" alt=""/>
  160 + <div class="sidebarvievstxt"><?= $this->params[ 'company' ]->userInfo->view_count; ?> просмотра</div>
  161 + </li>
  162 + <li><img src="/images/sidebar-ico/ico-2.png" alt=""/>
  163 + <div class="sidebarvievstxt">
  164 + <span class="sidebar-views-txt">На сайте: </span><?= $this->params[ 'company' ]->liveTime ?>
  165 + </div>
  166 + </li>
  167 + <li><img src="/images/sidebar-ico/ico-3.png" alt=""/>
  168 + <div class="sidebarvievstxt">
  169 + <span class="sidebar-views-txt">Последний визит: <br/></span><?= $this->params[ 'company' ]->userInfo->lastVisit ?>
  170 + </div>
  171 + </li>
  172 + <li><img src="/images/sidebar-ico/ico-5.png" alt=""/>
  173 + <div class="sidebarvievstxt">
  174 + <span class="sidebar-views-txt">Сотрудники:<br/></span><?= $this->params[ 'company' ]->companyInfo->staff ?>
  175 + </div>
  176 + </li>
  177 + <?php foreach($this->params[ 'company' ]->phones as $phone): ?>
  178 + <li><img src="/images/sidebar-ico/ico-6.png" alt=""/>
  179 + <div class="sidebarvievstxt">
  180 + <span class="sidebarvievs-phone"><?= $phone[ 'phone' ] ?></span>
  181 + </div>
  182 + </li>
  183 + <?php endforeach; ?>
  184 + <?php foreach($this->params[ 'company' ]->site as $site): ?>
  185 + <li><img src="/images/sidebar-ico/ico-7.png" alt=""/>
  186 + <div class="sidebarvievstxt">
  187 + <a target="_blank" href="<?= $site[ 'site' ] ?>">Сайт</a>
  188 + </div>
  189 + </li>
  190 + <?php endforeach; ?>
  191 + <li><img src="/images/sidebar-ico/ico-8.png" alt=""/>
  192 + <div class="sidebarvievstxt">
  193 + <span class="sidebar-views-txt">Адрес:<br/></span><?= $this->params[ 'company' ]->address ?>
  194 + </div>
  195 + </li>
144 196 </ul>
145 197 </div>
146 198 </div>
... ... @@ -154,26 +206,26 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
154 206 </div>
155 207 <?php
156 208 /*====Blocks created in view====*/
157   - if(isset($this->blocks['our_objects'])) {
158   - echo $this->blocks['our_objects'];
  209 + if(isset( $this->blocks[ 'our_objects' ] )) {
  210 + echo $this->blocks[ 'our_objects' ];
159 211 }
160   - if(isset($this->blocks['blog'])) {
161   - echo $this->blocks['blog'];
  212 + if(isset( $this->blocks[ 'blog' ] )) {
  213 + echo $this->blocks[ 'blog' ];
162 214 }
163   - if(isset($this->blocks['team'])) {
164   - echo $this->blocks['team'];
  215 + if(isset( $this->blocks[ 'team' ] )) {
  216 + echo $this->blocks[ 'team' ];
165 217 }
166   - if(isset($this->blocks['review'])) {
167   - echo $this->blocks['review'];
  218 + if(isset( $this->blocks[ 'review' ] )) {
  219 + echo $this->blocks[ 'review' ];
168 220 }
169 221 /*====End of blocks created in view====*/
170 222 ?>
171 223 </div>
172 224 <script>
173   - $('div.rating').rating({
174   - fx: 'full',
175   - readOnly: 'true',
176   - url: 'rating.php'
177   - });
  225 + $('div.rating').rating(
  226 + {
  227 + fx : 'full', readOnly : 'true', url : 'rating.php'
  228 + }
  229 + );
178 230 </script>
179 231 <?php $this->endContent() ?>
180 232 \ No newline at end of file
... ...
frontend/views/layouts/performer.php
1 1 <?php
  2 + /**
  3 + * @var string $content
  4 + * @var View $this
  5 + */
2 6  
3   -use common\models\User;
4   -use yii\helpers\ArrayHelper;
5   -use yii\helpers\Html;
6   -use yii\helpers\Url;
7   -use yii\widgets\Menu;
8   -
9   -\frontend\assets\AppAsset::register($this);
10   -/* @var $content string */
11   -$this->beginContent('@app/views/layouts/main.php');
  7 + use common\models\User;
  8 + use yii\helpers\ArrayHelper;
  9 + use yii\helpers\Html;
  10 + use yii\helpers\Url;
  11 + use yii\web\View;
  12 + use yii\widgets\Menu;
12 13  
  14 + \frontend\assets\AppAsset::register($this);
  15 + $this->beginContent('@app/views/layouts/main.php');
13 16  
14 17 ?>
15 18 <div class="section-box content">
16   - <div class="section-box-16" style="background: url('<?= $this->params['user']->userInfo->poster;?>') 50% no-repeat">
  19 + <div class="section-box-16" style="background: url('<?= $this->params[ 'user' ]->userInfo->poster; ?>') 50% no-repeat">
17 20 <div class="box-wr">
18 21 <div class="box-all">
19 22 <div class="blog-buttons-wr style">
20 23 <a class="blog-buttons-offer" href="#">Предложить<br>проект</a>
21   - <?= Html::a('Предложить проект', Url::toRoute(['chat/message', 'user_id' => $this->params['user']->id]), ['class'=> 'blog-buttons-write'])?>
  24 + <?= Html::a('Предложить проект', Url::toRoute([
  25 + 'chat/message',
  26 + 'user_id' => $this->params[ 'user' ]->id,
  27 + ]), [ 'class' => 'blog-buttons-write' ]) ?>
22 28 <a class="blog-buttons-add-favorite" href="#">Добавить<br>в закладки</a>
23 29 </div>
24 30 </div>
... ... @@ -36,27 +42,45 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
36 42 'items' => [
37 43 [
38 44 'label' => 'Общее',
39   - 'url' => ['performer/common', 'performer_id'=>$this->params['user']->id],
  45 + 'url' => [
  46 + 'performer/common',
  47 + 'performer_id' => $this->params[ 'user' ]->id,
  48 + ],
40 49 ],
41 50 [
42 51 'label' => 'Портфолио',
43   - 'url' => ['performer/portfolio', 'performer_id'=>$this->params['user']->id],
  52 + 'url' => [
  53 + 'performer/portfolio',
  54 + 'performer_id' => $this->params[ 'user' ]->id,
  55 + ],
44 56 ],
45 57 [
46 58 'label' => 'Блог',
47   - 'url' => ['performer/blog-list', 'performer_id'=>$this->params['user']->id],
  59 + 'url' => [
  60 + 'performer/blog-list',
  61 + 'performer_id' => $this->params[ 'user' ]->id,
  62 + ],
48 63 ],
49 64 [
50 65 'label' => 'Отзывы',
51   - 'url' => ['performer/review', 'performer_id'=>$this->params['user']->id],
  66 + 'url' => [
  67 + 'performer/review',
  68 + 'performer_id' => $this->params[ 'user' ]->id,
  69 + ],
52 70 ],
53 71 [
54 72 'label' => 'Места работы',
55   - 'url' => ['performer/workplace', 'performer_id'=>$this->params['user']->id],
  73 + 'url' => [
  74 + 'performer/workplace',
  75 + 'performer_id' => $this->params[ 'user' ]->id,
  76 + ],
56 77 ],
57 78 [
58 79 'label' => 'Галерея',
59   - 'url' => ['performer/gallery', 'performer_id'=>$this->params['user']->id],
  80 + 'url' => [
  81 + 'performer/gallery',
  82 + 'performer_id' => $this->params[ 'user' ]->id,
  83 + ],
60 84 ],
61 85 ],
62 86 ]);
... ... @@ -78,7 +102,8 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
78 102 <div class="sidebar-droped-wr style">
79 103 <ul>
80 104 <li><a href="#">Заказчик</a></li>
81   - <li style="display: none"><a href="#">Испонитель</a></li>
  105 + <li style="display: none">
  106 + <a href="#">Испонитель</a></li>
82 107 </ul>
83 108 </div>
84 109 </li>
... ... @@ -87,45 +112,77 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
87 112 <div class="performance-vacancy-sidebar-stars style">
88 113 <div class="rating">
89 114 <!--оценка-->
90   - <input type="hidden" class="val" value="5"/>
  115 + <input type="hidden" class="val" value="<?= $this->params['user']->userInfo->rating ?>"/>
91 116 <!--количество голосов-->
92   - <input type="hidden" class="votes" value="12"/>
  117 + <input type="hidden" class="votes" value="1"/>
93 118 </div>
94 119 </div>
95   - <div class="performance-vacancy-sidebar-comm style">30 отзывов</div>
  120 + <div class="performance-vacancy-sidebar-comm style"><?= count($this->params['user']->comments) ?> отзывов</div>
96 121 <a href="#" class="performance-vacancy-sidebar-write style">написать отзыв</a>
97 122 </div>
98 123 <div class="performer-vacancy-sidebar-img style">
99   - <?= Html::img($this->params['user']->userInfo->image);?>
  124 + <?= Html::img($this->params[ 'user' ]->userInfo->image); ?>
100 125 </div>
101 126 <div class="performer-vacancy-sidebar-all style">
102 127 <div class="performer-vacancy-sidebar-soc style">
103 128 <ul>
104 129 <li>
105   - <?= Html::a(Html::img('/images/ico-fb.png'),"{$this->params['user']->userInfo->social_fb}",['target'=>'_blank'])?>
  130 + <?= Html::a(Html::img('/images/ico-fb.png'), "{$this->params['user']->userInfo->social_fb}", [ 'target' => '_blank' ]) ?>
106 131 </li>
107 132 <li>
108   - <?= Html::a(Html::img('/images/ico-tw.png'),"{$this->params['user']->userInfo->social_t}", ['target'=>'_blank'])?>
  133 + <?= Html::a(Html::img('/images/ico-tw.png'), "{$this->params['user']->userInfo->social_t}", [ 'target' => '_blank' ]) ?>
109 134 </li>
110 135 <li>
111   - <?= Html::a(Html::img('/images/ico-in.png'),"{$this->params['user']->userInfo->social_in}",['target'=>'_blank'])?>
  136 + <?= Html::a(Html::img('/images/ico-in.png'), "{$this->params['user']->userInfo->social_in}", [ 'target' => '_blank' ]) ?>
112 137 </li>
113 138 <li>
114   - <?= Html::a(Html::img('/images/ico-vk.png'),"{$this->params['user']->userInfo->social_vk}",['target'=>'_blank'])?>
  139 + <?= Html::a(Html::img('/images/ico-vk.png'), "{$this->params['user']->userInfo->social_vk}", [ 'target' => '_blank' ]) ?>
115 140 </li>
116 141 </ul>
117 142 </div>
118 143 <div class="performer-vacancy-sidebar-views style">
119 144 <ul class="style">
120   - <li><img src="/images/sidebar-ico/ico-1.png" alt=""/><div class="sidebarvievstxt"><?= $this->params['user']->userInfo->view_count?> просмотра</div></li>
121   - <li><img src="/images/sidebar-ico/ico-9.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Статус: </span><?= $this->params['user']->userInfo->busyText?></div></li>
122   - <li><img src="/images/sidebar-ico/ico-2.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">На сайте: </span><?= $this->params['user']->liveTime?></div></li>
123   - <li><img src="/images/sidebar-ico/ico-3.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Последний визит:<br /></span><?= $this->params['user']->userInfo->lastVisit?></div></li>
124   - <li><img src="/images/sidebar-ico/ico-10.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Трудовой стаж:<br /></span><?= $this->params['user']->userInfo->experience?></div></li>
125   - <li><img src="/images/sidebar-ico/ico-11.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Звание в МФП:<br /></span><?= $this->params['user']->userInfo->rank?></div></li>
126   - <li><img src="/images/sidebar-ico/ico-12.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Стоимость работ:<br /></span><?= $this->params['user']->userInfo->salary?></div></li>
127   - <li><img src="/images/sidebar-ico/ico-13.png" alt=""/><div class="sidebarvievstxt"><?= implode(', ',ArrayHelper::getColumn($this->params['user']->payments,'name'))?></div></li>
128   - <li><img src="/images/sidebar-ico/ico-14.png" alt=""/><div class="sidebarvievstxt"><span class="sidebar-views-txt">Текущее место работы:<br /></span><?= isset($this->params['user']->currentJob) ?$this->params['user']->currentJob->name : ""?></div></li>
  145 + <li><img src="/images/sidebar-ico/ico-1.png" alt=""/>
  146 + <div class="sidebarvievstxt"><?= $this->params[ 'user' ]->userInfo->view_count ?> просмотра</div>
  147 + </li>
  148 + <li><img src="/images/sidebar-ico/ico-9.png" alt=""/>
  149 + <div class="sidebarvievstxt">
  150 + <span class="sidebar-views-txt">Статус: </span><?= $this->params[ 'user' ]->userInfo->busyText ?>
  151 + </div>
  152 + </li>
  153 + <li><img src="/images/sidebar-ico/ico-2.png" alt=""/>
  154 + <div class="sidebarvievstxt">
  155 + <span class="sidebar-views-txt">На сайте: </span><?= $this->params[ 'user' ]->liveTime ?>
  156 + </div>
  157 + </li>
  158 + <li><img src="/images/sidebar-ico/ico-3.png" alt=""/>
  159 + <div class="sidebarvievstxt">
  160 + <span class="sidebar-views-txt">Последний визит:<br/></span><?= $this->params[ 'user' ]->userInfo->lastVisit ?>
  161 + </div>
  162 + </li>
  163 + <li><img src="/images/sidebar-ico/ico-10.png" alt=""/>
  164 + <div class="sidebarvievstxt">
  165 + <span class="sidebar-views-txt">Трудовой стаж:<br/></span><?= $this->params[ 'user' ]->userInfo->experience ?>
  166 + </div>
  167 + </li>
  168 + <li><img src="/images/sidebar-ico/ico-11.png" alt=""/>
  169 + <div class="sidebarvievstxt">
  170 + <span class="sidebar-views-txt">Звание в МФП:<br/></span><?= $this->params[ 'user' ]->userInfo->rank ?>
  171 + </div>
  172 + </li>
  173 + <li><img src="/images/sidebar-ico/ico-12.png" alt=""/>
  174 + <div class="sidebarvievstxt">
  175 + <span class="sidebar-views-txt">Стоимость работ:<br/></span><?= $this->params[ 'user' ]->userInfo->salary ?>
  176 + </div>
  177 + </li>
  178 + <li><img src="/images/sidebar-ico/ico-13.png" alt=""/>
  179 + <div class="sidebarvievstxt"><?= implode(', ', ArrayHelper::getColumn($this->params[ 'user' ]->payments, 'name')) ?></div>
  180 + </li>
  181 + <li><img src="/images/sidebar-ico/ico-14.png" alt=""/>
  182 + <div class="sidebarvievstxt">
  183 + <span class="sidebar-views-txt">Текущее место работы:<br/></span><?= isset( $this->params[ 'user' ]->currentJob ) ? $this->params[ 'user' ]->currentJob->name : "" ?>
  184 + </div>
  185 + </li>
129 186  
130 187 </ul>
131 188 </div>
... ... @@ -142,11 +199,11 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
142 199  
143 200 </div>
144 201 <script>
145   - $('div.rating').rating({
146   - fx: 'full',
147   - readOnly: 'true',
148   - url: 'rating.php'
149   - });
  202 + $('div.rating').rating(
  203 + {
  204 + fx : 'full', readOnly : 'true', url : 'rating.php'
  205 + }
  206 + );
150 207 </script>
151 208  
152 209 <?php $this->endContent() ?>
153 210 \ No newline at end of file
... ...
frontend/views/performer/_blog_list_view.php
1 1 <?php
2   -use frontend\helpers\TextHelper;
3   -use yii\helpers\Html;
4   -use yii\helpers\StringHelper;
5   -use yii\helpers\Url;
  2 + /**
  3 + * @var Blog $model
  4 + */
  5 + use common\models\Blog;
  6 + use common\modules\comment\models\Comment;
  7 + use frontend\helpers\TextHelper;
  8 + use yii\helpers\Html;
  9 + use yii\helpers\Url;
6 10  
7 11 ?>
8 12 <div class="blog-post-wr">
9 13 <div class="blog-post-title style">
10   - <?= Html::a($model->name, Url::toRoute(['performer/blog-view','performer_id'=>$this->params['user']->id,'link'=>$model->link]),['class'=>'blog-new-link']);?>
  14 + <?= Html::a($model->name, Url::toRoute([
  15 + 'performer/blog-view',
  16 + 'performer_id' => $this->params[ 'user' ]->id,
  17 + 'link' => $model->link,
  18 + ]), [ 'class' => 'blog-new-link' ]); ?>
11 19 </div>
12 20 <div class="blog-post-icons-wr style">
13 21 <div class="blog-post-date">
14   - <span></span><p><?= $model->dateCreate?></p>
  22 + <span></span>
  23 + <p><?= \Yii::$app->formatter->asDate($model->dateCreate, 'php:d.m.Y') ?></p>
15 24 </div>
16 25 <div class="blog-post-views">
17   - <span></span><p><?= $model->view_count?></p>
  26 + <span></span>
  27 + <p><?= $model->view_count ?></p>
18 28 </div>
19 29 <div class="blog-post-comm-num">
20   - <span></span><p><?= $model->view_count?></p>
  30 + <span></span>
  31 + <p><?= count($model->comments) ?></p>
21 32 </div>
22 33 </div>
23 34 <div class="blog-post-content style">
24   - <?= Html::a(Html::img($model->cover), Url::toRoute(['/performer/blog-view','performer_id'=>$this->params['user']->id,'link'=>$model->link]));?>
25   - <?= TextHelper::truncateHtmlText($model->description, 1300)?>
  35 + <?= Html::a(Html::img($model->cover), Url::toRoute([
  36 + '/performer/blog-view',
  37 + 'performer_id' => $this->params[ 'user' ]->id,
  38 + 'link' => $model->link,
  39 + ])); ?>
  40 + <?= TextHelper::truncateHtmlText($model->description, 1300) ?>
26 41 </div>
27   - <?= Html::a('<span>Подробнее</span>', Url::toRoute(['performer/blog-view','performer_id'=>$this->params['user']->id,'link'=>$model->link]),['class'=>'blog-post-see-all style']);?>
  42 + <?= Html::a('<span>Подробнее</span>', Url::toRoute([
  43 + 'performer/blog-view',
  44 + 'performer_id' => $this->params[ 'user' ]->id,
  45 + 'link' => $model->link,
  46 + ]), [ 'class' => 'blog-post-see-all style' ]); ?>
28 47 </div>
29 48 \ No newline at end of file
... ...
frontend/views/performer/blog-list.php
1 1 <?php
  2 + /**
  3 + * @var ArrayDataProvider $blog
  4 + * @var Pagination $pagination
  5 + * @var yii\web\View $this
  6 + */
  7 + use yii\data\ArrayDataProvider;
  8 + use yii\data\Pagination;
  9 + use yii\widgets\LinkPager;
  10 + use yii\widgets\ListView;
2 11  
3   -use \yii\helpers\Html;
4   -use yii\widgets\LinkPager;
5   -use yii\widgets\ListView;
6   -
7   -/* @var $this yii\web\View */
8   -$this->params['user'] = $user;
9   -$this->title = 'My Yii Application';
  12 + $this->params[ 'user' ] = $user;
  13 + $this->title = 'My Yii Application';
10 14 ?>
11 15 <div class="performer-vacancy-vacant-title-reclam-wr style">
12 16  
13   - <?=
14   - ListView::widget( [
  17 + <?= ListView::widget([
15 18 'dataProvider' => $blog,
16   - 'itemView'=>'_blog_list_view',
17   - 'summary'=>'',
18   - ] );
19   - ?>
  19 + 'itemView' => '_blog_list_view',
  20 + 'summary' => '',
  21 + ]); ?>
20 22 </div>
21 23 <div class="navi-buttons-wr style">
22   - <?=
23   - LinkPager::widget([
  24 + <?= LinkPager::widget([
24 25 'pagination' => $pagination,
25   - ]);
26   - ?>
  26 + ]); ?>
27 27 </div>
28 28  
... ...
frontend/views/performer/blog-view.php
1 1 <?php
2   - use \yii\helpers\Html;
  2 + /**
  3 + * @var yii\web\View $this
  4 + * @var Blog $article
  5 + */
  6 + use common\models\Blog;
3 7  
4   - /* @var $this yii\web\View */
5   - $this->params['user'] = $user;
  8 + $this->params[ 'user' ] = $user;
6 9  
7   - $this->title = $article->name ;
  10 + $this->title = $article->name;
8 11 ?>
9 12 <div class="performer-vacancy-vacant-title-reclam-wr style">
10 13 <div class="blog-post-wr">
... ... @@ -12,15 +15,15 @@
12 15 <div class="blog-post-icons-wr style">
13 16 <div class="blog-post-date">
14 17 <span></span>
15   - <p><?= $article->dateCreate?></p>
  18 + <p><?= \Yii::$app->formatter->asDate($article->date_add, 'php:d.m.Y') ?></p>
16 19 </div>
17 20 <div class="blog-post-views">
18 21 <span></span>
19   - <p><?= $article->view_count?></p>
  22 + <p><?= $article->view_count ?></p>
20 23 </div>
21 24 <div class="blog-post-comm-num">
22 25 <span></span>
23   - <p><?= $article->view_count?></p>
  26 + <p><?= count($article->comments) ?></p>
24 27 </div>
25 28 </div>
26 29 <div class="blog-post-content style">
... ... @@ -28,3 +31,29 @@
28 31 </div>
29 32 </div>
30 33 </div>
  34 +<?php
  35 + echo \common\modules\comment\widgets\CommentWidget::widget([
  36 + 'context' => $this,
  37 + 'model' => $article::className(),
  38 + 'model_id' => $article->blog_id,
  39 + 'comment_class' => \common\modules\comment\models\Comment::className(),
  40 + 'rating_class' => \common\modules\comment\models\Rating::className(),
  41 + 'class_options' => [
  42 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  43 + 'user_id' => \Yii::$app->user->getId(),
  44 + 'guestComment' => true,
  45 + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,
  46 + ],
  47 + 'list_options' => [
  48 + 'view' => 'list-comment',
  49 + ],
  50 + 'form_options' => [
  51 + 'view' => 'form-comment',
  52 + 'tag' => 'div',
  53 + 'class' => 'artbox_comment_form',
  54 + ],
  55 + 'options' => [
  56 + 'class' => 'new-portf-comments-wr style',
  57 + ],
  58 + ]);
  59 +?>
... ...
frontend/views/performer/review.php
1 1 <?php
  2 + /**
  3 + * @var View $this
  4 + * @var User $user
  5 + */
2 6  
3   -use \yii\helpers\Html;
  7 + use common\models\User;
  8 + use yii\web\View;
4 9  
5   -/* @var $this yii\web\View */
6   -$this->params['user'] = $user;
7   -$this->title = 'My Yii Application';
  10 + $this->params[ 'user' ] = $user;
  11 + $this->title = 'My Yii Application';
8 12 ?>
9 13 <div class="performer-vacancy-vacant-title-reclam-wr style">
  14 + <?php
  15 + echo \common\modules\comment\widgets\CommentWidget::widget([
  16 + 'context' => $this,
  17 + 'model' => $user->className(),
  18 + 'model_id' => $user->id,
  19 + 'comment_class' => \common\modules\comment\models\Comment::className(),
  20 + 'rating_class' => \common\modules\comment\models\Rating::className(),
  21 + 'class_options' => [
  22 + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST,
  23 + 'user_id' => \Yii::$app->user->getId(),
  24 + 'guestComment' => false,
  25 + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE,
  26 + ],
  27 + 'list_options' => [
  28 + 'view' => 'list-comment-review',
  29 + ],
  30 + 'form_options' => [
  31 + 'view' => 'form-comment-review',
  32 + 'tag' => 'span',
  33 + ],
  34 + 'options' => [
  35 + 'class' => 'proektant-comments-wr style',
  36 + ],
  37 + ]);
  38 + ?>
  39 + <?php /* == Layout == ?>
10 40 <div class="proektant-comments-wr style">
11 41 <div class="workplace-title style"><p>Отзывы о пользователе: 4</p></div>
12 42 <ul class="proektant-comments style">
... ... @@ -82,5 +112,5 @@ $this-&gt;title = &#39;My Yii Application&#39;;
82 112 </ul>
83 113 </div>
84 114 </div>
85   -
  115 + <?php */ ?>
86 116 </div>
... ...
frontend/views/search/project.php
... ... @@ -75,7 +75,7 @@
75 75 'options' => [ 'class' => 'blocks-check-list' ],
76 76 ])
77 77 ->label("<span></span>{$model->getAttributeLabel('contractual')}", ['class' => ''])
78   - ->checkbox([ 'uncheck' => NULL ], false) ?>
  78 + ->checkbox([ ], false) ?>
79 79 <?= $form->field($model, 'payment', [ 'template' => "{input}\n{error}" ])
80 80 ->checkboxList($payments, [
81 81 'item' => function($index, $label, $name, $checked, $value) {
... ...
frontend/views/tender/view.php
... ... @@ -47,7 +47,7 @@ $this-&gt;title = &#39;My Yii Application&#39;;
47 47 <div class="section-box">
48 48 <div class="cabinet-message-read-autor-wr style">
49 49 <div class="cabinet-message-read-foto-wr">
50   - <div class="cabinet-message-read-foto"><img src="<?= $model->user->userInfo->image ?>" alt=""/></div>
  50 + <div class="cabinet-message-read-foto"><img src="<?= ($model->user->userInfo->image)?:'' ?>" alt=""/></div>
51 51 </div>
52 52 <div class="cab-mes-read-cont">
53 53 <div class="cab-mes-read-cont-title"><?= $model->user->owner->name ?></div>
... ...