Commit 588209fc4e908d01ae885a6bf4127ae0d7b987a8

Authored by Yarik
1 parent 47559a4b

test

backend/views/blog/articles.php
... ... @@ -2,7 +2,6 @@
2 2 use yii\grid\ActionColumn;
3 3 use yii\grid\Column;
4 4 use yii\grid\GridView;
5   -use common\modules\blog\models\Article;
6 5 use common\models\Language;
7 6  
8 7 echo GridView::widget([
... ...
common/models/Gallery.php
1 1 <?php
2 2  
3   -namespace common\models;
  3 + namespace common\models;
4 4  
5   -use Yii;
6   -use yii\behaviors\BlameableBehavior;
7   -use yii\behaviors\TimestampBehavior;
8   -use yii\db\Expression;
  5 + use Yii;
  6 + use yii\behaviors\BlameableBehavior;
  7 + use yii\behaviors\TimestampBehavior;
  8 + use yii\db\Expression;
9 9  
10   -/**
11   - * This is the model class for table "gallery".
12   - *
13   - * @property integer $gallery_id
14   - * @property integer $user_id
15   - * @property string $name
16   - * @property string $date_add
17   - * @property integer $user_add_id
18   - * @property string $cover
19   - * @property integer $type
20   - * @property string $photo
21   - */
22   -class Gallery extends \yii\db\ActiveRecord
23   -{
24 10 /**
25   - * @inheritdoc
  11 + * This is the model class for table "gallery".
  12 + * @property integer $gallery_id
  13 + * @property integer $user_id
  14 + * @property string $name
  15 + * @property string $date_add
  16 + * @property integer $user_add_id
  17 + * @property string $cover
  18 + * @property integer $type
  19 + * @property string $photo
26 20 */
27   - public static function tableName()
  21 + class Gallery extends \yii\db\ActiveRecord
28 22 {
29   - return 'gallery';
30   - }
31 23  
32   - /**
33   - * @inheritdoc
34   - */
35   - public function behaviors()
36   - {
37   - return [
38   - [
39   - 'class' => BlameableBehavior::className(),
40   - 'createdByAttribute' => 'user_id',
41   - 'updatedByAttribute' => false,
42   - ],
43   - [
44   - 'class' => TimestampBehavior::className(),
45   - 'createdAtAttribute' => 'date_add',
46   - 'updatedAtAttribute' => false,
47   - 'value' => new Expression('NOW()'),
48   - ],
49   - ];
50   - }
  24 + /**
  25 + * @inheritdoc
  26 + */
  27 + public static function tableName()
  28 + {
  29 + return 'gallery';
  30 + }
51 31  
52   - /**
53   - * @inheritdoc
54   - */
55   - public function rules()
56   - {
57   - return [
58   - [['name'], 'required'],
59   - [['type'], 'integer'],
60   - [['photo'], 'string'],
61   - [['name', 'cover'], 'string', 'max' => 255],
62   - ];
63   - }
  32 + /**
  33 + * @inheritdoc
  34 + */
  35 + public function behaviors()
  36 + {
  37 + return [
  38 + [
  39 + 'class' => BlameableBehavior::className(),
  40 + 'createdByAttribute' => 'user_id',
  41 + 'updatedByAttribute' => false,
  42 + ],
  43 + [
  44 + 'class' => TimestampBehavior::className(),
  45 + 'createdAtAttribute' => 'date_add',
  46 + 'updatedAtAttribute' => false,
  47 + 'value' => new Expression('NOW()'),
  48 + ],
  49 + ];
  50 + }
64 51  
65   - /**
66   - * @inheritdoc
67   - */
68   - public function attributeLabels()
69   - {
70   - return [
71   - 'gallery_id' => Yii::t('app', 'Gallery ID'),
72   - 'user_id' => Yii::t('app', 'User ID'),
73   - 'name' => Yii::t('app', 'Название'),
74   - 'date_add' => Yii::t('app', 'Дата добавления'),
75   - 'user_add_id' => Yii::t('app', 'User Add ID'),
76   - 'cover' => Yii::t('app', 'Фото главное'),
77   - 'type' => Yii::t('app', 'Вид галереи'),
78   - 'photo' => Yii::t('app', 'Фото галереи'),
79   - ];
  52 + /**
  53 + * @inheritdoc
  54 + */
  55 + public function rules()
  56 + {
  57 + return [
  58 + [
  59 + [ 'name' ],
  60 + 'required',
  61 + ],
  62 + [
  63 + [ 'type' ],
  64 + 'integer',
  65 + ],
  66 + [
  67 + [ 'photo' ],
  68 + 'string',
  69 + ],
  70 + [
  71 + [
  72 + 'name',
  73 + 'cover',
  74 + ],
  75 + 'string',
  76 + 'max' => 255,
  77 + ],
  78 + ];
  79 + }
  80 +
  81 + /**
  82 + * @inheritdoc
  83 + */
  84 + public function attributeLabels()
  85 + {
  86 + return [
  87 + 'gallery_id' => Yii::t('app', 'Gallery ID'),
  88 + 'user_id' => Yii::t('app', 'User ID'),
  89 + 'name' => Yii::t('app', 'Название'),
  90 + 'date_add' => Yii::t('app', 'Дата добавления'),
  91 + 'user_add_id' => Yii::t('app', 'User Add ID'),
  92 + 'cover' => Yii::t('app', 'Фото главное'),
  93 + 'type' => Yii::t('app', 'Вид галереи'),
  94 + 'photo' => Yii::t('app', 'Фото галереи'),
  95 + ];
  96 + }
80 97 }
81   -}
... ...
common/models/PortfolioSearch.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\models;
  4 +
  5 +use Yii;
  6 +use yii\base\Model;
  7 +use yii\data\ActiveDataProvider;
  8 +use common\models\Portfolio;
  9 +
  10 +/**
  11 + * PortfolioSearch represents the model behind the search form about `common\models\Portfolio`.
  12 + */
  13 +class PortfolioSearch extends Portfolio
  14 +{
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + [['portfolio_id', 'user_id', 'user_add_id', 'view_count', 'gallery_id'], 'integer'],
  22 + [['name', 'link', 'date_add', 'city', 'street', 'house', 'description', 'cover'], 'safe'],
  23 + ];
  24 + }
  25 +
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public function scenarios()
  30 + {
  31 + // bypass scenarios() implementation in the parent class
  32 + return Model::scenarios();
  33 + }
  34 +
  35 + /**
  36 + * Creates data provider instance with search query applied
  37 + *
  38 + * @param array $params
  39 + *
  40 + * @return ActiveDataProvider
  41 + */
  42 + public function search($params)
  43 + {
  44 + $query = Portfolio::find();
  45 +
  46 + // add conditions that should always apply here
  47 +
  48 + $dataProvider = new ActiveDataProvider([
  49 + 'query' => $query,
  50 + ]);
  51 +
  52 + $this->load($params);
  53 +
  54 + if (!$this->validate()) {
  55 + // uncomment the following line if you do not want to return any records when validation fails
  56 + // $query->where('0=1');
  57 + return $dataProvider;
  58 + }
  59 +
  60 + // grid filtering conditions
  61 + $query->andFilterWhere([
  62 + 'portfolio_id' => $this->portfolio_id,
  63 + 'user_id' => $this->user_id,
  64 + 'date_add' => $this->date_add,
  65 + 'user_add_id' => $this->user_add_id,
  66 + 'view_count' => $this->view_count,
  67 + 'gallery_id' => $this->gallery_id,
  68 + ]);
  69 +
  70 + $query->andFilterWhere(['like', 'name', $this->name])
  71 + ->andFilterWhere(['like', 'link', $this->link])
  72 + ->andFilterWhere(['like', 'city', $this->city])
  73 + ->andFilterWhere(['like', 'street', $this->street])
  74 + ->andFilterWhere(['like', 'house', $this->house])
  75 + ->andFilterWhere(['like', 'description', $this->description])
  76 + ->andFilterWhere(['like', 'cover', $this->cover]);
  77 +
  78 + return $dataProvider;
  79 + }
  80 +}
