<div id="acl-wrapper">
<div class="panel-group" id="visibility-accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-success">
- <div class="panel-heading{{if $visibility != 'public'}} collapsed{{/if}}" id="visibility-public-heading" aria-expanded="{{if $visibility == 'public'}}true{{else}}false{{/if}}">
- <label>
- <input type="radio" name="visibility" id="visibility-public" value="public" tabindex="14" {{if $visibility == 'public'}}checked{{/if}}>
- <i class="fa fa-globe"></i> {{$public_title}}
- </label>
- </div>
+ <label class="panel-heading{{if $visibility != 'public'}} collapsed{{/if}}" id="visibility-public-heading" aria-expanded="{{if $visibility == 'public'}}true{{else}}false{{/if}}">
+ <input type="radio" name="visibility" id="visibility-public" value="public" tabindex="14" {{if $visibility == 'public'}}checked{{/if}}>
+ <i class="fa fa-globe"></i> {{$public_title}}
+ </label>
<fieldset id="visibility-public-panel" class="panel-collapse collapse{{if $visibility == 'public'}} in{{/if}}" role="tabpanel" aria-labelledby="visibility-public-heading" {{if $visibility != 'public'}}disabled{{/if}}>
<div class="panel-body">
<p>{{$public_desc}}</p>
</fieldset>
</div>
<div class="panel panel-info">
- <div class="panel-heading{{if $visibility != 'custom'}} collapsed{{/if}}" id="visibility-custom-heading" aria-expanded="{{if $visibility == 'custom'}}true{{else}}false{{/if}}">
- <label>
- <input type="radio" name="visibility" id="visibility-custom" value="custom" tabindex="15" {{if $visibility == 'custom'}}checked{{/if}}>
- <i class="fa fa-lock"></i> {{$custom_title}}
- </label>
- </div>
+ <label class="panel-heading{{if $visibility != 'custom'}} collapsed{{/if}}" id="visibility-custom-heading" aria-expanded="{{if $visibility == 'custom'}}true{{else}}false{{/if}}">
+ <input type="radio" name="visibility" id="visibility-custom" value="custom" tabindex="15" {{if $visibility == 'custom'}}checked{{/if}}>
+ <i class="fa fa-lock"></i> {{$custom_title}}
+ </label>
<fieldset id="visibility-custom-panel" class="panel-collapse collapse{{if $visibility == 'custom'}} in{{/if}}" role="tabpanel" aria-labelledby="visibility-custom-heading" {{if $visibility != 'custom'}}disabled{{/if}}>
<input type="hidden" name="group_allow" value="{{$group_allow}}"/>
<input type="hidden" name="contact_allow" value="{{$contact_allow}}"/>
// Custom visibility tags inputs
let acl_groups = new Bloodhound({
local: {{$acl_groups|@json_encode nofilter}},
- identify: function(obj) { return obj.id; },
+ identify: function(obj) { return obj.type + '-' + obj.id.toString(); },
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(['name']),
queryTokenizer: Bloodhound.tokenizers.whitespace,
});
let acl_contacts = new Bloodhound({
local: {{$acl_contacts|@json_encode nofilter}},
- identify: function(obj) { return obj.id; },
+ identify: function(obj) { return obj.type + '-' + obj.id.toString(); },
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(['name', 'addr']),
queryTokenizer: Bloodhound.tokenizers.whitespace,
});
let acl = new Bloodhound({
local: {{$acl_list|@json_encode nofilter}},
- identify: function(obj) { return obj.id; },
+ identify: function(obj) { return obj.type + '-' + obj.id.toString(); },
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(['name', 'addr']),
queryTokenizer: Bloodhound.tokenizers.whitespace,
+ sorter: function (itemA, itemB) {
+ if (itemA.name === itemB.name) {
+ return 0;
+ } else if (itemA.name > itemB.name) {
+ return 1;
+ } else {
+ return -1;
+ }
+ },
});
acl.initialize();
return 'label label-info';
}
},
- itemValue: 'id',
+ itemValue: function (item) { return item.type + '-' + item.id.toString(); },
itemText: 'name',
itemThumb: 'micro',
itemTitle: function(item) {
return 'label label-info';
}
},
- itemValue: 'id',
+ itemValue: function (item) { return item.type + '-' + item.id.toString(); },
itemText: 'name',
itemThumb: 'micro',
itemTitle: function(item) {
// Import existing ACL into the tags input fields.
- $group_allow_input.val().split(',').forEach(function (val) {
- $acl_allow_input.tagsinput('add', acl_groups.get(val)[0]);
+ $group_allow_input.val().split(',').forEach(function (group_id) {
+ $acl_allow_input.tagsinput('add', acl_groups.get('group-' + group_id)[0]);
});
- $contact_allow_input.val().split(',').forEach(function (val) {
- $acl_allow_input.tagsinput('add', acl_contacts.get(val)[0]);
+ $contact_allow_input.val().split(',').forEach(function (contact_id) {
+ $acl_allow_input.tagsinput('add', acl_contacts.get('contact-' + contact_id)[0]);
});
- $group_deny_input.val().split(',').forEach(function (val) {
- $acl_deny_input.tagsinput('add', acl_groups.get(val)[0]);
+ $group_deny_input.val().split(',').forEach(function (group_id) {
+ $acl_deny_input.tagsinput('add', acl_groups.get('group-' + group_id)[0]);
});
- $contact_deny_input.val().split(',').forEach(function (val) {
- $acl_deny_input.tagsinput('add', acl_contacts.get(val)[0]);
+ $contact_deny_input.val().split(',').forEach(function (contact_id) {
+ $acl_deny_input.tagsinput('add', acl_contacts.get('contact-' + contact_id)[0]);
});
// Anti-duplicate callback + acl fields value generation