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 | ... | ... |