Commit 989c83b00da44c427465d508f34dc84cbc38f2d8

Authored by Yarik
1 parent ccab742d

test

common/models/Portfolio.php
... ... @@ -107,19 +107,20 @@
107 107 public function attributeLabels()
108 108 {
109 109 return [
110   - 'portfolio_id' => Yii::t('app', 'Portfolio ID'),
111   - 'user_id' => Yii::t('app', 'User ID'),
112   - 'name' => Yii::t('app', 'Название'),
113   - 'link' => Yii::t('app', 'URL'),
114   - 'date_add' => Yii::t('app', 'Дата добавления'),
115   - 'user_add_id' => Yii::t('app', 'User Add ID'),
116   - 'view_count' => Yii::t('app', 'Количество просмотров'),
117   - 'city' => Yii::t('app', 'Город'),
118   - 'street' => Yii::t('app', 'Улица'),
119   - 'house' => Yii::t('app', 'Дом'),
120   - 'description' => Yii::t('app', 'Описание'),
121   - 'cover' => Yii::t('app', 'Фото главное'),
122   - 'gallery_id' => Yii::t('app', 'Фото галерея'),
  110 + 'portfolio_id' => Yii::t('app', 'Portfolio ID'),
  111 + 'user_id' => Yii::t('app', 'User ID'),
  112 + 'name' => Yii::t('app', 'Название'),
  113 + 'link' => Yii::t('app', 'URL'),
  114 + 'date_add' => Yii::t('app', 'Дата добавления'),
  115 + 'user_add_id' => Yii::t('app', 'User Add ID'),
  116 + 'view_count' => Yii::t('app', 'Количество просмотров'),
  117 + 'city' => Yii::t('app', 'Город'),
  118 + 'street' => Yii::t('app', 'Улица'),
  119 + 'house' => Yii::t('app', 'Дом'),
  120 + 'description' => Yii::t('app', 'Описание'),
  121 + 'cover' => Yii::t('app', 'Фото главное'),
  122 + 'gallery_id' => Yii::t('app', 'Фото галерея'),
  123 + 'specializationString' => Yii::t('app', 'Специализации'),
123 124 ];
124 125 }
125 126  
... ... @@ -148,4 +149,21 @@
148 149 {
149 150 $this->specializationInput = $value;
150 151 }
  152 +
  153 + public function getSpecializationString()
  154 + {
  155 + return implode(', ', $this->getSpecializations()
  156 + ->select([
  157 + 'specialization_name',
  158 + 'specialization_id',
  159 + ])
  160 + ->asArray()
  161 + ->indexBy('specialization_id')
  162 + ->column());
  163 + }
  164 +
  165 + public function setSpecializationString($value)
  166 + {
  167 + $this->specializationString = $value;
  168 + }
151 169 }
... ...
common/models/PortfolioSearch.php
1 1 <?php
2 2  
3   -namespace common\models;
  3 + namespace common\models;
4 4  
5   -use Yii;
6   -use yii\base\Model;
7   -use yii\data\ActiveDataProvider;
8   -use common\models\Portfolio;
  5 + use Yii;
  6 + use yii\base\Model;
  7 + use yii\data\ActiveDataProvider;
  8 + use common\models\Portfolio;
9 9  
10   -/**
11   - * PortfolioSearch represents the model behind the search form about `common\models\Portfolio`.
12   - */
13   -class PortfolioSearch extends Portfolio
14   -{
15 10 /**
16   - * @inheritdoc
  11 + * PortfolioSearch represents the model behind the search form about `common\models\Portfolio`.
17 12 */
18   - public function rules()
  13 + class PortfolioSearch extends Portfolio
19 14 {
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 15  
26   - /**
27   - * @inheritdoc
28   - */
29   - public function scenarios()
30   - {
31   - // bypass scenarios() implementation in the parent class
32   - return Model::scenarios();
33   - }
  16 + /**
  17 + * @inheritdoc
  18 + */
  19 + public function rules()
  20 + {
  21 + return [
  22 + [
  23 + [
  24 + 'portfolio_id',
  25 + 'user_id',
  26 + 'user_add_id',
  27 + 'view_count',
  28 + 'gallery_id',
  29 + ],
  30 + 'integer',
  31 + ],
  32 + [
  33 + [
  34 + 'name',
  35 + 'link',
  36 + 'date_add',
  37 + 'city',
  38 + 'street',
  39 + 'house',
  40 + 'description',
  41 + 'cover',
  42 + 'specializationString',
  43 + ],
  44 + 'safe',
  45 + ],
  46 + ];
  47 + }
34 48  
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();
  49 + /**
  50 + * @inheritdoc
  51 + */
  52 + public function scenarios()
  53 + {
  54 + // bypass scenarios() implementation in the parent class
  55 + return Model::scenarios();
  56 + }
45 57  
46   - // add conditions that should always apply here
  58 + /**
  59 + * Creates data provider instance with search query applied
  60 + *
  61 + * @param array $params
  62 + *
  63 + * @return ActiveDataProvider
  64 + */
  65 + public function search($params)
  66 + {
  67 + $query = Portfolio::find();
47 68  
48   - $dataProvider = new ActiveDataProvider([
49   - 'query' => $query,
50   - ]);
  69 + // add conditions that should always apply here
51 70  
52   - $this->load($params);
  71 + $dataProvider = new ActiveDataProvider([
  72 + 'query' => $query,
  73 + ]);
53 74  
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   - }
  75 + $this->load($params);
59 76  
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   - ]);
  77 + if(!$this->validate()) {
  78 + // uncomment the following line if you do not want to return any records when validation fails
  79 + // $query->where('0=1');
  80 + return $dataProvider;
  81 + }
