mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-05-19 17:28:23 +03:00
Доработка механизма выбора пользователей
* В процессе
This commit is contained in:
parent
09533bf2c0
commit
9838766af7
|
@ -145,8 +145,7 @@ class ActionAjax extends Action
|
|||
$oViewer = $this->Viewer_GetLocalViewer();
|
||||
|
||||
// Получаем переменные
|
||||
$bSelectable = getRequest('selectable');
|
||||
$sTarget = getRequest('target');
|
||||
$bSelectable = (bool) getRequest('selectable');
|
||||
|
||||
// Получаем список друзей
|
||||
$aUsersFriend = $this->User_GetUsersFriend($this->oUserCurrent->getId());
|
||||
|
@ -156,7 +155,6 @@ class ActionAjax extends Action
|
|||
}
|
||||
|
||||
$oViewer->Assign('selectable', $bSelectable, true);
|
||||
$oViewer->Assign('target', $sTarget, true);
|
||||
|
||||
$this->Viewer_AssignAjax('sText', $oViewer->Fetch("component@user.modal.user-list"));
|
||||
}
|
||||
|
|
|
@ -18,7 +18,8 @@
|
|||
options: {
|
||||
urls: {
|
||||
add: null,
|
||||
remove: null
|
||||
remove: null,
|
||||
list: null
|
||||
},
|
||||
// Селекторы
|
||||
selectors: {
|
||||
|
@ -33,7 +34,9 @@
|
|||
// Форма добавления
|
||||
form: '.js-user-list-add-form',
|
||||
// Форма добавления
|
||||
form_text: '.js-user-list-add-form input[type=text]'
|
||||
form_text: '.js-user-list-add-form input[type=text]',
|
||||
// Выбор пользователей
|
||||
choose: '.js-user-list-add-choose'
|
||||
},
|
||||
// Анимация при скрытии объекта
|
||||
hide: {
|
||||
|
@ -73,6 +76,41 @@
|
|||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
// Показывает модальное окно со списком пользователей
|
||||
// и принимает от него список выбранных пользователей
|
||||
this.elements.choose.on( 'click', function (e) {
|
||||
ls.userModalList.show( this.option( 'urls.list' ), true, this.onModalListAdd.bind(this) );
|
||||
|
||||
e.preventDefault();
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
/**
|
||||
* Коллбэк вызываемый при отправке формы в мод. окне
|
||||
*
|
||||
* @param {Array} users Список выбранных пользователей
|
||||
*/
|
||||
onModalListAdd: function (users) {
|
||||
// Получаем логины для добавления
|
||||
var loginsNew = $.map(users, function(user) {
|
||||
return user.login;
|
||||
});
|
||||
|
||||
// Получаем логины которые уже прописаны
|
||||
var loginsOld = $.map(this.elements.form_text.val().split(','), function(login) {
|
||||
return $.trim(login) || null;
|
||||
});
|
||||
|
||||
// Мержим логины
|
||||
var logins = $.merge(loginsOld, loginsNew);
|
||||
|
||||
// Убираем дубликаты
|
||||
logins = $.grep(logins, function(value, key) {
|
||||
return $.inArray(value, logins) === key;
|
||||
});
|
||||
|
||||
this.elements.form_text.val( logins.join(', ') );
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -28,16 +28,21 @@
|
|||
<p class="{$component}-note">{$smarty.local.note}</p>
|
||||
{/if}
|
||||
|
||||
{* Ссылка показывающая мод. окно со списком пользователей *}
|
||||
{capture 'user_list_add_choose'}
|
||||
<a href="#" class="link-dotted js-{$component}-choose">
|
||||
{lang 'user_list_add.choose'}
|
||||
</a>
|
||||
{/capture}
|
||||
|
||||
{* Форма добавления *}
|
||||
{if $smarty.local.editable|default:true}
|
||||
<form class="{$component}-form js-{$component}-form">
|
||||
{$uid = "js-$component-form-users-"|cat:rand(0, 10e10)}
|
||||
|
||||
{component 'field' template='text'
|
||||
name = 'add'
|
||||
inputClasses = "autocomplete-users-sep {$uid}"
|
||||
inputClasses = "autocomplete-users-sep"
|
||||
label = $aLang.user_list_add.form.fields.add.label
|
||||
note = "<a href=\"#\" class=\"link-dotted js-modal-toggle-default\" data-lsmodaltoggle-url=\"{router page='ajax/modal-friend-list'}\" data-param-selectable=\"true\" data-param-target=\".{$uid}\">Выбрать из списка друзей</a>"}
|
||||
note = $smarty.capture.user_list_add_choose}
|
||||
|
||||
{component 'button' text=$aLang.common.add mods='primary' classes="js-$component-form-submit"}
|
||||
</form>
|
||||
|
|
|
@ -28,7 +28,7 @@ ls.userModalList = (function ($) {
|
|||
}
|
||||
});
|
||||
|
||||
if ( typeof modal.options.add === "function" ) {
|
||||
if ( $.isFunction(modal.options.add) ) {
|
||||
modal.options.add(users);
|
||||
}
|
||||
|
||||
|
|
|
@ -566,6 +566,8 @@ return array(
|
|||
* Пополняемый список пользователей
|
||||
*/
|
||||
'user_list_add' => array(
|
||||
'choose' => 'Выбрать из списка друзей',
|
||||
|
||||
// Форма добавления
|
||||
'form' => array(
|
||||
// Поля
|
||||
|
|
|
@ -241,7 +241,8 @@ jQuery(document).ready(function($){
|
|||
$('.js-activity-users').lsUserListAdd({
|
||||
urls: {
|
||||
add: aRouter.stream + 'ajaxadduser',
|
||||
remove: aRouter.stream + 'ajaxremoveuser'
|
||||
remove: aRouter.stream + 'ajaxremoveuser',
|
||||
list: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -263,7 +264,8 @@ jQuery(document).ready(function($){
|
|||
$('.js-feed-users').lsUserListAdd({
|
||||
urls: {
|
||||
add: aRouter.feed + 'ajaxadduser',
|
||||
remove: aRouter.feed + 'unsubscribe'
|
||||
remove: aRouter.feed + 'unsubscribe',
|
||||
list: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -406,7 +408,8 @@ jQuery(document).ready(function($){
|
|||
$('.js-user-list-add-blacklist').lsUserListAdd({
|
||||
urls: {
|
||||
add: aRouter['talk'] + 'ajaxaddtoblacklist/',
|
||||
remove: aRouter['talk'] + 'ajaxdeletefromblacklist/'
|
||||
remove: aRouter['talk'] + 'ajaxdeletefromblacklist/',
|
||||
list: aRouter.ajax + 'modal-friend-list'
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue