ILIAS  release_8 Revision v8.24
class.ilPresentationListTableGUI.php
Go to the documentation of this file.
1<?php
2
26{
28 protected array $adv_fields;
29 protected \ILIAS\Glossary\Presentation\PresentationGUIRequest $request;
30 protected int $tax_id;
31 protected int $tax_node;
33 protected array $adv_cols_order = array();
34 protected bool $offline;
36 protected array $filter = [];
37
38 public function __construct(
39 object $a_parent_obj,
40 string $a_parent_cmd,
41 ilObjGlossary $a_glossary,
42 bool $a_offline,
43 int $a_tax_node,
44 int $a_tax_id = 0
45 ) {
46 global $DIC;
47
48 $this->lng = $DIC->language();
49 $this->ctrl = $DIC->ctrl();
50
51 $this->glossary = $a_glossary;
52 $this->offline = $a_offline;
53 $this->tax_node = $a_tax_node;
54 $this->tax_id = $a_tax_id;
55 $this->setId("glopr" . $this->glossary->getId());
56 $this->request = $DIC->glossary()
57 ->internal()
58 ->gui()
59 ->presentation()
60 ->request();
61
62 $gdf = new ilGlossaryDefPage();
63 $this->page_config = $gdf->getPageConfig();
64
65 $adv_ad = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
66 $this->adv_fields = $adv_ad->getAllFields();
67
68
69 parent::__construct($a_parent_obj, $a_parent_cmd);
70 //$this->setTitle($this->lng->txt("cont_terms"));
71
72 if ($this->glossary->getPresentationMode() == "full_def") {
73 $this->addColumn($this->lng->txt("cont_terms"));
74 } else {
75 $adv_ap = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
76 $this->adv_cols_order = $adv_ap->getColumnOrder();
77 foreach ($this->adv_cols_order as $c) {
78 if ($c["id"] == 0) {
79 $this->addColumn($this->lng->txt("cont_term"), "term");
80 } else {
81 $this->addColumn($c["text"], "md_" . $c["id"]);
82 }
83 }
84
85
86 $this->addColumn($this->lng->txt("cont_definitions"));
87 if ($this->glossary->isVirtual()) {
88 $this->addColumn($this->lng->txt("obj_glo"));
89 }
90 }
91
92 $this->setEnableHeader(true);
93 if (!$this->offline) {
94 $this->setFormAction($this->ctrl->getFormAction($this->parent_obj));
95 } else {
96 $this->disable("footer");
97 }
98 $this->setRowTemplate("tpl.term_tbl_pres_row.html", "Modules/Glossary");
99 $this->setEnableTitle(true);
100
101 if (!$this->offline) {
102 $this->initFilter();
103 $this->setFilterCommand("applyFilter");
104
105 $this->setShowRowsSelector(true);
106 }
107
108 // advanced metadata
109 $this->record_gui = new ilAdvancedMDRecordGUI(
111 'glo',
112 $this->glossary->getId(),
113 'term'
114 );
115 $this->record_gui->setTableGUI($this);
116 $this->record_gui->parse();
117 //$this->setDefaultOrderField("login");
118 //$this->setDefaultOrderDirection("asc");
119 $this->setData($this->glossary->getTermList(
120 $this->filter["term"] ?? "",
121 $this->request->getLetter(),
122 $this->filter["definition"] ?? "",
123 $this->tax_node,
124 false,
125 true,
126 $this->record_gui->getFilterElements(),
127 false,
128 true
129 ));
130 if ($this->offline) {
131 $this->setLimit(count($this->getData()));
132 $this->resetOffset();
133 }
134 // $this->setData(array());
135 }
136
138 {
139 return $this->record_gui;
140 }
141
142 public function initFilter(): void
143 {
144 // term
145 $ti = new ilTextInputGUI($this->lng->txt("cont_term"), "term");
146 $ti->setMaxLength(64);
147 $ti->setSize(20);
148 $ti->setSubmitFormOnEnter(true);
149 $this->addFilterItem($ti);
150 $ti->readFromSession();
151 $this->filter["term"] = $ti->getValue();
152
153 // definition
154 if ($this->glossary->supportsLongTextQuery()) {
155 $ti = new ilTextInputGUI($this->lng->txt("cont_definition"), "defintion");
156 $ti->setMaxLength(64);
157 $ti->setSize(20);
158 $ti->setSubmitFormOnEnter(true);
159 $this->addFilterItem($ti);
160 $ti->readFromSession();
161 $this->filter["definition"] = $ti->getValue();
162 }
163 }
164
165 public function numericOrdering(string $a_field): bool
166 {
167 if (strpos($a_field, "md_") === 0) {
168 $md_id = (int) substr($a_field, 3);
169 if ($this->adv_fields[$md_id]["type"] == ilAdvancedMDFieldDefinition::TYPE_DATE) {
170 return true;
171 }
172 }
173 return false;
174 }
175
176 protected function fillRow(array $a_set): void
177 {
178 $defs = ilGlossaryDefinition::getDefinitionList($a_set["id"]);
179 $this->ctrl->setParameter($this->parent_obj, "term_id", $a_set["id"]);
180
181 if ($this->glossary->getPresentationMode() == "full_def") {
182 $this->tpl->setCurrentBlock("fd_td");
183 $this->tpl->setVariable(
184 "FULL_DEF",
185 $this->parent_obj->listDefinitions(
186 $this->request->getRefId(),
187 $a_set["id"],
188 true
189 )
190 );
191 $this->tpl->parseCurrentBlock();
192 } else {
193 if (count($defs)) {
194 for ($j = 0, $jMax = count($defs); $j < $jMax; $j++) {
195 $def = $defs[$j];
196 if (count($defs) > 1) {
197 if (!$this->offline) {
198 $this->ctrl->setParameter($this->parent_obj, "term_id", $a_set["id"]);
199 $def_href = $this->ctrl->getLinkTarget($this->parent_obj, "listDefinitions");
200 $this->ctrl->clearParameters($this->parent_obj);
201 } else {
202 $def_href = "term_" . $a_set["id"] . ".html";
203 }
204 $this->tpl->parseCurrentBlock();
205
206 $this->tpl->setCurrentBlock("definition");
207 $this->tpl->setVariable("DEF_TEXT", $this->lng->txt("cont_definition") . " " . ($j + 1));
208 $this->tpl->setVariable("HREF_DEF", $def_href . "#ilPageTocDef" . ($j + 1));
209 $this->tpl->parseCurrentBlock();
210 }
211
212 // check dirty short texts
213 $this->tpl->setCurrentBlock("definition");
214 if ($def["short_text_dirty"]) {
215 // #18022
216 $def_obj = new ilGlossaryDefinition($def["id"]);
217 $def_obj->updateShortText();
218 $short_str = $def_obj->getShortText();
219 } else {
220 $short_str = $def["short_text"];
221 }
222
223 if (!$this->page_config->getPreventHTMLUnmasking()) {
224 $short_str = str_replace(["&lt;", "&gt;"], ["<", ">"], $short_str);
225 }
226
227 // replace tex
228 // if a tex end tag is missing a tex end tag
229 $ltexs = strrpos($short_str, "[tex]");
230 $ltexe = strrpos($short_str, "[/tex]");
231 if ($ltexs > $ltexe) {
232 $page = new ilGlossaryDefPage($def["id"]);
233 $page->buildDom();
234 $short_str = $page->getFirstParagraphText();
235 $short_str = strip_tags($short_str, "<br>");
236 $ltexe = strpos($short_str, "[/tex]", $ltexs);
237 $short_str = ilStr::shortenTextExtended($short_str, $ltexe + 6, true);
238 }
239
240 if (!$this->offline) {
241 $short_str = ilMathJax::getInstance()->insertLatexImages($short_str);
242 } else {
243 $short_str = ilMathJax::getInstance()->insertLatexImages(
244 $short_str,
245 '[tex]',
246 '[/tex]'
247 );
248 }
249
250 $short_str = ilPCParagraph::xml2output($short_str, false, true, false);
251
252 $this->tpl->setVariable("DEF_SHORT", $short_str);
253 $this->tpl->parseCurrentBlock();
254
255 $this->tpl->setCurrentBlock("definition_row");
256 $this->tpl->parseCurrentBlock();
257 }
258 } else {
259 $this->tpl->touchBlock("def_td");
260 }
261
262 // display additional column 'glossary' for meta glossaries
263 if ($this->glossary->isVirtual()) {
264 $this->tpl->setCurrentBlock("glossary_row");
265 $glo_title = ilObject::_lookupTitle($a_set["glo_id"]);
266 $this->tpl->setVariable("GLO_TITLE", $glo_title);
267 $this->tpl->parseCurrentBlock();
268 }
269 }
270
271 $this->ctrl->clearParameters($this->parent_obj);
272
273 // advanced metadata
274 foreach ($this->adv_cols_order as $c) {
275 if ($c["id"] == 0) {
276 $this->tpl->setCurrentBlock("link_start");
277 if (!$this->offline) {
278 $this->ctrl->setParameter($this->parent_obj, "term_id", $a_set["id"]);
279 $this->tpl->setVariable(
280 "LINK_VIEW_TERM",
281 $this->ctrl->getLinkTarget($this->parent_obj, "listDefinitions")
282 );
283
284 $this->ctrl->clearParameters($this->parent_obj);
285 } else {
286 $this->tpl->setVariable("LINK_VIEW_TERM", "term_" . $a_set["id"] . ".html");
287 }
288 $this->tpl->parseCurrentBlock();
289
290 $this->tpl->setCurrentBlock("link_end");
291 $this->tpl->setVariable("ANCHOR_TERM", "term_" . $a_set["id"]);
292 $this->tpl->parseCurrentBlock();
293
294 $this->tpl->setCurrentBlock("td");
295 $this->tpl->setVariable("TEXT", $a_set["term"]);
296 } else {
297 $id = $c["id"];
298
299 $val = " ";
300 if (isset($a_set["md_" . $id . "_presentation"])) {
301 $pb = $a_set["md_" . $id . "_presentation"]->getList();
302 if ($pb) {
303 $val = $pb;
304 }
305 }
306
307 $this->tpl->setCurrentBlock("td");
308 $this->tpl->setVariable("TEXT", $val);
309 }
310 $this->tpl->parseCurrentBlock();
311 }
312 }
313}
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getDefinitionList(int $a_term_id)
static getInstance()
Singleton: get instance for use in ILIAS requests with a config loaded from the settings.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupTitle(int $obj_id)
static xml2output(string $a_text, bool $a_wysiwyg=false, bool $a_replace_lists=true, bool $unmask=true)
Converts xml from DB to output in edit textarea.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
numericOrdering(string $a_field)
Should this field be sorted numeric?
__construct(object $a_parent_obj, string $a_parent_cmd, ilObjGlossary $a_glossary, bool $a_offline, int $a_tax_node, int $a_tax_id=0)
ILIAS Glossary Presentation PresentationGUIRequest $request
fillRow(array $a_set)
Standard Version of Fill Row.
static shortenTextExtended(string $a_str, int $a_len, bool $a_dots=false, bool $a_next_blank=false, bool $a_keep_extension=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setShowRowsSelector(bool $a_value)
Toggle rows-per-page selector.
setFilterCommand(string $a_val, string $a_caption="")
setLimit(int $a_limit=0, int $a_default_limit=0)
set max.
addFilterItem(ilTableFilterItem $a_input_item, bool $a_optional=false)
setEnableTitle(bool $a_enabletitle)
setFormAction(string $a_form_action, bool $a_multipart=false)
resetOffset(bool $a_in_determination=false)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
setEnableHeader(bool $a_enableheader)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
setId(string $a_val)
setData(array $a_data)
Set table data.
disable(string $a_module_name)
This class represents a text property in a property form.
$c
Definition: cli.php:38
global $DIC
Definition: feed.php:28
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc