ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilPresentationListTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once("./Services/Table/classes/class.ilTable2GUI.php");
5 
16 {
17 
21  protected $glossary;
22 
26  protected $adv_cols_order = array();
27 
31  protected $lng;
32 
36  protected $ctrl;
37 
41  protected $page_config;
42 
46  public function __construct(
47  $a_parent_obj,
48  $a_parent_cmd,
49  $a_glossary,
50  $a_offline,
51  $a_tax_node,
52  $a_tax_id = 0
53  ) {
54  global $DIC;
55 
56  $this->lng = $DIC->language();
57  $this->ctrl = $DIC->ctrl();
58 
59  $this->glossary = $a_glossary;
60  $this->offline = $a_offline;
61  $this->tax_node = $a_tax_node;
62  $this->tax_id = $a_tax_id;
63  $this->setId("glopr" . $this->glossary->getId());
64 
65  $gdf = new ilGlossaryDefPage();
66  $this->page_config = $gdf->getPageConfig();
67 
68  include_once("./Modules/Glossary/classes/class.ilGlossaryAdvMetaDataAdapter.php");
69  $adv_ad = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
70  $this->adv_fields = $adv_ad->getAllFields();
71 
72 
73  parent::__construct($a_parent_obj, $a_parent_cmd);
74  //$this->setTitle($this->lng->txt("cont_terms"));
75 
76  if ($this->glossary->getPresentationMode() == "full_def") {
77  $this->addColumn($this->lng->txt("cont_terms"));
78  } else {
79  include_once("./Modules/Glossary/classes/class.ilGlossaryAdvMetaDataAdapter.php");
80  $adv_ap = new ilGlossaryAdvMetaDataAdapter($this->glossary->getRefId());
81  $this->adv_cols_order = $adv_ap->getColumnOrder();
82  foreach ($this->adv_cols_order as $c) {
83  if ($c["id"] == 0) {
84  $this->addColumn($this->lng->txt("cont_term"), "term");
85  } else {
86  $this->addColumn($c["text"], "md_" . $c["id"]);
87  }
88  }
89 
90 
91  $this->addColumn($this->lng->txt("cont_definitions"));
92  if ($this->glossary->isVirtual()) {
93  $this->addColumn($this->lng->txt("obj_glo"));
94  }
95  }
96 
97  $this->setEnableHeader(true);
98  if (!$this->offline) {
99  $this->setFormAction($this->ctrl->getFormAction($this->parent_obj));
100  } else {
101  $this->disable("footer");
102  }
103  $this->setRowTemplate("tpl.term_tbl_pres_row.html", "Modules/Glossary");
104  $this->setEnableTitle(true);
105 
106  if (!$this->offline) {
107  $this->initFilter();
108  $this->setFilterCommand("applyFilter");
109 
110  $this->setShowRowsSelector(true);
111  }
112 
113  // advanced metadata
114  include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordGUI.php');
115  $this->record_gui = new ilAdvancedMDRecordGUI(ilAdvancedMDRecordGUI::MODE_FILTER, 'glo', $this->glossary->getId(), 'term');
116  $this->record_gui->setTableGUI($this);
117  $this->record_gui->parse();
118  //$this->setDefaultOrderField("login");
119  //$this->setDefaultOrderDirection("asc");
120  $this->setData($this->glossary->getTermList(
121  $this->filter["term"],
122  $_GET["letter"],
123  $this->filter["definition"],
124  $this->tax_node,
125  false,
126  true,
127  $this->record_gui->getFilterElements(),
128  false,
129  true
130  ));
131  // $this->setData(array());
132  }
133 
139  protected function getAdvMDRecordGUI()
140  {
141  return $this->record_gui;
142  }
143 
147  public function initFilter()
148  {
149  // term
150  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
151  $ti = new ilTextInputGUI($this->lng->txt("cont_term"), "term");
152  $ti->setMaxLength(64);
153  $ti->setSize(20);
154  $ti->setSubmitFormOnEnter(true);
155  $this->addFilterItem($ti);
156  $ti->readFromSession();
157  $this->filter["term"] = $ti->getValue();
158 
159  // definition
160  if ($this->glossary->supportsLongTextQuery()) {
161  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
162  $ti = new ilTextInputGUI($this->lng->txt("cont_definition"), "defintion");
163  $ti->setMaxLength(64);
164  $ti->setSize(20);
165  $ti->setSubmitFormOnEnter(true);
166  $this->addFilterItem($ti);
167  $ti->readFromSession();
168  $this->filter["definition"] = $ti->getValue();
169  }
170  }
171 
177  public function numericOrdering($a_field)
178  {
179  if (substr($a_field, 0, 3) == "md_") {
180  $md_id = (int) substr($a_field, 3);
181  if ($this->adv_fields[$md_id]["type"] == ilAdvancedMDFieldDefinition::TYPE_DATE) {
182  return true;
183  }
184  }
185  return false;
186  }
187 
191  protected function fillRow($term)
192  {
193  $defs = ilGlossaryDefinition::getDefinitionList($term["id"]);
194  $this->ctrl->setParameter($this->parent_obj, "term_id", $term["id"]);
195 
196  if ($this->glossary->getPresentationMode() == "full_def") {
197  $this->tpl->setCurrentBlock("fd_td");
198  $this->tpl->setVariable(
199  "FULL_DEF",
200  $this->parent_obj->listDefinitions($_GET["ref_id"], $term["id"], true)
201  );
202  $this->tpl->parseCurrentBlock();
203  } else {
204  if (sizeof($defs)) {
205  for ($j = 0; $j < count($defs); $j++) {
206  $def = $defs[$j];
207  if (count($defs) > 1) {
208  if (!$this->offline) {
209  if (!empty($filter)) {
210  $this->ctrl->setParameter($this->parent_obj, "term", $filter);
211  $this->ctrl->setParameter($this->parent_obj, "oldoffset", $_GET["oldoffset"]);
212  }
213  $this->ctrl->setParameter($this->parent_obj, "term_id", $term["id"]);
214  $this->ctrl->setParameter($this->parent_obj, "offset", $_GET["offset"]);
215  $def_href = $this->ctrl->getLinkTarget($this->parent_obj, "listDefinitions");
216  $this->ctrl->clearParameters($this->parent_obj);
217  } else {
218  $def_href = "term_" . $term["id"] . ".html";
219  }
220  $this->tpl->parseCurrentBlock();
221 
222  $this->tpl->setCurrentBlock("definition");
223  $this->tpl->setVariable("DEF_TEXT", $this->lng->txt("cont_definition") . " " . ($j + 1));
224  $this->tpl->setVariable("HREF_DEF", $def_href . "#ilPageTocDef" . ($j + 1));
225  $this->tpl->parseCurrentBlock();
226  }
227 
228  // check dirty short texts
229  $this->tpl->setCurrentBlock("definition");
230  if ($def["short_text_dirty"]) {
231  // #18022
232  $def_obj = new ilGlossaryDefinition($def["id"]);
233  $def_obj->updateShortText();
234  $short_str = $def_obj->getShortText();
235  } else {
236  $short_str = $def["short_text"];
237  }
238 
239  if (!$this->page_config->getPreventHTMLUnmasking()) {
240  $short_str = str_replace("&lt;", "<", $short_str);
241  $short_str = str_replace("&gt;", ">", $short_str);
242  }
243 
244  // replace tex
245  // if a tex end tag is missing a tex end tag
246  $ltexs = strrpos($short_str, "[tex]");
247  $ltexe = strrpos($short_str, "[/tex]");
248  if ($ltexs > $ltexe) {
249  $page = new ilGlossaryDefPage($def["id"]);
250  $page->buildDom();
251  $short_str = $page->getFirstParagraphText();
252  $short_str = strip_tags($short_str, "<br>");
253  $ltexe = strpos($short_str, "[/tex]", $ltexs);
254  $short_str = ilUtil::shortenText($short_str, $ltexe + 6, true);
255  }
256 
257  include_once './Services/MathJax/classes/class.ilMathJax.php';
258  if (!$this->offline) {
259  $short_str = ilMathJax::getInstance()->insertLatexImages($short_str);
260  } else {
261  $short_str = ilMathJax::getInstance()->insertLatexImages(
262  $short_str,
263  '[tex]',
264  '[/tex]',
265  $this->parent_obj->getOfflineDirectory() . '/teximg',
266  './teximg'
267  );
268  }
269 
270 
271  $short_str = ilPCParagraph::xml2output($short_str, false, true, false);
272 
273  $this->tpl->setVariable("DEF_SHORT", $short_str);
274  $this->tpl->parseCurrentBlock();
275 
276  $this->tpl->setCurrentBlock("definition_row");
277  $this->tpl->parseCurrentBlock();
278  }
279  } else {
280  $this->tpl->touchBlock("def_td");
281  }
282 
283  // display additional column 'glossary' for meta glossaries
284  if ($this->glossary->isVirtual()) {
285  $this->tpl->setCurrentBlock("glossary_row");
286  $glo_title = ilObject::_lookupTitle($term["glo_id"]);
287  $this->tpl->setVariable("GLO_TITLE", $glo_title);
288  $this->tpl->parseCurrentBlock();
289  }
290  }
291 
292  $this->ctrl->clearParameters($this->parent_obj);
293 
294  // advanced metadata
295  foreach ($this->adv_cols_order as $c) {
296  if ($c["id"] == 0) {
297  $this->tpl->setCurrentBlock("link_start");
298  if (!$this->offline) {
299  if (!empty($filter)) {
300  $this->ctrl->setParameter($this->parent_obj, "term", $filter);
301  $this->ctrl->setParameter($this->parent_obj, "oldoffset", $_GET["oldoffset"]);
302  }
303  $this->ctrl->setParameter($this->parent_obj, "term_id", $term["id"]);
304  $this->ctrl->setParameter($this->parent_obj, "offset", $_GET["offset"]);
305  $this->tpl->setVariable(
306  "LINK_VIEW_TERM",
307  $this->ctrl->getLinkTarget($this->parent_obj, "listDefinitions")
308  );
309  $this->ctrl->clearParameters($this->parent_obj);
310  } else {
311  $this->tpl->setVariable("LINK_VIEW_TERM", "term_" . $term["id"] . ".html");
312  }
313  $this->tpl->parseCurrentBlock();
314 
315  $this->tpl->setCurrentBlock("link_end");
316  $this->tpl->setVariable("ANCHOR_TERM", "term_" . $term["id"]);
317  $this->tpl->parseCurrentBlock();
318 
319  $this->tpl->setCurrentBlock("td");
320  $this->tpl->setVariable("TEXT", $term["term"]);
321  $this->tpl->parseCurrentBlock();
322  } else {
323  $id = $c["id"];
324 
325  $val = " ";
326  if (isset($term["md_" . $id . "_presentation"])) {
327  $pb = $term["md_" . $id . "_presentation"]->getList();
328  if ($pb) {
329  $val = $pb;
330  }
331  }
332 
333  $this->tpl->setCurrentBlock("td");
334  $this->tpl->setVariable("TEXT", $val);
335  $this->tpl->parseCurrentBlock();
336  }
337  }
338  }
339 }
static getDefinitionList($a_term_id)
static
__construct( $a_parent_obj, $a_parent_cmd, $a_glossary, $a_offline, $a_tax_node, $a_tax_id=0)
Constructor.
static shortenText( $a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
global $DIC
Definition: saml.php:7
$_GET["client_id"]
Term list table for presentation mode.
if(!array_key_exists('StateId', $_REQUEST)) $id
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
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.
setId($a_val)
Set id.
Class ilTable2GUI.
This class represents a text property in a property form.
setMaxLength($a_maxlength)
Set Max Length.
Glossary definition page object.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
getAllFields()
Get all advanced metadata fields.
Class ilGlossaryDefinition.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
disable($a_module_name)
diesables particular modules of table
numericOrdering($a_field)
Should this field be sorted numeric?
static getInstance()
Singleton: get instance.
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.
$def
Definition: croninfo.php:21
setEnableHeader($a_enableheader)
Set Enable Header.
getAdvMDRecordGUI()
needed for advmd filter handling
setEnableTitle($a_enabletitle)
Set Enable Title.
setFilterCommand($a_val, $a_caption=null)
Set filter command.