... ...
common/models/Team.php
... ... @@ -79,6 +79,14 @@
79 79 [
80 80 'experience_from',
81 81 ],
  82 + 'integer',
  83 + 'max' => 2016,
  84 + 'min' => 1950,
  85 + ],
  86 + [
  87 + [
  88 + 'experience_from',
  89 + ],
82 90 'safe',
83 91 ],
84 92 [
... ... @@ -94,6 +102,11 @@
94 102 'string',
95 103 'max' => 255,
96 104 ],
  105 + [
  106 + ['experience_from'],
  107 + 'default',
  108 + 'value' => date('Y'),
  109 + ],
97 110 ];
98 111 }
99 112  
... ... @@ -124,4 +137,9 @@
124 137 return $this->hasOne(Department::className(), [ 'department_id' => 'department_id' ]);
125 138 }
126 139  
  140 + public function getUser()
  141 + {
  142 + return $this->lastname. ' ' . $this->firstname . ' ' . $this->middlename;
  143 + }
  144 +
127 145 }
... ...
common/models/TeamSearch.php
1 1 <?php
2 2  
3   -namespace common\models;
4   -
5   -use Yii;
6   -use yii\base\Model;
7   -use yii\data\ActiveDataProvider;
8   -use common\models\Team;
9   -
10   -/**
11   - * TeamSearch represents the model behind the search form about `common\models\Team`.
12   - */
13   -class TeamSearch extends Team
14   -{
15   - /**
16   - * @inheritdoc
17   - */
18   - public function rules()
19   - {
20   - return [
21   - [['team_id', 'user_id', 'department_id', 'user_add_id', 'experience_from'], 'integer'],
22   - [['firstname', 'lastname', 'middlename', 'link', 'position', 'date_add', 'photo', 'country_id'], 'safe'],
23   - ];
24   - }
  3 + namespace common\models;
25 4  
26   - /**
27   - * @inheritdoc
28   - */
29   - public function scenarios()
30   - {
31   - // bypass scenarios() implementation in the parent class
32   - return Model::scenarios();
33   - }
  5 + use Yii;
  6 + use yii\base\Model;
  7 + use yii\data\ActiveDataProvider;
  8 + use common\models\Team;
34 9  
35 10 /**
36   - * Creates data provider instance with search query applied
37   - *
38   - * @param array $params
39   - *
40   - * @return ActiveDataProvider
  11 + * TeamSearch represents the model behind the search form about `common\models\Team`.
41 12 */
42   - public function search($params)
  13 + class TeamSearch extends Team
43 14 {
44   - $query = Team::find();
45 15  
46   - // add conditions that should always apply here
  16 + public $user;
47 17  
48   - $dataProvider = new ActiveDataProvider([
49   - 'query' => $query,
50   - ]);
  18 + public $department;
51 19  
52   - $this->load($params);
  20 + public $experience_from_from;
53 21  
54   - if (!$this->validate()) {
55   - // uncomment the following line if you do not want to return any records when validation fails
56   - // $query->where('0=1');
57   - return $dataProvider;
  22 + public $experience_from_to;
  23 +
  24 + /**
  25 + * @inheritdoc
  26 + */
  27 + public function rules()
  28 + {
  29 + return [
  30 + [
  31 + [
  32 + 'team_id',
  33 + 'user_id',
  34 + 'department_id',
  35 + 'user_add_id',
  36 + 'experience_from',
  37 + 'experience_from_from',
  38 + 'experience_from_to',
  39 + ],
  40 + 'integer',
  41 + ],
  42 + [
  43 + [
  44 + 'experience_from_from',
  45 + ],
  46 + 'default',
  47 + 'value' => 0,
  48 + ],
  49 + [
  50 + [
  51 + 'experience_from_to',
  52 + ],
  53 + 'default',
  54 + 'value' => 100,
  55 + ],
  56 + [
  57 + [
  58 + 'department',
  59 + 'firstname',
  60 + 'lastname',
  61 + 'user',
  62 + 'middlename',
  63 + 'link',
  64 + 'position',
  65 + 'date_add',
  66 + 'photo',
  67 + 'country_id',
  68 + ],
  69 + 'safe',
  70 + ],
  71 + ];
58 72 }
59 73  
60   - // grid filtering conditions
61   - $query->andFilterWhere([
62   - 'team_id' => $this->team_id,
63   - 'user_id' => $this->user_id,
64   - 'department_id' => $this->department_id,
65   - 'date_add' => $this->date_add,
66   - 'user_add_id' => $this->user_add_id,
67   - 'experience_from' => $this->experience_from,
68   - ]);
69   -
70   - $query->andFilterWhere(['like', 'firstname', $this->firstname])
71   - ->andFilterWhere(['like', 'lastname', $this->lastname])
72   - ->andFilterWhere(['like', 'middlename', $this->middlename])
73   - ->andFilterWhere(['like', 'link', $this->link])
74   - ->andFilterWhere(['like', 'position', $this->position])
75   - ->andFilterWhere(['like', 'photo', $this->photo])
76   - ->andFilterWhere(['like', 'country_id', $this->country_id]);
77   -
78   - return $dataProvider;
  74 + /**
  75 + * @inheritdoc
  76 + */
  77 + public function scenarios()
  78 + {
  79 + // bypass scenarios() implementation in the parent class
  80 + return Model::scenarios();
  81 + }
  82 +
  83 + /**
  84 + * Creates data provider instance with search query applied
  85 + *
  86 + * @param array $params
  87 + *
  88 + * @return ActiveDataProvider
  89 + */
  90 + public function search($params)
  91 + {
  92 + $query = Team::find();
  93 +
  94 + // add conditions that should always apply here
  95 +
  96 + $dataProvider = new ActiveDataProvider([
  97 + 'query' => $query,
  98 + ]);
  99 +
  100 + $this->load($params);
  101 +
  102 + if(!$this->validate()) {
  103 + // uncomment the following line if you do not want to return any records when validation fails
  104 + // $query->where('0=1');
  105 + return $dataProvider;
  106 + }
  107 +
  108 + $query->joinWith(Department::tableName());
  109 +
  110 + $dataProvider->setSort([
  111 + 'attributes' => [
  112 + 'team_id',
  113 + 'position',
  114 + 'country_id',
  115 + 'user' => [
  116 + 'asc' => [
  117 + 'lastname' => SORT_ASC,
  118 + 'firstname' => SORT_ASC,
  119 + 'middlename' => SORT_ASC,
  120 + ],
  121 + 'desc' => [
  122 + 'lastname' => SORT_DESC,
  123 + 'firstname' => SORT_DESC,
  124 + 'middlename' => SORT_DESC,
  125 + ],
  126 + ],
  127 + 'link' => [
  128 + 'asc' => [
  129 + 'link' => SORT_DESC,
  130 + ],
  131 + 'desc' => [
  132 + 'link' => SORT_ASC,
  133 + ],
  134 + ],
  135 + 'department' => [
  136 + 'asc' => [
  137 + Department::tableName() . '.name' => SORT_ASC,
  138 + ],
  139 + 'desc' => [
  140 + Department::tableName() . '.name' => SORT_DESC,
  141 + ],
  142 + ],
  143 + 'experience_from' => [
  144 + 'asc' => [
  145 + 'experience_from' => SORT_DESC,
  146 + ],
  147 + 'desc' => [
  148 + 'experience_from' => SORT_ASC,
  149 + ],
  150 + ],
  151 + ],
  152 + ]);
  153 +
  154 + // grid filtering conditions
  155 + $query->andFilterWhere([
  156 + 'team_id' => $this->team_id,
  157 + 'user_id' => $this->user_id,
  158 + 'department_id' => $this->department_id,
  159 + 'date_add' => $this->date_add,
  160 + 'user_add_id' => $this->user_add_id,
  161 + ]);
  162 +
  163 + $query->andFilterWhere([
  164 + 'between',
  165 + 'experience_from',
  166 + $this->experience_from_to ? ( date('Y') - $this->experience_from_to ) : ( date('Y') - 100 ),
  167 + $this->experience_from_from ? ( date('Y') - $this->experience_from_from ) : date('Y'),
  168 + ]);
  169 +
  170 + if(!empty( $this->link ) || $this->link === '0') {
  171 + $query->andFilterWhere([
  172 + $this->link ? '>' : '=',
  173 + 'char_length(link)',
  174 + 0,
  175 + ]);
  176 + }
  177 +
  178 + $query->andFilterWhere([
  179 + 'like',
  180 + 'firstname',
  181 + $this->firstname,
  182 + ])
  183 + ->andFilterWhere([
  184 + 'like',
  185 + 'lastname',
  186 + $this->lastname,
  187 + ])
  188 + ->andFilterWhere([
  189 + 'like',
  190 + 'middlename',
  191 + $this->middlename,
  192 + ])
  193 + ->andFilterWhere([
  194 + 'like',
  195 + 'position',
  196 + $this->position,
  197 + ])
  198 + ->andFilterWhere([
  199 + 'like',
  200 + 'photo',
  201 + $this->photo,
  202 + ])
  203 + ->andFilterWhere([
  204 + 'like',
  205 + 'country_id',
  206 + $this->country_id,
  207 + ])
  208 + ->andFilterWhere([
  209 + 'or',
  210 + [
  211 + 'like',
  212 + 'lastname',
  213 + $this->user,
  214 + ],
  215 + [
  216 + 'like',
  217 + 'firstname',
  218 + $this->user,
  219 + ],
  220 + [
  221 + 'like',
  222 + 'middlename',
  223 + $this->user,
  224 + ],
  225 + ])
  226 + ->andFilterWhere([
  227 + 'like',
  228 + 'department.name',
  229 + $this->department,
  230 + ]);
  231 +
  232 + return $dataProvider;
  233 + }
79 234 }
80   -}
... ...
common/models/Vacancy.php
... ... @@ -68,10 +68,15 @@
68 68 'string',
69 69 ],
70 70 [
71   - ['employmentInput'],
  71 + [ 'employmentInput' ],
72 72 'safe',
73 73 ],
74 74 [
  75 + [ 'view_count' ],
  76 + 'default',
  77 + 'value' => 0,
  78 + ],
  79 + [
75 80 [
76 81 'name',
77 82 'link',
... ... @@ -90,16 +95,16 @@
90 95 public function attributeLabels()
91 96 {
92 97 return [
93   - 'vacancy_id' => Yii::t('app', 'Vacancy ID'),
94   - 'user_id' => Yii::t('app', 'User ID'),
95   - 'name' => Yii::t('app', 'Название'),
96   - 'link' => Yii::t('app', 'URL'),
97   - 'date_add' => Yii::t('app', 'Дата добавления'),
98   - 'user_add_id' => Yii::t('app', 'User Add ID'),
99   - 'view_count' => Yii::t('app', 'Количество просмотров'),
100   - 'user_name' => Yii::t('app', 'Контактное лицо'),
101   - 'city' => Yii::t('app', 'Город'),
102   - 'description' => Yii::t('app', 'Описание'),
  98 + 'vacancy_id' => Yii::t('app', 'Vacancy ID'),
  99 + 'user_id' => Yii::t('app', 'User ID'),
  100 + 'name' => Yii::t('app', 'Название'),
  101 + 'link' => Yii::t('app', 'URL'),
  102 + 'date_add' => Yii::t('app', 'Дата добавления'),
  103 + 'user_add_id' => Yii::t('app', 'User Add ID'),
  104 + 'view_count' => Yii::t('app', 'Количество просмотров'),
  105 + 'user_name' => Yii::t('app', 'Контактное лицо'),
  106 + 'city' => Yii::t('app', 'Город'),
  107 + 'description' => Yii::t('app', 'Описание'),
103 108 'employmentInput' => Yii::t('app', 'Вид занятости'),
104 109 ];
105 110 }
... ...
common/models/VacancySearch.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\models;
  4 +
  5 +use Yii;
  6 +use yii\base\Model;
  7 +use yii\data\ActiveDataProvider;
  8 +use common\models\Vacancy;
  9 +
  10 +/**
  11 + * VacancySearch represents the model behind the search form about `common\models\Vacancy`.
  12 + */
  13 +class VacancySearch extends Vacancy
  14 +{
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + [['vacancy_id', 'user_id', 'user_add_id', 'view_count'], 'integer'],
  22 + [['name', 'link', 'date_add', 'user_name', 'city', 'description'], 'safe'],
  23 + ];
  24 + }
  25 +
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public function scenarios()
  30 + {
  31 + // bypass scenarios() implementation in the parent class
  32 + return Model::scenarios();
  33 + }
  34 +
  35 + /**
  36 + * Creates data provider instance with search query applied
  37 + *
  38 + * @param array $params
  39 + *
  40 + * @return ActiveDataProvider
  41 + */
  42 + public function search($params)
  43 + {
  44 + $query = Vacancy::find();
  45 +
  46 + // add conditions that should always apply here
  47 +
  48 + $dataProvider = new ActiveDataProvider([
  49 + 'query' => $query,
  50 + ]);
  51 +
  52 + $this->load($params);
  53 +
  54 + if (!$this->validate()) {
  55 + // uncomment the following line if you do not want to return any records when validation fails
  56 + // $query->where('0=1');
  57 + return $dataProvider;
  58 + }
  59 +
  60 + // grid filtering conditions
  61 + $query->andFilterWhere([
  62 + 'vacancy_id' => $this->vacancy_id,
  63 + 'user_id' => $this->user_id,
  64 + 'date_add' => $this->date_add,
  65 + 'user_add_id' => $this->user_add_id,
  66 + 'view_count' => $this->view_count,
  67 + ]);
  68 +
  69 + $query->andFilterWhere(['like', 'name', $this->name])
  70 + ->andFilterWhere(['like', 'link', $this->link])
  71 + ->andFilterWhere(['like', 'user_name', $this->user_name])
  72 + ->andFilterWhere(['like', 'city', $this->city])
  73 + ->andFilterWhere(['like', 'description', $this->description]);
  74 +
  75 + return $dataProvider;
  76 + }
  77 +}
