17 import(
'lib.pkp.classes.controllers.grid.CategoryGridHandler');
20 import(
'controllers.grid.catalogEntry.PublicationFormatGridRow');
21 import(
'controllers.grid.catalogEntry.PublicationFormatGridCategoryRow');
22 import(
'controllers.grid.catalogEntry.PublicationFormatCategoryGridDataProvider');
25 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
46 array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR),
48 'setAvailable',
'editApprovedProof',
'saveApprovedProof',
52 array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT),
54 'addFormat',
'editFormat',
'editFormatTab',
'updateFormat',
'deleteFormat',
55 'setApproved',
'setProofFileCompletion',
'selectFiles',
56 'identifiers',
'updateIdentifiers',
'clearPubId',
57 'dependentFiles',
'editFormatMetadata',
'updateFormatMetadata'
61 array(ROLE_ID_AUTHOR, ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT),
63 'fetchGrid',
'fetchRow',
'fetchCategory',
85 $this->_submission = $submission;
101 $this->_publication = $publication;
111 parent::initialize($request, $args);
119 LOCALE_COMPONENT_PKP_SUBMISSION,
120 LOCALE_COMPONENT_PKP_EDITOR,
121 LOCALE_COMPONENT_PKP_USER,
122 LOCALE_COMPONENT_PKP_DEFAULT
124 $this->
setTitle(
'monograph.publicationFormats');
128 LOCALE_COMPONENT_APP_SUBMISSION,
129 LOCALE_COMPONENT_APP_DEFAULT,
130 LOCALE_COMPONENT_APP_EDITOR
133 if($this->
getPublication()->getData(
'status') !== STATUS_PUBLISHED) {
135 $router = $request->getRouter();
138 $this->_canManage = 0 != count(array_intersect($userRoles, array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT)));
143 $router->url($request,
null,
null,
'addFormat',
null, $actionArgs),
144 __(
'grid.action.addFormat'),
147 __(
'grid.action.addFormat'),
154 import(
'controllers.grid.catalogEntry.PublicationFormatGridCellProvider');
162 $this->_cellProvider,
163 array(
'width' => 60,
'anyhtml' =>
true)
166 if ($this->_canManage) {
172 'controllers/grid/common/cell/statusCell.tpl',
173 $this->_cellProvider,
180 'grid.catalogEntry.availability',
182 'controllers/grid/common/cell/statusCell.tpl',
183 $this->_cellProvider,
196 function authorize($request, &$args, $roleAssignments) {
197 import(
'lib.pkp.classes.security.authorization.PublicationAccessPolicy');
200 if ($request->getUserVar(
'representationId')) {
201 import(
'lib.pkp.classes.security.authorization.internal.RepresentationRequiredPolicy');
205 return parent::authorize($request, $args, $roleAssignments);
232 $representationId = $request->getUserVar(
'representationId');
233 $representation = $representationDao->getById(
238 $remoteURL = isset($representation) ? $representation->getRemoteURL() :
null;
242 $templateMgr->assign(
'representationId', $representationId);
243 $templateMgr->assign(
'remoteRepresentation', $remoteURL);
245 $publisherIdEnabled = in_array(
'representation', (array) $request->getContext()->getData(
'enablePublisherId'));
247 $pubIdEnabled =
false;
248 foreach ($pubIdPlugins as $pubIdPlugin) {
249 if ($pubIdPlugin->isObjectTypeEnabled(
'Representation', $request->getContext()->getId())) {
250 $pubIdEnabled =
true;
254 $templateMgr->assign(
'showIdentifierTab', $publisherIdEnabled || $pubIdEnabled);
256 return new JSONMessage(
true, $templateMgr->fetch(
'controllers/grid/catalogEntry/editFormat.tpl'));
267 $representation = $representationDao->getById(
268 $request->getUserVar(
'representationId'),
269 $this->getPublication()->getId()
272 import(
'controllers.grid.catalogEntry.form.PublicationFormatForm');
274 $publicationFormatForm->initData();
276 return new JSONMessage(
true, $publicationFormatForm->fetch($request));
287 $representation = $representationDao->getById(
288 $request->getUserVar(
'representationId'),
289 $this->getPublication()->getId()
292 import(
'controllers.grid.catalogEntry.form.PublicationFormatForm');
294 $publicationFormatForm->readInputData();
295 if ($publicationFormatForm->validate()) {
296 $publicationFormatForm->execute();
299 return new JSONMessage(
true, $publicationFormatForm->fetch($request));
309 $context = $request->getContext();
312 $representation = $representationDao->getById(
313 $request->getUserVar(
'representationId'),
314 $this->getPublication()->getId()
317 if (!$request->checkCSRF() || !$representation) {
318 return new JSONMessage(
false, __(
'manager.setup.errorDeletingItem'));
321 Services::get(
'publicationFormat')->deleteFormat($representation, $submission, $context);
323 $currentUser = $request->getUser();
325 $notificationMgr->createTrivialNotification($currentUser->getId(), NOTIFICATION_TYPE_SUCCESS, array(
'contents' => __(
'notification.removedPublicationFormat')));
340 if (!$representation)
return new JSONMessage(
false, __(
'manager.setup.errorDeletingItem'));
342 $confirmationText = __(
'grid.catalogEntry.approvedRepresentation.removeMessage');
343 if ($request->getUserVar(
'newApprovedState')) {
344 $confirmationText = __(
'grid.catalogEntry.approvedRepresentation.message');
346 import(
'lib.pkp.controllers.grid.pubIds.form.PKPAssignPublicIdentifiersForm');
349 if (!$request->getUserVar(
'confirmed')) {
351 $assignPublicIdentifiersForm->initData();
352 return new JSONMessage(
true, $assignPublicIdentifiersForm->fetch($request));
354 if ($request->getUserVar(
'newApprovedState')) {
356 $assignPublicIdentifiersForm->readInputData();
357 $assignPublicIdentifiersForm->execute();
360 $newApprovedState = (int) $request->getUserVar(
'newApprovedState');
361 $representation->setIsApproved($newApprovedState);
362 $representationDao->updateObject($representation);
365 import(
'lib.pkp.classes.log.SubmissionLog');
366 import(
'classes.log.SubmissionEventLogEntry');
369 $newApprovedState?SUBMISSION_LOG_PUBLICATION_FORMAT_PUBLISH:SUBMISSION_LOG_PUBLICATION_FORMAT_UNPUBLISH,
370 $newApprovedState?
'submission.event.publicationFormatPublished':
'submission.event.publicationFormatUnpublished',
371 array(
'publicationFormatName' => $representation->getLocalizedName())
375 import(
'classes.publicationFormat.PublicationFormatTombstoneManager');
377 if ($representation->getIsAvailable() && $representation->getIsApproved()) {
379 $publicationFormatTombstoneMgr->deleteTombstonesByPublicationFormats(array($representation));
382 $publicationFormatTombstoneMgr->deleteTombstonesByPublicationFormats(array($representation));
383 $publicationFormatTombstoneMgr->insertTombstoneByPublicationFormat($representation, $request->getContext());
396 $context = $request->getContext();
400 if (!$publicationFormat)
return new JSONMessage(
false, __(
'manager.setup.errorDeletingItem'));
402 $newAvailableState = (int) $request->getUserVar(
'newAvailableState');
403 $publicationFormat->setIsAvailable($newAvailableState);
404 $publicationFormatDao->updateObject($publicationFormat);
407 import(
'lib.pkp.classes.log.SubmissionLog');
408 import(
'classes.log.SubmissionEventLogEntry');
411 $newAvailableState?SUBMISSION_LOG_PUBLICATION_FORMAT_AVAILABLE:SUBMISSION_LOG_PUBLICATION_FORMAT_UNAVAILABLE,
412 $newAvailableState?
'submission.event.publicationFormatMadeAvailable':
'submission.event.publicationFormatMadeUnavailable',
413 array(
'publicationFormatName' => $publicationFormat->getLocalizedName())
417 import(
'classes.publicationFormat.PublicationFormatTombstoneManager');
419 if ($publicationFormat->getIsAvailable() && $publicationFormat->getIsApproved()) {
421 $publicationFormatTombstoneMgr->deleteTombstonesByPublicationFormats(array($publicationFormat));
424 $publicationFormatTombstoneMgr->deleteTombstonesByPublicationFormats(array($publicationFormat));
425 $publicationFormatTombstoneMgr->insertTombstoneByPublicationFormat($publicationFormat, $context);
442 import(
'controllers.grid.files.proof.form.ApprovedProofForm');
443 $approvedProofForm =
new ApprovedProofForm($submission, $representation, $request->getUserVar(
'fileId'));
444 $approvedProofForm->initData();
446 return new JSONMessage(
true, $approvedProofForm->fetch($request));
459 import(
'controllers.grid.files.proof.form.ApprovedProofForm');
460 $approvedProofForm =
new ApprovedProofForm($submission, $representation, $request->getUserVar(
'fileId'));
461 $approvedProofForm->readInputData();
463 if ($approvedProofForm->validate()) {
464 $approvedProofForm->execute();
467 return new JSONMessage(
true, $approvedProofForm->fetch($request));
475 return 'controllers/grid/pubIds/form/assignPublicIdentifiersForm.tpl';
522 import(
'lib.pkp.classes.submission.SubmissionFile');
523 $submissionFile = $submissionFileDao->getRevision(
524 $request->getUserVar(
'fileId'),
525 $request->getUserVar(
'revision'),
526 SUBMISSION_FILE_PROOF,
529 $confirmationText = __(
'editor.submission.proofreading.confirmRemoveCompletion');
530 if ($request->getUserVar(
'approval')) {
531 $confirmationText = __(
'editor.submission.proofreading.confirmCompletion');
533 if ($submissionFile && $submissionFile->getAssocType()==ASSOC_TYPE_REPRESENTATION) {
534 import(
'lib.pkp.controllers.grid.pubIds.form.PKPAssignPublicIdentifiersForm');
536 $assignPublicIdentifiersForm =
new PKPAssignPublicIdentifiersForm($formTemplate, $submissionFile, $request->getUserVar(
'approval'), $confirmationText);
537 if (!$request->getUserVar(
'confirmed')) {
539 $assignPublicIdentifiersForm->initData();
540 return new JSONMessage(
true, $assignPublicIdentifiersForm->fetch($request));
542 if ($request->getUserVar(
'approval')) {
544 $assignPublicIdentifiersForm->readInputData();
545 $assignPublicIdentifiersForm->execute();
548 $submissionFile->setViewable($request->getUserVar(
'approval')?1:0);
549 $submissionFileDao->updateObject($submissionFile);
552 import(
'lib.pkp.classes.log.SubmissionFileLog');
553 import(
'lib.pkp.classes.log.SubmissionFileEventLogEntry');
554 $user = $request->getUser();
555 SubmissionFileLog::logEvent($request, $submissionFile, SUBMISSION_LOG_FILE_SIGNOFF_SIGNOFF,
'submission.event.signoffSignoff', array(
'file' => $submissionFile->getOriginalFileName(),
'name' => $user->getFullName(),
'username' => $user->getUsername()));
571 import(
'lib.pkp.controllers.grid.files.proof.form.ManageProofFilesForm');
573 $manageProofFilesForm->initData();
574 return new JSONMessage(
true, $manageProofFilesForm->fetch($request));
586 import(
'controllers.grid.catalogEntry.form.PublicationFormatMetadataForm');
588 $publicationFormatForm->initData();
590 return new JSONMessage(
true, $publicationFormatForm->fetch($request));
602 import(
'controllers.grid.catalogEntry.form.PublicationFormatMetadataForm');
604 $publicationFormatForm->readInputData();
605 if ($publicationFormatForm->validate()) {
606 $publicationFormatForm->execute();
610 return new JSONMessage(
true, $publicationFormatForm->fetch($request));
622 import(
'controllers.tab.pubIds.form.PublicIdentifiersForm');
625 return new JSONMessage(
true, $form->fetch($request));
637 import(
'controllers.tab.pubIds.form.PublicIdentifiersForm');
639 $form->readInputData();
640 if ($form->validate()) {
644 return new JSONMessage(
true, $form->fetch($request));
655 if (!$request->checkCSRF())
return new JSONMessage(
false);
659 import(
'controllers.tab.pubIds.form.PublicIdentifiersForm');
661 $form->clearPubId($request->getUserVar(
'pubIdPlugIn'));
673 import(
'lib.pkp.classes.submission.SubmissionFile');
674 $submissionFile = $submissionFileDao->getRevision(
675 $request->getUserVar(
'fileId'),
676 $request->getUserVar(
'revision'),
677 SUBMISSION_FILE_PROOF,
683 $templateMgr->assign(array(
685 'submissionFile' => $submissionFile,
687 return new JSONMessage(
true, $templateMgr->fetch(
'controllers/grid/catalogEntry/dependentFiles.tpl'));