getContext(); $userGroups = $this->getSubmitUserGroups($context, $request->getUser()); if (!$userGroups->count()) { $this->showErrorPage( 'submission.wizard.notAllowed', __('submission.wizard.notAllowed.description', [ 'email' => $context->getData('contactEmail'), 'name' => $context->getData('contactName'), ]) ); return; } $sections = $this->getSubmitSections($context); if (empty($sections)) { $this->showErrorPage( 'submission.wizard.notAllowed', __('submission.wizard.noSectionAllowed.description', [ 'email' => $context->getData('contactEmail'), 'name' => $context->getData('contactName'), ]) ); return; } $apiUrl = $request->getDispatcher()->url( $request, Application::ROUTE_API, $context->getPath(), 'submissions' ); $form = new StartSubmission($apiUrl, $context, $userGroups, $sections); $templateMgr = TemplateManager::getManager($request); $templateMgr->setState([ 'form' => $form->getConfig(), ]); parent::start($args, $request); } protected function getSubmittingTo(Context $context, Submission $submission, array $sections, LazyCollection $categories): string { $languageCount = count($context->getSupportedSubmissionLocales()) > 1; $sectionCount = count($sections) > 1; $section = collect($sections)->first(fn ($section) => $section->getId() === $submission->getCurrentPublication()->getData('sectionId')); if ($sectionCount && $languageCount) { return __( 'submission.wizard.submittingToSectionInLanguage', [ 'section' => $section->getLocalizedTitle(), 'language' => Locale::getMetadata($submission->getData('locale'))->getDisplayName(), ] ); } elseif ($sectionCount) { return __( 'submission.wizard.submittingToSection', [ 'section' => $section->getLocalizedTitle(), ] ); } elseif ($languageCount) { return __( 'submission.wizard.submittingInLanguage', [ 'language' => Locale::getMetadata($submission->getData('locale'))->getDisplayName(), ] ); } return ''; } protected function getReconfigureForm(Context $context, Submission $submission, Publication $publication, array $sections, LazyCollection $categories): ReconfigureSubmission { return new ReconfigureSubmission( FormComponent::ACTION_EMIT, $submission, $publication, $context, $sections ); } protected function getDetailsForm(string $publicationApiUrl, array $locales, Publication $publication, Context $context, array $sections, string $suggestionUrlBase): TitleAbstractForm { /** @var Section $section */ $section = collect($sections)->first(fn ($section) => $section->getId() === $publication->getData('sectionId')); return new Details( $publicationApiUrl, $locales, $publication, $context, $suggestionUrlBase, (int) $section->getData('wordCount'), !$section->getData('abstractsNotRequired') ); } protected function getForTheEditorsForm(string $publicationApiUrl, array $locales, Publication $publication, Submission $submission, Context $context, string $suggestionUrlBase, LazyCollection $categories): ForTheEditors { return new ForTheEditors( $publicationApiUrl, $locales, $publication, $submission, $context, $suggestionUrlBase, $categories ); } protected function getReconfigurePublicationProps(): array { return [ 'sectionId', ]; } protected function getReconfigureSubmissionProps(): array { return [ 'locale', ]; } }