... ...
console/migrations/m160208_091942_vacancies.php
... ... @@ -15,7 +15,7 @@ class m160208_091942_vacancies extends Migration
15 15 'link' => $this->string(255),
16 16 'date_add' => $this->timestamp(),
17 17 'user_add_id' => $this->integer(),
18   - 'view_count' => $this->integer(),
  18 + 'view_count' => $this->integer()->defaultValue(0),
19 19 'user_name' => $this->string(255),
20 20 'city' => $this->string(255),
21 21 'description' => $this->text(),
... ...
frontend/controllers/AccountsController.php
... ... @@ -20,11 +20,13 @@
20 20 use common\models\UserPayment;
21 21 use common\models\UserSpecialization;
22 22 use common\models\Vacancy;
  23 + use common\models\VacancySearch;
23 24 use Yii;
24 25 use common\models\User;
25 26 use common\models\UserInfo;
26 27  
27 28 use yii\filters\AccessControl;
  29 + use yii\filters\VerbFilter;
28 30 use yii\web\Controller;
29 31 use yii\web\NotFoundHttpException;
30 32  
... ... @@ -49,9 +51,59 @@
49 51 ],
50 52 ],
51 53 ],
  54 + 'verbs' => [
  55 + 'class' => VerbFilter::className(),
  56 + 'actions' => [
  57 + 'team-delete' => [ 'POST' ],
  58 + ],
  59 + ],
