16 import(
'lib.pkp.pages.workflow.PKPWorkflowHandler');
19 import(
'classes.workflow.EditorDecisionActionsManager');
26 parent::__construct();
29 array(ROLE_ID_SUB_EDITOR, ROLE_ID_MANAGER, ROLE_ID_ASSISTANT),
31 'access',
'index',
'submission',
32 'editorDecisionActions',
37 'submissionProgressBar',
47 parent::setupIndex($request);
52 $submissionContext = $request->getContext();
53 if ($submission->getContextId() !== $submissionContext->getId()) {
54 $submissionContext =
Services::get(
'context')->get($submission->getContextId());
57 $supportedSubmissionLocales = $submissionContext->getSupportedSubmissionLocales();
59 $locales = array_map(
function($localeKey) use ($localeNames) {
60 return [
'key' => $localeKey,
'label' => $localeNames[$localeKey]];
61 }, $supportedSubmissionLocales);
63 $latestPublication = $submission->getLatestPublication();
65 $latestPublicationApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(),
'submissions/' . $submission->getId() .
'/publications/' . $latestPublication->getId());
66 $temporaryFileApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(),
'temporaryFiles');
67 $relatePublicationApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getPath(),
'submissions/' . $submission->getId() .
'/publications/' . $latestPublication->getId()) .
'/relate';
69 import(
'classes.file.PublicFileManager');
71 $baseUrl = $request->getBaseUrl() .
'/' . $publicFileManager->getContextFilesPath($submissionContext->getId());
76 import(
'classes.components.forms.publication.IssueEntryForm');
77 $templateMgr->setConstants([
80 import(
'classes.components.forms.publication.RelationForm');
81 $templateMgr->setConstants([
85 $sectionWordLimits = [];
87 $sectionIterator = $sectionDao->getByContextId($submissionContext->getId());
88 while ($section = $sectionIterator->next()) {
89 $sectionWordLimits[$section->getId()] = (int) $section->getAbstractWordCount() ?? 0;
94 $components = $templateMgr->getState(
'components');
95 if (!empty($components[FORM_TITLE_ABSTRACT]) &&
96 array_key_exists($submission->getLatestPublication()->getData(
'sectionId'), $sectionWordLimits)) {
97 $limit = (int) $sectionWordLimits[$submission->getLatestPublication()->getData(
'sectionId')];
98 foreach ($components[FORM_TITLE_ABSTRACT][
'fields'] as $key => $field) {
99 if ($field[
'name'] ===
'abstract') {
100 $components[FORM_TITLE_ABSTRACT][
'fields'][$key][
'wordLimit'] = $limit;
105 $components[FORM_ISSUE_ENTRY] = $issueEntryForm->getConfig();
106 $components[FORM_ID_RELATION] = $relationForm->getConfig();
108 $publicationFormIds = $templateMgr->getState(
'publicationFormIds');
109 $publicationFormIds[] = FORM_ISSUE_ENTRY;
111 $templateMgr->setState([
112 'components' => $components,
113 'publicationFormIds' => $publicationFormIds,
114 'sectionWordLimits' => $sectionWordLimits,
129 case WORKFLOW_STAGE_ID_SUBMISSION:
130 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_SUBMISSION;
131 case WORKFLOW_STAGE_ID_EXTERNAL_REVIEW:
132 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_EXTERNAL_REVIEW;
133 case WORKFLOW_STAGE_ID_EDITING:
134 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_EDITING;
135 case WORKFLOW_STAGE_ID_PRODUCTION:
136 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_PRODUCTION;
145 return $request->getDispatcher()->url(
149 'grid.articleGalleys.ArticleGalleyGridHandler',
153 'submissionId' => $submission->getId(),
154 'publicationId' =>
'__publicationId__',