Open Journal Systems  3.3.0
SubmissionChecklistGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.controllers.grid.settings.SetupGridHandler');
17 import('lib.pkp.controllers.grid.settings.submissionChecklist.SubmissionChecklistGridRow');
18 
20 
24  function __construct() {
25  parent::__construct();
26  $this->addRoleAssignment(array(ROLE_ID_MANAGER),
27  array('fetchGrid', 'fetchRow', 'addItem', 'editItem', 'updateItem', 'deleteItem', 'saveSequence'));
28  }
29 
30  //
31  // Overridden template methods
32  //
36  function initialize($request, $args = null) {
37  parent::initialize($request, $args);
38 
39  // Basic grid configuration
40  $this->setId('submissionChecklist');
41  $this->setTitle('manager.setup.submissionPreparationChecklist');
42 
43  // Add grid-level actions
44  import('lib.pkp.classes.linkAction.request.AjaxModal');
45  $router = $request->getRouter();
46  $this->addAction(
47  new LinkAction(
48  'addItem',
49  new AjaxModal(
50  $router->url($request, null, null, 'addItem', null, array('gridId' => $this->getId())),
51  __('grid.action.addItem'),
52  'modal_add_item',
53  true),
54  __('grid.action.addItem'),
55  'add_item')
56  );
57 
58  // Columns
59  $this->addColumn(
60  new GridColumn(
61  'content',
62  'grid.submissionChecklist.column.checklistItem',
63  null,
64  null,
65  null,
66  array('html' => true, 'maxLength' => 220)
67  )
68  );
69  }
70 
71 
72  //
73  // Overridden methods from GridHandler
74  //
78  function initFeatures($request, $args) {
79  import('lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
80  return array(new OrderGridItemsFeature());
81  }
82 
86  protected function getRowInstance() {
87  return new SubmissionChecklistGridRow();
88  }
89 
93  protected function loadData($request, $filter) {
94  // Elements to be displayed in the grid
95  $router = $request->getRouter();
96  $context = $router->getContext($request);
97  $submissionChecklist = $context->getData('submissionChecklist');
98  return $submissionChecklist[AppLocale::getLocale()];
99  }
100 
101 
102  //
103  // Public grid actions.
104  //
110  function addItem($args, $request) {
111  // Calling editItem with an empty row id will add a new row.
112  return $this->editItem($args, $request);
113  }
114 
121  function editItem($args, $request) {
122  import('lib.pkp.controllers.grid.settings.submissionChecklist.form.SubmissionChecklistForm');
123  $submissionChecklistId = isset($args['rowId']) ? $args['rowId'] : null;
124  $submissionChecklistForm = new SubmissionChecklistForm($submissionChecklistId);
125 
126  $submissionChecklistForm->initData($args);
127 
128  return new JSONMessage(true, $submissionChecklistForm->fetch($request));
129  }
130 
137  function updateItem($args, $request) {
138  // -> submissionChecklistId must be present and valid
139  // -> htmlId must be present and valid
140 
141  import('lib.pkp.controllers.grid.settings.submissionChecklist.form.SubmissionChecklistForm');
142  $submissionChecklistId = isset($args['rowId']) ? $args['rowId'] : null;
143  $submissionChecklistForm = new SubmissionChecklistForm($submissionChecklistId);
144  $submissionChecklistForm->readInputData();
145 
146  if ($submissionChecklistForm->validate()) {
147  $submissionChecklistForm->execute();
148  return DAO::getDataChangedEvent($submissionChecklistForm->submissionChecklistId);
149  } else {
150  return new JSONMessage(false);
151  }
152  }
153 
160  function deleteItem($args, $request) {
161  if (!$request->checkCSRF()) return new JSONMessage(false);
162 
163  $rowId = $request->getUserVar('rowId');
164 
165  $router = $request->getRouter();
166  $context = $router->getContext($request);
167 
168  // get all of the submissionChecklists
169  $submissionChecklistAll = $context->getData('submissionChecklist');
170 
171  foreach (AppLocale::getSupportedLocales() as $locale => $name) {
172  if ( isset($submissionChecklistAll[$locale][$rowId]) ) {
173  unset($submissionChecklistAll[$locale][$rowId]);
174  } else {
175  // only fail if the currently displayed locale was not set
176  // (this is the one that needs to be removed from the currently displayed grid)
177  if ( $locale == AppLocale::getLocale() ) {
178  return new JSONMessage(false, __('manager.setup.errorDeletingSubmissionChecklist'));
179  }
180  }
181  }
182 
183  $context->updateSetting('submissionChecklist', $submissionChecklistAll, 'object', true);
184  return DAO::getDataChangedEvent($rowId);
185  }
186 
190  function getDataElementSequence($gridDataElement) {
191  return $gridDataElement['order'];
192  }
193 
197  function setDataElementSequence($request, $rowId, $gridDataElement, $newSequence) {
198  $router = $request->getRouter();
199  $context = $router->getContext($request);
200 
201  // Get all of the submissionChecklists.
202  $submissionChecklistAll = $context->getData('submissionChecklist');
203  $locale = AppLocale::getLocale();
204 
205  if (isset($submissionChecklistAll[$locale][$rowId])) {
206  $submissionChecklistAll[$locale][$rowId]['order'] = $newSequence;
207  }
208 
209  $orderMap = array();
210  foreach ($submissionChecklistAll[$locale] as $id => $checklistItem) {
211  $orderMap[$id] = $checklistItem['order'];
212  }
213 
214  asort($orderMap);
215 
216  // Build the new order checklist object.
217  $orderedChecklistItems = array();
218  foreach ($orderMap as $id => $order) {
219  if (isset($submissionChecklistAll[$locale][$id])) {
220  $orderedChecklistItems[$locale][$id] = $submissionChecklistAll[$locale][$id];
221  }
222  }
223 
224  // Update both the in-memory value and database setting.
225  $context->setData('submissionChecklist', $orderedChecklistItems);
226  $context->updateSetting('submissionChecklist', $orderedChecklistItems, 'object', true);
227  }
228 }
229 
230 
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
SetupGridHandler
Base class for setup grid handlers.
Definition: SetupGridHandler.inc.php:18
SubmissionChecklistForm
Form for adding/edditing a submissionChecklist stores/retrieves from an associative array.
Definition: SubmissionChecklistForm.inc.php:19
SubmissionChecklistGridHandler\addItem
addItem($args, $request)
Definition: SubmissionChecklistGridHandler.inc.php:110
SubmissionChecklistGridHandler\__construct
__construct()
Definition: SubmissionChecklistGridHandler.inc.php:24
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
SubmissionChecklistGridHandler\initFeatures
initFeatures($request, $args)
Definition: SubmissionChecklistGridHandler.inc.php:78
SubmissionChecklistGridHandler\deleteItem
deleteItem($args, $request)
Definition: SubmissionChecklistGridHandler.inc.php:160
SubmissionChecklistGridHandler\initialize
initialize($request, $args=null)
Definition: SubmissionChecklistGridHandler.inc.php:36
SubmissionChecklistGridHandler\getRowInstance
getRowInstance()
Definition: SubmissionChecklistGridHandler.inc.php:86
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
SubmissionChecklistGridHandler\getDataElementSequence
getDataElementSequence($gridDataElement)
Definition: SubmissionChecklistGridHandler.inc.php:190
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
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
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
SubmissionChecklistGridHandler\loadData
loadData($request, $filter)
Definition: SubmissionChecklistGridHandler.inc.php:93
SubmissionChecklistGridHandler\updateItem
updateItem($args, $request)
Definition: SubmissionChecklistGridHandler.inc.php:137
AppLocale\getSupportedLocales
static getSupportedLocales()
Definition: env1/MockAppLocale.inc.php:116
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
SubmissionChecklistGridRow
Handle submissionChecklist grid row requests.
Definition: SubmissionChecklistGridRow.inc.php:18
PKPHandler\setId
setId($id)
Definition: PKPHandler.inc.php:99
SubmissionChecklistGridHandler\setDataElementSequence
setDataElementSequence($request, $rowId, $gridDataElement, $newSequence)
Definition: SubmissionChecklistGridHandler.inc.php:197
SubmissionChecklistGridHandler
Handle submissionChecklist grid requests.
Definition: SubmissionChecklistGridHandler.inc.php:19
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
SubmissionChecklistGridHandler\editItem
editItem($args, $request)
Definition: SubmissionChecklistGridHandler.inc.php:121