ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ui_mainbar.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24use Psr\Http\Message\RequestInterface;
27
100function 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
117function 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>
152EOT;
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
204function 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
281global $DIC;
282$request_wrapper = $DIC->http()->wrapper()->query();
283$refinery = $DIC->refinery();
284
285if ($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
301function 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
313function 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}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
$renderer
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
Builds data types.
Definition: Factory.php:36
The scope of this class is split ilias-conform URI's into components.
Definition: URI.php:35
Definition: UI.php:24
static initILIAS()
ilias initialisation
$c
Definition: deliver.php:25
exit
This describes the MainBar.
Definition: MainBar.php:34
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31
$dic
Definition: ltiresult.php:33
getRenderedPage(Container $dic, MainBar $mainbar)
Definition: ui_mainbar.php:313
getUIContent(\ILIAS\UI\Factory $f, RequestInterface $request)
Definition: ui_mainbar.php:204
if( $request_wrapper->has( 'ui_mainbar')) getURI()
Definition: ui_mainbar.php:301
getUIMainbar(\ILIAS\UI\Factory $f, \ILIAS\Data\URI $uri, bool $condensed=false)
Definition: ui_mainbar.php:117
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
$_SERVER['HTTP_HOST']
Definition: raiseError.php:26