16 import(
'lib.pkp.classes.controllers.grid.GridHandler');
17 import(
'lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
18 import(
'controllers.grid.navigationMenus.form.NavigationMenuItemsForm');
26 parent::__construct();
30 'fetchGrid',
'fetchRow',
31 'addNavigationMenuItem',
'editNavigationMenuItem',
32 'updateNavigationMenuItem',
33 'deleteNavigationMenuItem',
'saveSequence',
45 function authorize($request, &$args, $roleAssignments) {
46 $context = $request->getContext();
47 $contextId = $context?$context->getId():CONTEXT_ID_NONE;
49 import(
'lib.pkp.classes.security.authorization.PolicySet');
50 $rolePolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
52 import(
'lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
53 foreach($roleAssignments as $role => $operations) {
58 $navigationMenuItemId = $request->getUserVar(
'navigationMenuItemId');
59 if ($navigationMenuItemId) {
61 $navigationMenuItem = $navigationMenuItemDao->getById($navigationMenuItemId);
62 if (!$navigationMenuItem || $navigationMenuItem->getContextId() != $contextId) {
66 return parent::authorize($request, $args, $roleAssignments);
73 parent::initialize($request, $args);
76 $this->
setTitle(
'manager.navigationMenuItems');
79 $this->
setEmptyRowText(
'grid.navigationMenus.navigationMenuItems.noneExist');
82 import(
'lib.pkp.controllers.grid.navigationMenus.NavigationMenuItemsGridCellProvider');
89 $navigationMenuItemsCellProvider
97 $router = $request->getRouter();
99 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
103 'addNavigationMenuItem',
105 $router->url($request,
null,
null,
'addNavigationMenuItem',
null,
null),
106 __(
'grid.action.addNavigationMenuItem'),
110 __(
'grid.action.addNavigationMenuItem'),
120 $context = $request->getContext();
122 $contextId = CONTEXT_ID_NONE;
124 $contextId = $context->getId();
128 return $navigationMenuItemDao->getByContextId($contextId);
135 import(
'lib.pkp.controllers.grid.navigationMenus.NavigationMenuItemsGridRow');
150 $navigationMenuItemId = (int)$request->getUserVar(
'navigationMenuItemId');
151 $navigationMenuId = (int)$request->getUserVar(
'navigationMenuId');
152 $navigationMenuIdParent = (int)$request->getUserVar(
'navigationMenuIdParent');
153 $context = $request->getContext();
154 $contextId = CONTEXT_ID_NONE;
156 $contextId = $context->getId();
159 import(
'controllers.grid.navigationMenus.form.NavigationMenuItemsForm');
160 $navigationMenuItemForm =
new NavigationMenuItemsForm($contextId, $navigationMenuItemId, $navigationMenuIdParent);
162 $navigationMenuItemForm->readInputData();
164 if ($navigationMenuItemForm->validate()) {
165 $navigationMenuItemForm->execute();
167 if ($navigationMenuItemId) {
169 $notificationLocaleKey =
'notification.editedNavigationMenuItem';
172 $notificationLocaleKey =
'notification.addedNavigationMenuItem';
177 $user = $request->getUser();
178 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __($notificationLocaleKey)));
194 $navigationMenuItemId = (int) $request->getUserVar(
'navigationMenuItemId');
195 $navigationMenuIdParent = (int) $request->getUserVar(
'navigationMenuIdParent');
196 $context = $request->getContext();
197 $contextId = CONTEXT_ID_NONE;
199 $contextId = $context->getId();
202 $navigationMenuItemForm =
new NavigationMenuItemsForm($contextId, $navigationMenuItemId, $navigationMenuIdParent);
203 $navigationMenuItemForm->initData();
205 return new JSONMessage(
true, $navigationMenuItemForm->fetch($request));
215 $navigationMenuItemId = (int)$request->getUserVar(
'navigationMenuItemId');
216 $navigationMenuIdParent = (int)$request->getUserVar(
'navigationMenuIdParent');
217 $context = $request->getContext();
218 $contextId = CONTEXT_ID_NONE;
220 $contextId = $context->getId();
223 import(
'controllers.grid.navigationMenus.form.NavigationMenuItemsForm');
224 $navigationMenuItemForm =
new NavigationMenuItemsForm($contextId, $navigationMenuItemId, $navigationMenuIdParent);
226 $navigationMenuItemForm->initData();
228 return new JSONMessage(
true, $navigationMenuItemForm->fetch($request));
238 $navigationMenuItemId = (int) $request->getUserVar(
'navigationMenuItemId');
240 $context = $request->getContext();
241 $contextId = CONTEXT_ID_NONE;
243 $contextId = $context->getId();
247 $navigationMenuItem = $navigationMenuItemDao->getById($navigationMenuItemId, $contextId);
248 if ($navigationMenuItem) {
249 $navigationMenuItemDao->deleteObject($navigationMenuItem);
253 $user = $request->getUser();
254 $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __(
'notification.removedNavigationMenuItem')));