Commit c06c80c7 authored by Олег Гиммельшпах's avatar Олег Гиммельшпах

Merge branch 'master' of git.task-on.com:ktask/task-on.com

# Conflicts:
#	common/modules/blog/controllers/PostController.php
parents 4ee4b3de a5dece2f
...@@ -19,7 +19,7 @@ class GeneratorAsset extends AssetBundle ...@@ -19,7 +19,7 @@ class GeneratorAsset extends AssetBundle
'css/style_add_22.05.16.css', 'css/style_add_22.05.16.css',
]; ];
public $js = [ public $js = [
// 'js/generator.js', 'js/generator.js',
]; ];
public $depends = [ public $depends = [
'yii\web\JqueryAsset', 'yii\web\JqueryAsset',
......
/** /**
* Created by andre on 21.06.2016. * Created by andre on 21.06.2016.
*/ */
$('form.bids-form').on('beforeSubmit', function(e) { $('.checkbox_btn').on('change', function(e) {
var form = $(this), xhr = new XMLHttpRequest, filebool = false, file, data = new FormData();
var $this = $(this);
form.find('input, textarea').each(function(){ var action = $this.attr("action");
data.append($(this).attr('name'), $(this).val());
}); $.ajax({
type: "get",
if(form.find('input[type=file]').length) { url: action,
file = form.find('input[type=file]')[0].files[0]; success: function(msg){
filebool = !filebool; $this.prop("checked", msg);
data.append("Bid[file]", file);
} var action_form = $this.closest('form').attr('action');
xhr.open("POST", form.attr('action'), true); $.ajax({
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); type: "post",
url: action_form,
xhr.send(data); success: function(msg){
$('section.blog article').detach();
xhr.onreadystatechange = function() $('section.blog h1').after(msg.posts);
{ $('section.blog .loaded').html('');
if (xhr.readyState == 4){ }
try
{
var response = JSON.parse(xhr.responseText);
}
catch(e)
{
var response = xhr.responseText;
}
form.find('.has-error').removeClass('has-error');
if(response.success)
{
if(form.find('.message-box').length > 0)
{
form.find('.message-box').fadeIn('fast');
form.find('.content').css('visibility','hidden');
setTimeout(function(){
form.find('.message-box').fadeOut('fast');
form.find('.content').css('visibility','visible');
}, 2000);
}
form.find('input:not(.not_clear), textarea').val('');
form.find('#files-zone').html('');
$('.dz-preview.dz-processing').remove();
dataLayer.push({
'event': 'UA_event',
'Catagory': form.data('tag'),
'Action': form.data('title'),
'Label': 'Успешно'
}); });
}
else
{
errors = [];
$.each(response, function(key, value) {
form.find('.field-'+key).addClass('has-error');
errors = errors.concat(value);
});
dataLayer.push({
'event': 'UA_event',
'Catagory': 'Ошибки',
'Action': form.data('form'),
'Label': errors
});
}
} }
} });
}).on('submit', function(e){ })
return false; \ No newline at end of file
});
\ No newline at end of file
...@@ -25,8 +25,10 @@ class PostController extends BaseController ...@@ -25,8 +25,10 @@ class PostController extends BaseController
'Load' => 'Подгрузка записей', 'Load' => 'Подгрузка записей',
'Tag' => 'Просмотр тега', 'Tag' => 'Просмотр тега',
'View' => 'Просмотр записи', 'View' => 'Просмотр записи',
'Send-article' => 'Послать статью', 'Tags'=>'',
'Tags'=>'' 'Send-article' => 'Послать статью',
'Set-cookie' => 'Установить куки',
'Tag-index' => 'Перезагрузка статей с учетом тэгов',
]; ];
} }
...@@ -50,7 +52,14 @@ class PostController extends BaseController ...@@ -50,7 +52,14 @@ class PostController extends BaseController
{ {
$this->meta_title = Yii::t('blog', 'Art Project Blog'); $this->meta_title = Yii::t('blog', 'Art Project Blog');
$query = Post::find()->where(['active' => 1])->limit(Post::PAGE_SIZE)->orderBy('created_at DESC'); $tag = $this->getCookie();
$query = Post::find()->where(['active' => 1])->limit(Post::PAGE_SIZE)->orderBy(Post::tableName().'.created_at DESC');
if(count($tag))
{
$query = $query->joinWith('postTagAssigns')->andWhere([PostTagAssign::tableName().'.tag_id' => $tag]);
}
return $this->render('index', [ return $this->render('index', [
'models' => $query->all(), 'models' => $query->all(),
...@@ -97,7 +106,7 @@ class PostController extends BaseController ...@@ -97,7 +106,7 @@ class PostController extends BaseController
'model' => $model, 'model' => $model,
]); ]);
} }
/** /**
* @return mixed * @return mixed
*/ */
...@@ -106,13 +115,13 @@ class PostController extends BaseController ...@@ -106,13 +115,13 @@ class PostController extends BaseController
if(Yii::$app->request->isAjax) if(Yii::$app->request->isAjax)
{ {
$offset = Yii::$app->request->post('offset'); $offset = Yii::$app->request->post('offset');
$tag = Yii::$app->request->post('tag'); $tag = $this->getCookie();
Yii::$app->response->format = Response::FORMAT_JSON; Yii::$app->response->format = Response::FORMAT_JSON;
$query = Post::find()->where(['active' => 1])->orderBy(Post::tableName().'.created_at DESC'); $query = Post::find()->where(['active' => 1])->orderBy(Post::tableName().'.created_at DESC');
if($tag) if(count($tag))
{ {
$query = $query->joinWith('postTagAssigns')->andWhere([PostTagAssign::tableName().'.tag_id' => $tag]); $query = $query->joinWith('postTagAssigns')->andWhere([PostTagAssign::tableName().'.tag_id' => $tag]);
} }
...@@ -200,4 +209,73 @@ class PostController extends BaseController ...@@ -200,4 +209,73 @@ class PostController extends BaseController
throw new NotFoundHttpException('The requested page does not exist.'); throw new NotFoundHttpException('The requested page does not exist.');
} }
} }
/**
* Запишет или удалит хэштэг в куки
* используется на странице блога в списке категорий, для отбора статей по хэштегам
*/
public function actionSetCookie($hashtag)
{
$session = Yii::$app->session;
if($session->isActive) {
$cookie = $session->get('blog_hashtag');
$cookie = $cookie ? $cookie : [];
$key = array_search($hashtag, $cookie);
if ($key !== false) {
unset($cookie[$key]);
$session->set('blog_hashtag', $cookie);
return false;
}
else {
$cookie[] = $hashtag;
$session->set('blog_hashtag', $cookie);
return true;
}
}
}
public function getCookie()
{
$session = Yii::$app->session;
if($session->isActive)
{
$cookie = $session->get('blog_hashtag');
}
return empty($cookie) ? [] : $cookie ;
}
/**
* @param $url
* @return string
* @throws NotFoundHttpException
*
* редерит список статей блога с отбором по хэштегам
*/
public function actionTagIndex()
{
$tag = $this->getCookie();
Yii::$app->response->format = Response::FORMAT_JSON;
$query = Post::find()->where(['active' => 1])->orderBy(Post::tableName().'.created_at DESC');
if(count($tag))
{
$query = $query->joinWith('postTagAssigns')->andWhere([PostTagAssign::tableName().'.tag_id' => $tag]);
}
$models = $query->limit(Post::PAGE_SIZE)->offset($offset)->all();
$count = $query->count();
return [
'posts' => $this->renderPartial('_load', [
'models' => $models,
]),
'count' => (int)$count,
];
}
} }
...@@ -20,17 +20,18 @@ use common\modules\languages\models\Languages; ...@@ -20,17 +20,18 @@ use common\modules\languages\models\Languages;
->currentLang() ->currentLang()
->orderBy('RAND()') ->orderBy('RAND()')
->limit(7) ->limit(7)
->orderBy('name')
->all(); ->all();
?> ?>
<?php if($tags) : ?> <?php if($tags) : ?>
<div class="sidebar_module"> <div class="sidebar_module">
<h2><?=\Yii::t('blog', 'Categories');?></h2> <h2><?=\Yii::t('blog', 'Categories');?></h2>
<!-- add 22.05.16 --> <!-- add 22.05.16 -->
<div class="categories_form"> <div class="categories_form">
<form> <form action="/blog/post/tag-index">
<? $cookie = \Yii::$app->controller->getCookie() ?>
<?php foreach ($tags as $tag) : ?> <?php foreach ($tags as $tag) : ?>
<input type="checkbox" class="checkbox_btn" id="checkbox-<?= $tag->id ?>"> <input <?= in_array($tag->id, $cookie) ? "checked" : "" ?> action="<?= \yii\helpers\Url::to(["/blog/post/set-cookie", "hashtag" => $tag->id]) ?>" type="checkbox" class="checkbox_btn" id="checkbox-<?= $tag->id ?>">
<label for="checkbox-<?= $tag->id ?>"><?= $tag->name ?></label> <label for="checkbox-<?= $tag->id ?>"><?= $tag->name ?></label>
<?php endforeach; ?> <?php endforeach; ?>
</form> </form>
......
...@@ -49,4 +49,4 @@ $this->registerJs("initScrollPager()", yii\web\View::POS_END); ...@@ -49,4 +49,4 @@ $this->registerJs("initScrollPager()", yii\web\View::POS_END);
<?=$this->render('_modals')?> <?=$this->render('_modals')?>
<?=$this->render('@app/views/layouts/footer');?> <?=$this->render('@app/views/layouts/footer');?>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment