Commit 376a557b3bec9660a690b106c375bc48de4a163c
1 parent
ecd4fb4c
09.02.16
Showing
16 changed files
with
272 additions
and
165 deletions
Show diff stats
| 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
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 |
composer.json
| @@ -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": "*", |
composer.lock
| @@ -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> |
| 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->title = 'My Yii Application'; | @@ -131,22 +131,25 @@ $this->title = 'My Yii Application'; | ||
| 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;} |