2011-05-03 00:28:36 +03:00
|
|
|
|
/**
|
2013-07-31 09:35:19 +03:00
|
|
|
|
* Блоги
|
2013-08-29 12:30:04 +03:00
|
|
|
|
*
|
|
|
|
|
* @module ls/blogs
|
|
|
|
|
*
|
|
|
|
|
* @license GNU General Public License, version 2
|
|
|
|
|
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
|
|
|
|
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
2013-07-31 09:35:19 +03:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
var ls = ls || {};
|
|
|
|
|
|
2011-05-03 00:28:36 +03:00
|
|
|
|
ls.blog = (function ($) {
|
2013-07-31 09:35:19 +03:00
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Дефолтные опции
|
2013-08-29 12:30:04 +03:00
|
|
|
|
*
|
|
|
|
|
* @member {Object}
|
|
|
|
|
* @private
|
2013-07-31 09:35:19 +03:00
|
|
|
|
*/
|
2013-08-29 12:30:04 +03:00
|
|
|
|
var _defaults = {
|
2013-07-31 09:35:19 +03:00
|
|
|
|
// Роутеры
|
|
|
|
|
oRouters: {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Селекторы
|
|
|
|
|
selectors: {
|
|
|
|
|
addBlogSelectType: '.js-blog-add-type'
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Инициализация
|
|
|
|
|
*
|
|
|
|
|
* @param {Object} options Опции
|
|
|
|
|
*/
|
|
|
|
|
this.init = function(options) {
|
|
|
|
|
var self = this;
|
|
|
|
|
|
2013-08-29 12:30:04 +03:00
|
|
|
|
this.options = $.extend({}, _defaults, options);
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
|
|
|
|
// Подгрузка информации о выбранном типе блога при создании блога
|
|
|
|
|
$(this.options.selectors.addBlogSelectType).on('change', function (e) {
|
|
|
|
|
ls.blog.loadInfoType($(this).val());
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2011-05-03 00:28:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Вступить или покинуть блог
|
|
|
|
|
*/
|
|
|
|
|
this.toggleJoin = function(obj, idBlog){
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var url = aRouter['blog']+'ajaxblogjoin/';
|
|
|
|
|
var params = {idBlog: idBlog};
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-04-28 09:09:47 +03:00
|
|
|
|
ls.hook.marker('toggleJoinBefore');
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.load(url,params,function(result) {
|
2011-04-01 10:49:36 +03:00
|
|
|
|
if (result.bStateError) {
|
2011-05-03 00:28:36 +03:00
|
|
|
|
ls.msg.error(null, result.sMsg);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
} else {
|
2011-05-03 00:28:36 +03:00
|
|
|
|
obj = $(obj);
|
|
|
|
|
ls.msg.notice(null, result.sMsg);
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var text = result.bState
|
2012-02-14 16:07:55 +02:00
|
|
|
|
? ls.lang.get('blog_leave')
|
|
|
|
|
: ls.lang.get('blog_join')
|
2012-01-28 17:52:44 +02:00
|
|
|
|
;
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-01-29 15:36:14 +02:00
|
|
|
|
obj.empty().text(text);
|
2012-05-29 05:46:49 +03:00
|
|
|
|
obj.toggleClass('active');
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2011-04-01 10:49:36 +03:00
|
|
|
|
$('#blog_user_count_'+idBlog).text(result.iCountUser);
|
2012-01-29 15:36:14 +02:00
|
|
|
|
ls.hook.run('ls_blog_toggle_join_after',[idBlog,result],obj);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
}
|
|
|
|
|
});
|
2011-05-03 00:28:36 +03:00
|
|
|
|
};
|
2011-04-01 10:49:36 +03:00
|
|
|
|
|
2011-05-03 00:28:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Отправляет приглашение вступить в блог
|
|
|
|
|
*/
|
|
|
|
|
this.addInvite = function(idBlog) {
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var sUsers = $('#blog_admin_user_add').val();
|
2011-04-01 10:49:36 +03:00
|
|
|
|
if(!sUsers) return false;
|
|
|
|
|
$('#blog_admin_user_add').val('');
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var url = aRouter['blog']+'ajaxaddbloginvite/';
|
|
|
|
|
var params = {users: sUsers, idBlog: idBlog};
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-04-28 09:09:47 +03:00
|
|
|
|
ls.hook.marker('addInviteBefore');
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.load(url, params, function(result) {
|
2011-04-01 10:49:36 +03:00
|
|
|
|
if (result.bStateError) {
|
2011-05-03 00:28:36 +03:00
|
|
|
|
ls.msg.error(null, result.sMsg);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
} else {
|
|
|
|
|
$.each(result.aUsers, function(index, item) {
|
|
|
|
|
if(item.bStateError){
|
2011-05-03 00:28:36 +03:00
|
|
|
|
ls.msg.error(null, item.sMsg);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
} else {
|
|
|
|
|
if($('#invited_list').length == 0) {
|
|
|
|
|
$('#invited_list_block').append($('<ul class="list" id="invited_list"></ul>'));
|
|
|
|
|
}
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var listItem = $('<li><a href="'+item.sUserWebPath+'" class="user">'+item.sUserLogin+'</a></li>');
|
|
|
|
|
$('#invited_list').append(listItem);
|
2012-07-27 20:41:52 +03:00
|
|
|
|
$('#blog-invite-empty').hide();
|
2012-01-28 17:52:44 +02:00
|
|
|
|
ls.hook.run('ls_blog_add_invite_user_after',[idBlog,item],listItem);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
}
|
|
|
|
|
});
|
2012-01-28 17:52:44 +02:00
|
|
|
|
ls.hook.run('ls_blog_add_invite_after',[idBlog,sUsers,result]);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
}
|
|
|
|
|
});
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2011-04-01 10:49:36 +03:00
|
|
|
|
return false;
|
2012-03-30 12:52:36 +03:00
|
|
|
|
};
|
2011-04-01 10:49:36 +03:00
|
|
|
|
|
2011-05-03 00:28:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Повторно отправляет приглашение
|
|
|
|
|
*/
|
|
|
|
|
this.repeatInvite = function(idUser,idBlog) {
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var url = aRouter['blog']+'ajaxrebloginvite/';
|
|
|
|
|
var params = {idUser: idUser, idBlog: idBlog};
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-04-28 09:09:47 +03:00
|
|
|
|
ls.hook.marker('repeatInviteBefore');
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.load(url, params, function(result){
|
2011-04-01 10:49:36 +03:00
|
|
|
|
if (result.bStateError) {
|
2011-05-03 00:28:36 +03:00
|
|
|
|
ls.msg.error(null, result.sMsg);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
} else {
|
2011-05-03 00:28:36 +03:00
|
|
|
|
ls.msg.notice(null, result.sMsg);
|
2012-01-28 17:52:44 +02:00
|
|
|
|
ls.hook.run('ls_blog_repeat_invite_after',[idUser,idBlog,result]);
|
2011-04-01 10:49:36 +03:00
|
|
|
|
}
|
|
|
|
|
});
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2011-04-01 10:49:36 +03:00
|
|
|
|
return false;
|
2012-03-30 12:52:36 +03:00
|
|
|
|
};
|
2012-06-17 08:24:48 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Удаляет приглашение в блог
|
|
|
|
|
*/
|
|
|
|
|
this.removeInvite = function(idUser,idBlog) {
|
|
|
|
|
var url = aRouter['blog']+'ajaxremovebloginvite/';
|
|
|
|
|
var params = {idUser: idUser, idBlog: idBlog};
|
|
|
|
|
|
|
|
|
|
ls.hook.marker('removeInviteBefore');
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.load(url, params, function(result){
|
2012-06-17 08:24:48 +03:00
|
|
|
|
if (result.bStateError) {
|
|
|
|
|
ls.msg.error(null, result.sMsg);
|
|
|
|
|
} else {
|
|
|
|
|
$('#blog-invite-remove-item-'+idBlog+'-'+idUser).remove();
|
|
|
|
|
ls.msg.notice(null, result.sMsg);
|
2012-07-27 20:41:52 +03:00
|
|
|
|
if ($('#invited_list li').length == 0) $('#blog-invite-empty').show();
|
2012-06-17 08:24:48 +03:00
|
|
|
|
ls.hook.run('ls_blog_remove_invite_after',[idUser,idBlog,result]);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
};
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2011-05-03 00:28:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Отображение информации о блоге
|
|
|
|
|
*/
|
|
|
|
|
this.loadInfo = function(idBlog) {
|
2012-01-28 17:52:44 +02:00
|
|
|
|
var url = aRouter['blog']+'ajaxbloginfo/';
|
|
|
|
|
var params = {idBlog: idBlog};
|
2013-07-31 09:35:19 +03:00
|
|
|
|
var block = $('#block_blog_info');
|
|
|
|
|
|
|
|
|
|
block.empty().addClass('loading');
|
|
|
|
|
|
2012-04-28 09:09:47 +03:00
|
|
|
|
ls.hook.marker('loadInfoBefore');
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.load(url, params, function(result){
|
2011-05-03 00:28:36 +03:00
|
|
|
|
if (result.bStateError) {
|
|
|
|
|
ls.msg.error(null, result.sMsg);
|
|
|
|
|
} else {
|
2013-07-31 09:35:19 +03:00
|
|
|
|
block.removeClass('loading').html(result.sText);
|
2012-01-28 17:52:44 +02:00
|
|
|
|
ls.hook.run('ls_blog_load_info_after',[idBlog,result],block);
|
2011-05-03 00:28:36 +03:00
|
|
|
|
}
|
|
|
|
|
});
|
2012-03-30 12:52:36 +03:00
|
|
|
|
};
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2011-08-21 18:13:37 +03:00
|
|
|
|
/**
|
|
|
|
|
* Отображение информации о типе блога
|
|
|
|
|
*/
|
|
|
|
|
this.loadInfoType = function(type) {
|
2012-08-06 01:22:45 +03:00
|
|
|
|
$('#blog_type_note').text(ls.lang.get('blog_create_type_' + type + '_notice'));
|
2012-03-30 12:52:36 +03:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Поиск блогов
|
|
|
|
|
*/
|
|
|
|
|
this.searchBlogs = function(form) {
|
|
|
|
|
var url = aRouter['blogs']+'ajax-search/';
|
2012-04-14 12:35:26 +03:00
|
|
|
|
var inputSearch=$('#'+form).find('input');
|
|
|
|
|
inputSearch.addClass('loader');
|
2012-03-30 12:52:36 +03:00
|
|
|
|
|
2012-04-28 09:09:47 +03:00
|
|
|
|
ls.hook.marker('searchBlogsBefore');
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.submit(url, form, function(result){
|
2012-04-14 12:35:26 +03:00
|
|
|
|
inputSearch.removeClass('loader');
|
2012-03-30 12:52:36 +03:00
|
|
|
|
if (result.bStateError) {
|
|
|
|
|
$('#blogs-list-search').hide();
|
|
|
|
|
$('#blogs-list-original').show();
|
|
|
|
|
} else {
|
|
|
|
|
$('#blogs-list-original').hide();
|
|
|
|
|
$('#blogs-list-search').html(result.sText).show();
|
|
|
|
|
ls.hook.run('ls_blog_search_blogs_after',[form, result]);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2012-04-13 20:23:10 +03:00
|
|
|
|
/**
|
|
|
|
|
* Показать подробную информацию о блоге
|
|
|
|
|
*/
|
|
|
|
|
this.toggleInfo = function() {
|
|
|
|
|
$('#blog-more-content').slideToggle();
|
|
|
|
|
var more = $('#blog-more');
|
|
|
|
|
more.toggleClass('expanded');
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-04-13 20:23:10 +03:00
|
|
|
|
if(more.hasClass('expanded')) {
|
|
|
|
|
more.html(ls.lang.get('blog_fold_info'));
|
|
|
|
|
} else {
|
|
|
|
|
more.html(ls.lang.get('blog_expand_info'));
|
|
|
|
|
}
|
2013-07-31 09:35:19 +03:00
|
|
|
|
|
2012-04-13 20:23:10 +03:00
|
|
|
|
return false;
|
|
|
|
|
};
|
|
|
|
|
|
2013-04-12 16:01:40 +03:00
|
|
|
|
/**
|
|
|
|
|
* Подгружает блоги из категории
|
|
|
|
|
* @param {String} id ID категории
|
|
|
|
|
*/
|
2013-04-12 06:44:36 +03:00
|
|
|
|
this.loadBlogsByCategory = function(id) {
|
2013-04-12 16:01:40 +03:00
|
|
|
|
var url = aRouter['ajax'] + 'blogs/get-by-category/',
|
|
|
|
|
params = {id: id},
|
|
|
|
|
$blogs = $('#blog-navigator-blog').empty().prop('disabled', true),
|
|
|
|
|
$button = $('#blog-navigator-button').prop('disabled', true);
|
2013-04-12 06:44:36 +03:00
|
|
|
|
|
|
|
|
|
ls.hook.marker('loadBlogsByCategoryBefore');
|
2013-04-12 16:01:40 +03:00
|
|
|
|
|
|
|
|
|
if (id !== '0') {
|
2013-10-02 17:05:44 +03:00
|
|
|
|
ls.ajax.load(url, params, function(result){
|
2013-04-12 16:01:40 +03:00
|
|
|
|
if (result.bStateError) {
|
|
|
|
|
$blogs.append('<option>' + result.sMsg + '</option>');
|
|
|
|
|
} else {
|
|
|
|
|
$(result.aBlogs).each(function(k,v){
|
|
|
|
|
$('<option value="' + v.id + '" data-url="' + v.url_full + '">' + v.title+'</option>').appendTo($blogs);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$blogs.prop('disabled', false);
|
|
|
|
|
$button.prop('disabled', false);
|
|
|
|
|
|
|
|
|
|
ls.hook.run('ls_blog_load_blogs_by_category_after', [id, result]);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
$blogs.append('<option>' + ls.lang.get('blog') + '</option>');
|
|
|
|
|
}
|
2013-04-12 06:44:36 +03:00
|
|
|
|
};
|
|
|
|
|
|
2013-04-12 16:01:40 +03:00
|
|
|
|
/**
|
|
|
|
|
* Переход на страницу выбранного блога
|
|
|
|
|
*/
|
2013-04-12 06:44:36 +03:00
|
|
|
|
this.navigatorGoSelectBlog = function() {
|
2013-04-12 16:01:40 +03:00
|
|
|
|
var $sel = $('#blog-navigator-blog').find('option:selected');
|
|
|
|
|
|
2013-04-12 06:44:36 +03:00
|
|
|
|
if ($sel.length) {
|
2013-04-12 16:01:40 +03:00
|
|
|
|
window.location.href = $sel.data('url');
|
2013-04-12 06:44:36 +03:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2011-05-03 00:28:36 +03:00
|
|
|
|
return this;
|
|
|
|
|
}).call(ls.blog || {},jQuery);
|