From 445cf44258db41fce8fdf768c8e6c2b0d5dab0be Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Sun, 14 Jun 2015 22:30:17 -0400 Subject: [PATCH] #196 Permission groups can now be deleted and converted b/t admin/non-admin --- admin/manage_permission_templates.php | 204 ++++++++++++++++++++++++-- language/en/text.php | 15 ++ 2 files changed, 209 insertions(+), 10 deletions(-) diff --git a/admin/manage_permission_templates.php b/admin/manage_permission_templates.php index 318e1315..9b4da1ce 100644 --- a/admin/manage_permission_templates.php +++ b/admin/manage_permission_templates.php @@ -53,6 +53,10 @@ hesk_checkPermission('can_man_cat'); if ( $action = hesk_REQUEST('a') ) { if ($action == 'save') {save();} + elseif ($action == 'create') {create();} + elseif ($action == 'delete') {deleteTemplate();} + elseif ($action == 'addadmin') {toggleAdmin(true);} + elseif ($action == 'deladmin') {toggleAdmin(false);} } /* Print header */ @@ -91,6 +95,9 @@ else {return false;} + + + @@ -106,18 +113,29 @@ else {return false;} - + - + title=""> + + + + + + + + title=""> + + title=""> @@ -130,6 +148,7 @@ else {return false;} foreach ($templates as $template) { createEditModal($template, $featureArray, $categories); } +buildCreateModal($featureArray, $categories); require_once(HESK_PATH . 'inc/footer.inc.php'); exit(); @@ -216,9 +235,9 @@ function createEditModal($template, $features, $categories) {
- + - +
@@ -228,11 +247,86 @@ function createEditModal($template, $features, $categories) { + +'; + $isValid = true; + if ($create && $name == '') { + $errorMarkup .= '
  • '.$hesklang['template_name_required'].'
  • '; + $isValid = false; + } + if (count($features) == 0) { + $errorMarkup .= '
  • '.$hesklang['you_must_select_a_feature'].'
  • '; + $isValid = false; + } + if (count($categories) == 0) { + $errorMarkup .= '
  • '.$hesklang['you_must_select_a_category'].'
  • '; + $isValid = false; + } + $errorMarkup .= ''; + + if (!$isValid) { + $error = sprintf($hesklang['permission_template_error'], $errorMarkup); + hesk_process_messages($error, $_SERVER['PHP_SELF']); + } + return true; +} + +function deleteTemplate() { + global $hesk_settings, $hesklang; + + $id = hesk_GET('id'); + + // Admin/Staff templates cannot be deleted! + if ($id == 1 || $id == 2) { + hesk_process_messages($hesklang['cannot_delete_admin_or_staff'], $_SERVER['PHP_SELF']); + } + + // Otherwise delete the template + hesk_dbQuery("DELETE FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."permission_templates` WHERE `id` = ".intval($id)); + if (hesk_dbAffectedRows() != 1) { + hesk_process_messages($hesklang['no_templates_were_deleted'], $_SERVER['PHP_SELF']); + } + hesk_process_messages($hesklang['permission_template_deleted'], $_SERVER['PHP_SELF'],'SUCCESS'); +} + +function toggleAdmin($admin) { + global $hesk_settings, $hesklang; + + $id = hesk_GET('id'); + + if ($admin) { + hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."permission_templates` SET `heskprivileges` = 'ALL', + `categories` = 'ALL' WHERE `id` = ".intval($id)); + hesk_process_messages($hesklang['permission_template_now_admin'], $_SERVER['PHP_SELF'],'SUCCESS'); + } else { + // Get default privileges + $res = hesk_dbQuery("SELECT `heskprivileges`, `categories` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."permission_templates` + WHERE `id` = 2"); + $row = hesk_dbFetchAssoc($res); + + hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."permission_templates` + SET `heskprivileges` = '".hesk_dbEscape($row['heskprivileges'])."', + `categories` = '".hesk_dbEscape($row['categories'])."' WHERE `id` = ".intval($id)); + hesk_process_messages($hesklang['permission_template_no_longer_admin'], $_SERVER['PHP_SELF'],'SUCCESS'); + } +} ?> diff --git a/language/en/text.php b/language/en/text.php index 0faed198..3fd1a78e 100644 --- a/language/en/text.php +++ b/language/en/text.php @@ -78,8 +78,23 @@ $hesklang['permission'] = 'Permission'; $hesklang['permissions_for_template'] = 'Permissions for template %s'; // %s template name $hesklang['template_has_admin_privileges'] = 'Permission template has admin privileges. Click to set as non-admin'; $hesklang['template_has_no_admin_privileges'] = 'Permission template does not have admin privileges. Click to set as admin'; +$hesklang['staff_cannot_be_admin'] = 'Staff permission group does not have admin access, and cannot be set as an admin'; +$hesklang['admin_cannot_be_staff'] = 'Administrator permission group has admin access, and cannot be set as non-admin'; $hesklang['template_is_admin_cannot_change'] = 'The permission group currently has admin privileges, so you cannot set specific permissions here.'; $hesklang['permission_template_updated'] = 'Permission template has been updated!'; +$hesklang['create_new_template'] = 'Create new permission template'; +$hesklang['create_new_template_title'] = 'Create New Permission Template'; // same as create_new_template, but in Title Case +$hesklang['template_name'] = 'Template name'; +$hesklang['template_name_required'] = 'Template name required.'; +$hesklang['you_must_select_a_category'] = 'You must select at least one category.'; +$hesklang['you_must_select_a_feature'] = 'You must select at least one feature.'; +$hesklang['permission_template_error'] = 'The permission template could not be completed due to the following error(s): %s'; // %s: error list +$hesklang['template_created'] = 'Permission template successfully created!'; +$hesklang['cannot_delete_admin_or_staff'] = 'The Administrator and Staff permission groups cannot be deleted!'; +$hesklang['no_templates_were_deleted'] = 'No templates were deleted!'; +$hesklang['permission_template_deleted'] = 'Permission template deleted!'; +$hesklang['permission_template_now_admin'] = 'Permission template is now designed as an admin template'; +$hesklang['permission_template_no_longer_admin'] = 'Permission template is no longer designated as an admin template'; // ADDED OR MODIFIED IN Mods for HESK 2.2.1 $hesklang['popart_no_colon']='Top Knowledgebase Articles'; // same as $hesklang['popart'] but without a colon (:)