52 60 ];
53 61 }
54 62  
  63 + public function actionAddSkills()
  64 + {
  65 + $user = \Yii::$app->user->identity;
  66 + if(!empty( \Yii::$app->request->post() )) {
  67 + Fields::saveFieldData(Yii::$app->request->post('Fields'), \Yii::$app->user->identity->id, User::className(), 'ru');
  68 + }
  69 + return $this->render('add-skills', [ 'user' => $user ]);
  70 + }
  71 +
  72 + public function actionBlog()
  73 + {
  74 + return $this->render('blog');
  75 + }
  76 +
  77 + public function actionBlogCreate()
  78 + {
  79 + $blog = new Blog();
  80 + $post = \Yii::$app->request->post();
  81 + if($blog->load($post) && $blog->save()) {
  82 + return $this->redirect([
  83 + 'blog-update',
  84 + [ 'id' => $blog->blog_id ],
  85 + ]);
  86 + } else {
  87 + return $this->render('_blog_form', [ 'blog' => $blog ]);
  88 + }
  89 + }
  90 +
  91 + public function actionBlogUpdate($id)
  92 + {
  93 + $blog = Blog::findOne($id);
  94 + $post = \Yii::$app->request->post();
  95 + if($blog->load($post) && $blog->save()) {
  96 + return $this->redirect('blog');
  97 + } else {
  98 + return $this->render('_blog_form', [ 'blog' => $blog ]);
  99 + }
  100 + }
  101 +
  102 + public function actionBookmarks()
  103 + {
  104 + return $this->render('bookmarks');
  105 + }
  106 +
55 107 public function actionCabinet()
56 108 {
57 109  
... ... @@ -81,9 +133,120 @@
81 133  
82 134 }
83 135  
84   - public function actionBookmarks()
  136 + public function actionContacts()
