ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilTermListTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("./Services/Table/classes/class.ilTable2GUI.php");
5
15{
19 protected $glossary;
20
24 protected $term_perm;
25
29 protected $lng;
30
34 protected $ctrl;
35
39 public function __construct($a_parent_obj, $a_parent_cmd, $a_tax_node)
40 {
41 global $DIC;
42
43 $this->glossary = $a_parent_obj->object;
44 $this->setId("glotl" . $this->glossary->getId());
45 $this->tax_node = $a_tax_node;
46
47 $this->lng = $DIC->language();
48 $this->ctrl = $DIC->ctrl();
49
50 $this->selectable_cols = array();
51
52 include_once("./Modules/Glossary/classes/class.ilGlossaryTermPermission.php");
53 $this->term_perm = ilGlossaryTermPermission::getInstance();
54
55 include_once("./Modules/Glossary/classes/class.ilGlossaryAdvMetaDataAdapter.php");
56 $adv_ad = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
57 $this->adv_fields = $adv_ad->getAllFields();
58 foreach ($this->adv_fields as $f) {
59 $this->selectable_cols["md_" . $f["id"]] = array(
60 "txt" => $f["title"],
61 "default" => false
62 );
63 }
64
65 // selectable columns
66 $this->selectable_cols["language"] = array(
67 "txt" => $this->lng->txt("language"),
68 "default" => true);
69 $this->selectable_cols["usage"] = array(
70 "txt" => $this->lng->txt("cont_usage"),
71 "default" => true);
72
73 // selectable columns of advanced metadata
74
75 parent::__construct($a_parent_obj, $a_parent_cmd);
76 $this->setTitle($this->lng->txt("cont_terms"));
77
78 $this->addColumn("", "", "1", true);
79 //$this->addColumn($this->lng->txt("cont_term"));
80
81 include_once("./Modules/Glossary/classes/class.ilGlossaryAdvMetaDataAdapter.php");
82 $adv_ap = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
83 $this->adv_cols_order = $adv_ap->getColumnOrder();
84 $this->selected_cols = $this->getSelectedColumns();
85 foreach ($this->adv_cols_order as $c) {
86 if ($c["id"] == 0) {
87 $this->addColumn($this->lng->txt("cont_term"), "term");
88 } else {
89 if (in_array("md_" . $c["id"], $this->selected_cols)) {
90 $this->addColumn($c["text"], "md_" . $c["id"]);
91 }
92 }
93 }
94
95 foreach (array("language", "usage") as $c) {
96 if (in_array($c, $this->selected_cols)) {
97 $this->addColumn($this->selectable_cols[$c]["txt"]);
98 }
99 }
100
101 $this->setDefaultOrderDirection("asc");
102 $this->setDefaultOrderField("term");
103 $this->addColumn($this->lng->txt("cont_definitions"));
104
105 if ($this->showGlossaryColumn()) {
106 $this->addColumn($this->lng->txt("obj_glo"));
107 }
108
109 $this->addColumn("", "", "1");
110
111 $this->setEnableHeader(true);
112 $this->setFormAction($this->ctrl->getFormAction($a_parent_obj));
113 $this->setRowTemplate("tpl.term_tbl_row.html", "Modules/Glossary");
114 $this->setEnableTitle(true);
115
116 $this->addMultiCommand("copyTerms", $this->lng->txt("copy"));
117 $this->addMultiCommand("referenceTerms", $this->lng->txt("glo_reference"));
118 $this->addMultiCommand("confirmTermDeletion", $this->lng->txt("delete"));
119 //$this->addMultiCommand("addDefinition", $this->lng->txt("cont_add_definition"));
120
121 $this->setShowRowsSelector(true);
122
123 $this->initFilter();
124 $this->setData($this->glossary->getTermList(
125 $this->filter["term"],
126 "",
127 $this->filter["definition"],
128 $this->tax_node,
129 true,
130 true,
131 null,
132 false,
133 true
134 ));
135 }
136
143 public function showGlossaryColumn()
144 {
145 include_once("./Modules/Glossary/classes/class.ilGlossaryTermReferences.php");
146 return (in_array(
147 $this->glossary->getVirtualMode(),
148 array("level", "subtree")
149 ) || ilGlossaryTermReferences::hasReferences($this->glossary->getId()));
150 }
151
152
159 public function getSelectableColumns()
160 {
161 return $this->selectable_cols;
162 }
163
169 public function numericOrdering($a_field)
170 {
171 if (substr($a_field, 0, 3) == "md_") {
172 $md_id = (int) substr($a_field, 3);
173 if ($this->adv_fields[$md_id]["type"] == ilAdvancedMDFieldDefinition::TYPE_DATE) {
174 return true;
175 }
176 }
177 return false;
178 }
179
183 public function initFilter()
184 {
185 // term
186 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
187 $ti = new ilTextInputGUI($this->lng->txt("cont_term"), "term");
188 $ti->setMaxLength(64);
189 $ti->setSize(20);
190 $ti->setSubmitFormOnEnter(true);
191 $this->addFilterItem($ti);
192 $ti->readFromSession();
193 $this->filter["term"] = $ti->getValue();
194
195 // definition
196 if ($this->glossary->supportsLongTextQuery()) {
197 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
198 $ti = new ilTextInputGUI($this->lng->txt("cont_definition"), "defintion");
199 $ti->setMaxLength(64);
200 $ti->setSize(20);
201 $ti->setSubmitFormOnEnter(true);
202 $this->addFilterItem($ti);
203 $ti->readFromSession();
204 $this->filter["definition"] = $ti->getValue();
205 }
206 }
207
211 protected function fillRow($term)
212 {
213 include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
214
215 $defs = ilGlossaryDefinition::getDefinitionList($term["id"]);
216 $this->ctrl->setParameterByClass("ilobjglossarygui", "term_id", $term["id"]);
217 $this->ctrl->setParameterByClass("ilglossarytermgui", "term_id", $term["id"]);
218 $this->ctrl->setParameterByClass("ilglossarydefpagegui", "term_id", $term["id"]);
219
220 // actions drop down
221 //if ($this->glossary->getId() == $term["glo_id"])
222
223 if ($this->term_perm->checkPermission("write", $term["id"]) ||
224 $this->term_perm->checkPermission("edit_content", $term["id"])) {
225 include_once("./Modules/Glossary/classes/class.ilGlossaryTerm.php");
226 include_once("./Modules/Glossary/classes/class.ilGlossaryTermReferences.php");
227 if (ilGlossaryTerm::_lookGlossaryID($term["id"]) == $this->glossary->getId() ||
228 ilGlossaryTermReferences::isReferenced($this->glossary->getId(), $term["id"])) {
230 $list->addItem($this->lng->txt("cont_edit_term"), "", $this->ctrl->getLinkTargetByClass("ilglossarytermgui", "editTerm"));
231 if (count($defs) > 1) {
232 $list->addItem($this->lng->txt("cont_edit_definitions"), "", $this->ctrl->getLinkTargetByClass("ilglossarytermgui", "listDefinitions"));
233 } elseif (count($defs) == 1) {
234 $this->ctrl->setParameterByClass("ilglossarydefpagegui", "def", $defs[0]["id"]);
235 $list->addItem($this->lng->txt("cont_edit_definition"), "", $this->ctrl->getLinkTargetByClass(array("ilglossarytermgui",
236 "iltermdefinitioneditorgui",
237 "ilglossarydefpagegui"), "edit"));
238 }
239 $list->addItem($this->lng->txt("cont_add_definition"), "", $this->ctrl->getLinkTargetByClass("ilobjglossarygui", "addDefinition"));
240 $this->ctrl->setParameterByClass("ilglossarydefpagegui", "def", "");
241
242 $list->setId("act_term_" . $term["id"]);
243 $list->setListTitle($this->lng->txt("actions"));
244 $this->tpl->setVariable("ACTIONS", $list->getHTML());
245 }
246 }
247
248
249 for ($j = 0; $j < count($defs); $j++) {
250 $def = $defs[$j];
251
252
253 // text
254 $this->tpl->setCurrentBlock("definition");
255 $short_str = $def["short_text"];
256
257 if ($def["short_text_dirty"]) {
258 // #18022
259 $def_obj = new ilGlossaryDefinition($def["id"]);
260 $def_obj->updateShortText();
261 $short_str = $def_obj->getShortText();
262 }
263
264 // replace tex
265 // if a tex end tag is missing a tex end tag
266 $ltexs = strrpos($short_str, "[tex]");
267 $ltexe = strrpos($short_str, "[/tex]");
268 if ($ltexs > $ltexe) {
269 $page = new ilGlossaryDefPage($def["id"]);
270 $page->buildDom();
271 $short_str = $page->getFirstParagraphText();
272 $short_str = strip_tags($short_str, "<br>");
273 $ltexe = strpos($short_str, "[/tex]", $ltexs);
274 $short_str = ilUtil::shortenText($short_str, $ltexe + 6, true);
275 }
276
277 include_once './Services/MathJax/classes/class.ilMathJax.php';
278 $short_str = ilMathJax::getInstance()->insertLatexImages($short_str);
279
280 $short_str = ilPCParagraph::xml2output($short_str);
281 $this->tpl->setVariable("DEF_SHORT", $short_str);
282 $this->tpl->parseCurrentBlock();
283
284 $this->tpl->setCurrentBlock("definition_row");
285 $this->tpl->parseCurrentBlock();
286 }
287
288 $this->tpl->setCurrentBlock("check_col");
289 $this->tpl->setVariable("CHECKBOX_ID", $term["id"]);
290 $this->tpl->parseCurrentBlock();
291
292 $this->ctrl->setParameter($this->parent_obj, "term_id", $term["id"]);
293
294
295 // usage
296 if (in_array("usage", $this->getSelectedColumns())) {
297 $nr_usage = ilGlossaryTerm::getNumberOfUsages($term["id"]);
298 if ($nr_usage > 0 && $this->glossary->getId() == $term["glo_id"]) {
299 $this->tpl->setCurrentBlock("link_usage");
300 $this->ctrl->setParameterByClass("ilglossarytermgui", "term_id", $term["id"]);
301 $this->tpl->setVariable("LUSAGE", ilGlossaryTerm::getNumberOfUsages($term["id"]));
302 $this->tpl->setVariable(
303 "LINK_USAGE",
304 $this->ctrl->getLinkTargetByClass("ilglossarytermgui", "listUsages")
305 );
306 $this->ctrl->setParameterByClass("ilglossarytermgui", "term_id", "");
307 $this->tpl->parseCurrentBlock();
308 } else {
309 $this->tpl->setCurrentBlock("usage");
310 $this->tpl->setVariable("USAGE", ilGlossaryTerm::getNumberOfUsages($term["id"]));
311 $this->tpl->parseCurrentBlock();
312 }
313 $this->tpl->setCurrentBlock("td_usage");
314 $this->tpl->parseCurrentBlock();
315 }
316
317 // glossary title
318 if ($this->showGlossaryColumn()) {
319 $this->tpl->setCurrentBlock("glossary");
320 $this->tpl->setVariable("GLO_TITLE", ilObject::_lookupTitle($term["glo_id"]));
321 $this->tpl->parseCurrentBlock();
322 }
323
324 // output language
325 if (in_array("language", $this->getSelectedColumns())) {
326 $this->tpl->setCurrentBlock("td_lang");
327 $this->tpl->setVariable("TEXT_LANGUAGE", $this->lng->txt("meta_l_" . $term["language"]));
328 $this->tpl->parseCurrentBlock();
329 }
330
331
332 foreach ($this->adv_cols_order as $c) {
333 if ($c["id"] == 0) {
334 $this->tpl->setCurrentBlock("td");
335 $this->tpl->setVariable("TD_VAL", $term["term"]);
336 $this->tpl->parseCurrentBlock();
337 } else {
338 if (in_array("md_" . $c["id"], $this->selected_cols)) {
339 $id = (int) $c["id"];
340
341 $val = " ";
342 if (isset($term["md_" . $id . "_presentation"])) {
343 $pb = $term["md_" . $id . "_presentation"]->getHTML();
344 if ($pb) {
345 $val = $pb;
346 }
347 }
348
349 $this->tpl->setCurrentBlock("td");
350 $this->tpl->setVariable("TD_VAL", $val);
351 $this->tpl->parseCurrentBlock();
352 }
353 }
354 }
355 }
356}
An exception for terminatinating execution or to throw for unit testing.
User interface class for advanced drop-down selection lists.
Glossary definition page object.
Class ilGlossaryDefinition.
static getDefinitionList($a_term_id)
static
static hasReferences($a_glossary_id)
Check if a glossary uses references.
static isReferenced($a_glo_id, $a_term_id)
Is a term referenced by one or multiple glossaries.
static getNumberOfUsages($a_term_id)
Get number of usages.
static _lookGlossaryID($term_id)
get glossary id form term id
static getInstance()
Singleton: get instance.
static _lookupTitle($a_id)
lookup object title
static xml2output($a_text, $a_wysiwyg=false, $a_replace_lists=true, $unmask=true)
Converts xml from DB to output in edit textarea.
Class ilTable2GUI.
getSelectedColumns()
Get selected columns.
setEnableHeader($a_enableheader)
Set Enable Header.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
setData($a_data)
set table data @access public
setEnableTitle($a_enabletitle)
Set Enable Title.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addMultiCommand($a_cmd, $a_text)
Add Command button.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
showGlossaryColumn()
Show glossary column.
fillRow($term)
Fill table row.
__construct($a_parent_obj, $a_parent_cmd, $a_tax_node)
Constructor.
getSelectableColumns()
Get selectable columns.
numericOrdering($a_field)
Should this field be sorted numeric?
This class represents a text property in a property form.
static shortenText( $a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
$def
Definition: croninfo.php:21
if(!array_key_exists('StateId', $_REQUEST)) $id
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
global $DIC
Definition: saml.php:7