Commit 376a557b3bec9660a690b106c375bc48de4a163c

Authored by Administrator
1 parent ecd4fb4c

09.02.16

common/behaviors/Slug.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\behaviors;
  4 +
  5 +use yii;
  6 +use yii\base\Behavior;
  7 +use yii\db\ActiveRecord;
  8 +use dosamigos\transliterator\TransliteratorHelper;
  9 +class Slug extends Behavior
  10 +{
  11 + public $in_attribute = 'name';
  12 + public $out_attribute = 'slug';
  13 + public $translit = true;
  14 +
  15 + public function events()
  16 + {
  17 + return [
  18 + ActiveRecord::EVENT_BEFORE_VALIDATE => 'getSlug'
  19 + ];
  20 + }
  21 +
  22 + public function getSlug( $event )
  23 + {
  24 + if ( empty( $this->owner->{$this->out_attribute} ) ) {
  25 + $this->owner->{$this->out_attribute} = $this->generateSlug( $this->owner->{$this->in_attribute} );
  26 + } else {
  27 + $this->owner->{$this->out_attribute} = $this->generateSlug( $this->owner->{$this->out_attribute} );
  28 + }
  29 + }
  30 +
  31 + private function generateSlug( $slug )
  32 + {
  33 + $slug = $this->slugify( $slug );
  34 + if ( $this->checkUniqueSlug( $slug ) ) {
  35 + return $slug;
  36 + } else {
  37 + for ( $suffix = 2; !$this->checkUniqueSlug( $new_slug = $slug . '-' . $suffix ); $suffix++ ) {}
  38 + return $new_slug;
  39 + }
  40 + }
  41 +
  42 + private function slugify( $slug )
  43 + {
  44 + if ( $this->translit ) {
  45 + return yii\helpers\Inflector::slug( TransliteratorHelper::process( $slug ), '-', true );
  46 + } else {
  47 + return $this->slug( $slug, '-', true );
  48 + }
  49 + }
  50 +
  51 + private function slug( $string, $replacement = '-', $lowercase = true )
  52 + {
  53 + $string = preg_replace( '/[^\p{L}\p{Nd}]+/u', $replacement, $string );
  54 + $string = trim( $string, $replacement );
  55 + return $lowercase ? strtolower( $string ) : $string;
  56 + }
  57 +
  58 + private function checkUniqueSlug( $slug )
  59 + {
  60 + $pk = $this->owner->primaryKey();
  61 + $pk = $pk[0];
  62 +
  63 + $condition = $this->out_attribute . ' = :out_attribute';
  64 + $params = [ ':out_attribute' => $slug ];
  65 + if ( !$this->owner->isNewRecord ) {
  66 + $condition .= ' and ' . $pk . ' != :pk';
  67 + $params[':pk'] = $this->owner->{$pk};
  68 + }
  69 +
  70 + return !$this->owner->find()
  71 + ->where( $condition, $params )
  72 + ->one();
  73 + }
  74 +
  75 +}
0 \ No newline at end of file 76 \ No newline at end of file
common/config/main.php
1 <?php 1 <?php
2 return [ 2 return [
  3 + 'timeZone' => 'Europe/Kiev',
3 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 4 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
4 'controllerMap' => [ 5 'controllerMap' => [
5 'elfinder' => [ 6 'elfinder' => [
common/models/Blog.php
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
30 return 'blog'; 30 return 'blog';
31 } 31 }
32 32
  33 +
33 /** 34 /**
34 * @inheritdoc 35 * @inheritdoc
35 */ 36 */
@@ -47,6 +48,12 @@ @@ -47,6 +48,12 @@
47 'updatedAtAttribute' => false, 48 'updatedAtAttribute' => false,
48 'value' => new Expression('NOW()'), 49 'value' => new Expression('NOW()'),
49 ], 50 ],
  51 + 'slug' => [
  52 + 'class' => 'common\behaviors\Slug',
  53 + 'in_attribute' => 'name',
  54 + 'out_attribute' => 'link',
  55 + 'translit' => true
  56 + ]
50 ]; 57 ];
51 } 58 }
52 59
common/models/User.php
@@ -380,6 +380,11 @@ @@ -380,6 +380,11 @@
380 ->viaTable('user_specialization', [ 'user_id' => 'id' ]); 380 ->viaTable('user_specialization', [ 'user_id' => 'id' ]);
381 } 381 }
382 382
  383 + public function getBlog()
  384 + {
  385 + return $this->hasMany(Blog::className(), [ 'user_id' => 'id' ]);
  386 + }
  387 +
