Open Journal Systems  3.3.0
ReviewFormGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 
18 import('lib.pkp.controllers.grid.settings.reviewForms.ReviewFormGridRow');
19 
20 import('lib.pkp.controllers.grid.settings.reviewForms.form.ReviewFormForm');
21 import('lib.pkp.controllers.grid.settings.reviewForms.form.ReviewFormElements');
22 
23 import('lib.pkp.controllers.grid.settings.reviewForms.form.PreviewReviewForm');
24 
29  function __construct() {
30  parent::__construct();
31  $this->addRoleAssignment(
32  array(ROLE_ID_MANAGER),
33  array('fetchGrid', 'fetchRow', 'createReviewForm', 'editReviewForm', 'updateReviewForm',
34  'reviewFormBasics', 'reviewFormElements', 'copyReviewForm',
35  'reviewFormPreview', 'activateReviewForm', 'deactivateReviewForm', 'deleteReviewForm',
36  'saveSequence')
37  );
38  }
39 
40 
41  //
42  // Implement template methods from PKPHandler.
43  //
47  function initialize($request, $args = null) {
48  parent::initialize($request, $args);
49 
50  // Load user-related translations.
52  LOCALE_COMPONENT_APP_ADMIN,
53  LOCALE_COMPONENT_APP_MANAGER,
54  LOCALE_COMPONENT_PKP_USER,
55  LOCALE_COMPONENT_PKP_MANAGER
56  );
57 
58  // Basic grid configuration.
59  $this->setTitle('manager.reviewForms');
60 
61  // Grid actions.
62  $router = $request->getRouter();
63 
64  import('lib.pkp.classes.linkAction.request.AjaxModal');
65  $this->addAction(
66  new LinkAction(
67  'createReviewForm',
68  new AjaxModal(
69  $router->url($request, null, null, 'createReviewForm', null, null),
70  __('manager.reviewForms.create'),
71  'modal_add_item',
72  true
73  ),
74  __('manager.reviewForms.create'),
75  'add_item')
76  );
77 
78  //
79  // Grid columns.
80  //
81  import('lib.pkp.controllers.grid.settings.reviewForms.ReviewFormGridCellProvider');
82  $reviewFormGridCellProvider = new ReviewFormGridCellProvider();
83 
84  // Review form name.
85  $this->addColumn(
86  new GridColumn(
87  'name',
88  'manager.reviewForms.title',
89  null,
90  null,
91  $reviewFormGridCellProvider
92  )
93  );
94 
95  // Review Form 'in review'
96  $this->addColumn(
97  new GridColumn(
98  'inReview',
99  'manager.reviewForms.inReview',
100  null,
101  null,
102  $reviewFormGridCellProvider
103  )
104  );
105 
106  // Review Form 'completed'.
107  $this->addColumn(
108  new GridColumn(
109  'completed',
110  'manager.reviewForms.completed',
111  null,
112  null,
113  $reviewFormGridCellProvider
114  )
115  );
116 
117  // Review form 'activate/deactivate'
118  // if ($element->getActive()) {
119  $this->addColumn(
120  new GridColumn(
121  'active',
122  'common.active',
123  null,
124  'controllers/grid/common/cell/selectStatusCell.tpl',
125  $reviewFormGridCellProvider
126  )
127  );
128  }
129 
133  function authorize($request, &$args, $roleAssignments) {
134  import('lib.pkp.classes.security.authorization.PolicySet');
135  $rolePolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
136 
137  import('lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
138  foreach($roleAssignments as $role => $operations) {
139  $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations));
140  }
141  $this->addPolicy($rolePolicy);
142 
143  return parent::authorize($request, $args, $roleAssignments);
144  }
145 
146  //
147  // Implement methods from GridHandler.
148  //
153  protected function getRowInstance() {
154  return new ReviewFormGridRow();
155  }
156 
160  protected function loadData($request, $filter = null) {
161  // Get all review forms.
162  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
163  $context = $request->getContext();
164  $reviewForms = $reviewFormDao->getByAssocId(Application::getContextAssocType(), $context->getId());
165 
166  return $reviewForms->toAssociativeArray();
167  }
168 
172  function setDataElementSequence($request, $rowId, $gridDataElement, $newSequence) {
173  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
174  $gridDataElement->setSequence($newSequence);
175  $reviewFormDao->updateObject($gridDataElement);
176  }
177 
181  function getDataElementSequence($reviewForm) {
182  return $reviewForm->getSequence();
183  }
184 
188  function initFeatures($request, $args) {
189  import('lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
190  return array(new OrderGridItemsFeature());
191  }
192 
193 
194  //
195  // Public grid actions.
196  //
203  function reviewFormPreview($args, $request) {
204  // Identify the review form ID.
205  $reviewFormId = (int) $request->getUserVar('reviewFormId');
206 
207  // Identify the context id.
208  $context = $request->getContext();
209 
210  // Get review form object
211  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
212  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
213 
214  $previewReviewForm = new PreviewReviewForm($reviewFormId);
215  $previewReviewForm->initData();
216  return new JSONMessage(true, $previewReviewForm->fetch($request));
217  }
218 
225  function createReviewForm($args, $request) {
226  // Form handling.
227  $reviewFormForm = new ReviewFormForm(null);
228  $reviewFormForm->initData();
229  return new JSONMessage(true, $reviewFormForm->fetch($request));
230  }
231 
238  function editReviewForm($args, $request) {
239  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
240  $context = $request->getContext();
241  $reviewForm = $reviewFormDao->getById(
242  $request->getUserVar('rowId'),
243  Application::getContextAssocType(), $context->getId()
244  );
245 
246  // Display 'editReviewForm' tabs
247  $templateMgr = TemplateManager::getManager($request);
248  $templateMgr->assign(array(
249  'preview' => $request->getUserVar('preview'),
250  'reviewFormId' => $reviewForm->getId(),
251  'canEdit' => $reviewForm->getIncompleteCount() == 0 && $reviewForm->getCompleteCount() == 0,
252  ));
253  return new JSONMessage(true, $templateMgr->fetch('controllers/grid/settings/reviewForms/editReviewForm.tpl'));
254  }
255 
262  function reviewFormBasics($args, $request) {
263  // Identify the review form Id
264  $reviewFormId = (int) $request->getUserVar('reviewFormId');
265 
266  // Form handling
267  $reviewFormForm = new ReviewFormForm($reviewFormId);
268  $reviewFormForm->initData();
269  return new JSONMessage(true, $reviewFormForm->fetch($request));
270  }
271 
272 
279  function reviewFormElements($args, $request) {
280  $templateMgr = TemplateManager::getManager($request);
281  $dispatcher = $request->getDispatcher();
282  return $templateMgr->fetchAjax(
283  'reviewFormElementsGridContainer',
284  $dispatcher->url(
285  $request, ROUTE_COMPONENT, null,
286  'grid.settings.reviewForms.ReviewFormElementsGridHandler', 'fetchGrid', null,
287  array('reviewFormId' => (int) $request->getUserVar('reviewFormId'))
288  )
289  );
290  }
291 
298  function updateReviewForm($args, $request) {
299  // Identify the review form Id.
300  $reviewFormId = (int) $request->getUserVar('reviewFormId');
301 
302  // Identify the context id.
303  $context = $request->getContext();
304 
305  // Get review form object
306  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
307  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
308 
309  // Form handling.
310  $reviewFormForm = new ReviewFormForm(!isset($reviewFormId) || empty($reviewFormId) ? null : $reviewFormId);
311  $reviewFormForm->readInputData();
312 
313  if ($reviewFormForm->validate()) {
314  $reviewFormForm->execute();
315 
316  // Create the notification.
317  $notificationMgr = new NotificationManager();
318  $user = $request->getUser();
319  $notificationMgr->createTrivialNotification($user->getId());
320 
321  return DAO::getDataChangedEvent($reviewFormId);
322 
323  }
324 
325  return new JSONMessage(false);
326  }
327 
334  function copyReviewForm($args, $request) {
335  // Identify the current review form
336  $reviewFormId = (int) $request->getUserVar('rowId');
337 
338  // Identify the context id.
339  $context = $request->getContext();
340 
341  // Get review form object
342  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
343  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
344 
345  if ($request->checkCSRF() && isset($reviewForm)) {
346  $reviewForm->setActive(0);
347  $reviewForm->setSequence(REALLY_BIG_NUMBER);
348  $newReviewFormId = $reviewFormDao->insertObject($reviewForm);
349  $reviewFormDao->resequenceReviewForms(Application::getContextAssocType(), $context->getId());
350 
351  $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); /* @var $reviewFormElementDao ReviewFormElementDAO */
352  $reviewFormElements = $reviewFormElementDao->getByReviewFormId($reviewFormId);
353  while ($reviewFormElement = $reviewFormElements->next()) {
354  $reviewFormElement->setReviewFormId($newReviewFormId);
355  $reviewFormElement->setSequence(REALLY_BIG_NUMBER);
356  $reviewFormElementDao->insertObject($reviewFormElement);
357  $reviewFormElementDao->resequenceReviewFormElements($newReviewFormId);
358  }
359 
360  // Create the notification.
361  $notificationMgr = new NotificationManager();
362  $user = $request->getUser();
363  $notificationMgr->createTrivialNotification($user->getId());
364 
365  return DAO::getDataChangedEvent($newReviewFormId);
366  }
367 
368  return new JSONMessage(false);
369  }
370 
377  function activateReviewForm($args, $request) {
378  // Identify the current review form
379  $reviewFormId = (int) $request->getUserVar('reviewFormKey');
380 
381  // Identify the context id.
382  $context = $request->getContext();
383 
384  // Get review form object
385  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
386  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
387 
388  if ($request->checkCSRF() && isset($reviewForm) && !$reviewForm->getActive()) {
389  $reviewForm->setActive(1);
390  $reviewFormDao->updateObject($reviewForm);
391 
392  // Create the notification.
393  $notificationMgr = new NotificationManager();
394  $user = $request->getUser();
395  $notificationMgr->createTrivialNotification($user->getId());
396 
397  return DAO::getDataChangedEvent($reviewFormId);
398  }
399 
400  return new JSONMessage(false);
401  }
402 
403 
410  function deactivateReviewForm($args, $request) {
411 
412  // Identify the current review form
413  $reviewFormId = (int) $request->getUserVar('reviewFormKey');
414 
415  // Identify the context id.
416  $context = $request->getContext();
417 
418  // Get review form object
419  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
420  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
421 
422  if ($request->checkCSRF() && isset($reviewForm) && $reviewForm->getActive()) {
423  $reviewForm->setActive(0);
424  $reviewFormDao->updateObject($reviewForm);
425 
426  // Create the notification.
427  $notificationMgr = new NotificationManager();
428  $user = $request->getUser();
429  $notificationMgr->createTrivialNotification($user->getId());
430 
431  return DAO::getDataChangedEvent($reviewFormId);
432  }
433 
434  return new JSONMessage(false);
435  }
436 
443  function deleteReviewForm($args, $request) {
444  // Identify the current review form
445  $reviewFormId = (int) $request->getUserVar('rowId');
446 
447  // Identify the context id.
448  $context = $request->getContext();
449 
450  // Get review form object
451  $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); /* @var $reviewFormDao ReviewFormDAO */
452  $reviewForm = $reviewFormDao->getById($reviewFormId, Application::getContextAssocType(), $context->getId());
453 
454  if ($request->checkCSRF() && isset($reviewForm) && $reviewForm->getCompleteCount() == 0 && $reviewForm->getIncompleteCount() == 0) {
455  $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /* @var $reviewAssignmentDao ReviewAssignmentDAO */
456  $reviewAssignments = $reviewAssignmentDao->getByReviewFormId($reviewFormId);
457 
458  foreach ($reviewAssignments as $reviewAssignment) {
459  $reviewAssignment->setReviewFormId(null);
460  $reviewAssignmentDao->updateObject($reviewAssignment);
461  }
462 
463  $reviewFormDao->deleteById($reviewFormId, $context->getId());
464 
465  // Create the notification.
466  $notificationMgr = new NotificationManager();
467  $user = $request->getUser();
468  $notificationMgr->createTrivialNotification($user->getId());
469 
470  return DAO::getDataChangedEvent($reviewFormId);
471  }
472 
473  return new JSONMessage(false);
474  }
475 }
476 
477 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
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
ReviewFormGridHandler
Handle review form grid requests.
Definition: ReviewFormGridHandler.inc.php:25
ReviewFormGridHandler\updateReviewForm
updateReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:298
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ReviewFormGridHandler\reviewFormElements
reviewFormElements($args, $request)
Definition: ReviewFormGridHandler.inc.php:279
ReviewFormGridHandler\deactivateReviewForm
deactivateReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:410
ReviewFormGridHandler\editReviewForm
editReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:238
PreviewReviewForm
Form for manager to preview review form.
Definition: PreviewReviewForm.inc.php:18
ReviewFormForm
Form for manager to edit a review form.
Definition: ReviewFormForm.inc.php:18
ReviewFormGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: ReviewFormGridHandler.inc.php:133
ReviewFormGridCellProvider
Subclass for review form column's cell provider.
Definition: ReviewFormGridCellProvider.inc.php:17
ReviewFormGridHandler\reviewFormPreview
reviewFormPreview($args, $request)
Definition: ReviewFormGridHandler.inc.php:203
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
ReviewFormGridHandler\createReviewForm
createReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:225
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
Application\getContextAssocType
static getContextAssocType()
Definition: Application.inc.php:199
JSONMessage
Class to represent a JSON (Javascript Object Notation) message.
Definition: JSONMessage.inc.php:18
AjaxModal
A modal that retrieves its content from via AJAX.
Definition: AjaxModal.inc.php:18
OrderGridItemsFeature
Implements grid ordering functionality.
Definition: OrderGridItemsFeature.inc.php:19
ReviewFormGridHandler\initFeatures
initFeatures($request, $args)
Definition: ReviewFormGridHandler.inc.php:188
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
ReviewFormGridHandler\getRowInstance
getRowInstance()
Definition: ReviewFormGridHandler.inc.php:153
ReviewFormGridHandler\copyReviewForm
copyReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:334
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
ReviewFormGridHandler\getDataElementSequence
getDataElementSequence($reviewForm)
Definition: ReviewFormGridHandler.inc.php:181
ReviewFormGridHandler\deleteReviewForm
deleteReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:443
ReviewFormGridHandler\loadData
loadData($request, $filter=null)
Definition: ReviewFormGridHandler.inc.php:160
ReviewFormGridHandler\activateReviewForm
activateReviewForm($args, $request)
Definition: ReviewFormGridHandler.inc.php:377
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
ReviewFormGridHandler\initialize
initialize($request, $args=null)
Definition: ReviewFormGridHandler.inc.php:47
NotificationManager
Definition: NotificationManager.inc.php:19
ReviewFormGridHandler\setDataElementSequence
setDataElementSequence($request, $rowId, $gridDataElement, $newSequence)
Definition: ReviewFormGridHandler.inc.php:172
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
ReviewFormGridHandler\__construct
__construct()
Definition: ReviewFormGridHandler.inc.php:29
ReviewFormGridHandler\reviewFormBasics
reviewFormBasics($args, $request)
Definition: ReviewFormGridHandler.inc.php:262
PolicySet
An ordered list of policies. Policy sets can be added to decision managers like policies....
Definition: PolicySet.inc.php:26
ReviewFormGridRow
ReviewForm grid row definition.
Definition: ReviewFormGridRow.inc.php:19