2013-07-08 07:42:49 +03:00
|
|
|
/**
|
|
|
|
* Заметки
|
2014-04-03 10:44:06 +03:00
|
|
|
*
|
2013-08-29 12:30:04 +03:00
|
|
|
* @module ls/usernote
|
2014-04-03 10:44:06 +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-07-08 07:42:49 +03:00
|
|
|
*/
|
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
(function($) {
|
2013-07-08 07:42:49 +03:00
|
|
|
"use strict";
|
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
$.widget( "livestreet.usernote", {
|
|
|
|
/**
|
|
|
|
* Дефолтные опции
|
|
|
|
*/
|
|
|
|
options: {
|
|
|
|
// Ссылки
|
|
|
|
urls: {
|
2014-04-28 13:12:44 +03:00
|
|
|
save: null,
|
|
|
|
remove: null
|
2014-04-03 10:44:06 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
// Селекторы
|
|
|
|
selectors: {
|
|
|
|
body: '.js-user-note-body',
|
|
|
|
text: '.js-user-note-text',
|
|
|
|
add: '.js-user-note-add',
|
|
|
|
actions: '.js-user-note-actions',
|
|
|
|
actions_edit: '.js-user-note-actions-edit',
|
|
|
|
actions_remove: '.js-user-note-actions-remove',
|
|
|
|
|
|
|
|
form: '.js-user-note-form',
|
|
|
|
form_text: '.js-user-note-form-text',
|
|
|
|
form_save: '.js-user-note-form-save',
|
|
|
|
form_cancel: '.js-user-note-form-cancel'
|
|
|
|
}
|
2013-07-08 07:42:49 +03:00
|
|
|
},
|
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
/**
|
|
|
|
* Конструктор
|
|
|
|
*
|
|
|
|
* @constructor
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_create: function () {
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
this.options = $.extend({}, this.options, ls.utils.getDataOptions(this.element, this.widgetName));
|
|
|
|
|
|
|
|
// Получаем аякс параметры
|
|
|
|
this.params = ls.utils.getDataOptions(this.element, 'param');
|
|
|
|
|
|
|
|
// Получаем элементы
|
|
|
|
this.elements = {};
|
|
|
|
this.elements.container = this.element;
|
|
|
|
|
|
|
|
this.elements.body = this.elements.container.find(this.options.selectors.body);
|
|
|
|
this.elements.text = this.elements.body.find(this.options.selectors.text);
|
|
|
|
this.elements.add = this.elements.body.find(this.options.selectors.add);
|
|
|
|
this.elements.actions = this.elements.body.find(this.options.selectors.actions);
|
|
|
|
this.elements.actions_edit = this.elements.actions.find(this.options.selectors.actions_edit);
|
|
|
|
this.elements.actions_remove = this.elements.actions.find(this.options.selectors.actions_remove);
|
|
|
|
|
|
|
|
this.elements.form = this.elements.container.find(this.options.selectors.form);
|
|
|
|
this.elements.form_text = this.elements.form.find(this.options.selectors.form_text);
|
|
|
|
this.elements.form_save = this.elements.form.find(this.options.selectors.form_save);
|
|
|
|
this.elements.form_cancel = this.elements.form.find(this.options.selectors.form_cancel);
|
|
|
|
|
|
|
|
// Добавление
|
|
|
|
this.elements.add.on('click', function (e) {
|
|
|
|
_this.showForm();
|
2013-07-08 07:42:49 +03:00
|
|
|
e.preventDefault();
|
|
|
|
});
|
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
// Редактирование
|
|
|
|
this.elements.actions_edit.on('click', function (e) {
|
|
|
|
_this.showForm();
|
|
|
|
e.preventDefault();
|
2013-07-08 07:42:49 +03:00
|
|
|
});
|
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
// Отмена редактирования
|
|
|
|
this.elements.form_cancel.on('click', this.hideForm.bind(this));
|
|
|
|
|
|
|
|
// Удаление
|
|
|
|
this.elements.actions_remove.on('click', function (e) {
|
|
|
|
_this.remove();
|
2013-07-08 07:42:49 +03:00
|
|
|
e.preventDefault();
|
|
|
|
});
|
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
// Сохранение
|
|
|
|
this.elements.form.on('submit', function (e) {
|
|
|
|
_this.save();
|
2013-07-08 07:42:49 +03:00
|
|
|
e.preventDefault();
|
|
|
|
});
|
2014-04-03 10:44:06 +03:00
|
|
|
},
|
2012-03-16 13:14:35 +02:00
|
|
|
|
2014-04-03 10:44:06 +03:00
|
|
|
/**
|
|
|
|
* Показывает форму редактирования
|
|
|
|
*/
|
|
|
|
showForm: function() {
|
|
|
|
this.elements.body.hide();
|
|
|
|
this.elements.form.show();
|
|
|
|
this.elements.form_text.val( $.trim(this.elements.text.html()) ).select();
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Скрывает форму редактирования
|
|
|
|
*/
|
|
|
|
hideForm: function() {
|
|
|
|
this.elements.body.show();
|
|
|
|
this.elements.form.hide();
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Сохраняет заметку
|
|
|
|
*/
|
|
|
|
save: function() {
|
|
|
|
var oParams = {
|
|
|
|
text: this.elements.form_text.val()
|
|
|
|
};
|
|
|
|
|
|
|
|
oParams = $.extend({}, oParams, this.params);
|
|
|
|
|
|
|
|
ls.utils.formLock(this.elements.form);
|
|
|
|
|
|
|
|
ls.ajax.load(this.options.urls.save, oParams, function (oResponse) {
|
|
|
|
ls.utils.formUnlock(this.elements.form);
|
|
|
|
|
|
|
|
if (oResponse.bStateError) {
|
|
|
|
ls.msg.error(null, oResponse.sMsg);
|
|
|
|
} else {
|
|
|
|
this.elements.text.html(oResponse.sText).show();
|
|
|
|
this.elements.add.hide();
|
|
|
|
this.elements.actions.show();
|
|
|
|
this.hideForm();
|
|
|
|
}
|
|
|
|
}.bind(this));
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Удаление заметки
|
|
|
|
*/
|
|
|
|
remove: function() {
|
|
|
|
ls.ajax.load(this.options.urls.remove, this.params, function (oResponse) {
|
|
|
|
if (oResponse.bStateError) {
|
|
|
|
ls.msg.error(null, oResponse.sMsg);
|
|
|
|
} else {
|
|
|
|
this.elements.text.empty().hide();
|
|
|
|
this.elements.add.show();
|
|
|
|
this.elements.actions.hide();
|
|
|
|
}
|
|
|
|
}.bind(this));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})(jQuery);
|