383 public function getSpecializationInput() 388 public function getSpecializationInput()
384 { 389 {
385 return $this->getSpecializations() 390 return $this->getSpecializations()
common/models/UserInfo.php
@@ -79,7 +79,7 @@ class UserInfo extends \yii\db\ActiveRecord @@ -79,7 +79,7 @@ class UserInfo extends \yii\db\ActiveRecord
79 79
80 80
81 public function getLastVisit(){ 81 public function getLastVisit(){
82 - return \Yii::$app->formatter->asRelativeTime(date('Y-m-d h:m:s',strtotime($this->date_visit))); 82 + return \Yii::$app->formatter->asRelativeTime(new \DateTime($this->date_visit));
83 } 83 }
84 84
85 85
@@ -26,7 +26,8 @@ @@ -26,7 +26,8 @@
26 "nodge/yii2-eauth": "*", 26 "nodge/yii2-eauth": "*",
27 "yiisoft/yii2-imagine": "^2.0", 27 "yiisoft/yii2-imagine": "^2.0",
28 "mihaildev/yii2-elfinder": "^1.1", 28 "mihaildev/yii2-elfinder": "^1.1",
29 - "kartik-v/yii2-widget-colorinput": "*" 29 + "kartik-v/yii2-widget-colorinput": "*",
  30 + "2amigos/yii2-transliterator-helper": "*"
30 }, 31 },
31 "require-dev": { 32 "require-dev": {
32 "yiisoft/yii2-codeception": "*", 33 "yiisoft/yii2-codeception": "*",
@@ -4,10 +4,53 @@ @@ -4,10 +4,53 @@
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
7 - "hash": "f958ed2e8b3c8028fd675954db6672d5",  
8 - "content-hash": "d6ebcd3630219974938579b63b419fdd", 7 + "hash": "ccb155d1fc69bc6d276c50f0990fa1d7",
  8 + "content-hash": "ec129e7be083837c52b871f4c8ec7f56",
9 "packages": [ 9 "packages": [
10 { 10 {
  11 + "name": "2amigos/yii2-transliterator-helper",
  12 + "version": "dev-master",
  13 + "source": {
  14 + "type": "git",
  15 + "url": "https://github.com/2amigos/yii2-transliterator-helper.git",
  16 + "reference": "1e4284351f4250a8f2ce553ea4f420fcbb424309"
  17 + },
  18 + "dist": {
  19 + "type": "zip",
  20 + "url": "https://api.github.com/repos/2amigos/yii2-transliterator-helper/zipball/1e4284351f4250a8f2ce553ea4f420fcbb424309",
  21 + "reference": "1e4284351f4250a8f2ce553ea4f420fcbb424309",
  22 + "shasum": ""
  23 + },
  24 + "require": {
  25 + "yiisoft/yii2": "*"
  26 + },
  27 + "type": "yii2-extension",
  28 + "autoload": {
  29 + "psr-4": {
  30 + "dosamigos\\transliterator\\": ""
  31 + }
  32 + },
  33 + "notification-url": "https://packagist.org/downloads/",
  34 + "license": [
  35 + "BSD-3-Clause"
  36 + ],
  37 + "authors": [
  38 + {
  39 + "name": "Antonio Ramirez",
  40 + "email": "ramirez.cobos@gmail.com",
  41 + "homepage": "http://www.ramirezcobos.com"
  42 + }
  43 + ],
  44 + "description": "Transliterator Helper for Yii2.",
  45 + "keywords": [
  46 + "extension",
  47 + "helper",
  48 + "transliterator",
  49 + "yii"
  50 + ],
  51 + "time": "2014-06-23 14:01:30"
  52 + },
  53 + {
11 "name": "almasaeed2010/adminlte", 54 "name": "almasaeed2010/adminlte",
12 "version": "v2.3.2", 55 "version": "v2.3.2",
13 "source": { 56 "source": {
@@ -324,7 +367,7 @@ @@ -324,7 +367,7 @@
324 }, 367 },
325 "dist": { 368 "dist": {
326 "type": "zip", 369 "type": "zip",
327 - "url": "https://api.github.com/repos/cebe/markdown/zipball/35d47fe727a453a8aa5c6be7e627caad8f16d586", 370 + "url": "https://api.github.com/repos/cebe/markdown/zipball/e4499350d8a94c4c693a7e784295eff7a717ae67",
328 "reference": "d7b6f46cd423174c8a86c7f816dea45008dbf454", 371 "reference": "d7b6f46cd423174c8a86c7f816dea45008dbf454",
329 "shasum": "" 372 "shasum": ""
330 }, 373 },
@@ -1138,7 +1181,7 @@ @@ -1138,7 +1181,7 @@
1138 }, 1181 },
1139 "dist": { 1182 "dist": {
1140 "type": "zip", 1183 "type": "zip",
1141 - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/7ccbfdf4cfb0ce025e27455dc3e516af23eb2800", 1184 + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/1800d3840b098fc6e936852fa84b8c1b1a0a2e57",
1142 "reference": "7ccbfdf4cfb0ce025e27455dc3e516af23eb2800", 1185 "reference": "7ccbfdf4cfb0ce025e27455dc3e516af23eb2800",
1143 "shasum": "" 1186 "shasum": ""
1144 }, 1187 },
@@ -1278,12 +1321,12 @@ @@ -1278,12 +1321,12 @@
1278 "source": { 1321 "source": {
1279 "type": "git", 1322 "type": "git",
1280 "url": "https://github.com/yiisoft/yii2-composer.git", 1323 "url": "https://github.com/yiisoft/yii2-composer.git",
1281 - "reference": "574dcb1d101ae55be230e0c00a2428af6ec4c5c1" 1324 + "reference": "d33d1046a5951f2f7823fe343f28ddc58b3421a4"
1282 }, 1325 },
1283 "dist": { 1326 "dist": {
1284 "type": "zip", 1327 "type": "zip",
1285 "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/d33d1046a5951f2f7823fe343f28ddc58b3421a4", 1328 "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/d33d1046a5951f2f7823fe343f28ddc58b3421a4",
1286 - "reference": "574dcb1d101ae55be230e0c00a2428af6ec4c5c1", 1329 + "reference": "d33d1046a5951f2f7823fe343f28ddc58b3421a4",
1287 "shasum": "" 1330 "shasum": ""
1288 }, 1331 },
1289 "require": { 1332 "require": {
@@ -1317,7 +1360,7 @@ @@ -1317,7 +1360,7 @@
1317 "extension installer", 1360 "extension installer",
1318 "yii2" 1361 "yii2"
1319 ], 1362 ],
1320 - "time": "2015-12-01 20:06:03" 1363 + "time": "2016-02-06 01:03:32"
1321 }, 1364 },
1322 { 1365 {
1323 "name": "yiisoft/yii2-imagine", 1366 "name": "yiisoft/yii2-imagine",
@@ -1506,7 +1549,7 @@ @@ -1506,7 +1549,7 @@
1506 }, 1549 },
1507 "dist": { 1550 "dist": {
1508 "type": "zip", 1551 "type": "zip",
1509 - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/8d8e0e1a6151a46ea5cda344e2234b7225c61e7a", 1552 + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/ff1d463edb2c74e39f4ec76f7eb99fd47b237507",
1510 "reference": "b312ab9d0c446971069e22a524fec01c7cddc75e", 1553 "reference": "b312ab9d0c446971069e22a524fec01c7cddc75e",
1511 "shasum": "" 1554 "shasum": ""
1512 }, 1555 },
frontend/config/main.php
@@ -64,7 +64,9 @@ return [ @@ -64,7 +64,9 @@ 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/blog-view/<performer_id:[\w-]+>/<link:[\w-]+>' => 'performer/blog-view',
67 'performer/<action>/<performer_id:[\w-]+>' => 'performer/<action>', 68 'performer/<action>/<performer_id:[\w-]+>' => 'performer/<action>',
  69 +
68 ] 70 ]
69 ], 71 ],
70 ], 72 ],
frontend/controllers/PerformerController.php
1 <?php 1 <?php
2 namespace frontend\controllers; 2 namespace frontend\controllers;
3 3
  4 +use common\models\Blog;
