1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-19 17:28:23 +03:00

Доработка механизма выбора пользователей

This commit is contained in:
Denis Shakhov 2015-08-10 23:40:52 +07:00
parent 8f588db72b
commit 61cba775f7
5 changed files with 48 additions and 32 deletions

View file

@ -282,7 +282,7 @@ class ActionStream extends Action
/**
* Если пользователь не найден или неактивен, возвращаем ошибку
*/
if ($oUser = $this->User_GetUserByLogin($sUser) and $oUser->getActivate() == 1) {
if ($oUser = $this->User_GetUserById($sUser) and $oUser->getActivate() == 1) {
$this->Stream_subscribeUser($this->oUserCurrent->getId(), $oUser->getId());
$oViewer = $this->Viewer_GetLocalViewer();
$oViewer->Assign('user', $oUser, true);

View file

@ -187,7 +187,7 @@ class ActionUserfeed extends Action
/**
* Если пользователь не найден или неактивен, возвращаем ошибку
*/
if ($oUser = $this->User_GetUserByLogin($sUser) and $oUser->getActivate() == 1) {
if ($oUser = $this->User_GetUserById($sUser) and $oUser->getActivate() == 1) {
$this->Userfeed_subscribeUser($this->oUserCurrent->getId(), ModuleUserfeed::SUBSCRIBE_TYPE_USER,
$oUser->getId());

View file

@ -19,7 +19,7 @@
urls: {
add: null,
remove: null,
list: null
list: aRouter.ajax + 'modal-friend-list'
},
// Селекторы
selectors: {

View file

@ -18,12 +18,13 @@
options: {
// Ссылки
urls: {
modal: null
modal: null,
autocomplete: aRouter.ajax + 'autocompleter/user/'
},
// Селекторы
selectors: {
// Текствое поле
text: '.js-user-field-choose-text',
// Список пользователей
users: '.js-user-field-choose-users',
// Выбор пользователей
button: '.js-user-field-choose-button'
}
@ -45,6 +46,27 @@
e.preventDefault();
}.bind(this));
this.elements.users.ajaxChosen({
type: 'POST',
url: this.option( 'urls.autocomplete' ),
data: {
security_ls_key: LIVESTREET_SECURITY_KEY,
extended: true
},
dataType: 'json',
jsonTermKey: 'value'
}, function (data) {
var results = [];
$.each(data.aItems, function (i, val) {
results.push({ value: val.value, text: val.text });
});
return results;
}, {
width: '100%'
});
},
/**
@ -53,16 +75,14 @@
* @return {Array} Массив с выбранными пользователями
*/
getUsers: function () {
return $.map( this.elements.text.val().split( ',' ), function( item ) {
return $.trim( item ) || null;
});
return this.elements.users.val();
},
/**
* Очищает поле со списком пользователей
*/
empty: function () {
this.elements.text.val('');
this.elements.users.empty().trigger('chosen:updated');
},
/**
@ -71,25 +91,19 @@
* @param {Array} users Список выбранных пользователей
*/
onModalListAdd: function (users) {
// Получаем логины для добавления
var loginsNew = $.map(users, function(user) {
return user.login;
});
var currentUsers = this.elements.users.val();
// Получаем логины которые уже прописаны
var loginsOld = $.map(this.elements.text.val().split(','), function(login) {
return $.trim(login) || null;
});
$.each(users, function (index, user) {
if ($.inArray(user.id, currentUsers) != -1) return;
// Мержим логины
var logins = $.merge(loginsOld, loginsNew);
$('<option />')
.attr('value', user.id)
.prop('selected', true)
.html(user.login)
.appendTo(this.elements.users);
}.bind(this));
// Убираем дубликаты
logins = $.grep(logins, function(value, key) {
return $.inArray(value, logins) === key;
});
this.elements.text.val( logins.join(', ') );
this.elements.users.trigger('chosen:updated');
},
});
})(jQuery);

View file

@ -23,9 +23,11 @@
</a>
{/capture}
{component 'field' template='text'
name = $name
inputClasses = "js-{$component}-text autocomplete-users-sep"
label = $label
note = $smarty.capture.user_list_add_choose
params = $smarty.local.params}
{component 'field' template='select'
label = $label
name = $name
inputClasses = 'js-user-field-choose-users'
isMultiple = true
placeholder = " "
note = $smarty.capture.user_list_add_choose
params = $smarty.local.params}