action = $action; $this->locales = $locales; // Issue options $issueOptions = [['value' => '', 'label' => '']]; $unpublishedIssues = Repo::issue()->getCollector() ->filterByContextIds([$publicationContext->getId()]) ->filterByPublished(false) ->getMany() ->toArray(); if (count($unpublishedIssues)) { $issueOptions[] = ['value' => '', 'label' => '--- ' . __('editor.issues.futureIssues') . ' ---']; foreach ($unpublishedIssues as $issue) { $issueOptions[] = [ 'value' => (int) $issue->getId(), 'label' => htmlspecialchars($issue->getIssueIdentification()), ]; } } $publishedIssues = Repo::issue()->getCollector() ->filterByContextIds([$publicationContext->getId()]) ->filterByPublished(true) ->getMany() ->toArray(); if (count($publishedIssues)) { $issueOptions[] = ['value' => '', 'label' => '--- ' . __('editor.issues.backIssues') . ' ---']; foreach ($publishedIssues as $issue) { $issueOptions[] = [ 'value' => (int) $issue->getId(), 'label' => htmlspecialchars($issue->getIssueIdentification()), ]; } } // Section options $sections = Repo::section()->getSectionList($publicationContext->getId()); $sectionOptions = []; foreach ($sections as $section) { $sectionOptions[] = [ 'label' => (($section['group']) ? __('publication.inactiveSection', ['section' => $section['title']]) : $section['title']), 'value' => (int) $section['id'], ]; } $this->addField(new FieldSelectIssue('issueId', [ 'label' => __('issue.issue'), 'options' => $issueOptions, 'publicationStatus' => $publication->getData('status'), 'value' => $publication->getData('issueId') ? $publication->getData('issueId') : 0, ])) ->addField(new FieldSelect('sectionId', [ 'label' => __('section.section'), 'options' => $sectionOptions, 'value' => (int) $publication->getData('sectionId'), ])); // Categories $categoryOptions = []; $categories = Repo::category()->getCollector() ->filterByContextIds([$publicationContext->getId()]) ->getMany() ->toArray(); foreach ($categories as $category) { $label = $category->getLocalizedTitle(); if ($category->getParentId()) { $label = $categories[$category->getParentId()]->getLocalizedTitle() . ' > ' . $label; } $categoryOptions[] = [ 'value' => (int) $category->getId(), 'label' => $label, ]; } if (!empty($categoryOptions)) { $this->addField(new FieldOptions('categoryIds', [ 'label' => __('submission.submit.placement.categories'), 'value' => $publication->getData('categoryIds'), 'options' => $categoryOptions, ])); } $this->addField(new FieldUploadImage('coverImage', [ 'label' => __('editor.article.coverImage'), 'value' => $publication->getData('coverImage'), 'isMultilingual' => true, 'baseUrl' => $baseUrl, 'options' => [ 'url' => $temporaryFileApiUrl, ], ])) ->addField(new FieldText('pages', [ 'label' => __('editor.issues.pages'), 'value' => $publication->getData('pages'), ])) ->addField(new FieldText('urlPath', [ 'label' => __('publication.urlPath'), 'description' => __('publication.urlPath.description'), 'value' => $publication->getData('urlPath'), ])) ->addField(new FieldText('datePublished', [ 'label' => __('publication.datePublished'), 'description' => __('publication.datePublished.description'), 'value' => $publication->getData('datePublished'), 'size' => 'small', ])); } }