From: <flo...@us...> - 2009-07-13 10:58:08
|
Revision: 20079 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=20079&view=rev Author: floh1111 Date: 2009-07-13 10:58:06 +0000 (Mon, 13 Jul 2009) Log Message: ----------- Readded Qickpermissions. Permissionbundles are now based on the permission levels. Modified Paths: -------------- trunk/templates/tiki-objectpermissions.tpl trunk/tiki-objectpermissions.php Modified: trunk/templates/tiki-objectpermissions.tpl =================================================================== --- trunk/templates/tiki-objectpermissions.tpl 2009-07-13 10:53:31 UTC (rev 20078) +++ trunk/templates/tiki-objectpermissions.tpl 2009-07-13 10:58:06 UTC (rev 20079) @@ -65,6 +65,7 @@ </table> {/tab} + {tab name='{tr}Edit Permissions{/tr}'} {if $prefs.feature_tabs neq 'y'} @@ -187,4 +188,69 @@ </div> </form> {/tab} + +{* Quickperms *} + +{if $prefs.feature_quick_object_perms eq 'y'} +<form name="allperms" method="post" action="tiki-objectpermissions.php{if $filegals_manager neq ''}?filegals_manager={$filegals_manager|escape}{/if}"> +<input type="hidden" name="quick_perms" value="true"/> + +{tab name='{tr}Quick Permissions{/tr}'} + +{if $prefs.feature_tabs neq 'y'} + <h2>{tr}Quick Permissions{/tr}</h2> +{/if} + +{if $filegals_manager eq ''} +{remarksbox type="warning" title="{tr}Warning{/tr}"}{tr}These permissions override any global permissions or category permissions affecting this object.{/tr}<br /> +{if $tiki_p_admin eq 'y'}{tr}To edit global permissions <a class="rbox-link" href="tiki-admingroups.php">click here</a>.{/tr}{/if} +{/remarksbox} +{/if} + +<h2>{tr}Assign Quick-Permissions to this object{/tr}</h2> + + +<table width="100%"> + <tr class="{cycle advance=true}"> + <th>Groups</th> + <th onmouseover="return overlib('{foreach item=prm from=$perms_admin}<div>{$prm}</div>{/foreach}');" onmouseout="nd();">Admin</th> + <th onmouseover="return overlib('{foreach item=prm from=$perms_editors}<div>{$prm}</div>{/foreach}');" onmouseout="nd();">Editor</th> + <th onmouseover="return overlib('{foreach item=prm from=$perms_registered}<div>{$prm}</div>{/foreach}');" onmouseout="nd();">Registered</th> + <th onmouseover="return overlib('{foreach item=prm from=$perms_basic}<div>{$prm}</div>{/foreach}');" onmouseout="nd();">Basic</th> + <th onmouseover="return overlib('<p>No Permissions are added</p><p>All assigned permissions will be removed</p>');" onmouseout="nd();">No access</th> + <th onmouseover="return overlib('A couple of userdefined permissions are currently assigned (See tab Edit Permissions)');" onmouseout="nd();">Advanced</th> + </tr> + {cycle print=false values="even,odd"} + {section name=grp loop=$groups} + <tr> + <td> + {$groups[grp].groupName|escape} + </td> + <td><input type="radio" name="perm_{$groups[grp].groupName}" value="admin" {if $groups[grp].groupSumm eq 'admin'}checked{/if} /></td> + <td><input type="radio" name="perm_{$groups[grp].groupName}" value="editors"{if $groups[grp].groupSumm eq 'editors'}checked{/if} /></td> + <td><input type="radio" name="perm_{$groups[grp].groupName}" value="registered" {if $groups[grp].groupSumm eq 'registered'}checked{/if} /></td> + <td><input type="radio" name="perm_{$groups[grp].groupName}" value="basic" {if $groups[grp].groupSumm eq 'basic'}checked{/if} /></td> + <td><input type="radio" name="perm_{$groups[grp].groupName}" value="none" {if $groups[grp].groupSumm eq 'none'}checked{/if} /></td> + <td><input type="radio" name="perm_{$groups[grp].groupName}" value="userdefined" {if $groups[grp].groupSumm eq 'userdefined'}checked{/if} disabled /></td> + </tr> + {/section} +</table> + +<input type="hidden" name="page" value="{$page|escape}" /> +<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" name="assign" value="{tr}Assign{/tr}" /> +</div> + +</fieldset> +{/tab} +</form> +{/if} + +{* Quickperms END *} + {/tabset} Modified: trunk/tiki-objectpermissions.php =================================================================== --- trunk/tiki-objectpermissions.php 2009-07-13 10:53:31 UTC (rev 20078) +++ trunk/tiki-objectpermissions.php 2009-07-13 10:58:06 UTC (rev 20079) @@ -57,8 +57,70 @@ $smarty->assign('inStructure', 'y'); } } +//Quickperms +$perms = $userlib->get_permissions(0, -1, 'permName_asc', '', $_REQUEST["permType"], '', true); + +foreach($perms['data'] as $perm) { + if ($perm['level']=='basic') + $quickperms_['basic'][$perm['permName']] = $perm['permName']; + elseif ($perm['level']=='registered') + $quickperms_['registered'][$perm['permName']] = $perm['permName']; + elseif ($perm['level']=='editors') + $quickperms_['editors'][$perm['permName']] = $perm['permName']; + elseif ($perm['level']=='admin') + $quickperms_['admin'][$perm['permName']] = $perm['permName']; +} + +unset($perms); + +if(!isset($quickperms_['basic'])) + $quickperms_['basic'] = array(); +if(!isset($quickperms_['registered'])) + $quickperms_['registered'] = array(); +if(!isset($quickperms_['editors'])) + $quickperms_['editors'] = array(); +if(!isset($quickperms_['admin'])) +$quickperms_['admin'] = array(); + +$perms['basic'] = array_merge($quickperms_['basic']); +$perms['registered'] = array_merge($quickperms_['basic'], $quickperms_['registered']); +$perms['editors'] = array_merge($quickperms_['basic'], $quickperms_['registered'], $quickperms_['editors']); +$perms['admin'] = array_merge($quickperms_['basic'], $quickperms_['registered'], $quickperms_['editors'], $quickperms_['admin']); +$perms['none'] = array(); + +$smarty->assign('perms_admin', $perms['admin']); +$smarty->assign('perms_registered', $perms['registered']); +$smarty->assign('perms_editors', $perms['editors']); +$smarty->assign('perms_basic', $perms['basic']); + +if (isset($_REQUEST['assign']) && isset($_REQUEST['quick_perms'])) { + check_ticket('object-perms'); + + $groups = $userlib->get_groups(0, -1, 'groupName_asc', '', '', 'n'); + + foreach($groups['data'] as $group) { + if(isset($_REQUEST["perm_".$group['groupName']])) { + $group = $group['groupName']; + $permission = $_REQUEST["perm_".$group]; + + if ($permission != "userdefined") { + //Remove all permissions of a group + foreach($perms['admin'] as $perm) { + $userlib->remove_object_permission($group, $_REQUEST["objectId"], $_REQUEST["objectType"], $perm); + } + + //Add chosen quickperm bundle to the objcet/group + foreach($perms["$permission"] as $perm) { + $userlib->assign_object_permission($group, $_REQUEST["objectId"], $_REQUEST["objectType"], $perm); + } + } + } + } +} +//Quickperm END + // Process the form to assign a new permission to this page -if (isset($_REQUEST['assign']) && isset($_REQUEST['group']) && isset($_REQUEST['perm'])) { +elseif (isset($_REQUEST['assign']) && isset($_REQUEST['group']) && isset($_REQUEST['perm'])) { check_ticket('object-perms'); foreach($_REQUEST['perm'] as $perm) { if ($tiki_p_admin_objects != 'y' && !$userlib->user_has_permission($user, $perm)) { @@ -106,18 +168,67 @@ } } } -if (isset($_REQUEST['delsel_x']) || isset($_REQUEST['action']) || isset($_REQUEST['assign'])) { +if (isset($_REQUEST['quick_perms'])) { + $cookietab = 3; + setcookie('tab',$cookietab); + $smarty->assign_by_ref('cookietab',$cookietab); +} elseif ((isset($_REQUEST['delsel_x']) || isset($_REQUEST['action']) || isset($_REQUEST['assign']))) { $cookietab = 2; setcookie('tab', $cookietab); $smarty->assign_by_ref('cookietab', $cookietab); } // Now we have to get the individual page permissions if any $page_perms = $userlib->get_object_permissions($_REQUEST["objectId"], $_REQUEST["objectType"]); +//Quickperm +foreach($page_perms as $perm) { + $current_permissions[$perm['groupName']][] = $perm['permName']; +} +//Quickperm END + // Get a list of groups $groups = $userlib->get_groups(0, -1, 'groupName_asc', '', '', 'n'); + +//Quickperm +foreach($groups['data'] as $key=>$group) { + if (!empty($current_permissions) && is_array($current_permissions[$group['groupName']])) { + //Check if Group has admin perm. + $diff1 = array_diff($current_permissions[$group['groupName']], $perms['admin']); + $diff2 = array_diff($perms['admin'], $current_permissions[$group['groupName']]); + if (empty($diff1) AND empty($diff2)) + $groups['data'][$key]['groupSumm'] = "admin"; + + //Check if Group has editors perm. + $diff1 = array_diff($current_permissions[$group['groupName']], $perms['editors']); + $diff2 = array_diff($perms['editors'], $current_permissions[$group['groupName']]); + if (empty($diff1) AND empty($diff2)) + $groups['data'][$key]['groupSumm'] = "editors"; + + //Check if Group has registered perm. + $diff1 = array_diff($current_permissions[$group['groupName']], $perms['registered']); + $diff2 = array_diff($perms['registered'], $current_permissions[$group['groupName']]); + if (empty($diff1) AND empty($diff2)) + $groups['data'][$key]['groupSumm'] = "registered"; + + //Check if Group has basic perm. + $diff1 = array_diff($current_permissions[$group['groupName']], $perms['basic']); + $diff2 = array_diff($perms['read'], $current_permissions[$group['groupName']]); + if (empty($diff1) AND empty($diff2)) + $groups['data'][$key]['groupSumm'] = "basic"; + + //If Group has NO perm. + if (empty($groups['data'][$key]['groupSumm'])) + $groups['data'][$key]['groupSumm'] = "userdefined"; + + } else { + $groups['data'][$key]['groupSumm'] = "none"; + } +} +//Quickperm END + $smarty->assign_by_ref('groups', $groups["data"]); // Get a list of permissions $perms = $userlib->get_permissions(0, -1, 'permName_asc', '', $_REQUEST["permType"], '', true); + if ($tiki_p_admin_objects != 'y') { $userPerms = array(); foreach($perms['data'] as $perm) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |