17 import(
'lib.pkp.classes.controllers.grid.GridHandler');
21 import(
'controllers.grid.catalogEntry.PublicationDateGridCellProvider');
22 import(
'controllers.grid.catalogEntry.PublicationDateGridRow');
25 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
41 parent::__construct();
43 array(ROLE_ID_MANAGER),
44 array(
'fetchGrid',
'fetchRow',
'addDate',
'editDate',
45 'updateDate',
'deleteDate'));
65 $this->_submission = $submission;
81 $this->_publication = $publication;
97 $this->_publicationFormat = $publicationFormat;
109 function authorize($request, &$args, $roleAssignments) {
110 import(
'lib.pkp.classes.security.authorization.PublicationAccessPolicy');
112 return parent::authorize($request, $args, $roleAssignments);
119 parent::initialize($request, $args);
125 $representationId =
null;
128 $publicationDateId = (int) $request->getUserVar(
'publicationDateId');
130 if ($publicationDateId !=
'') {
132 $publicationDate = $publicationDateDao->getById($publicationDateId, $this->
getPublication()->
getId());
133 if ($publicationDate) {
134 $representationId = $publicationDate->getPublicationFormatId();
137 $representationId = (int) $request->getUserVar(
'representationId');
141 $publicationFormat = $publicationFormatDao->getById($representationId, $this->
getPublication()->
getId());
143 if ($publicationFormat) {
146 fatalError(
'The publication format is not assigned to authorized submission!');
151 LOCALE_COMPONENT_APP_SUBMISSION,
152 LOCALE_COMPONENT_PKP_SUBMISSION,
153 LOCALE_COMPONENT_PKP_USER,
154 LOCALE_COMPONENT_APP_DEFAULT,
155 LOCALE_COMPONENT_PKP_DEFAULT
159 $this->
setTitle(
'grid.catalogEntry.publicationDates');
162 $router = $request->getRouter();
168 $router->url($request,
null,
null,
'addDate',
null, $actionArgs),
169 __(
'grid.action.addDate'),
172 __(
'grid.action.addDate'),
182 'grid.catalogEntry.dateValue',
186 array(
'width' => 50,
'alignment' => COLUMN_ALIGNMENT_LEFT)
192 'grid.catalogEntry.dateRole',
228 function loadData($request, $filter =
null) {
231 $data = $publicationDateDao->getByPublicationFormatId($publicationFormat->getId());
232 return $data->toArray();
245 function addDate($args, $request) {
246 return $this->
editDate($args, $request);
255 function editDate($args, $request) {
257 $publicationDateId = (int) $request->getUserVar(
'publicationDateId');
261 $publicationDate = $publicationDateDao->getById($publicationDateId, $this->
getPublication()->
getId());
264 import(
'controllers.grid.catalogEntry.form.PublicationDateForm');
266 $publicationDateForm->initData();
268 return new JSONMessage(
true, $publicationDateForm->fetch($request));
279 $publicationDateId = $request->getUserVar(
'publicationDateId');
283 $publicationDate = $publicationDateDao->getById($publicationDateId, $this->
getPublication()->
getId());
286 import(
'controllers.grid.catalogEntry.form.PublicationDateForm');
288 $publicationDateForm->readInputData();
289 if ($publicationDateForm->validate()) {
290 $publicationDateId = $publicationDateForm->execute();
292 if(!isset($publicationDate)) {
294 $publicationDate = $publicationDateDao->getById($publicationDateId, $this->
getPublication()->
getId());
296 $notificationContent = __(
'notification.addedPublicationDate');
299 $notificationContent = __(
'notification.editedPublicationDate');
303 $currentUser = $request->getUser();
305 $notificationMgr->createTrivialNotification($currentUser->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => $notificationContent));
309 $row->setGridId($this->
getId());
310 $row->setId($publicationDateId);
311 $row->setData($publicationDate);
312 $row->initialize($request);
318 return new JSONMessage(
true, $publicationDateForm->fetch($request));
331 $publicationDateId = $request->getUserVar(
'publicationDateId');
334 $publicationDate = $publicationDateDao->getById($publicationDateId, $this->
getPublication()->
getId());
335 if ($publicationDate !=
null) {
337 $result = $publicationDateDao->deleteObject($publicationDate);
340 $currentUser = $request->getUser();
342 $notificationMgr->createTrivialNotification($currentUser->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __(
'notification.removedPublicationDate')));
345 return new JSONMessage(
false, __(
'manager.setup.errorDeletingItem'));