16 import(
'lib.pkp.classes.controllers.grid.GridHandler');
17 import(
'lib.pkp.controllers.grid.navigationMenus.form.NavigationMenuForm');
24 parent::__construct();
28 'fetchGrid',
'fetchRow',
29 'addNavigationMenu',
'editNavigationMenu',
30 'updateNavigationMenu',
31 'deleteNavigationMenu'
43 function authorize($request, &$args, $roleAssignments) {
44 $context = $request->getContext();
45 $contextId = $context?$context->getId():CONTEXT_ID_NONE;
47 import(
'lib.pkp.classes.security.authorization.PolicySet');
48 $rolePolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
50 import(
'lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
51 foreach($roleAssignments as $role => $operations) {
57 $navigationMenuId = $request->getUserVar(
'navigationMenuId');
58 if ($navigationMenuId) {
61 $navigationMenu = $navigationMenuDao->getById($navigationMenuId);
62 if (!$navigationMenu || $navigationMenu->getContextId() != $contextId) {
66 return parent::authorize($request, $args, $roleAssignments);
73 parent::initialize($request, $args);
76 $this->
setTitle(
'manager.navigationMenus');
79 $this->
setEmptyRowText(
'grid.navigationMenus.navigationMenu.noneExist');
82 import(
'lib.pkp.controllers.grid.navigationMenus.NavigationMenusGridCellProvider');
90 $navigationMenuCellProvider
96 'manager.navigationMenuItems',
99 $navigationMenuCellProvider
107 $router = $request->getRouter();
109 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
114 $router->url($request,
null,
null,
'addNavigationMenu',
null,
null),
115 __(
'grid.action.addNavigationMenu'),
119 __(
'grid.action.addNavigationMenu'),
129 $context = $request->getContext();
131 $contextId = CONTEXT_ID_NONE;
133 $contextId = $context->getId();
137 return $navigationMenuDao->getByContextId($contextId);
144 import(
'lib.pkp.controllers.grid.navigationMenus.NavigationMenusGridRow');
168 $navigationMenuId = (int)$request->getUserVar(
'navigationMenuId');
169 $context = $request->getContext();
170 $contextId = CONTEXT_ID_NONE;
172 $contextId = $context->getId();
176 $navigationMenuForm->initData();
178 return new JSONMessage(
true, $navigationMenuForm->fetch($request));
189 $navigationMenuId = $request->getUserVar(
'navigationMenuId');
190 $context = $request->getContext();
191 $contextId = CONTEXT_ID_NONE;
193 $contextId = $context->getId();
198 $navigationMenusForm->readInputData();
200 if ($navigationMenusForm->validate()) {
201 $navigationMenusForm->execute();
203 if ($navigationMenuId) {
205 $notificationLocaleKey =
'notification.editedNavigationMenu';
208 $notificationLocaleKey =
'notification.addedNavigationMenu';
213 $user = $request->getUser();
214 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __($notificationLocaleKey)));
230 $navigationMenuId = (int) $request->getUserVar(
'navigationMenuId');
231 $context = $request->getContext();
234 $navigationMenu = $navigationMenuDao->getById($navigationMenuId, $context?$context->getId():CONTEXT_SITE);
235 if ($navigationMenu && $request->checkCSRF()) {
236 $navigationMenuDao->deleteObject($navigationMenu);
240 $user = $request->getUser();
241 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __(
'notification.removedNavigationMenu')));