1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-03 06:55:03 +03:00
This commit is contained in:
Denis Shakhov 2013-04-12 10:57:19 +07:00
commit f11c03846c
12 changed files with 200 additions and 7 deletions

View file

@ -63,6 +63,7 @@ class ActionAjax extends Action {
$this->AddEventPreg('/^blogs$/i','/^top$/','EventBlogsTop');
$this->AddEventPreg('/^blogs$/i','/^self$/','EventBlogsSelf');
$this->AddEventPreg('/^blogs$/i','/^join$/','EventBlogsJoin');
$this->AddEventPreg('/^blogs$/i','/^get-by-category$/','EventBlogsGetByCategory');
$this->AddEventPreg('/^preview$/i','/^text$/','EventPreviewText');
$this->AddEventPreg('/^preview$/i','/^topic/','EventPreviewTopic');
@ -945,6 +946,54 @@ class ActionAjax extends Action {
return;
}
}
/**
* Загружает список блогов конкретной категории
*/
protected function EventBlogsGetByCategory() {
if (!($oCategory=$this->Blog_GetCategoryById(getRequestStr('id')))) {
$this->Message_AddError($this->Lang_Get('system_error'),$this->Lang_Get('error'));
return;
}
/**
* Получаем все дочерние категории
*/
$aCategoriesId=$this->Blog_GetChildrenCategoriesById($oCategory->getId(),true);
$aCategoriesId[]=$oCategory->getId();
/**
* Формируем фильтр для получения списка блогов
*/
$aFilter=array(
'exclude_type' => 'personal',
'category_id' => $aCategoriesId
);
/**
* Получаем список блогов(все по фильтру)
*/
$aResult=$this->Blog_GetBlogsByFilter($aFilter,array('blog_title'=>'asc'),1,PHP_INT_MAX);
$aBlogs=$aResult['collection'];
/**
* Получаем список блогов и формируем ответ
*/
if ($aBlogs) {
$aResult=array();
foreach($aBlogs as $oBlog) {
$aResult[]=array(
'id' => $oBlog->getId(),
'title' => htmlspecialchars($oBlog->getTitle()),
'category_id' => $oBlog->getCategoryId(),
'type' => $oBlog->getType(),
'rating' => $oBlog->getRating(),
'url' => $oBlog->getUrl(),
'url_full' => $oBlog->getUrlFull(),
);
}
$this->Viewer_AssignAjax('aBlogs',$aResult);
} else {
$this->Message_AddErrorSingle($this->Lang_Get('blog_by_category_empty'),$this->Lang_Get('attention'));
return;
}
}
/**
* Предпросмотр топика
*

View file

@ -37,6 +37,10 @@ class ActionBlogs extends Action {
'blog_join','blog_leave'
));
$this->sPageRoot=Router::GetPath('blogs');
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_menu_all_list'));
}
/**
* Регистрируем евенты
@ -104,6 +108,7 @@ class ActionBlogs extends Action {
* Получаем текущую категорию
*/
if ($oCategory=$this->Blog_GetCategoryByUrlFull($sUrlFull)) {
$this->Viewer_AddHtmlTitle($oCategory->getTitle());
/**
* Получаем все дочерние категории
*/
@ -171,10 +176,6 @@ class ActionBlogs extends Action {
$this->Viewer_Assign("sBlogOrder",htmlspecialchars($sOrder));
$this->Viewer_Assign("sBlogOrderWay",htmlspecialchars($sOrderWay));
$this->Viewer_Assign("sBlogOrderWayNext",htmlspecialchars($sOrderWay=='desc' ? 'asc' : 'desc'));
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('blog_menu_all_list'));
/**
* Устанавливаем шаблон вывода
*/

View file

@ -21,11 +21,14 @@
* @package blocks
* @since 1.1
*/
class BlockCategoryBlog extends Block {
class BlockBlogCategory extends Block {
/**
* Запуск обработки
*/
public function Exec() {
if (!Config::Get('module.blog.category_allow')) {
return;
}
$aCategories=$this->Blog_GetCategoriesTree();
$aBlogsAll=$this->Blog_GetBlogsByFilter(array('exclude_type' => 'personal'),array(),1,1,array());
$this->Viewer_Assign("aBlogCategories",$aCategories);

View file

@ -0,0 +1,58 @@
<?php
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
/**
* Обрабатывает блок с навигацией по блогам
*
* @package blocks
* @since 1.1
*/
class BlockBlogNavigator extends Block {
/**
* Запуск обработки
*/
public function Exec() {
if (!Config::Get('module.blog.category_allow')) {
return;
}
$aCategories=$this->Blog_GetCategoriesTree();
$this->Viewer_Assign("aNavigatorBlogCategories",$aCategories);
/**
* Получаем список блогов для первой категории для прогрузки в шаблон
*/
if ($oCategory=array_shift($aCategories)) {
/**
* Получаем все дочерние категории
*/
$aCategoriesId=$this->Blog_GetChildrenCategoriesById($oCategory->getId(),true);
$aCategoriesId[]=$oCategory->getId();
/**
* Формируем фильтр для получения списка блогов
*/
$aFilter=array(
'exclude_type' => 'personal',
'category_id' => $aCategoriesId
);
/**
* Получаем список блогов(все по фильтру)
*/
$aResult=$this->Blog_GetBlogsByFilter($aFilter,array('blog_title'=>'asc'),1,PHP_INT_MAX);
$this->Viewer_Assign("aNavigatorBlogs",$aResult['collection']);
}
}
}
?>

View file

@ -424,7 +424,10 @@ $config['block']['rule_index_blog'] = array(
),
'clear' => false,
);
$config['block']['rule_index'] = array(
'action' => array( 'index' ),
'blocks' => array( 'right' => array('blogNavigator'=>array('priority'=>500)) ),
);
$config['block']['rule_topic_type'] = array(
'action' => array(
'link' => array('add','edit'),
@ -452,7 +455,7 @@ $config['block']['rule_tag'] = array(
);
$config['block']['rule_blogs'] = array(
'action' => array( 'blogs' ),
'blocks' => array( 'right' => array('categoryBlog') ),
'blocks' => array( 'right' => array('blogCategory') ),
);
$config['block']['userfeedBlogs'] = array(

View file

@ -177,5 +177,30 @@ ls.blog = (function ($) {
return false;
};
this.loadBlogsByCategory = function(id) {
var url = aRouter['ajax']+'blogs/get-by-category/';
var params = {id: id};
ls.hook.marker('loadBlogsByCategoryBefore');
ls.ajax(url, params, function(result){
var $blogs=$('#blog-navigator-blog').empty();
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
$(result.aBlogs).each(function(k,v){
$('<option value="'+v.id+'" data-url="'+v.url_full+'">'+v.title+'</option>').appendTo($blogs);
});
ls.hook.run('ls_blog_load_blogs_by_category_after',[id,result]);
}
});
};
this.navigatorGoSelectBlog = function() {
var $sel=$('#blog-navigator-blog').find('option:selected');
if ($sel.length) {
window.location.href=$sel.data('url');
}
};
return this;
}).call(ls.blog || {},jQuery);

View file

@ -41,6 +41,7 @@ return array(
'blog_about' => 'About this blog',
'blog_expand_info' => 'More &darr;',
'blog_fold_info' => 'Fold &uarr;',
'blog_by_category_empty' => 'In this category, no blogs',
/**
* Declensions
*/
@ -768,6 +769,8 @@ return array(
'block_friends_empty' => 'Empty friends list',
'block_category_blog' => 'Categories',
'block_category_blog_all' => 'All',
'block_blog_navigator' => 'Navigation for blogs',
'block_blog_navigator_button' => 'View',
'site_history_back' => 'Go back',
'site_go_main' => 'Go to the main page',
/**

View file

@ -41,6 +41,7 @@ return array(
'blog_about' => 'О блоге',
'blog_expand_info' => 'Подробнее &darr;',
'blog_fold_info' => 'Свернуть &uarr;',
'blog_by_category_empty' => 'В данной категории нет блогов',
/**
* Declensions
*/
@ -770,6 +771,8 @@ return array(
'block_friends_empty' => 'Список ваших друзей пуст',
'block_category_blog' => 'Категории',
'block_category_blog_all' => 'Все',
'block_blog_navigator' => 'Навигация по блогам',
'block_blog_navigator_button' => 'Смотреть',
'site_history_back' => 'Вернуться назад',
'site_go_main' => 'перейти на главную',
/**

View file

@ -0,0 +1,24 @@
{if $aNavigatorBlogCategories}
<section class="block block-type-blog-categories">
<header class="block-header">
<h3>{$aLang.block_blog_navigator}</h3>
</header>
<div class="block-content">
<select id="blog-navigator-category" class="width-full" onchange="ls.blog.loadBlogsByCategory($(this).val());">
{foreach from=$aNavigatorBlogCategories item=oCategoryItem}
<option style="margin-left: {$oCategoryItem->getLevel()*20}px;" value="{$oCategoryItem->getId()}">{$oCategoryItem->getTitle()|escape:'html'}</option>
{/foreach}
</select>
<br/><br/>
<select id="blog-navigator-blog" class="width-full">
{foreach from=$aNavigatorBlogs item=oBlogItem}
<option value="{$oBlogItem->getId()}" data-url="{$oBlogItem->getUrlFull()}">{$oBlogItem->getTitle()|escape:'html'}</option>
{/foreach}
</select>
<br/><br/>
<button onclick="ls.blog.navigatorGoSelectBlog();" class="button">{$aLang.block_blog_navigator_button}</button>
</div>
</section>
{/if}

View file

@ -0,0 +1,24 @@
{if $aNavigatorBlogCategories}
<section class="block block-type-blog-categories">
<header class="block-header">
<h3>{$aLang.block_blog_navigator}</h3>
</header>
<div class="block-content">
<select id="blog-navigator-category" class="width-full" onchange="ls.blog.loadBlogsByCategory($(this).val());">
{foreach from=$aNavigatorBlogCategories item=oCategoryItem}
<option style="margin-left: {$oCategoryItem->getLevel()*20}px;" value="{$oCategoryItem->getId()}">{$oCategoryItem->getTitle()|escape:'html'}</option>
{/foreach}
</select>
<br/><br/>
<select id="blog-navigator-blog" class="width-full">
{foreach from=$aNavigatorBlogs item=oBlogItem}
<option value="{$oBlogItem->getId()}" data-url="{$oBlogItem->getUrlFull()}">{$oBlogItem->getTitle()|escape:'html'}</option>
{/foreach}
</select>
<br/><br/>
<button onclick="ls.blog.navigatorGoSelectBlog();" class="button">{$aLang.block_blog_navigator_button}</button>
</div>
</section>
{/if}