4 use common\models\Fields; 5 use common\models\Fields;
5 use Yii; 6 use Yii;
  7 +use yii\data\ArrayDataProvider;
  8 +use yii\data\Pagination;
6 use yii\helpers\ArrayHelper; 9 use yii\helpers\ArrayHelper;
7 use yii\web\Controller; 10 use yii\web\Controller;
8 use common\models\User; 11 use common\models\User;
@@ -77,14 +80,42 @@ class PerformerController extends Controller @@ -77,14 +80,42 @@ class PerformerController extends Controller
77 public function actionBlogList($performer_id) 80 public function actionBlogList($performer_id)
78 { 81 {
79 $user = User::findOne($performer_id); 82 $user = User::findOne($performer_id);
  83 +
  84 + $query = Blog::find(['user_id'=>$performer_id]);
  85 +
  86 + $countQuery = clone $query;
  87 +
  88 + $pagination = new Pagination(['totalCount' => $countQuery->count(),
  89 + 'pageSize' => 5,
  90 + ]);
  91 +
  92 + $article = $query->offset($pagination->offset)
  93 + ->limit($pagination->limit)
  94 + ->all();
  95 +
  96 + $blog = new ArrayDataProvider([
  97 + 'allModels' => $article,
  98 + ]);
  99 +
  100 +
80 return $this->render('blog-list',[ 101 return $this->render('blog-list',[
81 - 'user' => $user 102 + 'user' => $user,
  103 + 'blog' => $blog,
  104 + 'pagination' => $pagination
82 ]); 105 ]);
83 } 106 }
84 107
85 - public function actionBlogView(/*$performer_id, $article_id*/) 108 + public function actionBlogView($performer_id, $link)
86 { 109 {
87 - return $this->render('blog-view'); 110 + $user = User::findOne($performer_id);
  111 + $article = Blog::findOne(['link'=>$link,'user_id'=>$performer_id]);
  112 +
  113 +
  114 + return $this->render('blog-view',[
  115 + 'user' => $user,
  116 + 'article' =>$article,
  117 +
  118 + ]);
88 } 119 }
89 120
90 public function actionReview($performer_id) 121 public function actionReview($performer_id)
frontend/views/accounts/_blog_form.php
@@ -43,18 +43,18 @@ @@ -43,18 +43,18 @@
43 </div> 43 </div>
44 44
45 45
46 -<?php /* 46 +
47 <?= ImageUploader::widget([ 47 <?= ImageUploader::widget([
48 'model'=> $blog, 48 'model'=> $blog,
49 'field'=>'cover', 49 'field'=>'cover',
50 - 'width'=>100,  
51 - 'height'=>100, 50 + 'width'=>340,
  51 + 'height'=>260,
52 'multi'=>false, 52 'multi'=>false,
53 'gallery' =>$blog->cover, 53 'gallery' =>$blog->cover,
54 'name' => 'Загрузить главное фото' 54 'name' => 'Загрузить главное фото'
55 ]); 55 ]);
56 ?> 56 ?>
57 - */ ?> 57 +
58 <div class="input-blocks-wrapper full-blocks"> 58 <div class="input-blocks-wrapper full-blocks">
59 <div class="admin-save-btn style"> 59 <div class="admin-save-btn style">
60 <?= Html::submitButton('Добавить', ['class' => 'input-blocks-wrapper button']) ?> 60 <?= Html::submitButton('Добавить', ['class' => 'input-blocks-wrapper button']) ?>
frontend/views/accounts/employment.php
@@ -6,7 +6,7 @@ use common\models\Job; @@ -6,7 +6,7 @@ use common\models\Job;
6 use yii\helpers\Html; 6 use yii\helpers\Html;
7 use yii\jui\DatePicker; 7 use yii\jui\DatePicker;
8 use yii\widgets\ActiveForm; 8 use yii\widgets\ActiveForm;
9 -//HUUIISAODASIDSIA 9 +
10 $this->title = 'Трудовой стаж'; 10 $this->title = 'Трудовой стаж';
11 $this->params['breadcrumbs'][] = $this->title; 11 $this->params['breadcrumbs'][] = $this->title;
12 ?> 12 ?>
@@ -144,7 +144,7 @@ $current = array_shift ($job); @@ -144,7 +144,7 @@ $current = array_shift ($job);
144 ?> 144 ?>
145 </div> 145 </div>
146 </div> 146 </div>
147 - <?= Html::button('Удалить', ['class' => 'remove_job_button']) ?> 147 +
148 </div> 148 </div>
149 <?php } ?> 149 <?php } ?>
150 150
@@ -154,26 +154,17 @@ $current = array_shift ($job); @@ -154,26 +154,17 @@ $current = array_shift ($job);
154 echo Html::submitButton('Обновить'); 154 echo Html::submitButton('Обновить');
155 $form->end (); 155 $form->end ();
156 ?> 156 ?>
157 -<script>  
158 - $(function() {  
159 - var regexp = /^[\w]+\[(\d+)\].*$/;  
160 - $(document).on('click', '#add_job_button', function() {  
161 - var inputs = $('.prev_job_inputs').last();  
162 - var name = $(inputs).find('input, textarea').first().attr('name');  
163 - var result = regexp.exec(name);  
164 - var lastindex;  
165 - if(result != null) {  
166 - lastindex = result[1];  
167 - } else {  
168 - lastindex = 1;  
169 - }  
170 - $.get('/accounts/get-form', { lastindex: lastindex }, function(data) {  
171 - $('.prev_job_container').append($(data).find('.ajax-loaded').first().html());  
172 - $(data).filter('script').appendTo('body'); 157 + <script>
  158 + $(function() {
  159 + var regexp = /^[\w]+\[(\d+)\].*$/;
  160 + $(document).on('click', '#add_job_button', function() {
  161 + var inputs = $('.prev_job_inputs').last();
  162 + var name = $(inputs).find('input, textarea').first().attr('name');
  163 + var lastindex = regexp.exec(name)[1];
  164 + $.get('/accounts/get-form', { lastindex: lastindex }, function(data) {
  165 + $('.prev_job_container').append($(data).find('.ajax-loaded').first().html());
  166 + $(data).filter('script').appendTo('body');
  167 + });
  168 + });
173 }); 169 });
174 - });  
175 - $(document).on('click', '.remove_job_button', function() {  
176 - $(this).parents('.prev_job_inputs').remove();  
177 - });  
178 - });  
179 -</script> 170 + </script>
frontend/views/performer/_blog_list_view.php 0 → 100644
  1 +<?php
  2 +use yii\helpers\Html;
  3 +use yii\helpers\StringHelper;
  4 +use yii\helpers\Url;
  5 +
  6 +?>
  7 +<div class="blog-post-wr">
  8 + <div class="blog-post-title style">
  9 + <?= Html::a($model->name, Url::toRoute(['performer/blog-view','performer_id'=>$this->params['user']->id,'link'=>$model->link]),['class'=>'blog-new-link']);?>
  10 + </div>
  11 + <div class="blog-post-icons-wr style">
  12 + <div class="blog-post-date">
  13 + <span></span><p><?= $model->date_add?></p>
  14 + </div>
  15 + <div class="blog-post-views">
  16 + <span></span><p><?= $model->view_count?></p>
  17 + </div>
  18 + <div class="blog-post-comm-num">
  19 + <span></span><p><?= $model->view_count?></p>
  20 + </div>
  21 + </div>
  22 + <div class="blog-post-content style">
  23 + <?= Html::a(Html::img($model->cover), Url::toRoute(['/performer/blog-view','performer_id'=>$this->params['user']->id,'link'=>$model->link]));?>
  24 + <?= StringHelper::byteSubstr($model->description, 0, 1500)?>
  25 + </div>
  26 + <?= Html::a('<span>Подробнее</span>', Url::toRoute(['performer/blog-view','performer_id'=>$this->params['user']->id,'link'=>$model->link]),['class'=>'blog-post-see-all style']);?>
  27 +</div>
