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-01 21:35:03 +07:00
parent 09533bf2c0
commit 9838766af7
6 changed files with 59 additions and 13 deletions

View file

@ -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"));
}

View file

@ -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(', ') );
},
/**

View file

@ -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>

View file

@ -28,7 +28,7 @@ ls.userModalList = (function ($) {
}
});
if ( typeof modal.options.add === "function" ) {
if ( $.isFunction(modal.options.add) ) {
modal.options.add(users);
}

View file

@ -566,6 +566,8 @@ return array(
* Пополняемый список пользователей
*/
'user_list_add' => array(
'choose' => 'Выбрать из списка друзей',
// Форма добавления
'form' => array(
// Поля

View file

@ -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'
}
});