19 declare(strict_types=1);
45 VocabularyAdapter $vocabulary_adapter,
59 bool $add_value_from_data
67 $raw_values = $this->vocabulary_adapter->valuesInVocabulariesForSlot(
71 foreach ($this->presenter->data()->vocabularyValues($slot, ...$raw_values) as $labelled_value) {
72 $values[$labelled_value->value()] = $labelled_value->label();
75 $input = $this->ui_factory->select(
76 $this->getInputLabelFromElement($this->presenter, $element, $context_element),
79 if ($add_value_from_data && isset(
$data)) {
80 $input = $input->withValue(
$data);
84 $sources_by_value = $this->vocabulary_adapter->sourceMapForSlot($slot);
85 return $this->addConstraintsFromElement($this->constraint_dictionary, $element, $input)
86 ->withAdditionalTransformation(
87 $this->
refinery->custom()->transformation(
function ($vs) use ($sources_by_value, $source_path) {
88 $source = $sources_by_value((
string) $vs);
91 [$source_path->toString() => $source]
104 $slot = $this->vocabulary_adapter->slotForElement($element),
114 $slot = $this->vocabulary_adapter->slotForElement($element);
119 $slot === $conditional_slot
126 if ($el->getDefinition()->dataType() === Type::VOCAB_SOURCE) {
127 return $this->path_factory->toElement($el,
true);
130 throw new \ilMDEditorException(
'Vocab values must not be separated from their source.');
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
__construct(Container $dic, ilPlugin $plugin)