ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
Renderer.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
28 
30 {
34  public function render(Component\Component $component, RendererInterface $default_renderer): string
35  {
36  if ($component instanceof Component\Prompt\Prompt) {
37  return $this->renderPrompt($component, $default_renderer);
38  }
39 
40  $this->cannotHandleComponent($component);
41  }
42 
46  public function registerResources(ResourceRegistry $registry): void
47  {
48  parent::registerResources($registry);
49  $registry->register('assets/js/prompt.min.js');
50  }
51 
52  protected function renderPrompt(Component\Prompt\Prompt $component, RendererInterface $default_renderer): string
53  {
54  $tpl = $this->getTemplate('tpl.prompt.html', true, true);
55  $show_signal = $component->getShowSignal();
56  $close_signal = $component->getCloseSignal();
57  $url = $component->getAsyncUrl()->__toString();
58  $component = $component->withAdditionalOnLoadCode(
59  fn($id) => "
60  il.UI.prompt.init('$id');
61  $(document).on('$show_signal', (e, data) => {il.UI.prompt.get('$id').show(data.options.url);})
62  $(document).on('$close_signal', () => {il.UI.prompt.get('$id').close();})
63  "
64  );
65  $id = $this->bindJavaScript($component);
66 
67  $tpl->setVariable('ID', $id);
68  $tpl->setVariable('CLOSE_LABEL', $this->txt('close'));
69 
70  return $tpl->get();
71  }
72 
73 }
Registry for resources required by rendered output like Javascript or CSS.
registerResources(ResourceRegistry $registry)
Announce resources this renderer requires.
Definition: Renderer.php:46
txt(string $id)
Get a text from the language file.
$url
Definition: shib_logout.php:66
getTemplate(string $name, bool $purge_unfilled_vars, bool $purge_unused_blocks)
Get template of component this renderer is made for.
cannotHandleComponent(Component $component)
This method MUST be called by derived component renderers, if.
register(string $name)
Add a dependency.
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
render(Component\Component $component, RendererInterface $default_renderer)
Definition: Renderer.php:34
renderPrompt(Component\Prompt\Prompt $component, RendererInterface $default_renderer)
Definition: Renderer.php:52
bindJavaScript(JavaScriptBindable $component)
Bind the component to JavaScript.