68                                                         "numinfo_header"                =>      
false,
 
   77                                                         "table"         => 
"fullwidth" 
   91                 $this->global_tpl = $a_global_tpl;
 
   92                 $this->ilias =& $ilias;
 
   93                 $this->header_vars = array();
 
   94                 $this->header_params = array();
 
   95                 $this->enabled[
"form"] = 
true;
 
   96                 $this->action_buttons = array();
 
   97                 if ($this->global_tpl)
 
  103                         $this->tpl = 
new ilTemplate(
"tpl.table.html", 
true, 
true, 
"Services/Table");
 
  110                         $this->lang_support = 
false;
 
  124                 $this->tpl =& $a_tpl;
 
  139                 if (is_array($a_data))
 
  141                         $this->data = $a_data;
 
  157         function setTitle($a_title,$a_icon = 0,$a_icon_alt = 0)
 
  159                 $this->title = $a_title;
 
  160                 $this->icon = $a_icon;
 
  161                 $this->icon_alt = $a_icon_alt;
 
  165                         $this->enabled[
"icon"] = 
false;
 
  170                 if (!$this->icon_alt)
 
  174                 $this->enabled[
"icon"] = 
true;
 
  184         function setHelp($a_help_page,$a_help_icon,$a_help_icon_alt = 0)
 
  186                 $this->help_page = $a_help_page;
 
  187                 $this->help_icon = $a_help_icon;
 
  188                 $this->help_icon_alt = $a_help_icon_alt;
 
  190                 if (!$this->help_icon_alt)
 
  203                 $this->header_names = $a_header_names;
 
  204                 $this->column_count = count($this->header_names);
 
  225                 $this->header_vars = $a_header_vars;
 
  227                 if ($a_header_params == 0 or !is_array($a_header_params))
 
  229                         $this->link_params = 
"";
 
  233                         $this->header_params = $a_header_params;        
 
  235                         foreach ($a_header_params as $key => $val)
 
  237                                 $this->link_params .= $key.
"=".$val.
"&";
 
  249                 $this->column_width = $a_column_width;
 
  260                 $this->column_width[$a_column_number] = $a_column_width;
 
  272                 $this->max_count = $a_max_count;
 
  274                 if ($this->max_limit)
 
  286         function setLimit($a_limit = 0, $a_default_limit = 0)
 
  288                 $this->limit = ($a_limit) ? $a_limit : $a_default_limit;
 
  290                 if ($this->limit == 0)
 
  292                         $this->max_limit = 
true;
 
  312                 $this->prefix = ($a_prefix) ? $a_prefix : 
"";
 
  322                 $this->offset = ($a_offset) ? $a_offset : 0;
 
  342                 if (empty($a_order_column))
 
  344                         if (!empty($a_default_column))
 
  346                                 $this->order_column = array_search($a_default_column,$this->header_vars);       
 
  350                                 $this->order_column = 0;
 
  356                         $this->order_column = array_search($a_order_column,$this->header_vars);
 
  359                 if ($this->order_column === 
false)
 
  362                         $this->order_column = 0;
 
  381                 if ($a_order_direction == 
"desc")
 
  383                         $this->order_direction = 
"desc";
 
  384                         $this->sort_order = 
"asc";
 
  388                         $this->order_direction = 
"asc"; 
 
  389                         $this->sort_order = 
"desc";
 
  408         function setFooter($a_style,$a_previous = 0,$a_next = 0)
 
  410                 $this->footer_style = $a_style;
 
  412                 $this->footer_previous = ($a_previous) ? $a_previous : 
"<<<";
 
  413                 $this->footer_next = ($a_next) ? $a_next : 
">>>";
 
  426                 if (!in_array($a_module_name,array_keys($this->enabled)))
 
  431                 $this->enabled[$a_module_name] = 
true;
 
  444                 if (!in_array($a_module_name,array_keys($this->enabled)))
 
  449                 $this->enabled[$a_module_name] = 
false;
 
  455                 if($this->enabled[
"sort"])
 
  457                         $this->data = 