0 \ No newline at end of file 28 \ No newline at end of file
frontend/views/performer/blog-list.php
1 <?php 1 <?php
2 2
3 use \yii\helpers\Html; 3 use \yii\helpers\Html;
  4 +use yii\widgets\LinkPager;
  5 +use yii\widgets\ListView;
4 6
5 /* @var $this yii\web\View */ 7 /* @var $this yii\web\View */
6 $this->params['user'] = $user; 8 $this->params['user'] = $user;
7 $this->title = 'My Yii Application'; 9 $this->title = 'My Yii Application';
8 ?> 10 ?>
9 <div class="performer-vacancy-vacant-title-reclam-wr style"> 11 <div class="performer-vacancy-vacant-title-reclam-wr style">
10 - <div class="blog-post-wr">  
11 - <div class="blog-post-title style"><p>Как обшить балкон вагонкой своими руками: пошаговая инструкция</p></div>  
12 - <div class="blog-post-icons-wr style">  
13 - <div class="blog-post-date">  
14 - <span></span><p>22.09.2015</p>  
15 - </div>  
16 - <div class="blog-post-views">  
17 - <span></span><p>240</p>  
18 - </div>  
19 - <div class="blog-post-comm-num">  
20 - <span></span><p>12</p>  
21 - </div>  
22 - </div>  
23 - <div class="blog-post-content style">  
24 - <img src="/images/blog/blog-post-img.jpg" alt=""/>  
25 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>  
26 - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно</p>  
27 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ. Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.</p>  
28 - </div>  
29 - <a href="#" class="blog-post-see-all style"><span>Подробнее</span></a>  
30 - </div>  
31 12
32 - <div class="blog-post-wr">  
33 - <div class="blog-post-title style"><p>Как обшить балкон вагонкой своими руками: пошаговая инструкция</p></div>  
34 - <div class="blog-post-icons-wr style">  
35 - <div class="blog-post-date">  
36 - <span></span><p>22.09.2015</p>  
37 - </div>  
38 - <div class="blog-post-views">  
39 - <span></span><p>240</p>  
40 - </div>  
41 - <div class="blog-post-comm-num">  
42 - <span></span><p>12</p>  
43 - </div>  
44 - </div>  
45 - <div class="blog-post-content style">  
46 - <img src="/images/blog/blog-post-img.jpg" alt=""/>  
47 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>  
48 - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно</p>  
49 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ. Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.</p>  
50 - </div>  
51 - <a href="#" class="blog-post-see-all style"><span>Подробнее</span></a>  
52 - </div>  
53 -  
54 - <div class="blog-post-wr">  
55 - <div class="blog-post-title style"><p>Как обшить балкон вагонкой своими руками: пошаговая инструкция</p></div>  
56 - <div class="blog-post-icons-wr style">  
57 - <div class="blog-post-date">  
58 - <span></span><p>22.09.2015</p>  
59 - </div>  
60 - <div class="blog-post-views">  
61 - <span></span><p>240</p>  
62 - </div>  
63 - <div class="blog-post-comm-num">  
64 - <span></span><p>12</p>  
65 - </div>  
66 - </div>  
67 - <div class="blog-post-content style">  
68 - <img src="/images/blog/blog-post-img.jpg" alt=""/>  
69 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>  
70 - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно</p>  
71 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне возможно выполнить своими силами — достаточно иметь в распоряжении необходимые инструменты и владеть базовыми навыками строительно-ремонтных работ. Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.</p>  
72 - </div>  
73 - <a href="#" class="blog-post-see-all style"><span>Подробнее</span></a>  
74 - </div> 13 + <?=
  14 + ListView::widget( [
  15 + 'dataProvider' => $blog,
  16 + 'itemView'=>'_blog_list_view',
  17 + 'summary'=>'',
  18 + ] );
  19 + ?>
