Commit 3d620c673fcf30eca0d84eb159397456bc9cae19
1 parent
f7089e23
15.02.16
Showing
4 changed files
with
48 additions
and
3 deletions
Show diff stats
frontend/config/main.php
... | ... | @@ -64,6 +64,7 @@ return [ |
64 | 64 | 'showScriptName' => false, |
65 | 65 | 'rules' => [ |
66 | 66 | 'landing/<view:[\w-]+>' => 'landing/view', |
67 | + 'performer/portfolio/<performer_id:[\w-]+>/<filter:[\d]+>' => 'performer/portfolio-filter', | |
67 | 68 | 'performer/blog-view/<performer_id:[\w-]+>/<link:[\w-]+>' => 'performer/blog-view', |
68 | 69 | 'performer/<action>/<performer_id:[\w-]+>' => 'performer/<action>', |
69 | 70 | 'company/blog-view/<company_id:[\w-]+>/<link:[\w-]+>' => 'company/blog-view', | ... | ... |
frontend/controllers/PerformerController.php
... | ... | @@ -103,6 +103,41 @@ class PerformerController extends Controller |
103 | 103 | |
104 | 104 | } |
105 | 105 | |
106 | + public function actionPortfolioFilter($performer_id, $filter){ | |
107 | + $user = User::findOne($performer_id); | |
108 | + | |
109 | + if(!$user instanceof User){ | |
110 | + throw new BadRequestHttpException('Пользователь не найден'); | |
111 | + } | |
112 | + $portfolios = ArrayHelper::getColumn($user->portfolios,'portfolio_id'); | |
113 | + | |
114 | + | |
115 | + $filters = PortfolioSpecialization::find()->select(["specialization_id","COUNT('specialization_id') AS count"]) | |
116 | + ->where(["portfolio_id"=>$portfolios ])->groupBy("specialization_id")->all(); | |
117 | + | |
118 | + | |
119 | + $filter_result = PortfolioSpecialization::find() | |
120 | + ->where(['specialization_id'=>$filter, | |
121 | + 'portfolio_id'=>$portfolios | |
122 | + ])->all(); | |
123 | + | |
124 | + | |
125 | + $portfolio = new ArrayDataProvider([ | |
126 | + 'allModels' => Portfolio::find()->where(['portfolio_id'=>ArrayHelper::getColumn($filter_result,'portfolio_id')])->all(), | |
127 | + 'pagination' => [ | |
128 | + 'pageSize' => 9, | |
129 | + ], | |
130 | + ]); | |
131 | + | |
132 | + return $this->render('portfolio',[ | |
133 | + 'user' => $user, | |
134 | + 'filters' => $filters, | |
135 | + 'portfolio' => $portfolio, | |
136 | + 'filter_id' => $filter, | |
137 | + 'count' => count($user->portfolios) | |
138 | + ]); | |
139 | + } | |
140 | + | |
106 | 141 | public function actionBlogList($performer_id) |
107 | 142 | { |
108 | 143 | $user = User::findOne($performer_id); | ... | ... |
frontend/views/performer/portfolio.php
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | |
3 | 3 | use yii\helpers\ArrayHelper; |
4 | 4 | use \yii\helpers\Html; |
5 | +use yii\helpers\Url; | |
5 | 6 | use yii\widgets\ListView; |
6 | 7 | |
7 | 8 | |
... | ... | @@ -12,16 +13,22 @@ $this->params['user'] = $user; |
12 | 13 | $this->title = 'My Yii Application'; |
13 | 14 | ?> |
14 | 15 | <div class="performer-vacancy-vacant-title-reclam-wr style"> |
16 | + | |
15 | 17 | <div class="portfolio-project-wr style"> |
16 | 18 | <div class="workplace-title style"><p>Проектов: <?= $portfolio->totalCount ?></p></div> |
17 | 19 | <div class="portfolio-project-tags style"> |
18 | - <a href="#" class="active-tag">Все (<?= $portfolio->totalCount ?>)</a> | |
20 | + <?= Html::a("Все ({$count})", ['performer/portfolio', 'performer_id'=> $user->id], | |
21 | + ['class'=> !isset($filter_id) || empty($filter_id) ? "active-tag" : ""]);?> | |
22 | + <a href="#" class="active-tag"></a> | |
19 | 23 | <?php foreach($filters as $filter): ?> |
20 | - <a href="#"><?= $filter->specialization->specialization_name ?> (<?= $filter->count ?>)</a> | |
24 | + <?= Html::a("{$filter->specialization->specialization_name} ({$filter->count})", | |
25 | + Url::toRoute(['performer/portfolio-filter', 'performer_id'=> $user->id, 'filter' => $filter->specialization->specialization_id]), | |
26 | + ['class'=> isset($filter_id) && $filter->specialization->specialization_id == $filter_id ? "active-tag" : ""]);?> | |
21 | 27 | <?php endforeach; ?> |
22 | 28 | |
23 | 29 | </div> |
24 | 30 | </div> |
31 | + | |
25 | 32 | <div class="style"> |
26 | 33 | <div class="portfolio-project-blocks-wrapper"> |
27 | 34 | <?= |
... | ... | @@ -34,4 +41,5 @@ $this->title = 'My Yii Application'; |
34 | 41 | |
35 | 42 | </div> |
36 | 43 | </div> |
44 | + | |
37 | 45 | </div> |
38 | 46 | \ No newline at end of file | ... | ... |
frontend/views/performer/portfolio_list_view.php
1 | 1 | <?php |
2 | 2 | use yii\helpers\ArrayHelper; |
3 | 3 | use yii\helpers\Html; |
4 | +use yii\helpers\StringHelper; | |
4 | 5 | |
5 | 6 | |
6 | 7 | ?> |
... | ... | @@ -35,5 +36,5 @@ use yii\helpers\Html; |
35 | 36 | <div class="portfolio-project-views-txt">14</div> |
36 | 37 | </div> |
37 | 38 | </div> |
38 | - <div class="portfolio-project-blocks-tags"><?= implode(',', ArrayHelper::getColumn($model->specializations,'specialization_name'))?></div> | |
39 | + <div class="portfolio-project-blocks-tags"><?= ArrayHelper::getColumn($model->specializations,'specialization_name')[0]?></div> | |
39 | 40 | </div> |
40 | 41 | \ No newline at end of file | ... | ... |