69 82  
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]);
  83 + $query->joinWith('specializations');
77 84  
78   - return $dataProvider;
  85 + // grid filtering conditions
  86 + $query->andFilterWhere([
  87 + 'portfolio_id' => $this->portfolio_id,
  88 + 'user_id' => $this->user_id,
  89 + 'date_add' => $this->date_add,
  90 + 'user_add_id' => $this->user_add_id,
  91 + 'view_count' => $this->view_count,
  92 + 'gallery_id' => $this->gallery_id,
  93 + ]);
  94 +
  95 + $query->andFilterWhere([
  96 + 'like',
  97 + 'name',
  98 + $this->name,
  99 + ])
  100 + ->andFilterWhere([
  101 + 'like',
  102 + 'link',
  103 + $this->link,
  104 + ])
  105 + ->andFilterWhere([
  106 + 'like',
  107 + 'city',
  108 + $this->city,
  109 + ])
  110 + ->andFilterWhere([
  111 + 'like',
  112 + 'street',
  113 + $this->street,
  114 + ])
  115 + ->andFilterWhere([
  116 + 'like',
  117 + 'house',
  118 + $this->house,
  119 + ])
  120 + ->andFilterWhere([
  121 + 'like',
  122 + 'description',
  123 + $this->description,
  124 + ])
  125 + ->andFilterWhere([
  126 + 'like',
  127 + 'cover',
  128 + $this->cover,
  129 + ])
  130 + ->andFilterWhere([
  131 + 'like',
  132 + 'specialization.specialization_name',
  133 + $this->specializationString,
  134 + ]);
  135 +
  136 + return $dataProvider;
  137 + }
79 138 }
80   -}
... ...
common/models/Project.php
... ... @@ -103,6 +103,11 @@
103 103 'string',
104 104 'max' => 255,
105 105 ],
  106 + [
  107 + [ 'view_count' ],
  108 + 'default',
  109 + 'value' => 0,
  110 + ],
106 111 ];
107 112 }
108 113  
... ... @@ -132,6 +137,7 @@
132 137 'file' => Yii::t('app', 'Присоединить файл'),
133 138 'specializationInput' => Yii::t('app', 'Специализации'),
134 139 'paymentInput' => Yii::t('app', 'Способ оплаты'),
  140 + 'specializationString' => Yii::t('app', 'Специализации'),
135 141 ];
136 142 }
137 143  
... ... @@ -186,4 +192,21 @@
186 192 {
187 193 $this->paymentInput = $value;
188 194 }
  195 +
  196 + public function getSpecializationString()
  197 + {
  198 + return implode(', ', $this->getSpecializations()
  199 + ->select([
  200 + 'specialization_name',
  201 + 'specialization_id',
  202 + ])
  203 + ->asArray()
  204 + ->indexBy('specialization_id')
  205 + ->column());
  206 + }
  207 +
  208 + public function setSpecializationString($value)
  209 + {
  210 + $this->specializationString = $value;
  211 + }
189 212 }
... ...
frontend/controllers/AccountsController.php
... ... @@ -2,18 +2,22 @@
2 2 namespace frontend\controllers;
3 3  
4 4 use common\models\Blog;
  5 + use common\models\BlogSearch;
5 6 use common\models\CompanyInfo;
6 7 use common\models\Country;
7 8 use common\models\Department;
8 9 use common\models\Employment;
9 10 use common\models\Fields;
10 11 use common\models\Gallery;
  12 + use common\models\GallerySearch;
11 13 use common\models\Job;
12 14 use common\models\Language;
13 15 use common\models\Payment;
14 16 use common\models\Portfolio;
  17 + use common\models\PortfolioSearch;
15 18 use common\models\PortfolioSpecialization;
16 19 use common\models\Project;
  20 + use common\models\ProjectSearch;