75 </div> 20 </div>
76 <div class="navi-buttons-wr style"> 21 <div class="navi-buttons-wr style">
77 - <ul class="pagination">  
78 - <li><a href="#">1</a></li>  
79 - <li><a href="#">2</a></li>  
80 - <li><a href="#">3</a></li>  
81 - <li><a href="#">4</a></li>  
82 - <li><a href="#">5</a></li>  
83 - <li class="dots-next"><a href="#">...</a></li>  
84 - <li><a href="#">156</a></li>  
85 - </ul> 22 + <?=
  23 + LinkPager::widget([
  24 + 'pagination' => $pagination,
  25 + ]);
  26 + ?>
  27 +<!-- <ul class="pagination">-->
  28 +<!-- <li><a href="#">1</a></li>-->
  29 +<!-- <li><a href="#">2</a></li>-->
  30 +<!-- <li><a href="#">3</a></li>-->
  31 +<!-- <li><a href="#">4</a></li>-->
  32 +<!-- <li><a href="#">5</a></li>-->
  33 +<!-- <li class="dots-next"><a href="#">...</a></li>-->
  34 +<!-- <li><a href="#">156</a></li>-->
  35 +<!-- </ul>-->
86 </div> 36 </div>
87 37
frontend/views/performer/blog-view.php
@@ -2,58 +2,29 @@ @@ -2,58 +2,29 @@
2 use \yii\helpers\Html; 2 use \yii\helpers\Html;
3 3
4 /* @var $this yii\web\View */ 4 /* @var $this yii\web\View */
5 -$this->params['user'] = $user;  
6 - $this->title = 'My Yii Application'; 5 + $this->params['user'] = $user;
  6 +
  7 + $this->title = $article->name ;
