]> git.mxchange.org Git - friendica.git/blobdiff - view/templates/acl_selector.tpl
Merge pull request #8112 from annando/build-query
[friendica.git] / view / templates / acl_selector.tpl
index 21b28d5d7aeb67d5bd96b2b9b214bc216cf86015..a9da4f6118d4c6bfbc3ed12771a354b14d569c6a 100644 (file)
@@ -1,12 +1,10 @@
 <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