17 21 use common\models\Specialization;
18 22 use common\models\Team;
19 23 use common\models\TeamSearch;
... ... @@ -54,7 +58,11 @@
54 58 'verbs' => [
55 59 'class' => VerbFilter::className(),
56 60 'actions' => [
57   - 'team-delete' => [ 'POST' ],
  61 + 'team-delete' => [ 'POST' ],
  62 + 'vacancy-delete' => [ 'POST' ],
  63 + 'portfolio-delete' => [ 'POST' ],
  64 + 'projects-delete' => [ 'POST' ],
  65 + 'blog-delete' => [ 'POST' ],
58 66 ],
59 67 ],
60 68 ];
... ... @@ -71,7 +79,13 @@
71 79  
72 80 public function actionBlog()
73 81 {
74   - return $this->render('blog');
  82 + $searchModel = new BlogSearch();
  83 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  84 +
  85 + return $this->render('blog', [
  86 + 'searchModel' => $searchModel,
  87 + 'dataProvider' => $dataProvider,
  88 + ]);
75 89 }
76 90  
77 91 public function actionBlogCreate()
... ... @@ -81,7 +95,7 @@
81 95 if($blog->load($post) && $blog->save()) {
82 96 return $this->redirect([
83 97 'blog-update',
84   - [ 'id' => $blog->blog_id ],
  98 + 'id' => $blog->blog_id,
85 99 ]);
86 100 } else {
87 101 return $this->render('_blog_form', [ 'blog' => $blog ]);
... ... @@ -99,6 +113,13 @@
99 113 }
100 114 }
101 115  
  116 + public function actionBlogDelete($id)
  117 + {
  118 + Blog::findOne($id)
  119 + ->delete();
  120 + $this->redirect('blog');
  121 + }
  122 +
102 123 public function actionBookmarks()
103 124 {
104 125 return $this->render('bookmarks');
... ... @@ -208,7 +229,13 @@
208 229  
209 230 public function actionGallery()
210 231 {
  232 + $searchModel = new GallerySearch();
  233 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
211 234  
  235 + return $this->render('gallery', [
  236 + 'searchModel' => $searchModel,
  237 + 'dataProvider' => $dataProvider,
  238 + ]);
212 239 }
213 240  
214 241 public function actionGalleryCreate()
... ... @@ -289,7 +316,13 @@
289 316  
290 317 public function actionPortfolio()
291 318 {
292   - return $this->render('portfolio');
  319 + $searchModel = new PortfolioSearch();
  320 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  321 +
  322 + return $this->render('portfolio', [
  323 + 'searchModel' => $searchModel,
  324 + 'dataProvider' => $dataProvider,
  325 + ]);
293 326 }
294 327  
295 328 public function actionPortfolioCreate()
... ... @@ -352,9 +385,22 @@
352 385 ]);
353 386 }
354 387  
  388 + public function actionPortfolioDelete($id)
  389 + {
  390 + Portfolio::findOne($id)
  391 + ->delete();
  392 + $this->redirect('portfolio');
  393 + }
  394 +
355 395 public function actionProjects()
356 396 {
357   - return $this->render('projects');
  397 + $searchModel = new ProjectSearch();
  398 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  399 +
  400 + return $this->render('projects', [
  401 + 'searchModel' => $searchModel,
  402 + 'dataProvider' => $dataProvider,
  403 + ]);
358 404 }
359 405  
360 406 public function actionProjectsCreate()
... ... @@ -500,6 +546,13 @@
500 546 ]);
501 547 }
502 548  
  549 + public function actionProjectsDelete($id)
  550 + {
  551 + Project::findOne($id)
  552 + ->delete();
  553 + $this->redirect('projects');
  554 + }
  555 +
