ILIAS  release_8 Revision v8.24
class.ilTermListTableGUI.php
Go to the documentation of this file.
1<?php
2
25{
26 protected array $selected_cols;
27 protected array $adv_cols_order;
28 protected array $selectable_cols;
29 protected array $adv_fields;
30 protected int $tax_node;
33 protected array $filter;
34
35 public function __construct(
36 object $a_parent_obj,
37 string $a_parent_cmd,
38 int $a_tax_node
39 ) {
40 global $DIC;
41
42 $this->glossary = $a_parent_obj->getObject();
43 $this->setId("glotl" . $this->glossary->getId());
44 $this->tax_node = $a_tax_node;
45
46 $this->lng = $DIC->language();
47 $this->ctrl = $DIC->ctrl();
48
49 $this->selectable_cols = array();
50
51 $this->term_perm = ilGlossaryTermPermission::getInstance();
52
53 $adv_ad = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
54 $this->adv_fields = $adv_ad->getAllFields();
55 foreach ($this->adv_fields as $f) {
56 $this->selectable_cols["md_" . $f["id"]] = array(
57 "txt" => $f["title"],
58 "default" => false
59 );
60 }
61
62 // selectable columns
63 $this->selectable_cols["language"] = array(
64 "txt" => $this->lng->txt("language"),
65 "default" => true);
66 $this->selectable_cols["usage"] = array(
67 "txt" => $this->lng->txt("cont_usage"),
68 "default" => true);
69
70 // selectable columns of advanced metadata
71
72 parent::__construct($a_parent_obj, $a_parent_cmd);
73 $this->setTitle($this->lng->txt("cont_terms"));
74
75 $this->addColumn("", "", "1", true);
76 //$this->addColumn($this->lng->txt("cont_term"));
77
78 $adv_ap = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
79 $this->adv_cols_order = $adv_ap->getColumnOrder();
80 $this->selected_cols = $this->getSelectedColumns();
81 foreach ($this->adv_cols_order as $c) {
82 if ($c["id"] == 0) {
83 $this->addColumn($this->lng->txt("cont_term"), "term");
84 } elseif (in_array("md_" . $c["id"], $this->selected_cols)) {
85 $this->addColumn($c["text"], "md_" . $c["id"]);
86 }
87 }
88
89 foreach (array("language", "usage") as $c) {
90 if (in_array($c, $this->selected_cols)) {
91 $this->addColumn($this->selectable_cols[$c]["txt"]);
92 }
93 }
94
95 $this->setDefaultOrderDirection("asc");
96 $this->setDefaultOrderField("term");
97 $this->addColumn($this->lng->txt("cont_definitions"));
98
99 if ($this->showGlossaryColumn()) {
100 $this->addColumn($this->lng->txt("obj_glo"));
101 }
102
103 $this->addColumn($this->lng->txt("actions"));
104
105 $this->setEnableHeader(true);
106 $this->setFormAction($this->ctrl->getFormAction($a_parent_obj));
107 $this->setRowTemplate("tpl.term_tbl_row.html", "Modules/Glossary");
108 $this->setEnableTitle(true);
109
110 $this->addMultiCommand("copyTerms", $this->lng->txt("copy"));
111 $this->addMultiCommand("referenceTerms", $this->lng->txt("glo_reference"));
112 $this->addMultiCommand("confirmTermDeletion", $this->lng->txt("delete"));
113 //$this->addMultiCommand("addDefinition", $this->lng->txt("cont_add_definition"));
114
115 $this->setShowRowsSelector(true);
116
117 $this->initFilter();
118 $this->setData($this->glossary->getTermList(
119 $this->filter["term"],
120 "",
121 $this->filter["definition"],
122 $this->tax_node,
123 true,
124 true,
125 null,
126 false,
127 true
128 ));
129 }
130
131 public function showGlossaryColumn(): bool
132 {
133 return (in_array(
134 $this->glossary->getVirtualMode(),
135 array("level", "subtree")
136 ) || ilGlossaryTermReferences::hasReferences($this->glossary->getId()));
137 }
138
139
140 public function getSelectableColumns(): array
141 {
143 }
144
145 public function numericOrdering(string $a_field): bool
146 {
147 if (strpos($a_field, "md_") === 0) {
148 $md_id = (int) substr($a_field, 3);
149 if ($this->adv_fields[$md_id]["type"] == ilAdvancedMDFieldDefinition::TYPE_DATE) {
150 return true;
151 }
152 }
153 return false;
154 }
155
156 public function initFilter(): void
157 {
158 // term
159 $ti = new ilTextInputGUI($this->lng->txt("cont_term"), "term");
160 $ti->setMaxLength(64);
161 $ti->setSize(20);
162 $ti->setSubmitFormOnEnter(true);
163 $this->addFilterItem($ti);
164 $ti->readFromSession();
165 $this->filter["term"] = $ti->getValue();
166
167 // definition
168 if ($this->glossary->supportsLongTextQuery()) {
169 $ti = new ilTextInputGUI($this->lng->txt("cont_definition"), "defintion");
170 $ti->setMaxLength(64);
171 $ti->setSize(20);
172 $ti->setSubmitFormOnEnter(true);
173 $this->addFilterItem($ti);
174 $ti->readFromSession();
175 $this->filter["definition"] = $ti->getValue();
176 }
177 }
178
179 protected function fillRow(array $a_set): void
180 {
181 $defs = ilGlossaryDefinition::getDefinitionList($a_set["id"]);
182 $this->ctrl->setParameterByClass("ilobjglossarygui", "term_id", $a_set["id"]);
183 $this->ctrl->setParameterByClass("ilglossarytermgui", "term_id", $a_set["id"]);
184 $this->ctrl->setParameterByClass("ilglossarydefpagegui", "term_id", $a_set["id"]);
185
186 // actions drop down
187 //if ($this->glossary->getId() == $term["glo_id"])
188
189 if ($this->term_perm->checkPermission("write", $a_set["id"]) ||
190 $this->term_perm->checkPermission("edit_content", $a_set["id"])) {
191 if (ilGlossaryTerm::_lookGlossaryID($a_set["id"]) == $this->glossary->getId() ||
192 ilGlossaryTermReferences::isReferenced([$this->glossary->getId()], $a_set["id"])) {
193 $list = new ilAdvancedSelectionListGUI();
194 $list->addItem($this->lng->txt("cont_edit_term"), "", $this->ctrl->getLinkTargetByClass("ilglossarytermgui", "editTerm"));
195 if (count($defs) > 1) {
196 $list->addItem($this->lng->txt("cont_edit_definitions"), "", $this->ctrl->getLinkTargetByClass("ilglossarytermgui", "listDefinitions"));
197 } elseif (count($defs) == 1) {
198 $this->ctrl->setParameterByClass("ilglossarydefpagegui", "def", $defs[0]["id"]);
199 $list->addItem($this->lng->txt("cont_edit_definition"), "", $this->ctrl->getLinkTargetByClass(array("ilglossarytermgui",
200 "iltermdefinitioneditorgui",
201 "ilglossarydefpagegui"), "edit"));
202 }
203 $list->addItem($this->lng->txt("cont_add_definition"), "", $this->ctrl->getLinkTargetByClass("ilobjglossarygui", "addDefinition"));
204 $this->ctrl->setParameterByClass("ilglossarydefpagegui", "def", "");
205
206 $list->setId("act_term_" . $a_set["id"]);
207 $list->setListTitle("");
208 $this->tpl->setVariable("ACTIONS", $list->getHTML());
209 }
210 }
211
212
213 for ($j = 0, $jMax = count($defs); $j < $jMax; $j++) {
214 $def = $defs[$j];
215
216
217 // text
218 $this->tpl->setCurrentBlock("definition");
219 $short_str = $def["short_text"];
220
221 if ($def["short_text_dirty"]) {
222 // #18022
223 $def_obj = new ilGlossaryDefinition($def["id"]);
224 $def_obj->updateShortText();
225 $short_str = $def_obj->getShortText();
226 }
227
228 $page = new ilGlossaryDefPage($def["id"]);
229
230 // replace tex
231 // if a tex end tag is missing a tex end tag
232 $ltexs = strrpos($short_str, "[tex]");
233 $ltexe = strrpos($short_str, "[/tex]");
234 if ($ltexs > $ltexe) {
235 $page->buildDom();
236 $short_str = $page->getFirstParagraphText();
237 $short_str = strip_tags($short_str, "<br>");
238 $ltexe = strpos($short_str, "[/tex]", $ltexs);
239 $short_str = ilStr::shortenTextExtended($short_str, $ltexe + 6, true);
240 }
241
242 $short_str = ilMathJax::getInstance()->insertLatexImages($short_str);
243
244 $short_str = ilPCParagraph::xml2output(
245 $short_str,
246 false,
247 true,
248 !$page->getPageConfig()->getPreventHTMLUnmasking()
249 );
250 $this->tpl->setVariable("DEF_SHORT", $short_str);
251 $this->tpl->parseCurrentBlock();
252
253 $this->tpl->setCurrentBlock("definition_row");
254 $this->tpl->parseCurrentBlock();
255 }
256
257 $this->tpl->setCurrentBlock("check_col");
258 $this->tpl->setVariable("CHECKBOX_ID", $a_set["id"]);
259 $this->tpl->parseCurrentBlock();
260
261 $this->ctrl->setParameter($this->parent_obj, "term_id", $a_set["id"]);
262
263
264 // usage
265 if (in_array("usage", $this->getSelectedColumns())) {
266 $nr_usage = ilGlossaryTerm::getNumberOfUsages($a_set["id"]);
267 if ($nr_usage > 0 && $this->glossary->getId() == $a_set["glo_id"]) {
268 $this->tpl->setCurrentBlock("link_usage");
269 $this->ctrl->setParameterByClass("ilglossarytermgui", "term_id", $a_set["id"]);
270 $this->tpl->setVariable("LUSAGE", ilGlossaryTerm::getNumberOfUsages($a_set["id"]));
271 $this->tpl->setVariable(
272 "LINK_USAGE",
273 $this->ctrl->getLinkTargetByClass("ilglossarytermgui", "listUsages")
274 );
275 $this->ctrl->setParameterByClass("ilglossarytermgui", "term_id", "");
276 } else {
277 $this->tpl->setCurrentBlock("usage");
278 $this->tpl->setVariable("USAGE", ilGlossaryTerm::getNumberOfUsages($a_set["id"]));
279 }
280 $this->tpl->parseCurrentBlock();
281 $this->tpl->setCurrentBlock("td_usage");
282 $this->tpl->parseCurrentBlock();
283 }
284
285 // glossary title
286 if ($this->showGlossaryColumn()) {
287 $this->tpl->setCurrentBlock("glossary");
288 $this->tpl->setVariable("GLO_TITLE", ilObject::_lookupTitle($a_set["glo_id"]));
289 $this->tpl->parseCurrentBlock();
290 }
291
292 // output language
293 if (in_array("language", $this->getSelectedColumns())) {
294 $this->tpl->setCurrentBlock("td_lang");
295 $this->tpl->setVariable("TEXT_LANGUAGE", $this->lng->txt("meta_l_" . $a_set["language"]));
296 $this->tpl->parseCurrentBlock();
297 }
298
299
300 foreach ($this->adv_cols_order as $c) {
301 if ($c["id"] == 0) {
302 $this->tpl->setCurrentBlock("td");
303 $this->tpl->setVariable("TD_VAL", $a_set["term"]);
304 $this->tpl->parseCurrentBlock();
305 } elseif (in_array("md_" . $c["id"], $this->selected_cols)) {
306 $id = (int) $c["id"];
307
308 $val = " ";
309 if (isset($a_set["md_" . $id . "_presentation"])) {
310 $pb = $a_set["md_" . $id . "_presentation"]->getHTML();
311 if ($pb) {
312 $val = $pb;
313 }
314 }
315
316 $this->tpl->setCurrentBlock("td");
317 $this->tpl->setVariable("TD_VAL", $val);
318 $this->tpl->parseCurrentBlock();
319 }
320 }
321 }
322}
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...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getDefinitionList(int $a_term_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static hasReferences(int $a_glossary_id)
Check if a glossary uses references.
static isReferenced(array $a_glo_id, int $a_term_id)
Is a term referenced by a set of glossaries.
static getNumberOfUsages(int $a_term_id)
static _lookGlossaryID(int $term_id)
get glossary id form 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.
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.
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
addFilterItem(ilTableFilterItem $a_input_item, bool $a_optional=false)
setEnableTitle(bool $a_enabletitle)
addMultiCommand(string $a_cmd, string $a_text)
setFormAction(string $a_form_action, bool $a_multipart=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)
setDefaultOrderField(string $a_defaultorderfield)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
setId(string $a_val)
setDefaultOrderDirection(string $a_defaultorderdirection)
setData(array $a_data)
Set table data.
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?
fillRow(array $a_set)
Standard Version of Fill Row.
ilGlossaryTermPermission $term_perm
getSelectableColumns()
Get selectable columns.
__construct(object $a_parent_obj, string $a_parent_cmd, int $a_tax_node)
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