diff options
Diffstat (limited to 'include/acl_selectors.php')
-rw-r--r-- | include/acl_selectors.php | 81 |
1 files changed, 70 insertions, 11 deletions
diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 92f9436a2..148c67a6c 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -6,15 +6,14 @@ /** * @package acl_selectors */ -function group_select($selname,$selclass,$preselected = false,$size = 4) { - $a = get_app(); +function group_select($selname,$selclass,$preselected = false,$size = 4) { $o = ''; $o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" >\r\n"; - $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC", + $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `gname` ASC", intval(local_channel()) ); @@ -31,7 +30,7 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) { $selected = " selected=\"selected\" "; else $selected = ''; - $trimmed = mb_substr($rr['name'],0,12); + $trimmed = mb_substr($rr['gname'],0,12); $o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['name']}\" >$trimmed</option>\r\n"; } @@ -48,7 +47,6 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) { /* MicMee 20130114 function contact_selector no longer in use, sql table contact does no longer exist function contact_selector($selname, $selclass, $preselected = false, $options) { - $a = get_app(); $mutual = false; $networks = null; @@ -154,7 +152,6 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) { - $a = get_app(); $o = ''; @@ -210,12 +207,38 @@ function fixacl(&$item) { $item = str_replace(array('<','>'),array('',''),$item); } -function populate_acl($defaults = null,$show_jotnets = true, $showall = '') { +/** +* Builds a modal dialog for editing permissions, using acl_selector.tpl as the template. +* +* @param array $default Optional access control list for the initial state of the dialog. +* @param boolean $show_jotnets Whether plugins for federated networks should be included in the permissions dialog +* @param PermissionDescription $emptyACL_description - An optional description for the permission implied by selecting an empty ACL. Preferably an instance of PermissionDescription. +* @param string $dialog_description Optional message to include at the top of the dialog. E.g. "Warning: Post permissions cannot be changed once sent". +* @param string $context_help Allows the dialog to present a help icon. E.g. "acl_dialog_post" +* @param boolean $readonly Not implemented yet. When implemented, the dialog will use acl_readonly.tpl instead, so that permissions may be viewed for posts that can no longer have their permissions changed. +* +* @return string html modal dialog built from acl_selector.tpl +*/ +function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_description = '', $dialog_description = '', $context_help = '', $readonly = false) { $allow_cid = $allow_gid = $deny_cid = $deny_gid = false; + $showall_origin = ''; + $showall_icon = 'fa-globe'; + $role = get_pconfig(local_channel(),'system','permissions_role'); + + if(! $emptyACL_description) { + $showall_caption = t('Visible to your default audience'); + + } else if (is_a($emptyACL_description, '\\Zotlabs\\Lib\\PermissionDescription')) { + $showall_caption = $emptyACL_description->get_permission_description(); + $showall_origin = (($role === 'custom') ? $emptyACL_description->get_permission_origin_description() : ''); + $showall_icon = $emptyACL_description->get_permission_icon(); + + } else { + // For backwards compatibility we still accept a string... for now! + $showall_caption = $emptyACL_description; + } - if(! $showall) - $showall = t('Visible to your default audience'); if(is_array($defaults)) { $allow_cid = ((strlen($defaults['allow_cid'])) @@ -239,9 +262,16 @@ function populate_acl($defaults = null,$show_jotnets = true, $showall = '') { $tpl = get_markup_template("acl_selector.tpl"); $o = replace_macros($tpl, array( - '$showall' => $showall, + '$showall' => $showall_caption, + '$onlyme' => t('Only me'), + '$showallOrigin' => $showall_origin, + '$showallIcon' => $showall_icon, + '$select_label' => t('Who can see this?'), + '$showlimited' => t('Custom selection'), + '$showlimitedDesc' => t('Select "Show" to allow viewing. "Don\'t show" lets you override and limit the scope of "Show".'), '$show' => t("Show"), '$hide' => t("Don't show"), + '$search' => t("Search"), '$allowcid' => json_encode($allow_cid), '$allowgid' => json_encode($allow_gid), '$denycid' => json_encode($deny_cid), @@ -249,10 +279,39 @@ function populate_acl($defaults = null,$show_jotnets = true, $showall = '') { '$jnetModalTitle' => t('Other networks and post services'), '$jotnets' => $jotnets, '$aclModalTitle' => t('Permissions'), - '$aclModalDismiss' => t('Close') + '$aclModalDesc' => $dialog_description, + '$aclModalDismiss' => t('Close'), + '$helpUrl' => (($context_help == '') ? '' : (z_root() . '/help/' . $context_help)) )); return $o; } +/** +* Returns a string that's suitable for passing as the $dialog_description argument to a +* populate_acl() call for wall posts or network posts. +* +* This string is needed in 3 different files, and our .po translation system currently +* cannot be used as a string table (because the value is always the key in english) so +* I've centralized the value here (making this function name the "key") until we have a +* better way. +* +* @return string Description to present to user in modal permissions dialog +*/ +function get_post_aclDialogDescription() { + + // I'm trying to make two points in this description text - warn about finality of wall + // post permissions, and try to clear up confusion that these permissions set who is + // *shown* the post, istead of who is able to see the post, i.e. make it clear that clicking + // the "Show" button on a group does not post it to the feed of people in that group, it + // mearly allows those people to view the post if they are viewing/following this channel. + $description = t('Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post.'); + + // Lets keep the emphasis styling seperate from the translation. It may change. + $emphasisOpen = '<b><a href="' . z_root() . '/help/acl_dialog_post" target="hubzilla-help">'; + $emphasisClose = '</a></b>'; + + return sprintf($description, $emphasisOpen, $emphasisClose); +} + |