Commit 3d620c673fcf30eca0d84eb159397456bc9cae19

Authored by Administrator
1 parent f7089e23

15.02.16

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-&gt;params[&#39;user&#39;] = $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-&gt;title = &#39;My Yii Application&#39;;
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
... ...