action = $action; $this->locales = $locales; $this->context = $context; $this->publication = $publication; if ($this->enabled('keywords')) { $this->addField(new FieldControlledVocab('keywords', [ 'label' => __('common.keywords'), 'tooltip' => __('manager.setup.metadata.keywords.description'), 'isMultilingual' => true, 'apiUrl' => str_replace('__vocab__', SubmissionKeywordDAO::CONTROLLED_VOCAB_SUBMISSION_KEYWORD, $suggestionUrlBase), 'locales' => $this->locales, 'value' => (array) $publication->getData('keywords'), ])); } if ($this->enabled('subjects')) { $this->addField(new FieldControlledVocab('subjects', [ 'label' => __('common.subjects'), 'tooltip' => __('manager.setup.metadata.subjects.description'), 'isMultilingual' => true, 'apiUrl' => str_replace('__vocab__', SubmissionSubjectDAO::CONTROLLED_VOCAB_SUBMISSION_SUBJECT, $suggestionUrlBase), 'locales' => $this->locales, 'value' => (array) $publication->getData('subjects'), ])); } if ($this->enabled('disciplines')) { $this->addField(new FieldControlledVocab('disciplines', [ 'label' => __('search.discipline'), 'tooltip' => __('manager.setup.metadata.disciplines.description'), 'isMultilingual' => true, 'apiUrl' => str_replace('__vocab__', SubmissionDisciplineDAO::CONTROLLED_VOCAB_SUBMISSION_DISCIPLINE, $suggestionUrlBase), 'locales' => $this->locales, 'value' => (array) $publication->getData('disciplines'), ])); } if ($this->enabled('languages')) { $this->addField(new FieldControlledVocab('languages', [ 'label' => __('common.languages'), 'tooltip' => __('manager.setup.metadata.languages.description'), 'isMultilingual' => true, 'apiUrl' => str_replace('__vocab__', SubmissionLanguageDAO::CONTROLLED_VOCAB_SUBMISSION_LANGUAGE, $suggestionUrlBase), 'locales' => $this->locales, 'value' => (array) $publication->getData('languages'), ])); } if ($this->enabled('agencies')) { $this->addField(new FieldControlledVocab('supportingAgencies', [ 'label' => __('submission.supportingAgencies'), 'tooltip' => __('manager.setup.metadata.agencies.description'), 'isMultilingual' => true, 'apiUrl' => str_replace('__vocab__', SubmissionAgencyDAO::CONTROLLED_VOCAB_SUBMISSION_AGENCY, $suggestionUrlBase), 'locales' => $this->locales, 'value' => (array) $publication->getData('supportingAgencies'), ])); } if ($this->enabled('coverage')) { $this->addField(new FieldText('coverage', [ 'label' => __('manager.setup.metadata.coverage'), 'tooltip' => __('manager.setup.metadata.coverage.description'), 'isMultilingual' => true, 'value' => $publication->getData('coverage'), ])); } if ($this->enabled('rights')) { $this->addField(new FieldText('rights', [ 'label' => __('submission.rights'), 'tooltip' => __('manager.setup.metadata.rights.description'), 'isMultilingual' => true, 'value' => $publication->getData('rights'), ])); } if ($this->enabled('source')) { $this->addField(new FieldText('source', [ 'label' => __('common.source'), 'tooltip' => __('manager.setup.metadata.source.description'), 'isMultilingual' => true, 'value' => $publication->getData('source'), ])); } if ($this->enabled('type')) { $this->addField(new FieldText('type', [ 'label' => __('common.type'), 'tooltip' => __('manager.setup.metadata.type.description'), 'isMultilingual' => true, 'value' => $publication->getData('type'), ])); } if ($this->enabled('dataAvailability')) { $this->addField(new FieldRichTextarea('dataAvailability', [ 'label' => __('submission.dataAvailability'), 'tooltip' => __('manager.setup.metadata.dataAvailability.description'), 'isMultilingual' => true, 'value' => $publication->getData('dataAvailability'), ])); } if ($this->enabled('pub-id::publisher-id')) { $this->addField(new FieldText('pub-id::publisher-id', [ 'label' => __('submission.publisherId'), 'tooltip' => __('submission.publisherId.description'), 'value' => $publication->getData('pub-id::publisher-id'), ])); } } /** * Whether or not a metadata field is enabled in this form */ protected function enabled(string $setting): bool { if ($setting === 'pub-id::publisher-id') { return in_array('publication', (array) $this->context->getData('enablePublisherId')); } return (bool) $this->context->getData($setting); } }