91 lines
3.2 KiB
PHP
91 lines
3.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file controllers/tab/workflow/WorkflowTabHandler.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2003-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class WorkflowTabHandler
|
|
*
|
|
* @ingroup controllers_tab_workflow
|
|
*
|
|
* @brief Handle AJAX operations for workflow tabs.
|
|
*/
|
|
|
|
namespace APP\controllers\tab\workflow;
|
|
|
|
use APP\core\Application;
|
|
use APP\notification\Notification;
|
|
use APP\template\TemplateManager;
|
|
use PKP\controllers\tab\workflow\PKPWorkflowTabHandler;
|
|
use PKP\core\PKPApplication;
|
|
use PKP\decision\DecisionType;
|
|
use PKP\decision\types\NewExternalReviewRound;
|
|
use PKP\linkAction\LinkAction;
|
|
use PKP\linkAction\request\AjaxModal;
|
|
use PKP\notification\PKPNotification;
|
|
|
|
class WorkflowTabHandler extends PKPWorkflowTabHandler
|
|
{
|
|
/**
|
|
* @copydoc PKPWorkflowTabHandler::fetchTab
|
|
*/
|
|
public function fetchTab($args, $request)
|
|
{
|
|
$this->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();
|
|
}
|
|
}
|