ilUtil::sortArray($this->data,$this->order_column,$this->order_direction);
 
  459                 $this->data = array_slice($this->data,$this->offset,$this->limit);
 
  468                 if($this->enabled[
'table'])
 
  470                         $this->tpl->setVariable(
"CSS_TABLE",$this->
getStyle(
"table"));
 
  474                 if ($this->enabled[
"icon"] && $this->enabled[
"title"])
 
  476                         $this->tpl->setCurrentBlock(
"tbl_header_title_icon");
 
  478                         $this->tpl->setVariable(
"TBL_TITLE_IMG_ALT",$this->icon_alt);
 
  479                         $this->tpl->parseCurrentBlock();
 
  482                 if ($this->enabled[
"help"] && $this->enabled[
"title"])
 
  484                         $this->tpl->setCurrentBlock(
"tbl_header_title_help");
 
  486                         $this->tpl->setVariable(
"TBL_HELP_LINK",$this->help_page);
 
  487                         $this->tpl->setVariable(
"TBL_HELP_IMG_ALT",$this->help_icon_alt);
 
  488                         $this->tpl->parseCurrentBlock();
 
  492                 if ($this->enabled[
"hits"] && $this->enabled[
"title"])
 
  494                         $this->tpl->setCurrentBlock(
"tbl_header_hits_page");
 
  495                         $this->tpl->setVariable(
"LIMIT",
$_SESSION[
"tbl_limit"]);
 
  496                         $this->tpl->setVariable(
"HITS_PER_PAGE",$this->lng->txt(
"hits_per_page"));
 
  497                         $this->tpl->parseCurrentBlock();
 
  501                 if ($this->enabled[
"title"])
 
  503                         $this->tpl->setCurrentBlock(
"tbl_header_title");
 
  504                         $this->tpl->setVariable(
"COLUMN_COUNT",$this->column_count);
 
  505                         $this->tpl->setVariable(
"TBL_TITLE",$this->title);
 
  506                         $this->tpl->parseCurrentBlock();
 
  510                 if ($this->enabled[
"header"])
 
  520                 if ($this->enabled[
"content"] && is_array($this->data))
 
  522                         if($this->enabled[
'auto_sort'])
 
  529                         foreach ($this->data as $tbl_content_row)
 
  531                                 foreach ($tbl_content_row as $key => $tbl_content_cell)
 
  533                                         if (is_array($tbl_content_cell))
 
  535                                                 $this->tpl->setCurrentBlock(
"tbl_cell_subtitle");
 
  536                                                 $this->tpl->setVariable(
"TBL_CELL_SUBTITLE",$tbl_content_cell[1]);
 
  537                                                 $this->tpl->parseCurrentBlock();
 
  538                                                 $tbl_content_cell = 
"<b>".$tbl_content_cell[0].
"</b>";
 
  541                                         $this->tpl->setCurrentBlock(
"tbl_content_cell");
 
  542                                         $this->tpl->setVariable(
"TBL_CONTENT_CELL",$tbl_content_cell);
 
  543                                         $this->tpl->parseCurrentBlock();
 
  546                                 $this->tpl->setCurrentBlock(
"tbl_content_row");
 
  548                                 $this->tpl->setVariable(
"ROWCOLOR", $rowcolor);
 
  549                                 $this->tpl->parseCurrentBlock();
 
  555                 if ($this->enabled[
"select_all"])
 
  559                                 $this->tpl->setVariable(
'SELECT_PREFIX',$this->prefix);
 
  560                                 $this->tpl->setVariable(
"SELECT_ALL_TXT_SELECT_ALL", $this->lng->txt(
"select_all"));
 
  562                                 $this->tpl->setVariable(
"SELECT_ALL_FORM_NAME", $this->
getFormName());
 
  563                                 if (!($this->enabled[
"numinfo"] && $this->enabled[
"footer"]))
 
  571                 if ($this->enabled[
"numinfo_header"])
 
  573                         $start = $this->offset + 1;                             
 
  576                         if ($end > $this->max_count or $this->limit == 0)
 
  581                         if ($this->lang_support)
 
  583                                 $numinfo = 
"(".$this->lng->txt(
"dataset").
" ".$start.
" - ".$end.
" ".strtolower($this->lng->txt(
"of")).
" ".$this->max_count.
")";
 
  587                                 $numinfo = 
"(Dataset ".$start.
" - ".$end.
" of ".$this->max_count.
")";
 
  589                         if ($this->max_count > 0)
 
  592                                 $this->tpl->setCurrentBlock(
"tbl_header_numinfo");
 
  593                                 $this->tpl->setVariable(
"NUMINFO_HEADER", $numinfo);
 
  594                                 $this->tpl->setVariable(
"COLUMN_COUNT_HEADER", $this->
getColumnCount());
 
  595                                 $this->tpl->parseCurrentBlock();
 
  599                 if ($this->enabled[
"numinfo"] && $this->enabled[
"footer"])
 
  601                         $start = $this->offset + 1;                             
 
  604                         if ($end > $this->max_count or $this->limit == 0)
 
  609                         if ($this->lang_support)
 
  611                                 $numinfo = 
"(".$this->lng->txt(
"dataset").
" ".$start.
" - ".$end.
" ".strtolower($this->lng->txt(
"of")).
" ".$this->max_count.
")";
 
  615                                 $numinfo = 
"(Dataset ".$start.
" - ".$end.
" of ".$this->max_count.
")";
 
  617                         if ($this->max_count > 0)
 
  620                                 $this->tpl->setCurrentBlock(
"tbl_footer_numinfo");
 
  621                                 $this->tpl->setVariable(
"NUMINFO", $numinfo);
 
  622                                 $this->tpl->parseCurrentBlock();
 
  626                 if ($this->enabled[
"linkbar"] && $this->enabled[
"footer"] && $this->limit  != 0
 
  627                          && $this->max_count > 0)
 
  630                                                         $this->prefix.
"sort_by"         => $this->header_vars[$this->order_column],
 
  631                                                         $this->prefix.
"sort_order"      => $this->order_direction
 
  633                         $params = array_merge($this->header_params,$params);
 
  636                                                         "link"  => $this->footer_style,
 
  637                                                         "prev"  => $this->footer_previous,
 
  638                                                         "next"  => $this->footer_next,
 
  642                                 ? basename($_SERVER[
"PHP_SELF"])
 
  645                         $linkbar = 