7 ?> 8 ?>
8 <div class="performer-vacancy-vacant-title-reclam-wr style"> 9 <div class="performer-vacancy-vacant-title-reclam-wr style">
9 <div class="blog-post-wr"> 10 <div class="blog-post-wr">
10 - <div class="blog-post-title style"><p>Как обшить балкон вагонкой своими руками: пошаговая  
11 - инструкция</p></div> 11 + <div class="blog-post-title style"><p><?= $article->name ?></p></div>
12 <div class="blog-post-icons-wr style"> 12 <div class="blog-post-icons-wr style">
13 <div class="blog-post-date"> 13 <div class="blog-post-date">
14 <span></span> 14 <span></span>
15 - <p>22.09.2015</p> 15 + <p><?= $article->date_add?></p>
16 </div> 16 </div>
17 <div class="blog-post-views"> 17 <div class="blog-post-views">
18 <span></span> 18 <span></span>
19 - <p>240</p> 19 + <p><?= $article->view_count?></p>
20 </div> 20 </div>
21 <div class="blog-post-comm-num"> 21 <div class="blog-post-comm-num">
22 <span></span> 22 <span></span>
23 - <p>12</p> 23 + <p><?= $article->view_count?></p>
24 </div> 24 </div>
25 </div> 25 </div>
26 <div class="blog-post-content style"> 26 <div class="blog-post-content style">
27 - <img src="/images/blog/blog-post-img.jpg" alt=""/>  
28 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне  
29 - возможно выполнить своими силами — достаточно иметь в распоряжении необходимые  
30 - инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>  
31 - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из  
32 - плотно пригнанных элементов с качественно обработанной поверхностью. Толщина  
33 - евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880  
34 - мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки  
35 - вполне возможно выполнить своими силами — достаточно</p>  
36 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне  
37 - возможно выполнить своими силами — достаточно иметь в распоряжении необходимые  
38 - инструменты и владеть базовыми навыками строительно-ремонтных работ. Евровагонка —  
39 - удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно  
40 - пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки  
41 - составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.</p>  
42 -  
43 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне  
44 - возможно выполнить своими силами — достаточно иметь в распоряжении необходимые  
45 - инструменты и владеть базовыми навыками строительно-ремонтных работ.</p>  
46 - <p>Евровагонка — удобная в монтаже фасонная доска, которая позволяет создать обшивку из  
47 - плотно пригнанных элементов с качественно обработанной поверхностью. Толщина  
48 - евровагонки составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880  
49 - мм.Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки  
50 - вполне возможно выполнить своими силами — достаточно</p>  
51 - <p>Балкон, обшитый вагонкой, выглядит аккуратно, стильно и уютно. Монтаж обшивки вполне  
52 - возможно выполнить своими силами — достаточно иметь в распоряжении необходимые  
53 - инструменты и владеть базовыми навыками строительно-ремонтных работ. Евровагонка —  
54 - удобная в монтаже фасонная доска, которая позволяет создать обшивку из плотно  
55 - пригнанных элементов с качественно обработанной поверхностью. Толщина евровагонки  
56 - составляет 125 мм, общая ширина (с гребнем) 960 мм, рабочая ширина 880 мм.</p> 27 + <?= $article->description ?>
57 </div> 28 </div>
58 </div> 29 </div>
59 -</div>  
60 \ No newline at end of file 30 \ No newline at end of file
  31 +</div>