85 137 {
86   - return $this->render('bookmarks');
  138 + $user_info = UserInfo::find()
  139 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  140 + ->one();
  141 + if(empty( $user_info )) {
  142 + $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
  143 + }
  144 + if(!empty( \Yii::$app->request->post() )) {
  145 + Fields::saveFieldData(Yii::$app->request->post('Fields'), \Yii::$app->user->identity->id, User::className(), 'ru');
  146 + $user_info->load(\Yii::$app->request->post());
  147 + $user_info->save();
  148 + }
  149 + return $this->render('contacts', [ 'user_info' => $user_info ]);
  150 + }
  151 +
  152 + public function actionDescription()
  153 + {
  154 + $user_info = UserInfo::find()
  155 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  156 + ->one();
  157 + if(empty( $user_info )) {
  158 + $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
  159 + }
  160 + $post = \Yii::$app->request->post();
  161 + if(!empty( $post )) {
  162 + $user_info->load($post);
  163 + $user_info->save();
  164 + }
  165 + return $this->render('description', [ 'user_info' => $user_info ]);
  166 + }
  167 +
  168 + public function actionEmployment()
  169 + {
  170 + $post = \Yii::$app->request->post();
  171 + if(!empty( $post )) {
  172 + $job = [ ];
  173 + for($i = 0; $i < count($post[ 'Job' ]); $i++) {
  174 + $job[ $i ] = new Job([
  175 + 'user_id' => \Yii::$app->user->getId(),
  176 + 'current' => 0,
  177 + ]);
  178 + }
  179 + if(Job::loadMultiple($job, $post)) {
  180 + $job[ 0 ]->current = 1;
  181 + if(Job::validateMultiple($job)) {
  182 + Job::deleteAll([ 'user_id' => \Yii::$app->user->getId() ]);
  183 + foreach($job as $onejob) {
  184 + $onejob->save(false);
  185 + }
  186 + }
  187 + }
  188 + } else {
  189 + $job = Job::find()
  190 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  191 + ->orderBy([ 'current' => SORT_DESC ])
  192 + ->all();
  193 + if(empty( $job )) {
  194 + $job[] = new Job([
  195 + 'user_id' => \Yii::$app->user->getId(),
  196 + 'current' => 0,
  197 + ]);
  198 + }
  199 + if(!$job[ 0 ]->current) {
  200 + array_unshift($job, new Job([
  201 + 'user_id' => \Yii::$app->user->getId(),
  202 + 'current' => 1,
  203 + ]));
  204 + }
  205 + }
  206 + return $this->render('employment', [ 'job' => $job ]);
  207 + }
  208 +
  209 + public function actionGallery()
  210 + {
  211 +
  212 + }
  213 +
  214 + public function actionGalleryCreate()
  215 + {
  216 + $gallery = new Gallery();
  217 + $user = \Yii::$app->user->identity;
  218 + $post = \Yii::$app->request->post();
  219 + if($gallery->load($post) && $gallery->save()) {
  220 + Fields::saveFieldData(Yii::$app->request->post('Fields'), $gallery->gallery_id, Gallery::className(), 'ru');
  221 + return $this->redirect([
  222 + 'gallery-update',
  223 + 'id' => $gallery->gallery_id,
  224 + ]);
  225 + } else {
  226 + return $this->render('_gallery_form', [
  227 + 'gallery' => $gallery,
  228 + 'user' => $user,
  229 + ]);
  230 + }
  231 + }
  232 +
  233 + public function actionGalleryUpdate($id)
  234 + {
  235 + $gallery = Gallery::findOne($id);
  236 + $user = \Yii::$app->user->identity;
  237 + $post = \Yii::$app->request->post();
  238 + if($gallery->load($post) && $gallery->save()) {
  239 + Fields::saveFieldData(Yii::$app->request->post('Fields'), \Yii::$app->user->identity->id, User::className(), 'ru');
  240 + return $this->redirect([
  241 + 'gallery-update',
  242 + 'id' => $gallery->gallery_id,
  243 + ]);
  244 + } else {
  245 + return $this->render('_gallery_form', [
  246 + 'gallery' => $gallery,
  247 + 'user' => $user,
  248 + ]);
  249 + }
87 250 }
88 251  
89 252 public function actionGeneral()
... ... @@ -119,34 +282,9 @@
119 282 ]);
120 283 }
121 284  
122   - public function actionBlog()
123   - {
124   - return $this->render('blog');
125   - }
126   -
127   - public function actionBlogCreate()
128   - {
129   - $blog = new Blog();
130   - $post = \Yii::$app->request->post();
131   - if($blog->load($post) && $blog->save()) {
132   - return $this->redirect([
133   - 'blog-update',
134   - [ 'id' => $blog->blog_id ],
135   - ]);
136   - } else {
137   - return $this->render('_blog_form', [ 'blog' => $blog ]);
138   - }
139   - }
140   -
141   - public function actionBlogUpdate($id)
  285 + public function actionGetForm($lastindex)
142 286 {
143   - $blog = Blog::findOne($id);
144   - $post = \Yii::$app->request->post();
145   - if($blog->load($post) && $blog->save()) {
146   - return $this->redirect('blog');
147   - } else {
148   - return $this->render('_blog_form', [ 'blog' => $blog ]);
149   - }
  287 + return $this->renderAjax('_job_form', [ 'index' => $lastindex + 1 ]);
150 288 }
151 289  
152 290 public function actionPortfolio()
... ... @@ -214,176 +352,6 @@
214 352 ]);
215 353 }
216 354  
217   - /**
218   - * $user User
219   - */
220   - public function actionSetting()
221   - {
222   - $user = \Yii::$app->user->identity;
223   - $post = \Yii::$app->request->post('User');
224   - if(!empty( $post )) {
225   - if(empty( $post[ 'new_password' ] )) {
226   - $user->addError('new_password', 'Введите новый пароль');
227   - } else {
228   - $user->new_password = $post[ 'new_password' ];
229   - }
230   - if(empty( $post[ 'old_password' ] )) {
231   - $user->addError('old_password', 'Введите новый пароль');
232   - } else {
233   - $user->old_password = $post[ 'old_password' ];
234   - }
235   - if(empty( $post[ 'password_reply' ] ) || $post[ 'password_reply' ] !== $post[ 'new_password' ]) {
236   - $user->addError('password_reply', 'Неправильный повтор пароля');
237   - } else {
238   - $user->password_reply = $post[ 'password_reply' ];
239   - }
240   - if(!$user->hasErrors()) {
241   - if($user->validatePassword($user->old_password)) {
242   - $user->setPassword($user->new_password);
243   - $user->generateAuthKey();
244   - if($user->save()) {
245   - \Yii::$app->session->setFlash('passwordupdate', 'Пароль успешно обновлен');
246   - }
247   - } else {
248   - $user->addError('old_password', 'Неправильный старый пароль');
249   - }
250   - }
251   - }
252   - return $this->render('setting', [ 'user' => $user ]);
253   - }
254   -
255   - public function actionContacts()
256   - {
257   - $user_info = UserInfo::find()
258   - ->where([ 'user_id' => \Yii::$app->user->getId() ])
259   - ->one();
260   - if(empty( $user_info )) {
261   - $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
262   - }
263   - if(!empty( \Yii::$app->request->post() )) {
264   - Fields::saveFieldData(Yii::$app->request->post('Fields'), \Yii::$app->user->identity->id, User::className(), 'ru');
265   - $user_info->load(\Yii::$app->request->post());
266   - $user_info->save();
267   - }
268   - return $this->render('contacts', [ 'user_info' => $user_info ]);
269   - }
270   -
271   - public function actionService()
272   - {
273   - $user = \Yii::$app->user->identity;
274   - $user_info = UserInfo::find()
275   - ->where([ 'user_id' => \Yii::$app->user->getId() ])
276   - ->one();
277   - if(empty( $user_info )) {
278   - $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
279   - }
280   - $specialization = Specialization::find()
281   - ->select([
282   - 'specialization_name',
283   - 'specialization_id',
284   - ])
285   - ->indexBy('specialization_id')
286   - ->asArray()
287   - ->column();
288   - $payment = Payment::find()
289   - ->select([
290   - 'name',
291   - 'payment_id',
292   - ])
293   - ->indexBy('payment_id')
294   - ->asArray()
295   - ->column();
296   - $post = \Yii::$app->request->post();
297   - if(!empty( $post )) {
298   - $user_info->load($post);
299   - $user_info->validate();
300   - if(!$user_info->hasErrors()) {
301   - $user_info->save();
302   - $user->load($post);
303   - $user->unlinkAll('specializations', true);
304   - foreach($user->specializationInput as $one_specialization) {
305   - $user->link('specializations', Specialization::findOne($one_specialization));
306   - }
307   - $user->unlinkAll('payments', true);
308   - foreach($user->paymentInput as $one_payment) {
309   - $user->link('payments', Payment::findOne($one_payment));
310   - }
311   - }
312   - }
313   - return $this->render('service', [
314   - 'user' => $user,
315   - 'user_info' => $user_info,
316   - 'specialization' => $specialization,
317   - 'payment' => $payment,
318   - ]);
319   - }
320   -
321   - public function actionAddSkills()
322   - {
323   - $user = \Yii::$app->user->identity;
324   - if(!empty( \Yii::$app->request->post() )) {
325   - Fields::saveFieldData(Yii::$app->request->post('Fields'), \Yii::$app->user->identity->id, User::className(), 'ru');
326   - }
327   - return $this->render('add-skills', [ 'user' => $user ]);
328   - }
329   -
330   - public function actionDescription()
331   - {
332   - $user_info = UserInfo::find()
333   - ->where([ 'user_id' => \Yii::$app->user->getId() ])
334   - ->one();
335   - if(empty( $user_info )) {
336   - $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
337   - }
338   - $post = \Yii::$app->request->post();
339   - if(!empty( $post )) {
340   - $user_info->load($post);
341   - $user_info->save();
342   - }
343   - return $this->render('description', [ 'user_info' => $user_info ]);
344   - }
345   -
346   - public function actionEmployment()
347   - {
348   - $post = \Yii::$app->request->post();
349   - if(!empty( $post )) {
350   - $job = [ ];
351   - for($i = 0; $i < count($post[ 'Job' ]); $i++) {
352   - $job[ $i ] = new Job([
353   - 'user_id' => \Yii::$app->user->getId(),
354   - 'current' => 0,
355   - ]);
356   - }
357   - if(Job::loadMultiple($job, $post)) {
358   - $job[ 0 ]->current = 1;
359   - if(Job::validateMultiple($job)) {
360   - Job::deleteAll([ 'user_id' => \Yii::$app->user->getId() ]);
361   - foreach($job as $onejob) {
362   - $onejob->save(false);
363   - }
364   - }
365   - }
366   - } else {
367   - $job = Job::find()
368   - ->where([ 'user_id' => \Yii::$app->user->getId() ])
369   - ->orderBy([ 'current' => SORT_DESC ])
370   - ->all();
371   - if(empty( $job )) {
372   - $job[] = new Job([
373   - 'user_id' => \Yii::$app->user->getId(),
374   - 'current' => 0,
375   - ]);
376   - }
377   - if(!$job[ 0 ]->current) {
378   - array_unshift($job, new Job([
379   - 'user_id' => \Yii::$app->user->getId(),
380   - 'current' => 1,
381   - ]));
382   - }
383   - }
384   - return $this->render('employment', [ 'job' => $job ]);
385   - }
386   -
387 355 public function actionProjects()
388 356 {
389 357 return $this->render('projects');
... ... @@ -532,47 +500,92 @@
532 500 ]);
533 501 }
534 502  
535   - public function actionGallery()
536   - {
537   -
538   - }
539   -
540   - public function actionGalleryCreate()
  503 + public function actionService()
