3use ILIAS\GlobalScreen\Scope\MainMenu\Collector\Renderer\Hasher;
69 $this->item_facade = $item;
70 if (!$this->item_facade->isEmpty()) {
81 return $this->lng->txt(
$key);
83 $f =
function () : InputFactory {
84 return $this->ui_fa->input();
88 $title =
$f()->field()->text(
$txt(
'topitem_title_default'),
$txt(
'topitem_title_default_byline'))
90 if (!$this->item_facade->isEmpty()) {
91 $title =
$title->withValue($this->item_facade->getDefaultTitle());
97 $type =
$f()->field()->radio(
$txt(
'topitem_type'),
$txt(
'topitem_type_byline'))->withRequired(
true);
98 $type_informations = $this->
repository->getPossibleTopItemTypesWithInformation();
101 foreach ($type_informations as $classname => $information) {
102 if ($this->item_facade->isEmpty()
103 || (!$this->item_facade->isEmpty() && $classname === $this->item_facade->getType() && $this->item_facade->isCustom())
105 $inputs = $this->
repository->getTypeHandlerForType($classname)->getAdditionalFieldsForSubForm($this->item_facade->identification());
106 $type =
$type->withOption($this->
hash($classname), $information->getTypeNameForPresentation(), $information->getTypeBylineForPresentation(), $inputs);
111 if (!$this->item_facade->isEmpty() && $this->item_facade->isCustom()) {
112 $type =
$type->withValue($this->
hash($this->item_facade->getType()));
113 } elseif ($this->item_facade->isCustom()) {
114 $type =
$type->withValue($this->
hash(reset(array_keys($type_informations))));
117 if (($this->item_facade->isEmpty() || $this->item_facade->isCustom()) && $type_i > 0) {
122 $active =
$f()->field()->checkbox(
$txt(
'topitem_active'),
$txt(
'topitem_active_byline'));
123 if (!$this->item_facade->isEmpty()) {
124 $active = $active->withValue($this->item_facade->isAvailable());
129 if ($this->item_facade->isEmpty()) {
141 $this->form = $this->form->withRequest($this->
http->request());
142 $data = $this->form->getData();
143 if (is_null(
$data)) {
147 $this->item_facade->setAction((
string)
$data[0][
'action']);
148 $this->item_facade->setDefaultTitle((
string)
$data[0][self::F_TITLE]);
149 $this->item_facade->setActiveStatus((
bool)
$data[0][self::F_ACTIVE]);
150 $this->item_facade->setIsTopItm(
true);
152 if ($this->item_facade->isEmpty()) {
153 $type = $this->unhash((
string) (
$data[0][self::F_TYPE][
'value']));
154 $this->item_facade->setType(
$type);
155 $this->
repository->createItem($this->item_facade);
158 if ($this->item_facade->isCustom()) {
159 $type = $this->item_facade->getType();
160 $type_specific_data = (array)
$data[0][self::F_TYPE][
'group_values'];
162 $type_handler->saveFormFields($this->item_facade->identification(), $type_specific_data);
165 $this->
repository->updateItem($this->item_facade);
176 return $this->ui_re->render([$this->form]);
An exception for terminatinating execution or to throw for unit testing.
This class provides processing control methods.
Class ilMMItemRepository.
This is how the factory for UI elements looks.
An entity that renders components to a string output.
Interface ilMMItemFacadeInterface.
hash(StreamInterface $stream, $algo, $rawOutput=false)
Calculate a hash of a Stream.
static http()
Fetches the global http state from ILIAS.