frontend/views/performer/common.php
@@ -131,22 +131,25 @@ $this-&gt;title = &#39;My Yii Application&#39;; @@ -131,22 +131,25 @@ $this-&gt;title = &#39;My Yii Application&#39;;
131 <div class="proektant-profile-sidebar-right"> 131 <div class="proektant-profile-sidebar-right">
132 <div class="style"> 132 <div class="style">
133 <div class="profile-phone-site style"> 133 <div class="profile-phone-site style">
134 - <div class="style"> 134 +
135 <?php foreach( $phones as $phone):?> 135 <?php foreach( $phones as $phone):?>
136 - <div class="profile-phone">  
137 - <img src="/images/ico-phone.png" alt=""/>  
138 - <span><?= $phone['phone'] ?></span>  
139 - </div> 136 + <div class="style">
  137 + <div class="profile-phone">
  138 + <img src="/images/ico-phone.png" alt=""/>
  139 + <span><?= $phone['phone'] ?></span>
  140 + </div>
  141 + </div>
140 <?php endforeach; ?> 142 <?php endforeach; ?>
141 - </div>  
142 - <div class="style"> 143 +
143 <?php foreach( $sites as $site):?> 144 <?php foreach( $sites as $site):?>
144 - <div class="profile-site">  
145 - <img src="/images/ico-site.png" alt=""/>  
146 - <a href="#" target="_blank">Сайт</a> 145 + <div class="style">
  146 + <div class="profile-site">
  147 + <img src="/images/ico-site.png" alt=""/>
  148 + <a href="#" target="_blank">Сайт</a>
  149 + </div>