541 504 {
542   - $gallery = new Gallery();
543 505 $user = \Yii::$app->user->identity;
  506 + $user_info = UserInfo::find()
  507 + ->where([ 'user_id' => \Yii::$app->user->getId() ])
  508 + ->one();
  509 + if(empty( $user_info )) {
  510 + $user_info = new UserInfo([ 'user_id' => \Yii::$app->user->getId() ]);
  511 + }
  512 + $specialization = Specialization::find()
  513 + ->select([
  514 + 'specialization_name',
  515 + 'specialization_id',
  516 + ])
  517 + ->indexBy('specialization_id')
  518 + ->asArray()
  519 + ->column();
  520 + $payment = Payment::find()
  521 + ->select([
  522 + 'name',
  523 + 'payment_id',
  524 + ])
  525 + ->indexBy('payment_id')
  526 + ->asArray()
  527 + ->column();
544 528 $post = \Yii::$app->request->post();
545   - if($gallery->load($post) && $gallery->save()) {
546   - Fields::saveFieldData(Yii::$app->request->post('Fields'), $gallery->gallery_id, Gallery::className(), 'ru');
547   - return $this->redirect([
548   - 'gallery-update',
549   - 'id' => $gallery->gallery_id,
550   - ]);
551   - } else {
552   - return $this->render('_gallery_form', [
553   - 'gallery' => $gallery,
554   - 'user' => $user,
555   - ]);
  529 + if(!empty( $post )) {
  530 + $user_info->load($post);
  531 + $user_info->validate();
  532 + if(!$user_info->hasErrors()) {
  533 + $user_info->save();
  534 + $user->load($post);
  535 + $user->unlinkAll('specializations', true);
  536 + foreach($user->specializationInput as $one_specialization) {
  537 + $user->link('specializations', Specialization::findOne($one_specialization));
  538 + }
  539 + $user->unlinkAll('payments', true);
  540 + foreach($user->paymentInput as $one_payment) {
  541 + $user->link('payments', Payment::findOne($one_payment));
  542 + }
  543 + }
556 544 }
  545 + return $this->render('service', [
  546 + 'user' => $user,
  547 + 'user_info' => $user_info,
  548 + 'specialization' => $specialization,
  549 + 'payment' => $payment,
  550 + ]);
557 551 }
558 552  
559   - public function actionGalleryUpdate($id)
  553 + /**
  554 + * $user User
  555 + */
  556 + public function actionSetting()
560 557 {
561   - $gallery = Gallery::findOne($id);
562 558 $user = \Yii::$app->user->identity;
563   - $post = \Yii::$app->request->post();
564   - if($gallery->load($post) && $gallery->save()) {
565   - Fields::saveFieldData(Yii::$app->request->post('Fields'), \Yii::$app->user->identity->id, User::className(), 'ru');
566   - return $this->redirect([
567   - 'gallery-update',
568   - 'id' => $gallery->gallery_id,
569   - ]);
570   - } else {
571   - return $this->render('_gallery_form', [
572   - 'gallery' => $gallery,
573   - 'user' => $user,
574   - ]);
  559 + $post = \Yii::$app->request->post('User');
  560 + if(!empty( $post )) {
  561 + if(empty( $post[ 'new_password' ] )) {
  562 + $user->addError('new_password', 'Введите новый пароль');
  563 + } else {
  564 + $user->new_password = $post[ 'new_password' ];
  565 + }
  566 + if(empty( $post[ 'old_password' ] )) {
  567 + $user->addError('old_password', 'Введите новый пароль');
  568 + } else {
  569 + $user->old_password = $post[ 'old_password' ];
  570 + }
  571 + if(empty( $post[ 'password_reply' ] ) || $post[ 'password_reply' ] !== $post[ 'new_password' ]) {
  572 + $user->addError('password_reply', 'Неправильный повтор пароля');
  573 + } else {
  574 + $user->password_reply = $post[ 'password_reply' ];
  575 + }
  576 + if(!$user->hasErrors()) {
  577 + if($user->validatePassword($user->old_password)) {
  578 + $user->setPassword($user->new_password);
  579 + $user->generateAuthKey();
  580 + if($user->save()) {
  581 + \Yii::$app->session->setFlash('passwordupdate', 'Пароль успешно обновлен');
  582 + }
  583 + } else {
  584 + $user->addError('old_password', 'Неправильный старый пароль');
  585 + }
  586 + }
575 587 }
  588 + return $this->render('setting', [ 'user' => $user ]);
576 589 }
577 590  
578 591 public function actionTeam()
... ... @@ -648,9 +661,22 @@
648 661 }
649 662 }
650 663  
  664 + public function actionTeamDelete($id)
  665 + {
  666 + Team::findOne($id)
  667 + ->delete();
  668 + $this->redirect('team');
  669 + }
  670 +
