From 3d620c673fcf30eca0d84eb159397456bc9cae19 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 15 Feb 2016 18:28:17 +0200 Subject: [PATCH] 15.02.16 --- frontend/config/main.php | 1 + frontend/controllers/PerformerController.php | 35 +++++++++++++++++++++++++++++++++++ frontend/views/performer/portfolio.php | 12 ++++++++++-- frontend/views/performer/portfolio_list_view.php | 3 ++- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/frontend/config/main.php b/frontend/config/main.php index c8d5f99..90280e2 100755 --- a/frontend/config/main.php +++ b/frontend/config/main.php @@ -64,6 +64,7 @@ return [ 'showScriptName' => false, 'rules' => [ 'landing/' => 'landing/view', + 'performer/portfolio//' => 'performer/portfolio-filter', 'performer/blog-view//' => 'performer/blog-view', 'performer//' => 'performer/', 'company/blog-view//' => 'company/blog-view', diff --git a/frontend/controllers/PerformerController.php b/frontend/controllers/PerformerController.php index cc42f5f..a1828cd 100755 --- a/frontend/controllers/PerformerController.php +++ b/frontend/controllers/PerformerController.php @@ -103,6 +103,41 @@ class PerformerController extends Controller } + public function actionPortfolioFilter($performer_id, $filter){ + $user = User::findOne($performer_id); + + if(!$user instanceof User){ + throw new BadRequestHttpException('Пользователь не найден'); + } + $portfolios = ArrayHelper::getColumn($user->portfolios,'portfolio_id'); + + + $filters = PortfolioSpecialization::find()->select(["specialization_id","COUNT('specialization_id') AS count"]) + ->where(["portfolio_id"=>$portfolios ])->groupBy("specialization_id")->all(); + + + $filter_result = PortfolioSpecialization::find() + ->where(['specialization_id'=>$filter, + 'portfolio_id'=>$portfolios + ])->all(); + + + $portfolio = new ArrayDataProvider([ + 'allModels' => Portfolio::find()->where(['portfolio_id'=>ArrayHelper::getColumn($filter_result,'portfolio_id')])->all(), + 'pagination' => [ + 'pageSize' => 9, + ], + ]); + + return $this->render('portfolio',[ + 'user' => $user, + 'filters' => $filters, + 'portfolio' => $portfolio, + 'filter_id' => $filter, + 'count' => count($user->portfolios) + ]); + } + public function actionBlogList($performer_id) { $user = User::findOne($performer_id); diff --git a/frontend/views/performer/portfolio.php b/frontend/views/performer/portfolio.php index e28edf2..7a03d49 100755 --- a/frontend/views/performer/portfolio.php +++ b/frontend/views/performer/portfolio.php @@ -2,6 +2,7 @@ use yii\helpers\ArrayHelper; use \yii\helpers\Html; +use yii\helpers\Url; use yii\widgets\ListView; @@ -12,16 +13,22 @@ $this->params['user'] = $user; $this->title = 'My Yii Application'; ?>
+

Проектов: totalCount ?>

- Все (totalCount ?>) + $user->id], + ['class'=> !isset($filter_id) || empty($filter_id) ? "active-tag" : ""]);?> + - specialization->specialization_name ?> (count ?>) + specialization->specialization_name} ({$filter->count})", + Url::toRoute(['performer/portfolio-filter', 'performer_id'=> $user->id, 'filter' => $filter->specialization->specialization_id]), + ['class'=> isset($filter_id) && $filter->specialization->specialization_id == $filter_id ? "active-tag" : ""]);?>
+
title = 'My Yii Application';
+
\ No newline at end of file diff --git a/frontend/views/performer/portfolio_list_view.php b/frontend/views/performer/portfolio_list_view.php index 2088627..73c102b 100644 --- a/frontend/views/performer/portfolio_list_view.php +++ b/frontend/views/performer/portfolio_list_view.php @@ -1,6 +1,7 @@ @@ -35,5 +36,5 @@ use yii\helpers\Html;
14
-
specializations,'specialization_name'))?>
+
specializations,'specialization_name')[0]?>
\ No newline at end of file -- libgit2 0.21.4