ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilTable2GUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once("Services/Table/classes/class.ilTableGUI.php");
5
16{
17 protected $close_command = "";
18 private $unique_id;
19 private $headerHTML;
20 protected $top_anchor = "il_table_top";
21 protected $filters = array();
22 protected $optional_filters = array();
23 protected $filter_cmd = 'applyFilter';
24 protected $reset_cmd = 'resetFilter';
25 protected $filter_cols = 5;
26 protected $ext_sort = false;
27 protected $ext_seg = false;
28 protected $context = "";
29
30 protected $mi_sel_buttons = null;
31 protected $disable_filter_hiding = false;
32 protected $selected_filter = false;
33 protected $top_commands = true;
34 protected $selectable_columns = array();
35 protected $selected_column = array();
36 protected $show_templates = false;
37 protected $show_rows_selector = true; // JF, 2014-10-27
38
39 protected $nav_determined= false;
40 protected $limit_determined = false;
41 protected $filters_determined = false;
42 protected $columns_determined = false;
43 protected $open_form_tag = true;
44 protected $close_form_tag = true;
45
46 protected $export_formats;
47 protected $export_mode;
48 protected $print_mode;
49
51 protected $restore_filter; // [bool]
52 protected $restore_filter_values; // [bool]
53
54 protected $sortable_fields = array();
59
64
65 const FILTER_TEXT = 1;
66 const FILTER_SELECT = 2;
67 const FILTER_DATE = 3;
68 const FILTER_LANGUAGE = 4;
73
74 const EXPORT_EXCEL = 1;
75 const EXPORT_CSV = 2;
76
77 const ACTION_ALL_LIMIT = 1000;
78
83 public function __construct($a_parent_obj, $a_parent_cmd = "", $a_template_context = "")
84 {
85 global $lng;
86
87 parent::__construct(0, false);
88 $this->unique_id = md5(uniqid());
89 $this->parent_obj = $a_parent_obj;
90 $this->parent_cmd = $a_parent_cmd;
91 $this->buttons = array();
92 $this->header_commands = array();
93 $this->multi = array();
94 $this->hidden_inputs = array();
95 $this->formname = "table_" . $this->unique_id;
96 $this->tpl = new ilTemplate("tpl.table2.html", true, true, "Services/Table");
97
98 $lng->loadLanguageModule('tbl');
99
100 if(!$a_template_context)
101 {
102 $a_template_context = $this->getId();
103 }
104 $this->setContext($a_template_context);
105
106 // activate export mode
107 if(isset($_GET[$this->prefix."_xpt"]))
108 {
109 $this->export_mode = (int)$_GET[$this->prefix."_xpt"];
110 }
111
112 // template handling
113 if(isset($_GET[$this->prefix."_tpl"]))
114 {
115 $this->restoreTemplate($_GET[$this->prefix."_tpl"]);
116 }
117
118 $this->determineLimit();
119 $this->setIsDataTable(true);
120 $this->setEnableNumInfo(true);
122 }
123
129 function setOpenFormTag($a_val)
130 {
131 $this->open_form_tag = $a_val;
132 }
133
139 function getOpenFormTag()
140 {
142 }
143
149 function setCloseFormTag($a_val)
150 {
151 $this->close_form_tag = $a_val;
152 }
153
160 {
162 }
163
167 function determineLimit()
168 {
169 global $ilUser;
170
171 if ($this->limit_determined)
172 {
173 return;
174 }
175
176 $limit = 0;
177 if (isset($_GET[$this->prefix."_trows"]))
178 {
179 $this->storeProperty("rows", $_GET[$this->prefix."_trows"]);
180 $limit = $_GET[$this->prefix."_trows"];
181 $this->resetOffset();
182 }
183
184 if ($limit == 0)
185 {
186 $rows = $this->loadProperty("rows");
187 if ($rows > 0)
188 {
189 $limit = $rows;
190 }
191 else
192 {
193 if (is_object($ilUser))
194 {
195 $limit = $ilUser->getPref("hits_per_page");
196 }
197 else
198 {
199 $limit = 40;
200 }
201 }
202 }
203
204 $this->setLimit($limit);
205 $this->limit_determined = true;
206 }
207
214 {
215 return array();
216 }
217
222 {
223 if ($this->columns_determined)
224 {
225 return;
226 }
227
228 $old_sel = $this->loadProperty("selfields");
229
230 $stored = false;
231 if ($old_sel != "")
232 {
233 $sel_fields =
234 @unserialize($old_sel);
235 $stored = true;
236 }
237 if(!is_array($sel_fields))
238 {
239 $stored = false;
240 $sel_fields = array();
241 }
242
243 $this->selected_columns = array();
244 $set = false;
245 foreach ($this->getSelectableColumns() as $k => $c)
246 {
247 $this->selected_column[$k] = false;
248
249 $new_column = ($sel_fields[$k] === NULL);
250
251 if ($_POST["tblfsh".$this->getId()])
252 {
253 $set = true;
254 if (is_array($_POST["tblfs".$this->getId()]) && in_array($k, $_POST["tblfs".$this->getId()]))
255 {
256 $this->selected_column[$k] = true;
257 }
258 }
259 else if ($stored && !$new_column) // take stored values
260 {
261 $this->selected_column[$k] = $sel_fields[$k];
262 }
263 else // take default values
264 {
265 if ($new_column)
266 {
267 $set = true;
268 }
269 if ($c["default"])
270 {
271 $this->selected_column[$k] = true;
272 }
273 }
274 }
275
276 if ($old_sel != serialize($this->selected_column) && $set)
277 {
278 $this->storeProperty("selfields", serialize($this->selected_column));
279 }
280
281 $this->columns_determined = true;
282 }
283
290 function isColumnSelected($a_col)
291 {
292 return $this->selected_column[$a_col];
293 }
294
302 {
303 $scol = array();
304 foreach ($this->selected_column as $k => $v)
305 {
306 if ($v)
307 {
308 $scol[$k] = $k;
309 }
310 }
311 return $scol;
312 }
313
317 function &executeCommand()
318 {
319 global $ilCtrl;
320
321 $next_class = $ilCtrl->getNextClass($this);
322 $cmd = $ilCtrl->getCmd();
323
324 switch($next_class)
325 {
326 case 'ilformpropertydispatchgui':
327 include_once './Services/Form/classes/class.ilFormPropertyDispatchGUI.php';
328 $form_prop_dispatch = new ilFormPropertyDispatchGUI();
329 $this->initFilter();
330 $item = $this->getFilterItemByPostVar($_GET["postvar"]);
331 $form_prop_dispatch->setItem($item);
332 return $ilCtrl->forwardCommand($form_prop_dispatch);
333 break;
334
335 }
336 return false;
337 }
338
342 function resetOffset($a_in_determination = false)
343 {
344 if (!$this->nav_determined && !$a_in_determination)
345 {
347 }
348 $this->nav_value = $this->getOrderField().":".$this->getOrderDirection().":0";
349 $_GET[$this->getNavParameter()] =
350 $_POST[$this->getNavParameter()."1"] =
351 $this->nav_value;
352//echo $this->nav_value;
353 $this->setOffset(0);
354 }
355
360 function initFilter()
361 {
362 }
363
369 public function getParentObject()
370 {
371 return $this->parent_obj;
372 }
373
379 public function getParentCmd()
380 {
381 return $this->parent_cmd;
382 }
383
389 function setTopAnchor($a_val)
390 {
391 $this->top_anchor = $a_val;
392 }
393
399 function getTopAnchor()
400 {
401 return $this->top_anchor;
402 }
403
409 function setNoEntriesText($a_text)
410 {
411 $this->noentriestext = $a_text;
412 }
413
420 {
421 return $this->noentriestext;
422 }
423
429 function setIsDataTable($a_val)
430 {
431 $this->datatable = $a_val;
432 }
433
439 function getIsDataTable()
440 {
441 return $this->datatable;
442 }
443
449 function setEnableTitle($a_enabletitle)
450 {
451 $this->enabled["title"] = $a_enabletitle;
452 }
453
459 function getEnableTitle()
460 {
461 return $this->enabled["title"];
462 }
463
469 function setEnableHeader($a_enableheader)
470 {
471 $this->enabled["header"] = $a_enableheader;
472 }
473
480 {
481 return $this->enabled["header"];
482 }
483
489 function setEnableNumInfo($a_val)
490 {
491 $this->num_info = $a_val;
492 }
493
500 {
501 return $this->num_info;
502 }
503
507 final public function setTitle($a_title, $a_icon = 0, $a_icon_alt = 0)
508 {
509 parent::setTitle($a_title, $a_icon, $a_icon_alt);
510 }
511
517 function setDescription($a_val)
518 {
519 $this->description = $a_val;
520 }
521
527 function getDescription()
528 {
529 return $this->description;
530 }
531
537 function setOrderField($a_order_field)
538 {
539 $this->order_field = $a_order_field;
540 }
541
542 function getOrderField()
543 {
544 return $this->order_field;
545 }
546
547 final public function setData($a_data)
548 {
549 // check column names against given data (to ensure proper sorting)
550 if(DEVMODE &&
551 $this->enabled["header"] && $this->enabled["sort"] &&
552 $this->columns_determined && is_array($this->column) &&
553 is_array($a_data) && sizeof($a_data) && !$this->getExternalSorting())
554 {
555 $check = $a_data;
556 $check = array_keys(array_shift($check));
557 foreach($this->column as $col)
558 {
559 if($col["sort_field"] && !in_array($col["sort_field"], $check))
560 {
561 $invalid[] = $col["sort_field"];
562 }
563 }
564
565 // this triggers an error, if some columns are not set for some rows
566 // which may just be a representation of "null" values, e.g.
567 // ilAdvancedMDValues:queryForRecords works that way.
568/* if(sizeof($invalid))
569 {
570 trigger_error("The following columns are defined as sortable but".
571 " cannot be found in the given data: ".implode(", ", $invalid).
572 ". Sorting will not work properly.", E_USER_WARNING);
573 }*/
574 }
575
576 $this->row_data = $a_data;
577 }
578
579 final public function getData()
580 {
581 return $this->row_data;
582 }
583
584 final public function dataExists()
585 {
586 if (is_array($this->row_data))
587 {
588 if (count($this->row_data) > 0)
589 {
590 return true;
591 }
592 }
593 return false;
594 }
595
596 final public function setPrefix($a_prefix)
597 {
598 $this->prefix = $a_prefix;
599 }
600
601 final public function getPrefix()
602 {
603 return $this->prefix;
604 }
605
610 final function addFilterItem($a_input_item, $a_optional = false)
611 {
612 $a_input_item->setParent($this);
613 if (!$a_optional)
614 {
615 $this->filters[] = $a_input_item;
616 }
617 else
618 {
619 $this->optional_filters[] = $a_input_item;
620 }
621
622 // restore filter values (from stored view)
623 if($this->restore_filter)
624 {
625 if(array_key_exists($a_input_item->getFieldId(), $this->restore_filter_values))
626 {
627 $this->setFilterValue($a_input_item, $this->restore_filter_values[$a_input_item->getFieldId()]);
628 }
629 else
630 {
631 $this->setFilterValue($a_input_item, null); // #14949
632 }
633 }
634 }
635
645 function addFilterItemByMetaType($id, $type = self::FILTER_TEXT, $a_optional = false, $caption = NULL)
646 {
647 global $lng;
648
649 if(!$caption)
650 {
651 $caption = $lng->txt($id);
652 }
653
654 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
655
656 switch($type)
657 {
659 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
660 $item = new ilSelectInputGUI($caption, $id);
661 break;
662
664 include_once("./Services/Form/classes/class.ilDateTimeInputGUI.php");
665 $item = new ilDateTimeInputGUI($caption, $id);
666 $item->setMode(ilDateTimeInputGUI::MODE_INPUT);
667 break;
668
670 include_once("./Services/Form/classes/class.ilTextInputGUI.php");
671 $item = new ilTextInputGUI($caption, $id);
672 $item->setMaxLength(64);
673 $item->setSize(20);
674 // $item->setSubmitFormOnEnter(true);
675 break;
676
678 $lng->loadLanguageModule("meta");
679 include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
680 $item = new ilSelectInputGUI($caption, $id);
681 $options = array("" => $lng->txt("trac_all"));
682 foreach ($lng->getInstalledLanguages() as $lang_key)
683 {
684 $options[$lang_key] = $lng->txt("meta_l_".$lang_key);
685 }
686 $item->setOptions($options);
687 break;
688
690 include_once("./Services/Form/classes/class.ilCombinationInputGUI.php");
691 include_once("./Services/Form/classes/class.ilNumberInputGUI.php");
692 $item = new ilCombinationInputGUI($caption, $id);
693 $combi_item = new ilNumberInputGUI("", $id."_from");
694 $item->addCombinationItem("from", $combi_item, $lng->txt("from"));
695 $combi_item = new ilNumberInputGUI("", $id."_to");
696 $item->addCombinationItem("to", $combi_item, $lng->txt("to"));
697 $item->setComparisonMode(ilCombinationInputGUI::COMPARISON_ASCENDING);
698 $item->setMaxLength(7);
699 $item->setSize(20);
700 break;
701
703 include_once("./Services/Form/classes/class.ilCombinationInputGUI.php");
704 include_once("./Services/Form/classes/class.ilDateTimeInputGUI.php");
705 $item = new ilCombinationInputGUI($caption, $id);
706 $combi_item = new ilDateTimeInputGUI("", $id."_from");
707 $item->addCombinationItem("from", $combi_item, $lng->txt("from"));
708 $combi_item = new ilDateTimeInputGUI("", $id."_to");
709 $item->addCombinationItem("to", $combi_item, $lng->txt("to"));
710 $item->setComparisonMode(ilCombinationInputGUI::COMPARISON_ASCENDING);
711 $item->setMode(ilDateTimeInputGUI::MODE_INPUT);
712 break;
713
715 include_once("./Services/Form/classes/class.ilCombinationInputGUI.php");
716 include_once("./Services/Form/classes/class.ilDateTimeInputGUI.php");
717 $item = new ilCombinationInputGUI($caption, $id);
718 $combi_item = new ilDateTimeInputGUI("", $id."_from");
719 $combi_item->setShowTime(true);
720 $item->addCombinationItem("from", $combi_item, $lng->txt("from"));
721 $combi_item = new ilDateTimeInputGUI("", $id."_to");
722 $combi_item->setShowTime(true);
723 $item->addCombinationItem("to", $combi_item, $lng->txt("to"));
724 $item->setComparisonMode(ilCombinationInputGUI::COMPARISON_ASCENDING);
725 $item->setMode(ilDateTimeInputGUI::MODE_INPUT);
726 break;
727
729 $lng->loadLanguageModule("form");
730 include_once("./Services/Form/classes/class.ilCombinationInputGUI.php");
731 include_once("./Services/Form/classes/class.ilDurationInputGUI.php");
732 $item = new ilCombinationInputGUI($caption, $id);
733 $combi_item = new ilDurationInputGUI("", $id."_from");
734 $combi_item->setShowMonths(false);
735 $combi_item->setShowDays(true);
736 $combi_item->setShowSeconds(true);
737 $item->addCombinationItem("from", $combi_item, $lng->txt("from"));
738 $combi_item = new ilDurationInputGUI("", $id."_to");
739 $combi_item->setShowMonths(false);
740 $combi_item->setShowDays(true);
741 $combi_item->setShowSeconds(true);
742 $item->addCombinationItem("to", $combi_item, $lng->txt("to"));
743 $item->setComparisonMode(ilCombinationInputGUI::COMPARISON_ASCENDING);
744 break;
745
746 default:
747 return false;
748 }
749
750 $this->addFilterItem($item, $a_optional);
751 $item->readFromSession();
752 return $item;
753 }
754
758 final function getFilterItems($a_optionals = false)
759 {
760 if (!$a_optionals)
761 {
762 return $this->filters;
763 }
765 }
766
767 final function getFilterItemByPostVar($a_post_var)
768 {
769 foreach ($this->getFilterItems() as $item)
770 {
771 if ($item->getPostVar() == $a_post_var)
772 {
773 return $item;
774 }
775 }
776 foreach ($this->getFilterItems(true) as $item)
777 {
778 if ($item->getPostVar() == $a_post_var)
779 {
780 return $item;
781 }
782 }
783 return false;
784 }
785
791 function setFilterCols($a_val)
792 {
793 $this->filter_cols = $a_val;
794 }
795
801 function getFilterCols()
802 {
803 return $this->filter_cols;
804 }
805
811 function setDisableFilterHiding($a_val = true)
812 {
813 $this->disable_filter_hiding = $a_val;
814 }
815
822 {
824 }
825
832 function isFilterSelected($a_col)
833 {
834 return $this->selected_filter[$a_col];
835 }
836
844 {
845 $sfil = array();
846 foreach ($this->selected_filter as $k => $v)
847 {
848 if ($v)
849 {
850 $sfil[$k] = $k;
851 }
852 }
853 return $sfil;
854 }
855
863 {
864 if ($this->filters_determined)
865 {
866 return;
867 }
868
869 $old_sel = $this->loadProperty("selfilters");
870 $stored = false;
871 if ($old_sel != "")
872 {
873 $sel_filters =
874 @unserialize($old_sel);
875 $stored = true;
876 }
877 if(!is_array($sel_filters))
878 {
879 $stored = false;
880 $sel_filters = array();
881 }
882
883 $this->selected_filter = array();
884 $set = false;
885 foreach ($this->getFilterItems(true) as $item)
886 {
887 $k = $item->getPostVar();
888
889 $this->selected_filter[$k] = false;
890
891 if ($_POST["tblfsf".$this->getId()])
892 {
893 $set = true;
894 if (is_array($_POST["tblff".$this->getId()]) && in_array($k, $_POST["tblff".$this->getId()]))
895 {
896 $this->selected_filter[$k] = true;
897 }
898 else
899 {
900 $item->setValue(NULL);
901 $item->writeToSession();
902 }
903 }
904 else if ($stored) // take stored values
905 {
906 $this->selected_filter[$k] = $sel_filters[$k];
907 }
908 }
909
910 if ($old_sel != serialize($this->selected_filter) && $set)
911 {
912 $this->storeProperty("selfilters", serialize($this->selected_filter));
913 }
914
915 $this->filters_determined = true;
916 }
917
921 function setCustomPreviousNext($a_prev_link, $a_next_link)
922 {
923 $this->custom_prev_next = true;
924 $this->custom_prev = $a_prev_link;
925 $this->custom_next = $a_next_link;
926 }
927
934 final public function setFormAction($a_form_action, $a_multipart = false)
935 {
936 $this->form_action = $a_form_action;
937 $this->form_multipart = (bool)$a_multipart;
938 }
939
945 final public function getFormAction()
946 {
947 return $this->form_action;
948 }
949
955 function setFormName($a_formname)
956 {
957 $this->formname = $a_formname;
958 }
959
965 function getFormName()
966 {
967 return $this->formname;
968 }
969
975 function setId($a_val)
976 {
977 $this->id = $a_val;
978 if ($this->getPrefix() == "")
979 {
980 $this->setPrefix($a_val);
981 }
982 }
983
989 function getId()
990 {
991 return $this->id;
992 }
993
999 function setDisplayAsBlock($a_val)
1000 {
1001 $this->display_as_block = $a_val;
1002 }
1003
1010 {
1011 return $this->display_as_block;
1012 }
1013
1020 {
1022 }
1023
1029 function setSelectAllCheckbox($a_select_all_checkbox)
1030 {
1031 $this->select_all_checkbox = $a_select_all_checkbox;
1032 }
1033
1039 function setExternalSorting($a_val)
1040 {
1041 $this->ext_sort = $a_val;
1042 }
1043
1050 {
1051 return $this->ext_sort;
1052 }
1053
1060 function setFilterCommand($a_val, $a_caption = null)
1061 {
1062 $this->filter_cmd = $a_val;
1063 $this->filter_cmd_txt = $a_caption;
1064 }
1065
1072 {
1073 return $this->filter_cmd;
1074 }
1075
1082 function setResetCommand($a_val, $a_caption = null)
1083 {
1084 $this->reset_cmd = $a_val;
1085 $this->reset_cmd_txt = $a_caption;
1086 }
1087
1094 {
1095 return $this->reset_cmd;
1096 }
1097
1104 {
1105 $this->ext_seg = $a_val;
1106 }
1107
1114 {
1115 return $this->ext_seg;
1116 }
1117
1124 final public function setRowTemplate($a_template, $a_template_dir = "")
1125 {
1126 $this->row_template = $a_template;
1127 $this->row_template_dir = $a_template_dir;
1128 }
1129
1135 function setDefaultOrderField($a_defaultorderfield)
1136 {
1137 $this->defaultorderfield = $a_defaultorderfield;
1138 }
1139
1146 {
1147 return $this->defaultorderfield;
1148 }
1149
1155 function setDefaultOrderDirection($a_defaultorderdirection)
1156 {
1157 $this->defaultorderdirection = $a_defaultorderdirection;
1158 }
1159
1166 {
1167 return $this->defaultorderdirection;
1168 }
1169
1170 /*
1171 * Removes all command buttons from the table
1172 *
1173 * @access public
1174 */
1175 public function clearCommandButtons()
1176 {
1177 $this->buttons = array();
1178 }
1179
1186 function addCommandButton($a_cmd, $a_text, $a_onclick = '', $a_id = "", $a_class = null)
1187 {
1188 $this->buttons[] = array("cmd" => $a_cmd, "text" => $a_text, 'onclick' => $a_onclick,
1189 "id" => $a_id, "class" => $a_class);
1190 }
1191
1198 {
1199 $this->buttons[] = $a_button;
1200 }
1201
1212 function addSelectionButton($a_sel_var, $a_options, $a_cmd, $a_text, $a_default_selection = '')
1213 {
1214echo "ilTabl2GUI->addSelectionButton() has been deprecated with 4.2. Please try to move the drop-down to ilToolbarGUI.";
1215// $this->sel_buttons[] = array("sel_var" => $a_sel_var, "options" => $a_options, "selected" => $a_default_selection, "cmd" => $a_cmd, "text" => $a_text);
1216 }
1217
1227 public function addMultiItemSelectionButton($a_sel_var, $a_options, $a_cmd, $a_text, $a_default_selection = '')
1228 {
1229 $this->mi_sel_buttons[] = array("sel_var" => $a_sel_var, "options" => $a_options, "selected" => $a_default_selection, "cmd" => $a_cmd, "text" => $a_text);
1230 $this->addHiddenInput("cmd_sv[".$a_cmd."]", $a_sel_var);
1231 }
1232
1233
1234
1241 function setCloseCommand($a_link)
1242 {
1243 $this->close_command = $a_link;
1244 }
1245
1252 function addMultiCommand($a_cmd, $a_text)
1253 {
1254 $this->multi[] = array("cmd" => $a_cmd, "text" => $a_text);
1255 }
1256
1263 public function addHiddenInput($a_name, $a_value)
1264 {
1265 $this->hidden_inputs[] = array("name" => $a_name, "value" => $a_value);
1266 }
1267
1274 function addHeaderCommand($a_href, $a_text, $a_target = "", $a_img = "")
1275 {
1276 $this->header_commands[] = array("href" => $a_href, "text" => $a_text,
1277 "target" => $a_target, "img" => $a_img);
1278 }
1279
1285 function setTopCommands($a_val)
1286 {
1287 $this->top_commands = $a_val;
1288 }
1289
1296 {
1297 return $this->top_commands;
1298 }
1299
1307 final public function addColumn($a_text, $a_sort_field = "", $a_width = "",
1308 $a_is_checkbox_action_column = false, $a_class = "", $a_tooltip = "")
1309 {
1310 $this->column[] = array(
1311 "text" => $a_text,
1312 "sort_field" => $a_sort_field,
1313 "width" => $a_width,
1314 "is_checkbox_action_column" => $a_is_checkbox_action_column,
1315 "class" => $a_class,
1316 "tooltip" => $a_tooltip
1317 );
1318 if ($a_sort_field != "")
1319 {
1320 $this->sortable_fields[] = $a_sort_field;
1321 }
1322 $this->column_count = count($this->column);
1323 }
1324
1325
1326 final public function getNavParameter()
1327 {
1328 return $this->prefix."_table_nav";
1329 }
1330
1331 function setOrderLink($sort_field, $order_dir)
1332 {
1333 global $ilCtrl, $ilUser;
1334
1335 $hash = "";
1336 if (is_object($ilUser) && $ilUser->getPref("screen_reader_optimization"))
1337 {
1338 $hash = "#".$this->getTopAnchor();
1339 }
1340
1341 $old = $_GET[$this->getNavParameter()];
1342
1343 // set order link
1344 $ilCtrl->setParameter($this->parent_obj,
1345 $this->getNavParameter(),
1346 $sort_field.":".$order_dir.":".$this->offset);
1347 $this->tpl->setVariable("TBL_ORDER_LINK",
1348 $ilCtrl->getLinkTarget($this->parent_obj, $this->parent_cmd).$hash);
1349
1350 // set old value of nav variable
1351 $ilCtrl->setParameter($this->parent_obj,
1352 $this->getNavParameter(), $old);
1353 }
1354
1355 function fillHeader()
1356 {
1357 global $lng;
1358
1359 $allcolumnswithwidth = true;
1360 foreach ((array) $this->column as $idx => $column)
1361 {
1362 if (!strlen($column["width"]))
1363 {
1364 $allcolumnswithwidth = false;
1365 }
1366 else if($column["width"] == "1")
1367 {
1368 // IE does not like 1 but seems to work with 1%
1369 $this->column[$idx]["width"] = "1%";
1370 }
1371 }
1372 if ($allcolumnswithwidth)
1373 {
1374 foreach ((array) $this->column as $column)
1375 {
1376 $this->tpl->setCurrentBlock("tbl_colgroup_column");
1377 $this->tpl->setVariable("COLGROUP_COLUMN_WIDTH", $column["width"]);
1378 $this->tpl->parseCurrentBlock();
1379 }
1380 }
1381 $ccnt = 0;
1382 foreach ((array) $this->column as $column)
1383 {
1384 $ccnt++;
1385
1386 //tooltip
1387 if ($column["tooltip"] != "")
1388 {
1389 include_once("./Services/UIComponent/Tooltip/classes/class.ilTooltipGUI.php");
1390 ilTooltipGUI::addTooltip("thc_".$this->getId()."_".$ccnt, $column["tooltip"]);
1391 }
1392 if (!$this->enabled["sort"] || $column["sort_field"] == "" || $column["is_checkbox_action_column"])
1393 {
1394 $this->tpl->setCurrentBlock("tbl_header_no_link");
1395 if ($column["width"] != "")
1396 {
1397 $this->tpl->setVariable("TBL_COLUMN_WIDTH_NO_LINK"," width=\"".$column["width"]."\"");
1398 }
1399 if (!$column["is_checkbox_action_column"])
1400 {
1401 $this->tpl->setVariable("TBL_HEADER_CELL_NO_LINK",
1402 $column["text"]);
1403 }
1404 else
1405 {
1406 $this->tpl->setVariable("TBL_HEADER_CELL_NO_LINK",
1407 ilUtil::img(ilUtil::getImagePath("spacer.png"), $lng->txt("action")));
1408 }
1409 $this->tpl->setVariable("HEAD_CELL_NL_ID", "thc_".$this->getId()."_".$ccnt);
1410
1411 if ($column["class"] != "")
1412 {
1413 $this->tpl->setVariable("TBL_HEADER_CLASS"," " . $column["class"]);
1414 }
1415 $this->tpl->parseCurrentBlock();
1416 $this->tpl->touchBlock("tbl_header_th");
1417 continue;
1418 }
1419 if (($column["sort_field"] == $this->order_field) && ($this->order_direction != ""))
1420 {
1421 $this->tpl->setCurrentBlock("tbl_order_image");
1422 if ($this->order_direction == "asc")
1423 {
1424 $this->tpl->setVariable("ORDER_CLASS", "glyphicon glyphicon-arrow-up");
1425 }
1426 else
1427 {
1428 $this->tpl->setVariable("ORDER_CLASS", "glyphicon glyphicon-arrow-down");
1429 }
1430 $this->tpl->setVariable("IMG_ORDER_ALT", $this->lng->txt("change_sort_direction"));
1431 $this->tpl->parseCurrentBlock();
1432 }
1433
1434 $this->tpl->setCurrentBlock("tbl_header_cell");
1435 $this->tpl->setVariable("TBL_HEADER_CELL", $column["text"]);
1436 $this->tpl->setVariable("HEAD_CELL_ID", "thc_".$this->getId()."_".$ccnt);
1437
1438 // only set width if a value is given for that column
1439 if ($column["width"] != "")
1440 {
1441 $this->tpl->setVariable("TBL_COLUMN_WIDTH"," width=\"".$column["width"]."\"");
1442 }
1443
1444 $lng_sort_column = $this->lng->txt("sort_by_this_column");
1445 $this->tpl->setVariable("TBL_ORDER_ALT",$lng_sort_column);
1446
1447 $order_dir = "asc";
1448
1449 if ($column["sort_field"] == $this->order_field)
1450 {
1451 $order_dir = $this->sort_order;
1452
1453 $lng_change_sort = $this->lng->txt("change_sort_direction");
1454 $this->tpl->setVariable("TBL_ORDER_ALT",$lng_change_sort);
1455 }
1456
1457 if ($column["class"] != "")
1458 {
1459 $this->tpl->setVariable("TBL_HEADER_CLASS"," " . $column["class"]);
1460 }
1461 $this->setOrderLink($column["sort_field"], $order_dir);
1462 $this->tpl->parseCurrentBlock();
1463 $this->tpl->touchBlock("tbl_header_th");
1464 }
1465
1466 $this->tpl->setCurrentBlock("tbl_header");
1467 $this->tpl->parseCurrentBlock();
1468 }
1469
1473 protected function prepareOutput()
1474 {
1475 }
1476
1477
1481 function determineOffsetAndOrder($a_omit_offset = false)
1482 {
1483 global $ilUser;
1484
1485 if ($this->nav_determined)
1486 {
1487 return true;
1488 }
1489
1490 if ($_POST[$this->getNavParameter()."1"] != "")
1491 {
1492 if ($_POST[$this->getNavParameter()."1"] != $_POST[$this->getNavParameter()])
1493 {
1494 $this->nav_value = $_POST[$this->getNavParameter()."1"];
1495 }
1496 else if ($_POST[$this->getNavParameter()."2"] != $_POST[$this->getNavParameter()])
1497 {
1498 $this->nav_value = $_POST[$this->getNavParameter()."2"];
1499 }
1500 }
1501 elseif($_GET[$this->getNavParameter()])
1502 {
1503 $this->nav_value = $_GET[$this->getNavParameter()];
1504 }
1505 elseif($_SESSION[$this->getNavParameter()] != "")
1506 {
1507 $this->nav_value = $_SESSION[$this->getNavParameter()];
1508 }
1509
1510 if ($this->nav_value == "" && $this->getId() != "" && $ilUser->getId() != ANONYMOUS_USER_ID)
1511 {
1512 $order = $this->loadProperty("order");
1513 if (in_array($order, $this->sortable_fields))
1514 {
1515 $direction = $this->loadProperty("direction");
1516 }
1517 else
1518 {
1519 $direction = $this->getDefaultOrderDirection();
1520 }
1521 // get order and direction from db
1522 $this->nav_value =
1523 $order.":".
1524 $direction.":".
1525 $this->loadProperty("offset");
1526 }
1527 $nav = explode(":", $this->nav_value);
1528
1529 // $nav[0] is order by
1530 $this->setOrderField(($nav[0] != "") ? $nav[0] : $this->getDefaultOrderField());
1531 $this->setOrderDirection(($nav[1] != "") ? $nav[1] : $this->getDefaultOrderDirection());
1532
1533 if (!$a_omit_offset)
1534 {
1535 // #8904: offset must be discarded when no limit is given
1536 if(!$this->getExternalSegmentation() && $this->limit_determined && $this->limit == 9999)
1537 {
1538 $this->resetOffset(true);
1539 }
1540 else if (!$this->getExternalSegmentation() && $nav[2] >= $this->max_count)
1541 {
1542 $this->resetOffset(true);
1543 }
1544 else
1545 {
1546 $this->setOffset($nav[2]);
1547 }
1548 }
1549
1550 if (!$a_omit_offset)
1551 {
1552 $this->nav_determined = true;
1553 }
1554 }
1555
1557 {
1558 if ($this->getOrderField() != "")
1559 {
1560 $this->storeProperty("order", $this->getOrderField());
1561 }
1562 if ($this->getOrderDirection() != "")
1563 {
1564 $this->storeProperty("direction", $this->getOrderDirection());
1565 }
1566//echo "-".$this->getOffset()."-";
1567 if ($this->getOffset() !== "")
1568 {
1569 $this->storeProperty("offset", $this->getOffset());
1570 }
1571 }
1572
1573
1577 public function getHTML()
1578 {
1579 global $lng, $ilCtrl, $ilUser;
1580
1581 if($this->getExportMode())
1582 {
1583 $this->exportData($this->getExportMode(), true);
1584 }
1585
1586 $this->prepareOutput();
1587
1588 if (is_object($ilCtrl) && $this->getId() == "")
1589 {
1590 $ilCtrl->saveParameter($this->getParentObject(), $this->getNavParameter());
1591 }
1592
1593 if(!$this->getPrintMode())
1594 {
1595 // set form action
1596 if ($this->form_action != "" && $this->getOpenFormTag())
1597 {
1598 $hash = "";
1599 if (is_object($ilUser) && $ilUser->getPref("screen_reader_optimization"))
1600 {
1601 $hash = "#".$this->getTopAnchor();
1602 }
1603
1604 if((bool)$this->form_multipart)
1605 {
1606 $this->tpl->touchBlock("form_multipart_bl");
1607 }
1608
1609 if($this->getPreventDoubleSubmission())
1610 {
1611 $this->tpl->touchBlock("pdfs");
1612 }
1613
1614 $this->tpl->setCurrentBlock("tbl_form_header");
1615 $this->tpl->setVariable("FORMACTION", $this->getFormAction().$hash);
1616 $this->tpl->setVariable("FORMNAME", $this->getFormName());
1617 $this->tpl->parseCurrentBlock();
1618 }
1619
1620 if ($this->form_action != "" && $this->getCloseFormTag())
1621 {
1622 $this->tpl->touchBlock("tbl_form_footer");
1623 }
1624 }
1625
1626 if(!$this->enabled['content'])
1627 {
1628 return $this->render();
1629 }
1630
1631 if (!$this->getExternalSegmentation())
1632 {
1633 $this->setMaxCount(count($this->row_data));
1634 }
1635
1636 $this->determineOffsetAndOrder();
1637
1638 $this->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
1639
1640 $data = $this->getData();
1641 if($this->dataExists())
1642 {
1643 // sort
1644 if (!$this->getExternalSorting() && $this->enabled["sort"])
1645 {
1647 $this->getOrderDirection(), $this->numericOrdering($this->getOrderField()));
1648 }
1649
1650 // slice
1651 if (!$this->getExternalSegmentation())
1652 {
1653 $data = array_slice($data, $this->getOffset(), $this->getLimit());
1654 }
1655 }
1656
1657 // fill rows
1658 if($this->dataExists())
1659 {
1660 if($this->getPrintMode())
1661 {
1663 }
1664
1665 $this->tpl->addBlockFile("TBL_CONTENT", "tbl_content", $this->row_template,
1666 $this->row_template_dir);
1667
1668 foreach($data as $set)
1669 {
1670 $this->tpl->setCurrentBlock("tbl_content");
1671 $this->css_row = ($this->css_row != "tblrow1")
1672 ? "tblrow1"
1673 : "tblrow2";
1674 $this->tpl->setVariable("CSS_ROW", $this->css_row);
1675
1676 $this->fillRow($set);
1677 $this->tpl->setCurrentBlock("tbl_content");
1678 $this->tpl->parseCurrentBlock();
1679 }
1680 }
1681 else
1682 {
1683 // add standard no items text (please tell me, if it messes something up, alex, 29.8.2008)
1684 $no_items_text = (trim($this->getNoEntriesText()) != '')
1685 ? $this->getNoEntriesText()
1686 : $lng->txt("no_items");
1687
1688 $this->css_row = ($this->css_row != "tblrow1")
1689 ? "tblrow1"
1690 : "tblrow2";
1691
1692 $this->tpl->setCurrentBlock("tbl_no_entries");
1693 $this->tpl->setVariable('TBL_NO_ENTRY_CSS_ROW', $this->css_row);
1694 $this->tpl->setVariable('TBL_NO_ENTRY_COLUMN_COUNT', $this->column_count);
1695 $this->tpl->setVariable('TBL_NO_ENTRY_TEXT', trim($no_items_text));
1696 $this->tpl->parseCurrentBlock();
1697 }
1698
1699
1700 if(!$this->getPrintMode())
1701 {
1702 $this->fillFooter();
1703
1704 $this->fillHiddenRow();
1705
1706 $this->fillActionRow();
1707
1708 $this->storeNavParameter();
1709 }
1710
1711 return $this->render();
1712 }
1713
1719 function numericOrdering($a_field)
1720 {
1721 return false;
1722 }
1723
1728 function render()
1729 {
1730 global $lng, $ilCtrl;
1731
1732 $this->tpl->setVariable("CSS_TABLE",$this->getStyle("table"));
1733 $this->tpl->setVariable("DATA_TABLE", (int) $this->getIsDataTable());
1734 if ($this->getId() != "")
1735 {
1736 $this->tpl->setVariable("ID", 'id="'.$this->getId().'"');
1737 }
1738
1739 // description
1740 if ($this->getDescription() != "")
1741 {
1742 $this->tpl->setCurrentBlock("tbl_header_description");
1743 $this->tpl->setVariable("TBL_DESCRIPTION", $this->getDescription());
1744 $this->tpl->parseCurrentBlock();
1745 }
1746
1747 if(!$this->getPrintMode())
1748 {
1749 $this->renderFilter();
1750 }
1751
1752 if ($this->getDisplayAsBlock())
1753 {
1754 $this->tpl->touchBlock("outer_start_1");
1755 $this->tpl->touchBlock("outer_end_1");
1756 }
1757 else
1758 {
1759 $this->tpl->touchBlock("outer_start_2");
1760 $this->tpl->touchBlock("outer_end_2");
1761 }
1762
1763 // table title and icon
1764 if ($this->enabled["title"] && ($this->title != ""
1765 || $this->icon != "" || count($this->header_commands) > 0 ||
1766 $this->headerHTML != "" || $this->close_command != ""))
1767 {
1768 if ($this->enabled["icon"])
1769 {
1770 $this->tpl->setCurrentBlock("tbl_header_title_icon");
1771 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath($this->icon));
1772 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->icon_alt);
1773 $this->tpl->parseCurrentBlock();
1774 }
1775
1776 if(!$this->getPrintMode())
1777 {
1778 foreach($this->header_commands as $command)
1779 {
1780 if ($command["img"] != "")
1781 {
1782 $this->tpl->setCurrentBlock("tbl_header_img_link");
1783 if ($command["target"] != "")
1784 {
1785 $this->tpl->setVariable("TARGET_IMG_LINK",
1786 'target="'.$command["target"].'"');
1787 }
1788 $this->tpl->setVariable("ALT_IMG_LINK", $command["text"]);
1789 $this->tpl->setVariable("HREF_IMG_LINK", $command["href"]);
1790 $this->tpl->setVariable("SRC_IMG_LINK",
1791 $command["img"]);
1792 $this->tpl->parseCurrentBlock();
1793 }
1794 else
1795 {
1796 $this->tpl->setCurrentBlock("head_cmd");
1797 $this->tpl->setVariable("TXT_HEAD_CMD", $command["text"]);
1798 $this->tpl->setVariable("HREF_HEAD_CMD", $command["href"]);
1799 $this->tpl->parseCurrentBlock();
1800 }
1801 }
1802 }
1803
1804 if (isset ($this->headerHTML)) {
1805 $this->tpl->setCurrentBlock("tbl_header_html");
1806 $this->tpl->setVariable ("HEADER_HTML", $this->headerHTML);
1807 $this->tpl->parseCurrentBlock();
1808 }
1809
1810 // close command
1811 if ($this->close_command != "")
1812 {
1813 $this->tpl->setCurrentBlock("tbl_header_img_link");
1814 $this->tpl->setVariable("ALT_IMG_LINK",$lng->txt("close"));
1815 $this->tpl->setVariable("HREF_IMG_LINK",$this->close_command);
1816 $this->tpl->parseCurrentBlock();
1817 }
1818
1819 $this->tpl->setCurrentBlock("tbl_header_title");
1820 $this->tpl->setVariable("TBL_TITLE",$this->title);
1821 $this->tpl->setVariable("TOP_ANCHOR",$this->getTopAnchor());
1822 if ($this->getDisplayAsBlock())
1823 {
1824 $this->tpl->setVariable("BLK_CLASS", "Block");
1825 }
1826 $this->tpl->parseCurrentBlock();
1827 }
1828
1829 // table header
1830 if ($this->enabled["header"])
1831 {
1832 $this->fillHeader();
1833 }
1834
1835 $this->tpl->touchBlock("tbl_table_end");
1836
1837 return $this->tpl->get();
1838 }
1839
1843 private function renderFilter()
1844 {
1845 global $lng, $tpl;
1846
1847 $filter = $this->getFilterItems();
1848 $opt_filter = $this->getFilterItems(true);
1849
1850 $tpl->addJavascript("./Services/Table/js/ServiceTable.js");
1851
1852 if (count($filter) == 0 && count($opt_filter) == 0)
1853 {
1854 return;
1855 }
1856
1857 include_once("./Services/YUI/classes/class.ilYuiUtil.php");
1859
1860 $ccnt = 0;
1861
1862 // render standard filter
1863 if (count($filter) > 0)
1864 {
1865 foreach ($filter as $item)
1866 {
1867 if ($ccnt >= $this->getFilterCols())
1868 {
1869 $this->tpl->setCurrentBlock("filter_row");
1870 $this->tpl->parseCurrentBlock();
1871 $ccnt = 0;
1872 }
1873 $this->tpl->setCurrentBlock("filter_item");
1874 $this->tpl->setVariable("OPTION_NAME",
1875 $item->getTitle());
1876 $this->tpl->setVariable("F_INPUT_ID",
1877 $item->getFieldId());
1878 $this->tpl->setVariable("INPUT_HTML",
1879 $item->getTableFilterHTML());
1880 $this->tpl->parseCurrentBlock();
1881 $ccnt++;
1882 }
1883 }
1884
1885 // render optional filter
1886 if (count($opt_filter) > 0)
1887 {
1888 $this->determineSelectedFilters();
1889
1890 foreach ($opt_filter as $item)
1891 {
1892 if($this->isFilterSelected($item->getPostVar()))
1893 {
1894 if ($ccnt >= $this->getFilterCols())
1895 {
1896 $this->tpl->setCurrentBlock("filter_row");
1897 $this->tpl->parseCurrentBlock();
1898 $ccnt = 0;
1899 }
1900 $this->tpl->setCurrentBlock("filter_item");
1901 $this->tpl->setVariable("OPTION_NAME",
1902 $item->getTitle());
1903 $this->tpl->setVariable("F_INPUT_ID",
1904 $item->getFieldId());
1905 $this->tpl->setVariable("INPUT_HTML",
1906 $item->getTableFilterHTML());
1907 $this->tpl->parseCurrentBlock();
1908 $ccnt++;
1909 }
1910 }
1911
1912 // filter selection
1913 $items = array();
1914 foreach ($opt_filter as $item)
1915 {
1916 $k = $item->getPostVar();
1917 $items[$k] = array("txt" => $item->getTitle(),
1918 "selected" => $this->isFilterSelected($k));
1919 }
1920
1921 include_once("./Services/UIComponent/CheckboxListOverlay/classes/class.ilCheckboxListOverlayGUI.php");
1922 $cb_over = new ilCheckboxListOverlayGUI("tbl_filters_".$this->getId());
1923 $cb_over->setLinkTitle($lng->txt("optional_filters"));
1924 $cb_over->setItems($items);
1925
1926 $cb_over->setFormCmd($this->getParentCmd());
1927 $cb_over->setFieldVar("tblff".$this->getId());
1928 $cb_over->setHiddenVar("tblfsf".$this->getId());
1929
1930 $cb_over->setSelectionHeaderClass("ilTableMenuItem");
1931 $this->tpl->setCurrentBlock("filter_select");
1932
1933 // apply should be the first submit because of enter/return, inserting hidden submit
1934 $this->tpl->setVariable("HIDDEN_CMD_APPLY", $this->filter_cmd);
1935
1936 $this->tpl->setVariable("FILTER_SELECTOR", $cb_over->getHTML());
1937 $this->tpl->parseCurrentBlock();
1938 }
1939
1940 // if any filter
1941 if($ccnt > 0 || count($opt_filter) > 0)
1942 {
1943 $this->tpl->setVariable("TXT_FILTER", $lng->txt("filter"));
1944
1945 if($ccnt > 0)
1946 {
1947 if ($ccnt < $this->getFilterCols())
1948 {
1949 for($i = $ccnt; $i<=$this->getFilterCols(); $i++)
1950 {
1951 $this->tpl->touchBlock("filter_empty_cell");
1952 }
1953 }
1954 $this->tpl->setCurrentBlock("filter_row");
1955 $this->tpl->parseCurrentBlock();
1956
1957 $this->tpl->setCurrentBlock("filter_buttons");
1958 $this->tpl->setVariable("CMD_APPLY", $this->filter_cmd);
1959 $this->tpl->setVariable("TXT_APPLY", $this->filter_cmd_txt
1960 ? $this->filter_cmd_txt
1961 : $lng->txt("apply_filter"));
1962 $this->tpl->setVariable("CMD_RESET", $this->reset_cmd);
1963 $this->tpl->setVariable("TXT_RESET", $this->reset_cmd_txt
1964 ? $this->reset_cmd_txt
1965 : $lng->txt("reset_filter"));
1966 }
1967 else if(count($opt_filter) > 0)
1968 {
1969 $this->tpl->setCurrentBlock("optional_filter_hint");
1970 $this->tpl->setVariable('TXT_OPT_HINT', $lng->txt('optional_filter_hint'));
1971 $this->tpl->parseCurrentBlock();
1972 }
1973
1974 $this->tpl->setCurrentBlock("filter_section");
1975 $this->tpl->setVariable("FIL_ID", $this->getId());
1976 $this->tpl->parseCurrentBlock();
1977
1978 // (keep) filter hidden?
1979 if ($this->loadProperty("filter") != 1)
1980 {
1981 if (!$this->getDisableFilterHiding())
1982 {
1983 $this->tpl->setCurrentBlock("filter_hidden");
1984 $this->tpl->setVariable("FI_ID", $this->getId());
1985 $this->tpl->parseCurrentBlock();
1986 }
1987 }
1988 }
1989 }
1990
1994 public function writeFilterToSession()
1995 {
1996 global $lng;
1997
1998 $filter = $this->getFilterItems();
1999 $opt_filter = $this->getFilterItems(true);
2000
2001 foreach ($filter as $item)
2002 {
2003 if ($item->checkInput())
2004 {
2005 $item->setValueByArray($_POST);
2006 $item->writeToSession();
2007 }
2008 }
2009 foreach ($opt_filter as $item)
2010 {
2011 if ($item->checkInput())
2012 {
2013 $item->setValueByArray($_POST);
2014 $item->writeToSession();
2015 }
2016 }
2017
2018 // #13209
2019 unset($_REQUEST["tbltplcrt"]);
2020 unset($_REQUEST["tbltpldel"]);
2021 }
2022
2026 public function resetFilter()
2027 {
2028 global $lng;
2029
2030 $filter = $this->getFilterItems();
2031 $opt_filter = $this->getFilterItems(true);
2032
2033 foreach ($filter as $item)
2034 {
2035 if ($item->checkInput())
2036 {
2037 $item->setValueByArray($_POST);
2038 $item->clearFromSession();
2039 }
2040 }
2041 foreach ($opt_filter as $item)
2042 {
2043 if ($item->checkInput())
2044 {
2045 $item->setValueByArray($_POST);
2046 $item->clearFromSession();
2047 }
2048 }
2049
2050 // #13209
2051 unset($_REQUEST["tbltplcrt"]);
2052 unset($_REQUEST["tbltpldel"]);
2053 }
2054
2061 protected function fillRow($a_set)
2062 {
2063 foreach ($a_set as $key => $value)
2064 {
2065 $this->tpl->setVariable("VAL_".strtoupper($key), $value);
2066 }
2067 }
2068
2072 function fillFooter()
2073 {
2074 global $lng, $ilCtrl, $ilUser;
2075
2076 $footer = false;
2077
2078 // select all checkbox
2079 if ((strlen($this->getFormName())) && (strlen($this->getSelectAllCheckbox())) && $this->dataExists())
2080 {
2081 $this->tpl->setCurrentBlock("select_all_checkbox");
2082 $this->tpl->setVariable("SELECT_ALL_TXT_SELECT_ALL", $lng->txt("select_all"));
2083 $this->tpl->setVariable("SELECT_ALL_CHECKBOX_NAME", $this->getSelectAllCheckbox());
2084 $this->tpl->setVariable("SELECT_ALL_FORM_NAME", $this->getFormName());
2085 $this->tpl->setVariable("CHECKBOXNAME", "chb_select_all_" . $this->unique_id);
2086 $this->tpl->parseCurrentBlock();
2087 }
2088
2089 // table footer numinfo
2090 if ($this->enabled["numinfo"] && $this->enabled["footer"])
2091 {
2092 $start = $this->offset + 1; // compute num info
2093 if (!$this->dataExists())
2094 {
2095 $start = 0;
2096 }
2097 $end = $this->offset + $this->limit;
2098
2099 if ($end > $this->max_count or $this->limit == 0)
2100 {
2101 $end = $this->max_count;
2102 }
2103
2104 if ($this->max_count > 0)
2105 {
2106 if ($this->lang_support)
2107 {
2108 $numinfo = "(".$start." - ".$end." ".strtolower($this->lng->txt("of"))." ".$this->max_count.")";
2109 }
2110 else
2111 {
2112 $numinfo = "(".$start." - ".$end." of ".$this->max_count.")";
2113 }
2114 }
2115 if ($this->max_count > 0)
2116 {
2117 if ($this->getEnableNumInfo())
2118 {
2119 $this->tpl->setCurrentBlock("tbl_footer_numinfo");
2120 $this->tpl->setVariable("NUMINFO", $numinfo);
2121 $this->tpl->parseCurrentBlock();
2122 }
2123 }
2124 $footer = true;
2125 }
2126
2127 // table footer linkbar
2128 if ($this->enabled["linkbar"] && $this->enabled["footer"] && $this->limit != 0
2129 && $this->max_count > 0)
2130 {
2131 $layout = array(
2132 "link" => $this->footer_style,
2133 "prev" => $this->footer_previous,
2134 "next" => $this->footer_next,
2135 );
2136 //if (!$this->getDisplayAsBlock())
2137 //{
2138 $linkbar = $this->getLinkbar("1");
2139 $this->tpl->setCurrentBlock("tbl_footer_linkbar");
2140 $this->tpl->setVariable("LINKBAR", $linkbar);
2141 $this->tpl->parseCurrentBlock();
2142 $linkbar = true;
2143 //}
2144 $footer = true;
2145 }
2146
2147 // column selector
2148 if (count($this->getSelectableColumns()) > 0)
2149 {
2150 $items = array();
2151 foreach ($this->getSelectableColumns() as $k => $c)
2152 {
2153 $items[$k] = array("txt" => $c["txt"],
2154 "selected" => $this->isColumnSelected($k));
2155 }
2156 include_once("./Services/UIComponent/CheckboxListOverlay/classes/class.ilCheckboxListOverlayGUI.php");
2157 $cb_over = new ilCheckboxListOverlayGUI("tbl_".$this->getId());
2158 $cb_over->setLinkTitle($lng->txt("columns"));
2159 $cb_over->setItems($items);
2160 //$cb_over->setUrl("./ilias.php?baseClass=ilTablePropertiesStorage&table_id=".
2161 // $this->getId()."&cmd=saveSelectedFields&user_id=".$ilUser->getId());
2162 $cb_over->setFormCmd($this->getParentCmd());
2163 $cb_over->setFieldVar("tblfs".$this->getId());
2164 $cb_over->setHiddenVar("tblfsh".$this->getId());
2165 $cb_over->setSelectionHeaderClass("ilTableMenuItem");
2166 $column_selector = $cb_over->getHTML();
2167 $footer = true;
2168 }
2169
2170 if($this->getShowTemplates() && is_object($ilUser))
2171 {
2172 // template handling
2173 if(isset($_REQUEST["tbltplcrt"]) && $_REQUEST["tbltplcrt"])
2174 {
2175 if($this->saveTemplate($_REQUEST["tbltplcrt"]))
2176 {
2177 ilUtil::sendSuccess($lng->txt("tbl_template_created"));
2178 }
2179 }
2180 else if(isset($_REQUEST["tbltpldel"]) && $_REQUEST["tbltpldel"])
2181 {
2182 if($this->deleteTemplate($_REQUEST["tbltpldel"]))
2183 {
2184 ilUtil::sendSuccess($lng->txt("tbl_template_deleted"));
2185 }
2186 }
2187
2188 $create_id = "template_create_overlay_".$this->getId();
2189 $delete_id = "template_delete_overlay_".$this->getId();
2190 $list_id = "template_stg_".$this->getId();
2191
2192 include_once("./Services/Table/classes/class.ilTableTemplatesStorage.php");
2193 $storage = new ilTableTemplatesStorage();
2194 $templates = $storage->getNames($this->getContext(), $ilUser->getId());
2195
2196 include_once("./Services/UIComponent/Overlay/classes/class.ilOverlayGUI.php");
2197
2198 // form to delete template
2199 if(sizeof($templates))
2200 {
2201 $overlay = new ilOverlayGUI($delete_id);
2202 $overlay->setTrigger($list_id."_delete");
2203 $overlay->setAnchor("ilAdvSelListAnchorElement_".$list_id);
2204 $overlay->setAutoHide(false);
2205 $overlay->add();
2206
2207 $lng->loadLanguageModule("form");
2208 $this->tpl->setCurrentBlock("template_editor_delete_item");
2209 $this->tpl->setVariable("TEMPLATE_DELETE_OPTION_VALUE", "");
2210 $this->tpl->setVariable("TEMPLATE_DELETE_OPTION", "- ".$lng->txt("form_please_select")." -");
2211 $this->tpl->parseCurrentBlock();
2212 foreach($templates as $name)
2213 {
2214 $this->tpl->setVariable("TEMPLATE_DELETE_OPTION_VALUE", $name);
2215 $this->tpl->setVariable("TEMPLATE_DELETE_OPTION", $name);
2216 $this->tpl->parseCurrentBlock();
2217 }
2218
2219 $this->tpl->setCurrentBlock("template_editor_delete");
2220 $this->tpl->setVariable("TEMPLATE_DELETE_ID", $delete_id);
2221 $this->tpl->setVariable("TXT_TEMPLATE_DELETE", $lng->txt("tbl_template_delete"));
2222 $this->tpl->setVariable("TXT_TEMPLATE_DELETE_SUBMIT", $lng->txt("delete"));
2223 $this->tpl->setVariable("TEMPLATE_DELETE_CMD", $this->parent_cmd);
2224 $this->tpl->parseCurrentBlock();
2225 }
2226
2227
2228 // form to save new template
2229 $overlay = new ilOverlayGUI($create_id);
2230 $overlay->setTrigger($list_id."_create");
2231 $overlay->setAnchor("ilAdvSelListAnchorElement_".$list_id);
2232 $overlay->setAutoHide(false);
2233 $overlay->add();
2234
2235 $this->tpl->setCurrentBlock("template_editor");
2236 $this->tpl->setVariable("TEMPLATE_CREATE_ID", $create_id);
2237 $this->tpl->setVariable("TXT_TEMPLATE_CREATE", $lng->txt("tbl_template_create"));
2238 $this->tpl->setVariable("TXT_TEMPLATE_CREATE_SUBMIT", $lng->txt("save"));
2239 $this->tpl->setVariable("TEMPLATE_CREATE_CMD", $this->parent_cmd);
2240 $this->tpl->parseCurrentBlock();
2241
2242 // load saved template
2243 include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
2244 $alist = new ilAdvancedSelectionListGUI();
2245 $alist->setId($list_id);
2246 $alist->addItem($lng->txt("tbl_template_create"), "create", "#");
2247 if(sizeof($templates))
2248 {
2249 $alist->addItem($lng->txt("tbl_template_delete"), "delete", "#");
2250 foreach($templates as $name)
2251 {
2252 $ilCtrl->setParameter($this->parent_obj, $this->prefix."_tpl", urlencode($name));
2253 $alist->addItem($name, $name, $ilCtrl->getLinkTarget($this->parent_obj, $this->parent_cmd));
2254 $ilCtrl->setParameter($this->parent_obj, $this->prefix."_tpl", "");
2255 }
2256 }
2257 $alist->setListTitle($lng->txt("tbl_templates"));
2259 $this->tpl->setVariable("TEMPLATE_SELECTOR", "&nbsp;".$alist->getHTML());
2260 }
2261
2262 if ($footer)
2263 {
2264 $this->tpl->setCurrentBlock("tbl_footer");
2265 $this->tpl->setVariable("COLUMN_COUNT", $this->getColumnCount());
2266 if ($this->getDisplayAsBlock())
2267 {
2268 $this->tpl->setVariable("BLK_CLASS", "Block");
2269 }
2270 $this->tpl->parseCurrentBlock();
2271
2272 // top navigation, if number info or linkbar given
2273 if ($numinfo != "" || $linkbar != "" || $column_selector != "" ||
2274 count($this->filters) > 0 || count($this->optional_filters) > 0)
2275 {
2276 if (is_object($ilUser) && (count($this->filters) || count($this->optional_filters)))
2277 {
2278 $this->tpl->setCurrentBlock("filter_activation");
2279 $this->tpl->setVariable("TXT_ACTIVATE_FILTER", $lng->txt("show_filter"));
2280 $this->tpl->setVariable("FILA_ID", $this->getId());
2281 if ($this->getId() != "")
2282 {
2283 $this->tpl->setVariable("SAVE_URLA", "./ilias.php?baseClass=ilTablePropertiesStorage&table_id=".
2284 $this->getId()."&cmd=showFilter&user_id=".$ilUser->getId());
2285 }
2286 $this->tpl->parseCurrentBlock();
2287
2288
2289 if (!$this->getDisableFilterHiding())
2290 {
2291 $this->tpl->setCurrentBlock("filter_deactivation");
2292 $this->tpl->setVariable("TXT_HIDE", $lng->txt("hide_filter"));
2293 if ($this->getId() != "")
2294 {
2295 $this->tpl->setVariable("SAVE_URL", "./ilias.php?baseClass=ilTablePropertiesStorage&table_id=".
2296 $this->getId()."&cmd=hideFilter&user_id=".$ilUser->getId());
2297 $this->tpl->setVariable("FILD_ID", $this->getId());
2298 }
2299 $this->tpl->parseCurrentBlock();
2300 }
2301
2302 }
2303
2304 if ($numinfo != "" && $this->getEnableNumInfo())
2305 {
2306 $this->tpl->setCurrentBlock("top_numinfo");
2307 $this->tpl->setVariable("NUMINFO", $numinfo);
2308 $this->tpl->parseCurrentBlock();
2309 }
2310 if ($linkbar != "" && !$this->getDisplayAsBlock())
2311 {
2312 $linkbar = $this->getLinkbar("2");
2313 $this->tpl->setCurrentBlock("top_linkbar");
2314 $this->tpl->setVariable("LINKBAR", $linkbar);
2315 $this->tpl->parseCurrentBlock();
2316 }
2317
2318 // column selector
2319 $this->tpl->setVariable("COLUMN_SELECTOR", $column_selector);
2320
2321 // row selector
2322 if ($this->getShowRowsSelector() &&
2323 is_object($ilUser) &&
2324 $this->getId() &&
2325 $this->getLimit() < 9999) // JF, 2014-10-27
2326 {
2327 include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
2328 $alist = new ilAdvancedSelectionListGUI();
2330 $alist->setId("sellst_rows_".$this->getId());
2331 $hpp = ($ilUser->getPref("hits_per_page") != 9999)
2332 ? $ilUser->getPref("hits_per_page")
2333 : $lng->txt("unlimited");
2334
2335 $options = array(0 => $lng->txt("default")." (".$hpp.")",5 => 5, 10 => 10, 15 => 15, 20 => 20,
2336 30 => 30, 40 => 40, 50 => 50,
2337 100 => 100, 200 => 200, 400 => 400, 800 => 800);
2338 foreach ($options as $k => $v)
2339 {
2340 $ilCtrl->setParameter($this->parent_obj, $this->prefix."_trows", $k);
2341 $alist->addItem($v, $k, $ilCtrl->getLinkTarget($this->parent_obj, $this->parent_cmd));
2342 $ilCtrl->setParameter($this->parent_obj, $this->prefix."_trows", "");
2343 }
2344 $alist->setListTitle($this->getRowSelectorLabel() ? $this->getRowSelectorLabel() : $lng->txt("rows"));
2345 $this->tpl->setVariable("ROW_SELECTOR", $alist->getHTML());
2346 }
2347
2348 // export
2349 if(sizeof($this->export_formats) && $this->dataExists())
2350 {
2351 include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
2352 $alist = new ilAdvancedSelectionListGUI();
2354 $alist->setId("sellst_xpt");
2355 foreach($this->export_formats as $format => $caption_lng_id)
2356 {
2357 $ilCtrl->setParameter($this->parent_obj, $this->prefix."_xpt", $format);
2358 $url = $ilCtrl->getLinkTarget($this->parent_obj, $this->parent_cmd);
2359 $ilCtrl->setParameter($this->parent_obj, $this->prefix."_xpt", "");
2360 $alist->addItem($lng->txt($caption_lng_id), $format, $url);
2361 }
2362 $alist->setListTitle($lng->txt("export"));
2363 $this->tpl->setVariable("EXPORT_SELECTOR", "&nbsp;".$alist->getHTML());
2364 }
2365
2366 $this->tpl->setCurrentBlock("top_navigation");
2367 $this->tpl->setVariable("COLUMN_COUNT", $this->getColumnCount());
2368 if ($this->getDisplayAsBlock())
2369 {
2370 $this->tpl->setVariable("BLK_CLASS", "Block");
2371 }
2372 $this->tpl->parseCurrentBlock();
2373 }
2374 }
2375 }
2376
2384 function getLinkbar($a_num)
2385 {
2386 global $ilCtrl, $lng, $ilUser;
2387
2388 $hash = "";
2389 if (is_object($ilUser) && $ilUser->getPref("screen_reader_optimization"))
2390 {
2391 $hash = "#".$this->getTopAnchor();
2392 }
2393
2394 $link = $ilCtrl->getLinkTargetByClass(get_class($this->parent_obj), $this->parent_cmd).
2395 "&".$this->getNavParameter()."=".
2396 $this->getOrderField().":".$this->getOrderDirection().":";
2397
2398 $LinkBar = "";
2399 $layout_prev = $lng->txt("previous");
2400 $layout_next = $lng->txt("next");
2401
2402 // if more entries then entries per page -> show link bar
2403 if ($this->max_count > $this->getLimit() || $this->custom_prev_next)
2404 {
2405 $sep = "<span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>";
2406
2407 // calculate number of pages
2408 $pages = intval($this->max_count / $this->getLimit());
2409
2410 // add a page if a rest remains
2411 if (($this->max_count % $this->getLimit()))
2412 $pages++;
2413
2414 // links to other pages
2415 $offset_arr = array();
2416 for ($i = 1 ;$i <= $pages ; $i++)
2417 {
2418 $newoffset = $this->getLimit() * ($i-1);
2419
2420 $nav_value = $this->getOrderField().":".$this->getOrderDirection().":".$newoffset;
2421 $offset_arr[$nav_value] = $i;
2422 }
2423
2424 $sep = "<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>";
2425
2426 // previous link
2427 if ($this->custom_prev_next && $this->custom_prev != "")
2428 {
2429 if ($LinkBar != "")
2430 $LinkBar .= $sep;
2431 $LinkBar .= "<a href=\"".$this->custom_prev.$hash."\">".$layout_prev."</a>";
2432 }
2433 else if ($this->getOffset() >= 1 && !$this->custom_prev_next)
2434 {
2435 if ($LinkBar != "")
2436 $LinkBar .= $sep;
2437 $prevoffset = $this->getOffset() - $this->getLimit();
2438 $LinkBar .= "<a href=\"".$link.$prevoffset.$hash."\">".$layout_prev."</a>";
2439 }
2440 else
2441 {
2442 if ($LinkBar != "")
2443 $LinkBar .= $sep;
2444 $LinkBar .= '<span class="ilTableFootLight">'.$layout_prev."</span>";
2445 }
2446
2447 // current value
2448 if ($a_num == "1")
2449 {
2450 $LinkBar .= '<input type="hidden" name="'.$this->getNavParameter().
2451 '" value="'.$this->getOrderField().":".$this->getOrderDirection().":".$this->getOffset().'" />';
2452 }
2453
2454 $sep = "<span>&nbsp;&nbsp;|&nbsp;&nbsp;</span>";
2455
2456 // show next link (if not last page)
2457 if ($this->custom_prev_next && $this->custom_next != "")
2458 {
2459 if ($LinkBar != "")
2460 $LinkBar .= $sep;
2461 $LinkBar .= "<a href=\"".$this->custom_next.$hash."\">".$layout_next."</a>";
2462 }
2463 else if (! ( ($this->getOffset() / $this->getLimit())==($pages-1) ) && ($pages!=1) &&
2464 !$this->custom_prev_next)
2465 {
2466 if ($LinkBar != "")
2467 $LinkBar .= $sep;
2468 $newoffset = $this->getOffset() + $this->getLimit();
2469 $LinkBar .= "<a href=\"".$link.$newoffset.$hash."\">".$layout_next."</a>";
2470 }
2471 else
2472 {
2473 if ($LinkBar != "")
2474 $LinkBar .= $sep;
2475 $LinkBar .= '<span class="ilTableFootLight">'.$layout_next."</span>";
2476 }
2477
2478 $sep = "<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>";
2479
2480 if (count($offset_arr) && !$this->getDisplayAsBlock() && !$this->custom_prev_next)
2481 {
2482 if ($LinkBar != "")
2483 $LinkBar .= $sep;
2484 $LinkBar .= "".
2485 '<label for="tab_page_sel_'.$a_num.'">'.$lng->txt("page").'</label> '.
2486 ilUtil::formSelect($this->nav_value,
2487 $this->getNavParameter().$a_num, $offset_arr, false, true, 0, "small",
2488 array("id" => "tab_page_sel_".$a_num,
2489 "onchange" => "ilTablePageSelection(this, 'cmd[".$this->parent_cmd."]')"));
2490 //' <input class="submit" type="submit" name="cmd['.$this->parent_cmd.']" value="'.
2491 //$lng->txt("ok").'" />';
2492 }
2493
2494 return $LinkBar;
2495 }
2496 else
2497 {
2498 return false;
2499 }
2500 }
2501
2502 function fillHiddenRow()
2503 {
2504 $hidden_row = false;
2505 if(count($this->hidden_inputs))
2506 {
2507 foreach ($this->hidden_inputs as $hidden_input)
2508 {
2509 $this->tpl->setCurrentBlock("tbl_hidden_field");
2510 $this->tpl->setVariable("FIELD_NAME", $hidden_input["name"]);
2511 $this->tpl->setVariable("FIELD_VALUE", $hidden_input["value"]);
2512 $this->tpl->parseCurrentBlock();
2513 }
2514
2515 $this->tpl->setCurrentBlock("tbl_hidden_row");
2516 $this->tpl->parseCurrentBlock();
2517 }
2518 }
2519
2523 function fillActionRow()
2524 {
2525 global $lng;
2526
2527 // action row
2528 $action_row = false;
2529 $arrow = false;
2530
2531 // add selection buttons
2532 if (count($this->sel_buttons) > 0)
2533 {
2534 foreach ($this->sel_buttons as $button)
2535 {
2536 $this->tpl->setCurrentBlock("sel_button");
2537 $this->tpl->setVariable("SBUTTON_SELECT",
2538 ilUtil::formSelect($button["selected"], $button["sel_var"],
2539 $button["options"], false, true));
2540 $this->tpl->setVariable("SBTN_NAME", $button["cmd"]);
2541 $this->tpl->setVariable("SBTN_VALUE", $button["text"]);
2542 $this->tpl->parseCurrentBlock();
2543
2544 if ($this->getTopCommands())
2545 {
2546 $this->tpl->setCurrentBlock("sel_top_button");
2547 $this->tpl->setVariable("SBUTTON_SELECT",
2548 ilUtil::formSelect($button["selected"], $button["sel_var"],
2549 $button["options"], false, true));
2550 $this->tpl->setVariable("SBTN_NAME", $button["cmd"]);
2551 $this->tpl->setVariable("SBTN_VALUE", $button["text"]);
2552 $this->tpl->parseCurrentBlock();
2553 }
2554 }
2555 $buttons = true;
2556 $action_row = true;
2557 }
2558 $this->sel_buttons[] = array("options" => $a_options, "cmd" => $a_cmd, "text" => $a_text);
2559
2560 // add buttons
2561 if (count($this->buttons) > 0)
2562 {
2563 foreach ($this->buttons as $button)
2564 {
2565 if(!is_array($button))
2566 {
2567 if($button instanceof ilButton)
2568 {
2569 $this->tpl->setVariable('BUTTON_OBJ', $button->render());
2570
2571 // this will remove id - should be unique
2572 $button = clone $button;
2573
2574 $this->tpl->setVariable('BUTTON_TOP_OBJ', $button->render());
2575 }
2576 continue;
2577 }
2578
2579 if (strlen($button['onclick']))
2580 {
2581 $this->tpl->setCurrentBlock('cmdonclick');
2582 $this->tpl->setVariable('CMD_ONCLICK', $button['onclick']);
2583 $this->tpl->parseCurrentBlock();
2584 }
2585 $this->tpl->setCurrentBlock("plain_button");
2586 if ($button["id"] != "")
2587 {
2588 $this->tpl->setVariable("PBID", ' id="'.$button["id"].'" ');
2589 }
2590 if ($button["class"] != "")
2591 {
2592 $this->tpl->setVariable("PBBT_CLASS", ' '.$button["class"]);
2593 }
2594 $this->tpl->setVariable("PBTN_NAME", $button["cmd"]);
2595 $this->tpl->setVariable("PBTN_VALUE", $button["text"]);
2596 $this->tpl->parseCurrentBlock();
2597
2598 if ($this->getTopCommands())
2599 {
2600 if (strlen($button['onclick']))
2601 {
2602 $this->tpl->setCurrentBlock('top_cmdonclick');
2603 $this->tpl->setVariable('CMD_ONCLICK', $button['onclick']);
2604 $this->tpl->parseCurrentBlock();
2605 }
2606 $this->tpl->setCurrentBlock("plain_top_button");
2607 $this->tpl->setVariable("PBTN_NAME", $button["cmd"]);
2608 $this->tpl->setVariable("PBTN_VALUE", $button["text"]);
2609 if ($button["class"] != "")
2610 {
2611 $this->tpl->setVariable("PBBT_CLASS", ' '.$button["class"]);
2612 }
2613 $this->tpl->parseCurrentBlock();
2614 }
2615 }
2616
2617 $buttons = true;
2618 $action_row = true;
2619 }
2620
2621 // multi selection
2622 if(count($this->mi_sel_buttons))
2623 {
2624 foreach ($this->mi_sel_buttons as $button)
2625 {
2626 $this->tpl->setCurrentBlock("mi_sel_button");
2627 $this->tpl->setVariable("MI_BUTTON_SELECT",
2628 ilUtil::formSelect($button["selected"], $button["sel_var"],
2629 $button["options"], false, true));
2630 $this->tpl->setVariable("MI_BTN_NAME", $button["cmd"]);
2631 $this->tpl->setVariable("MI_BTN_VALUE", $button["text"]);
2632 $this->tpl->parseCurrentBlock();
2633
2634 if ($this->getTopCommands())
2635 {
2636 $this->tpl->setCurrentBlock("mi_top_sel_button");
2637 $this->tpl->setVariable("MI_BUTTON_SELECT",
2638 ilUtil::formSelect($button["selected"], $button["sel_var"]."_2",
2639 $button["options"], false, true));
2640 $this->tpl->setVariable("MI_BTN_NAME", $button["cmd"]);
2641 $this->tpl->setVariable("MI_BTN_VALUE", $button["text"]);
2642 $this->tpl->parseCurrentBlock();
2643 }
2644
2645 }
2646 $arrow = true;
2647 $action_row = true;
2648 }
2649
2650
2651 if (count($this->multi) > 1 && $this->dataExists())
2652 {
2653 if($this->enable_command_for_all && $this->max_count <= self::getAllCommandLimit())
2654 {
2655 $this->tpl->setCurrentBlock("tbl_cmd_select_all");
2656 $this->tpl->setVariable("TXT_SELECT_CMD_ALL", $lng->txt("all_objects"));
2657 $this->tpl->parseCurrentBlock();
2658 }
2659
2660 $this->tpl->setCurrentBlock("tbl_cmd_select");
2661 $sel = array();
2662 foreach ($this->multi as $mc)
2663 {
2664 $sel[$mc["cmd"]] = $mc["text"];
2665 }
2666 $this->tpl->setVariable("SELECT_CMDS",
2667 ilUtil::formSelect("", "selected_cmd", $sel, false, true));
2668 $this->tpl->setVariable("TXT_EXECUTE", $lng->txt("execute"));
2669 $this->tpl->parseCurrentBlock();
2670 $arrow = true;
2671 $action_row = true;
2672
2673 if ($this->getTopCommands())
2674 {
2675 if($this->enable_command_for_all && $this->max_count <= self::getAllCommandLimit())
2676 {
2677 $this->tpl->setCurrentBlock("tbl_top_cmd_select_all");
2678 $this->tpl->setVariable("TXT_SELECT_CMD_ALL", $lng->txt("all_objects"));
2679 $this->tpl->parseCurrentBlock();
2680 }
2681
2682 $this->tpl->setCurrentBlock("tbl_top_cmd_select");
2683 $sel = array();
2684 foreach ($this->multi as $mc)
2685 {
2686 $sel[$mc["cmd"]] = $mc["text"];
2687 }
2688 $this->tpl->setVariable("SELECT_CMDS",
2689 ilUtil::formSelect("", "selected_cmd2", $sel, false, true));
2690 $this->tpl->setVariable("TXT_EXECUTE", $lng->txt("execute"));
2691 $this->tpl->parseCurrentBlock();
2692 }
2693 }
2694 elseif(count($this->multi) == 1 && $this->dataExists())
2695 {
2696 $this->tpl->setCurrentBlock("tbl_single_cmd");
2697 $sel = array();
2698 foreach ($this->multi as $mc)
2699 {
2700 $cmd = $mc['cmd'];
2701 $txt = $mc['text'];
2702 }
2703 $this->tpl->setVariable("TXT_SINGLE_CMD",$txt);
2704 $this->tpl->setVariable("SINGLE_CMD",$cmd);
2705 $this->tpl->parseCurrentBlock();
2706 $arrow = true;
2707 $action_row = true;
2708
2709 if ($this->getTopCommands())
2710 {
2711 $this->tpl->setCurrentBlock("tbl_top_single_cmd");
2712 $sel = array();
2713 foreach ($this->multi as $mc)
2714 {
2715 $cmd = $mc['cmd'];
2716 $txt = $mc['text'];
2717 }
2718 $this->tpl->setVariable("TXT_SINGLE_CMD",$txt);
2719 $this->tpl->setVariable("SINGLE_CMD",$cmd);
2720 $this->tpl->parseCurrentBlock();
2721 }
2722 }
2723
2724 if ($arrow)
2725 {
2726 $this->tpl->setCurrentBlock("tbl_action_img_arrow");
2727 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.svg"));
2728 $this->tpl->setVariable("ALT_ARROW", $lng->txt("action"));
2729 $this->tpl->parseCurrentBlock();
2730
2731 if ($this->getTopCommands())
2732 {
2733 $this->tpl->setCurrentBlock("tbl_top_action_img_arrow");
2734 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_upright.svg"));
2735 $this->tpl->setVariable("ALT_ARROW", $lng->txt("action"));
2736 $this->tpl->parseCurrentBlock();
2737 }
2738 }
2739
2740 if ($action_row)
2741 {
2742 $this->tpl->setCurrentBlock("tbl_action_row");
2743 $this->tpl->parseCurrentBlock();
2744 if ($this->getTopCommands())
2745 {
2746 $this->tpl->setCurrentBlock("tbl_top_action_row");
2747 $this->tpl->parseCurrentBlock();
2748 }
2749 }
2750 }
2751
2757 public function setHeaderHTML($html)
2758 {
2759 $this->headerHTML = $html;
2760 }
2761
2768 function storeProperty($type, $value)
2769 {
2770 global $ilUser;
2771
2772 if(is_object($ilUser) && $this->getId() != "")
2773 {
2774 include_once("./Services/Table/classes/class.ilTablePropertiesStorage.php");
2775 $tab_prop = new ilTablePropertiesStorage();
2776
2777 $tab_prop->storeProperty($this->getId(), $ilUser->getId(), $type, $value);
2778 }
2779 }
2780
2787 function loadProperty($type)
2788 {
2789 global $ilUser;
2790
2791 if(is_object($ilUser) && $this->getId() != "")
2792 {
2793 include_once("./Services/Table/classes/class.ilTablePropertiesStorage.php");
2794 $tab_prop = new ilTablePropertiesStorage();
2795
2796 return $tab_prop->getProperty($this->getId(), $ilUser->getId(), $type);
2797 }
2798 }
2799
2805 public function getCurrentState()
2806 {
2807 $this->determineOffsetAndOrder();
2808 $this->determineLimit();
2809 $this->determineSelectedColumns();
2810 $this->determineSelectedFilters();
2811
2812 // "filter" show/hide is not saved
2813
2814 $result = array();
2815 $result["order"] = $this->getOrderField();
2816 $result["direction"] = $this->getOrderDirection();
2817 $result["offset"] = $this->getOffset();
2818 $result["rows"] = $this->getLimit();
2819 $result["selfilters"] = $this->getSelectedFilters();
2820
2821 // #9514 - $this->getSelectedColumns() will omit deselected, leading to
2822 // confusion on restoring template
2823 $result["selfields"] = $this->selected_column;
2824
2825 // gather filter values
2826 if($this->filters)
2827 {
2828 foreach($this->filters as $item)
2829 {
2830 $result["filter_values"][$item->getFieldId()] = $this->getFilterValue($item);
2831 }
2832 }
2833 if($this->optional_filters && $result["selfilters"])
2834 {
2835 foreach($this->optional_filters as $item)
2836 {
2837 if(in_array($item->getFieldId(), $result["selfilters"]))
2838 {
2839 $result["filter_values"][$item->getFieldId()] = $this->getFilterValue($item);
2840 }
2841 }
2842 }
2843
2844 return $result;
2845 }
2846
2853 protected function getFilterValue(ilFormPropertyGUI $a_item)
2854 {
2855 if(method_exists($a_item, "getChecked"))
2856 {
2857 return $a_item->getChecked();
2858 }
2859 else if(method_exists($a_item, "getValue"))
2860 {
2861 return $a_item->getValue();
2862 }
2863 else if(method_exists($a_item, "getDate"))
2864 {
2865 return $a_item->getDate()->get(IL_CAL_DATE);
2866 }
2867 }
2868
2875 protected function SetFilterValue(ilFormPropertyGUI $a_item, $a_value)
2876 {
2877 if(method_exists($a_item, "setChecked"))
2878 {
2879 $a_item->setChecked($a_value);
2880 }
2881 else if(method_exists($a_item, "setValue"))
2882 {
2883 $a_item->setValue($a_value);
2884 }
2885 else if(method_exists($a_item, "setDate"))
2886 {
2887 $a_item->setDate(new ilDate($a_value, IL_CAL_DATE));
2888 }
2889 $a_item->writeToSession();
2890 }
2891
2897 public function setContext($id)
2898 {
2899 if(trim($id))
2900 {
2901 $this->context = $id;
2902 }
2903 }
2904
2910 public function getContext()
2911 {
2912 return $this->context;
2913 }
2914
2920 public function setShowRowsSelector($a_value)
2921 {
2922 $this->show_rows_selector = (bool)$a_value;
2923 }
2924
2930 public function getShowRowsSelector()
2931 {
2933 }
2934
2940 public function setShowTemplates($a_value)
2941 {
2942 $this->show_templates = (bool)$a_value;
2943 }
2944
2950 public function getShowTemplates()
2951 {
2952 return $this->show_templates;
2953 }
2954
2961 public function restoreTemplate($a_name)
2962 {
2963 global $ilUser;
2964
2965 $a_name = ilUtil::stripSlashes($a_name);
2966
2967 if(trim($a_name) && $this->getContext() != "" && is_object($ilUser) && $ilUser->getId() != ANONYMOUS_USER_ID)
2968 {
2969 include_once("./Services/Table/classes/class.ilTableTemplatesStorage.php");
2970 $storage = new ilTableTemplatesStorage();
2971
2972 $data = $storage->load($this->getContext(), $ilUser->getId(), $a_name);
2973 if(is_array($data))
2974 {
2975 foreach($data as $property => $value)
2976 {
2977 $this->storeProperty($property, $value);
2978 }
2979 }
2980
2981 $data["filter_values"] = unserialize($data["filter_values"]);
2982 if($data["filter_values"])
2983 {
2984 $this->restore_filter_values = $data["filter_values"];
2985 }
2986
2987 $this->restore_filter = true;
2988
2989 return true;
2990 }
2991 return false;
2992 }
2993
3000 public function saveTemplate($a_name)
3001 {
3002 global $ilUser;
3003
3004 $a_name = ilUtil::prepareFormOutput($a_name, true);
3005
3006 if(trim($a_name) && $this->getContext() != "" && is_object($ilUser) && $ilUser->getId() != ANONYMOUS_USER_ID)
3007 {
3008 include_once("./Services/Table/classes/class.ilTableTemplatesStorage.php");
3009 $storage = new ilTableTemplatesStorage();
3010
3011 $state = $this->getCurrentState();
3012 $state["filter_values"] = serialize($state["filter_values"]);
3013 $state["selfields"] = serialize($state["selfields"]);
3014 $state["selfilters"] = serialize($state["selfilters"]);
3015
3016 $storage->store($this->getContext(), $ilUser->getId(), $a_name, $state);
3017 return true;
3018 }
3019 return false;
3020 }
3021
3028 public function deleteTemplate($a_name)
3029 {
3030 global $ilUser;
3031
3032 $a_name = ilUtil::prepareFormOutput($a_name, true);
3033
3034 if(trim($a_name) && $this->getContext() != "" && is_object($ilUser) && $ilUser->getId() != ANONYMOUS_USER_ID)
3035 {
3036 include_once("./Services/Table/classes/class.ilTableTemplatesStorage.php");
3037 $storage = new ilTableTemplatesStorage();
3038 $storage->delete($this->getContext(), $ilUser->getId(), $a_name);
3039 return true;
3040 }
3041 return false;
3042 }
3043
3047 function getLimit()
3048 {
3049 if($this->getExportMode() || $this->getPrintMode())
3050 {
3051 return 9999;
3052 }
3053 return parent::getLimit();
3054 }
3055
3059 function getOffset()
3060 {
3061 if($this->getExportMode() || $this->getPrintMode())
3062 {
3063 return 0;
3064 }
3065 return parent::getOffset();
3066 }
3067
3073 public function setExportFormats(array $formats)
3074 {
3075 $this->export_formats = array();
3076
3077 // #11339
3078 $valid = array(self::EXPORT_EXCEL => "tbl_export_excel",
3079 self::EXPORT_CSV => "tbl_export_csv");
3080
3081 foreach($formats as $format)
3082 {
3083 if(array_key_exists($format, $valid))
3084 {
3085 $this->export_formats[$format] = $valid[$format];
3086 }
3087 }
3088 }
3089
3094 public function setPrintMode($a_value = false)
3095 {
3096 $this->print_mode = (bool)$a_value;
3097 }
3098
3103 public function getPrintMode()
3104 {
3105 return $this->print_mode;
3106 }
3107
3113 public function getExportMode()
3114 {
3115 return $this->export_mode;
3116 }
3117
3123 public function exportData($format, $send = false)
3124 {
3125 if($this->dataExists())
3126 {
3127 // #9640: sort
3128 if (!$this->getExternalSorting() && $this->enabled["sort"])
3129 {
3130 $this->determineOffsetAndOrder(true);
3131
3132 $this->row_data = ilUtil::sortArray($this->row_data, $this->getOrderField(),
3133 $this->getOrderDirection(), $this->numericOrdering($this->getOrderField()));
3134 }
3135
3136 $filename = "export";
3137
3138 switch($format)
3139 {
3140 case self::EXPORT_EXCEL:
3141 include_once "./Services/Excel/classes/class.ilExcelUtils.php";
3142 include_once "./Services/Excel/classes/class.ilExcelWriterAdapter.php";
3143 $adapter = new ilExcelWriterAdapter($filename.".xls", $send);
3144 $workbook = $adapter->getWorkbook();
3145 $worksheet = $workbook->addWorksheet();
3146 $row = 0;
3147
3148 ob_start();
3149 $this->fillMetaExcel($worksheet, $row); // row must be increment in fillMetaExcel()! (optional method)
3150
3151 // #14813
3152 $pre = $row;
3153 $this->fillHeaderExcel($worksheet, $row); // row should NOT be incremented in fillHeaderExcel()! (required method)
3154 if($pre == $row)
3155 {
3156 $row++;
3157 }
3158
3159 foreach($this->row_data as $set)
3160 {
3161 $this->fillRowExcel($worksheet, $row, $set);
3162 $row++; // #14760
3163 }
3164 ob_end_clean();
3165
3166 $workbook->close();
3167 break;
3168
3169 case self::EXPORT_CSV:
3170 include_once "./Services/Utilities/classes/class.ilCSVWriter.php";
3171 $csv = new ilCSVWriter();
3172 $csv->setSeparator(";");
3173
3174 ob_start();
3175 $this->fillMetaCSV($csv);
3176 $this->fillHeaderCSV($csv);
3177 foreach($this->row_data as $set)
3178 {
3179 $this->fillRowCSV($csv, $set);
3180 }
3181 ob_end_clean();
3182
3183 if($send)
3184 {
3185 $filename .= ".csv";
3186 header("Content-type: text/comma-separated-values");
3187 header("Content-Disposition: attachment; filename=\"".$filename."\"");
3188 header("Expires: 0");
3189 header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
3190 header("Pragma: public");
3191 echo $csv->getCSVString();
3192
3193 }
3194 else
3195 {
3196 file_put_contents($filename, $csv->getCSVString());
3197 }
3198 break;
3199 }
3200
3201 if($send)
3202 {
3203 exit();
3204 }
3205 }
3206 }
3207
3215 protected function fillMetaExcel($worksheet, &$a_row)
3216 {
3217
3218 }
3219
3227 protected function fillHeaderExcel($worksheet, &$a_row)
3228 {
3229 $col = 0;
3230 foreach ($this->column as $column)
3231 {
3232 $title = strip_tags($column["text"]);
3233 if($title)
3234 {
3235 $worksheet->write($a_row, $col, $title);
3236 $col++;
3237 }
3238 }
3239 }
3240
3249 protected function fillRowExcel($a_worksheet, &$a_row, $a_set)
3250 {
3251 $col = 0;
3252 foreach ($a_set as $key => $value)
3253 {
3254 if(is_array($value))
3255 {
3256 $value = implode(', ', $value);
3257 }
3258 $a_worksheet->write($a_row, $col, strip_tags($value));
3259 $col++;
3260 }
3261 }
3262
3269 protected function fillMetaCSV($a_csv)
3270 {
3271
3272 }
3273
3280 protected function fillHeaderCSV($a_csv)
3281 {
3282 foreach ($this->column as $column)
3283 {
3284 $title = strip_tags($column["text"]);
3285 if($title)
3286 {
3287 $a_csv->addColumn($title);
3288 }
3289 }
3290 $a_csv->addRow();
3291 }
3292
3300 protected function fillRowCSV($a_csv, $a_set)
3301 {
3302 foreach ($a_set as $key => $value)
3303 {
3304 if(is_array($value))
3305 {
3306 $value = implode(', ', $value);
3307 }
3308 $a_csv->addColumn(strip_tags($value));
3309 }
3310 $a_csv->addRow();
3311 }
3312
3318 public function setEnableAllCommand($a_value)
3319 {
3320 $this->enable_command_for_all = (bool)$a_value;
3321 }
3322
3328 public static function getAllCommandLimit()
3329 {
3330 global $ilClientIniFile;
3331
3332 $limit = $ilClientIniFile->readVariable("system", "TABLE_ACTION_ALL_LIMIT");
3333 if(!$limit)
3334 {
3336 }
3337
3338 return $limit;
3339 }
3340
3345 {
3346 $this->row_selector_label = $row_selector_label;
3347 return $this;
3348 }
3349
3353 public function getRowSelectorLabel()
3354 {
3356 }
3357
3363 public function setPreventDoubleSubmission($a_val)
3364 {
3365 $this->prevent_double_submission = $a_val;
3366 }
3367
3374 {
3376 }
3377}
3378
3379?>
$result
global $tpl
Definition: ilias.php:8
$filename
Definition: buildRTE.php:89
$_GET["client_id"]
const IL_CAL_DATE
User interface class for advanced drop-down selection lists.
Helper class to generate CSV files.
User interface class for a checkbox list overlay.
This class represents a number property in a property form.
static setUseRelativeDates($a_status)
set use relative dates
This class represents a date/time property in a property form.
Class for single dates.
This class represents a duration (typical hh:mm:ss) property in a property form.
Class ilExcelWriterAdapter.
This class represents a property in a property form.
writeToSession()
Write to session.
This class represents a number property in a property form.
This is a utility class for the yui overlays.
This class represents a selection list property in a property form.
Class ilTable2GUI.
getParentCmd()
Get parent command.
getExportMode()
Was export activated?
fillRowExcel($a_worksheet, &$a_row, $a_set)
Excel Version of Fill Row.
addHiddenInput($a_name, $a_value)
Add Hidden Input field.
getDescription()
Get description.
getSelectedColumns()
Get selected columns.
getOpenFormTag()
Get open form tag.
fillHeaderCSV($a_csv)
CSV Version of Fill Header.
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
getFormName()
Get Form name.
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="")
Add a column to the header.
prepareOutput()
Anything that must be done before HTML is generated.
getEnableHeader()
Get Enable Header.
saveTemplate($a_name)
Save current state as template.
restoreTemplate($a_name)
Restore state from template.
addSelectionButton($a_sel_var, $a_options, $a_cmd, $a_text, $a_default_selection='')
Add Selection List + Command button.
setEnableHeader($a_enableheader)
Set Enable Header.
determineSelectedColumns()
Determine selected columns.
getHTML()
Get HTML.
fillMetaCSV($a_csv)
Add meta information to csv export.
getFilterValue(ilFormPropertyGUI $a_item)
Get current filter value.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
getLinkbar($a_num)
Get previous/next linkbar.
setExternalSorting($a_val)
Set external sorting.
getShowTemplates()
Get template state.
setDisplayAsBlock($a_val)
Set display as block.
getNoEntriesText()
Get text for an empty table.
setCloseFormTag($a_val)
Set close form tag.
getEnableTitle()
Get Enable Title.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
setExportFormats(array $formats)
Set available export formats.
getParentObject()
Get parent object.
setPrintMode($a_value=false)
Toogle print mode.
setPrefix($a_prefix)
set prefix for sort and offset fields (if you have two or more tables on a page that you want to sort...
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
fillRow($a_set)
Standard Version of Fill Row.
setNoEntriesText($a_text)
Set text for an empty table.
getFormAction()
Get Form action parameter.
initFilter()
Init filter.
SetFilterValue(ilFormPropertyGUI $a_item, $a_value)
Set current filter value.
exportData($format, $send=false)
Export and optionally send current table data.
& executeCommand()
Execute command.
getFilterItems($a_optionals=false)
Get filter items.
setIsDataTable($a_val)
Set is data table.
render()
render table @access public
determineOffsetAndOrder($a_omit_offset=false)
Determine offset and order.
getFilterCols()
Get filter columns.
getShowRowsSelector()
Get rows-per-page selector state.
fillRowCSV($a_csv, $a_set)
CSV Version of Fill Row.
fillHeaderExcel($worksheet, &$a_row)
Excel Version of Fill Header.
getId()
Get element id.
setRowSelectorLabel($row_selector_label)
getContext()
Get context.
setEnableAllCommand($a_value)
Enable actions for all entries in current result.
setData($a_data)
set table data @access public
setHeaderHTML($html)
set header html
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
__construct($a_parent_obj, $a_parent_cmd="", $a_template_context="")
Constructor.
getExternalSorting()
Get external sorting.
setEnableTitle($a_enabletitle)
Set Enable Title.
setEnableNumInfo($a_val)
Set enable num info.
getDefaultOrderDirection()
Get Default order direction.
getDisableFilterHiding()
Get disable filter hiding
renderFilter()
Render Filter section.
getDisplayAsBlock()
Get display as block.
getLimit()
Get limit.
setPreventDoubleSubmission($a_val)
Set prevent double submission.
storeProperty($type, $value)
Store table property.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setTopAnchor($a_val)
Set top anchor.
resetOffset($a_in_determination=false)
Reset offset.
loadProperty($type)
Load table property.
getFilterItemByPostVar($a_post_var)
fillMetaExcel($worksheet, &$a_row)
Add meta information to excel export.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setFormName($a_formname)
Set Form name.
getCurrentState()
get current settings for order, limit, columns and filter
getSelectableColumns()
Get selectable columns.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
getEnableNumInfo()
Get enable num info.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
fillFooter()
Fill footer row.
static getAllCommandLimit()
Get maximum number of entries to enable actions for all.
getExternalSegmentation()
Get external segmentation.
setCustomPreviousNext($a_prev_link, $a_next_link)
Set custom previous/next links.
setContext($id)
Set context.
getPrintMode()
Get print mode.
getSelectedFilters()
Get selected filters.
getCloseFormTag()
Get close form tag.
getTopAnchor()
Get top anchor.
getFilterCommand()
Get filter command.
getOffset()
Get offset.
const FILTER_DURATION_RANGE
setExternalSegmentation($a_val)
Set external segmentation.
resetFilter()
Reset filter.
setId($a_val)
Set id.
addCommandButtonInstance(ilButton $a_button)
Add Command button instance.
getTopCommands()
Get top commands (display command buttons on top of table, too)
writeFilterToSession()
Write filter values to session.
setDescription($a_val)
Set description.
setOrderField($a_order_field)
set order column
setFilterCols($a_val)
Set filter columns.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
addFilterItemByMetaType($id, $type=self::FILTER_TEXT, $a_optional=false, $caption=NULL)
Add filter by standard type.
getIsDataTable()
Get is data table.
const FILTER_NUMBER_RANGE
addMultiItemSelectionButton($a_sel_var, $a_options, $a_cmd, $a_text, $a_default_selection='')
Add Selection List + Command button for selected items.
determineLimit()
Determine the limit.
isFilterSelected($a_col)
Is given filter selected?
deleteTemplate($a_name)
Delete template.
fillActionRow()
Fill Action Row.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setOrderLink($sort_field, $order_dir)
getResetCommand()
Get reset filter command.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
getDefaultOrderField()
Get Default order field.
setCloseCommand($a_link)
Add command for closing table.
setOpenFormTag($a_val)
Set open form tag.
isColumnSelected($a_col)
Is given column selected?
numericOrdering($a_field)
Should this field be sorted numeric?
getSelectAllCheckbox()
Get the name of the checkbox that should be toggled with a select all button.
getPreventDoubleSubmission()
Get prevent double submission.
addHeaderCommand($a_href, $a_text, $a_target="", $a_img="")
Add Header Command (Link) (Image needed for now)
setShowTemplates($a_value)
Toggle templates.
const FILTER_DATETIME_RANGE
determineSelectedFilters()
Determine selected filters.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
Class ilTableGUI.
getOrderDirection()
Get order direction.
setMaxCount($a_max_count)
set max.
getStyle($a_element)
setOrderDirection($a_order_direction)
set order direction @access public
setLimit($a_limit=0, $a_default_limit=0)
set max.
getColumnCount()
Returns the column count based on the number of the header row columns @access public.
setFooter($a_style, $a_previous=0, $a_next=0)
set order direction @access public
setOffset($a_offset)
set dataset offset @access public
Saves (mostly asynchronously) user properties of tables (e.g.
Saves (mostly asynchronously) user properties of tables (e.g.
special template class to simplify handling of ITX/PEAR
This class represents a text property in a property form.
static addTooltip($a_el_id, $a_text, $a_container="", $a_my="bottom center", $a_at="top center", $a_use_htmlspecialchars=true)
Adds a tooltip to an HTML element.
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static formSelect($selected, $varname, $options, $multiple=false, $direct_text=false, $size="0", $style_class="", $attribs="", $disabled=false)
Builds a select form field with options and shows the selected option first.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
static initConnection()
Init YUI Connection module.
$_POST['username']
Definition: cron.php:12
$valid
$txt
Definition: error.php:10
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']
global $ilCtrl
Definition: ilias.php:18
exit
Definition: login.php:54
global $lng
Definition: privfeed.php:40
$cmd
Definition: sahs_server.php:35
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
if(!is_array($argv)) $options
global $ilUser
Definition: imgupload.php:15