651 671 public function actionVacancy()
652 672 {
653   - $this->render('vacancy');
  673 + $searchModel = new VacancySearch();
  674 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  675 +
  676 + return $this->render('vacancy', [
  677 + 'searchModel' => $searchModel,
  678 + 'dataProvider' => $dataProvider,
  679 + ]);
654 680 }
655 681  
656 682 public function actionVacancyCreate()
... ... @@ -721,9 +747,11 @@
721 747 ]);
722 748 }
723 749  
724   - public function actionGetForm($lastindex)
  750 + public function actionVacancyDelete($id)
725 751 {
726   - return $this->renderAjax('_job_form', [ 'index' => $lastindex + 1 ]);
  752 + Vacancy::findOne($id)
  753 + ->delete();
  754 + $this->redirect('vacancy');
727 755 }
728 756  
729 757 /**
... ...
frontend/views/accounts/_job_form.php
... ... @@ -3,6 +3,7 @@
3 3 * @var integer $index
4 4 */
5 5 use common\models\Job;
  6 + use yii\helpers\Html;
6 7 use yii\jui\DatePicker;
7 8 use yii\widgets\ActiveForm;
8 9  
... ... @@ -30,6 +31,7 @@
30 31 echo $form->field ($model, '[' . $index . ']complete_count')
31 32 ->label ('из них реализовано')
32 33 ->input ('number');
  34 + echo Html::button('Удалить', ['class' => 'remove_job_button']);
33 35 echo "</div></div>";
34 36 $form->end ();
35 37 ?>
... ...
frontend/views/accounts/employment.php
... ... @@ -25,9 +25,9 @@
25 25 echo $form->field ($current, '[0]link')
26 26 ->label ('Ссылка на компанию на сайте МФП')
27 27 ->textInput ();
28   - echo $form->field ($current, '[0]date_start')
  28 + echo $form->field ($current, '[0]date_start', ['options' => ['class' => 'test2class']])
29 29 ->label ('Дата начала работы')
30   - ->widget (DatePicker::className (), ['language' => 'ru', 'dateFormat' => 'dd-MM-yyyy']);
  30 + ->widget (DatePicker::className (), ['options' => ['class' => 'testclass'], 'language' => 'ru', 'dateFormat' => 'dd-MM-yyyy', 'clientOptions' => ['changeYear' => true, 'yearRange' => 'c-20:c', 'changeMonth' => true]]);
31 31 echo $form->field ($current, '[0]position')
32 32 ->label ('Должность')
33 33 ->textInput ();
... ... @@ -67,6 +67,7 @@
67 67 echo $form->field ($job_model, '['. ($index + 1) .']complete_count')
68 68 ->label ('из них реализовано')
69 69 ->input ('number');
  70 + echo Html::button('Удалить', ['class' => 'remove_job_button']);
70 71 echo "</div>";
71 72 }
72 73 ?>
... ... @@ -82,11 +83,20 @@
82 83 $(document).on('click', '#add_job_button', function() {
83 84 var inputs = $('.prev_job_inputs').last();
84 85 var name = $(inputs).find('input, textarea').first().attr('name');
85   - var lastindex = regexp.exec(name)[1];
  86 + var result = regexp.exec(name);
  87 + var lastindex;
  88 + if(result != null) {
  89 + lastindex = result[1];
  90 + } else {
  91 + lastindex = 1;
  92 + }
86 93 $.get('/accounts/get-form', { lastindex: lastindex }, function(data) {
87 94 $('.prev_job_container').append($(data).find('.ajax-loaded').first().html());
88 95 $(data).filter('script').appendTo('body');
89 96 });
90 97 });
  98 + $(document).on('click', '.remove_job_button', function() {
  99 + $(this).parents('.prev_job_inputs').remove();
  100 + });
91 101 });
92 102 </script>
... ...
frontend/views/accounts/portfolio.php
1 1 <?php
2   -use common\models\Option;
3   -use yii\helpers\Html;
4   -use yii\widgets\ActiveForm;
5   -use \common\widgets\MultiLangForm;
  2 + /**
  3 + * @var PortfolioSearch $searchModel
  4 + * @var ActiveDataProvider $dataProvider
  5 + */
  6 + use common\models\PortfolioSearch;
  7 + use yii\data\ActiveDataProvider;
  8 + use yii\grid\ActionColumn;
  9 + use yii\grid\GridView;
  10 + use yii\helpers\Html;
6 11  
7   - $this->title = 'Мой профиль';
8   - $this->params['breadcrumbs'][] = $this->title;
  12 + $this->title = 'Портфолио';
  13 + $this->params[ 'breadcrumbs' ][] = $this->title;
9 14 ?>
10   -<h1><?= $this->title ?></h1>
11 15 \ No newline at end of file
  16 +<h1><?= $this->title ?></h1>
  17 +<p>
  18 + <?= Html::a(Yii::t('app', 'Добавить'), [ 'vacancy-create' ], [ 'class' => 'btn btn-success' ]) ?>
  19 +</p>
  20 +<?= GridView::widget([
  21 + 'dataProvider' => $dataProvider,
  22 + 'filterModel' => $searchModel,
  23 + 'columns' => [
  24 + [
  25 + 'attribute' => 'vacancy_id',
  26 + 'label' => 'ID',
  27 + ],
  28 + 'name',
  29 + 'view_count',
  30 + [
  31 + 'class' => ActionColumn::className(),
  32 + 'buttons' => [
  33 + 'update' => function($url, $model, $key) {
  34 + return Html::a('Update', [
  35 + 'vacancy-update',
  36 + 'id' => $model->vacancy_id,
  37 + ]);
  38 + },
  39 + 'delete' => function($url, $model, $key) {
  40 + return Html::a('Delete', [
  41 + 'vacancy-delete',
  42 + 'id' => $model->vacancy_id,
  43 + ], [
  44 + 'title' => 'Удалить',
  45 + 'aria-label' => 'Удалить',
  46 + 'data-confirm' => 'Вы уверены, что хотите удалить этот элемент?',
  47 + 'data-method' => 'post',
  48 + 'data-pjax' => '0',
  49 + ]);
  50 + },
  51 + ],
  52 + 'template' => '{update} {delete}',
  53 + ],
  54 + ],
  55 +]); ?>
... ...
frontend/views/accounts/team.php
... ... @@ -7,58 +7,101 @@
7 7 use yii\data\ActiveDataProvider;
8 8 use yii\grid\GridView;
9 9 use yii\helpers\Html;
  10 + use yii\widgets\ActiveField;
