ILIAS  trunk Revision v11.0_alpha-1761-g6dbbfa7b760
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ui_mainbar.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
27 
100 function ui_mainbar(): string
101 {
102  global $DIC;
103  $f = $DIC->ui()->factory();
104  $renderer = $DIC->ui()->renderer();
105 
106  $target = $DIC->http()->request()->getUri()->__toString() . '&ui_mainbar=1';
107  $mainbar = $f->link()->standard('Mainbar', $target);
108 
109  $target = $DIC->http()->request()->getUri()->__toString() . '&ui_mainbar=2';
110  $mainbar_combined = $f->link()->standard('Mainbar Combined', $target);
111 
112  return $renderer->render([
113  $f->listing()->ordered([$mainbar,$mainbar_combined])
114  ]);
115 }
116 
117 function getUIMainbar(\ILIAS\UI\Factory $f, \ILIAS\Data\URI $uri, bool $condensed = false): MainBar
118 {
119  $symbol = $f->symbol()->icon()->standard('rcat', 'Fischotter');
120  $link010 = $f->link()->bulky($symbol, '2021 - Fischotter', $uri->withParameter('c', 1));
121  $symbol = $f->symbol()->icon()->standard('rcat', 'Maulwurf');
122  $link011 = $f->link()->bulky($symbol, '2020 - Maulwurf', $uri->withParameter('c', 2));
123  $symbol = $f->symbol()->icon()->standard('rcat', 'Reh');
124  $link012 = $f->link()->bulky($symbol, '2019 - Reh', $uri->withParameter('c', 3));
125 
126  $symbol = $f->symbol()->icon()->standard('rcat', 'Bachflohkrebs');
127  $link020 = $f->link()->bulky($symbol, '2021 - Bachflohkrebs', $uri->withParameter('c', 4));
128  $symbol = $f->symbol()->icon()->standard('rcat', 'Wildkatze');
129  $link021 = $f->link()->bulky($symbol, '2020 - Wildkatze', $uri->withParameter('c', 5));
130  $symbol = $f->symbol()->icon()->standard('rcat', 'Glühwürmchen');
131  $link022 = $f->link()->bulky($symbol, '2019 - Glühwürmchen', $uri->withParameter('c', 6));
132 
133  $link10 = $f->link()->bulky($symbol, 'Frühbarock', $uri->withParameter('c', 7));
134  $link11 = $f->link()->bulky($symbol, 'Hochbarock', $uri->withParameter('c', 8));
135  $link12 = $f->link()->bulky($symbol, 'Spätbarock', $uri->withParameter('c', 9));
136 
137  $symbol = $f->symbol()->icon()->standard('cat', 'Deutschland');
138  $slate01 = $f->mainControls()->slate()->combined('Deutschland', $symbol)
139  ->withAdditionalEntry($link010)
140  ->withAdditionalEntry($link011)
141  ->withAdditionalEntry($link012);
142 
143  $contents = <<<EOT
144  <p>Leider gibt es im Takatuka Land kein Tier des Jahres.
145  <br />
146  <b>Aber:</b> Slates in der Main Bar können andere Inhalte als Links enthalten. </p>
147  <p>Zum Beispiel könnten sich hier Inhalte wie der Magazinbaum oder der
148  Mailbaum, komplexe Elemente wie das Notifikation Center, die Hilfe oder
149  auch dieser Text befinden.</p>
150  <p> Die Main Bar ist ganz bewusst nicht nur als 'Menü' gedacht sondern dient auch dazu,
151  komplexe Bedienelemente darzustellen.</p>
152 EOT;
153 
154  $symbol = $f->symbol()->icon()->standard('cat', 'Takatuka Land');
155  $slate02 = $f->mainControls()->slate()->legacy('Takatuka Land', $symbol, $f->legacy()->content($contents));
156 
157  $symbol = $f->symbol()->icon()->standard('cat', 'Schweiz');
158  $slate03 = $f->mainControls()->slate()->combined('Schweiz', $symbol)
159  ->withAdditionalEntry($link020)
160  ->withAdditionalEntry($link021)
161  ->withAdditionalEntry($link022);
162 
163  $symbol = $f->symbol()->icon()->custom('./components/ILIAS/UI/src/examples/Layout/Page/Standard/layers.svg', '')->withSize('small');
164  $slate0 = $f->mainControls()->slate()->combined('Tier des Jahres', $symbol)
165  ->withAdditionalEntry($slate01)
166  ->withAdditionalEntry($slate02)
167  ->withAdditionalEntry($slate03);
168 
169  $slate1 = $f->mainControls()->slate()->combined('Barock', $symbol)
170  ->withAdditionalEntry($link10)
171  ->withAdditionalEntry($link11)
172  ->withAdditionalEntry($link12);
173 
174 
175  if (!$condensed) {
176  $mainbar = $f->mainControls()->mainBar()
177  ->withAdditionalEntry('slate0', $slate0)
178  ->withAdditionalEntry('slate1', $slate1);
179 
180  $tools_btn = $f->button()->bulky(
181  $f->symbol()->icon()->custom('./components/ILIAS/UI/src/examples/Layout/Page/Standard/grid.svg', ''),
182  'Tools',
183  '#'
184  );
185  $mainbar = $mainbar->withToolsButton($tools_btn);
186 
187  $symbol = $f->symbol()->icon()->custom('./components/ILIAS/UI/src/examples/Layout/Page/Standard/question.svg', '')->withSize('small');
188  $slate = $f->mainControls()->slate()->legacy('Help', $symbol, $f->legacy()->content('<h2>tool 1</h2><p>Some Text for Tool 1 entry</p>'));
189  $tools = ['tool1' => $slate];
190  foreach ($tools as $id => $entry) {
191  $mainbar = $mainbar->withAdditionalToolEntry($id, $entry);
192  }
193 
194  return $mainbar;
195  }
196 
197  $slate_base = $f->mainControls()->slate()->combined('Menu', $symbol)
198  ->withAdditionalEntry($slate0)
199  ->withAdditionalEntry($slate1);
200  return $f->mainControls()->mainBar()
201  ->withAdditionalEntry('slate0', $slate_base);
202 }
203 
204 function getUIContent(\ILIAS\UI\Factory $f, RequestInterface $request): array
205 {
206  $params = $request->getQueryParams();
207  $cidx = -1;
208  if (array_key_exists('c', $params)) {
209  $cidx = $params['c'];
210  }
211 
212 
213  switch ($cidx) {
214  case 1:
215  $t = 'Tier des Jahres: Fischotter3';
216  $c = [
217  $f->legacy()->content('<h1>Fischotter</h1><p>Der Fischotter (Lutra lutra) ist ein an das Wasserleben angepasster Marder, der zu den besten Schwimmern unter den Landraubtieren zählt.</p>')
218  ,$f->link()->standard("Quelle: Wikipedia", "https://de.wikipedia.org/wiki/Tier_des_Jahres")
219  ];
220  break;
221  case 2:
222  $t = 'Tier des Jahres: Maulwurf';
223  $c = [
224  $f->legacy()->content('<h1>Maulwurf</h1><p>Der Europäische Maulwurf ist ein mittelgroßer Vertreter der Eurasischen Maulwürfe (Talpa). Er erreicht eine Kopf-Rumpf-Länge von 11,3 bis 15,9 cm, der Schwanz wird 2,5 bis 4,0 cm lang.</p>')
225  ,$f->link()->standard("Quelle: Wikipedia", "https://de.wikipedia.org/wiki/Tier_des_Jahres")
226  ];
227  break;
228  case 3:
229  $t = 'Tier des Jahres: Reh';
230  $c = [
231  $f->legacy()->content('<h1>Reh</h1><p>Das Reh springt hoch,<br> das Reh springt weit.<br> Warum auch nicht? <br>Es hat ja Zeit.</p>')
232  ];
233  break;
234  case 4:
235  $t = 'Tier des Jahres: Bachflohkrebs';
236  $c = [
237  $f->legacy()->content('<h1>Bachflohkrebs</h1><p>Der Bachflohkrebs (Gammarus fossarum) ist ein Flohkrebs aus der Familie der Gammaridae und ein typischer Bachbewohner. <br> Er reagiert als sogenanntes Zeigertier äußerst empfindlich auf Gewässerverschmutzungen.</p>')
238  ,$f->link()->standard("Quelle: Wikipedia", "https://de.wikipedia.org/wiki/Tier_des_Jahres")
239  ];
240  break;
241  case 5:
242  $t = 'Tier des Jahres: Wildkatze';
243  $c = [
244  $f->legacy()->content('<h1>Wildkatze</h1><p>Die Europäische Wildkatze oder Waldkatze (Felis silvestris) ist eine Kleinkatze, die in Europa von der Iberischen Halbinsel bis Osteuropa (westliche Ukraine), in Italien, auf dem Balkan, in Anatolien, im Kaukasus und in den schottischen Highlands vorkommt.</p>')
245  ,$f->link()->standard("Quelle: Wikipedia", "https://de.wikipedia.org/wiki/Tier_des_Jahres")
246  ];
247  break;
248  case 6:
249  $t = 'Frühbarock';
250  $c = [
251  $f->legacy()->content('<h1>Glühwürmchen</h1><p>Der Große Leuchtkäfer bzw. das Große Glühwürmchen oder Große Johannisglühwürmchen (Lampyris noctiluca) ist ein Käfer aus der Familie Leuchtkäfer (Lampyridae).</p>')
252  ,$f->link()->standard("Quelle: Wikipedia", "https://de.wikipedia.org/wiki/Tier_des_Jahres")
253  ];
254  break;
255 
256  case 7:
257  $t = 'Frühbarock';
258  $c = [
259  $f->legacy()->content('<h1>Frühbarock</h1><p><b>etwa 1600 bis 1650</b><br>unter italienischer Dominanz, mit etwa Monteverdi, Gabrieli.</p>')
260  ,$f->link()->standard("Quelle: Wikipedia", "https://de.wikipedia.org/wiki/Tier_des_Jahres")
261  ];
262  break;
263  case 8:
264  $t = 'Hochbarock';
265  $c = [$f->legacy()->content('<h1>Hochbarock</h1><p><b>etwa 1650 bis 1710</b><br>Das französische Musikleben des späten 17. Jahrhunderts wurde maßgeblich von Jean-Baptiste Lully (1632–1687) am Hofe Ludwigs XIV. geprägt.</p>')];
266  break;
267  case 9:
268  $t = 'Spätbarock';
269  $c = [$f->legacy()->content('<h1>Spätbarock</h1><p><b>etwa 1710 bis 1750</b><br>Entwickelte sich im Hochbarock die Musik noch unabhängig in verschiedenen Regionen Europas, so zeichnete sich der Spätbarock durch eine grenzübergreifende Verbreitung der Stile aus. Im deutschen Raum trieb Georg Philipp Telemann (1681–1767) diese Entwicklung voran und wurde schließlich zur „Ikone“ unter den Tonkünstlern.</p>')];
270  break;
271 
272  default:
273  $t = 'Mainbar-Demo';
274  $c = [$f->legacy()->content('Dies ist ein reduziertes Beispiel für die Mainbar des UI-Frameworks.')];
275  }
276 
277  return[$t, $c];
278 }
279 
280 
281 global $DIC;
282 $request_wrapper = $DIC->http()->wrapper()->query();
283 $refinery = $DIC->refinery();
284 
285 if ($request_wrapper->has('ui_mainbar')
286 ) {
288  switch ($request_wrapper->retrieve('ui_mainbar', $refinery->kindlyTo()->int())) {
289  case 1:
291  break;
292  case 2:
294  break;
295  }
296 
297  exit();
298 }
299 
300 
301 function getURI(): \ILIAS\Data\URI
302 {
303  $df = new Factory();
304  return $df->uri(
305  $_SERVER['REQUEST_SCHEME'] . '://'
306  . $_SERVER['SERVER_NAME'] . ':'
307  . $_SERVER['SERVER_PORT']
308  . $_SERVER['SCRIPT_NAME'] . '?'
309  . $_SERVER['QUERY_STRING']
310  );
311 }
312 
313 function getRenderedPage(Container $dic, MainBar $mainbar): string
314 {
315  $f = $dic->ui()->factory();
316  list($page_title, $content) = getUIContent($f, $dic->http()->request());
317 
318  $logo = $f->image()->responsive("assets/images/logo/HeaderIcon.svg", "ILIAS");
319  $responsive_logo = $f->image()->responsive("assets/images/logo/HeaderIconResponsive.svg", "ILIAS");
320 
321  $breadcrumbs = null;
322  $metabar = null;
323  $footer = null;
324  $short_title = 'DEMO';
325  $view_title = 'UI Mainbar';
326  $tc = $dic->ui()->factory()->toast()->container();
327 
328  $page = $f->layout()->page()->standard(
329  $content,
330  $metabar,
331  $mainbar,
332  $breadcrumbs,
333  $logo,
334  $responsive_logo,
335  "./assets/images/logo/favicon.ico",
336  $tc,
337  $footer,
338  $page_title,
339  $short_title,
340  $view_title
341  )->withUIDemo(true);
342 
343  return $dic->ui()->renderer()->render($page);
344 }
345 
347 {
348  return getRenderedPage($dic, getUIMainbar($dic->ui()->factory(), getURI()));
349 }
350 
352 {
353  return getRenderedPage($dic, getUIMainbar($dic->ui()->factory(), getURI(), true));
354 }
$renderer
This describes the MainBar.
Definition: MainBar.php:33
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31
getUIMainbar(\ILIAS\UI\Factory $f, \ILIAS\Data\URI $uri, bool $condensed=false)
Definition: ui_mainbar.php:117
getUIContent(\ILIAS\UI\Factory $f, RequestInterface $request)
Definition: ui_mainbar.php:204
Interface Observer Contains several chained tasks and infos about them.
$c
Definition: deliver.php:25
getRenderedPage(Container $dic, MainBar $mainbar)
Definition: ui_mainbar.php:313
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:35
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static initILIAS()
ilias initialisation
if($request_wrapper->has('ui_mainbar')) getURI()
Definition: ui_mainbar.php:301
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$_SERVER['HTTP_HOST']
Definition: raiseError.php:26
ui_mainbar()
description: > Example for rendering a UI mainbar.
Definition: ui_mainbar.php:100
Builds data types.
Definition: Factory.php:35
withAdditionalEntry(string $id, $entry)
Append an entry.
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
$dic
Definition: result.php:31
ui()
Get the interface to get services from UI framework.
Definition: Container.php:127
exit
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...