diff options
-rw-r--r-- | include/acl_selectors.php | 2 | ||||
-rw-r--r-- | view/js/acl.js | 64 | ||||
-rwxr-xr-x | view/tpl/acl_selector.tpl | 9 |
3 files changed, 60 insertions, 15 deletions
diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 6b727c9a2..82f419aea 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -269,6 +269,8 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti $tpl = get_markup_template("acl_selector.tpl"); $o = replace_macros($tpl, array( '$showall' => $showall_caption, + '$onlyme' => t('Only me'), + '$add_others' => t('Add others'), '$showallOrigin' => $showall_origin, '$showallIcon' => $showall_icon, '$select_label' => t('Who can see this?'), diff --git a/view/js/acl.js b/view/js/acl.js index a04cf9d86..92a80e3d1 100644 --- a/view/js/acl.js +++ b/view/js/acl.js @@ -17,8 +17,10 @@ function ACL(backend_url, preset) { that.list_content = $("#acl-list-content"); that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html()); that.showall = $("#acl-showall"); + that.onlyme = $("#acl-onlyme"); that.showlimited = $("#acl-showlimited"); that.acl_select = $("#acl-select"); + that.showacl = $("#show-acl"); that.preset = preset; that.self = []; @@ -33,17 +35,22 @@ function ACL(backend_url, preset) { that.acl_select.change(function(event) { var option = that.acl_select.val(); - if(option == 'option1') { // public + if(option == 'public') { // public that.on_showall(event); } - if(option == 'option2') { // restricted + if(option == 'onlyme') { // limited to one self + that.on_onlyme(event); + } + + if(option == 'limited') { // limited to custom selection that.on_showlimited(event); } }); $(document).on('click','.acl-button-show',that.on_button_show); $(document).on('click','.acl-button-hide',that.on_button_hide); + $("#acl-search").keypress(that.on_search); /* startup! */ @@ -86,6 +93,21 @@ ACL.prototype.on_search = function(event) { that.kp_timer = setTimeout( that.search, 1000); }; +ACL.prototype.on_onlyme = function(event) { + // preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton + event.stopPropagation(); + + that.allow_cid = [that.self[0]]; + that.allow_gid = []; + that.deny_cid = []; + that.deny_gid = []; + + that.update_view(event.target.value); + that.on_submit(); + + return true; // return true so that state changes from update_view() will be applied +}; + ACL.prototype.on_showall = function(event) { // preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton event.stopPropagation(); @@ -95,7 +117,7 @@ ACL.prototype.on_showall = function(event) { that.deny_cid = []; that.deny_gid = []; - that.update_view(); + that.update_view(event.target.value); that.on_submit(); return true; // return true so that state changes from update_view() will be applied @@ -114,7 +136,7 @@ ACL.prototype.on_showlimited = function(event) { that.deny_cid = (that.preset[2] || []); that.deny_gid = (that.preset[3] || []); - that.update_view(); + that.update_view(event.target.value); that.on_submit(); return true; // return true so that state changes from update_view() will be applied @@ -218,30 +240,46 @@ ACL.prototype.set_deny = function(itemid) { that.update_view(); }; -ACL.prototype.update_select = function(isPublic) { - that.showall.prop('selected', isPublic); - that.showlimited.prop('selected', !isPublic); +ACL.prototype.update_select = function(preset) { + that.showall.prop('selected', preset === 'public'); + that.onlyme.prop('selected', preset === 'onlyme'); + that.showlimited.prop('selected', preset === 'limited'); }; -ACL.prototype.update_view = function() { +ACL.prototype.update_view = function(value) { + if (that.allow_gid.length === 0 && that.allow_cid.length === 0 && that.deny_gid.length === 0 && that.deny_cid.length === 0) { that.list.hide(); //hide acl-list + that.showacl.hide(); //hide showacl button that.info.show(); //show acl-info - that.update_select(true); + that.update_select('public'); /* jot acl */ $('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-lock').addClass('fa-unlock'); - $('#jot-public').show(); $('.profile-jot-net input').attr('disabled', false); - } else { + } + + // if value != 'onlyme' we should fall through this one + else if (that.allow_gid.length === 0 && that.allow_cid.length === 1 && that.allow_cid[0] === that.self[0] && that.deny_gid.length === 0 && that.deny_cid.length === 0 && value === 'onlyme') { + that.list.hide(); //hide acl-list if + that.showacl.show(); //show showacl button + that.info.hide(); //show acl-info + that.update_select('onlyme'); + + /* jot acl */ + $('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-unlock').addClass('fa-lock'); + $('.profile-jot-net input').attr('disabled', 'disabled'); + } + + else { that.list.show(); //show acl-list + that.showacl.hide(); //hide showacl button that.info.hide(); //hide acl-info - that.update_select(false); + that.update_select('limited'); /* jot acl */ $('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-unlock').addClass('fa-lock'); - $('#jot-public').hide(); $('.profile-jot-net input').attr('disabled', 'disabled'); } diff --git a/view/tpl/acl_selector.tpl b/view/tpl/acl_selector.tpl index b30669f9a..1711cee8a 100755 --- a/view/tpl/acl_selector.tpl +++ b/view/tpl/acl_selector.tpl @@ -14,10 +14,15 @@ {{/if}} <label for="acl-select">{{$select_label}}</label> <select id="acl-select" name="optionsRadios" class="form-control form-group"> - <option id="acl-showall" value="option1" selected>{{$showall}}</option> - <option id="acl-showlimited" value="option2">{{$showlimited}}</option> + <option id="acl-showall" value="public" selected>{{$showall}}</option> + <option id="acl-onlyme" value="onlyme">{{$onlyme}}</option> + <option id="acl-showlimited" value="limited">{{$showlimited}}</option> </select> + <div id="show-acl" class="form-group"> + <button type="button" class="btn btn-success form-group" onclick="openClose('acl-list'); closeOpen('show-acl');"><i class="fa fa-user-plus"></i> {{$add_others}}</button> + </div> + {{if $showallOrigin}} <div id="acl-info" class="form-group"> <i class="fa fa-info-circle"></i> {{$showallOrigin}} |