ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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{
16
20 function __construct($a_parent_obj, $a_parent_cmd, $a_tax_node)
21 {
22 global $ilCtrl, $lng;
23
24 $this->glossary = $a_parent_obj->object;
25 $this->setId("glotl".$this->glossary->getId());
26 $this->tax_node = $a_tax_node;
27
28 $this->selectable_cols = array();
29
30 include_once("./Modules/Glossary/classes/class.ilGlossaryAdvMetaDataAdapter.php");
31 $adv_ad = new ilGlossaryAdvMetaDataAdapter($this->glossary->getId());
32 $this->adv_fields = $adv_ad->getAllFields();
33 foreach ($this->adv_fields as $f)
34 {
35 $this->selectable_cols["md_".$f["id"]] = array(
36 "txt" => $f["title"],
37 "default" => false
38 );
39 }
40
41 // selectable columns
42 $this->selectable_cols["language"] = array(
43 "txt" => $lng->txt("language"),
44 "default" => true);
45 $this->selectable_cols["usage"] = array(
46 "txt" => $lng->txt("cont_usage"),
47 "default" => true);
48
49 // selectable columns of advanced metadata
50
51 parent::__construct($a_parent_obj, $a_parent_cmd);
52 $this->setTitle($lng->txt("cont_terms"));
53
54 $this->addColumn("", "", "1", true);
55 //$this->addColumn($this->lng->txt("cont_term"));
56
57 include_once("./Modules/Glossary/classes/class.ilGlossaryAdvMetaDataAdapter.php");
58 $adv_ap = new ilGlossaryAdvMetaDataAdapter($this->glossary->getId());
59 $this->adv_cols_order = $adv_ap->getColumnOrder();
60 $this->selected_cols = $this->getSelectedColumns();
61 foreach ($this->adv_cols_order as $c)
62 {
63 if ($c["id"] == 0)
64 {
65 $this->addColumn($lng->txt("cont_term"), "term");
66 }
67 else
68 {
69 if (in_array("md_".$c["id"], $this->selected_cols))
70 {
71 $this->addColumn($c["text"], "md_".$c["id"]);
72 }
73 }
74 }
75
76 foreach (array ("language", "usage") as $c)
77 {
78 if (in_array($c, $this->selected_cols))
79 {
80 $this->addColumn($this->selectable_cols[$c]["txt"]);
81 }
82 }
83
84 $this->setDefaultOrderDirection("asc");
85 $this->setDefaultOrderField("term");
86 $this->addColumn($this->lng->txt("cont_definitions"));
87
88 if (in_array($this->glossary->getVirtualMode(),
89 array("level", "subtree")))
90 {
91 $this->addColumn($this->lng->txt("obj_glo"));
92 }
93
94 $this->addColumn("", "", "1");
95
96 $this->setEnableHeader(true);
97 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
98 $this->setRowTemplate("tpl.term_tbl_row.html", "Modules/Glossary");
99 $this->setEnableTitle(true);
100
101 $this->addMultiCommand("confirmTermDeletion", $lng->txt("delete"));
102 //$this->addMultiCommand("addDefinition", $lng->txt("cont_add_definition"));
103
104 $this->setShowRowsSelector(true);
105
106 $this->initFilter();
107 $this->setData($this->glossary->getTermList($this->filter["term"], "",
108 $this->filter["definition"], $this->tax_node, true, true));
109 }
110
118 {
119 return $this->selectable_cols;
120 }
121
127 function numericOrdering($a_field)
128 {
129 if (substr($a_field, 0, 3) == "md_")
130 {
131 $md_id = (int) substr($a_field, 3);
132 if ($this->adv_fields[$md_id]["type"] == ilAdvancedMDFieldDefinition::TYPE_DATE)
133 {
134 return true;
135 }
136 }
137 return false;
138 }
139
143 function initFilter()
144 {
145 global $lng, $ilDB;
146
147 // term
148 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
149 $ti = new ilTextInputGUI($lng->txt("cont_term"), "term");
150 $ti->setMaxLength(64);
151 $ti->setSize(20);
152 $ti->setSubmitFormOnEnter(true);
153 $this->addFilterItem($ti);
154 $ti->readFromSession();
155 $this->filter["term"] = $ti->getValue();
156
157 // definition
158 if ($ilDB->getDBType() != "oracle")
159 {
160 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
161 $ti = new ilTextInputGUI($lng->txt("cont_definition"), "defintion");
162 $ti->setMaxLength(64);
163 $ti->setSize(20);
164 $ti->setSubmitFormOnEnter(true);
165 $this->addFilterItem($ti);
166 $ti->readFromSession();
167 $this->filter["definition"] = $ti->getValue();
168 }
169 }
170
174 protected function fillRow($term)
175 {
176 global $lng, $ilCtrl;
177
178 include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
179
180 $defs = ilGlossaryDefinition::getDefinitionList($term["id"]);
181 $ilCtrl->setParameterByClass("ilobjglossarygui", "term_id", $term["id"]);
182 $ilCtrl->setParameterByClass("ilglossarytermgui", "term_id", $term["id"]);
183 $ilCtrl->setParameterByClass("ilglossarydefpagegui", "term_id", $term["id"]);
184
185 // actions drop down
186 if ($this->glossary->getId() == $term["glo_id"])
187 {
188 $list = new ilAdvancedSelectionListGUI();
189 $list->addItem($lng->txt("cont_edit_term"), "", $ilCtrl->getLinkTargetByClass("ilglossarytermgui", "editTerm"));
190 if (count($defs) > 1)
191 {
192 $list->addItem($lng->txt("cont_edit_definitions"), "", $ilCtrl->getLinkTargetByClass("ilglossarytermgui", "listDefinitions"));
193 }
194 else if (count($defs) == 1)
195 {
196 $ilCtrl->setParameterByClass("ilglossarydefpagegui", "def", $defs[0]["id"]);
197 $list->addItem($lng->txt("cont_edit_definition"), "", $ilCtrl->getLinkTargetByClass(array("ilglossarytermgui",
198 "iltermdefinitioneditorgui",
199 "ilglossarydefpagegui"), "edit"));
200 }
201 $list->addItem($lng->txt("cont_add_definition"), "", $ilCtrl->getLinkTargetByClass("ilobjglossarygui", "addDefinition"));
202 $ilCtrl->setParameterByClass("ilglossarydefpagegui", "def", "");
203
204 $list->setId("act_term_".$term["id"]);
205 $list->setListTitle($lng->txt("actions"));
206 $this->tpl->setVariable("ACTIONS", $list->getHTML());
207 }
208
209
210 for($j=0; $j<count($defs); $j++)
211 {
212 $def = $defs[$j];
213
214 /*if ($this->glossary->getId() == $term["glo_id"])
215 {
216 // up
217 if ($j > 0)
218 {
219 $this->tpl->setCurrentBlock("move_up");
220 $this->tpl->setVariable("TXT_UP", $lng->txt("up"));
221 $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
222 $ilCtrl->setParameter($this->parent_obj, "def", $def["id"]);
223 $this->tpl->setVariable("LINK_UP",
224 $ilCtrl->getLinkTarget($this->parent_obj, "moveDefinitionUp"));
225 $this->tpl->parseCurrentBlock();
226 }
227
228 // down
229 if ($j+1 < count($defs))
230 {
231 $this->tpl->setCurrentBlock("move_down");
232 $this->tpl->setVariable("TXT_DOWN", $lng->txt("down"));
233 $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
234 $ilCtrl->setParameter($this->parent_obj, "def", $def["id"]);
235 $this->tpl->setVariable("LINK_DOWN",
236 $ilCtrl->getLinkTarget($this->parent_obj, "moveDefinitionDown"));
237 $this->tpl->parseCurrentBlock();
238 }
239
240 // delete
241 $this->tpl->setCurrentBlock("delete");
242 $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
243 $ilCtrl->setParameter($this->parent_obj, "def", $def["id"]);
244 $this->tpl->setVariable("LINK_DELETE",
245 $ilCtrl->getLinkTarget($this->parent_obj, "confirmDefinitionDeletion"));
246 $this->tpl->setVariable("TXT_DELETE", $lng->txt("delete"));
247 $this->tpl->parseCurrentBlock();
248
249 // edit
250 $this->tpl->setCurrentBlock("edit");
251 $ilCtrl->setParameterByClass("ilglossarydefpagegui", "term_id", $term["id"]);
252 $ilCtrl->setParameterByClass("ilglossarydefpagegui", "def", $def["id"]);
253 $this->tpl->setVariable("LINK_EDIT",
254 $ilCtrl->getLinkTargetByClass(array("ilglossarytermgui",
255 "iltermdefinitioneditorgui",
256 "ilglossarydefpagegui"), "edit"));
257 $this->tpl->setVariable("TXT_EDIT", $lng->txt("edit"));
258 $this->tpl->parseCurrentBlock();
259 }*/
260
261 // text
262 $this->tpl->setCurrentBlock("definition");
263 $short_str = $def["short_text"];
264
265 // replace tex
266 // if a tex end tag is missing a tex end tag
267 $ltexs = strrpos($short_str, "[tex]");
268 $ltexe = strrpos($short_str, "[/tex]");
269 if ($ltexs > $ltexe)
270 {
271 $page = new ilGlossaryDefPage($def["id"]);
272 $page->buildDom();
273 $short_str = $page->getFirstParagraphText();
274 $short_str = strip_tags($short_str, "<br>");
275 $ltexe = strpos($short_str, "[/tex]", $ltexs);
276 $short_str = ilUtil::shortenText($short_str, $ltexe+6, true);
277 }
278 $short_str = ilUtil::insertLatexImages($short_str);
279 $short_str = ilPCParagraph::xml2output($short_str);
280 $this->tpl->setVariable("DEF_SHORT", $short_str);
281 $this->tpl->parseCurrentBlock();
282
283 $this->tpl->setCurrentBlock("definition_row");
284 $this->tpl->parseCurrentBlock();
285 }
286
287 $this->tpl->setCurrentBlock("check_col");
288 $this->tpl->setVariable("CHECKBOX_ID", $term["id"]);
289 $this->tpl->parseCurrentBlock();
290
291 $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
292
293
294 // usage
295 if (in_array("usage", $this->getSelectedColumns()))
296 {
297 $nr_usage = ilGlossaryTerm::getNumberOfUsages($term["id"]);
298 if ($nr_usage > 0 && $this->glossary->getId() == $term["glo_id"])
299 {
300 $this->tpl->setCurrentBlock("link_usage");
301 $ilCtrl->setParameterByClass("ilglossarytermgui", "term_id", $term["id"]);
302 $this->tpl->setVariable("LUSAGE", ilGlossaryTerm::getNumberOfUsages($term["id"]));
303 $this->tpl->setVariable("LINK_USAGE",
304 $ilCtrl->getLinkTargetByClass("ilglossarytermgui", "listUsages"));
305 $ilCtrl->setParameterByClass("ilglossarytermgui", "term_id", "");
306 $this->tpl->parseCurrentBlock();
307 }
308 else
309 {
310 $this->tpl->setCurrentBlock("usage");
311 $this->tpl->setVariable("USAGE", ilGlossaryTerm::getNumberOfUsages($term["id"]));
312 $this->tpl->parseCurrentBlock();
313 }
314 $this->tpl->setCurrentBlock("td_usage");
315 $this->tpl->parseCurrentBlock();
316 }
317
318 // glossary title
319 if (in_array($this->glossary->getVirtualMode(),
320 array("level", "subtree")))
321 {
322 $this->tpl->setCurrentBlock("glossary");
323 $this->tpl->setVariable("GLO_TITLE", ilObject::_lookupTitle($term["glo_id"]));
324 $this->tpl->parseCurrentBlock();
325 }
326
327 // output language
328 if (in_array("language", $this->getSelectedColumns()))
329 {
330 $this->tpl->setCurrentBlock("td_lang");
331 $this->tpl->setVariable("TEXT_LANGUAGE", $lng->txt("meta_l_".$term["language"]));
332 $this->tpl->parseCurrentBlock();
333 }
334
335
336 foreach ($this->adv_cols_order as $c)
337 {
338 if ($c["id"] == 0)
339 {
340 $this->tpl->setCurrentBlock("td");
341 $this->tpl->setVariable("TD_VAL", $term["term"]);
342 $this->tpl->parseCurrentBlock();
343 }
344 else
345 {
346 if (in_array("md_".$c["id"], $this->selected_cols))
347 {
348 $id = (int) $c["id"];
349
350 $val = " ";
351 if(isset($term["md_".$id."_presentation"]))
352 {
353 $pb = $term["md_".$id."_presentation"]->getHTML();
354 if($pb)
355 {
356 $val = $pb;
357 }
358 }
359
360 $this->tpl->setCurrentBlock("td");
361 $this->tpl->setVariable("TD_VAL", $val);
362 $this->tpl->parseCurrentBlock();
363 }
364 }
365 }
366 }
367
368}
369?>
User interface class for advanced drop-down selection lists.
Glossary definition page object.
static getNumberOfUsages($a_term_id)
Get number of usages.
static _lookupTitle($a_id)
lookup object title
static xml2output($a_text, $a_wysiwyg=false, $a_replace_lists=true)
Converts xml from DB to output in edit textarea.
Class ilTable2GUI.
getSelectedColumns()
Get selected columns.
setEnableHeader($a_enableheader)
Set Enable Header.
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.
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.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
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.
static insertLatexImages($a_text, $a_start="\[tex\]", $a_end="\[\/tex\]")
replace [text]...[/tex] tags with formula image code
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
global $ilDB