From d6d4e36640e450033f25a2714305f5517d31a02b Mon Sep 17 00:00:00 2001 From: Dmitriy Simushev Date: Tue, 20 May 2014 14:06:39 +0000 Subject: [PATCH] Add a controller for group-related actions --- .../Mibew/Controller/GroupController.php | 423 ++++++++++++++++++ src/mibew/libs/groups.php | 26 -- src/mibew/libs/routing.yml | 73 +++ src/mibew/operator/group.php | 158 ------- src/mibew/operator/groupmembers.php | 78 ---- src/mibew/operator/groups.php | 89 ---- .../server_side/_menu.handlebars | 2 +- ...group.handlebars => group_edit.handlebars} | 2 +- .../server_side/group_members.handlebars | 2 +- .../server_side/groups.handlebars | 10 +- .../server_side/index.handlebars | 2 +- 11 files changed, 505 insertions(+), 360 deletions(-) create mode 100644 src/mibew/libs/classes/Mibew/Controller/GroupController.php delete mode 100644 src/mibew/operator/group.php delete mode 100644 src/mibew/operator/groupmembers.php delete mode 100644 src/mibew/operator/groups.php rename src/mibew/styles/pages/default/templates_src/server_side/{group.handlebars => group_edit.handlebars} (98%) diff --git a/src/mibew/libs/classes/Mibew/Controller/GroupController.php b/src/mibew/libs/classes/Mibew/Controller/GroupController.php new file mode 100644 index 00000000..f490ee54 --- /dev/null +++ b/src/mibew/libs/classes/Mibew/Controller/GroupController.php @@ -0,0 +1,423 @@ +attributes->get('_operator'); + $page = array( + 'errors' => array(), + ); + + $sort_by = $request->query->get('sortby'); + if (!in_array($sort_by, array('name', 'lastseen', 'weight'))) { + $sort_by = 'name'; + } + + $sort['by'] = $sort_by; + $sort['desc'] = ($request->query->get('sortdirection', 'desc') == 'desc'); + + // Load and prepare groups + $groups = get_sorted_groups($sort); + foreach ($groups as &$group) { + $group['vclocalname'] = $group['vclocalname']; + $group['vclocaldescription'] = $group['vclocaldescription']; + $group['isOnline'] = group_is_online($group); + $group['isAway'] = group_is_away($group); + $group['lastTimeOnline'] = time() - ($group['ilastseen'] ? $group['ilastseen'] : time()); + $group['inumofagents'] = $group['inumofagents']; + } + unset($group); + + // Set values that are needed to build sorting block. + $page['groups'] = $groups; + $page['formsortby'] = $sort['by']; + $page['formsortdirection'] = $sort['desc'] ? 'desc' : 'asc'; + $page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator); + $page['availableOrders'] = array( + array('id' => 'name', 'name' => getlocal('form.field.groupname')), + array('id' => 'lastseen', 'name' => getlocal('page_agents.status')), + array('id' => 'weight', 'name' => getlocal('page.groups.weight')), + ); + $page['availableDirections'] = array( + array('id' => 'desc', 'name' => getlocal('page.groups.sortdirection.desc')), + array('id' => 'asc', 'name' => getlocal('page.groups.sortdirection.asc')), + ); + + // Set other variables and render the response. + $page['title'] = getlocal('page.groups.title'); + $page['menuid'] = 'groups'; + $page = array_merge($page, prepare_menu($operator)); + + return $this->render('groups', $page); + } + + /** + * Removes a group from the database. + * + * @param Request $request + * @return string Rendered page content + */ + public function deleteAction(Request $request) + { + csrf_check_token($request); + + $db = Database::getInstance(); + + // Remove the group and all its relations. + $group_id = $request->attributes->getInt('group_id'); + $db->query("DELETE FROM {chatgroup} WHERE groupid = ?", array($group_id)); + $db->query("DELETE FROM {chatgroupoperator} WHERE groupid = ?", array($group_id)); + $db->query("UPDATE {chatthread} SET groupid = 0 WHERE groupid = ?", array($group_id)); + + // Redirect user to canned messages list. Use only "sortby" and + // "sortdirection" get params for the target URL. + $parameters = array_intersect_key( + $request->query->all(), + array_flip(array('sortby', 'sortdirection')) + ); + + return $this->redirect($this->generateUrl('groups', $parameters)); + } + + /** + * Builds a page with members edit form. + * + * @param Request $request + * @return string Rendered page content + */ + public function showMembersFormAction(Request $request) + { + set_csrf_token(); + + $operator = $request->attributes->get('_operator'); + $group_id = $request->attributes->getInt('group_id'); + + $page = array( + 'groupid' => $group_id, + // Use errors list stored in the request. We need to do so to have + // an ability to pass the request from the "submitMembersForm" action. + 'errors' => $request->attributes->get('errors', array()), + ); + + $operators = get_operators_list(); + $group = group_by_id($group_id); + + // Check if the group exists + if (!$group) { + throw new NotFoundException('The group is not found.'); + } + + $page['formop'] = array(); + $page['currentgroup'] = $group + ? htmlspecialchars($group['vclocalname']) + : ''; + + // Get list of group's members + $checked_operators = array(); + foreach (get_group_members($group_id) as $rel) { + $checked_operators[] = $rel['operatorid']; + } + + // Prepare the list of all operators + $page['operators'] = array(); + foreach ($operators as $op) { + $op['vclocalename'] = $op['vclocalename']; + $op['vclogin'] = $op['vclogin']; + $op['checked'] = in_array($op['operatorid'], $checked_operators); + + $page['operators'][] = $op; + } + + // Set other values and render the page + $page['stored'] = $request->query->get('stored'); + $page['title'] = getlocal('page.groupmembers.title'); + $page['menuid'] = 'groups'; + $page = array_merge($page, prepare_menu($operator)); + $page['tabs'] = $this->buildTabs($request); + + return $this->render('group_members', $page); + } + + /** + * Processes submitting of the form which is generated in + * {@link \Mibew\Controller\GroupController::showMembersFormAction()} method. + * + * @param Request $request + * @return string Rendered page content + */ + public function submitMembersFormAction(Request $request) + { + csrf_check_token($request); + + $operators = get_operators_list(); + $group_id = $request->attributes->getInt('group_id'); + $group = group_by_id($group_id); + + // Check if specified group exists + if (!$group) { + throw new NotFoundException('The group is not found.'); + } + + // Update members list + $new_members = array(); + foreach ($operators as $op) { + if ($request->request->get('op' . $op['operatorid']) == 'on') { + $new_members[] = $op['operatorid']; + } + } + update_group_members($group_id, $new_members); + + // Redirect opeartor to group members page. + $parameters = array( + 'group_id' => $group_id, + 'stored' => true, + ); + + return $this->redirect($this->generateUrl('group_members', $parameters)); + } + + /** + * Builds a page with form for add/edit group. + * + * @param Request $request + * @return string Rendered page content + */ + public function showEditFormAction(Request $request) + { + set_csrf_token(); + + $operator = $request->attributes->get('_operator'); + $group_id = $request->attributes->getInt('group_id', false); + + $page = array( + 'gid' => false, + // Use errors list stored in the request. We need to do so to have + // an ability to pass the request from the "submitEditForm" action. + 'errors' => $request->attributes->get('errors', array()), + ); + + if ($group_id) { + // Check if the group exisits + $group = group_by_id($group_id); + if (!$group) { + throw new NotFoundException('The group is not found.'); + } + + // Set form values + $page['formname'] = $group['vclocalname']; + $page['formdescription'] = $group['vclocaldescription']; + $page['formcommonname'] = $group['vccommonname']; + $page['formcommondescription'] = $group['vccommondescription']; + $page['formemail'] = $group['vcemail']; + $page['formweight'] = $group['iweight']; + $page['formparentgroup'] = $group['parent']; + $page['grid'] = $group['groupid']; + $page['formtitle'] = $group['vctitle']; + $page['formchattitle'] = $group['vcchattitle']; + $page['formhosturl'] = $group['vchosturl']; + $page['formlogo'] = $group['vclogo']; + } + + // Override group's fields from the request if it's needed. This + // case will take place when save handler fails. + if ($request->isMethod('POST')) { + $page['formname'] = $request->request->get('name'); + $page['formdescription'] = $request->request->get('description'); + $page['formcommonname'] = $request->request->get('commonname'); + $page['formcommondescription'] = $request->request->get('commondescription'); + $page['formemail'] = $request->request->get('email'); + $page['formweight'] = $request->request->get('weight'); + $page['formparentgroup'] = $request->request->get('parentgroup'); + $page['formtitle'] = $request->request->get('title'); + $page['formchattitle'] = $request->request->get('chattitle'); + $page['formhosturl'] = $request->request->get('hosturl'); + $page['formlogo'] = $request->request->get('logo'); + } + + // Set other page variables and render the template. + $page['stored'] = $request->query->has('stored'); + $page['availableParentGroups'] = get_available_parent_groups($group_id); + $page['formaction'] = $request->getBaseUrl() . $request->getPathInfo(); + $page['title'] = getlocal('page.group.title'); + $page['menuid'] = 'groups'; + $page = array_merge($page, prepare_menu($operator)); + $page['tabs'] = $this->buildTabs($request); + + return $this->render('group_edit', $page); + } + + /** + * Processes submitting of the form which is generated in + * {@link \Mibew\Controller\GroupController::showEditFormAction()} method. + * + * @param Request $request + * @return string Rendered page content + */ + public function submitEditFormAction(Request $request) + { + csrf_check_token($request); + + $errors = array(); + + // Use value from the form and not from the path to make sure it is + // correct. If not, treat the param as empty one. + $group_id = $request->request->get('gid', false); + if (!preg_match("/^\d{1,10}$/", $group_id)) { + $group_id = false; + } + + $parent_group = $request->request->get('parentgroup'); + if (!$parent_group || !preg_match("/^\d{1,10}$/", $parent_group)) { + $parent_group = null; + } + + $name = $request->request->get('name'); + $description = $request->request->get('description'); + $common_name = $request->request->get('commonname'); + $common_description = $request->request->get('commondescription'); + $email = $request->request->get('email'); + $weight = $request->request->get('weight'); + $title = $request->request->get('title'); + $chat_title = $request->request->get('chattitle'); + $host_url = $request->request->get('hosturl'); + $logo = $request->request->get('logo'); + + if (!$name) { + $errors[] = no_field("form.field.groupname"); + } + + if ($email != '' && !is_valid_email($email)) { + $errors[] = wrong_field("form.field.mail"); + } + + if (!preg_match("/^(\d{1,10})?$/", $weight)) { + $errors[] = wrong_field("form.field.groupweight"); + } + + if (!$weight) { + $weight = 0; + } + + $existing_group = group_by_name($name); + $duplicate_name = (!$group_id && $existing_group) + || ($group_id + && $existing_group + && $group_id != $existing_group['groupid']); + + if ($duplicate_name) { + $errors[] = getlocal("page.group.duplicate_name"); + } + + if (count($errors) != 0) { + $request->attributes->set('errors', $errors); + + // The form should be rebuild. Invoke appropriate action. + return $this->showEditFormAction($request); + } + + if (!$group_id) { + // Greate new group + $new_dep = create_group(array( + 'name' => $name, + 'description' => $description, + 'commonname' => $common_name, + 'commondescription' => $common_description, + 'email' => $email, + 'weight' => $weight, + 'parent' => $parent_group, + 'title' => $title, + 'chattitle' => $chat_title, + 'hosturl' => $host_url, + 'logo' => $logo)); + + // Redirect an operator to group's member page. + $redirect_to = $this->generateUrl( + 'group_members', + array('group_id' => (int)$new_dep['groupid']) + ); + } else { + // Update exisitng group + update_group(array( + 'id' => $group_id, + 'name' => $name, + 'description' => $description, + 'commonname' => $common_name, + 'commondescription' => $common_description, + 'email' => $email, + 'weight' => $weight, + 'parent' => $parent_group, + 'title' => $title, + 'chattitle' => $chat_title, + 'hosturl' => $host_url, + 'logo' => $logo)); + + // Redirect an operator to group's page. + $redirect_to = $this->generateUrl( + 'group_edit', + array('group_id' => $group_id) + ); + } + + return $this->redirect($redirect_to); + } + + /** + * Builds list of the group tabs. + * + * @param Request $request Current request. + * @return array Tabs list. The keys of the array are tabs titles and the + * values are tabs URLs. + */ + protected function buildTabs(Request $request) + { + $tabs = array(); + $route = $request->attributes->get('_route'); + $group_id = $request->attributes->get('group_id', false); + $args = array('group_id' => $group_id); + + if ($group_id) { + $tabs[getlocal('page_group.tab.main')] = ($route == 'group_members') + ? $this->generateUrl('group_edit', $args) + : ''; + + $tabs[getlocal('page_group.tab.members')] = ($route != 'group_members') + ? $this->generateUrl('group_members', $args) + : ''; + } + + return $tabs; + } +} diff --git a/src/mibew/libs/groups.php b/src/mibew/libs/groups.php index 41448497..af1f0e25 100644 --- a/src/mibew/libs/groups.php +++ b/src/mibew/libs/groups.php @@ -79,32 +79,6 @@ function get_group_name($group) } } -/** - * Builds list of group settings tabs. The keys are tabs titles and the values - * are tabs URLs. - * - * @param int $gid ID of the group whose settings page is displayed. - * @param int $active Number of the active tab. The count starts from 0. - * @return array Tabs list - */ -function setup_group_settings_tabs($gid, $active) -{ - $tabs = array(); - - if ($gid) { - $tabs = array( - getlocal("page_group.tab.main") => ($active != 0 - ? (MIBEW_WEB_ROOT . "/operator/group.php?gid=$gid") - : ""), - getlocal("page_group.tab.members") => ($active != 1 - ? (MIBEW_WEB_ROOT . "/operator/groupmembers.php?gid=$gid") - : ""), - ); - } - - return $tabs; -} - /** * Builds list of group ids for specific operator * diff --git a/src/mibew/libs/routing.yml b/src/mibew/libs/routing.yml index aa13ef98..31d22d44 100644 --- a/src/mibew/libs/routing.yml +++ b/src/mibew/libs/routing.yml @@ -60,6 +60,79 @@ canned_messages: _controller: Mibew\Controller\CannedMessageController::indexAction _access_check: Mibew\AccessControl\Check\LoggedInCheck +## Groups +group_delete: + path: /operator/group/{group_id}/delete + defaults: + _controller: Mibew\Controller\GroupController::deleteAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + requirements: + group_id: \d{0,10} + +group_add: + path: /operator/group/add + defaults: + _controller: Mibew\Controller\GroupController::showEditFormAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + methods: [GET] + +group_add_save: + path: /operator/group/add + defaults: + _controller: Mibew\Controller\GroupController::submitEditFormAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + methods: [POST] + +group_edit: + path: /operator/group/{group_id}/edit + defaults: + _controller: Mibew\Controller\GroupController::showEditFormAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + requirements: + group_id: \d{0,10} + methods: [GET] + +group_edit_save: + path: /operator/group/{group_id}/edit + defaults: + _controller: Mibew\Controller\GroupController::submitEditFormAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + requirements: + group_id: \d{0,10} + methods: [POST] + +group_members: + path: /operator/group/{group_id}/members + defaults: + _controller: Mibew\Controller\GroupController::showMembersFormAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + requirements: + group_id: \d{0,10} + methods: [GET] + +group_members_save: + path: /operator/group/{group_id}/members + defaults: + _controller: Mibew\Controller\GroupController::submitMembersFormAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + requirements: + group_id: \d{0,10} + methods: [POST] + +groups: + path: /operator/group + defaults: + _controller: Mibew\Controller\GroupController::indexAction + _access_check: Mibew\AccessControl\Check\PermissionsCheck + _access_permissions: [CAN_ADMINISTRATE] + ## History history: path: /operator/history diff --git a/src/mibew/operator/group.php b/src/mibew/operator/group.php deleted file mode 100644 index 3ac887c9..00000000 --- a/src/mibew/operator/group.php +++ /dev/null @@ -1,158 +0,0 @@ - '', - 'errors' => array(), -); - -$group_id = ''; - -if (isset($_POST['name'])) { - $group_id = verify_param("gid", "/^(\d{1,9})?$/", ""); - $name = get_param('name'); - $description = get_param('description'); - $common_name = get_param('commonname'); - $common_description = get_param('commondescription'); - $email = get_param('email'); - $weight = get_param('weight'); - $parent_group = verify_param("parentgroup", "/^(\d{1,9})?$/", ""); - $title = get_param('title'); - $chat_title = get_param('chattitle'); - $host_url = get_param('hosturl'); - $logo = get_param('logo'); - - if (!$name) { - $page['errors'][] = no_field("form.field.groupname"); - } - - if ($email != '' && !is_valid_email($email)) { - $page['errors'][] = wrong_field("form.field.mail"); - } - - if (!preg_match("/^(\d{1,9})?$/", $weight)) { - $page['errors'][] = wrong_field("form.field.groupweight"); - } - - if ($weight == '') { - $weight = 0; - } - - if (!$parent_group) { - $parent_group = null; - } - - $existing_group = group_by_name($name); - $duplicate_name = (!$group_id && $existing_group) - || ($group_id - && $existing_group - && $group_id != $existing_group['groupid']); - - if ($duplicate_name) { - $page['errors'][] = getlocal("page.group.duplicate_name"); - } - - if (count($page['errors']) == 0) { - if (!$group_id) { - $new_dep = create_group(array( - 'name' => $name, - 'description' => $description, - 'commonname' => $common_name, - 'commondescription' => $common_description, - 'email' => $email, - 'weight' => $weight, - 'parent' => $parent_group, - 'title' => $title, - 'chattitle' => $chat_title, - 'hosturl' => $host_url, - 'logo' => $logo)); - header("Location: " . MIBEW_WEB_ROOT . "/operator/groupmembers.php?gid=" . intval($new_dep['groupid'])); - exit; - } else { - update_group(array( - 'id' => $group_id, - 'name' => $name, - 'description' => $description, - 'commonname' => $common_name, - 'commondescription' => $common_description, - 'email' => $email, - 'weight' => $weight, - 'parent' => $parent_group, - 'title' => $title, - 'chattitle' => $chat_title, - 'hosturl' => $host_url, - 'logo' => $logo)); - header("Location: " . MIBEW_WEB_ROOT . "/operator/group.php?gid=" . intval($group_id) . "&stored"); - exit; - } - } else { - $page['formname'] = $name; - $page['formdescription'] = $description; - $page['formcommonname'] = $common_name; - $page['formcommondescription'] = $common_description; - $page['formemail'] = $email; - $page['formweight'] = $weight; - $page['formparentgroup'] = $parent_group; - $page['grid'] = $group_id; - $page['formtitle'] = $title; - $page['formchattitle'] = $chat_title; - $page['formhosturl'] = $host_url; - $page['formlogo'] = $logo; - } -} elseif (isset($_GET['gid'])) { - $group_id = verify_param('gid', "/^\d{1,9}$/"); - $group = group_by_id($group_id); - - if (!$group) { - $page['errors'][] = getlocal("page.group.no_such"); - $page['grid'] = $group_id; - } else { - $page['formname'] = $group['vclocalname']; - $page['formdescription'] = $group['vclocaldescription']; - $page['formcommonname'] = $group['vccommonname']; - $page['formcommondescription'] = $group['vccommondescription']; - $page['formemail'] = $group['vcemail']; - $page['formweight'] = $group['iweight']; - $page['formparentgroup'] = $group['parent']; - $page['grid'] = $group['groupid']; - $page['formtitle'] = $group['vctitle']; - $page['formchattitle'] = $group['vcchattitle']; - $page['formhosturl'] = $group['vchosturl']; - $page['formlogo'] = $group['vclogo']; - } -} - -$page['stored'] = isset($_GET['stored']); -$page['availableParentGroups'] = get_available_parent_groups($group_id); -$page['title'] = getlocal("page.group.title"); -$page['menuid'] = "groups"; - -$page = array_merge($page, prepare_menu($operator)); - -$page['tabs'] = setup_group_settings_tabs($group_id, 0); - -$page_style = new PageStyle(PageStyle::getCurrentStyle()); -$page_style->render('group', $page); diff --git a/src/mibew/operator/groupmembers.php b/src/mibew/operator/groupmembers.php deleted file mode 100644 index fce8d6f3..00000000 --- a/src/mibew/operator/groupmembers.php +++ /dev/null @@ -1,78 +0,0 @@ - $group_id, - 'errors' => array(), -); - -$operators = get_operators_list(); -$group = group_by_id($group_id); - -if (!$group) { - $page['errors'][] = getlocal("page.group.no_such"); -} elseif (isset($_POST['gid'])) { - - $new_members = array(); - foreach ($operators as $op) { - if (verify_param("op" . $op['operatorid'], "/^on$/", "") == "on") { - $new_members[] = $op['operatorid']; - } - } - - update_group_members($group_id, $new_members); - header("Location: " . MIBEW_WEB_ROOT . "/operator/groupmembers.php?gid=" . intval($group_id) . "&stored"); - exit; -} - -$page['formop'] = array(); -$page['currentgroup'] = $group ? htmlspecialchars($group['vclocalname']) : ""; - -$checked_operators = array(); -foreach (get_group_members($group_id) as $rel) { - $checked_operators[] = $rel['operatorid']; -} - -$page['operators'] = array(); -foreach ($operators as $op) { - $op['vclocalename'] = $op['vclocalename']; - $op['vclogin'] = $op['vclogin']; - $op['checked'] = in_array($op['operatorid'], $checked_operators); - - $page['operators'][] = $op; -} - -$page['stored'] = isset($_GET['stored']); -$page['title'] = getlocal("page.groupmembers.title"); -$page['menuid'] = "groups"; - -$page = array_merge($page, prepare_menu($operator)); - -$page['tabs'] = setup_group_settings_tabs($group_id, 1); - -$page_style = new PageStyle(PageStyle::getCurrentStyle()); -$page_style->render('group_members', $page); diff --git a/src/mibew/operator/groups.php b/src/mibew/operator/groups.php deleted file mode 100644 index dce0ce80..00000000 --- a/src/mibew/operator/groups.php +++ /dev/null @@ -1,89 +0,0 @@ - array(), -); - -if (isset($_GET['act']) && $_GET['act'] == 'del') { - - $group_id = isset($_GET['gid']) ? $_GET['gid'] : ""; - - if (!preg_match("/^\d+$/", $group_id)) { - $page['errors'][] = getlocal("page.groups.error.cannot_delete"); - } - - if (!is_capable(CAN_ADMINISTRATE, $operator)) { - $page['errors'][] = getlocal("page.groups.error.forbidden_remove"); - } - - if (count($page['errors']) == 0) { - $db = Database::getInstance(); - $db->query("delete from {chatgroup} where groupid = ?", array($group_id)); - $db->query("delete from {chatgroupoperator} where groupid = ?", array($group_id)); - $db->query("update {chatthread} set groupid = 0 where groupid = ?", array($group_id)); - header("Location: " . MIBEW_WEB_ROOT . "/operator/groups.php"); - exit; - } -} - -$sort['by'] = verify_param("sortby", "/^(name|lastseen|weight)$/", "name"); -$sort['desc'] = (verify_param("sortdirection", "/^(desc|asc)$/", "desc") == "desc"); - -// Load and prepare groups -$groups = get_sorted_groups($sort); -foreach ($groups as &$group) { - $group['vclocalname'] = $group['vclocalname']; - $group['vclocaldescription'] = $group['vclocaldescription']; - $group['isOnline'] = group_is_online($group); - $group['isAway'] = group_is_away($group); - $group['lastTimeOnline'] = time() - ($group['ilastseen'] ? $group['ilastseen'] : time()); - $group['inumofagents'] = $group['inumofagents']; -} -unset($group); - -$page['groups'] = $groups; -$page['formsortby'] = $sort['by']; -$page['formsortdirection'] = $sort['desc'] ? 'desc' : 'asc'; -$page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator); -$page['availableOrders'] = array( - array('id' => 'name', 'name' => getlocal('form.field.groupname')), - array('id' => 'lastseen', 'name' => getlocal('page_agents.status')), - array('id' => 'weight', 'name' => getlocal('page.groups.weight')), -); -$page['availableDirections'] = array( - array('id' => 'desc', 'name' => getlocal('page.groups.sortdirection.desc')), - array('id' => 'asc', 'name' => getlocal('page.groups.sortdirection.asc')), -); - -$page['title'] = getlocal("page.groups.title"); -$page['menuid'] = "groups"; - -$page = array_merge($page, prepare_menu($operator)); - -$page_style = new PageStyle(PageStyle::getCurrentStyle()); -$page_style->render('groups', $page); diff --git a/src/mibew/styles/pages/default/templates_src/server_side/_menu.handlebars b/src/mibew/styles/pages/default/templates_src/server_side/_menu.handlebars index 59c1b615..3b0f861a 100644 --- a/src/mibew/styles/pages/default/templates_src/server_side/_menu.handlebars +++ b/src/mibew/styles/pages/default/templates_src/server_side/_menu.handlebars @@ -30,7 +30,7 @@ {{#if showadmin}} {{l10n "leftMenu.client_gen_button"}} {{l10n "leftMenu.client_agents"}} - {{l10n "menu.groups"}} + {{l10n "menu.groups"}} {{l10n "leftMenu.client_settings"}} {{l10n "menu.translate"}} {{l10n "menu.updates"}} diff --git a/src/mibew/styles/pages/default/templates_src/server_side/group.handlebars b/src/mibew/styles/pages/default/templates_src/server_side/group_edit.handlebars similarity index 98% rename from src/mibew/styles/pages/default/templates_src/server_side/group.handlebars rename to src/mibew/styles/pages/default/templates_src/server_side/group_edit.handlebars index 3942fe85..b17ba003 100644 --- a/src/mibew/styles/pages/default/templates_src/server_side/group.handlebars +++ b/src/mibew/styles/pages/default/templates_src/server_side/group_edit.handlebars @@ -22,7 +22,7 @@
{{l10n "data.saved"}}
{{/if}} -
+ {{csrfTokenInput}} diff --git a/src/mibew/styles/pages/default/templates_src/server_side/group_members.handlebars b/src/mibew/styles/pages/default/templates_src/server_side/group_members.handlebars index 44765ea8..d4f770a9 100644 --- a/src/mibew/styles/pages/default/templates_src/server_side/group_members.handlebars +++ b/src/mibew/styles/pages/default/templates_src/server_side/group_members.handlebars @@ -13,7 +13,7 @@
{{l10n "data.saved"}}
{{/if}} - + {{csrfTokenInput}} diff --git a/src/mibew/styles/pages/default/templates_src/server_side/groups.handlebars b/src/mibew/styles/pages/default/templates_src/server_side/groups.handlebars index 37cdbd6a..844a2fde 100644 --- a/src/mibew/styles/pages/default/templates_src/server_side/groups.handlebars +++ b/src/mibew/styles/pages/default/templates_src/server_side/groups.handlebars @@ -25,7 +25,7 @@ {{> _errors}} - +
@@ -63,7 +63,7 @@ {{#if canmodify}} @@ -88,7 +88,7 @@ {{#each groups}} - + {{vclocalname}} @@ -114,7 +114,7 @@ - + {{inumofagents}} @@ -125,7 +125,7 @@ {{#if ../canmodify}} - + {{l10n "remove.item"}} diff --git a/src/mibew/styles/pages/default/templates_src/server_side/index.handlebars b/src/mibew/styles/pages/default/templates_src/server_side/index.handlebars index 01512a9d..0d5e72e2 100644 --- a/src/mibew/styles/pages/default/templates_src/server_side/index.handlebars +++ b/src/mibew/styles/pages/default/templates_src/server_side/index.handlebars @@ -104,7 +104,7 @@
- + {{l10n "menu.groups"}} {{l10n "menu.groups.content"}}