ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ILIAS\ILIASObject\Properties\MultiPropertiesManipulator Class Reference
+ Collaboration diagram for ILIAS\ILIASObject\Properties\MultiPropertiesManipulator:

Public Member Functions

 __construct (private readonly ObjectReferencePropertiesRepository $object_reference_properties_repo, private readonly Aggregator $properties_agregator, private readonly \ilLanguage $language, private readonly \ilCtrlInterface $ctrl, private readonly \ilObjUser $user, private readonly UIFactory $ui_factory, private readonly \ilGlobalTemplateInterface $tpl, private readonly Refinery $refinery)
 
 getAvailabilityPeriodButton ()
 
 getEditAvailabilityPeriodPropertiesModal (array $ref_ids, \ilObjectGUI $parent_gui)
 
 saveEditAvailabilityPeriodPropertiesModal (\ilObjectGUI $parent_gui, \Closure $check_access, ServerRequestInterface $request)
 

Private Member Functions

 buildModal (string $post_url, ?array $items=null, ?array $ref_ids=null, bool $all_settings_are_equal=false)
 
 buildForm (?int $ref_id_for_values)
 
 saveAvailabilityPeriodPropertyForObjectRefIds (array $object_reference_ids, AvailabilityPeriod $property)
 
 areAllElementsEqual (array $ref_ids)
 
 getItemsForRefIds (array $object_reference_ids)
 

Detailed Description

Definition at line 32 of file MultiPropertiesManipulator.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::__construct ( private readonly ObjectReferencePropertiesRepository  $object_reference_properties_repo,
private readonly Aggregator  $properties_agregator,
private readonly \ilLanguage  $language,
private readonly \ilCtrlInterface  $ctrl,
private readonly \ilObjUser  $user,
private readonly UIFactory  $ui_factory,
private readonly \ilGlobalTemplateInterface  $tpl,
private readonly Refinery  $refinery 
)

Definition at line 34 of file MultiPropertiesManipulator.php.

43 {
44 $this->language->loadLanguageModule('rep');
45 }

References ILIAS\UI\examples\Symbol\Glyph\Language\language().

+ Here is the call graph for this function:

Member Function Documentation

◆ areAllElementsEqual()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::areAllElementsEqual ( array  $ref_ids)
private
Parameters
array<int>$ref_ids

Definition at line 175 of file MultiPropertiesManipulator.php.

175 : bool
176 {
177 $previous_element = $this->object_reference_properties_repo->getFor(array_shift($ref_ids))->getPropertyAvailabilityPeriod();
178 foreach ($ref_ids as $ref_id) {
179 $current_element = $this->object_reference_properties_repo->getFor($ref_id)->getPropertyAvailabilityPeriod();
180 if ($current_element->getAvailabilityPeriodEnabled() === false
181 && $previous_element->getAvailabilityPeriodEnabled() === false) {
182 return true;
183 }
184
185 if ($current_element->getAvailabilityPeriodEnabled() !== $previous_element->getAvailabilityPeriodEnabled()
186 || $current_element->getAvailabilityPeriodStart() != $previous_element->getAvailabilityPeriodStart()
187 || $current_element->getAvailabilityPeriodEnd() != $previous_element->getAvailabilityPeriodEnd()
188 || $current_element->getVisibleWhenDisabled() !== $previous_element->getVisibleWhenDisabled()) {
189 return false;
190 }
191 }
192 return true;
193 }
$ref_id
Definition: ltiauth.php:66

References $ref_id.

◆ buildForm()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::buildForm ( ?int  $ref_id_for_values)
private
Returns
array<ILIAS\UI\Component\Input\Input>

Definition at line 139 of file MultiPropertiesManipulator.php.

139 : array
140 {
141 $data_factory = new DataFactory();
142 $date_format = $this->user->getDateFormat();
143 $environment = [
144 'user_time_zone' => $this->user->getTimeZone(),
145 'user_date_format' => $data_factory->dateFormat()->withTime24($date_format)
146 ];
147
148 $input_fields = [];
149 $input_fields['enable_availability_period'] = $this->object_reference_properties_repo
150 ->getFor($ref_id_for_values)->getPropertyAvailabilityPeriod()->toForm(
151 $this->language,
152 $this->ui_factory->input()->field(),
153 $this->refinery,
154 $environment
155 );
156 $input_fields['affected_items'] = $this->ui_factory->input()->field()->hidden();
157
158 return $input_fields;
159 }