10 11  
11 12 $this->title = 'Команда';
12 13 $this->params[ 'breadcrumbs' ][] = $this->title;
13 14 ?>
14   - <h1><?= $this->title ?></h1>
15   - <p>
16   - <?= Html::a(Yii::t('app', 'Добавить'), [ 'team-create' ], [ 'class' => 'btn btn-success' ]) ?>
17   - </p>
  15 +<h1><?= $this->title ?></h1>
  16 +<p>
  17 + <?= Html::a(Yii::t('app', 'Добавить'), [ 'team-create' ], [ 'class' => 'btn btn-success' ]) ?>
  18 +</p>
18 19 <?= GridView::widget([
19 20 'dataProvider' => $dataProvider,
20 21 'filterModel' => $searchModel,
21 22 'columns' => [
22 23 [
23 24 'attribute' => 'team_id',
24   - 'label' => 'ID',
  25 + 'label' => 'ID',
25 26 ],
26 27 [
27   - 'value' => function($model, $key, $index, $column) {
28   - return $model->lastname.' '.$model->firstname.' '.$model->middlename;
29   - },
30   - 'label' => 'ФИО',
  28 + 'attribute' => 'user',
  29 + 'label' => 'ФИО',
31 30 ],
32 31 [
33   - 'value' => function($model, $key, $index, $column) {
34   - return \Yii::$app->formatter->asBoolean(!empty($model->link));
35   - },
36   - 'label' => 'Участник МФП',
  32 + 'attribute' => 'link',
  33 + 'format' => 'boolean',
  34 + 'label' => 'Участник МФП',
  35 + 'filter' => [
  36 + 1 => 'Да',
  37 + 0 => 'Нет',
  38 + ],
37 39 ],
38 40 [
39   - 'attribute' => 'department.name',
40   - 'label' => 'Отдел компании',
  41 + 'attribute' => 'department',
  42 + 'value' => 'department.name',
  43 + 'label' => 'Отдел компании',
41 44 ],
42 45 [
43   - 'value' => function($model, $key, $index, $column) {
  46 + 'attribute' => 'experience_from',
  47 + 'value' => function($model, $key, $index, $column) {
44 48 return \Yii::$app->formatter->asDate(time(), 'yyyy') - $model->experience_from;
45 49 },
46   - 'label' => 'Опыт, лет',
  50 + 'label' => 'Опыт, лет',
  51 + 'filter' => "<div class=\"input-group input-group-xs input-daterange\">" . (new ActiveField([
  52 + 'template' => '{input}',
  53 + 'inputOptions' => [
  54 + 'style' => 'width:auto',
  55 + 'class' => 'form-control',
  56 + 'min' => '0',
  57 + 'max' => '100',
  58 + ],
  59 + 'options' => [
  60 + 'tag' => 'span',
  61 + 'class' => '',
  62 + ],
  63 + 'model' => $searchModel,
  64 + 'attribute' => 'experience_from_from',
  65 + ]))->input('number') . "
  66 +<span class=\"input-group-addon kv-field-separator\">
  67 +<i class=\"glyphicon glyphicon-resize-horizontal\"></i>
  68 +</span>" . (new ActiveField([
  69 + 'template' => '{input}',
  70 + 'inputOptions' => [
  71 + 'style' => 'width:auto',
  72 + 'class' => 'form-control',
  73 + 'min' => '0',
  74 + 'max' => '100',
  75 + ],
  76 + 'options' => [
  77 + 'tag' => 'span',
  78 + 'class' => '',
  79 + ],
  80 + 'model' => $searchModel,
  81 + 'attribute' => 'experience_from_to',
  82 + ]))->input('number') . "
  83 +</div>",
47 84 ],
48   - 'team_id',
49   - 'user_id',
50   - 'firstname',
51   - 'lastname',
52   - 'middlename',
53   - // 'link',
54   - // 'position',
55   - // 'department_id',
56   - // 'date_add',
57   - // 'user_add_id',
58   - // 'photo',
59   - // 'country_id',
60   - // 'experience_from',
  85 + 'position',
  86 + 'country_id',
61 87  
62   - [ 'class' => 'yii\grid\ActionColumn' ],
  88 + [
  89 + 'class' => 'yii\grid\ActionColumn',
  90 + 'buttons' => [
  91 + 'update' => function($url, $model, $key) {
  92 + return Html::a('Update', ['team-update', 'id' => $model->team_id]);
  93 + },
  94 + 'delete' => function($url, $model, $key) {
  95 + return Html::a('Delete', ['team-delete', 'id' => $model->team_id], [
  96 + 'title' => 'Удалить',
  97 + 'aria-label' => 'Удалить',
  98 + 'data-confirm' => 'Вы уверены, что хотите удалить этот элемент?',
  99 + 'data-method' => 'post',
  100 + 'data-pjax' => '0',
  101 + ]);
  102 + },
  103 + ],
  104 + 'template' => '{update} {delete}'
  105 + ],
63 106 ],
64   -]); ?>
65 107 \ No newline at end of file
  108 +]); ?>
... ...
frontend/views/accounts/vacancy.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var VacancySearch $searchModel
  4 + * @var ActiveDataProvider $dataProvider
  5 + */
  6 + use common\models\VacancySearch;
  7 + use yii\data\ActiveDataProvider;
  8 + use yii\grid\ActionColumn;
  9 + use yii\grid\GridView;
  10 + use yii\helpers\Html;
  11 +
  12 + $this->title = 'Вакансии';
  13 + $this->params[ 'breadcrumbs' ][] = $this->title;
  14 +?>
  15 +<h1><?= $this->title ?></h1>
  16 +<p>
  17 + <?= Html::a(Yii::t('app', 'Добавить'), [ 'vacancy-create' ], [ 'class' => 'btn btn-success' ]) ?>
  18 +</p>
  19 +<?= GridView::widget([
  20 + 'dataProvider' => $dataProvider,
  21 + 'filterModel' => $searchModel,
  22 + 'columns' => [
  23 + [
  24 + 'attribute' => 'vacancy_id',
  25 + 'label' => 'ID',
  26 + ],
  27 + 'name',
  28 + 'view_count',
  29 + [
  30 + 'class' => ActionColumn::className(),
  31 + 'buttons' => [
  32 + 'update' => function($url, $model, $key) {
  33 + return Html::a('Update', ['vacancy-update', 'id' => $model->vacancy_id]);
  34 + },
  35 + 'delete' => function($url, $model, $key) {
  36 + return Html::a('Delete', ['vacancy-delete', 'id' => $model->vacancy_id], [
  37 + 'title' => 'Удалить',
  38 + 'aria-label' => 'Удалить',
  39 + 'data-confirm' => 'Вы уверены, что хотите удалить этот элемент?',
  40 + 'data-method' => 'post',
  41 + 'data-pjax' => '0',
  42 + ]);
  43 + },
  44 + ],
  45 + 'template' => '{update} {delete}'
  46 + ]
  47 + ]
  48 +]); ?>
... ...