You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
2.3 KiB

{* $Id$ *}
<div class="row">
<div class="col-sm-6">
{tr}Filter by group:{/tr}
<select id="user_group_selector_{$field.fieldId}" multiple="multiple" class="form-select">
{section name=ix loop=$data.groups}
<option value="{$data.groups[ix]|escape}" {if (in_array($data.groups[ix], $data.selected_groups))}selected{/if}>{$data.groups[ix]}</option>
{/section}
</select>
</div>
<div class="col-sm-6">
{tr}Select user(s):{/tr}
<input type="hidden" name="{$field.ins_id}[]" value="">
<select name="{$field.ins_id}[]" id="user_selector_{$field.fieldId}" multiple="multiple" class="form-select">
{section name=ix loop=$data.selected_users}
<option value="{$data.selected_users[ix]}" selected>{if ($field.showRealname == 'y')}{$data.selected_users[ix]|username}{else}{$data.selected_users[ix]}{/if}</option>
{/section}
</select>
</div>
</div>
{jq}
var users{{$field.fieldId}} = {{$data.users|json_encode}};
$("#user_group_selector_{{$field.fieldId}}").change(function() {
var $selector = $('#user_selector_{{$field.fieldId}}'),
selected = $selector.val(),
group_users = {};
$.map($(this).val(), function(group) {
$.extend(group_users, users{{$field.fieldId}}[group] || {});
});
var all_users = Object.keys(group_users);
var to_remove = $.map(selected, function(user) {
return $.inArray(user, all_users) < 0 ? user : null;
});
if (to_remove.length > 0 && ! confirm(tr("Please confirm if you want to remove the following users:")+" "+to_remove.join(', '))) {
return;
}
$selector.empty();
$.map(all_users, function(user){
return {value: user, label: group_users[user]};
}
).sort(function(u1, u2) {
u1 = u1.label.toUpperCase();
u2 = u2.label.toUpperCase();
return u1 < u2 ? -1 : ( u1 > u2 ? 1 : 0 );
}).map(function(opt) {
$('<option>')
.attr('value', opt.value)
.text(opt.label)
.appendTo($('#user_selector_{{$field.fieldId}}'));
});
$selector.val(selected).trigger("change.select2");
}).trigger('change');
{/jq}