mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-03 06:55:03 +03:00
Merge branch 'master' of https://github.com/livestreet/livestreet
This commit is contained in:
commit
f11c03846c
|
@ -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;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Предпросмотр топика
|
||||
*
|
||||
|
|
|
@ -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'));
|
||||
/**
|
||||
* Устанавливаем шаблон вывода
|
||||
*/
|
||||
|
|
|
@ -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);
|
58
classes/blocks/BlockBlogNavigator.class.php
Normal file
58
classes/blocks/BlockBlogNavigator.class.php
Normal 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']);
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
|
@ -41,6 +41,7 @@ return array(
|
|||
'blog_about' => 'About this blog',
|
||||
'blog_expand_info' => 'More ↓',
|
||||
'blog_fold_info' => 'Fold ↑',
|
||||
'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',
|
||||
/**
|
||||
|
|
|
@ -41,6 +41,7 @@ return array(
|
|||
'blog_about' => 'О блоге',
|
||||
'blog_expand_info' => 'Подробнее ↓',
|
||||
'blog_fold_info' => 'Свернуть ↑',
|
||||
'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' => 'перейти на главную',
|
||||
/**
|
||||
|
|
24
templates/skin/developer/blocks/block.blogNavigator.tpl
Normal file
24
templates/skin/developer/blocks/block.blogNavigator.tpl
Normal 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}
|
24
templates/skin/synio/blocks/block.blogNavigator.tpl
Normal file
24
templates/skin/synio/blocks/block.blogNavigator.tpl
Normal 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}
|
Loading…
Reference in a new issue