147 </div> 150 </div>
148 <?php endforeach; ?> 151 <?php endforeach; ?>
149 - </div> 152 +
150 </div> 153 </div>
151 <div class="profile-features style"> 154 <div class="profile-features style">
152 <ul> 155 <ul>
frontend/web/css/style.css
@@ -1937,7 +1937,7 @@ input[type=file]::-webkit-file-upload-button { @@ -1937,7 +1937,7 @@ input[type=file]::-webkit-file-upload-button {
1937 margin-top: 9px; 1937 margin-top: 9px;
1938 } 1938 }
1939 .blog-post-date { 1939 .blog-post-date {
1940 - width: 97px; 1940 + width: 140px;
1941 height: 100%; 1941 height: 100%;
1942 float: left; 1942 float: left;
1943 } 1943 }
@@ -5492,4 +5492,4 @@ ul.menu-admin li.logout-li, ul.menu-admin li.logout-li a, ul.menu-admin li:last- @@ -5492,4 +5492,4 @@ ul.menu-admin li.logout-li, ul.menu-admin li.logout-li a, ul.menu-admin li:last-
5492 } 5492 }
5493 .line-btn-fix button{line-height: normal !important;} 5493 .line-btn-fix button{line-height: normal !important;}
5494 a.blog-new-link{font-size: 18px !important; color: inherit !important; text-decoration: none!important;} 5494 a.blog-new-link{font-size: 18px !important; color: inherit !important; text-decoration: none!important;}
5495 -a.blog-new-link:hover{text-decoration: underline !important;}  
5496 \ No newline at end of file 5495 \ No newline at end of file
  5496 +a.blog-new-link:hover{text-decoration: underline !important;}