ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
Renderer.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 2016 Timon Amstutz <timon.amstutz@ilub.unibe.ch> Extended GPL, see docs/LICENSE */
4 
6 
10 
16 {
20  public function render(Component\Component $component, RendererInterface $default_renderer)
21  {
25  $this->checkComponent($component);
26 
27  if ($component instanceof Component\Panel\Standard) {
31  return $this->renderStandard($component, $default_renderer);
32  } elseif ($component instanceof Component\Panel\Sub) {
36  return $this->renderSub($component, $default_renderer);
37  }
41  return $this->renderReport($component, $default_renderer);
42  }
43 
49  protected function getContentAsString(Component\Component $component, RendererInterface $default_renderer)
50  {
51  $content = "";
52  foreach ($component->getContent() as $item) {
53  $content .= $default_renderer->render($item);
54  }
55  return $content;
56  }
57 
63  protected function renderStandard(Component\Panel\Standard $component, RendererInterface $default_renderer)
64  {
65  $tpl = $this->getTemplate("tpl.standard.html", true, true);
66 
67  $view_controls = $component->getViewControls();
68  if ($view_controls) {
69  foreach ($view_controls as $view_control) {
70  $tpl->setCurrentBlock("view_controls");
71  $tpl->setVariable("VIEW_CONTROL", $default_renderer->render($view_control));
72  $tpl->parseCurrentBlock();
73  }
74  }
75 
76  // actions
77  $actions = $component->getActions();
78  if ($actions !== null) {
79  $tpl->setVariable("ACTIONS", $default_renderer->render($actions));
80  }
81 
82  $tpl->setVariable("TITLE", $component->getTitle());
83  $tpl->setVariable("BODY", $this->getContentAsString($component, $default_renderer));
84  return $tpl->get();
85  }
86 
92  protected function renderSub(Component\Panel\Sub $component, RendererInterface $default_renderer)
93  {
94  $tpl = $this->getTemplate("tpl.sub.html", true, true);
95 
96  $actions = $component->getActions();
97 
98  if ($component->getTitle() != "" || $actions !== null) {
99  $tpl->setCurrentBlock("title");
100 
101  // actions
102  if ($actions !== null) {
103  $tpl->setVariable("ACTIONS", $default_renderer->render($actions));
104  }
105 
106  // title
107  $tpl->setVariable("TITLE", $component->getTitle());
108  $tpl->parseCurrentBlock();
109  }
110 
111  if ($component->getCard()) {
112  $tpl->setCurrentBlock("with_card");
113  $tpl->setVariable("BODY", $this->getContentAsString($component, $default_renderer));
114  $tpl->setVariable("CARD", $default_renderer->render($component->getCard()));
115  $tpl->parseCurrentBlock();
116  } else {
117  $tpl->setCurrentBlock("no_card");
118  $tpl->setVariable("BODY", $this->getContentAsString($component, $default_renderer));
119  $tpl->parseCurrentBlock();
120  }
121 
122  return $tpl->get();
123  }
124 
130  protected function renderReport(Component\Panel\Report $component, RendererInterface $default_renderer)
131  {
132  $tpl = $this->getTemplate("tpl.report.html", true, true);
133  $tpl->setVariable("TITLE", $component->getTitle());
134  $tpl->setVariable("BODY", $this->getContentAsString($component, $default_renderer));
135  return $tpl->get();
136  }
137 
141  protected function getComponentInterfaceName()
142  {
143  return [Component\Panel\Panel::class];
144  }
145 }
checkComponent(Component $component)
Check if a given component fits this renderer and throw if that is not the case. ...
renderSub(Component\Panel\Sub $component, RendererInterface $default_renderer)
Definition: Renderer.php:92
renderReport(Component\Panel\Report $component, RendererInterface $default_renderer)
Definition: Renderer.php:130
getContentAsString(Component\Component $component, RendererInterface $default_renderer)
Definition: Renderer.php:49
render(Component $component, Renderer $default_renderer)
Render the component if possible and delegate additional rendering to the default_renderer.
renderStandard(Component\Panel\Standard $component, RendererInterface $default_renderer)
Definition: Renderer.php:63
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
getTemplate($name, $purge_unfilled_vars, $purge_unused_blocks)
Get template of component this renderer is made for.