Open Journal Systems  3.3.0
IssueGalleyGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('controllers.grid.issueGalleys.IssueGalleyGridRow');
18 
23  function __construct() {
24  parent::__construct();
25  $this->addRoleAssignment(
26  array(ROLE_ID_MANAGER),
27  array(
28  'fetchGrid', 'fetchRow', 'saveSequence',
29  'add', 'edit', 'upload', 'download', 'update', 'delete'
30  )
31  );
32  }
33 
34 
35  //
36  // Implement template methods from PKPHandler
37  //
41  function authorize($request, &$args, $roleAssignments) {
42  import('lib.pkp.classes.security.authorization.ContextAccessPolicy');
43  $this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
44 
45  import('classes.security.authorization.OjsIssueRequiredPolicy');
46  $this->addPolicy(new OjsIssueRequiredPolicy($request, $args));
47 
48  // If a signoff ID was specified, authorize it.
49  if ($request->getUserVar('issueGalleyId')) {
50  import('classes.security.authorization.OjsIssueGalleyRequiredPolicy');
51  $this->addPolicy(new OjsIssueGalleyRequiredPolicy($request, $args));
52  }
53 
54  return parent::authorize($request, $args, $roleAssignments);
55  }
56 
60  function getDataElementSequence($issueGalley) {
61  return $issueGalley->getSequence();
62  }
63 
67  function setDataElementSequence($request, $rowId, $gridDataElement, $newSequence) {
68  $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO'); /* @var $issueGalleyDao IssueGalleyDAO */
69  $gridDataElement->setSequence($newSequence);
70  $issueGalleyDao->updateObject($gridDataElement);
71  }
72 
76  function initFeatures($request, $args) {
77  import('lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
78  return array(new OrderGridItemsFeature());
79  }
80 
84  function getRequestArgs() {
85  $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
86  $issueGalley = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE_GALLEY);
87  $requestArgs = (array) parent::getRequestArgs();
88  $requestArgs['issueId'] = $issue->getId();
89  if ($issueGalley) $requestArgs['issueGalleyId'] = $issueGalley->getId();
90  return $requestArgs;
91  }
92 
96  function initialize($request, $args = null) {
97  parent::initialize($request, $args);
98 
99  AppLocale::requireComponents(LOCALE_COMPONENT_APP_EDITOR, LOCALE_COMPONENT_PKP_SUBMISSION);
100 
101  // Add action
102  $router = $request->getRouter();
103  import('lib.pkp.classes.linkAction.request.AjaxModal');
104  $this->addAction(
105  new LinkAction(
106  'add',
107  new AjaxModal(
108  $router->url(
109  $request, null, null, 'add', null,
110  array_merge($this->getRequestArgs(), array('gridId' => $this->getId()))
111  ),
112  __('grid.action.addIssueGalley'),
113  'modal_add'
114  ),
115  __('grid.action.addIssueGalley'),
116  'add_category'
117  )
118  );
119 
120  // Grid columns.
121  import('controllers.grid.issueGalleys.IssueGalleyGridCellProvider');
122  $issueGalleyGridCellProvider = new IssueGalleyGridCellProvider();
123 
124  // Issue identification
125  $this->addColumn(
126  new GridColumn(
127  'label',
128  'submission.layout.galleyLabel',
129  null,
130  null,
131  $issueGalleyGridCellProvider
132  )
133  );
134 
135  // Language, if more than one is supported
136  $journal = $request->getJournal();
137  if (count($journal->getSupportedLocaleNames())>1) {
138  $this->addColumn(
139  new GridColumn(
140  'locale',
141  'common.language',
142  null,
143  null,
144  $issueGalleyGridCellProvider
145  )
146  );
147  }
148 
149  // Public ID, if enabled
150  $this->addColumn(
151  new GridColumn(
152  'publicGalleyId',
153  'submission.publisherId',
154  null,
155  null,
156  $issueGalleyGridCellProvider
157  )
158  );
159 
160  }
161 
166  protected function getRowInstance() {
167  $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
168  return new IssueGalleyGridRow($issue->getId());
169  }
170 
171  //
172  // Public operations
173  //
179  function add($args, $request) {
180  // Calling editIssueData with an empty ID will add
181  // a new issue.
182  return $this->edit($args, $request);
183  }
184 
191  function edit($args, $request) {
192  $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
193  $issueGalley = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE_GALLEY);
194 
195  import('controllers.grid.issues.form.IssueGalleyForm');
196  $issueGalleyForm = new IssueGalleyForm($request, $issue, $issueGalley);
197  $issueGalleyForm->initData();
198  return new JSONMessage(true, $issueGalleyForm->fetch($request));
199  }
200 
207  function upload($args, $request) {
208  $user = $request->getUser();
209 
210  import('lib.pkp.classes.file.TemporaryFileManager');
211  $temporaryFileManager = new TemporaryFileManager();
212  $temporaryFile = $temporaryFileManager->handleUpload('uploadedFile', $user->getId());
213  if ($temporaryFile) {
214  $json = new JSONMessage(true);
215  $json->setAdditionalAttributes(array(
216  'temporaryFileId' => $temporaryFile->getId()
217  ));
218  return $json;
219  } else {
220  return new JSONMessage(false, __('common.uploadFailed'));
221  }
222  }
223 
230  function download($args, $request) {
231  $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
232  $issueGalley = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE_GALLEY);
233  import('classes.file.IssueFileManager');
234  $issueFileManager = new IssueFileManager($issue->getId());
235  return $issueFileManager->downloadById($issueGalley->getFileId());
236  }
237 
244  function update($args, $request) {
245  $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
246  $issueGalley = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE_GALLEY);
247 
248  import('controllers.grid.issues.form.IssueGalleyForm');
249  $issueGalleyForm = new IssueGalleyForm($request, $issue, $issueGalley);
250  $issueGalleyForm->readInputData();
251 
252  if ($issueGalleyForm->validate()) {
253  $issueId = $issueGalleyForm->execute();
254  return DAO::getDataChangedEvent($issueId);
255  }
256  return new JSONMessage(false);
257  }
258 
264  function delete($args, $request) {
265  $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO'); /* @var $issueGalleyDao IssueGalleyDAO */
266  $issueGalley = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE_GALLEY);
267  if ($issueGalley && $request->checkCSRF()) {
268  $issueGalleyDao->deleteObject($issueGalley);
269  return DAO::getDataChangedEvent();
270  }
271  return new JSONMessage(false);
272  }
273 
277  protected function loadData($request, $filter) {
278  $issue = $this->getAuthorizedContextObject(ASSOC_TYPE_ISSUE);
279  $issueGalleyDao = DAORegistry::getDAO('IssueGalleyDAO'); /* @var $issueGalleyDao IssueGalleyDAO */
280  return $issueGalleyDao->getByIssueId($issue->getId());
281  }
282 }
283 
284 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
TemporaryFileManager
Definition: TemporaryFileManager.inc.php:19
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
ContextAccessPolicy
Class to control access to PKP applications' setup components.
Definition: ContextAccessPolicy.inc.php:17
IssueFileManager
Class defining operations for issue file management.
Definition: IssueFileManager.inc.php:22
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
OjsIssueRequiredPolicy
Policy that ensures that the request contains a valid issue.
Definition: OjsIssueRequiredPolicy.inc.php:17
IssueGalleyGridHandler\getRequestArgs
getRequestArgs()
Definition: IssueGalleyGridHandler.inc.php:84
IssueGalleyGridHandler\edit
edit($args, $request)
Definition: IssueGalleyGridHandler.inc.php:191
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
IssueGalleyGridHandler\add
add($args, $request)
Definition: IssueGalleyGridHandler.inc.php:179
IssueGalleyGridHandler\__construct
__construct()
Definition: IssueGalleyGridHandler.inc.php:23
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
OjsIssueGalleyRequiredPolicy
Policy that ensures that the request contains a valid issue galley.
Definition: OjsIssueGalleyRequiredPolicy.inc.php:17
IssueGalleyGridHandler\upload
upload($args, $request)
Definition: IssueGalleyGridHandler.inc.php:207
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
IssueGalleyGridHandler\update
update($args, $request)
Definition: IssueGalleyGridHandler.inc.php:244
IssueGalleyGridRow
Handle issue galley grid row requests.
Definition: IssueGalleyGridRow.inc.php:18
IssueGalleyGridHandler\initialize
initialize($request, $args=null)
Definition: IssueGalleyGridHandler.inc.php:96
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
IssueGalleyGridHandler\initFeatures
initFeatures($request, $args)
Definition: IssueGalleyGridHandler.inc.php:76
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
IssueGalleyGridHandler\getRowInstance
getRowInstance()
Definition: IssueGalleyGridHandler.inc.php:166
IssueGalleyGridHandler\setDataElementSequence
setDataElementSequence($request, $rowId, $gridDataElement, $newSequence)
Definition: IssueGalleyGridHandler.inc.php:67
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
IssueGalleyGridHandler\download
download($args, $request)
Definition: IssueGalleyGridHandler.inc.php:230
IssueGalleyGridCellProvider
Grid cell provider for the issue galleys grid.
Definition: IssueGalleyGridCellProvider.inc.php:18
IssueGalleyGridHandler
Handle issues grid requests.
Definition: IssueGalleyGridHandler.inc.php:19
IssueGalleyGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: IssueGalleyGridHandler.inc.php:41
IssueGalleyForm
Issue galley editing form.
Definition: IssueGalleyForm.inc.php:19
IssueGalleyGridHandler\loadData
loadData($request, $filter)
Definition: IssueGalleyGridHandler.inc.php:277
IssueGalleyGridHandler\getDataElementSequence
getDataElementSequence($issueGalley)
Definition: IssueGalleyGridHandler.inc.php:60