Commit f7089e23dfd1cede749bf5bae2a5eb7b641dd4f2
1 parent
8e5fa1e8
15.02.16
Showing
7 changed files
with
195 additions
and
208 deletions
Show diff stats
common/models/PortfolioSpecialization.php
frontend/controllers/AccountsController.php
| @@ -466,8 +466,11 @@ | @@ -466,8 +466,11 @@ | ||
| 466 | if(!$portfolio instanceof ActiveRecord) { | 466 | if(!$portfolio instanceof ActiveRecord) { |
| 467 | throw new NotFoundHttpException('Запись не найдена'); | 467 | throw new NotFoundHttpException('Запись не найдена'); |
| 468 | } | 468 | } |
| 469 | + | ||
| 469 | $specializations = Specialization::find()->where(['specialization_pid' => 0])->orderBy('specialization_id')->all(); | 470 | $specializations = Specialization::find()->where(['specialization_pid' => 0])->orderBy('specialization_id')->all(); |
| 471 | + | ||
| 470 | $post = \Yii::$app->request->post(); | 472 | $post = \Yii::$app->request->post(); |
| 473 | + | ||
| 471 | if(!empty( $post )) { | 474 | if(!empty( $post )) { |
| 472 | $portfolio->load($post); | 475 | $portfolio->load($post); |
| 473 | $portfolio->validate(); | 476 | $portfolio->validate(); |
| @@ -483,6 +486,7 @@ | @@ -483,6 +486,7 @@ | ||
| 483 | return $this->redirect('portfolio'); | 486 | return $this->redirect('portfolio'); |
| 484 | } | 487 | } |
| 485 | } | 488 | } |
| 489 | + | ||
| 486 | return $this->render('_portfolio_form', [ | 490 | return $this->render('_portfolio_form', [ |
| 487 | 'portfolio' => $portfolio, | 491 | 'portfolio' => $portfolio, |
| 488 | 'specializations' => $specializations, | 492 | 'specializations' => $specializations, |
frontend/controllers/PerformerController.php
| @@ -4,6 +4,8 @@ namespace frontend\controllers; | @@ -4,6 +4,8 @@ namespace frontend\controllers; | ||
| 4 | use common\models\Blog; | 4 | use common\models\Blog; |
| 5 | use common\models\Fields; | 5 | use common\models\Fields; |
| 6 | use common\models\Gallery; | 6 | use common\models\Gallery; |
| 7 | +use common\models\Portfolio; | ||
| 8 | +use common\models\PortfolioSpecialization; | ||
| 7 | use Yii; | 9 | use Yii; |
| 8 | use yii\data\ArrayDataProvider; | 10 | use yii\data\ArrayDataProvider; |
| 9 | use yii\data\Pagination; | 11 | use yii\data\Pagination; |
| @@ -80,10 +82,23 @@ class PerformerController extends Controller | @@ -80,10 +82,23 @@ class PerformerController extends Controller | ||
| 80 | if(!$user instanceof User){ | 82 | if(!$user instanceof User){ |
| 81 | throw new BadRequestHttpException('Пользователь не найден'); | 83 | throw new BadRequestHttpException('Пользователь не найден'); |
| 82 | } | 84 | } |
| 85 | + $projects = ArrayHelper::getColumn($user->portfolios,'portfolio_id'); | ||
| 83 | 86 | ||
| 84 | 87 | ||
| 88 | + $filters = PortfolioSpecialization::find()->select(["specialization_id","COUNT('specialization_id') AS count"]) | ||
| 89 | + ->where(["portfolio_id"=>$projects ])->groupBy("specialization_id")->all(); | ||
| 90 | + | ||
| 91 | + $portfolio = new ArrayDataProvider([ | ||
| 92 | + 'allModels' => $user->portfolios, | ||
| 93 | + 'pagination' => [ | ||
| 94 | + 'pageSize' => 9, | ||
| 95 | + ], | ||
| 96 | + ]); | ||
| 97 | + | ||
| 85 | return $this->render('portfolio',[ | 98 | return $this->render('portfolio',[ |
| 86 | - 'user' => $user | 99 | + 'user' => $user, |
| 100 | + 'filters' => $filters, | ||
| 101 | + 'portfolio' => $portfolio | ||
| 87 | ]); | 102 | ]); |
| 88 | 103 | ||
| 89 | } | 104 | } |
frontend/views/accounts/_portfolio_form.php
| @@ -7,7 +7,8 @@ | @@ -7,7 +7,8 @@ | ||
| 7 | use common\models\Specialization; | 7 | use common\models\Specialization; |
| 8 | use common\widgets\ImageUploader; | 8 | use common\widgets\ImageUploader; |
| 9 | use mihaildev\ckeditor\CKEditor; | 9 | use mihaildev\ckeditor\CKEditor; |
| 10 | - use yii\helpers\Html; | 10 | +use yii\helpers\ArrayHelper; |
| 11 | +use yii\helpers\Html; | ||
| 11 | use yii\widgets\ActiveForm; | 12 | use yii\widgets\ActiveForm; |
| 12 | use \common\widgets\MultiLangForm; | 13 | use \common\widgets\MultiLangForm; |
| 13 | use kartik\select2\Select2; | 14 | use kartik\select2\Select2; |
| @@ -56,7 +57,7 @@ use yii\web\JsExpression; | @@ -56,7 +57,7 @@ use yii\web\JsExpression; | ||
| 56 | <ul> | 57 | <ul> |
| 57 | <?php foreach($child_first->children as $child_second):?> | 58 | <?php foreach($child_first->children as $child_second):?> |
| 58 | <?php if($child_first instanceof Specialization): ?> | 59 | <?php if($child_first instanceof Specialization): ?> |
| 59 | - <li><a href="#"><?= $form->field($portfolio, 'specializationInput[]')->checkbox(['value' => $child_second->specialization_id, 'label' =>$child_second->specialization_name])?></a></li> | 60 | + <li><a href="#"><?= Html::checkbox('Portfolio[specializationInput][]', in_array($child_second->specialization_id, ArrayHelper::getColumn($portfolio->specializations,'specialization_id')),['value' => $child_second->specialization_id, 'label' =>$child_second->specialization_name])?></a></li> |
| 60 | <?php endif;?> | 61 | <?php endif;?> |
| 61 | <?php endforeach; ?> | 62 | <?php endforeach; ?> |
| 62 | </ul> | 63 | </ul> |
| @@ -78,8 +79,8 @@ use yii\web\JsExpression; | @@ -78,8 +79,8 @@ use yii\web\JsExpression; | ||
| 78 | <?= ImageUploader::widget([ | 79 | <?= ImageUploader::widget([ |
| 79 | 'model'=> $portfolio, | 80 | 'model'=> $portfolio, |
| 80 | 'field'=>'cover', | 81 | 'field'=>'cover', |
| 81 | - 'width'=>100, | ||
| 82 | - 'height'=>100, | 82 | + 'width'=>210, |
| 83 | + 'height'=>150, | ||
| 83 | 'multi'=>false, | 84 | 'multi'=>false, |
| 84 | 'gallery' =>$portfolio->cover, | 85 | 'gallery' =>$portfolio->cover, |
| 85 | 'name' => 'Загрузить' | 86 | 'name' => 'Загрузить' |
| @@ -166,4 +167,4 @@ use yii\web\JsExpression; | @@ -166,4 +167,4 @@ use yii\web\JsExpression; | ||
| 166 | $(document).ready(function(){ | 167 | $(document).ready(function(){ |
| 167 | 168 | ||
| 168 | }) | 169 | }) |
| 169 | -</script> | ||
| 170 | \ No newline at end of file | 170 | \ No newline at end of file |
| 171 | +</script> |
frontend/views/performer/portfolio.php
| 1 | <?php | 1 | <?php |
| 2 | 2 | ||
| 3 | +use yii\helpers\ArrayHelper; | ||
| 3 | use \yii\helpers\Html; | 4 | use \yii\helpers\Html; |
| 5 | +use yii\widgets\ListView; | ||
| 4 | 6 | ||
| 5 | -/* @var $this yii\web\View */ | 7 | + |
| 8 | +/* @var $this yii\web\View | ||
| 9 | +* @var $portfolio yii\data\ArrayDataProvider | ||
| 10 | + */ | ||
| 6 | $this->params['user'] = $user; | 11 | $this->params['user'] = $user; |
| 7 | $this->title = 'My Yii Application'; | 12 | $this->title = 'My Yii Application'; |
| 8 | ?> | 13 | ?> |
| 9 | <div class="performer-vacancy-vacant-title-reclam-wr style"> | 14 | <div class="performer-vacancy-vacant-title-reclam-wr style"> |
| 10 | <div class="portfolio-project-wr style"> | 15 | <div class="portfolio-project-wr style"> |
| 11 | - <div class="workplace-title style"><p>Проектов: 1054</p></div> | 16 | + <div class="workplace-title style"><p>Проектов: <?= $portfolio->totalCount ?></p></div> |
| 12 | <div class="portfolio-project-tags style"> | 17 | <div class="portfolio-project-tags style"> |
| 13 | - <a href="#" class="active-tag">Все</a><a href="#">Дизайн интерьера (340)</a><a href="#">Архитектурное проектирование (15)</a><a href="#">3D-визуализация (155)</a><a href="#">Изготовление мебели (5)</a><a href="#">Декорирование стекол и зеркал (14)</a> | ||
| 14 | - <a href="#">Ремонт квартиры под ключ (7)</a><a href="#">Строительство домов под ключ (12)</a><a href="#">Декорирование интерьера (30)</a><a href="#">Декорирование стен (5)</a> | 18 | + <a href="#" class="active-tag">Все (<?= $portfolio->totalCount ?>)</a> |
| 19 | + <?php foreach($filters as $filter): ?> | ||
| 20 | + <a href="#"><?= $filter->specialization->specialization_name ?> (<?= $filter->count ?>)</a> | ||
| 21 | + <?php endforeach; ?> | ||
| 22 | + | ||
| 15 | </div> | 23 | </div> |
| 16 | </div> | 24 | </div> |
| 17 | <div class="style"> | 25 | <div class="style"> |
| 18 | <div class="portfolio-project-blocks-wrapper"> | 26 | <div class="portfolio-project-blocks-wrapper"> |
| 19 | - <div class="portfolio-project-blocks-wr"> | ||
| 20 | - <div class="portfolio-project-blocks-img-title"> | ||
| 21 | - <div class="portfolio-project-blocks-img"><a href="#"><img src="/images/portfolio-project/portfolio-img-1.jpg" alt=""/></a></div> | ||
| 22 | - <div class="portfolio-project-blocks-title-wr"> | ||
| 23 | - <div class="portfolio-project-blocks-title"> | ||
| 24 | - <a href="#">Отделка дома из бруса</a> | ||
| 25 | - </div> | ||
| 26 | - </div> | ||
| 27 | - </div> | ||
| 28 | - <div class="portfolio-project-views-wr"> | ||
| 29 | - <div class="portfolio-project-views ico-views-bl"> | ||
| 30 | - <div class="portfolio-project-views-img-wr"> | ||
| 31 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 32 | - </div> | ||
| 33 | - <div class="portfolio-project-views-txt">127</div> | ||
| 34 | - </div> | ||
| 35 | - <div class="portfolio-project-rati ico-views-bl"> | ||
| 36 | - <div class="portfolio-project-views-img-wr"> | ||
| 37 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 38 | - </div> | ||
| 39 | - <div class="portfolio-project-views-txt">10.0</div> | ||
| 40 | - </div> | ||
| 41 | - <div class="ico-views-bl"> | ||
| 42 | - <div class="portfolio-project-views-img-wr"> | ||
| 43 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 44 | - </div> | ||
| 45 | - <div class="portfolio-project-views-txt">14</div> | ||
| 46 | - </div> | ||
| 47 | - </div> | ||
| 48 | - <div class="portfolio-project-blocks-tags"><a href="#">Деревянные дома</a></div> | ||
| 49 | - </div> | ||
| 50 | - <div class="portfolio-project-blocks-wr"> | ||
| 51 | - <div class="portfolio-project-blocks-img-title"> | ||
| 52 | - <div class="portfolio-project-blocks-img"><a href="#"><img src="/images/portfolio-project/portfolio-img-2.jpg" alt=""/></a></div> | ||
| 53 | - <div class="portfolio-project-blocks-title-wr"> | ||
| 54 | - <div class="portfolio-project-blocks-title"> | ||
| 55 | - <a href="#">Квартира - студия в современном стиле </a> | ||
| 56 | - </div> | ||
| 57 | - </div> | ||
| 58 | - </div> | ||
| 59 | - <div class="portfolio-project-views-wr"> | ||
| 60 | - <div class="portfolio-project-views ico-views-bl"> | ||
| 61 | - <div class="portfolio-project-views-img-wr"> | ||
| 62 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 63 | - </div> | ||
| 64 | - <div class="portfolio-project-views-txt">127</div> | ||
| 65 | - </div> | ||
| 66 | - <div class="portfolio-project-rati ico-views-bl"> | ||
| 67 | - <div class="portfolio-project-views-img-wr"> | ||
| 68 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 69 | - </div> | ||
| 70 | - <div class="portfolio-project-views-txt">10.0</div> | ||
| 71 | - </div> | ||
| 72 | - <div class="ico-views-bl"> | ||
| 73 | - <div class="portfolio-project-views-img-wr"> | ||
| 74 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 75 | - </div> | ||
| 76 | - <div class="portfolio-project-views-txt">14</div> | ||
| 77 | - </div> | ||
| 78 | - </div> | ||
| 79 | - <div class="portfolio-project-blocks-tags"><a href="#">Дизайн интерьера</a></div> | ||
| 80 | - </div> | ||
| 81 | - <div class="portfolio-project-blocks-wr"> | ||
| 82 | - <div class="portfolio-project-blocks-img-title"> | ||
| 83 | - <div class="portfolio-project-blocks-img"><a href="#"><img src="/images/portfolio-project/portfolio-img-1.jpg" alt=""/></a></div> | ||
| 84 | - <div class="portfolio-project-blocks-title-wr"> | ||
| 85 | - <div class="portfolio-project-blocks-title"> | ||
| 86 | - <a href="#">Отделка дома из бруса</a> | ||
| 87 | - </div> | ||
| 88 | - </div> | ||
| 89 | - </div> | ||
| 90 | - <div class="portfolio-project-views-wr"> | ||
| 91 | - <div class="portfolio-project-views ico-views-bl"> | ||
| 92 | - <div class="portfolio-project-views-img-wr"> | ||
| 93 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 94 | - </div> | ||
| 95 | - <div class="portfolio-project-views-txt">127</div> | ||
| 96 | - </div> | ||
| 97 | - <div class="portfolio-project-rati ico-views-bl"> | ||
| 98 | - <div class="portfolio-project-views-img-wr"> | ||
| 99 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 100 | - </div> | ||
| 101 | - <div class="portfolio-project-views-txt">10.0</div> | ||
| 102 | - </div> | ||
| 103 | - <div class="ico-views-bl"> | ||
| 104 | - <div class="portfolio-project-views-img-wr"> | ||
| 105 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 106 | - </div> | ||
| 107 | - <div class="portfolio-project-views-txt">14</div> | ||
| 108 | - </div> | ||
| 109 | - </div> | ||
| 110 | - <div class="portfolio-project-blocks-tags"><a href="#">Деревянные дома</a></div> | ||
| 111 | - </div> | ||
| 112 | - <div class="portfolio-project-blocks-wr"> | ||
| 113 | - <div class="portfolio-project-blocks-img-title"> | ||
| 114 | - <div class="portfolio-project-blocks-img"><a href="#"><img src="/images/portfolio-project/portfolio-img-2.jpg" alt=""/></a></div> | ||
| 115 | - <div class="portfolio-project-blocks-title-wr"> | ||
| 116 | - <div class="portfolio-project-blocks-title"> | ||
| 117 | - <a href="#">Квартира - студия в современном стиле </a> | ||
| 118 | - </div> | ||
| 119 | - </div> | ||
| 120 | - </div> | ||
| 121 | - <div class="portfolio-project-views-wr"> | ||
| 122 | - <div class="portfolio-project-views ico-views-bl"> | ||
| 123 | - <div class="portfolio-project-views-img-wr"> | ||
| 124 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 125 | - </div> | ||
| 126 | - <div class="portfolio-project-views-txt">127</div> | ||
| 127 | - </div> | ||
| 128 | - <div class="portfolio-project-rati ico-views-bl"> | ||
| 129 | - <div class="portfolio-project-views-img-wr"> | ||
| 130 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 131 | - </div> | ||
| 132 | - <div class="portfolio-project-views-txt">10.0</div> | ||
| 133 | - </div> | ||
| 134 | - <div class="ico-views-bl"> | ||
| 135 | - <div class="portfolio-project-views-img-wr"> | ||
| 136 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 137 | - </div> | ||
| 138 | - <div class="portfolio-project-views-txt">14</div> | ||
| 139 | - </div> | ||
| 140 | - </div> | ||
| 141 | - <div class="portfolio-project-blocks-tags"><a href="#">Дизайн интерьера</a></div> | ||
| 142 | - </div> | ||
| 143 | - <div class="portfolio-project-blocks-wr"> | ||
| 144 | - <div class="portfolio-project-blocks-img-title"> | ||
| 145 | - <div class="portfolio-project-blocks-img"><a href="#"><img src="/images/portfolio-project/portfolio-img-1.jpg" alt=""/></a></div> | ||
| 146 | - <div class="portfolio-project-blocks-title-wr"> | ||
| 147 | - <div class="portfolio-project-blocks-title"> | ||
| 148 | - <a href="#">Отделка дома из бруса</a> | ||
| 149 | - </div> | ||
| 150 | - </div> | ||
| 151 | - </div> | ||
| 152 | - <div class="portfolio-project-views-wr"> | ||
| 153 | - <div class="portfolio-project-views ico-views-bl"> | ||
| 154 | - <div class="portfolio-project-views-img-wr"> | ||
| 155 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 156 | - </div> | ||
| 157 | - <div class="portfolio-project-views-txt">127</div> | ||
| 158 | - </div> | ||
| 159 | - <div class="portfolio-project-rati ico-views-bl"> | ||
| 160 | - <div class="portfolio-project-views-img-wr"> | ||
| 161 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 162 | - </div> | ||
| 163 | - <div class="portfolio-project-views-txt">10.0</div> | ||
| 164 | - </div> | ||
| 165 | - <div class="ico-views-bl"> | ||
| 166 | - <div class="portfolio-project-views-img-wr"> | ||
| 167 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 168 | - </div> | ||
| 169 | - <div class="portfolio-project-views-txt">14</div> | ||
| 170 | - </div> | ||
| 171 | - </div> | ||
| 172 | - <div class="portfolio-project-blocks-tags"><a href="#">Деревянные дома</a></div> | ||
| 173 | - </div> | ||
| 174 | - <div class="portfolio-project-blocks-wr"> | ||
| 175 | - <div class="portfolio-project-blocks-img-title"> | ||
| 176 | - <div class="portfolio-project-blocks-img"><a href="#"><img src="/images/portfolio-project/portfolio-img-2.jpg" alt=""/></a></div> | ||
| 177 | - <div class="portfolio-project-blocks-title-wr"> | ||
| 178 | - <div class="portfolio-project-blocks-title"> | ||
| 179 | - <a href="#">Квартира - студия в современном стиле </a> | ||
| 180 | - </div> | ||
| 181 | - </div> | ||
| 182 | - </div> | ||
| 183 | - <div class="portfolio-project-views-wr"> | ||
| 184 | - <div class="portfolio-project-views ico-views-bl"> | ||
| 185 | - <div class="portfolio-project-views-img-wr"> | ||
| 186 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 187 | - </div> | ||
| 188 | - <div class="portfolio-project-views-txt">127</div> | ||
| 189 | - </div> | ||
| 190 | - <div class="portfolio-project-rati ico-views-bl"> | ||
| 191 | - <div class="portfolio-project-views-img-wr"> | ||
| 192 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 193 | - </div> | ||
| 194 | - <div class="portfolio-project-views-txt">10.0</div> | ||
| 195 | - </div> | ||
| 196 | - <div class="ico-views-bl"> | ||
| 197 | - <div class="portfolio-project-views-img-wr"> | ||
| 198 | - <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 199 | - </div> | ||
| 200 | - <div class="portfolio-project-views-txt">14</div> | ||
| 201 | - </div> | ||
| 202 | - </div> | ||
| 203 | - <div class="portfolio-project-blocks-tags"><a href="#">Дизайн интерьера</a></div> | ||
| 204 | - </div> | ||
| 205 | - | ||
| 206 | - <div class="navi-buttons-wr style"> | ||
| 207 | - <ul class="pagination"> | ||
| 208 | - <li><a href="#">1</a></li> | ||
| 209 | - <li><a href="#">2</a></li> | ||
| 210 | - <li><a href="#">3</a></li> | ||
| 211 | - <li><a href="#">4</a></li> | ||
| 212 | - <li><a href="#">5</a></li> | ||
| 213 | - <li class="dots-next"><a href="#">...</a></li> | ||
| 214 | - <li><a href="#">156</a></li> | ||
| 215 | - </ul> | ||
| 216 | - </div> | 27 | + <?= |
| 28 | + ListView::widget( [ | ||
| 29 | + 'dataProvider' => $portfolio, | ||
| 30 | + 'itemView'=>'portfolio_list_view', | ||
| 31 | + 'layout' => "{items}\n<div class='navi-buttons-wr style'>{pager}</div>" | ||
| 32 | + ] ); | ||
| 33 | + ?> | ||
| 217 | 34 | ||
| 218 | </div> | 35 | </div> |
| 219 | </div> | 36 | </div> |
| 1 | +<?php | ||
| 2 | +use yii\helpers\ArrayHelper; | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +?> | ||
| 7 | +<div class="portfolio-project-blocks-wr"> | ||
| 8 | + <div class="portfolio-project-blocks-img-title"> | ||
| 9 | + <div class="portfolio-project-blocks-img"> | ||
| 10 | + <?= Html::a(Html::img($model->cover), '#');?> | ||
| 11 | + </div> | ||
| 12 | + <div class="portfolio-project-blocks-title-wr"> | ||
| 13 | + <div class="portfolio-project-blocks-title"> | ||
| 14 | + <a href="#"><?= $model->name?></a> | ||
| 15 | + </div> | ||
| 16 | + </div> | ||
| 17 | + </div> | ||
| 18 | + <div class="portfolio-project-views-wr"> | ||
| 19 | + <div class="portfolio-project-views ico-views-bl"> | ||
| 20 | + <div class="portfolio-project-views-img-wr"> | ||
| 21 | + <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-1.png"/></div> | ||
| 22 | + </div> | ||
| 23 | + <div class="portfolio-project-views-txt">127</div> | ||
| 24 | + </div> | ||
| 25 | + <div class="portfolio-project-rati ico-views-bl"> | ||
| 26 | + <div class="portfolio-project-views-img-wr"> | ||
| 27 | + <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-2.png"/></div> | ||
| 28 | + </div> | ||
| 29 | + <div class="portfolio-project-views-txt">10.0</div> | ||
| 30 | + </div> | ||
| 31 | + <div class="ico-views-bl"> | ||
| 32 | + <div class="portfolio-project-views-img-wr"> | ||
| 33 | + <div class="portfolio-project-views-img"><img src="/images/portfolio-project/ico-3.png"/></div> | ||
| 34 | + </div> | ||
| 35 | + <div class="portfolio-project-views-txt">14</div> | ||
| 36 | + </div> | ||
| 37 | + </div> | ||
| 38 | + <div class="portfolio-project-blocks-tags"><?= implode(',', ArrayHelper::getColumn($model->specializations,'specialization_name'))?></div> | ||
| 39 | +</div> | ||
| 0 | \ No newline at end of file | 40 | \ No newline at end of file |
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * @link http://www.yiiframework.com/ | ||
| 4 | + * @copyright Copyright (c) 2008 Yii Software LLC | ||
| 5 | + * @license http://www.yiiframework.com/license/ | ||
| 6 | + */ | ||
| 7 | + | ||
| 8 | +namespace frontend\widgets; | ||
| 9 | + | ||
| 10 | +use Yii; | ||
| 11 | +use yii\helpers\ArrayHelper; | ||
| 12 | +use yii\helpers\Html; | ||
| 13 | +use yii\widgets\ListView; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * The ListView widget is used to display data from data | ||
| 17 | + * provider. Each data model is rendered using the view | ||
| 18 | + * specified. | ||
| 19 | + * | ||
| 20 | + * @author Qiang Xue <qiang.xue@gmail.com> | ||
| 21 | + * @since 2.0 | ||
| 22 | + */ | ||
| 23 | +class MyListView extends ListView | ||
| 24 | +{ | ||
| 25 | + /** | ||
| 26 | + * @var array the HTML attributes for the container of the rendering result of each data model. | ||
| 27 | + * The "tag" element specifies the tag name of the container element and defaults to "div". | ||
| 28 | + * If "tag" is false, it means no container element will be rendered. | ||
| 29 | + * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered. | ||
| 30 | + */ | ||
| 31 | + public $itemOptions = []; | ||
| 32 | + /** | ||
| 33 | + * @var string|callable the name of the view for rendering each data item, or a callback (e.g. an anonymous function) | ||
| 34 | + * for rendering each data item. If it specifies a view name, the following variables will | ||
| 35 | + * be available in the view: | ||
| 36 | + * | ||
| 37 | + * - `$model`: mixed, the data model | ||
| 38 | + * - `$key`: mixed, the key value associated with the data item | ||
| 39 | + * - `$index`: integer, the zero-based index of the data item in the items array returned by [[dataProvider]]. | ||
| 40 | + * - `$widget`: ListView, this widget instance | ||
| 41 | + * | ||
| 42 | + * Note that the view name is resolved into the view file by the current context of the [[view]] object. | ||
| 43 | + * | ||
| 44 | + * If this property is specified as a callback, it should have the following signature: | ||
| 45 | + * | ||
| 46 | + * ~~~ | ||
| 47 | + * function ($model, $key, $index, $widget) | ||
| 48 | + * ~~~ | ||
| 49 | + */ | ||
| 50 | + public $itemView; | ||
| 51 | + /** | ||
| 52 | + * @var array additional parameters to be passed to [[itemView]] when it is being rendered. | ||
| 53 | + * This property is used only when [[itemView]] is a string representing a view name. | ||
| 54 | + */ | ||
| 55 | + public $viewParams = []; | ||
| 56 | + /** | ||
| 57 | + * @var string the HTML code to be displayed between any two consecutive items. | ||
| 58 | + */ | ||
| 59 | + public $separator = "\n"; | ||
| 60 | + /** | ||
| 61 | + * @var array the HTML attributes for the container tag of the list view. | ||
| 62 | + * The "tag" element specifies the tag name of the container element and defaults to "div". | ||
| 63 | + * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered. | ||
| 64 | + */ | ||
| 65 | + public $options = ['class' => 'list-view']; | ||
| 66 | + | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * Renders all data models. | ||
| 70 | + * @return string the rendering result | ||
| 71 | + */ | ||
| 72 | + public function renderItems() | ||
| 73 | + { | ||
| 74 | + $models = $this->dataProvider->getModels(); | ||
| 75 | + $keys = $this->dataProvider->getKeys(); | ||
| 76 | + $rows = []; | ||
| 77 | + foreach (array_values($models) as $index => $model) { | ||
| 78 | + $rows[] = $this->renderItem($model, $keys[$index], $index); | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + return implode($this->separator, $rows); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * Renders a single data model. | ||
| 86 | + * @param mixed $model the data model to be rendered | ||
| 87 | + * @param mixed $key the key value associated with the data model | ||
| 88 | + * @param integer $index the zero-based index of the data model in the model array returned by [[dataProvider]]. | ||
| 89 | + * @return string the rendering result | ||
| 90 | + */ | ||
| 91 | + public function renderItem($model, $key, $index) | ||
| 92 | + { | ||
| 93 | + if ($this->itemView === null) { | ||
| 94 | + $content = $key; | ||
| 95 | + } elseif (is_string($this->itemView)) { | ||
| 96 | + $content = $this->getView()->render($this->itemView, array_merge([ | ||
| 97 | + 'model' => $model, | ||
| 98 | + 'key' => $key, | ||
| 99 | + 'index' => $index, | ||
| 100 | + 'widget' => $this, | ||
| 101 | + ], $this->viewParams)); | ||
| 102 | + } else { | ||
| 103 | + $content = call_user_func($this->itemView, $model, $key, $index, $this); | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + return $content; | ||
| 107 | + | ||
| 108 | + } | ||
| 109 | +} |