ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilKSDocumentationEntryGUI.php
Go to the documentation of this file.
1<?php
2include_once("./Services/UIComponent/Panel/classes/class.ilPanelGUI.php");
3include_once ("Services/Form/classes/class.ilPropertyFormGUI.php");
4include_once ("libs/composer/vendor/geshi/geshi/src/geshi.php");
5
6
8
14class ilKSDocumentationEntryGUI
15{
19 protected $entry = null;
20
24 protected $entries = null;
25
29 protected $ctrl;
30
34 protected $parent;
35
39 protected $f = null;
40
44 protected $r = null;
45
52 public function __construct(ilSystemStyleDocumentationGUI $parent, Entry\ComponentEntry $entry, Entry\ComponentEntries $entries) {
53 global $ilCtrl,$DIC;
54
55 $this->f = $DIC->ui()->factory();
56 $this->r = $DIC->ui()->renderer();
57
58 $this->setEntry($entry);
59 $this->setEntries($entries);
60 $this->setParent($parent);
61 $this->ctrl = $ilCtrl;
62
63 }
64
68 public function renderEntry(){
69
70 $sub_panels = array();
71
72 $feature_wiki_links = array();
73 foreach($this->entry->getFeatureWikiReferences()as $href){
74 $feature_wiki_links[] = $href;
75 }
76
77 $sub_panels[] = $this->f->panel()->sub("Description",
78 array(
79 $this->f->listing()->descriptive(
80 array(
81 "Purpose" => $this->entry->getDescription()->getProperty("purpose"),
82 "Composition" => $this->entry->getDescription()->getProperty("composition"),
83 "Effect" => $this->entry->getDescription()->getProperty("effect"),
84 "Rivals" => $this->f->listing()->ordered(
85 $this->entry->getDescription()->getProperty("rivals")
86 )
87 )
88 ),
89 $this->f->listing()->descriptive(
90 array(
91 "Background" => $this->entry->getBackground(),
92 "Feature Wiki References" => $this->f->listing()->ordered($feature_wiki_links)
93 )
94 )
95 )
96 );
97
98 $rule_listings = array();
99 foreach($this->entry->getRulesAsArray() as $categoery => $category_rules){
100 $rule_listings[ucfirst($categoery)] = $this->f->listing()->ordered($category_rules);
101 }
102
103 $sub_panels[] = $this->f->panel()->sub("Rules",
104 $this->f->listing()->descriptive($rule_listings)
105 );
106
107 if($this->entry->getExamples()){
108 $nr = 1;
109 foreach($this->entry->getExamples() as $name => $path){
110 include_once($path);
111 $title = "Example ".$nr.": ".ucfirst(str_replace("_"," ",$name));
112 $nr++;
113 $example = "<div class='well'>".$name()."</div>"; //Executes function loaded in file indicated by 'path'
114 $content_part_1 = $this->f->legacy($example);
115 $code = str_replace("<?php\n","",file_get_contents ($path));
116 $geshi = new GeSHi($code, "php");
117 $content_part_2 = $this->f->legacy($geshi->parse_code());
118 $content = array($content_part_1,$content_part_2);
119 $sub_panels[] = $this->f->panel()->sub($title, $content);
120 }
121 }
122
123 $sub_panels[] = $this->f->panel()->sub("Relations",
124 $this->f->listing()->descriptive(
125 array(
126 "Parents" => $this->f->listing()->ordered(
127 $this->entries->getParentsOfEntryTitles($this->entry->getId())
128 ),
129 "Descendants" => $this->f->listing()->unordered(
130 $this->entries->getDescendantsOfEntryTitles($this->entry->getId())
131 )
132 )
133 )
134 );
135
136 $report = $this->f->panel()->report($this->entry->getTitle(),$sub_panels);
137
138 return $this->r->render($report);
139 }
140
141
145 public function getEntry()
146 {
147 return $this->entry;
148 }
149
153 public function setEntry(Entry\ComponentEntry $entry)
154 {
155 $this->entry = $entry;
156 }
157
161 public function getEntries()
162 {
163 return $this->entries;
164 }
165
169 public function setEntries(Entry\ComponentEntries $entries)
170 {
171 $this->entries = $entries;
172 }
173
177 public function getParent()
178 {
179 return $this->parent;
180 }
181
185 public function setParent($parent)
186 {
187 $this->parent = $parent;
188 }
189}
$path
Definition: aliased.php:25
if(strncmp( $real_path, SOURCE_ROOT, $base_path_len)) if(!file_exists($path)) $geshi
Definition: aliased.php:40
An exception for terminatinating execution or to throw for unit testing.
Definition: geshi.php:259
$r
Definition: example_031.php:79
$code
Definition: example_050.php:99
global $ilCtrl
Definition: ilias.php:18
global $DIC