ilUtil::Linkbar(
$base,$this->max_count,$this->limit,$this->offset,$params,$layout, $this->prefix);
 
  646                         $this->tpl->setCurrentBlock(
"tbl_footer_linkbar");
 
  647                         $this->tpl->setVariable(
"LINKBAR", $linkbar);
 
  648                         $this->tpl->parseCurrentBlock();
 
  652                 if ($this->enabled[
"footer"] && $this->max_count > 0)
 
  654                         $this->tpl->setCurrentBlock(
"tbl_footer");
 
  655                         $this->tpl->setVariable(
"COLUMN_COUNT",$this->column_count);
 
  656                         $this->tpl->parseCurrentBlock();
 
  660                 if ($this->enabled[
"action"])
 
  662                         foreach ($this->action_buttons as $button)
 
  664                                 $this->tpl->setCurrentBlock(
"tbl_action_btn");
 
  665                                 $this->tpl->setVariable(
"BTN_NAME", $button[
"name"]);
 
  666                                 $this->tpl->setVariable(
"BTN_VALUE", $button[
"value"]);
 
  667                                 $this->tpl->parseCurrentBlock();
 
  669                         $this->tpl->setCurrentBlock(
"tbl_action_row");
 
  671                         $this->tpl->setVariable(
"ALT_ARROW", $this->lng->txt(
"arrow_downright.png"));
 
  672                         $this->tpl->setVariable(
"COLUMN_COUNTS", $this->
getColumnCount());
 
  673                         $this->tpl->parseCurrentBlock();
 
  676                 if ($this->enabled[
"form"])
 
  678                         $this->tpl->touchBlock(
"tbl_form_footer");
 
  681                 if($this->enabled[
'table'])
 
  683                         $this->tpl->touchBlock(
"tbl_table_end");
 
  686                 if (!$this->global_tpl)
 
  688                         return $this->tpl->get();
 
  694                 foreach ($this->header_names as $key => $tbl_header_cell)
 
  696                         if (!$this->enabled[
"sort"])
 
  698                                 $this->tpl->setCurrentBlock(
"tbl_header_no_link");
 
  699                                 if ($this->column_width[$key])
 
  701                                         $this->tpl->setVariable(
"TBL_COLUMN_WIDTH_NO_LINK",
" width=\"".$this->column_width[$key].
"\"");
 
  703                                 $this->tpl->setVariable(
"TBL_HEADER_CELL_NO_LINK",$tbl_header_cell);
 
  704                                 $this->tpl->parseCurrentBlock();
 
  707                         if (($key == $this->order_column) && ($this->order_direction != 
""))
 
  709                                 if (strcmp($this->header_vars[$key], 
"") != 0)
 
  711                                         $this->tpl->setCurrentBlock(
"tbl_order_image");
 
  712                                         $this->tpl->setVariable(
"IMG_ORDER_DIR",
ilUtil::getImagePath($this->order_direction.
"_order.png"));
 
  713                                         $this->tpl->parseCurrentBlock();
 
  717                         $this->tpl->setCurrentBlock(
"tbl_header_cell");
 
  718                         $this->tpl->setVariable(
"TBL_HEADER_CELL",$tbl_header_cell);
 
  721                         if ($this->column_width[$key])
 
  723                                 $this->tpl->setVariable(
"TBL_COLUMN_WIDTH",
" width=\"".$this->column_width[$key].
"\"");
 
  726                         $lng_sort_column = (
$this->lang_support) ? $this->lng->txt(
"sort_by_this_column") : 
"Sort by this column";
 
  727                         $this->tpl->setVariable(
"TBL_ORDER_ALT",$lng_sort_column);
 
  731                         if ($key == $this->order_column)
 
  733                                 $order_dir = $this->sort_order;
 
  735                                 $lng_change_sort = (
$this->lang_support) ? $this->lng->txt(
"change_sort_direction") : 
"Change sort direction";
 
  736                                 $this->tpl->setVariable(
"TBL_ORDER_ALT",$lng_change_sort);
 
  740                         $this->tpl->parseCurrentBlock();
 
  743                 $this->tpl->setCurrentBlock(
"tbl_header");
 
  744                 $this->tpl->parseCurrentBlock();
 
  749                 $this->tpl->setVariable(
"TBL_ORDER_LINK",basename($_SERVER[
"PHP_SELF"]).
"?".$this->link_params.$this->prefix.
"sort_by=".$this->header_vars[$key].
"&".$this->prefix.
"sort_order=".$order_dir.
"&".$this->prefix.
"offset=".$this->offset);
 
  760                 $this->styles[$a_element] = $a_style;
 
  770                 return $this->styles[$a_element];
 
  780                 $this->base = $a_base;
 
  810                 $this->form_name = $a_name;
 
  830                 $this->select_all_checkbox = $a_select_all_checkbox;
 
  840                 $this->action_buttons = array();
 
  852                 array_push($this->action_buttons, 
 
  855                                 "value" => $btn_value