Open Monograph Press  3.3.0
PublicationFormatGridCellProvider.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.DataObjectGridCellProvider');
17 
18 // Import class which contains the SUBMISSION_FILE_* constants.
19 import('lib.pkp.classes.submission.SubmissionFile');
20 
22 
24  var $_submissionId;
25 
27  protected $_canManage;
28 
35  function __construct($submissionId, $canManage, $publicationId) {
36  parent::__construct();
37  $this->_submissionId = $submissionId;
38  $this->_publicationId = $publicationId;
39  $this->_canManage = $canManage;
40  }
41 
42 
43  //
44  // Getters and setters.
45  //
50  function getSubmissionId() {
51  return $this->_submissionId;
52  }
53 
58  function getPublicationId() {
59  return $this->_publicationId;
60  }
61 
62 
63  //
64  // Template methods from GridCellProvider
65  //
73  function getTemplateVarsFromRowColumn($row, $column) {
74  $data = $row->getData();
75 
76  if (is_a($data, 'Representation')) {
78  switch ($column->getId()) {
79  case 'indent': return array();
80  case 'name':
81  $remoteURL = $data->getRemoteURL();
82  if ($remoteURL) {
83  return array('label' => '<a href="'.htmlspecialchars($remoteURL).'" target="_blank">'.htmlspecialchars($data->getLocalizedName()).'</a>' . '<span class="onix_code">' . $data->getNameForONIXCode() . '</span>');
84  }
85  return array('label' => htmlspecialchars($data->getLocalizedName()) . '<span class="onix_code">' . $data->getNameForONIXCode() . '</span>');
86  case 'isAvailable':
87  return array('status' => $data->getIsAvailable()?'completed':'new');
88  case 'isComplete':
89  return array('status' => $data->getIsApproved()?'completed':'new');
90  }
91  } else {
92  assert(is_array($data) && isset($data['submissionFile']));
93  $proofFile = $data['submissionFile'];
94  switch ($column->getId()) {
95  case 'isAvailable':
96  return array('status' => ($proofFile->getSalesType() != null && $proofFile->getDirectSalesPrice() != null)?'completed':'new');
97  case 'name':
98  import('lib.pkp.controllers.grid.files.FileNameGridColumn');
99  $fileNameGridColumn = new FileNameGridColumn(true, WORKFLOW_STAGE_ID_PRODUCTION);
100  return $fileNameGridColumn->getTemplateVarsFromRow($row);
101  case 'isComplete':
102  return array('status' => $proofFile->getViewable()?'completed':'new');
103  }
104  }
105 
106  return parent::getTemplateVarsFromRowColumn($row, $column);
107  }
108 
114  function getRequestArgs($row) {
115  return array(
116  'submissionId' => $this->getSubmissionId(),
117  'publicationId' => $this->getPublicationId(),
118  );
119  }
120 
124  function getCellActions($request, $row, $column, $position = GRID_ACTION_POSITION_DEFAULT) {
125  $data = $row->getData();
126  $router = $request->getRouter();
127  if (is_a($data, 'Representation')) {
128  switch ($column->getId()) {
129  case 'isAvailable':
130  return array(new LinkAction(
131  'availableRepresentation',
133  $request->getSession(),
134  __($data->getIsAvailable()?'grid.catalogEntry.availableRepresentation.removeMessage':'grid.catalogEntry.availableRepresentation.message'),
135  __('grid.catalogEntry.availableRepresentation.title'),
136  $router->url(
137  $request, null, null, 'setAvailable', null,
138  array(
139  'representationId' => $data->getId(),
140  'newAvailableState' => $data->getIsAvailable()?0:1,
141  'submissionId' => $this->getSubmissionId(),
142  'publicationId' => $data->getData('publicationId'),
143  )
144  ),
145  'modal_approve'
146  ),
147  $data->getIsAvailable()?__('grid.catalogEntry.isAvailable'):__('grid.catalogEntry.isNotAvailable'),
148  $data->getIsAvailable()?'complete':'incomplete',
149  __('grid.action.formatAvailable')
150  ));
151  case 'name':
152  // if it is a remotely hosted content, don't provide
153  // file upload and select link actions
154  $remoteURL = $data->getRemoteURL();
155  if ($remoteURL) {
156  return array();
157  }
158  // If this is just an author account, don't give any actions
159  if (!$this->_canManage) return array();
160  import('lib.pkp.controllers.api.file.linkAction.AddFileLinkAction');
161  import('lib.pkp.controllers.grid.files.fileList.linkAction.SelectFilesLinkAction');
162  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_EDITOR);
163  return array(
164  new AddFileLinkAction(
165  $request, $this->getSubmissionId(), WORKFLOW_STAGE_ID_PRODUCTION,
166  array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT), SUBMISSION_FILE_PROOF,
167  ASSOC_TYPE_REPRESENTATION, $data->getId()
168  ),
170  $request,
171  array(
172  'submissionId' => $this->getSubmissionId(),
173  'assocType' => ASSOC_TYPE_REPRESENTATION,
174  'assocId' => $data->getId(),
175  'representationId' => $data->getId(),
176  'publicationId' => $this->getPublicationId(),
177  'stageId' => WORKFLOW_STAGE_ID_PRODUCTION,
178  'fileStage' => SUBMISSION_FILE_PROOF,
179  ),
180  __('editor.submission.selectFiles')
181  )
182  );
183  case 'isComplete':
184  import('lib.pkp.classes.linkAction.request.AjaxModal');
185  return array(new LinkAction(
186  'approveRepresentation',
187  new AjaxModal(
188  $router->url(
189  $request, null, null, 'setApproved', null,
190  array(
191  'representationId' => $data->getId(),
192  'newApprovedState' => $data->getIsApproved()?0:1,
193  'submissionId' => $this->getSubmissionId(),
194  'publicationId' => $data->getData('publicationId'),
195  )
196  ),
197  __('grid.catalogEntry.approvedRepresentation.title'),
198  'modal_approve'
199  ),
200  $data->getIsApproved()?__('submission.complete'):__('submission.incomplete'),
201  $data->getIsApproved()?'complete':'incomplete',
202  __('grid.action.setApproval')
203  ));
204  }
205  } else {
206  assert(is_array($data) && isset($data['submissionFile']));
207  $submissionFile = $data['submissionFile'];
208  switch ($column->getId()) {
209  case 'isAvailable':
210  $salesType = preg_replace('/[^\da-z]/i', '', $submissionFile->getSalesType());
211  $salesTypeString = 'editor.monograph.approvedProofs.edit.linkTitle';
212  if ($salesType == 'openAccess') {
213  $salesTypeString = 'payment.directSales.openAccess';
214  } elseif ($salesType == 'directSales') {
215  $salesTypeString = 'payment.directSales.directSales';
216  } elseif ($salesType == 'notAvailable') {
217  $salesTypeString = 'payment.directSales.notAvailable';
218  }
219  return array(new LinkAction(
220  'editApprovedProof',
221  new AjaxModal(
222  $router->url($request, null, null, 'editApprovedProof', null, array(
223  'fileId' => $submissionFile->getFileId() . '-' . $submissionFile->getRevision(),
224  'submissionId' => $submissionFile->getSubmissionId(),
225  'publicationId' => $this->getPublicationId(),
226  'representationId' => $submissionFile->getAssocId(),
227  )),
228  __('editor.monograph.approvedProofs.edit'),
229  'edit'
230  ),
231  __($salesTypeString),
232  $salesType
233  ));
234  case 'name':
235  import('lib.pkp.controllers.grid.files.FileNameGridColumn');
236  $fileNameColumn = new FileNameGridColumn(true, WORKFLOW_STAGE_ID_PRODUCTION, true);
237  return $fileNameColumn->getCellActions($request, $row, $position);
238  case 'isComplete':
239  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_EDITOR);
240  import('lib.pkp.classes.linkAction.request.AjaxModal');
241  $title = __($submissionFile->getViewable()?'editor.submission.proofreading.revokeProofApproval':'editor.submission.proofreading.approveProof');
242  return array(new LinkAction(
243  $submissionFile->getViewable()?'approved':'not_approved',
244  new AjaxModal(
245  $router->url(
246  $request, null, null, 'setProofFileCompletion',
247  null,
248  array(
249  'submissionId' => $submissionFile->getSubmissionId(),
250  'publicationId' => $this->getPublicationId(),
251  'fileId' => $submissionFile->getFileId(),
252  'revision' => $submissionFile->getRevision(),
253  'approval' => !$submissionFile->getViewable(),
254  )
255  ),
256  $title,
257  'modal_approve'
258  ),
259  $submissionFile->getViewable()?__('grid.catalogEntry.availableRepresentation.approved'):__('grid.catalogEntry.availableRepresentation.notApproved'),
260  $submissionFile->getViewable()?'complete':'incomplete',
261  __('grid.action.setApproval')
262  ));
263  }
264  }
265  return parent::getCellActions($request, $row, $column, $position);
266  }
267 }
268 
269 
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PublicationFormatGridCellProvider\$_canManage
$_canManage
Definition: PublicationFormatGridCellProvider.inc.php:33
RemoteActionConfirmationModal
Class defining a simple confirmation modal with a remote action and ok/cancel buttons.
Definition: RemoteActionConfirmationModal.inc.php:18
PublicationFormatGridCellProvider\getPublicationId
getPublicationId()
Definition: PublicationFormatGridCellProvider.inc.php:64
PublicationFormatGridCellProvider
Base class for a cell provider that can retrieve labels for publication formats.
Definition: PublicationFormatGridCellProvider.inc.php:21
SelectFilesLinkAction
An abstract base action for actions to open up a modal that allows users to select files from a file ...
Definition: SelectFilesLinkAction.inc.php:18
PublicationFormatGridCellProvider\getCellActions
getCellActions($request, $row, $column, $position=GRID_ACTION_POSITION_DEFAULT)
Definition: PublicationFormatGridCellProvider.inc.php:130
GridCellProvider\__construct
__construct()
Definition: GridCellProvider.inc.php:24
FileNameGridColumn
Implements a file name column.
Definition: FileNameGridColumn.inc.php:18
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
DataObjectGridCellProvider
Base class for a cell provider that can retrieve simple labels from DataObjects. If you need more com...
Definition: DataObjectGridCellProvider.inc.php:22
AddFileLinkAction
An action to add a submission file.
Definition: AddFileLinkAction.inc.php:18
PublicationFormatGridCellProvider\getRequestArgs
getRequestArgs($row)
Definition: PublicationFormatGridCellProvider.inc.php:120
PublicationFormatGridCellProvider\$_submissionId
$_submissionId
Definition: PublicationFormatGridCellProvider.inc.php:27
PublicationFormatGridCellProvider\getSubmissionId
getSubmissionId()
Definition: PublicationFormatGridCellProvider.inc.php:56
PublicationFormatGridCellProvider\getTemplateVarsFromRowColumn
getTemplateVarsFromRowColumn($row, $column)
Definition: PublicationFormatGridCellProvider.inc.php:79
PublicationFormatGridCellProvider\__construct
__construct($submissionId, $canManage, $publicationId)
Definition: PublicationFormatGridCellProvider.inc.php:41