19 declare(strict_types=1);
21 require_once(__DIR__ .
"/../../../../libs/composer/vendor/autoload.php");
22 require_once(__DIR__ .
"/../../Base.php");
38 return "Component Dummy";
50 public function panelSecondary(): I\Component\Panel\Secondary\Factory
52 return new I\Component\Panel\Secondary\Factory();
54 public function dropdown(): I\Component\Dropdown\Factory
56 return new I\Component\Dropdown\Factory();
58 public function viewControl(): I\Component\ViewControl\Factory
62 public function button(): I\Component\Button\Factory
64 return new I\Component\Button\Factory();
66 public function symbol(): C\Symbol\Factory
68 return new I\Component\Symbol\Factory(
79 return new I\Component\Panel\Factory(
80 $this->createMock(
C\Panel\Listing\Factory::class)
86 $f = $this->getPanelFactory();
88 $this->assertInstanceOf(
"ILIAS\\UI\\Component\\Panel\\Factory",
$f);
89 $this->assertInstanceOf(
90 "ILIAS\\UI\\Component\\Panel\\Standard",
93 $this->assertInstanceOf(
94 "ILIAS\\UI\\Component\\Panel\\Sub",
97 $this->assertInstanceOf(
98 "ILIAS\\UI\\Component\\Panel\\Report",
105 $f = $this->getPanelFactory();
108 $this->assertEquals(
"Title", $p->getTitle());
113 $f = $this->getPanelFactory();
115 $p =
$f->standard(
"Title", array(
$c));
117 $this->assertEquals($p->getContent(), array(
$c));
122 $fp = $this->getPanelFactory();
126 $actions =
new I\Component\Dropdown\Standard(array(
131 $p = $p->withActions($actions);
133 $this->assertEquals($p->getActions(), $actions);
138 $fp = $this->getPanelFactory();
142 $actions =
new I\Component\Dropdown\Standard(array(
147 $p = $p->withActions($actions);
149 $this->assertEquals($p->getActions(), $actions);
154 $fp = $this->getPanelFactory();
158 $card =
new I\Component\Card\Card(
"Card Title");
160 $p = $p->withFurtherInformation($card);
162 $this->assertEquals($p->getFurtherInformation(), $card);
167 $fp = $this->getPanelFactory();
171 $legacy =
new I\Component\Legacy\Legacy(
"Legacy content",
new SignalGenerator());
172 $secondary =
new I\Component\Panel\Secondary\Legacy(
"Legacy panel title", $legacy);
174 $p = $p->withFurtherInformation($secondary);
176 $this->assertEquals($p->getFurtherInformation(), $secondary);
181 $f = $this->getPanelFactory();
183 $p =
$f->report(
"Title", array($sub));
185 $this->assertEquals(
"Title", $p->getTitle());
190 $f = $this->getPanelFactory();
192 $p =
$f->report(
"Title", [$sub]);
194 $this->assertEquals($p->getContent(), array($sub));
198 $f = $this->getPanelFactory();
199 $r = $this->getDefaultRenderer();
201 $actions =
new I\Component\Dropdown\Standard(array(
206 $p =
$f->standard(
"Title", array())->withActions($actions);
208 $html =
$r->render($p);
210 $expected_html = <<<EOT
211 <div
class=
"panel panel-primary panel-flex">
212 <div
class=
"panel-heading ilHeader">
213 <div
class=
"panel-title"><h2>
Title</h2></div>
214 <div
class=
"panel-controls">
215 <div
class=
"dropdown"><
button class=
"btn btn-default dropdown-toggle" type=
"button" data-toggle=
"dropdown" id=
"id_3" aria-label=
"actions" aria-haspopup=
"true" aria-expanded=
"false" aria-controls=
"id_3_menu"><span
class=
"caret"></span></
button>
216 <ul
id=
"id_3_menu" class=
"dropdown-menu">
217 <li><
button class=
"btn btn-link" data-action=
"https://www.ilias.de" id=
"id_1">
ILIAS</button></li>
218 <li><button
class=
"btn btn-link" data-action=
"https://www.github.com" id=
"id_2">GitHub</button></li>
223 <div
class=
"panel-body"></div>
226 $this->assertHTMLEquals($expected_html, $html);
231 $fp = $this->getPanelFactory();
232 $r = $this->getDefaultRenderer();
234 $actions =
new I\Component\Dropdown\Standard(array(
239 $p = $fp->sub(
"Title", array())->withActions($actions);
240 $card =
new I\Component\Card\Card(
"Card Title");
242 $p = $p->withFurtherInformation($card);
243 $html = $this->brutallyTrimHTML(
$r->render($p));
245 $expected_html = <<<EOT
246 <div
class=
"panel panel-sub panel-flex">
247 <div
class=
"panel-heading ilBlockHeader">
249 <div
class=
"panel-controls">
250 <div
class=
"dropdown"><
button class=
"btn btn-default dropdown-toggle" type=
"button" data-toggle=
"dropdown" id=
"id_3" aria-label=
"actions" aria-haspopup=
"true" aria-expanded=
"false" aria-controls=
"id_3_menu"><span
class=
"caret"></span></
button>
251 <ul
id=
"id_3_menu" class=
"dropdown-menu">
252 <li><
button class=
"btn btn-link" data-action=
"https://www.ilias.de" id=
"id_1">
ILIAS</button></li>
253 <li><button
class=
"btn btn-link" data-action=
"https://www.github.com" id=
"id_2">GitHub</button></li>
258 <div
class=
"panel-body">
260 <div
class=
"col-sm-8"></div>
261 <div
class=
"col-sm-4">
262 <div
class=
"il-card thumbnail">
263 <div
class=
"card-no-highlight"></div>
264 <div
class=
"caption card-title">
Card Title</div>
272 $this->assertHTMLEquals($this->brutallyTrimHTML($expected_html), $html);
277 $fp = $this->getPanelFactory();
278 $r = $this->getDefaultRenderer();
280 $p = $fp->sub(
"Title", array());
281 $legacy =
new I\Component\Legacy\Legacy(
"Legacy content",
new SignalGenerator());
282 $secondary =
new I\Component\Panel\Secondary\Legacy(
"Legacy panel title", $legacy);
283 $p = $p->withFurtherInformation($secondary);
284 $html =
$r->render($p);
286 $expected_html = <<<EOT
287 <div
class=
"panel panel-sub panel-flex">
288 <div
class=
"panel-heading ilBlockHeader">
290 <div
class=
"panel-controls"></div>
292 <div
class=
"panel-body">
294 <div
class=
"col-sm-8"></div>
295 <div
class=
"col-sm-4">
296 <div
class=
"panel panel-secondary panel-flex">
297 <div
class=
"panel-heading ilHeader">
298 <div
class=
"panel-title"><h2>Legacy panel title</h2></div>
299 <div
class=
"panel-controls"></div>
301 <div
class=
"panel-body">Legacy content</div>
309 $this->assertHTMLEquals(
310 $this->brutallyTrimHTML($expected_html),
311 $this->brutallyTrimHTML($html)
317 $fp = $this->getPanelFactory();
318 $r = $this->getDefaultRenderer();
319 $sub = $fp->sub(
"Title", array());
320 $card =
new I\Component\Card\Card(
"Card Title");
321 $sub = $sub->withFurtherInformation($card);
322 $report = $fp->report(
"Title", $sub);
324 $html = $this->brutallyTrimHTML(
$r->render($report));
326 $expected_html = <<<EOT
327 <div
class=
"panel panel-primary il-panel-report panel-flex">
328 <div
class=
"panel-heading ilHeader">
331 <div
class=
"panel-body">
332 <div
class=
"panel panel-sub panel-flex">
333 <div
class=
"panel-heading ilBlockHeader">
335 <div
class=
"panel-controls"></div>
337 <div
class=
"panel-body"><div
class=
"row">
338 <div
class=
"col-sm-8"></div>
339 <div
class=
"col-sm-4">
340 <div
class=
"il-card thumbnail">
341 <div
class=
"card-no-highlight"></div>
342 <div
class=
"caption card-title">
Card Title</div>
352 $this->assertHTMLEquals($this->brutallyTrimHTML($expected_html), $html);
361 $sortation = $this->getUIFactory()->viewControl()->sortation($sort_options);
362 $f = $this->getPanelFactory();
363 $p =
$f->standard(
"Title", [])
364 ->withViewControls([$sortation])
367 $this->assertEquals($p->getViewControls(), [$sortation]);
376 $sortation = $this->getUIFactory()->viewControl()->sortation($sort_options);
378 $f = $this->getPanelFactory();
379 $r = $this->getDefaultRenderer();
382 $p =
$f->standard(
"Title", [])
383 ->withViewControls([$sortation]);
385 $html =
$r->render($p);
387 $expected_html = <<<EOT
388 <div
class=
"panel panel-primary panel-flex">
389 <div
class=
"panel-heading ilHeader">
390 <div
class=
"panel-title"><h2>
Title</h2></div>
391 <div
class=
"panel-viewcontrols l-bar__space-keeper">
392 <div
class=
"il-viewcontrol-sortation l-bar__element" id=
"id_1">
393 <div
class=
"dropdown"><
button class=
"btn btn-default dropdown-toggle" type=
"button" data-toggle=
"dropdown" id=
"id_4" aria-label=
"actions" aria-haspopup=
"true" aria-expanded=
"false" aria-controls=
"id_4_menu"><span
class=
"caret"></span></
button>
394 <ul
id=
"id_4_menu" class=
"dropdown-menu">
395 <li><
button class=
"btn btn-link" data-action=
"?sortation=a" id=
"id_2">
A</button></li>
396 <li><button
class=
"btn btn-link" data-action=
"?sortation=b" id=
"id_3">
B</button></li>
401 <div
class=
"panel-controls"></div>
403 <div
class=
"panel-body"></div>
407 $this->brutallyTrimHTML($expected_html),
408 $this->brutallyTrimHTML($html)
414 $pagination = $this->getUIFactory()->viewControl()->pagination()
415 ->withTargetURL(
'http://ilias.de',
'page')
416 ->withTotalEntries(10)
418 ->withCurrentPage(1);
420 $f = $this->getPanelFactory();
421 $r = $this->getDefaultRenderer();
424 $p =
$f->standard(
"Title", [])
425 ->withViewControls([$pagination]);
427 $html =
$r->render($p);
429 $expected_html = <<<EOT
430 <div
class=
"panel panel-primary panel-flex">
431 <div
class=
"panel-heading ilHeader">
432 <div
class=
"panel-title"><h2>
Title</h2></div>
433 <div
class=
"panel-viewcontrols l-bar__space-keeper">
434 <div
class=
"il-viewcontrol-pagination l-bar__element">
435 <span
class=
"btn btn-ctrl browse previous">
436 <a tabindex=
"0" class=
"glyph" href=
"http://ilias.de?page=0" aria-label=
"back">
437 <span
class=
"glyphicon glyphicon-chevron-left" aria-hidden=
"true"></span>
440 <
button class=
"btn btn-link" data-action=
"http://ilias.de?page=0" id=
"id_1">1</button>
441 <button
class=
"btn btn-link engaged" aria-pressed=
"true" data-action=
"http://ilias.de?page=1" id=
"id_2">2</button>
442 <button
class=
"btn btn-link" data-action=
"http://ilias.de?page=2" id=
"id_3">3</button>
443 <button
class=
"btn btn-link" data-action=
"http://ilias.de?page=3" id=
"id_4">4</button>
444 <button
class=
"btn btn-link" data-action=
"http://ilias.de?page=4" id=
"id_5">5</button>
445 <span
class=
"btn btn-ctrl browse next">
446 <a tabindex=
"0" class=
"glyph" href=
"http://ilias.de?page=2" aria-label=
"next">
447 <span
class=
"glyphicon glyphicon-chevron-right" aria-hidden=
"true"></span>
452 <div
class=
"panel-controls"></div>
454 <div
class=
"panel-body"></div>
458 $this->brutallyTrimHTML($expected_html),
459 $this->brutallyTrimHTML($html)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
button(string $caption, string $cmd)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Test on button implementation.
Class ChatMainBarProvider .
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
testStandardWithActions()
A component is the most general form of an entity in the UI.
Provides common functionality for UI tests.
testRenderWithPagination()
getCanonicalName()
Get the canonical name of the component.
testImplementsFactoryInterface()
testSubWithSecondaryPanel()
testRenderSubWithSecondaryPanel()
testRenderWithSortation()