2011-04-09 22:38:11 +03:00
|
|
|
var ls = ls || {};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Динамическая подгрузка блоков
|
|
|
|
*/
|
|
|
|
ls.blocks = (function ($) {
|
|
|
|
/**
|
|
|
|
* Опции
|
|
|
|
*/
|
|
|
|
this.options = {
|
|
|
|
active: 'active',
|
|
|
|
loader: DIR_STATIC_SKIN + '/images/loader.gif',
|
|
|
|
type: {
|
2012-04-22 21:00:59 +03:00
|
|
|
stream_comment: {
|
2011-04-09 22:38:11 +03:00
|
|
|
url: aRouter['ajax']+'stream/comment/'
|
|
|
|
},
|
2012-04-22 21:00:59 +03:00
|
|
|
stream_topic: {
|
2011-04-09 22:38:11 +03:00
|
|
|
url: aRouter['ajax']+'stream/topic/'
|
|
|
|
},
|
2012-04-22 21:00:59 +03:00
|
|
|
blogs_top: {
|
2011-04-09 22:38:11 +03:00
|
|
|
url: aRouter['ajax']+'blogs/top/'
|
|
|
|
},
|
2012-04-22 21:00:59 +03:00
|
|
|
blogs_join: {
|
2011-04-09 22:38:11 +03:00
|
|
|
url: aRouter['ajax']+'blogs/join/'
|
|
|
|
},
|
2012-04-22 21:00:59 +03:00
|
|
|
blogs_self: {
|
2011-04-09 22:38:11 +03:00
|
|
|
url: aRouter['ajax']+'blogs/self/'
|
|
|
|
}
|
2011-04-01 10:49:36 +03:00
|
|
|
}
|
2011-04-09 22:38:11 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Метод загрузки содержимого блока
|
|
|
|
*/
|
|
|
|
this.load = function(obj, block, params){
|
2012-04-22 21:00:59 +03:00
|
|
|
var type = $(obj).data('type');
|
2012-04-28 09:09:47 +03:00
|
|
|
ls.hook.marker('loadBefore');
|
2012-01-15 02:47:20 +02:00
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
if(!type) return;
|
|
|
|
type=block+'_'+type;
|
2012-01-15 02:47:20 +02:00
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
params=$.extend(true,{},this.options.type[type].params || {},params || {});
|
2011-05-03 00:28:36 +03:00
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
var content = $('.js-block-'+block+'-content');
|
2011-04-09 22:38:11 +03:00
|
|
|
this.showProgress(content);
|
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
$('.js-block-'+block+'-item').removeClass(this.options.active);
|
2011-04-01 10:49:36 +03:00
|
|
|
$(obj).addClass(this.options.active);
|
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
ls.ajax(this.options.type[type].url, params, function(result){
|
|
|
|
var args = [content,result];
|
2012-04-28 09:09:47 +03:00
|
|
|
ls.hook.marker('onLoadBefore');
|
2012-01-28 17:52:44 +02:00
|
|
|
this.onLoad.apply(this,args);
|
2011-04-09 22:38:11 +03:00
|
|
|
}.bind(this));
|
|
|
|
};
|
|
|
|
|
2012-03-27 13:45:52 +03:00
|
|
|
/**
|
|
|
|
* Переключает вкладки в блоке, без использования Ajax
|
|
|
|
* @param obj
|
|
|
|
* @param block
|
|
|
|
*/
|
|
|
|
this.switchTab = function(obj, block) {
|
2012-04-22 21:00:59 +03:00
|
|
|
/**
|
|
|
|
* Если вкладку передаем как строчку - значение data-type
|
|
|
|
*/
|
|
|
|
if (typeof(obj)=='string') {
|
|
|
|
$('.js-block-'+block+'-item').each(function(k,v){
|
|
|
|
if ($(v).data('type')==obj) {
|
|
|
|
obj=v;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Если не нашли такой вкладки
|
|
|
|
*/
|
|
|
|
if (typeof(obj)=='string') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$('.js-block-'+block+'-item').removeClass(this.options.active);
|
2012-03-27 13:45:52 +03:00
|
|
|
$(obj).addClass(this.options.active);
|
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
$('.js-block-'+block+'-content').hide();
|
|
|
|
$('.js-block-'+block+'-content').each(function(k,v){
|
|
|
|
if ($(v).data('type')==$(obj).data('type')) {
|
|
|
|
$(v).show();
|
|
|
|
}
|
|
|
|
});
|
2012-06-30 19:41:41 +03:00
|
|
|
ls.hook.run('ls_blocks_switch_tab_after',[obj, block],this);
|
2012-04-22 21:00:59 +03:00
|
|
|
return true;
|
2012-03-27 13:45:52 +03:00
|
|
|
};
|
|
|
|
|
2011-04-09 22:38:11 +03:00
|
|
|
/**
|
|
|
|
* Отображение процесса загрузки
|
|
|
|
*/
|
|
|
|
this.showProgress = function(content) {
|
2012-07-10 17:48:08 +03:00
|
|
|
content.height(content.height());
|
2012-07-10 17:55:00 +03:00
|
|
|
content.empty().css({'background': 'url(' + this.options.loader + ') no-repeat center top', 'min-height': 70});
|
2011-04-09 22:38:11 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Обработка результатов загрузки
|
|
|
|
*/
|
2012-04-22 21:00:59 +03:00
|
|
|
this.onLoad = function(content,result) {
|
2012-02-05 10:11:03 +02:00
|
|
|
$(this).trigger('loadSuccessful',arguments);
|
2012-07-10 17:55:00 +03:00
|
|
|
content.empty().css({'background': 'none', 'height': 'auto', 'min-height': 0});
|
2011-04-09 22:38:11 +03:00
|
|
|
if (result.bStateError) {
|
2011-05-03 00:28:36 +03:00
|
|
|
ls.msg.error(null, result.sMsg);
|
2011-04-09 22:38:11 +03:00
|
|
|
} else {
|
|
|
|
content.html(result.sText);
|
2012-01-28 17:52:44 +02:00
|
|
|
ls.hook.run('ls_block_onload_html_after',arguments,this);
|
2011-04-09 22:38:11 +03:00
|
|
|
}
|
|
|
|
};
|
2011-04-01 10:49:36 +03:00
|
|
|
|
2012-04-22 21:00:59 +03:00
|
|
|
this.getCurrentItem = function(block) {
|
|
|
|
if ($('.js-block-'+block+'-nav').is(':visible')) {
|
|
|
|
return $('.js-block-'+block+'-nav').find('.js-block-'+block+'-item.'+this.options.active);
|
|
|
|
} else {
|
|
|
|
return $('.js-block-'+block+'-dropdown-items').find('.js-block-'+block+'-item.'+this.options.active);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
this.initSwitch = function(block) {
|
|
|
|
$('.js-block-'+block+'-item').click(function(){
|
|
|
|
ls.blocks.switchTab(this, block);
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
this.init = function(block,params) {
|
|
|
|
params=params || {};
|
|
|
|
$('.js-block-'+block+'-item').click(function(){
|
|
|
|
ls.blocks.load(this, block);
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
if (params.group_items) {
|
|
|
|
this.initNavigation(block,params.group_min);
|
|
|
|
}
|
|
|
|
|
|
|
|
var $this=this;
|
|
|
|
$('.js-block-'+block+'-update').click(function(){
|
|
|
|
$(this).addClass('active');
|
|
|
|
ls.blocks.load($this.getCurrentItem(block), block);
|
|
|
|
setTimeout( function() { $(this).removeClass('active'); }.bind(this), 600 );
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
this.initNavigation = function(block,count) {
|
|
|
|
count=count || 3;
|
|
|
|
if ($('.js-block-'+block+'-nav').find('li').length >= count) {
|
|
|
|
$('.js-block-'+block+'-nav').hide();
|
|
|
|
$('.js-block-'+block+'-dropdown').show();
|
|
|
|
} else {
|
|
|
|
// Transform nav to dropdown
|
|
|
|
$('.js-block-'+block+'-nav').show();
|
|
|
|
$('.js-block-'+block+'-dropdown').hide();
|
|
|
|
}
|
2012-07-01 05:51:31 +03:00
|
|
|
ls.hook.run('ls_blocks_init_navigation_after',[block,count],this);
|
2012-04-22 21:00:59 +03:00
|
|
|
};
|
|
|
|
|
2011-04-09 22:38:11 +03:00
|
|
|
return this;
|
2012-01-28 17:52:44 +02:00
|
|
|
}).call(ls.blocks || {},jQuery);
|