Open Journal Systems  3.3.0
SubmissionFilesGridHandler.inc.php
1 <?php
2 
16 // Import UI base classes.
17 import('lib.pkp.classes.controllers.grid.GridHandler');
18 
19 // Import submission files grid specific classes.
20 import('lib.pkp.controllers.grid.files.SubmissionFilesGridRow');
21 import('lib.pkp.controllers.grid.files.FileNameGridColumn');
22 import('lib.pkp.controllers.grid.files.FileDateGridColumn');
23 
24 // Import submission file class which contains the SUBMISSION_FILE_* constants.
25 import('lib.pkp.classes.submission.SubmissionFile');
26 
27 // Import the class that defines file grids capabilities.
28 import('lib.pkp.classes.controllers.grid.files.FilesGridCapabilities');
29 
31 
33  var $_capabilities;
34 
36  var $_stageId;
37 
45  function __construct($dataProvider, $stageId, $capabilities = 0) {
46  parent::__construct($dataProvider);
47 
48  if ($stageId) {
49  $this->_stageId = (int)$stageId;
50  }
51  $this->_capabilities = new FilesGridCapabilities($capabilities);
52  }
53 
54 
55  //
56  // Getters and Setters
57  //
62  function getCapabilities() {
63  return $this->_capabilities;
64  }
65 
70  function setCapabilities($capabilities) {
71  $this->_capabilities = $capabilities;
72  }
73 
78  function getStageId() {
79  return $this->_stageId;
80  }
81 
86  function getSubmission() {
87  // We assume proper authentication by the data provider.
88  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
89  assert(is_a($submission, 'Submission'));
90  return $submission;
91  }
92 
93 
94  //
95  // Implement template methods from PKPHandler
96  //
100  function authorize($request, &$args, $roleAssignments) {
101  // Set the stage id from the request parameter if not set previously.
102  if (!$this->getStageId()) {
103  $stageId = (int) $request->getUserVar('stageId');
104  // This will be validated with the authorization policy added by
105  // the grid data provider.
106  $this->_stageId = $stageId;
107  }
108 
109  $dataProvider = $this->getDataProvider();
110  $dataProvider->setStageId($this->getStageId());
111 
112  return parent::authorize($request, $args, $roleAssignments);
113  }
114 
118  function initialize($request, $args = null) {
119  parent::initialize($request, $args);
120 
121  // Load translations.
123  LOCALE_COMPONENT_APP_SUBMISSION,
124  LOCALE_COMPONENT_PKP_SUBMISSION,
125  LOCALE_COMPONENT_APP_EDITOR,
126  LOCALE_COMPONENT_PKP_EDITOR,
127  LOCALE_COMPONENT_PKP_COMMON,
128  LOCALE_COMPONENT_APP_COMMON
129  );
130 
131  // Add grid actions
132  $capabilities = $this->getCapabilities();
133  $dataProvider = $this->getDataProvider();
134 
135  $submission = $this->getSubmission();
136 
137  if($capabilities->canAdd()) {
138  assert(isset($dataProvider));
139  $this->addAction($dataProvider->getAddFileAction($request));
140  }
141 
142  // Test whether an archive tool is available for the export to work, if so, add 'download all' grid action
143  if ($capabilities->canDownloadAll() && $this->hasGridDataElements($request)) {
144  $stageId = $this->getStageId();
145  $linkParams = array('submissionId' => $submission->getId(), 'stageId' => $stageId);
146  $files = $this->getFilesToDownload($request);
147 
148  $this->addAction($capabilities->getDownloadAllAction($request, $files, $linkParams), GRID_ACTION_POSITION_BELOW);
149  }
150 
151  // The file name column is common to all file grid types.
152  $this->addColumn(new FileNameGridColumn($capabilities->canViewNotes(), $this->getStageId()));
153 
154  // Additional column with file upload date/creation date
155  $this->addColumn(new FileDateGridColumn($capabilities->canViewNotes()));
156 
157  // Set the no items row text
158  $this->setEmptyRowText('grid.noFiles');
159  }
160 
164  protected function getFilterForm() {
165  return 'controllers/grid/files/filesGridFilter.tpl';
166  }
167 
171  function renderFilter($request, $filterData = array()) {
172  return parent::renderFilter(
173  $request,
174  array(
175  'columns' => $this->getFilterColumns(),
176  'gridId' => $this->getId()
177  )
178  );
179  }
180 
184  function getFilterSelectionData($request) {
185  return array(
186  'search' => (string) $request->getUserVar('search'),
187  'column' => (string) $request->getUserVar('column'),
188  );
189  }
190 
195  protected function getFilterColumns() {
196  return array(
197  'name' => __('common.name'),
198  );
199  }
200 
201 
202  //
203  // Overridden methods from GridHandler
204  //
208  protected function getRowInstance() {
209  return new SubmissionFilesGridRow($this->getCapabilities(), $this->getStageId());
210  }
211 
212 
213  //
214  // Protected methods.
215  //
216  function getFilesToDownload($request) {
217  return $this->getGridDataElements($request);
218  }
219 }
220 
SubmissionFilesGridHandler\$_capabilities
$_capabilities
Definition: SubmissionFilesGridHandler.inc.php:36
GridHandler\setEmptyRowText
setEmptyRowText($emptyRowText)
Definition: GridHandler.inc.php:231
PKPHandler\__construct
__construct()
Definition: PKPHandler.inc.php:85
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
GridHandler\getDataProvider
getDataProvider()
Definition: GridHandler.inc.php:157
SubmissionFilesGridHandler\__construct
__construct($dataProvider, $stageId, $capabilities=0)
Definition: SubmissionFilesGridHandler.inc.php:51
SubmissionFilesGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: SubmissionFilesGridHandler.inc.php:106
SubmissionFilesGridHandler\getStageId
getStageId()
Definition: SubmissionFilesGridHandler.inc.php:84
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
SubmissionFilesGridHandler\getSubmission
getSubmission()
Definition: SubmissionFilesGridHandler.inc.php:92
SubmissionFilesGridHandler\getCapabilities
getCapabilities()
Definition: SubmissionFilesGridHandler.inc.php:68
SubmissionFilesGridHandler\$_stageId
$_stageId
Definition: SubmissionFilesGridHandler.inc.php:42
GridHandler\getGridDataElements
& getGridDataElements($request)
Definition: GridHandler.inc.php:345
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
FileNameGridColumn
Implements a file name column.
Definition: FileNameGridColumn.inc.php:18
SubmissionFilesGridHandler\getFilterColumns
getFilterColumns()
Definition: SubmissionFilesGridHandler.inc.php:201
SubmissionFilesGridHandler\getFilesToDownload
getFilesToDownload($request)
Definition: SubmissionFilesGridHandler.inc.php:222
SubmissionFilesGridHandler
Handle submission file grid requests.
Definition: SubmissionFilesGridHandler.inc.php:30
SubmissionFilesGridHandler\initialize
initialize($request, $args=null)
Definition: SubmissionFilesGridHandler.inc.php:124
SubmissionFilesGridHandler\getFilterForm
getFilterForm()
Definition: SubmissionFilesGridHandler.inc.php:170
SubmissionFilesGridHandler\getRowInstance
getRowInstance()
Definition: SubmissionFilesGridHandler.inc.php:214
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
SubmissionFilesGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: SubmissionFilesGridHandler.inc.php:177
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
FilesGridCapabilities
Defines files grid capabilities. Should be used by grid handlers that handle submission files to stor...
Definition: FilesGridCapabilities.inc.php:25
SubmissionFilesGridHandler\setCapabilities
setCapabilities($capabilities)
Definition: SubmissionFilesGridHandler.inc.php:76
SubmissionFilesGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: SubmissionFilesGridHandler.inc.php:190
FileDateGridColumn
Implements a file name column.
Definition: FileDateGridColumn.inc.php:19
SubmissionFilesGridRow
Handle submission file grid row requests.
Definition: SubmissionFilesGridRow.inc.php:19