Open Journal Systems  3.3.0
NavigationMenuItemsGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
18 import('controllers.grid.navigationMenus.form.NavigationMenuItemsForm');
19 
21 
25  function __construct() {
26  parent::__construct();
27  $this->addRoleAssignment(
28  ROLE_ID_MANAGER,
29  $ops = array(
30  'fetchGrid', 'fetchRow',
31  'addNavigationMenuItem', 'editNavigationMenuItem',
32  'updateNavigationMenuItem',
33  'deleteNavigationMenuItem', 'saveSequence',
34  )
35  );
36  $this->addRoleAssignment(ROLE_ID_SITE_ADMIN, $ops);
37  }
38 
39  //
40  // Overridden template methods
41  //
45  function authorize($request, &$args, $roleAssignments) {
46  $context = $request->getContext();
47  $contextId = $context?$context->getId():CONTEXT_ID_NONE;
48 
49  import('lib.pkp.classes.security.authorization.PolicySet');
50  $rolePolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
51 
52  import('lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
53  foreach($roleAssignments as $role => $operations) {
54  $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations));
55  }
56  $this->addPolicy($rolePolicy);
57 
58  $navigationMenuItemId = $request->getUserVar('navigationMenuItemId');
59  if ($navigationMenuItemId) {
60  $navigationMenuItemDao = DAORegistry::getDAO('NavigationMenuItemDAO'); /* @var $navigationMenuItemDao NavigationMenuItemDAO */
61  $navigationMenuItem = $navigationMenuItemDao->getById($navigationMenuItemId);
62  if (!$navigationMenuItem || $navigationMenuItem->getContextId() != $contextId) {
63  return false;
64  }
65  }
66  return parent::authorize($request, $args, $roleAssignments);
67  }
68 
72  function initialize($request, $args = null) {
73  parent::initialize($request, $args);
74 
75  // Basic grid configuration
76  $this->setTitle('manager.navigationMenuItems');
77 
78  // Set the no items row text
79  $this->setEmptyRowText('grid.navigationMenus.navigationMenuItems.noneExist');
80 
81  // Columns
82  import('lib.pkp.controllers.grid.navigationMenus.NavigationMenuItemsGridCellProvider');
83  $navigationMenuItemsCellProvider = new NavigationMenuItemsGridCellProvider();
84  $this->addColumn(
85  new GridColumn('title',
86  'common.title',
87  null,
88  null,
89  $navigationMenuItemsCellProvider
90  )
91  );
92 
93  // Load language components
94  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_MANAGER);
95 
96  // Add grid action.
97  $router = $request->getRouter();
98 
99  import('lib.pkp.classes.linkAction.request.AjaxModal');
100 
101  $this->addAction(
102  new LinkAction(
103  'addNavigationMenuItem',
104  new AjaxModal(
105  $router->url($request, null, null, 'addNavigationMenuItem', null, null),
106  __('grid.action.addNavigationMenuItem'),
107  'modal_add_item',
108  true
109  ),
110  __('grid.action.addNavigationMenuItem'),
111  'add_item'
112  )
113  );
114  }
115 
119  protected function loadData($request, $filter) {
120  $context = $request->getContext();
121 
122  $contextId = CONTEXT_ID_NONE;
123  if ($context) {
124  $contextId = $context->getId();
125  }
126 
127  $navigationMenuItemDao = DAORegistry::getDAO('NavigationMenuItemDAO'); /* @var $navigationMenuItemDao NavigationMenuItemDAO */
128  return $navigationMenuItemDao->getByContextId($contextId);
129  }
130 
134  protected function getRowInstance() {
135  import('lib.pkp.controllers.grid.navigationMenus.NavigationMenuItemsGridRow');
136  return new NavigationMenuItemsGridRow();
137 
138  }
139 
140  //
141  // Public grid actions.
142  //
149  function updateNavigationMenuItem($args, $request) {
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;
155  if ($context) {
156  $contextId = $context->getId();
157  }
158 
159  import('controllers.grid.navigationMenus.form.NavigationMenuItemsForm');
160  $navigationMenuItemForm = new NavigationMenuItemsForm($contextId, $navigationMenuItemId, $navigationMenuIdParent);
161 
162  $navigationMenuItemForm->readInputData();
163 
164  if ($navigationMenuItemForm->validate()) {
165  $navigationMenuItemForm->execute();
166 
167  if ($navigationMenuItemId) {
168  // Successful edit of an existing $navigationMenuItem.
169  $notificationLocaleKey = 'notification.editedNavigationMenuItem';
170  } else {
171  // Successful added a new $navigationMenuItemForm.
172  $notificationLocaleKey = 'notification.addedNavigationMenuItem';
173  }
174 
175  // Record the notification to user.
176  $notificationManager = new NotificationManager();
177  $user = $request->getUser();
178  $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __($notificationLocaleKey)));
179 
180  // Prepare the grid row data.
181  return DAO::getDataChangedEvent($navigationMenuItemId);
182  } else {
183  return new JSONMessage(false);
184  }
185  }
186 
193  function editNavigationMenuItem($args, $request) {
194  $navigationMenuItemId = (int) $request->getUserVar('navigationMenuItemId');
195  $navigationMenuIdParent = (int) $request->getUserVar('navigationMenuIdParent');
196  $context = $request->getContext();
197  $contextId = CONTEXT_ID_NONE;
198  if ($context) {
199  $contextId = $context->getId();
200  }
201 
202  $navigationMenuItemForm = new NavigationMenuItemsForm($contextId, $navigationMenuItemId, $navigationMenuIdParent);
203  $navigationMenuItemForm->initData();
204 
205  return new JSONMessage(true, $navigationMenuItemForm->fetch($request));
206  }
207 
214  function addNavigationMenuItem($args, $request) {
215  $navigationMenuItemId = (int)$request->getUserVar('navigationMenuItemId');
216  $navigationMenuIdParent = (int)$request->getUserVar('navigationMenuIdParent');
217  $context = $request->getContext();
218  $contextId = CONTEXT_ID_NONE;
219  if ($context) {
220  $contextId = $context->getId();
221  }
222 
223  import('controllers.grid.navigationMenus.form.NavigationMenuItemsForm');
224  $navigationMenuItemForm = new NavigationMenuItemsForm($contextId, $navigationMenuItemId, $navigationMenuIdParent);
225 
226  $navigationMenuItemForm->initData();
227 
228  return new JSONMessage(true, $navigationMenuItemForm->fetch($request));
229  }
230 
237  function deleteNavigationMenuItem($args, $request) {
238  $navigationMenuItemId = (int) $request->getUserVar('navigationMenuItemId');
239 
240  $context = $request->getContext();
241  $contextId = CONTEXT_ID_NONE;
242  if ($context) {
243  $contextId = $context->getId();
244  }
245 
246  $navigationMenuItemDao = DAORegistry::getDAO('NavigationMenuItemDAO'); /* @var $navigationMenuItemDao NavigationMenuItemDAO */
247  $navigationMenuItem = $navigationMenuItemDao->getById($navigationMenuItemId, $contextId);
248  if ($navigationMenuItem) {
249  $navigationMenuItemDao->deleteObject($navigationMenuItem);
250 
251  // Create notification.
252  $notificationManager = new NotificationManager();
253  $user = $request->getUser();
254  $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedNavigationMenuItem')));
255 
256  return DAO::getDataChangedEvent($navigationMenuItemId);
257  }
258 
259  return new JSONMessage(false);
260  }
261 }
262 
263 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
GridHandler\setEmptyRowText
setEmptyRowText($emptyRowText)
Definition: GridHandler.inc.php:231
GridColumn
The GridColumn class represents a column within a grid. It is used to format the data presented in a ...
Definition: GridColumn.inc.php:27
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
NavigationMenuItemsGridHandler\initialize
initialize($request, $args=null)
Definition: NavigationMenuItemsGridHandler.inc.php:72
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
NavigationMenuItemsGridHandler\addNavigationMenuItem
addNavigationMenuItem($args, $request)
Definition: NavigationMenuItemsGridHandler.inc.php:214
NavigationMenuItemsGridHandler\deleteNavigationMenuItem
deleteNavigationMenuItem($args, $request)
Definition: NavigationMenuItemsGridHandler.inc.php:237
NavigationMenuItemsForm
Form for managers to create/edit navigationMenuItems.
Definition: NavigationMenuItemsForm.inc.php:18
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
NavigationMenuItemsGridHandler\editNavigationMenuItem
editNavigationMenuItem($args, $request)
Definition: NavigationMenuItemsGridHandler.inc.php:193
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
NavigationMenuItemsGridHandler\getRowInstance
getRowInstance()
Definition: NavigationMenuItemsGridHandler.inc.php:134
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
NavigationMenuItemsGridHandler
Handle NavigationMenuItems grid requests.
Definition: NavigationMenuItemsGridHandler.inc.php:20
NavigationMenuItemsGridRow
NavigationMenuItem grid row definition.
Definition: NavigationMenuItemsGridRow.inc.php:19
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
NavigationMenuItemsGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: NavigationMenuItemsGridHandler.inc.php:45
NavigationMenuItemsGridHandler\loadData
loadData($request, $filter)
Definition: NavigationMenuItemsGridHandler.inc.php:119
NotificationManager
Definition: NotificationManager.inc.php:19
RoleBasedHandlerOperationPolicy
Class to control access to handler operations via role based access control.
Definition: RoleBasedHandlerOperationPolicy.inc.php:18
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
NavigationMenuItemsGridHandler\updateNavigationMenuItem
updateNavigationMenuItem($args, $request)
Definition: NavigationMenuItemsGridHandler.inc.php:149
NavigationMenuItemsGridCellProvider
Cell provider for title column of a NavigationMenuItems grid.
Definition: NavigationMenuItemsGridCellProvider.inc.php:18
NavigationMenuItemsGridHandler\__construct
__construct()
Definition: NavigationMenuItemsGridHandler.inc.php:25
PolicySet
An ordered list of policies. Policy sets can be added to decision managers like policies....
Definition: PolicySet.inc.php:26