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 $issueApiUrl = $request->getDispatcher()->url($request, ROUTE_API, $submissionContext->getData(
'urlPath'),
'issues/__issueId__');
69 import(
'classes.file.PublicFileManager');
71 $baseUrl = $request->getBaseUrl() .
'/' . $publicFileManager->getContextFilesPath($submissionContext->getId());
75 $sectionWordLimits = [];
77 $sectionIterator = $sectionDao->getByContextId($submissionContext->getId());
78 while ($section = $sectionIterator->next()) {
79 $sectionWordLimits[$section->getId()] = (int) $section->getAbstractWordCount() ?? 0;
82 import(
'classes.components.forms.publication.AssignToIssueForm');
83 import(
'classes.components.forms.publication.PublishForm');
84 $templateMgr->setConstants([
85 'FORM_ASSIGN_TO_ISSUE',
90 $components = $templateMgr->getState(
'components');
91 $components[FORM_ISSUE_ENTRY] = $issueEntryForm->getConfig();
94 if (!empty($components[FORM_TITLE_ABSTRACT]) &&
95 array_key_exists($submission->getLatestPublication()->getData(
'sectionId'), $sectionWordLimits)) {
96 $limit = (int) $sectionWordLimits[$submission->getLatestPublication()->getData(
'sectionId')];
97 foreach ($components[FORM_TITLE_ABSTRACT][
'fields'] as $key => $field) {
98 if ($field[
'name'] ===
'abstract') {
99 $components[FORM_TITLE_ABSTRACT][
'fields'][$key][
'wordLimit'] = $limit;
105 $assignToIssueUrl = $request->getDispatcher()->url(
109 'modals.publish.AssignToIssueHandler',
113 'submissionId' => $submission->getId(),
114 'publicationId' =>
'__publicationId__',
118 $publicationFormIds = $templateMgr->getState(
'publicationFormIds');
119 $publicationFormIds[] = FORM_ISSUE_ENTRY;
121 $templateMgr->setState([
122 'assignToIssueUrl' => $assignToIssueUrl,
123 'components' => $components,
124 'publicationFormIds' => $publicationFormIds,
125 'issueApiUrl' => $issueApiUrl,
126 'sectionWordLimits' => $sectionWordLimits,
127 'selectIssueLabel' => __(
'publication.selectIssue'),
142 case WORKFLOW_STAGE_ID_SUBMISSION:
143 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_SUBMISSION;
144 case WORKFLOW_STAGE_ID_EXTERNAL_REVIEW:
145 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_EXTERNAL_REVIEW;
146 case WORKFLOW_STAGE_ID_EDITING:
147 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_EDITING;
148 case WORKFLOW_STAGE_ID_PRODUCTION:
149 return NOTIFICATION_TYPE_EDITOR_ASSIGNMENT_PRODUCTION;
158 return $request->getDispatcher()->url(
162 'grid.articleGalleys.ArticleGalleyGridHandler',
166 'submissionId' => $submission->getId(),
167 'publicationId' =>
'__publicationId__',