Open Journal Systems  3.3.0
PubIdExportIssuesListGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 import('controllers.grid.pubIds.PubIdExportIssuesListGridCellProvider');
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 
59  // Basic grid configuration.
60  $this->setTitle('plugins.importexport.common.export.issues');
61 
62  // Load submission-specific translations.
64  LOCALE_COMPONENT_APP_EDITOR, // date grid column
65  LOCALE_COMPONENT_APP_MANAGER
66  );
67 
68  $pluginCategory = $request->getUserVar('category');
69  $pluginPathName = $request->getUserVar('plugin');
70  $this->_plugin = PluginRegistry::loadPlugin($pluginCategory, $pluginPathName);
71  assert(isset($this->_plugin));
72 
73  // Fetch the authorized roles.
74  $authorizedRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
75 
76  // Grid columns.
77  $cellProvider = new PubIdExportIssuesListGridCellProvider($this->_plugin, $authorizedRoles);
78  $this->addColumn(
79  new GridColumn(
80  'identification',
81  'issue.issue',
82  null,
83  null,
84  $cellProvider,
85  array('html' => true,
86  'alignment' => COLUMN_ALIGNMENT_LEFT)
87  )
88  );
89  $this->addColumn(
90  new GridColumn(
91  'published',
92  'editor.issues.published',
93  null,
94  null,
95  $cellProvider,
96  array('html' => true,
97  'alignment' => COLUMN_ALIGNMENT_LEFT)
98  )
99  );
100  $this->addColumn(
101  new GridColumn(
102  'pubId',
103  null,
104  $this->_plugin->getPubIdDisplayType(),
105  null,
106  $cellProvider,
107  array('alignment' => COLUMN_ALIGNMENT_LEFT,
108  'width' => 15)
109  )
110  );
111  $this->addColumn(
112  new GridColumn(
113  'status',
114  'common.status',
115  null,
116  null,
117  $cellProvider,
118  array('alignment' => COLUMN_ALIGNMENT_LEFT,
119  'width' => 10)
120  )
121  );
122  }
123 
124 
125  //
126  // Implemented methods from GridHandler.
127  //
131  function initFeatures($request, $args) {
132  import('lib.pkp.classes.controllers.grid.feature.selectableItems.SelectableItemsFeature');
133  import('lib.pkp.classes.controllers.grid.feature.PagingFeature');
134  return array(new SelectableItemsFeature(), new PagingFeature());
135  }
136 
140  function getRequestArgs() {
141  return array_merge(parent::getRequestArgs(), array('category' => $this->_plugin->getCategory(), 'plugin' => basename($this->_plugin->getPluginPath())));
142  }
143 
147  function isDataElementSelected($gridDataElement) {
148  return false; // Nothing is selected by default
149  }
150 
154  function getSelectName() {
155  return 'selectedIssues';
156  }
157 
161  protected function getFilterForm() {
162  return 'controllers/grid/pubIds/pubIdExportIssuesGridFilter.tpl';
163  }
164 
168  function renderFilter($request, $filterData = array()) {
169  $statusNames = $this->_plugin->getStatusNames();
170  $allFilterData = array_merge(
171  $filterData,
172  array(
173  'status' => $statusNames,
174  'gridId' => $this->getId(),
175  ));
176  return parent::renderFilter($request, $allFilterData);
177  }
178 
182  function getFilterSelectionData($request) {
183  $statusId = (string) $request->getUserVar('statusId');
184  return array(
185  'statusId' => $statusId,
186  );
187  }
188 
192  protected function loadData($request, $filter) {
193  $context = $request->getContext();
194  list($statusId) = $this->getFilterValues($filter);
195  $pubIdStatusSettingName = null;
196  if ($statusId) {
197  $pubIdStatusSettingName = $this->_plugin->getDepositStatusSettingName();
198  }
199  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
200  return $issueDao->getExportable(
201  $context->getId(),
202  $this->_plugin->getPubIdType(),
203  $pubIdStatusSettingName,
204  $statusId,
205  $this->getGridRangeInfo($request, $this->getId())
206  );
207  }
208 
214  protected function getFilterValues($filter) {
215  if (isset($filter['statusId']) && $filter['statusId'] != EXPORT_STATUS_ANY) {
216  $statusId = $filter['statusId'];
217  } else {
218  $statusId = null;
219  }
220  return array($statusId);
221  }
222 
223 }
224 
225 
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
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
PubIdExportIssuesListGridHandler\getFilterValues
getFilterValues($filter)
Definition: PubIdExportIssuesListGridHandler.inc.php:217
PubIdExportIssuesListGridHandler\__construct
__construct()
Definition: PubIdExportIssuesListGridHandler.inc.php:29
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
PubIdExportIssuesListGridHandler\getRequestArgs
getRequestArgs()
Definition: PubIdExportIssuesListGridHandler.inc.php:143
PubIdExportIssuesListGridHandler\initialize
initialize($request, $args=null)
Definition: PubIdExportIssuesListGridHandler.inc.php:59
PubIdExportIssuesListGridHandler\$_plugin
$_plugin
Definition: PubIdExportIssuesListGridHandler.inc.php:24
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
PubIdExportIssuesListGridHandler\loadData
loadData($request, $filter)
Definition: PubIdExportIssuesListGridHandler.inc.php:195
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
PubIdExportIssuesListGridHandler\isDataElementSelected
isDataElementSelected($gridDataElement)
Definition: PubIdExportIssuesListGridHandler.inc.php:150
PubIdExportIssuesListGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: PubIdExportIssuesListGridHandler.inc.php:185
SelectableItemsFeature
Implements grid widgets selectable items functionality.
Definition: SelectableItemsFeature.inc.php:19
PagingFeature
Add paging functionality to grids.
Definition: PagingFeature.inc.php:19
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
PluginRegistry\loadPlugin
static loadPlugin($category, $pathName, $mainContextId=null)
Definition: PluginRegistry.inc.php:175
PubIdExportIssuesListGridHandler\initFeatures
initFeatures($request, $args)
Definition: PubIdExportIssuesListGridHandler.inc.php:134
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
PubIdExportIssuesListGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: PubIdExportIssuesListGridHandler.inc.php:171
PubIdExportIssuesListGridHandler\getFilterForm
getFilterForm()
Definition: PubIdExportIssuesListGridHandler.inc.php:164
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
PubIdExportIssuesListGridHandler\getSelectName
getSelectName()
Definition: PubIdExportIssuesListGridHandler.inc.php:157
PubIdExportIssuesListGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: PubIdExportIssuesListGridHandler.inc.php:43
PolicySet
An ordered list of policies. Policy sets can be added to decision managers like policies....
Definition: PolicySet.inc.php:26
PubIdExportIssuesListGridHandler
Handle exportable issues with pub ids list grid requests.
Definition: PubIdExportIssuesListGridHandler.inc.php:19
PubIdExportIssuesListGridCellProvider
Class for a cell provider that can retrieve labels from issues with pub ids.
Definition: PubIdExportIssuesListGridCellProvider.inc.php:18