Commit 3d620c673fcf30eca0d84eb159397456bc9cae19

Authored by Administrator
1 parent f7089e23

15.02.16

frontend/config/main.php
@@ -64,6 +64,7 @@ return [ @@ -64,6 +64,7 @@ return [
64 'showScriptName' => false, 64 'showScriptName' => false,
65 'rules' => [ 65 'rules' => [
66 'landing/<view:[\w-]+>' => 'landing/view', 66 'landing/<view:[\w-]+>' => 'landing/view',
  67 + 'performer/portfolio/<performer_id:[\w-]+>/<filter:[\d]+>' => 'performer/portfolio-filter',
67 'performer/blog-view/<performer_id:[\w-]+>/<link:[\w-]+>' => 'performer/blog-view', 68 'performer/blog-view/<performer_id:[\w-]+>/<link:[\w-]+>' => 'performer/blog-view',
68 'performer/<action>/<performer_id:[\w-]+>' => 'performer/<action>', 69 'performer/<action>/<performer_id:[\w-]+>' => 'performer/<action>',
69 'company/blog-view/<company_id:[\w-]+>/<link:[\w-]+>' => 'company/blog-view', 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,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 public function actionBlogList($performer_id) 141 public function actionBlogList($performer_id)
107 { 142 {
108 $user = User::findOne($performer_id); 143 $user = User::findOne($performer_id);
frontend/views/performer/portfolio.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 use yii\helpers\ArrayHelper; 3 use yii\helpers\ArrayHelper;
4 use \yii\helpers\Html; 4 use \yii\helpers\Html;
  5 +use yii\helpers\Url;
5 use yii\widgets\ListView; 6 use yii\widgets\ListView;
6 7
7 8
@@ -12,16 +13,22 @@ $this-&gt;params[&#39;user&#39;] = $user; @@ -12,16 +13,22 @@ $this-&gt;params[&#39;user&#39;] = $user;
12 $this->title = 'My Yii Application'; 13 $this->title = 'My Yii Application';
13 ?> 14 ?>
14 <div class="performer-vacancy-vacant-title-reclam-wr style"> 15 <div class="performer-vacancy-vacant-title-reclam-wr style">
  16 +
15 <div class="portfolio-project-wr style"> 17 <div class="portfolio-project-wr style">
16 <div class="workplace-title style"><p>Проектов: <?= $portfolio->totalCount ?></p></div> 18 <div class="workplace-title style"><p>Проектов: <?= $portfolio->totalCount ?></p></div>
17 <div class="portfolio-project-tags style"> 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 <?php foreach($filters as $filter): ?> 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 <?php endforeach; ?> 27 <?php endforeach; ?>
22 28
23 </div> 29 </div>
24 </div> 30 </div>
  31 +
25 <div class="style"> 32 <div class="style">
26 <div class="portfolio-project-blocks-wrapper"> 33 <div class="portfolio-project-blocks-wrapper">
27 <?= 34 <?=
@@ -34,4 +41,5 @@ $this-&gt;title = &#39;My Yii Application&#39;; @@ -34,4 +41,5 @@ $this-&gt;title = &#39;My Yii Application&#39;;
34 41
35 </div> 42 </div>
36 </div> 43 </div>
  44 +
37 </div> 45 </div>
38 \ No newline at end of file 46 \ No newline at end of file
frontend/views/performer/portfolio_list_view.php
1 <?php 1 <?php
2 use yii\helpers\ArrayHelper; 2 use yii\helpers\ArrayHelper;
3 use yii\helpers\Html; 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,5 +36,5 @@ use yii\helpers\Html;
35 <div class="portfolio-project-views-txt">14</div> 36 <div class="portfolio-project-views-txt">14</div>
36 </div> 37 </div>
37 </div> 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 </div> 40 </div>
40 \ No newline at end of file 41 \ No newline at end of file