References ILIAS\UI\examples\Symbol\Glyph\Language\language(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ buildModal()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::buildModal ( string  $post_url,
?array  $items = null,
?array  $ref_ids = null,
bool  $all_settings_are_equal = false 
)
private

Definition at line 107 of file MultiPropertiesManipulator.php.

112 : RoundTripModal {
113 $ref_id_for_value = null;
114
115 if ($ref_ids !== null && $all_settings_are_equal) {
116 $ref_id_for_value = $ref_ids[0];
117 }
118 $modal_factory = $this->ui_factory->modal();
119 $content = $items;
120
121 $input_fields = $this->buildForm($ref_id_for_value);
122
123 if ($ref_ids !== null) {
124 $input_fields['affected_items'] = $input_fields['affected_items']->withValue(implode(',', $ref_ids));
125 }
126
127 if ($ref_ids !== null && !$all_settings_are_equal) {
128 $content = [
129 $this->ui_factory->messageBox()->info($this->language->txt('unequal_items_for_availability_period_message')),
130 ] + $items;
131 }
132 return $modal_factory->roundtrip($this->language->txt('edit_availability_period'), $content, $input_fields, $post_url);
133 }

◆ getAvailabilityPeriodButton()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::getAvailabilityPeriodButton ( )

Definition at line 47 of file MultiPropertiesManipulator.php.

47 : StandardButton
48 {
49 $on_load_code = function ($id) {
50 return "document.getElementById('$id')"
51 . '.addEventListener("click", '
52 . '(e) => {e.preventDefault();'
53 . 'e.target.setAttribute("name", "cmd[editAvailabilityPeriod]");'
54 . 'e.target.form.requestSubmit(e.target);});';
55 };
56
57 return $this->ui_factory->button()->standard(
58 $this->language->txt('edit_availability_period'),
59 ''
60 )->withAdditionalOnLoadCode($on_load_code);
61 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

References $id, ILIAS\UI\examples\Symbol\Glyph\Language\language(), and ILIAS\UI\Implementation\Component\withAdditionalOnLoadCode().

+ Here is the call graph for this function:

◆ getEditAvailabilityPeriodPropertiesModal()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::getEditAvailabilityPeriodPropertiesModal ( array  $ref_ids,
\ilObjectGUI  $parent_gui 
)

Definition at line 63 of file MultiPropertiesManipulator.php.

66 : ?RoundTripModal {
67 if ($ref_ids === []) {
68 $this->tpl->setOnScreenMessage('failure', $this->language->txt('no_objects_selected'));
69 return null;
70 }
71
72 $this->object_reference_properties_repo->preload($ref_ids);
73 $this->properties_agregator->preload($ref_ids);
74
75 $items = $this->getItemsForRefIds($ref_ids);
76
77 $post_url = $this->ctrl->getFormAction($parent_gui, 'saveAvailabilityPeriod');
78
79 return $this->buildModal($post_url, $items, $ref_ids, $this->areAllElementsEqual($ref_ids));
80 }
buildModal(string $post_url, ?array $items=null, ?array $ref_ids=null, bool $all_settings_are_equal=false)

References ILIAS\UI\examples\Symbol\Glyph\Language\language().

+ Here is the call graph for this function:

◆ getItemsForRefIds()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::getItemsForRefIds ( array  $object_reference_ids)
private
Parameters
array<int>$ref_ids
Returns
array<ILIAS\UI\Component\Item\Shy>

Definition at line 199 of file MultiPropertiesManipulator.php.

199 : array
200 {
201 $items = [];
202 foreach ($object_reference_ids as $object_reference_id) {
203 $object_id = $this->object_reference_properties_repo->getFor(
204 $object_reference_id
205 )->getObjectId();
206 $object_properties = $this->properties_agregator->getFor(
207 $object_id
208 );
209 $title = $object_properties->getPropertyTitleAndDescription()->getTitle();
210 $icon = $this->ui_factory->symbol()->icon()->custom(
211 \ilObject::getIconForReference($object_reference_id, $object_id, ''),
212 $title
213 );
214 $key = 'obj_' . $object_reference_id;
215 $items[$key] = $this->ui_factory->item()->shy($title)->withLeadIcon($icon);
216 }
217 return $items;
218 }

◆ saveAvailabilityPeriodPropertyForObjectRefIds()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::saveAvailabilityPeriodPropertyForObjectRefIds ( array  $object_reference_ids,
AvailabilityPeriod  $property 
)
private

Definition at line 161 of file MultiPropertiesManipulator.php.

164 : void {
165 foreach ($object_reference_ids as $object_reference_id) {
166 $this->object_reference_properties_repo->storePropertyAvailabilityPeriod(
167 $property->withObjectReferenceId($object_reference_id)
168 );
169 }
170 }

References ILIAS\ILIASObject\Properties\ObjectReferenceProperties\AvailabilityPeriod\AvailabilityPeriod\withObjectReferenceId().

+ Here is the call graph for this function:

◆ saveEditAvailabilityPeriodPropertiesModal()

ILIAS\ILIASObject\Properties\MultiPropertiesManipulator::saveEditAvailabilityPeriodPropertiesModal ( \ilObjectGUI  $parent_gui,
\Closure  $check_access,
ServerRequestInterface  $request 
)

Definition at line 82 of file MultiPropertiesManipulator.php.

86 : RoundTripModal|bool {
87 $post_url = $this->ctrl->getFormAction($parent_gui, 'saveAvailabilityPeriod');
88 $availability_period_modal = $this->buildModal($post_url)
89 ->withRequest($request);
90 $data = $availability_period_modal->getData();
91 if ($data === null) {
92 return $availability_period_modal;
93 }
94 $ref_ids = $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())->transform(
95 explode(',', $data['affected_items'])
96 );
97
98 if (!$check_access($ref_ids)) {
99 return false;
100 }
101
102 $availability_period_property = $data['enable_availability_period'];
103 $this->saveAvailabilityPeriodPropertyForObjectRefIds($ref_ids, $availability_period_property);
104 return true;
105 }
saveAvailabilityPeriodPropertyForObjectRefIds(array $object_reference_ids, AvailabilityPeriod $property)

The documentation for this class was generated from the following file: