3 declare(strict_types=1);
45 if ($component->getAsyncRenderUrl()) {
52 return $this->renderRoundTrip($component, $default_renderer);
64 parent::registerResources($registry);
65 $registry->
register(
'./src/UI/templates/js/Modal/modal.js');
70 $show = $modal->getShowSignal();
71 $close = $modal->getCloseSignal();
75 $replace = $modal->getReplaceSignal();
79 'ajaxRenderUrl' => $modal->getAsyncRenderUrl(),
80 'keyboard' => $modal->getCloseWithKeyboard()
98 return $modal->withAdditionalOnLoadCode(
function (
$id) use ($show, $close, $options, $replace):
string {
99 $options[
"url"] =
"#$id";
100 $options = json_encode($options);
102 "$(document).on('$show', function(event, signalData) { il.UI.modal.showModal('$id', $options, signalData);});" .
103 "$(document).on('$close', function() { il.UI.modal.closeModal('$id');});";
104 if ($replace !=
"") {
105 $code .=
"$(document).on('$replace', function(event, signalData) { il.UI.modal.replaceFromSignal('$id', signalData);});";
115 return "<span id='$id'></span>";
126 $value = $modal->getFormAction();
127 $tpl->setVariable(
'FORM_ACTION', $value);
128 $tpl->setVariable(
'TITLE', $modal->getTitle());
129 $tpl->setVariable(
'MESSAGE', $modal->getMessage());
130 if (count($modal->getAffectedItems())) {
131 $tpl->setCurrentBlock(
'with_items');
132 foreach ($modal->getAffectedItems() as $item) {
133 $tpl->setCurrentBlock(
'item');
134 $icon = ($item->getIcon()) ? $default_renderer->render($item->getIcon()) :
'';
135 $desc = ($item->getDescription()) ?
'<br>' . $item->getDescription() :
'';
136 $tpl->setVariable(
'ITEM_ICON', $icon);
137 $tpl->setVariable(
'ITEM_ID', $item->getId());
138 $tpl->setVariable(
'ITEM_TITLE', $item->getTitle());
139 $tpl->setVariable(
'ITEM_DESCRIPTION', $desc);
140 $tpl->parseCurrentBlock();
143 $tpl->setVariable(
'ACTION_BUTTON_LABEL', $this->
txt($modal->getActionButtonLabel()));
144 $tpl->setVariable(
'ACTION_BUTTON', $modal->getActionButtonLabel());
145 $tpl->setVariable(
'CANCEL_BUTTON_LABEL', $this->
txt($modal->getCancelButtonLabel()));
146 $tpl->setVariable(
'CLOSE_LABEL', $this->
txt($modal->getCancelButtonLabel()));
158 $tpl->setVariable(
'TITLE', $modal->getTitle());
159 $tpl->setVariable(
'CLOSE_LABEL', $this->
txt(
'close'));
161 foreach ($modal->getContent() as $content) {
162 $tpl->setCurrentBlock(
'with_content');
163 $tpl->setVariable(
'CONTENT', $default_renderer->render($content));
164 $tpl->parseCurrentBlock();
166 foreach ($modal->getActionButtons() as $button) {
167 $tpl->setCurrentBlock(
'with_buttons');
168 $tpl->setVariable(
'BUTTON', $default_renderer->render($button));
169 $tpl->parseCurrentBlock();
173 if (!empty($modal->getInputs())) {
175 $tpl->setCurrentBlock(
'with_form');
176 $tpl->setVariable(
'FORM', $default_renderer->render($modal->getForm()));
177 $tpl->parseCurrentBlock();
181 $modal->getSubmitCaption(),
183 )->withOnClick($modal->getForm()->getSubmitSignal());
184 $tpl->setCurrentBlock(
'with_submit');
185 $tpl->setVariable(
'SUBMIT_BUTTON', $default_renderer->render($submit));
186 $tpl->parseCurrentBlock();
189 $tpl->setVariable(
'CANCEL_BUTTON_LABEL', $this->
txt($modal->getCancelButtonLabel()));
199 $id_carousel =
"{$id}_carousel";
200 $pages = $modal->getPages();
201 $tpl->setVariable(
'TITLE', $pages[0]->getTitle());
202 $tpl->setVariable(
'ID_CAROUSEL', $id_carousel);
203 $tpl->setVariable(
'CLOSE_LABEL', $this->
txt(
'close'));
205 if (count($pages) > 1) {
206 $tpl->setCurrentBlock(
'has_indicators');
207 foreach ($pages as
$index => $page) {
208 $tpl->setCurrentBlock(
'indicators');
210 $tpl->setVariable(
'CLASS_ACTIVE', (
$index == 0) ?
'active' :
'');
211 $tpl->setVariable(
'ID_CAROUSEL2', $id_carousel);
212 $tpl->parseCurrentBlock();
215 foreach ($pages as
$i => $page) {
217 $tpl->setCurrentBlock(
'pages');
218 $tpl->touchBlock(
'page_type_text');
219 $tpl->parseCurrentBlock();
221 $tpl->setCurrentBlock(
'pages');
222 $tpl->setVariable(
'CLASS_ACTIVE', (
$i == 0) ?
' active' :
'');
223 $tpl->setVariable(
'TITLE2', htmlentities($page->getTitle(), ENT_QUOTES,
'UTF-8'));
224 $tpl->setVariable(
'CONTENT', $default_renderer->render($page->getComponent()));
226 $tpl->setVariable(
'DESCRIPTION', $page->getDescription());
228 $tpl->parseCurrentBlock();
230 if (count($pages) > 1) {
231 $tpl->setCurrentBlock(
'controls');
232 $tpl->setVariable(
'ID_CAROUSEL3', $id_carousel);
233 $tpl->parseCurrentBlock();
235 $tpl->setVariable(
'ID_CAROUSEL4', $id_carousel);
Registry for resources required by rendered output like Javascript or CSS.
checkComponent(Component $component)
Check if a given component fits this renderer and throw if that is not the case. ...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $id)
Get a text from the language file.
renderLightbox(Component\Modal\Lightbox $modal, RendererInterface $default_renderer)
registerResources(ResourceRegistry $registry)
Announce resources this renderer requires.
getTemplate(string $name, bool $purge_unfilled_vars, bool $purge_unused_blocks)
Get template of component this renderer is made for.
renderInterruptive(Component\Modal\Interruptive $modal, RendererInterface $default_renderer)
register(string $name)
Add a dependency.
render(Component $component, Renderer $default_renderer)
Render the component if possible and delegate additional rendering to the default_renderer.
Interface LightboxDescriptionEnabledPage.
renderAsync(Component\Modal\Modal $modal)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
getUIFactory()
Get a UI factory.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Base class for all component renderers.
registerSignals(Component\Modal\Modal $modal)
getComponentInterfaceName()
bindJavaScript(JavaScriptBindable $component)
Bind the component to JavaScript.