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.
 
 
 
 
 
 

317 lines
18 KiB

{* $Id$ *}
{title help="Permissions"}{if $objectType eq 'global'}{tr}Assign global permissions{/tr}{else}{tr}Assign permissions to {/tr}{$objectType}: {$objectName}{/if}{/title}
<div class="t_navbar mb-4">
{if !empty($referer)}{button href="$referer" _class="btn btn-link" _type="link" _icon_name="back" _text="{tr}Back{/tr}"}{/if}
{if $tiki_p_admin eq 'y'} {* only full admins can manage groups, not tiki_p_admin_users *}
{button href="tiki-admingroups.php" class="btn btn-link" _type="link" _icon_name="group" _text="{tr}Admin Groups{/tr}"}
{/if}
{if $tiki_p_admin_users eq 'y'}
{button href="tiki-adminusers.php" class="btn btn-link" _type="link" _icon_name="user" _text="{tr}Admin users{/tr}"}
{/if}
{if $tiki_p_admin_categories eq 'y'}
{button href="tiki-admin_categories.php" class="btn btn-link" _type="link" _icon_name="admin_category" _text="{tr}Admin Categories{/tr}"}
{/if}
{button href="tiki-list_object_permissions.php" class="btn btn-link" _type="link" _icon_name="permission" _text="{tr}Object Permissions List{/tr}"}
</div>
{tabset name='tabs_objectpermissions'}
{tab name="{tr}Assign Permissions{/tr}"}
{if $prefs.feature_tabs neq 'y'}
<h2>{tr}Edit Permissions{/tr}</h2>
{/if}
<form method="post" action="{$smarty.server.SCRIPT_NAME}?{query}">
{ticket}
{capture name="notices"}
{if empty($filegals_manager)}
{if $objectType eq 'global'}
{remarksbox type="note" title="{tr}Note{/tr}"}
{tr}Currently editing Global permissions.{/tr}
{/remarksbox}
{elseif $permissions_displayed eq 'direct'}
{remarksbox type="warning" title="{tr}Warning{/tr}"}
{if $objectType neq 'category'}
{tr}This object's direct permissions override any global permissions or category permissions affecting this object.{/tr}
{else}
{tr}This category's direct permissions override any global permissions affecting objects in it.{/tr}
{/if}
<br>
{tr}To edit global permissions{/tr} {self_link objectType='global' objectId='' objectName='' permType=$permType _class='alert-link'}{tr}click here{/tr}{/self_link}.
{/remarksbox}
{elseif $permissions_displayed eq 'category'}
{remarksbox type="warning" title="{tr}Warning{/tr}"}
{tr}No permissions yet applied to this object but category permissions affect this object and are displayed below.{/tr}<br>
{if $tiki_p_admin eq 'y'}{tr}To edit category permissions{/tr} {self_link _script='tiki-admin_categories.php' _class='alert-link'}{tr}click here{/tr}{/self_link}.{/if}
{/remarksbox}
{elseif $permissions_displayed eq 'parent'}
{remarksbox type="warning" title="{tr}Warning{/tr}"}
{tr}No permissions yet applied to this object but parent object's permissions affect this object and are displayed below.{/tr}<br>
{if $tiki_p_admin eq 'y'}{tr}To edit parent object's permissions{/tr} {self_link objectType=$permissions_parent_type objectId=$permissions_parent_id objectName=$permissions_parent_name _class='alert-link'}{tr}click here{/tr}{/self_link}.{/if}
{/remarksbox}
{elseif $permissions_displayed eq 'global'}
{remarksbox type="warning" title="{tr}Warning{/tr}" highlight="y"}
{tr}No direct permissions yet applied to this object. Global permissions apply.{/tr}<br>
{if $tiki_p_admin eq 'y'}{tr}To edit global permissions{/tr} {self_link objectType='global' permType=$permType _class='alert-link'}{tr}click here{/tr}{/self_link}.{/if}
<br><br>
{tr}Currently inherited permissions displayed.{/tr}
{/remarksbox}
{/if}
{/if}
{if $objectType eq 'category' and $groupRole}
{remarksbox type="warning" title="{tr}Warning{/tr}"}
{tr}This category's permissions are being managed by a Group Role.{/tr}<br>
{/remarksbox}
{/if}
{/capture}
{$smarty.capture.notices}
<br/>
<label for="show_disabled_features2">{tr}Show permissions for disabled features{/tr}</label>
<input type="checkbox" name="show_disabled_features" id="show_disabled_features2" {if isset($show_disabled_features) and $show_disabled_features eq 'y'}checked="checked"{/if} onchange="this.form.submit();">
<hr>
<h2>{if $objectType eq 'global'}{tr}Assign global permissions{/tr}{elseif $objectType eq 'category'}{tr}Assign permissions to this category{/tr}{else}{tr}Assign permissions to this object{/tr}{/if} {icon name="cog" id="perms_busy" style="vertical-align:top; display:none;"}</h2>
<div>
<input type="hidden" name="referer" value="{$referer|escape}">
<input type="hidden" name="objectName" value="{$objectName|escape}">
<input type="hidden" name="objectType" value="{$objectType|escape}">
<input type="hidden" name="objectId" value="{$objectId|escape}">
<input type="hidden" name="permType" value="{$permType|escape}">
<div class="input_submit_container" style="text-align: center">
<input
type="submit"
class="btn btn-primary btn-sm"
name="assign"
value="{tr}Assign{/tr}"
onclick="confirmPopup('{tr}Modify permissions?{/tr}')"
>
{if $permissions_displayed eq 'direct' and $objectType neq 'global'}
{if $objectType == 'category'}
{$value="{tr}Delete category permissions{/tr}"}
{$title="{tr}This will remove all the settings here and permissions will be reset to inherit the global sitewide permissions.{/tr}"}
{$confirm="{tr}Delete category permissions?{/tr}"}
{else}
{$value="{tr}Delete object permissions{/tr}"}
{$title="{tr}This will remove all the settings here and permissions will be reset to inherit any category permissions that are set, or the global sitewide permissions.{/tr}"}
{$confirm="{tr}Delete object permissions?{/tr}"}
{/if}
<input
type="submit"
class="btn btn-danger btn-sm"
name="remove"
value="{$value}"
class="tips"
title="{tr}Reset Perms:{/tr}{$title}"
{/if}
<input type="submit" class="btn btn-secondary btn-sm" name="copy" value="{tr}Copy{/tr}" class="tips" title="{tr}Permissions Clipboard{/tr}|{tr}Copy the permissions set here{/tr}">
{if !empty($perms_clipboard_source)}<input type="submit" class="btn btn-primary btn-sm" name="paste" value="{tr}Paste{/tr}" class="tips" title="{tr}Permissions Clipboard{/tr}|{tr}Paste copied permissions from {/tr}<em>{$perms_clipboard_source}</em>" />{/if}
</div>
{if $objectType eq 'category'}
<p>
<input type="checkbox" id="propagate_category" name="propagate_category" value="1">
<label for="propagate_category">{tr}Assign or remove permissions on <em>all</em> child categories{/tr}</label>
</p>
{jq}
$("input[name='assign'],input[name='remove']").click(function(){
if ($("#propagate_category").prop("checked")) {
return confirm("{tr}Are you sure you want to affect all child categories?\nThere is no undo.{/tr}");
}
});
{/jq}
{/if}
{if ($objectType eq 'wiki' or $objectType eq 'wiki page') and !empty($inStructure)}
<input name="assignstructure" id="assignstructure" type="checkbox">
<label for="assignstructure">{tr}Assign or remove permissions on all pages of the sub-structure{/tr}</label>
{jq}
$("input[name='assign'],input[name='remove']").click(function(){
if ($("#assignstructure").prop("checked")) {
return confirm("{tr}Are you sure you want to affect all pages in this sub-structure?\nThere is no undo.{/tr}");
}
});
{/jq}
{/if}
</div>
<h3>{tr}Permissions{/tr}</h3>
<div class="permission_table table-responsive">
{treetable _data=$perms _checkbox=$permGroups _checkboxTitles=$groupNames
_checkboxTooltips=['_checkboxTitles', 'permDesc', 'permName'] _checkboxTooltipFormat='%0: %1 [%2]'
_checkboxColumnIndex=$permGroupCols _valueColumnIndex="permName"
_columns="\"label\"=\"{tr}Permission{/tr}\"" _groupColumn='type' _openall='y'
_showSelected='y' _columnsContainHtml='y' class='table objectperms'}
</div>
{if ($perms|@count) eq '0'}{remarksbox type="warning" title="{tr}Warning{/tr}"}{tr}You must select at least one feature{/tr}.{/remarksbox}{/if}
<div class="input_submit_container" style="text-align: center">
<input
type="submit"
class="btn btn-primary btn-sm"
name="assign"
value="{tr}Assign{/tr}"
onclick="confirmPopup('{tr}Modify permissions?{/tr}')"
>
{if $permissions_displayed eq 'direct' and $objectType neq 'global'}
<input type="submit" class="btn btn-danger btn-sm" name="remove" value="{if $objectType eq 'category'}{tr}Delete category permissions{/tr}{else}{tr}Delete object permissions{/tr}{/if}" class="tips" title="{tr}Reset Perms{/tr}|{tr}This will remove all the settings here and permissions will be reset to inherit the global sitewide permissions.{/tr}">
{/if}
</div>
</form>
{/tab}
{if !empty($permissions_added) or !empty($permissions_removed)}
{tab name="{tr}View Differences{/tr}"}
{if !empty($permissions_added)}
<h3>{tr}Permissions added:{/tr}</h3>
<blockquote>{$permissions_added}</blockquote>
{/if}
{if !empty($permissions_removed)}
<h3>{tr}Permissions removed:{/tr}</h3>
<blockquote>{$permissions_removed}</blockquote>
{/if}
{/tab}
{/if}
{tab name="{tr}Select groups{/tr}"}
<form method="post" action="{$smarty.server.SCRIPT_NAME}?{query}">
<div>
<input type="hidden" name="referer" value="{$referer|escape}">
{if isset($groupsFiltered)}
{remarksbox type="warning" title="{tr}Note{/tr}"}
{tr}Some of your groups have been automatically hidden.<br> Select the groups below to assign permissions for.{/tr}
{tr}These groups are not the groups that have permissions on the object. It is only the groups you can see in the columns of the first tab.{/tr}
{/remarksbox}
{else}
{remarksbox type="note" title="{tr}Note{/tr}"}
{tr}These groups are not the groups that have permissions on the object. It is only the groups you can see in the columns of the first tab.{/tr}
{/remarksbox}
{/if}
{if $objectId}
<div class="t_navbar">
<input type="submit" class="btn btn-primary btn-sm" name="used_groups" value="{tr}Select only groups that have a perm with the object{/tr}">
</div>
{/if}
<h2>{tr}Groups{/tr}</h2>
<div>
{treetable _data=$groups _checkbox="group_filter" _checkboxTitles="{tr}Select all{/tr}"
_checkboxColumnIndex="in_group_filter" _valueColumnIndex="id"
_columns='"groupName"="{tr}Group name{/tr}","groupDesc"="{tr}Description{/tr}"'
_sortColumn='parents' _collapseMaxSections=20 _sortColumnDelimiter=',' _selectAllHiddenToo='y'}
</div>
<div class="input_submit_container" style="text-align: center">
<input type="submit" class="btn btn-primary btn-sm" name="group_select" value="{tr}Select{/tr}">
</div>
</div>
</form>
{/tab}
{tab name="{tr}Select features{/tr}"}
<form method="post" action="{$smarty.server.SCRIPT_NAME}?{query}">
<div>
<input type="hidden" name="referer" value="{$referer|escape}">
{if isset($featuresFiltered)}
{remarksbox type="warning" title="{tr}Warning{/tr}"}
{tr}Some of your features have been automatically hidden.<br> Select the features below to assign permissions for.{/tr}
{/remarksbox}
{/if}
<label for="show_disabled_features2">{tr}Show permissions for disabled features{/tr}</label>
<input type="checkbox" name="show_disabled_features" id="show_disabled_features2" {if isset($show_disabled_features) and $show_disabled_features eq 'y'}checked="checked"{/if} onchange="this.form.submit();">
<h2>{tr}Features{/tr}</h2>
<div>
{treetable _data=$features _checkbox="feature_filter" _checkboxTitles="{tr}Select all{/tr}" _checkboxColumnIndex="in_feature_filter" _valueColumnIndex="featureName" _columns='"featureName"="{tr}Feature name{/tr}"' _sortColumn="featureName" _sortColumnDelimiter='*' _collapseMaxSections=20 _listFilter='n'}
</div>
<div class="input_submit_container" style="text-align: center">
<input type="submit" class="btn btn-primary btn-sm" name="feature_select" value="{tr}Select{/tr}">
</div>
</div>
</form>
{/tab}
{* Quickperms *}
{if $prefs.feature_quick_object_perms eq 'y'}
{tab name="{tr}Quick Permissions{/tr}"}
<form name="allperms" method="post" action="{$smarty.server.SCRIPT_NAME}?{query}">
<div>
<input type="hidden" name="quick_perms" value="true">
{if $prefs.feature_tabs neq 'y'}
<h2>{tr}Quick Permissions{/tr}</h2>
{/if}
{$smarty.capture.notices}
<h2>{tr}Assign Quick-Permissions to this object{/tr}</h2>
<table class="table">
<tr>
<th>{tr}Groups{/tr}</th>
{foreach item=permgroup from=$quickperms}
<th>{$permgroup.name}</th>
{/foreach}
<th class="tips" title="|{tr}Individual permissions are currently assigned (See tab Assign Permissions){/tr}">Advanced</th>
</tr>
{section name=grp loop=$groups}
{if $groups[grp].groupName neq 'Admins'}
<tr>
<td>
{$groups[grp].groupName|escape}
</td>
{foreach item=permgroup from=$quickperms}
<td>
<input type="radio" name="perm_{$groups[grp].groupName|escape:url}" value="{$permgroup.name}" {if $groups[grp].groupSumm eq $permgroup.name}checked{/if}>
</td>
{/foreach}
<td>
<input type="radio" name="perm_{$groups[grp].groupName|escape:url}" value="userdefined" {if $groups[grp].groupSumm eq 'userdefined'}checked{/if} onclick="return false;">
</td>
</tr>
{/if}
{/section}
</table>
{ticket}
<input type="hidden" name="referer" value="{$referer|escape}">
<input type="hidden" name="objectName" value="{$objectName|escape}">
<input type="hidden" name="objectType" value="{$objectType|escape}">
<input type="hidden" name="objectId" value="{$objectId|escape}">
<input type="hidden" name="permType" value="{$permType|escape}">
<input type="hidden" name="show_disabled_features" value="{$show_disabled_features}">
<label for="show_disabled_features3">{tr}Set permissions for disabled features{/tr}</label>
<input type="checkbox" name="show_disabled_features" id="show_disabled_features3" {if isset($show_disabled_features) and $show_disabled_features eq 'y'}checked="checked"{/if}>
<div class="input_submit_container" style="text-align: center">
<input type="submit" class="btn btn-primary btn-sm" name="assign" value="{tr}Assign{/tr}">
</div>
{if empty($filegals_manager)}
{remarksbox type="note" icon="bricks" title="{tr}Experimental{/tr}"}
{tr}<em>Quick permissions</em> should be considered as an experimental feature.{/tr}<br/>
{tr}Although permissions will be set as expected using this form, it doesn't necessarily show the current permissions reliably.{/tr}<br><br>
{tr}There is also no undo - <strong>Use with care!</strong>{/tr}
{/remarksbox}
{/if}
</div>
</form>
{/tab}
{/if}
{* Quickperms END *}
{/tabset}