getRequest(); $submissionFileId = $request->getUserVar('submissionFileId'); // authorized in authorize() method. parent::__construct( new DependentFilesGridDataProvider($submissionFileId), $request->getUserVar('stageId') ); $this->addRoleAssignment( [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_ASSISTANT, Role::ROLE_ID_AUTHOR], ['fetchGrid', 'fetchRow'] ); $this->setTitle('submission.submit.dependentFiles'); } /** * Get the authorized publication. * * @return \Publication */ public function getPublication() { return $this->getAuthorizedContextObject(Application::ASSOC_TYPE_PUBLICATION); } /** * @copydoc SubmissionFilesGridHandler::authorize() */ public function authorize($request, &$args, $roleAssignments) { $this->addPolicy(new SubmissionFileAccessPolicy($request, $args, $roleAssignments, SubmissionFileAccessPolicy::SUBMISSION_FILE_ACCESS_MODIFY, (int) $args['submissionFileId'])); $publicationId = $request->getUserVar('publicationId'); // authorized in authorize() method. if ($publicationId) { $this->addPolicy(new PublicationAccessPolicy($request, $args, $roleAssignments)); } return parent::authorize($request, $args, $roleAssignments); } /** * @copydoc GridHandler::getRequestArgs() */ public function getRequestArgs() { $submissionFile = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_SUBMISSION_FILE); return array_merge( parent::getRequestArgs(), ['submissionFileId' => $submissionFile->getId()] ); } public function initialize($request, $args = null) { $capabilities = FilesGridCapabilities::FILE_GRID_ADD | FilesGridCapabilities::FILE_GRID_DELETE | FilesGridCapabilities::FILE_GRID_VIEW_NOTES | FilesGridCapabilities::FILE_GRID_EDIT; $publication = $this->getPublication(); if ($publication) { if ($publication->getData('status') == Submission::STATUS_PUBLISHED) { $capabilities = FilesGridCapabilities::FILE_GRID_VIEW_NOTES; } } $this->setCapabilities(new FilesGridCapabilities($capabilities)); parent::initialize($request, $args); } }