2015-08-04 19:45:42 +03:00
|
|
|
|
/**
|
|
|
|
|
* Выбор пользователей
|
|
|
|
|
*
|
|
|
|
|
* @module ls/user/field-choose
|
|
|
|
|
*
|
|
|
|
|
* @license GNU General Public License, version 2
|
|
|
|
|
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
|
|
|
|
|
* @author Denis Shakhov <denis.shakhov@gmail.com>
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
(function($) {
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
$.widget( "livestreet.lsUserFieldChoose", $.livestreet.lsComponent, {
|
|
|
|
|
/**
|
|
|
|
|
* Дефолтные опции
|
|
|
|
|
*/
|
|
|
|
|
options: {
|
|
|
|
|
// Ссылки
|
|
|
|
|
urls: {
|
2015-08-10 19:40:52 +03:00
|
|
|
|
modal: null,
|
|
|
|
|
autocomplete: aRouter.ajax + 'autocompleter/user/'
|
2015-08-04 19:45:42 +03:00
|
|
|
|
},
|
|
|
|
|
// Селекторы
|
|
|
|
|
selectors: {
|
2015-08-10 19:40:52 +03:00
|
|
|
|
// Список пользователей
|
|
|
|
|
users: '.js-user-field-choose-users',
|
2015-08-04 19:45:42 +03:00
|
|
|
|
// Выбор пользователей
|
|
|
|
|
button: '.js-user-field-choose-button'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Конструктор
|
|
|
|
|
*
|
|
|
|
|
* @constructor
|
|
|
|
|
* @private
|
|
|
|
|
*/
|
|
|
|
|
_create: function () {
|
|
|
|
|
this._super();
|
|
|
|
|
|
|
|
|
|
// Показывает модальное окно со списком пользователей
|
|
|
|
|
// и принимает от него список выбранных пользователей
|
|
|
|
|
this.elements.button.on( 'click', function (e) {
|
|
|
|
|
ls.userModalList.show( this.option( 'urls.modal' ), true, this.onModalListAdd.bind(this) );
|
|
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
}.bind(this));
|
2015-08-10 19:40:52 +03:00
|
|
|
|
|
2015-09-03 17:47:28 +03:00
|
|
|
|
this.elements.users.lsFieldAutocomplete({
|
|
|
|
|
urls: {
|
|
|
|
|
load: this.option( 'urls.autocomplete' )
|
2015-08-10 19:40:52 +03:00
|
|
|
|
},
|
2015-09-03 17:47:28 +03:00
|
|
|
|
params: {
|
|
|
|
|
extended: true
|
|
|
|
|
}
|
2015-08-10 19:40:52 +03:00
|
|
|
|
});
|
2015-08-04 19:45:42 +03:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Получает список выбранных пользователей
|
|
|
|
|
*
|
|
|
|
|
* @return {Array} Массив с выбранными пользователями
|
|
|
|
|
*/
|
|
|
|
|
getUsers: function () {
|
2015-08-10 19:40:52 +03:00
|
|
|
|
return this.elements.users.val();
|
2015-08-04 19:45:42 +03:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Очищает поле со списком пользователей
|
|
|
|
|
*/
|
|
|
|
|
empty: function () {
|
2015-08-10 19:40:52 +03:00
|
|
|
|
this.elements.users.empty().trigger('chosen:updated');
|
2015-08-04 19:45:42 +03:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Коллбэк вызываемый при отправке формы в мод. окне
|
|
|
|
|
*
|
|
|
|
|
* @param {Array} users Список выбранных пользователей
|
|
|
|
|
*/
|
|
|
|
|
onModalListAdd: function (users) {
|
2015-08-10 19:40:52 +03:00
|
|
|
|
var currentUsers = this.elements.users.val();
|
2015-08-04 19:45:42 +03:00
|
|
|
|
|
2015-08-10 19:40:52 +03:00
|
|
|
|
$.each(users, function (index, user) {
|
|
|
|
|
if ($.inArray(user.id, currentUsers) != -1) return;
|
2015-08-04 19:45:42 +03:00
|
|
|
|
|
2015-08-10 19:40:52 +03:00
|
|
|
|
$('<option />')
|
|
|
|
|
.attr('value', user.id)
|
|
|
|
|
.prop('selected', true)
|
|
|
|
|
.html(user.login)
|
|
|
|
|
.appendTo(this.elements.users);
|
|
|
|
|
}.bind(this));
|
2015-08-04 19:45:42 +03:00
|
|
|
|
|
2015-08-10 19:40:52 +03:00
|
|
|
|
this.elements.users.trigger('chosen:updated');
|
2015-08-04 19:45:42 +03:00
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
})(jQuery);
|