addRoleAssignment( [Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_ASSISTANT], ['assign'] ); } // // Overridden methods from Handler // /** * @copydoc PKPHandler::initialize() */ public function initialize($request) { parent::initialize($request); $this->submission = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_SUBMISSION); $this->publication = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_PUBLICATION); $this->setupTemplate($request); } /** * @copydoc PKPHandler::authorize() */ public function authorize($request, &$args, $roleAssignments) { $this->addPolicy(new SubmissionAccessPolicy($request, $args, $roleAssignments)); $this->addPolicy(new PublicationAccessPolicy($request, $args, $roleAssignments)); return parent::authorize($request, $args, $roleAssignments); } // // Public handler methods // /** * Display a form to assign an issue to a publication * * @param array $args * @param Request $request * * @return JSONMessage JSON object */ public function assign($args, $request) { $templateMgr = TemplateManager::getManager($request); $submissionContext = $request->getContext(); if (!$submissionContext || $submissionContext->getId() !== $this->submission->getData('contextId')) { $submissionContext = Services::get('context')->get($this->submission->getData('contextId')); } $publicationApiUrl = $request->getDispatcher()->url($request, PKPApplication::ROUTE_API, $submissionContext->getPath(), 'submissions/' . $this->submission->getId() . '/publications/' . $this->publication->getId()); $assignToIssueForm = new AssignToIssueForm($publicationApiUrl, $this->publication, $submissionContext); $settingsData = [ 'components' => [ FORM_ASSIGN_TO_ISSUE => $assignToIssueForm->getConfig(), ], ]; $templateMgr->assign('assignData', $settingsData); return $templateMgr->fetchJson('controllers/modals/publish/assignToIssue.tpl'); } }