17 import(
'lib.pkp.classes.controllers.grid.GridHandler');
20 import(
'lib.pkp.classes.linkAction.request.AjaxModal');
31 parent::__construct();
33 array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_ASSISTANT, ROLE_ID_AUTHOR),
34 array(
'fetchGrid',
'fetchRow',
'addGalley',
'editGalley',
'editGalleyTab',
'updateGalley',
'deleteGalley',
'identifiers',
'updateIdentifiers',
'clearPubId',
'saveSequence'));
73 return '$.pkp.controllers.grid.articleGalleys.ArticleGalleyGridHandler';
79 function authorize($request, &$args, $roleAssignments) {
80 $this->_request = $request;
82 import(
'lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
85 import(
'lib.pkp.classes.security.authorization.PublicationAccessPolicy');
88 if ($request->getUserVar(
'representationId')) {
89 import(
'lib.pkp.classes.security.authorization.internal.RepresentationRequiredPolicy');
93 return parent::authorize($request, $args, $roleAssignments);
100 parent::initialize($request, $args);
101 $this->
setTitle(
'submission.layout.galleys');
105 LOCALE_COMPONENT_PKP_SUBMISSION,
106 LOCALE_COMPONENT_PKP_USER,
107 LOCALE_COMPONENT_PKP_EDITOR,
108 LOCALE_COMPONENT_APP_EDITOR
111 import(
'controllers.grid.articleGalleys.ArticleGalleyGridCellProvider');
128 $request->getRouter()->url($request,
null,
null,
'addGalley',
null, $this->getRequestArgs()),
129 __(
'submission.layout.newGalley'),
132 __(
'grid.action.addGalley'),
147 import(
'lib.pkp.classes.controllers.grid.feature.OrderGridItemsFeature');
158 return $row->getSequence();
166 $galley = $galleyDao->getById($rowId);
167 $galley->setSequence($newSequence);
168 $galleyDao->updateObject($galley);
179 import(
'controllers.grid.articleGalleys.ArticleGalleyGridRow');
202 function loadData($request, $filter =
null) {
218 $representation = $representationDao->getById($request->getUserVar(
'representationId'));
219 import(
'controllers.tab.pubIds.form.PublicIdentifiersForm');
222 return new JSONMessage(
true, $form->fetch($request));
233 $representation = $representationDao->getById($request->getUserVar(
'representationId'));
234 import(
'controllers.tab.pubIds.form.PublicIdentifiersForm');
236 $form->readInputData();
237 if ($form->validate()) {
241 return new JSONMessage(
true, $form->fetch($request));
252 if (!$request->checkCSRF())
return new JSONMessage(
false);
256 $representation = $representationDao->getById($request->getUserVar(
'representationId'));
257 import(
'controllers.tab.pubIds.form.PublicIdentifiersForm');
259 $form->clearPubId($request->getUserVar(
'pubIdPlugIn'));
270 import(
'controllers.grid.articleGalleys.form.ArticleGalleyForm');
276 $galleyForm->initData();
277 return new JSONMessage(
true, $galleyForm->fetch($request));
288 if (!$galley || !$request->checkCSRF())
return new JSONMessage(
false);
291 $galleyDao->deleteObject($galley);
293 if ($galley->getFileId()) {
294 import(
'lib.pkp.classes.submission.SubmissionFile');
295 $publication =
Services::get(
'publication')->get($galley->getData(
'publicationId'));
300 $galleyFiles = $submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_GALLEY, $galley->getId(), $publication->getData(
'submissionId'), SUBMISSION_FILE_PROOF);
301 foreach ($galleyFiles as $file) {
302 $sharedFileGalleys = $articleGalleyDao->getByFileId($file->getFileId())->toArray();
303 if (empty($sharedFileGalleys)) {
304 $submissionFileDao->deleteAllRevisionsByAssocId(ASSOC_TYPE_SUBMISSION_FILE, $file->getFileId(), SUBMISSION_FILE_DEPENDENT);
309 $sharedFileGalleys = $articleGalleyDao->getByFileId($galley->getFileId())->toArray();
310 if (empty($sharedFileGalleys)) {
312 $submissionFileDao->deleteAllRevisionsById($galley->getFileId());
317 $notificationDao->deleteByAssoc(ASSOC_TYPE_REPRESENTATION, $galley->getId());
319 if ($this->
getSubmission()->getStageId() == WORKFLOW_STAGE_ID_EDITING ||
320 $this->
getSubmission()->getStageId() == WORKFLOW_STAGE_ID_PRODUCTION) {
323 $notificationMgr->updateNotification(
325 array(NOTIFICATION_TYPE_ASSIGN_PRODUCTIONUSER, NOTIFICATION_TYPE_AWAITING_REPRESENTATIONS),
327 ASSOC_TYPE_SUBMISSION,
335 $articleSearchIndex->submissionChangesFinished();
351 $templateMgr->assign(array(
354 'representationId' => $galley->getId(),
356 $publisherIdEnabled = in_array(
'galley', (array) $request->getContext()->getData(
'enablePublisherId'));
357 $pubIdsEnabled =
false;
359 foreach ($pubIdPlugins as $pubIdPlugin) {
360 if ($pubIdPlugin->isObjectTypeEnabled(
'Representation', $request->getContext()->getId())) {
361 $pubIdsEnabled =
true;
365 if ($publisherIdEnabled || $pubIdsEnabled) {
366 $templateMgr->assign(
'enableIdentifiers',
true);
368 return new JSONMessage(
true, $templateMgr->fetch(
'controllers/grid/articleGalleys/editFormat.tpl'));
379 import(
'controllers.grid.articleGalleys.form.ArticleGalleyForm');
386 $galleyForm->initData();
387 return new JSONMessage(
true, $galleyForm->fetch($request));
399 import(
'controllers.grid.articleGalleys.form.ArticleGalleyForm');
401 $galleyForm->readInputData();
403 if ($galleyForm->validate()) {
404 $galley = $galleyForm->execute();
406 if ($this->
getSubmission()->getStageId() == WORKFLOW_STAGE_ID_EDITING ||
407 $this->
getSubmission()->getStageId() == WORKFLOW_STAGE_ID_PRODUCTION) {
410 $notificationMgr->updateNotification(
412 array(NOTIFICATION_TYPE_ASSIGN_PRODUCTIONUSER, NOTIFICATION_TYPE_AWAITING_REPRESENTATIONS),
414 ASSOC_TYPE_SUBMISSION,
421 return new JSONMessage(
true, $galleyForm->fetch($request));
427 function fetchRow($args, $request) {
428 $json = parent::fetchRow($args, $request);
430 $galley = $row->getData();
431 if ($galley->getRemoteUrl()==
'' && !$galley->getFileId()) {
432 $json->setEvent(
'uploadFile', $galley->getId());
450 $user = $request->getUser();
455 if ($publication->getData(
'status') === STATUS_PUBLISHED) {
459 if (in_array(ROLE_ID_SITE_ADMIN, $userRoles)) {
463 if ($submission->getDateSubmitted() ==
null)
return true;
465 if (
Services::get(
'submission')->canEditPublication($submission->getId(), $user->getId())) {