19 declare(strict_types=1);
    49         if ($component->getAsyncRenderUrl()) {
    56             return $this->renderRoundTrip($component, $default_renderer);
    68         parent::registerResources($registry);
    69         $registry->
register(
'assets/js/modal.min.js');
    74         $show = $modal->getShowSignal();
    75         $close = $modal->getCloseSignal();
    79             $replace = $modal->getReplaceSignal();
    83             'ajaxRenderUrl' => $modal->getAsyncRenderUrl(),
    84             'keyboard' => $modal->getCloseWithKeyboard()
   102         return $modal->withAdditionalOnLoadCode(
function (
$id) use ($show, $close, $options, $replace): 
string {
   103             $options[
"url"] = 
"#$id";
   104             $options = json_encode($options);
   106                 "$(document).on('$show', function(event, signalData) {   107                     let modal = document.getElementById('$id');   108                     il.UI.modal.showModal(modal, $options, signalData, '$close');   111             if ($replace != 
"") {
   112                 $code .= 
"$(document).on('$replace', function(event, signalData) {   113                     const id = event.target.closest('.c-modal').id;   114                     il.UI.core.replaceContent(id, signalData.options.url, 'component');   125         return "<span id='$id'></span>";
   132         $tpl = $this->
getTemplate(
'tpl.interruptive.html', 
true, 
true);
   135         $tpl->setVariable(
'ID', 
$id);
   136         $value = $modal->getFormAction();
   137         $tpl->setVariable(
'FORM_ACTION', $value);
   138         $tpl->setVariable(
'TITLE', $modal->getTitle());
   139         $tpl->setVariable(
'MESSAGE', $modal->getMessage());
   143             $modal->getAffectedItems(),
   146         if ($standard_items) {
   147             $tpl->setCurrentBlock(
'with_standard_items');
   148             $tpl->setVariable(
'STANDARD_ITEMS', $standard_items);
   153             $modal->getAffectedItems(),
   156         if ($key_value_items) {
   157             $tpl->setCurrentBlock(
'with_key_value_items');
   158             $tpl->setVariable(
'KEY_VALUE_ITEMS', $key_value_items);
   161         $tpl->setVariable(
'ACTION_BUTTON_LABEL', $modal->getActionButtonLabel() ?? $this->
txt(
'delete'));
   162         $tpl->setVariable(
'CANCEL_BUTTON_LABEL', $modal->getCancelButtonLabel() ?? $this->
txt(
'cancel'));
   163         $tpl->setVariable(
'CLOSE_LABEL', $modal->getCancelButtonLabel() ?? $this->
txt(
'cancel'));
   180         $items_of_class = array_filter(
   182             fn($i) => $i instanceof $class_name
   184         $rendered_items = 
'';
   185         foreach ($items_of_class as $item) {
   186             $rendered_items .= $default_renderer->render($item);
   188         return $rendered_items;
   193         $tpl = $this->
getTemplate(
'tpl.roundtrip.html', 
true, 
true);
   197         $tpl->setVariable(
'ID', 
$id);
   198         $tpl->setVariable(
'TITLE', $modal->getTitle());
   199         $tpl->setVariable(
'CLOSE_LABEL', $this->
txt(
'close'));
   201         foreach ($modal->getContent() as $content) {
   202             $tpl->setCurrentBlock(
'with_content');
   203             $tpl->setVariable(
'CONTENT', $default_renderer->render($content));
   204             $tpl->parseCurrentBlock();
   206         foreach ($modal->getActionButtons() as $button) {
   207             $tpl->setCurrentBlock(
'with_buttons');
   208             $tpl->setVariable(
'BUTTON', $default_renderer->render($button));
   209             $tpl->parseCurrentBlock();
   213         if (!empty($modal->getInputs())) {
   215             $tpl->setCurrentBlock(
'with_form');
   216             $tpl->setVariable(
'FORM', $default_renderer->render($modal->getForm()));
   217             $tpl->parseCurrentBlock();
   221                 $modal->getSubmitLabel() ?? $this->
txt(
'save'),
   223             )->withOnClick($modal->getForm()->getSubmitSignal());
   224             $tpl->setCurrentBlock(
'with_submit');
   225             $tpl->setVariable(
'SUBMIT_BUTTON', $default_renderer->render($submit));
   226             $tpl->parseCurrentBlock();
   229         $tpl->setVariable(
'CANCEL_BUTTON_LABEL', $modal->getCancelButtonLabel() ?? $this->
txt(
'cancel'));
   235         $tpl = $this->
getTemplate(
'tpl.lightbox.html', 
true, 
true);
   238         $tpl->setVariable(
'ID', 
$id);
   239         $id_carousel = 
"{$id}_carousel";
   240         $pages = $modal->getPages();
   241         $tpl->setVariable(
'TITLE', $pages[0]->
getTitle());
   242         $tpl->setVariable(
'ID_CAROUSEL', $id_carousel);
   243         $tpl->setVariable(
'CLOSE_LABEL', $this->
txt(
'close'));
   244         $tpl->setVariable(
'COLOR_SCHEME', $modal->getScheme());
   246         if (count($pages) > 1) {
   247             $tpl->setCurrentBlock(
'has_indicators');
   248             foreach ($pages as $index => $page) {
   249                 $tpl->setCurrentBlock(
'indicators');
   250                 $tpl->setVariable(
'INDEX', $index);
   251                 $tpl->setVariable(
'CLASS_ACTIVE', ($index == 0) ? 
'active' : 
'');
   252                 $tpl->setVariable(
'ID_CAROUSEL2', $id_carousel);
   253                 $tpl->parseCurrentBlock();
   257         foreach ($pages as $page) {
   258             $this->
renderPage($page, $first, $tpl, $default_renderer);
   261         if (count($pages) > 1) {
   262             $tpl->setCurrentBlock(
'controls');
   263             $tpl->setVariable(
'ID_CAROUSEL3', $id_carousel);
   264             $tpl->parseCurrentBlock();
   266         $tpl->setVariable(
'ID_CAROUSEL4', $id_carousel);
   286         $tpl->
setVariable(
'CLASS_ACTIVE', $first ? 
'active' : 
'');
   287         $tpl->
setVariable(
'ORIENTATION', $vertical ? 
'item-vertical' : 
'');
   291             $tpl->
setVariable(
'DESCRIPTION', $page->getDescription());
 Registry for resources required by rendered output like Javascript or CSS. 
 
Interface InterruptiveItem. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
renderPage(LightboxPage $page, bool $first, Template $tpl, RendererInterface $default_renderer)
 
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. 
 
setCurrentBlock(string $name)
Set the block to work on. 
 
getTitle()
Get the title of this page, displayed as title in the lightbox modal. 
 
setVariable(string $name, $value)
Set a variable in the current block. 
 
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)
 
cannotHandleComponent(Component $component)
This method MUST be called by derived component renderers, if. 
 
register(string $name)
Add a dependency. 
 
getComponent()
Get the component representing the media item to be displayed in the modals content section...
 
parseCurrentBlock()
Parse the block that is currently worked on. 
 
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins 
 
Interface LightboxDescriptionEnabledPage. 
 
renderAsync(Component\Modal\Modal $modal)
 
touchBlock(string $name)
Touch a block without working further on it. 
 
getUIFactory()
Get a UI factory. 
 
render(Component\Component $component, RendererInterface $default_renderer)
 
renderInterruptiveItemsByClass(string $class_name, array $items, RendererInterface $default_renderer)
Filters items by provided class, and renders only those. 
 
Base class for all component renderers. 
 
registerSignals(Component\Modal\Modal $modal)
 
bindJavaScript(JavaScriptBindable $component)
Bind the component to JavaScript.