19 declare(strict_types=1);
30 protected Entry\ComponentEntry
$entry;
39 ?
string $current_opened_node_id
42 $this->
ctrl = $ilCtrl;
44 if ($current_opened_node_id) {
45 $this->
ctrl->setParameterByClass(
'ilsystemstyledocumentationgui',
'node_id', $current_opened_node_id);
46 $this->entry = $entries->getEntryById($current_opened_node_id);
48 $this->entry = $entries->getRootEntry();
57 $feature_wiki_links = [];
58 foreach ($this->entry->getFeatureWikiReferences() as $href) {
59 $feature_wiki_links[] = $href;
62 $sub_panels[] = $this->f->panel()->sub(
65 $this->f->listing()->descriptive(
67 'Purpose' => $this->entry->getDescription()->getProperty(
'purpose'),
68 'Composition' => $this->entry->getDescription()->getProperty(
'composition'),
69 'Effect' => $this->entry->getDescription()->getProperty(
'effect'),
73 $this->f->listing()->descriptive(
75 'Background' => $this->entry->getBackground(),
76 'Context' => $this->f->listing()->ordered($this->entry->getContext()),
77 'Feature Wiki References' => $this->f->listing()->ordered($feature_wiki_links)
83 if (
sizeof($this->entry->getDescription()->getProperty(
'rivals'))) {
84 $sub_panels[] = $this->f->panel()->sub(
86 $this->f->listing()->descriptive(
87 $this->entry->getDescription()->getProperty(
'rivals')
92 if ($this->entry->getRules() && $this->entry->getRules()->hasRules()) {
94 foreach ($this->entry->getRulesAsArray() as $categoery => $category_rules) {
95 $rule_listings[ucfirst($categoery)] = $this->f->listing()->ordered($category_rules);
98 $sub_panels[] = $this->f->panel()->sub(
100 $this->f->listing()->descriptive($rule_listings)
104 $examples = $this->entry->getExamples();
105 if (count($examples) > 0) {
107 foreach ($this->entry->getExamples() as
$name =>
$path) {
109 $title =
'Example ' . $nr .
': ' . ucfirst(str_replace(
'_',
' ', $name));
111 $examples_function_name = $this->entry->getExamplesNamespace() .
'\\' .
$name;
113 $example =
"<div class='well'>" . $examples_function_name() .
'</div>';
114 }
catch (\
ILIAS\
UI\NotImplementedException
$e) {
115 $example =
"<div class='well'>This component is not yet fully implemented.</div>";
117 $content_part_1 = $this->f->legacy($example);
118 $code = str_replace(
'<?php\n',
'', file_get_contents(
$path));
119 $geshi =
new GeSHi($code,
'php');
121 $code_html =
"<div class='code-container'>" . $geshi->parse_code() .
'</div>';
122 $content_part_2 = $this->f->legacy($code_html);
123 $content = [$content_part_1, $content_part_2];
124 $sub_panels[] = $this->f->panel()->sub($title, $content);
127 $sub_panels[] = $this->f->panel()->sub(
'Relations', [
128 $this->f->listing()->descriptive(
130 'Parents' => $this->f->listing()->ordered(
131 $this->entries->getParentsOfEntryTitles($this->entry->getId())
133 'Descendants' => $this->f->listing()->unordered(
134 $this->entries->getDescendantsOfEntryTitles($this->entry->getId())
140 return $this->f->panel()
141 ->report($this->entry->getTitle(), $sub_panels);
Entry ComponentEntry $entry
__construct(ILIAS\UI\Factory $factory, ilCtrl $ilCtrl, Entries $entries, ?string $current_opened_node_id)
Class ChatMainBarProvider .
Container storing a list of UI Component Entries, can act as Iterator, countable and is serializable...
Entry ComponentEntries $entries
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This describes how a Report could be modified during construction of UI.
Renders the Overview of one Example in the Administration.
createUIComponentOfEntry()