setupTemplate($request); $templateMgr = TemplateManager::getManager($request); $stageId = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_WORKFLOW_STAGE); $submission = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_SUBMISSION); switch ($stageId) { case WORKFLOW_STAGE_ID_PRODUCTION: $dispatcher = $request->getDispatcher(); $schedulePublicationLinkAction = new LinkAction( 'schedulePublication', new AjaxModal( $dispatcher->url( $request, PKPApplication::ROUTE_COMPONENT, null, 'tab.issueEntry.IssueEntryTabHandler', 'publicationMetadata', null, ['submissionId' => $submission->getId(), 'stageId' => $stageId] ), __('submission.publication') ), __('editor.submission.schedulePublication') ); $templateMgr->assign('schedulePublicationLinkAction', $schedulePublicationLinkAction); break; } return parent::fetchTab($args, $request); } /** * Get all production notification options to be used in the production stage tab. * * @param int $submissionId * * @return array */ protected function getProductionNotificationOptions($submissionId) { return [ Notification::NOTIFICATION_LEVEL_NORMAL => [ PKPNotification::NOTIFICATION_TYPE_VISIT_CATALOG => [Application::ASSOC_TYPE_SUBMISSION, $submissionId], PKPNotification::NOTIFICATION_TYPE_ASSIGN_PRODUCTIONUSER => [Application::ASSOC_TYPE_SUBMISSION, $submissionId], PKPNotification::NOTIFICATION_TYPE_AWAITING_REPRESENTATIONS => [Application::ASSOC_TYPE_SUBMISSION, $submissionId], ], Notification::NOTIFICATION_LEVEL_TRIVIAL => [] ]; } protected function getNewReviewRoundDecisionType(int $stageId): DecisionType { // OJS only supports the external review stage return new NewExternalReviewRound(); } }