503 556 public function actionService()
504 557 {
505 558 $user = \Yii::$app->user->identity;
... ... @@ -750,7 +803,7 @@
750 803 public function actionVacancyDelete($id)
751 804 {
752 805 Vacancy::findOne($id)
753   - ->delete();
  806 + ->delete();
754 807 $this->redirect('vacancy');
755 808 }
756 809  
... ...
frontend/controllers/ProjectsController.php 0 → 100644
  1 +<?php
  2 + namespace frontend\controllers;
  3 +
  4 + use yii\filters\AccessControl;
  5 + use yii\web\Controller;
  6 +
  7 + class ProjectsController extends Controller
  8 + {
  9 + public function behaviors()
  10 + {
  11 + return [
  12 + 'access' => [
  13 + 'class' => AccessControl::className(),
  14 + 'rules' => [
  15 + [
  16 + //'actions' => ['cabinet','change-password', 'bookmarks', 'projects'],
  17 + 'allow' => true,
  18 + 'roles' => [ '@' ],
  19 + ],
  20 + ],
  21 + ],
  22 + ];
  23 + }
  24 +
  25 + public function actionIndex()
  26 + {
  27 + return $this->render('projects');
  28 + }
  29 + }
0 30 \ No newline at end of file
... ...
frontend/views/accounts/blog.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 BlogSearch $searchModel
  4 + * @var ActiveDataProvider $dataProvider
  5 + */
  6 + use common\models\BlogSearch;
  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', 'Добавить'), [ 'blog-create' ], [ 'class' => 'btn btn-success' ]) ?>
  19 +</p>
  20 +<?= GridView::widget([
  21 + 'dataProvider' => $dataProvider,
  22 + 'filterModel' => $searchModel,
  23 + 'columns' => [
  24 + [
  25 + 'attribute' => 'blog_id',
  26 + 'label' => 'ID',
  27 + ],
  28 + 'name',
  29 + 'date_add',
  30 + 'view_count',
  31 + [
  32 + 'class' => ActionColumn::className(),
  33 + 'buttons' => [
  34 + 'update' => function($url, $model, $key) {
  35 + return Html::a('Update', [
  36 + 'blog-update',
  37 + 'id' => $model->blog_id,
  38 + ]);
  39 + },
  40 + 'delete' => function($url, $model, $key) {
  41 + return Html::a('Delete', [
  42 + 'blog-delete',
  43 + 'id' => $model->blog_id,
  44 + ], [
  45 + 'title' => 'Удалить',
  46 + 'aria-label' => 'Удалить',
  47 + 'data-confirm' => 'Вы уверены, что хотите удалить этот элемент?',
  48 + 'data-method' => 'post',
  49 + 'data-pjax' => '0',
  50 + ]);
  51 + },
  52 + ],
  53 + 'template' => '{update} {delete}',
  54 + ],
  55 + ],
  56 +]); ?>
... ...
frontend/views/accounts/gallery.php
1 1 <?php
2   -use common\models\Option;
3   -use yii\helpers\Html;
4   -use yii\widgets\ActiveForm;
5   -use \common\widgets\MultiLangForm;
6   -
7   - $this->title = 'Мой профиль';
8   - $this->params['breadcrumbs'][] = $this->title;
9   -?>
10   -
11   -<h1><?= $this->title ?></h1>
12   -
13   -
14   -
15   -<?php
16   -
17   -$form = $this->render('_form', [
18   - 'user' => $user,
19   - 'user_info' => $user_info,
20   -]);
21   -
22   -echo MultiLangForm::widget(['form'=>$form]);
23   -
  2 + /**
  3 + * @var GallerySearch $searchModel
  4 + * @var ActiveDataProvider $dataProvider
  5 + */
  6 + use common\models\GallerySearch;
  7 + use yii\data\ActiveDataProvider;
  8 + use yii\grid\GridView;
  9 + use yii\helpers\Html;
  10 +
  11 + $this->title = 'Галерея';
  12 + $this->params[ 'breadcrumbs' ][] = $this->title;
24 13 ?>
25   -
26   -
  14 +<h1><?= $this->title ?></h1>
  15 +<p>
  16 + <?= Html::a(Yii::t('app', 'Добавить'), [ 'gallery-create' ], [ 'class' => 'btn btn-success' ]) ?>
  17 +</p>
  18 +<?= GridView::widget([
  19 + 'dataProvider' => $dataProvider,
  20 + 'filterModel' => $searchModel,
  21 + 'columns' => [
  22 + [
  23 + 'attribute' => 'gallery_id',
  24 + 'label' => 'ID',
  25 + ],
  26 + 'name',
  27 + 'date_add',
  28 + [
  29 + 'attribute' => 'type',
  30 + 'value' => function($model, $key, $index, $column) {
  31 + switch($model->type) {
  32 + case 2:
  33 + return 'Видео';
  34 + break;
  35 + default:
  36 + return 'Фото';
  37 + break;
  38 + }
  39 + },
  40 + 'label' => 'Фото или Видео',
  41 + 'filter' => [
  42 + 1 => 'Фото',
  43 + 2 => 'Видео',
  44 + ]
  45 + ],
  46 + ],
  47 +]) ?>
... ...
frontend/views/accounts/portfolio.php
... ... @@ -14,31 +14,35 @@
14 14 ?>
15 15 <h1><?= $this->title ?></h1>
16 16 <p>
17   - <?= Html::a(Yii::t('app', 'Добавить'), [ 'vacancy-create' ], [ 'class' => 'btn btn-success' ]) ?>
  17 + <?= Html::a(Yii::t('app', 'Добавить'), [ 'portfolio-create' ], [ 'class' => 'btn btn-success' ]) ?>
18 18 </p>
19 19 <?= GridView::widget([
20 20 'dataProvider' => $dataProvider,
21 21 'filterModel' => $searchModel,
22 22 'columns' => [
23 23 [
24   - 'attribute' => 'vacancy_id',
  24 + 'attribute' => 'portfolio_id',
25 25 'label' => 'ID',
26 26 ],
27 27 'name',
  28 + 'date_add',
28 29 'view_count',
29 30 [
  31 + 'attribute' => 'specializationString',
  32 + ],
  33 + [
30 34 'class' => ActionColumn::className(),
31 35 'buttons' => [
32 36 'update' => function($url, $model, $key) {
33 37 return Html::a('Update', [
34   - 'vacancy-update',
35   - 'id' => $model->vacancy_id,
  38 + 'portfolio-update',
  39 + 'id' => $model->portfolio_id,
36 40 ]);
37 41 },
38 42 'delete' => function($url, $model, $key) {
39 43 return Html::a('Delete', [
40   - 'vacancy-delete',
41   - 'id' => $model->vacancy_id,
  44 + 'portfolio-delete',
  45 + 'id' => $model->portfolio_id,
42 46 ], [
43 47 'title' => 'Удалить',
44 48 'aria-label' => 'Удалить',
... ...
frontend/views/accounts/projects.php
1 1 <?php
2   - use common\models\Option;
3   -
4   - $this->title = 'Мой профиль';
5   -$this->params['breadcrumbs'][] = $this->title;
  2 + /**
  3 + * @var ProjectSearch $searchModel
  4 + * @var ActiveDataProvider $dataProvider
  5 + */
  6 + use common\models\ProjectSearch;
  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;
6 14 ?>
7   -<div class="section-box content">
8   - <div class="section-box-22">
9   - <div class="box-wr">
10   - <div class="box-all">
11   -
12   - <div class="left-proektant-cabinet">
13   - <div class="left-proektant-cabinet-title style">Проекты в кабинете</div>
14   - <ul class="cabinet-list style">
15   - <li>
16   - <img src="/images/cabinet/ico-1.png" alt=""/>
17   - <span>Не определен </span>17
18   - </li>
19   - <li>
20   - <img src="/images/cabinet/ico-2.png" alt=""/>
21   - <span>Кандидат </span>0
22   - </li>
23   - <li>
24   - <img src="/images/cabinet/ico-3.png" alt=""/>
25   - <span>Исполнитель </span>0
26   - </li>
27   - <li>
28   - <img src="/images/cabinet/ico-4.png" alt=""/>
29   - <span>Отказали </span>0
30   - </li>
31   - <li>
32   - <span>Корзина </span>7
33   - </li>
34   - </ul>
35   - <div class="style">
36   - <div class="search-profile-blocks">
37   - <div class="left-left-proektant-cabinet">
38   - <a href="" class="srch-prof-title">Создание проекта дома</a>
39   - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
40   -
41   - <div class="srch-prof-text">
42   - <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
43   - <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
44   - </div>
45   - <div class="srch-prof-params-wr">
46   - <div class="srch-prof-params srch-prof-params-city">
47   - <img src="/images/ico-city.png" alt=""/><span>Киев</span>
48   - </div>
49   - <div class="srch-prof-params srch-prof-params-clock">
50   - <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
51   - </div>
52   - <div class="srch-prof-params srch-prof-params-comm">
53   - <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
54   - </div>
55   - </div>
56   - </div>
57   -
58   - <div class="right-proektant-cabinet">
59   - <div class="right-proektant-cabinet-candidate">
60   - <img src="/images/cabinet/ico-5.png" alt=""/>
61   - <span>Ваша кандидатура на рассмотрении</span>
62   - </div>
63   - <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
64   - <div class="right-proektant-cabinet-message-new">
65   - <img src="/images/cabinet/ico-6.png" alt=""/>
66   - <a href="#">3 Сообщения</a>
67   - </div>
68   - </div>
69   -
70   - </div>
71   -
72   - <div class="search-profile-blocks">
73   - <div class="left-left-proektant-cabinet">
74   - <a href="" class="srch-prof-title">Создание проекта дома</a>
75   - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
76   -
77   - <div class="srch-prof-text">
78   - <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
79   - <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
80   - </div>
81   - <div class="srch-prof-params-wr">
82   - <div class="srch-prof-params srch-prof-params-city">
83   - <img src="/images/ico-city.png" alt=""/><span>Киев</span>
84   - </div>
85   - <div class="srch-prof-params srch-prof-params-clock">
86   - <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
87   - </div>
88   - <div class="srch-prof-params srch-prof-params-comm">
89   - <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
90   - </div>
91   - </div>
92   - </div>
93   -
94   - <div class="right-proektant-cabinet">
95   - <div class="right-proektant-cabinet-candidate">
96   - <img src="/images/cabinet/ico-5.png" alt=""/>
97   - <span>Ваша кандидатура на рассмотрении</span>
98   - </div>
99   - <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
100   - <div class="right-proektant-cabinet-message-new">
101   - <img src="/images/cabinet/ico-6.png" alt=""/>
102   - <a href="#">3 Сообщения</a>
103   - </div>
104   - </div>
105   -
106   - </div>
107   -
108   - <div class="search-profile-blocks">
109   - <div class="left-left-proektant-cabinet">
110   - <a href="" class="srch-prof-title">Создание проекта дома</a>
111   - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
112   -
113   - <div class="srch-prof-text">
114   - <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
115   - <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
116   - </div>
117   - <div class="srch-prof-params-wr">
118   - <div class="srch-prof-params srch-prof-params-city">
119   - <img src="/images/ico-city.png" alt=""/><span>Киев</span>
120   - </div>
121   - <div class="srch-prof-params srch-prof-params-clock">
122   - <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
123   - </div>
124   - <div class="srch-prof-params srch-prof-params-comm">
125   - <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
126   - </div>
127   - </div>
128   - </div>
129   -
130   - <div class="right-proektant-cabinet">
131   - <div class="right-proektant-cabinet-candidate">
132   - <img src="/images/cabinet/ico-5.png" alt=""/>
133   - <span>Ваша кандидатура на рассмотрении</span>
134   - </div>
135   - <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
136   - <div class="right-proektant-cabinet-message-new">
137   - <img src="/images/cabinet/ico-6.png" alt=""/>
138   - <a href="#">3 Сообщения</a>
139   - </div>
140   - </div>
141   -
142   - </div>
143   -
144   - <div class="search-profile-blocks">
145   - <div class="left-left-proektant-cabinet">
146   - <a href="" class="srch-prof-title">Создание проекта дома</a>
147   - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
148   -
149   - <div class="srch-prof-text">
150   - <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
151   - <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
152   - </div>
153   - <div class="srch-prof-params-wr">
154   - <div class="srch-prof-params srch-prof-params-city">
155   - <img src="/images/ico-city.png" alt=""/><span>Киев</span>
156   - </div>
157   - <div class="srch-prof-params srch-prof-params-clock">
158   - <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
159   - </div>
160   - <div class="srch-prof-params srch-prof-params-comm">
161   - <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
162   - </div>
163   - </div>
164   - </div>
165   -
166   - <div class="right-proektant-cabinet">
167   - <div class="right-proektant-cabinet-candidate">
168   - <img src="/images/cabinet/ico-5.png" alt=""/>
169   - <span>Ваша кандидатура на рассмотрении</span>
170   - </div>
171   - <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
172   - <div class="right-proektant-cabinet-message-new">
173   - <img src="/images/cabinet/ico-6.png" alt=""/>
174   - <a href="#">3 Сообщения</a>
175   - </div>
176   - </div>
177   -
178   - </div>
179   -
180   - <div class="search-profile-blocks">
181   - <div class="left-left-proektant-cabinet">
182   - <a href="" class="srch-prof-title">Создание проекта дома</a>
183   - <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
184   -
185   - <div class="srch-prof-text">
186   - <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
187   - <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
188   - </div>
189   - <div class="srch-prof-params-wr">
190   - <div class="srch-prof-params srch-prof-params-city">
191   - <img src="/images/ico-city.png" alt=""/><span>Киев</span>
192   - </div>
193   - <div class="srch-prof-params srch-prof-params-clock">
194   - <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
195   - </div>
196   - <div class="srch-prof-params srch-prof-params-comm">
197   - <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
198   - </div>
199   - </div>
200   - </div>
201   -
202   - <div class="right-proektant-cabinet">
203   - <div class="right-proektant-cabinet-candidate">
204   - <img src="/images/cabinet/ico-5.png" alt=""/>
205   - <span>Ваша кандидатура на рассмотрении</span>
206   - </div>
207   - <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
208   - <div class="right-proektant-cabinet-message-new">
209   - <img src="/images/cabinet/ico-6.png" alt=""/>
210   - <a href="#">3 Сообщения</a>
211   - </div>
212   - </div>
213   -
214   - </div>
215   -
216   - <div class="navi-buttons-wr style navi-buttons-yet-wr">
217   - <ul class="pagination">
218   - <li><a href="#">1</a></li>
219   - <li class="active"><a href="#">2</a></li>
220   - <li><a href="#">3</a></li>
221   - <li><a href="#">4</a></li>
222   - <li><a href="#">5</a></li>
223   - <li class="dots-next"><a href="#">...</a></li>
224   - <li><a href="#">156</a></li>
225   - </ul>
226   - <a href="#" class="navi-buttons-yet">Еще 24 проекта</a>
227   - </div>
228   - </div>
229   -
230   -
231   - </div>
232   -
233   - </div>
234   - </div>
235   - </div>
236   - <div>
237   -
238   -
239   -
240   - </div>
241   -</div>
242 15 \ No newline at end of file
  16 +<h1><?= $this->title ?></h1>
  17 +<p>
  18 + <?= Html::a(Yii::t('app', 'Добавить'), [ 'projects-create' ], [ 'class' => 'btn btn-success' ]) ?>
  19 +</p>
  20 +<?= GridView::widget([
  21 + 'dataProvider' => $dataProvider,
  22 + 'filterModel' => $searchModel,
  23 + 'columns' => [
  24 + [
  25 + 'attribute' => 'project_id',
  26 + 'label' => 'ID',
  27 + ],
  28 + 'name',
  29 + 'budget',
  30 + 'city',
  31 + [
  32 + 'attribute' => 'specializationString',
  33 + ],
  34 + 'view_count',
  35 + [
  36 + 'class' => ActionColumn::className(),
  37 + 'buttons' => [
  38 + 'update' => function($url, $model, $key) {
  39 + return Html::a('Update', [
  40 + 'projects-update',
  41 + 'id' => $model->project_id,
  42 + ]);
  43 + },
  44 + 'delete' => function($url, $model, $key) {
  45 + return Html::a('Delete', [
  46 + 'projects-delete',
  47 + 'id' => $model->project_id,
  48 + ], [
  49 + 'title' => 'Удалить',
  50 + 'aria-label' => 'Удалить',
  51 + 'data-confirm' => 'Вы уверены, что хотите удалить этот элемент?',
  52 + 'data-method' => 'post',
  53 + 'data-pjax' => '0',
  54 + ]);
  55 + },
  56 + ],
  57 + 'template' => '{update} {delete}',
  58 + ],
  59 + ],
  60 +]); ?>
... ...
frontend/views/projects/projects.php 0 → 100644
  1 +<?php
  2 + use common\models\Option;
  3 +
  4 + $this->title = 'Мой профиль';
  5 +$this->params['breadcrumbs'][] = $this->title;
  6 +?>
  7 +<div class="section-box content">
  8 + <div class="section-box-22">
  9 + <div class="box-wr">
  10 + <div class="box-all">
  11 +
  12 + <div class="left-proektant-cabinet">
  13 + <div class="left-proektant-cabinet-title style">Проекты в кабинете</div>
  14 + <ul class="cabinet-list style">
  15 + <li>
  16 + <img src="/images/cabinet/ico-1.png" alt=""/>
  17 + <span>Не определен </span>17
  18 + </li>
  19 + <li>
  20 + <img src="/images/cabinet/ico-2.png" alt=""/>
  21 + <span>Кандидат </span>0
  22 + </li>
  23 + <li>
  24 + <img src="/images/cabinet/ico-3.png" alt=""/>
  25 + <span>Исполнитель </span>0
  26 + </li>
  27 + <li>
  28 + <img src="/images/cabinet/ico-4.png" alt=""/>
  29 + <span>Отказали </span>0
  30 + </li>
  31 + <li>
  32 + <span>Корзина </span>7
  33 + </li>
  34 + </ul>
  35 + <div class="style">
  36 + <div class="search-profile-blocks">
  37 + <div class="left-left-proektant-cabinet">
  38 + <a href="" class="srch-prof-title">Создание проекта дома</a>
  39 + <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
  40 +
  41 + <div class="srch-prof-text">
  42 + <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
  43 + <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
  44 + </div>
  45 + <div class="srch-prof-params-wr">
  46 + <div class="srch-prof-params srch-prof-params-city">
  47 + <img src="/images/ico-city.png" alt=""/><span>Киев</span>
  48 + </div>
  49 + <div class="srch-prof-params srch-prof-params-clock">
  50 + <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
  51 + </div>
  52 + <div class="srch-prof-params srch-prof-params-comm">
  53 + <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
  54 + </div>
  55 + </div>
  56 + </div>
  57 +
  58 + <div class="right-proektant-cabinet">
  59 + <div class="right-proektant-cabinet-candidate">
  60 + <img src="/images/cabinet/ico-5.png" alt=""/>
  61 + <span>Ваша кандидатура на рассмотрении</span>
  62 + </div>
  63 + <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
  64 + <div class="right-proektant-cabinet-message-new">
  65 + <img src="/images/cabinet/ico-6.png" alt=""/>
  66 + <a href="#">3 Сообщения</a>
  67 + </div>
  68 + </div>
  69 +
  70 + </div>
  71 +
  72 + <div class="search-profile-blocks">
  73 + <div class="left-left-proektant-cabinet">
  74 + <a href="" class="srch-prof-title">Создание проекта дома</a>
  75 + <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
  76 +
  77 + <div class="srch-prof-text">
  78 + <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
  79 + <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
  80 + </div>
  81 + <div class="srch-prof-params-wr">
  82 + <div class="srch-prof-params srch-prof-params-city">
  83 + <img src="/images/ico-city.png" alt=""/><span>Киев</span>
  84 + </div>
  85 + <div class="srch-prof-params srch-prof-params-clock">
  86 + <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
  87 + </div>
  88 + <div class="srch-prof-params srch-prof-params-comm">
  89 + <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
  90 + </div>
  91 + </div>
  92 + </div>
  93 +
  94 + <div class="right-proektant-cabinet">
  95 + <div class="right-proektant-cabinet-candidate">
  96 + <img src="/images/cabinet/ico-5.png" alt=""/>
  97 + <span>Ваша кандидатура на рассмотрении</span>
  98 + </div>
  99 + <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
  100 + <div class="right-proektant-cabinet-message-new">
  101 + <img src="/images/cabinet/ico-6.png" alt=""/>
  102 + <a href="#">3 Сообщения</a>
  103 + </div>
  104 + </div>
  105 +
  106 + </div>
  107 +
  108 + <div class="search-profile-blocks">
  109 + <div class="left-left-proektant-cabinet">
  110 + <a href="" class="srch-prof-title">Создание проекта дома</a>
  111 + <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
  112 +
  113 + <div class="srch-prof-text">
  114 + <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
  115 + <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
  116 + </div>
  117 + <div class="srch-prof-params-wr">
  118 + <div class="srch-prof-params srch-prof-params-city">
  119 + <img src="/images/ico-city.png" alt=""/><span>Киев</span>
  120 + </div>
  121 + <div class="srch-prof-params srch-prof-params-clock">
  122 + <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
  123 + </div>
  124 + <div class="srch-prof-params srch-prof-params-comm">
  125 + <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
  126 + </div>
  127 + </div>
  128 + </div>
  129 +
  130 + <div class="right-proektant-cabinet">
  131 + <div class="right-proektant-cabinet-candidate">
  132 + <img src="/images/cabinet/ico-5.png" alt=""/>
  133 + <span>Ваша кандидатура на рассмотрении</span>
  134 + </div>
  135 + <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
  136 + <div class="right-proektant-cabinet-message-new">
  137 + <img src="/images/cabinet/ico-6.png" alt=""/>
  138 + <a href="#">3 Сообщения</a>
  139 + </div>
  140 + </div>
  141 +
  142 + </div>
  143 +
  144 + <div class="search-profile-blocks">
  145 + <div class="left-left-proektant-cabinet">
  146 + <a href="" class="srch-prof-title">Создание проекта дома</a>
  147 + <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
  148 +
  149 + <div class="srch-prof-text">
  150 + <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
  151 + <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
  152 + </div>
  153 + <div class="srch-prof-params-wr">
  154 + <div class="srch-prof-params srch-prof-params-city">
  155 + <img src="/images/ico-city.png" alt=""/><span>Киев</span>
  156 + </div>
  157 + <div class="srch-prof-params srch-prof-params-clock">
  158 + <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
  159 + </div>
  160 + <div class="srch-prof-params srch-prof-params-comm">
  161 + <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
  162 + </div>
  163 + </div>
  164 + </div>
  165 +
  166 + <div class="right-proektant-cabinet">
  167 + <div class="right-proektant-cabinet-candidate">
  168 + <img src="/images/cabinet/ico-5.png" alt=""/>
  169 + <span>Ваша кандидатура на рассмотрении</span>
  170 + </div>
  171 + <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
  172 + <div class="right-proektant-cabinet-message-new">
  173 + <img src="/images/cabinet/ico-6.png" alt=""/>
  174 + <a href="#">3 Сообщения</a>
  175 + </div>
  176 + </div>
  177 +
  178 + </div>
  179 +
  180 + <div class="search-profile-blocks">
  181 + <div class="left-left-proektant-cabinet">
  182 + <a href="" class="srch-prof-title">Создание проекта дома</a>
  183 + <div class="srch-prof-budget"><span></span>Бюджет: 20 000 грн (Договорной)</div>
  184 +
  185 + <div class="srch-prof-text">
  186 + <p>На постоянные работы по созданию сайтов, в нашу команду требуется html-верстальщик. Оплата сдельная за проект. В отклике прошу написать свой Skype и почту. А так же 3 проекта с реализованной адаптивной версткой и 3 проекта мобильных сайтов.</p>
  187 + <p>P.S. Студиям прошу не беспокоить! Нужен специалист в команду</p>
  188 + </div>
  189 + <div class="srch-prof-params-wr">
  190 + <div class="srch-prof-params srch-prof-params-city">
  191 + <img src="/images/ico-city.png" alt=""/><span>Киев</span>
  192 + </div>
  193 + <div class="srch-prof-params srch-prof-params-clock">
  194 + <img src="/images/ico-clock.png" alt=""/><span>15.10.2016</span>
  195 + </div>
  196 + <div class="srch-prof-params srch-prof-params-comm">
  197 + <img src="/images/ico-comm.png" alt=""/><span>4 предложения</span>
  198 + </div>
  199 + </div>
  200 + </div>
  201 +
  202 + <div class="right-proektant-cabinet">
  203 + <div class="right-proektant-cabinet-candidate">
  204 + <img src="/images/cabinet/ico-5.png" alt=""/>
  205 + <span>Ваша кандидатура на рассмотрении</span>
  206 + </div>
  207 + <div class="right-proektant-cabinet-message">Сообщение не прочитано</div>
  208 + <div class="right-proektant-cabinet-message-new">
  209 + <img src="/images/cabinet/ico-6.png" alt=""/>
  210 + <a href="#">3 Сообщения</a>
  211 + </div>
  212 + </div>
  213 +
  214 + </div>
  215 +
  216 + <div class="navi-buttons-wr style navi-buttons-yet-wr">
  217 + <ul class="pagination">
  218 + <li><a href="#">1</a></li>
  219 + <li class="active"><a href="#">2</a></li>
  220 + <li><a href="#">3</a></li>
  221 + <li><a href="#">4</a></li>
  222 + <li><a href="#">5</a></li>
  223 + <li class="dots-next"><a href="#">...</a></li>
  224 + <li><a href="#">156</a></li>
  225 + </ul>
  226 + <a href="#" class="navi-buttons-yet">Еще 24 проекта</a>
  227 + </div>
  228 + </div>
  229 +
  230 +
  231 + </div>
  232 +
  233 + </div>
  234 + </div>
  235 + </div>
  236 + <div>
  237 +
  238 +
  239 +
  240 + </div>
  241 +</div>
0 242 \ No newline at end of file
... ...