19declare(strict_types=1);
52 $this->original_default_renderer = $default_renderer;
58 case ($component instanceof
F\
Group):
61 case ($component instanceof
F\
Text):
64 case ($component instanceof
F\
Numeric):
67 case ($component instanceof
F\
Select):
90 $input_labels = array();
92 $inputs .= $default_renderer->render($input);
93 $input_labels[] = $input->getLabel();
100 protected function renderAddField(array $input_labels, RendererInterface $default_renderer): string
103 $tpl = $this->
getTemplate(
"tpl.context_filter.html",
true,
true);
104 $add_tpl = $this->
getTemplate(
"tpl.filter_add_list.html",
true,
true);
107 foreach ($input_labels as $label) {
108 $links[] =
$f->button()->shy($label,
"")->withAdditionalOnLoadCode(fn(
$id) =>
"$('#$id').on('click', function(event) {
109 il.UI.filter.onAddClick(event, '$id');
110 return false; // stop event propagation
113 $add_tpl->setVariable(
"LIST", $default_renderer->render(
$f->listing()->unordered($links)));
114 $list =
$f->legacy()->content($add_tpl->get());
115 $popover =
$f->popover()->standard($list)->withVerticalPosition();
116 $tpl->setVariable(
"POPOVER", $default_renderer->render($popover));
117 $add =
$f->button()->bulky(
$f->symbol()->glyph()->add(),
"",
"")->withOnClick($popover->getShowSignal());
119 $tpl->setCurrentBlock(
"filter_field");
120 $tpl->setVariable(
"FILTER_FIELD", $default_renderer->render($add));
121 $tpl->parseCurrentBlock();
130 ?
string $id_for_label =
null,
131 ?
string $dependant_group_html =
null
136 protected function wrapInFilterContext(
139 RendererInterface $default_renderer,
140 ?
string $id_pointing_to_input =
null,
141 string $dependant_group_html =
''
143 $f = $this->getUIFactory();
144 $tpl = $this->getTemplate(
"tpl.context_filter.html",
true,
true);
149 $remove_glyph =
$f->symbol()->glyph()->remove(
"")->withAdditionalOnLoadCode(fn(
$id) =>
"$('#$id').on('click', function(event) {
150 il.UI.filter.onRemoveClick(event, '$id');
151 return false; // stop event propagation
154 $tpl->setCurrentBlock(
"addon_left");
155 $tpl->setVariable(
"LABEL", $component->
getLabel());
156 if ($id_pointing_to_input) {
157 $tpl->setCurrentBlock(
"for");
158 $tpl->setVariable(
"ID", $id_pointing_to_input);
159 $tpl->parseCurrentBlock();
161 $tpl->parseCurrentBlock();
162 $tpl->setCurrentBlock(
"filter_field");
163 if ($component->isComplex()) {
164 $tpl->setVariable(
"FILTER_FIELD", $this->renderProxyField($input_html, $default_renderer));
166 $tpl->setVariable(
"FILTER_FIELD", $input_html);
168 $tpl->parseCurrentBlock();
169 $tpl->setCurrentBlock(
"addon_right");
170 $tpl->setVariable(
"DELETE", $default_renderer->render($remove_glyph));
171 $tpl->parseCurrentBlock();
183 RendererInterface $default_renderer
185 $f = $this->getUIFactory();
186 $tpl = $this->getTemplate(
"tpl.filter_field.html",
true,
true);
188 $popover =
$f->popover()->standard(
$f->legacy()->content($input_html))->withVerticalPosition();
189 $tpl->setVariable(
"POPOVER", $default_renderer->render($popover));
192 $prox = $prox->withOnClick($popover->getShowSignal());
193 $tpl->touchBlock(
"tabindex");
195 $this->bindJSandApplyId($prox, $tpl);
201 $inputs = $component->getInputs();
204 list($input, $tpl) = $this->internalRenderDateTimeField($input, $default_renderer);
205 $first_input_id = $this->bindJSandApplyId($input, $tpl);
206 $input_html = $default_renderer->render($input);
209 ->withAdditionalPickerconfig([
'useCurrent' =>
false]);
210 $input_html .= $default_renderer->render($input);
212 $tpl = $this->getTemplate(
"tpl.duration.html",
true,
true);
213 $id = $this->bindJSandApplyId($component, $tpl);
214 $tpl->setVariable(
'DURATION', $input_html);
216 return $this->wrapInFormContext($component, $component->getLabel(), $tpl->get());
221 parent::registerResources($registry);
222 $registry->
register(
'assets/js/filter.js');
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
renderAddField(array $input_labels, RendererInterface $default_renderer)
renderFieldGroups(Group $group, RendererInterface $default_renderer)
wrapInFormContext(FormInput $component, string $label, string $input_html, ?string $id_for_label=null, ?string $dependant_group_html=null)
maybeDisable(FormInput $component, Template $tpl)
renderProxyField(string $input_html, RendererInterface $default_renderer)
RendererInterface $original_default_renderer
getOriginalDefaultRenderer()
registerResources(ResourceRegistry $registry)
Announce resources this renderer requires.
renderDurationField(F\Duration $component, RendererInterface $default_renderer)
render(Component\Component $component, RendererInterface $default_renderer)
This implements the text input.
Base class for all component renderers.
cannotHandleComponent(Component $component)
This method MUST be called by derived component renderers, if.
addTriggererOnLoadCode(Triggerer $triggerer)
Add onload-code for triggerer.
getUIFactory()
Get a UI factory.
getTemplate(string $name, bool $purge_unfilled_vars, bool $purge_unused_blocks)
Get template of component this renderer is made for.
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Registry for resources required by rendered output like Javascript or CSS.
register(string $name)
Add a dependency.
Interface to templating as it is used in the UI framework.
An entity that renders components to a string output.