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 76 \ No newline at end of file
... ...
common/config/main.php
1 1 <?php
2 2 return [
  3 + 'timeZone' => 'Europe/Kiev',
3 4 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
4 5 'controllerMap' => [
5 6 'elfinder' => [
... ...
common/models/Blog.php
... ... @@ -30,6 +30,7 @@
30 30 return 'blog';
31 31 }
32 32  
  33 +
33 34 /**
34 35 * @inheritdoc
35 36 */
... ... @@ -47,6 +48,12 @@
47 48 'updatedAtAttribute' => false,
48 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 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 388 public function getSpecializationInput()
384 389 {
385 390 return $this->getSpecializations()
... ...
common/models/UserInfo.php
... ... @@ -79,7 +79,7 @@ class UserInfo extends \yii\db\ActiveRecord
79 79  
80 80  
81 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  
... ...
composer.json
... ... @@ -26,7 +26,8 @@
26 26 "nodge/yii2-eauth": "*",
27 27 "yiisoft/yii2-imagine": "^2.0",
28 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 32 "require-dev": {
32 33 "yiisoft/yii2-codeception": "*",
... ...
composer.lock
... ... @@ -4,10 +4,53 @@
4 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 5 "This file is @generated automatically"
6 6 ],
7   - "hash": "f958ed2e8b3c8028fd675954db6672d5",
8   - "content-hash": "d6ebcd3630219974938579b63b419fdd",
  7 + "hash": "ccb155d1fc69bc6d276c50f0990fa1d7",
  8 + "content-hash": "ec129e7be083837c52b871f4c8ec7f56",
9 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 54 "name": "almasaeed2010/adminlte",
12 55 "version": "v2.3.2",
13 56 "source": {
... ... @@ -324,7 +367,7 @@
324 367 },
325 368 "dist": {
326 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 371 "reference": "d7b6f46cd423174c8a86c7f816dea45008dbf454",
329 372 "shasum": ""
330 373 },
... ... @@ -1138,7 +1181,7 @@
1138 1181 },
1139 1182 "dist": {
1140 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 1185 "reference": "7ccbfdf4cfb0ce025e27455dc3e516af23eb2800",
1143 1186 "shasum": ""
1144 1187 },
... ... @@ -1278,12 +1321,12 @@
1278 1321 "source": {
1279 1322 "type": "git",
1280 1323 "url": "https://github.com/yiisoft/yii2-composer.git",
1281   - "reference": "574dcb1d101ae55be230e0c00a2428af6ec4c5c1"
  1324 + "reference": "d33d1046a5951f2f7823fe343f28ddc58b3421a4"
1282 1325 },
1283 1326 "dist": {
1284 1327 "type": "zip",
1285 1328 "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/d33d1046a5951f2f7823fe343f28ddc58b3421a4",
1286   - "reference": "574dcb1d101ae55be230e0c00a2428af6ec4c5c1",
  1329 + "reference": "d33d1046a5951f2f7823fe343f28ddc58b3421a4",
1287 1330 "shasum": ""
1288 1331 },
1289 1332 "require": {
... ... @@ -1317,7 +1360,7 @@
1317 1360 "extension installer",
1318 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 1366 "name": "yiisoft/yii2-imagine",
... ... @@ -1506,7 +1549,7 @@
1506 1549 },
1507 1550 "dist": {
1508 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 1553 "reference": "b312ab9d0c446971069e22a524fec01c7cddc75e",
1511 1554 "shasum": ""
1512 1555 },
... ...
frontend/config/main.php
... ... @@ -64,7 +64,9 @@ return [
64 64 'showScriptName' => false,
65 65 'rules' => [
66 66 'landing/<view:[\w-]+>' => 'landing/view',
  67 + 'performer/blog-view/<performer_id:[\w-]+>/<link:[\w-]+>' => 'performer/blog-view',
67 68 'performer/<action>/<performer_id:[\w-]+>' => 'performer/<action>',
  69 +
68 70 ]
69 71 ],
70 72 ],
... ...
frontend/controllers/PerformerController.php
1 1 <?php
2 2 namespace frontend\controllers;
3 3  
  4 +use common\models\Blog;
4 5 use common\models\Fields;
5 6 use Yii;
  7 +use yii\data\ArrayDataProvider;
  8 +use yii\data\Pagination;
6 9 use yii\helpers\ArrayHelper;
7 10 use yii\web\Controller;
8 11 use common\models\User;
... ... @@ -77,14 +80,42 @@ class PerformerController extends Controller
77 80 public function actionBlogList($performer_id)
78 81 {
79 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 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 121 public function actionReview($performer_id)
... ...
frontend/views/accounts/_blog_form.php
... ... @@ -43,18 +43,18 @@
43 43 </div>
44 44  
45 45  
46   -<?php /*
  46 +
47 47 <?= ImageUploader::widget([
48 48 'model'=> $blog,
49 49 'field'=>'cover',
50   - 'width'=>100,
51   - 'height'=>100,
  50 + 'width'=>340,
  51 + 'height'=>260,
52 52 'multi'=>false,
53 53 'gallery' =>$blog->cover,
54 54 'name' => 'Загрузить главное фото'
55 55 ]);
56 56 ?>
57   - */ ?>
  57 +
58 58 <div class="input-blocks-wrapper full-blocks">
59 59 <div class="admin-save-btn style">
60 60 <?= Html::submitButton('Добавить', ['class' => 'input-blocks-wrapper button']) ?>
... ...
frontend/views/accounts/employment.php
... ... @@ -6,7 +6,7 @@ use common\models\Job;
6 6 use yii\helpers\Html;
7 7 use yii\jui\DatePicker;
8 8 use yii\widgets\ActiveForm;
9   -//HUUIISAODASIDSIA
  9 +
10 10 $this->title = 'Трудовой стаж';
11 11 $this->params['breadcrumbs'][] = $this->title;
12 12 ?>
... ... @@ -144,7 +144,7 @@ $current = array_shift ($job);
144 144 ?>
145 145 </div>
146 146 </div>
147   - <?= Html::button('Удалить', ['class' => 'remove_job_button']) ?>
  147 +
148 148 </div>
149 149 <?php } ?>
150 150  
... ... @@ -154,26 +154,17 @@ $current = array_shift ($job);
154 154 echo Html::submitButton('Обновить');
155 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 28 \ No newline at end of file
... ...
frontend/views/performer/blog-list.php
1 1 <?php
2 2  
3 3 use \yii\helpers\Html;
  4 +use yii\widgets\LinkPager;
  5 +use yii\widgets\ListView;
4 6  
5 7 /* @var $this yii\web\View */
6 8 $this->params['user'] = $user;
7 9 $this->title = 'My Yii Application';
8 10 ?>
9 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 20 </div>
76 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 36 </div>
87 37  
... ...
frontend/views/performer/blog-view.php
... ... @@ -2,58 +2,29 @@
2 2 use \yii\helpers\Html;
3 3  
4 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 9 <div class="performer-vacancy-vacant-title-reclam-wr style">
9 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 12 <div class="blog-post-icons-wr style">
13 13 <div class="blog-post-date">
14 14 <span></span>
15   - <p>22.09.2015</p>
  15 + <p><?= $article->date_add?></p>
16 16 </div>
17 17 <div class="blog-post-views">
18 18 <span></span>
19   - <p>240</p>
  19 + <p><?= $article->view_count?></p>
20 20 </div>
21 21 <div class="blog-post-comm-num">
22 22 <span></span>
23   - <p>12</p>
  23 + <p><?= $article->view_count?></p>
24 24 </div>
25 25 </div>
26 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 28 </div>
58 29 </div>
59   -</div>
60 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 131 <div class="proektant-profile-sidebar-right">
132 132 <div class="style">
133 133 <div class="profile-phone-site style">
134   - <div class="style">
  134 +
135 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 142 <?php endforeach; ?>
141   - </div>
142   - <div class="style">
  143 +
143 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 150 </div>
148 151 <?php endforeach; ?>
149   - </div>
  152 +
150 153 </div>
151 154 <div class="profile-features style">
152 155 <ul>
... ...
frontend/web/css/style.css
... ... @@ -1937,7 +1937,7 @@ input[type=file]::-webkit-file-upload-button {
1937 1937 margin-top: 9px;
1938 1938 }
1939 1939 .blog-post-date {
1940   - width: 97px;
  1940 + width: 140px;
1941 1941 height: 100%;
1942 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 5492 }
5493 5493 .line-btn-fix button{line-height: normal !important;}
5494 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 5495 \ No newline at end of file
  5496 +a.blog-new-link:hover{text-decoration: underline !important;}
... ...