Open Journal Systems  3.3.0
PubIdExportRepresentationsListGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('controllers.grid.pubIds.PubIdExportRepresentationsListGridCellProvider');
18 
21  var $_plugin;
22 
26  function __construct() {
27  parent::__construct();
28  $this->addRoleAssignment(
29  array(ROLE_ID_MANAGER),
30  array('fetchGrid', 'fetchRow')
31  );
32  }
33 
34  //
35  // Implement template methods from PKPHandler
36  //
40  function authorize($request, &$args, $roleAssignments) {
41  import('lib.pkp.classes.security.authorization.PolicySet');
42  $rolePolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
43 
44  import('lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
45  foreach($roleAssignments as $role => $operations) {
46  $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations));
47  }
48  $this->addPolicy($rolePolicy);
49 
50  return parent::authorize($request, $args, $roleAssignments);
51  }
52 
56  function initialize($request, $args = null) {
57  parent::initialize($request, $args);
58  $context = $request->getContext();
59 
60  // Basic grid configuration.
61  $this->setTitle('plugins.importexport.common.export.articles');
62 
63  // Load submission-specific translations.
65  LOCALE_COMPONENT_APP_SUBMISSION, // title filter
66  LOCALE_COMPONENT_PKP_SUBMISSION, // authors filter
67  LOCALE_COMPONENT_APP_MANAGER
68  );
69 
70  $pluginCategory = $request->getUserVar('category');
71  $pluginPathName = $request->getUserVar('plugin');
72  $this->_plugin = PluginRegistry::loadPlugin($pluginCategory, $pluginPathName);
73  assert(isset($this->_plugin));
74 
75  // Fetch the authorized roles.
76  $authorizedRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
77 
78  // Grid columns.
79  $cellProvider = new PubIdExportRepresentationsListGridCellProvider($this->_plugin, $authorizedRoles);
80  $this->addColumn(
81  new GridColumn(
82  'id',
83  null,
84  __('common.id'),
85  'controllers/grid/gridCell.tpl',
86  $cellProvider,
87  array('alignment' => COLUMN_ALIGNMENT_LEFT,
88  'width' => 10)
89  )
90  );
91  $this->addColumn(
92  new GridColumn(
93  'title',
94  'grid.submission.itemTitle',
95  null,
96  null,
97  $cellProvider,
98  array('html' => true,
99  'alignment' => COLUMN_ALIGNMENT_LEFT)
100  )
101  );
102  $this->addColumn(
103  new GridColumn(
104  'issue',
105  'issue.issue',
106  null,
107  null,
108  $cellProvider,
109  array('alignment' => COLUMN_ALIGNMENT_LEFT,
110  'width' => 20)
111  )
112  );
113  $this->addColumn(
114  new GridColumn(
115  'galley',
116  'submission.layout.galleyLabel',
117  null,
118  null,
119  $cellProvider,
120  array('alignment' => COLUMN_ALIGNMENT_LEFT,
121  'width' => 20)
122  )
123  );
124  $this->addColumn(
125  new GridColumn(
126  'pubId',
127  null,
128  $this->_plugin->getPubIdDisplayType(),
129  null,
130  $cellProvider,
131  array('alignment' => COLUMN_ALIGNMENT_LEFT,
132  'width' => 15)
133  )
134  );
135  $this->addColumn(
136  new GridColumn(
137  'status',
138  'common.status',
139  null,
140  null,
141  $cellProvider,
142  array('alignment' => COLUMN_ALIGNMENT_LEFT,
143  'width' => 10)
144  )
145  );
146 
147  }
148 
149 
150  //
151  // Implemented methods from GridHandler.
152  //
156  function initFeatures($request, $args) {
157  import('lib.pkp.classes.controllers.grid.feature.selectableItems.SelectableItemsFeature');
158  import('lib.pkp.classes.controllers.grid.feature.PagingFeature');
159  return array(new SelectableItemsFeature(), new PagingFeature());
160  }
161 
165  function getRequestArgs() {
166  return array_merge(parent::getRequestArgs(), array('category' => $this->_plugin->getCategory(), 'plugin' => basename($this->_plugin->getPluginPath())));
167  }
168 
172  function isDataElementSelected($gridDataElement) {
173  return false; // Nothing is selected by default
174  }
175 
179  function getSelectName() {
180  return 'selectedRepresentations';
181  }
182 
186  protected function getFilterForm() {
187  return 'controllers/grid/pubIds/pubIdExportRepresentationsGridFilter.tpl';
188  }
189 
193  function renderFilter($request, $filterData = array()) {
194  $context = $request->getContext();
195  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
196  $issuesIterator = $issueDao->getPublishedIssues($context->getId());
197  $issues = $issuesIterator->toArray();
198  foreach ($issues as $issue) {
199  $issueOptions[$issue->getId()] = $issue->getIssueIdentification();
200  }
201  $issueOptions[0] = __('plugins.importexport.common.filter.issue');
202  ksort($issueOptions);
203  $statusNames = $this->_plugin->getStatusNames();
204  $filterColumns = $this->getFilterColumns();
205  $allFilterData = array_merge(
206  $filterData,
207  array(
208  'columns' => $filterColumns,
209  'issues' => $issueOptions,
210  'status' => $statusNames,
211  'gridId' => $this->getId(),
212  ));
213  return parent::renderFilter($request, $allFilterData);
214  }
215 
219  function getFilterSelectionData($request) {
220  $search = (string) $request->getUserVar('search');
221  $column = (string) $request->getUserVar('column');
222  $issueId = (int) $request->getUserVar('issueId');
223  $statusId = (string) $request->getUserVar('statusId');
224  return array(
225  'search' => $search,
226  'column' => $column,
227  'issueId' => $issueId,
228  'statusId' => $statusId,
229  );
230  }
231 
235  protected function loadData($request, $filter) {
236  $articleGalleyDao = DAORegistry::getDAO('ArticleGalleyDAO'); /* @var $articleGalleyDao ArticleGalleyDAO */
237  $context = $request->getContext();
238  list($search, $column, $issueId, $statusId) = $this->getFilterValues($filter);
239  $title = $author = null;
240  if ($column == 'title') {
241  $title = $search;
242  } elseif ($column == 'author') {
243  $author = $search;
244  }
245  $pubIdStatusSettingName = null;
246  if ($statusId) {
247  $pubIdStatusSettingName = $this->_plugin->getDepositStatusSettingName();
248  }
249  return $articleGalleyDao->getExportable(
250  $context->getId(),
251  $this->_plugin->getPubIdType(),
252  $title,
253  $author,
254  $issueId,
255  $pubIdStatusSettingName,
256  $statusId,
257  $this->getGridRangeInfo($request, $this->getId())
258  );
259  }
260 
261 
262  //
263  // Own protected methods
264  //
269  protected function getFilterColumns() {
270  return array(
271  'title' => __('submission.title'),
272  'author' => __('submission.authors')
273  );
274  }
275 
281  protected function getFilterValues($filter) {
282  if (isset($filter['search']) && $filter['search']) {
283  $search = $filter['search'];
284  } else {
285  $search = null;
286  }
287  if (isset($filter['column']) && $filter['column']) {
288  $column = $filter['column'];
289  } else {
290  $column = null;
291  }
292  if (isset($filter['issueId']) && $filter['issueId']) {
293  $issueId = $filter['issueId'];
294  } else {
295  $issueId = null;
296  }
297  if (isset($filter['statusId']) && $filter['statusId'] != EXPORT_STATUS_ANY) {
298  $statusId = $filter['statusId'];
299  } else {
300  $statusId = null;
301  }
302  return array($search, $column, $issueId, $statusId);
303  }
304 
305 }
306 
307 
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
PubIdExportRepresentationsListGridHandler\getRequestArgs
getRequestArgs()
Definition: PubIdExportRepresentationsListGridHandler.inc.php:168
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PubIdExportRepresentationsListGridHandler\getFilterColumns
getFilterColumns()
Definition: PubIdExportRepresentationsListGridHandler.inc.php:272
PubIdExportRepresentationsListGridCellProvider
Definition: PubIdExportRepresentationsListGridCellProvider.inc.php:19
PubIdExportRepresentationsListGridHandler\__construct
__construct()
Definition: PubIdExportRepresentationsListGridHandler.inc.php:29
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PubIdExportRepresentationsListGridHandler\initFeatures
initFeatures($request, $args)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:159
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
PubIdExportRepresentationsListGridHandler
Handle exportable representations with pub ids list grid requests.
Definition: PubIdExportRepresentationsListGridHandler.inc.php:19
PubIdExportRepresentationsListGridHandler\getSelectName
getSelectName()
Definition: PubIdExportRepresentationsListGridHandler.inc.php:182
PubIdExportRepresentationsListGridHandler\isDataElementSelected
isDataElementSelected($gridDataElement)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:175
PubIdExportRepresentationsListGridHandler\getFilterValues
getFilterValues($filter)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:284
PubIdExportRepresentationsListGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: PubIdExportRepresentationsListGridHandler.inc.php:196
SelectableItemsFeature
Implements grid widgets selectable items functionality.
Definition: SelectableItemsFeature.inc.php:19
PagingFeature
Add paging functionality to grids.
Definition: PagingFeature.inc.php:19
PubIdExportRepresentationsListGridHandler\initialize
initialize($request, $args=null)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:59
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
PluginRegistry\loadPlugin
static loadPlugin($category, $pathName, $mainContextId=null)
Definition: PluginRegistry.inc.php:175
PubIdExportRepresentationsListGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:222
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
PubIdExportRepresentationsListGridHandler\$_plugin
$_plugin
Definition: PubIdExportRepresentationsListGridHandler.inc.php:24
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
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
PubIdExportRepresentationsListGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:43
PubIdExportRepresentationsListGridHandler\getFilterForm
getFilterForm()
Definition: PubIdExportRepresentationsListGridHandler.inc.php:189
PolicySet
An ordered list of policies. Policy sets can be added to decision managers like policies....
Definition: PolicySet.inc.php:26
PubIdExportRepresentationsListGridHandler\loadData
loadData($request, $filter)
Definition: PubIdExportRepresentationsListGridHandler.inc.php:238