2013-08-19 13:36:09 +03:00
|
|
|
/**
|
|
|
|
* Избранное
|
2014-04-28 13:12:44 +03:00
|
|
|
*
|
2013-08-29 12:30:04 +03:00
|
|
|
* @module ls/favourite
|
2014-04-28 13:12:44 +03:00
|
|
|
*
|
2013-08-29 12:30:04 +03:00
|
|
|
* @license GNU General Public License, version 2
|
|
|
|
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
|
|
|
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
2013-08-19 13:36:09 +03:00
|
|
|
*/
|
|
|
|
|
2011-04-01 10:49:36 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
(function($) {
|
2013-08-19 13:36:09 +03:00
|
|
|
"use strict";
|
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
$.widget( "livestreet.lsFavourite", {
|
|
|
|
/**
|
|
|
|
* Дефолтные опции
|
|
|
|
*/
|
|
|
|
options: {
|
|
|
|
// Ссылки
|
|
|
|
urls: {
|
|
|
|
// Добавить/удалить из избранного
|
|
|
|
toggle: null,
|
2011-05-03 10:53:06 +03:00
|
|
|
},
|
2014-04-28 13:12:44 +03:00
|
|
|
// Селекторы
|
|
|
|
selectors: {
|
|
|
|
// Кнопка добавить/удалить из избранного
|
|
|
|
toggle: '.js-favourite-toggle',
|
|
|
|
// Счетчик
|
|
|
|
count: '.js-favourite-count'
|
2011-05-03 10:53:06 +03:00
|
|
|
},
|
2014-04-28 13:12:44 +03:00
|
|
|
// Параметры отправляемые при каждом аякс запросе
|
|
|
|
params: {}
|
|
|
|
},
|
2013-08-29 12:30:04 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
/**
|
|
|
|
* Конструктор
|
|
|
|
*
|
|
|
|
* @constructor
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_create: function () {
|
|
|
|
this.options.params = $.extend({}, this.options.params, ls.utils.getDataOptions(this.element, 'param'));
|
|
|
|
|
|
|
|
this.elements = {};
|
|
|
|
this.elements.toggle = this.element.find(this.options.selectors.toggle);
|
|
|
|
this.elements.count = this.element.find(this.options.selectors.count);
|
|
|
|
|
|
|
|
// Обработка кликов по кнопкам голосования
|
|
|
|
this._on({
|
|
|
|
'click': function (e) {
|
|
|
|
this.toggle();
|
|
|
|
e.preventDefault();
|
|
|
|
}
|
2013-08-29 12:30:04 +03:00
|
|
|
});
|
2014-04-28 13:12:44 +03:00
|
|
|
},
|
2013-08-29 12:30:04 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
/**
|
|
|
|
* Добавить/удалить из избранного
|
|
|
|
*/
|
|
|
|
toggle: function() {
|
|
|
|
this.options.params.type = ! this.element.hasClass(ls.options.classes.states.active);
|
2013-05-04 17:10:22 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
ls.ajax.load(this.options.urls.toggle, this.options.params, function(oResponse) {
|
|
|
|
if (oResponse.bStateError) {
|
|
|
|
ls.msg.error(null, oResponse.sMsg);
|
2012-03-27 13:45:52 +03:00
|
|
|
} else {
|
2014-04-28 13:12:44 +03:00
|
|
|
ls.msg.notice(null, oResponse.sMsg);
|
|
|
|
|
|
|
|
this.element.removeClass(ls.options.classes.states.active);
|
2013-05-04 17:10:22 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
if (oResponse.bState) {
|
|
|
|
this.element.addClass(ls.options.classes.states.active).attr('title', ls.lang.get('favourite.remove'));
|
2013-08-29 12:30:04 +03:00
|
|
|
} else {
|
2014-04-28 13:12:44 +03:00
|
|
|
this.element.attr('title', ls.lang.get('favourite.add'));
|
2013-08-29 12:30:04 +03:00
|
|
|
}
|
2013-05-04 17:10:22 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
if (this.elements.count) {
|
|
|
|
if (oResponse.iCount > 0) {
|
|
|
|
this.elements.count.show().text(oResponse.iCount);
|
|
|
|
} else {
|
|
|
|
this.elements.count.hide();
|
|
|
|
}
|
|
|
|
}
|
2012-03-27 13:45:52 +03:00
|
|
|
|
2014-04-28 13:12:44 +03:00
|
|
|
this._trigger("aftertogglesuccess", null, { context: this, response: oResponse });
|
|
|
|
//ls.hook.run('ls_favourite_toggle_after',[data.targetId,data.toggle,data.type,params,oResponse],this);
|
|
|
|
}
|
|
|
|
}.bind(this));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})(jQuery);
|