Open Monograph Press  3.3.0
SalesRightsGridHandler.inc.php
1 <?php
2 
16 // import grid base classes
17 import('lib.pkp.classes.controllers.grid.GridHandler');
18 
19 
20 // import format grid specific classes
21 import('controllers.grid.catalogEntry.SalesRightsGridCellProvider');
22 import('controllers.grid.catalogEntry.SalesRightsGridRow');
23 
24 // Link action & modal classes
25 import('lib.pkp.classes.linkAction.request.AjaxModal');
26 
29  var $_submission;
30 
33 
37  function __construct() {
38  parent::__construct();
39  $this->addRoleAssignment(
40  array(ROLE_ID_MANAGER),
41  array('fetchGrid', 'fetchRow', 'addRights', 'editRights',
42  'updateRights', 'deleteRights'));
43  }
44 
45 
46  //
47  // Getters/Setters
48  //
53  function getSubmission() {
54  return $this->_submission;
55  }
56 
61  function setSubmission($submission) {
62  $this->_submission = $submission;
63  }
64 
69  function getPublication() {
70  return $this->_publication;
71  }
72 
77  function setPublication($publication) {
78  $this->_publication = $publication;
79  }
80 
85  function getPublicationFormat() {
87  }
88 
93  function setPublicationFormat($publicationFormat) {
94  $this->_publicationFormat = $publicationFormat;
95  }
96 
97  //
98  // Overridden methods from PKPHandler
99  //
106  function authorize($request, &$args, $roleAssignments) {
107  import('lib.pkp.classes.security.authorization.PublicationAccessPolicy');
108  $this->addPolicy(new PublicationAccessPolicy($request, $args, $roleAssignments));
109  return parent::authorize($request, $args, $roleAssignments);
110  }
111 
115  function initialize($request, $args = null) {
116  parent::initialize($request, $args);
117 
118  // Retrieve the authorized submission.
119  $this->setSubmission($this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION));
120  $this->setPublication($this->getAuthorizedContextObject(ASSOC_TYPE_PUBLICATION));
121  $publicationFormatDao = DAORegistry::getDAO('PublicationFormatDAO'); /* @var $publicationFormatDao PublicationFormatDAO */
122  $representationId = null;
123 
124  // Retrieve the associated publication format for this grid.
125  $salesRightsId = (int) $request->getUserVar('salesRightsId'); // set if editing or deleting a sales rights entry
126 
127  if ($salesRightsId != '') {
128  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
129  $salesRights = $salesRightsDao->getById($salesRightsId, $this->getPublication()->getId());
130  if ($salesRights) {
131  $representationId = $salesRights->getPublicationFormatId();
132  }
133  } else { // empty form for new SalesRights
134  $representationId = (int) $request->getUserVar('representationId');
135  }
136 
137  $submission = $this->getSubmission();
138  $publicationFormat = $publicationFormatDao->getById($representationId, $this->getPublication()->getId());
139 
140  if ($publicationFormat) {
141  $this->setPublicationFormat($publicationFormat);
142  } else {
143  fatalError('The publication format is not assigned to authorized submission!');
144  }
145 
146  // Load submission-specific translations
148  LOCALE_COMPONENT_APP_SUBMISSION,
149  LOCALE_COMPONENT_PKP_SUBMISSION,
150  LOCALE_COMPONENT_PKP_USER,
151  LOCALE_COMPONENT_APP_DEFAULT,
152  LOCALE_COMPONENT_PKP_DEFAULT
153  );
154 
155  // Basic grid configuration
156  $this->setTitle('grid.catalogEntry.salesRights');
157 
158  // Grid actions
159  $router = $request->getRouter();
160  $actionArgs = $this->getRequestArgs();
161  $this->addAction(
162  new LinkAction(
163  'addRights',
164  new AjaxModal(
165  $router->url($request, null, null, 'addRights', null, $actionArgs),
166  __('grid.action.addRights'),
167  'modal_add_item'
168  ),
169  __('grid.action.addRights'),
170  'add_item'
171  )
172  );
173 
174  // Columns
175  $cellProvider = new SalesRightsGridCellProvider();
176  $this->addColumn(
177  new GridColumn(
178  'type',
179  'grid.catalogEntry.salesRightsType',
180  null,
181  null,
182  $cellProvider
183  )
184  );
185  $this->addColumn(
186  new GridColumn(
187  'ROW',
188  'grid.catalogEntry.salesRightsROW',
189  null,
190  'controllers/grid/common/cell/checkMarkCell.tpl',
191  $cellProvider
192  )
193  );
194  }
195 
196 
197  //
198  // Overridden methods from GridHandler
199  //
204  function getRowInstance() {
205  return new SalesRightsGridRow($this->getSubmission());
206  }
207 
213  function getRequestArgs() {
214  return [
215  'submissionId' => $this->getSubmission()->getId(),
216  'publicationId' => $this->getPublication()->getId(),
217  'representationId' => $this->getPublicationFormat()->getId()
218  ];
219  }
220 
224  function loadData($request, $filter = null) {
225  $publicationFormat = $this->getPublicationFormat();
226  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
227  $data = $salesRightsDao->getByPublicationFormatId($publicationFormat->getId());
228  return $data->toArray();
229  }
230 
231 
232  //
233  // Public Sales Rights Grid Actions
234  //
241  function addRights($args, $request) {
242  return $this->editRights($args, $request);
243  }
244 
251  function editRights($args, $request) {
252  // Identify the sales rights entry to be updated
253  $salesRightsId = (int) $request->getUserVar('salesRightsId');
254  $submission = $this->getSubmission();
255 
256  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
257  $salesRights = $salesRightsDao->getById($salesRightsId, $this->getPublication()->getId());
258 
259  // Form handling
260  import('controllers.grid.catalogEntry.form.SalesRightsForm');
261  $salesRightsForm = new SalesRightsForm($submission, $this->getPublication(), $salesRights);
262  $salesRightsForm->initData();
263 
264  return new JSONMessage(true, $salesRightsForm->fetch($request));
265  }
266 
273  function updateRights($args, $request) {
274  // Identify the sales rights entry to be updated
275  $salesRightsId = $request->getUserVar('salesRightsId');
276  $submission = $this->getSubmission();
277 
278  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
279  $salesRights = $salesRightsDao->getById($salesRightsId, $this->getPublication()->getId());
280 
281  // Form handling
282  import('controllers.grid.catalogEntry.form.SalesRightsForm');
283  $salesRightsForm = new SalesRightsForm($submission, $this->getPublication(), $salesRights);
284  $salesRightsForm->readInputData();
285  if ($salesRightsForm->validate()) {
286  $salesRightsId = $salesRightsForm->execute();
287 
288  if(!isset($salesRights)) {
289  // This is a new entry
290  $salesRights = $salesRightsDao->getById($salesRightsId, $this->getPublication()->getId());
291  // New added entry action notification content.
292  $notificationContent = __('notification.addedSalesRights');
293  } else {
294  // entry edit action notification content.
295  $notificationContent = __('notification.editedSalesRights');
296  }
297 
298  // Create trivial notification.
299  $currentUser = $request->getUser();
300  $notificationMgr = new NotificationManager();
301  $notificationMgr->createTrivialNotification($currentUser->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => $notificationContent));
302 
303  // Prepare the grid row data
304  $row = $this->getRowInstance();
305  $row->setGridId($this->getId());
306  $row->setId($salesRightsId);
307  $row->setData($salesRights);
308  $row->initialize($request);
309 
310  // Render the row into a JSON response
311  return DAO::getDataChangedEvent();
312 
313  } else {
314  return new JSONMessage(true, $salesRightsForm->fetch($request));
315  }
316  }
317 
324  function deleteRights($args, $request) {
325 
326  // Identify the sales rights entry to be deleted
327  $salesRightsId = $request->getUserVar('salesRightsId');
328 
329  $salesRightsDao = DAORegistry::getDAO('SalesRightsDAO'); /* @var $salesRightsDao SalesRightsDAO */
330  $salesRights = $salesRightsDao->getById($salesRightsId, $this->getPublication()->getId());
331  if ($salesRights != null) { // authorized
332 
333  $result = $salesRightsDao->deleteObject($salesRights);
334 
335  if ($result) {
336  $currentUser = $request->getUser();
337  $notificationMgr = new NotificationManager();
338  $notificationMgr->createTrivialNotification($currentUser->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('notification.removedSalesRights')));
339  return DAO::getDataChangedEvent();
340  } else {
341  return new JSONMessage(false, __('manager.setup.errorDeletingItem'));
342  }
343  }
344  }
345 }
346 
347 
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
PublicationAccessPolicy
Class to control access to a publication.
Definition: PublicationAccessPolicy.inc.php:20
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
SalesRightsGridHandler\getPublicationFormat
getPublicationFormat()
Definition: SalesRightsGridHandler.inc.php:91
SalesRightsGridHandler\setPublication
setPublication($publication)
Definition: SalesRightsGridHandler.inc.php:83
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SalesRightsForm
Form for adding/editing a sales rights entry.
Definition: SalesRightsForm.inc.php:18
SalesRightsGridHandler\getPublication
getPublication()
Definition: SalesRightsGridHandler.inc.php:75
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
SalesRightsGridCellProvider
Base class for a cell provider that can retrieve labels for sales rights.
Definition: SalesRightsGridCellProvider.inc.php:18
SalesRightsGridHandler\getRequestArgs
getRequestArgs()
Definition: SalesRightsGridHandler.inc.php:219
SalesRightsGridHandler\$_submission
$_submission
Definition: SalesRightsGridHandler.inc.php:32
SalesRightsGridHandler\addRights
addRights($args, $request)
Definition: SalesRightsGridHandler.inc.php:247
GridHandler\addAction
addAction($action, $position=GRID_ACTION_POSITION_ABOVE)
Definition: GridHandler.inc.php:266
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
SalesRightsGridHandler\setSubmission
setSubmission($submission)
Definition: SalesRightsGridHandler.inc.php:67
DAO\getDataChangedEvent
static getDataChangedEvent($elementId=null, $parentElementId=null, $content='')
Definition: DAO.inc.php:647
SalesRightsGridHandler
Handle publication format grid requests for sales rights.
Definition: SalesRightsGridHandler.inc.php:27
SalesRightsGridHandler\getSubmission
getSubmission()
Definition: SalesRightsGridHandler.inc.php:59
SalesRightsGridHandler\setPublicationFormat
setPublicationFormat($publicationFormat)
Definition: SalesRightsGridHandler.inc.php:99
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
LinkAction
Base class defining an action that can be performed by the user in the user interface.
Definition: LinkAction.inc.php:22
SalesRightsGridHandler\initialize
initialize($request, $args=null)
Definition: SalesRightsGridHandler.inc.php:121
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
SalesRightsGridHandler\updateRights
updateRights($args, $request)
Definition: SalesRightsGridHandler.inc.php:279
SalesRightsGridHandler\editRights
editRights($args, $request)
Definition: SalesRightsGridHandler.inc.php:257
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
SalesRightsGridRow
Sales Rights grid row definition.
Definition: SalesRightsGridRow.inc.php:18
SalesRightsGridHandler\deleteRights
deleteRights($args, $request)
Definition: SalesRightsGridHandler.inc.php:330
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
SalesRightsGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: SalesRightsGridHandler.inc.php:112
NotificationManager
Definition: NotificationManager.inc.php:19
SalesRightsGridHandler\__construct
__construct()
Definition: SalesRightsGridHandler.inc.php:43
SalesRightsGridHandler\loadData
loadData($request, $filter=null)
Definition: SalesRightsGridHandler.inc.php:230
SalesRightsGridHandler\getRowInstance
getRowInstance()
Definition: SalesRightsGridHandler.inc.php:210
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
fatalError
if(!function_exists('import')) fatalError($reason)
Definition: functions.inc.php:32
SalesRightsGridHandler\$_publicationFormat
$_publicationFormat
Definition: SalesRightsGridHandler.inc.php:38