4 require_once(
"./Services/COPage/classes/class.ilPCTable.php");
5 require_once(
"./Services/COPage/classes/class.ilPageContentGUI.php");
24 function ilPCTableGUI(&$a_pg_obj, &$a_content_obj, $a_hier_id, $a_pc_id =
"")
27 $this->
setCharacteristics(array(
"StandardTable" => $this->lng->txt(
"cont_StandardTable")));
37 "Cell3" =>
"Cell3",
"Cell4" =>
"Cell4"));
48 $next_class = $this->ctrl->getNextClass($this);
51 $cmd = $this->ctrl->getCmd();
71 $ilTabs->setBackTarget($lng->txt(
"pg"),
72 $this->ctrl->getParentReturn($this));
74 $ilTabs->addTarget(
"cont_table_properties",
75 $ilCtrl->getLinkTarget($this,
"edit"),
"edit",
78 $ilTabs->addTarget(
"cont_table_cell_properties",
79 $ilCtrl->getLinkTarget($this,
"editCellStyle"),
"editCellStyle",
91 $ilTabs->addSubTabTarget(
"cont_style",
92 $ilCtrl->getLinkTarget($this,
"editCellStyle"),
"editCellStyle",
95 $ilTabs->addSubTabTarget(
"cont_width",
96 $ilCtrl->getLinkTarget($this,
"editCellWidth"),
"editCellWidth",
99 $ilTabs->addSubTabTarget(
"cont_alignment",
100 $ilCtrl->getLinkTarget($this,
"editCellAlignment"),
"editCellAlignment",
103 $ilTabs->addSubTabTarget(
"cont_span",
104 $ilCtrl->getLinkTarget($this,
"editCellSpan"),
"editCellSpan",
129 $html = $this->form->getHTML();
130 $html.=
"<br />".$this->renderTable(
"");
131 $tpl->setContent($html);
141 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
143 $this->form->setFormAction($ilCtrl->getFormAction($this));
144 if ($a_mode ==
"create")
146 $this->form->setTitle($this->lng->txt(
"cont_insert_table"));
150 $this->form->setTitle($this->lng->txt(
"cont_table_properties"));
153 if ($a_mode ==
"create")
156 for($i=1; $i<=20; $i++)
165 $this->form->addItem($cols);
171 $this->form->addItem($rows);
175 $width =
new ilTextInputGUI($this->lng->txt(
"cont_table_width"),
"width");
177 $width->setMaxLength(6);
178 $this->form->addItem($width);
181 $border =
new ilTextInputGUI($this->lng->txt(
"cont_table_border"),
"border");
184 $border->setMaxLength(6);
185 $this->form->addItem($border);
188 $padding =
new ilTextInputGUI($this->lng->txt(
"cont_table_cellpadding"),
"padding");
190 $padding->setSize(6);
191 $padding->setMaxLength(6);
192 $this->form->addItem($padding);
196 $spacing->setValue(
"0px");
197 $this->form->addItem($spacing);
205 require_once(
"./Services/Form/classes/class.ilAdvSelectInputGUI.php");
210 $chars = array_merge($templates, $chars);
211 if (is_object($this->content_obj))
213 if ($chars[$a_seleted_value] ==
"" && ($this->content_obj->getClass() !=
""))
215 $chars = array_merge(
216 array($this->content_obj->getClass() => $this->content_obj->getClass()),
220 foreach($chars as $k => $char)
222 if (strpos($k,
":") > 0)
224 $t = explode(
":", $k);
225 $html = $this->style->lookupTemplatePreview(
$t[1]).
'<div style="clear:both;" class="small">'.$char.
"</div>";
229 $html =
'<table class="ilc_table_'.$k.
'"><tr><td class="small">'.
230 $char.
'</td></tr></table>';
232 $char_prop->addOption($k, $char, $html);
234 $char_prop->setValue(
"StandardTable");
235 $this->form->addItem($char_prop);
238 for($i=0; $i<=3; $i++)
244 $rh =
new ilSelectInputGUI($this->lng->txt(
"cont_nr_row_header"),
"row_header");
247 $this->form->addItem($rh);
250 $rf =
new ilSelectInputGUI($this->lng->txt(
"cont_nr_row_footer"),
"row_footer");
253 $this->form->addItem($rf);
256 $ch =
new ilSelectInputGUI($this->lng->txt(
"cont_nr_col_header"),
"col_header");
259 $this->form->addItem($ch);
262 $cf =
new ilSelectInputGUI($this->lng->txt(
"cont_nr_col_footer"),
"col_footer");
265 $this->form->addItem($cf);
267 if ($a_mode ==
"create")
270 require_once(
"./Services/Form/classes/class.ilAdvSelectInputGUI.php");
276 $options = array_merge(array(
"" => $this->lng->txt(
"none")), $chars);
279 $html =
'<table border="0" cellspacing="0" cellpadding="0"><tr><td class="ilc_table_cell_'.$k.
'">'.
280 $option.
'</td></tr></table>';
281 $fr_style->addOption($k, $option, $html);
284 $fr_style->setValue(
"");
285 $this->form->addItem($fr_style);
289 $align_opts = array(
"Left" => $lng->txt(
"cont_left"),
290 "Right" => $lng->txt(
"cont_right"),
"Center" => $lng->txt(
"cont_center"),
291 "LeftFloat" => $lng->txt(
"cont_left_float"),
292 "RightFloat" => $lng->txt(
"cont_right_float"));
295 $align->setValue(
"Center");
296 $this->form->addItem($align);
299 $caption =
new ilTextInputGUI($this->lng->txt(
"cont_caption"),
"caption");
301 $this->form->addItem($caption);
304 $ca_opts = array(
"top" => $lng->txt(
"cont_top"),
305 "bottom" => $lng->txt(
"cont_bottom"));
309 $caption->addSubItem($ca);
312 if ($a_mode ==
"create")
316 $op =
new ilRadioOption($this->lng->txt(
"cont_html_table"),
"html");
317 $import->addOption($op);
318 $op2 =
new ilRadioOption($this->lng->txt(
"cont_spreadsheet_table"),
"spreadsheet");
321 $import_data->setRows(8);
322 $import_data->setCols(50);
325 $import->addOption($op2);
326 $import->setValue(
"html");
327 $this->form->addItem($import);
333 $s_lang =
$_SESSION[
"il_text_lang_".$_GET[
"ref_id"]];
337 $s_lang = $ilUser->getLanguage();
339 require_once(
"Services/MetaData/classes/class.ilMDLanguageItem.php");
343 $language->setValue($s_lang);
344 $this->form->addItem($language);
346 if ($a_mode ==
"create")
348 $this->form->addCommandButton(
"create_tab", $lng->txt(
"save"));
349 $this->form->addCommandButton(
"cancelCreate", $lng->txt(
"cancel"));
353 $this->form->addCommandButton(
"saveProperties", $lng->txt(
"save"));
363 $values[
"width"] = $this->content_obj->getWidth();
364 $values[
"border"] = $this->content_obj->getBorder();
365 $values[
"padding"] = $this->content_obj->getCellPadding();
366 $values[
"spacing"] = $this->content_obj->getCellSpacing();
367 $values[
"row_header"] = $this->content_obj->getHeaderRows();
368 $values[
"row_footer"] = $this->content_obj->getFooterRows();
369 $values[
"col_header"] = $this->content_obj->getHeaderCols();
370 $values[
"col_footer"] = $this->content_obj->getFooterCols();
371 if ($this->content_obj->getTemplate() !=
"")
373 $values[
"characteristic"] =
"t:".
375 $this->content_obj->getTemplate();
379 $values[
"characteristic"] = $this->content_obj->getClass();
381 $values[
"align"] = $this->content_obj->getHorizontalAlign();
382 $values[
"caption"] = $this->content_obj->getCaption();
383 $values[
"cap_align"] = $this->content_obj->getCaptionAlign();
384 $values[
"language"] = $this->content_obj->getLanguage();
386 $this->form->setValuesByArray($values);
388 $ca = $this->form->getItemByPostVar(
"cap_align");
389 $ca->setValue($this->content_obj->getCaptionAlign());
397 $tab_node = $this->content_obj->getNode();
398 $tab_node->set_attribute(
"Enabled",
"True");
399 $content = $this->dom->dump_node($tab_node);
401 $trans = $this->pg_obj->getLanguageVariablesXML();
402 $mobs = $this->pg_obj->getMultimediaXML();
407 include_once(
"./Services/Style/classes/class.ilObjStyleSheet.php");
409 $template_xml = $style->getTemplateXML();
413 $content = $content.$mobs.$trans.$template_xml;
421 static function _renderTable($content, $a_mode =
"table_edit", $a_submode =
"", $a_table_obj = null)
425 $content =
"<dummy>".$content.
"</dummy>";
427 $xsl = file_get_contents(
"./Services/COPage/xsl/page.xsl");
428 $args = array(
'/_xml' => $content,
'/_xsl' => $xsl );
435 $params = array (
'mode' => $a_mode,
436 'med_disabled_path' => $med_disabled_path,
437 'media_mode' => $ilUser->getPref(
"ilPageEditor_MediaMode"),
438 'media_mode' =>
'disable',
439 'webspace_path' => $wb_path,
'enlarge_path' => $enlarge_path);
440 $output =
xslt_process($xh,
"arg:/_xml",
"arg:/_xsl",NULL,$args, $params);
445 $output = str_replace(
"<",
"<",$output);
446 $output = str_replace(
">",
">",$output);
447 $output = str_replace(
"&",
"&",$output);
449 if ($a_mode ==
"table_edit" && !is_null($a_table_obj))
472 return '<div style="float:left;">'.$output.
'</div>';
482 $classes = $a_table->getAllCellClasses();
484 foreach ($classes as $k => $v)
488 $v = $lng->txt(
"none");
490 if (substr($v, 0, 4) ==
"ilc_")
494 $check = $lng->txt(
"cont_style").
": ".
495 '<input type="checkbox" value="1"'.
496 ' name="target['.$k.
']">'.
'</input> '.$v;
498 $a_output = str_replace(
"{{{{{TableEdit;".$k.
"}}}}}", $check, $a_output);
510 $classes = $a_table->getAllCellAlignments();
512 foreach ($classes as $k => $v)
516 $v = $lng->txt(
"default");
518 $check = $lng->txt(
"cont_alignment").
": ".
519 '<input type="checkbox" value="1"'.
520 ' name="target['.$k.
']">'.
'</input> '.$v;
522 $a_output = str_replace(
"{{{{{TableEdit;".$k.
"}}}}}", $check, $a_output);
534 $widths = $a_table->getAllCellWidths();
536 foreach ($widths as $k => $v)
538 $check = $lng->txt(
"cont_width").
": ".
539 '<input class="small" type="text" size="5" maxlength="10"'.
540 ' name="width['.$k.
']" value="'.$v.
'">'.
'</input>';
542 $a_output = str_replace(
"{{{{{TableEdit;".$k.
"}}}}}", $check, $a_output);
554 $spans = $a_table->getAllCellSpans();
556 foreach ($spans as $k => $v)
559 $selects =
'<div style="white-space:nowrap;">'.$lng->txt(
"cont_colspan").
": ".
560 '<select class="small" name="colspan['.$k.
']">';
561 for ($i = 1; $i <= $v[
"max_x"] - $v[
"x"] + 1; $i++)
563 $sel_str = ($i == $v[
"colspan"])
564 ?
'selected="selected"'
566 $selects.=
'<option value="'.$i.
'" '.$sel_str.
'>'.$i.
'</option>';
568 $selects.=
"</select></div>";
571 $selects.=
'<div style="margin-top:3px; white-space:nowrap;">'.$lng->txt(
"cont_rowspan").
": ".
572 '<select class="small" name="rowspan['.$k.
']">';
573 for ($i = 1; $i <= $v[
"max_y"] - $v[
"y"] + 1; $i++)
575 $sel_str = ($i == $v[
"rowspan"])
576 ?
'selected="selected"'
578 $selects.=
'<option value="'.$i.
'" '.$sel_str.
'>'.$i.
'</option>';
580 $selects.=
"</select></div>";
582 $a_output = str_replace(
"{{{{{TableEdit;".$k.
"}}}}}", $selects, $a_output);
597 $ilTabs->setSubTabActive(
"cont_style");
600 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
602 $form->setFormAction($ilCtrl->getFormAction($this));
603 $form->setTitle($this->lng->txt(
"cont_table_cell_properties"));
606 require_once(
"./Services/Form/classes/class.ilAdvSelectInputGUI.php");
612 $options = array_merge(array(
"" => $this->lng->txt(
"none")), $chars);
615 $html =
'<table border="0" cellspacing="0" cellpadding="0"><tr><td class="ilc_table_cell_'.$k.
'">'.
616 $option.
'</td></tr></table>';
617 $style->addOption($k, $option, $html);
620 $style->setValue(
"");
621 $style->setInfo($lng->txt(
"cont_set_tab_style_info"));
622 $form->addItem($style);
623 $form->setKeepOpen(
true);
625 $form->addCommandButton(
"setStyles", $lng->txt(
"cont_set_styles"));
627 $html = $form->getHTML();
628 $html.=
"<br />".$this->renderTable(
"table_edit",
"style").
"</form>";
629 $tpl->setContent($html);
643 $ilTabs->setSubTabActive(
"cont_width");
644 $ilTabs->setTabActive(
"cont_table_cell_properties");
646 $ctpl =
new ilTemplate(
"tpl.table_cell_properties.html",
true,
true,
"Services/COPage");
647 $ctpl->setVariable(
"BTN_NAME",
"setWidths");
648 $ctpl->setVariable(
"BTN_TEXT", $lng->txt(
"cont_save_widths"));
649 $ctpl->setVariable(
"FORMACTION", $ilCtrl->getFormAction($this));
651 $html = $ctpl->get();
652 $html.=
"<br />".$this->renderTable(
"table_edit",
"width").
"</form>";
653 $tpl->setContent($html);
667 $ilTabs->setSubTabActive(
"cont_span");
668 $ilTabs->setTabActive(
"cont_table_cell_properties");
670 $ctpl =
new ilTemplate(
"tpl.table_cell_properties.html",
true,
true,
"Services/COPage");
671 $ctpl->setVariable(
"BTN_NAME",
"setSpans");
672 $ctpl->setVariable(
"BTN_TEXT", $lng->txt(
"cont_save_spans"));
673 $ctpl->setVariable(
"FORMACTION", $ilCtrl->getFormAction($this));
675 $html = $ctpl->get();
676 $html.=
"<br />".$this->renderTable(
"table_edit",
"span").
"</form>";
677 $tpl->setContent($html);
688 if (is_array(
$_POST[
"target"]))
690 foreach (
$_POST[
"target"] as $k => $value)
694 $cid = explode(
":", $k);
700 $this->updated = $this->pg_obj->update();
702 $this->ctrl->redirect($this,
"editCellStyle");
712 if (is_array(
$_POST[
"width"]))
714 foreach (
$_POST[
"width"] as $k => $width)
716 $cid = explode(
":", $k);
721 $this->updated = $this->pg_obj->update();
723 $this->ctrl->redirect($this,
"editCellWidth");
733 if (is_array(
$_POST[
"colspan"]))
735 foreach (
$_POST[
"colspan"] as $k => $span)
740 $this->content_obj->setTDSpans(
$_POST[
"colspan"],
$_POST[
"rowspan"]);
742 $this->updated = $this->pg_obj->update();
744 $this->ctrl->redirect($this,
"editCellSpan");
754 $caption = str_replace(
"&",
"&", $caption);
755 $caption = str_replace(
"<",
"<", $caption);
756 $caption = str_replace(
">",
">", $caption);
768 if (strpos(
$_POST[
"characteristic"],
":") > 0)
770 $t = explode(
":",
$_POST[
"characteristic"]);
772 $this->content_obj->setClass(
"");
777 $this->content_obj->setTemplate(
"");
779 $this->content_obj->setCaption($caption,
789 $this->updated = $this->pg_obj->update();
790 if ($this->updated ===
true)
792 $this->ctrl->redirect($this,
"edit");
797 $this->pg_obj->addHierIDs();
807 $this->content_obj->setHorizontalAlign(
"Right");
808 $_SESSION[
"il_pg_error"] = $this->pg_obj->update();
809 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
817 $this->content_obj->setHorizontalAlign(
"Left");
818 $_SESSION[
"il_pg_error"] = $this->pg_obj->update();
819 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
827 $this->content_obj->setHorizontalAlign(
"Center");
828 $_SESSION[
"il_pg_error"] = $this->pg_obj->update();
829 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
837 $this->content_obj->setHorizontalAlign(
"LeftFloat");
838 $_SESSION[
"il_pg_error"] = $this->pg_obj->update();
839 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
847 $this->content_obj->setHorizontalAlign(
"RightFloat");
848 $_SESSION[
"il_pg_error"] = $this->pg_obj->update();
849 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
862 $html = $this->form->getHTML();
863 $tpl->setContent($html);
882 $this->content_obj->create($this->pg_obj, $this->hier_id, $this->pc_id);
883 $import_table = trim(
$_POST[
"import_table"]);
886 if (!empty ($import_table))
888 switch(
$_POST[
"import_type"])
892 if (!$this->content_obj->importHtml (
$_POST[
"language"], $import_table))
901 $this->content_obj->importSpreadsheet(
$_POST[
"language"], $import_table);
916 $this->content_obj->setFirstRowStyle($frtype);
919 $this->updated = $this->pg_obj->update();
921 if ($this->updated ===
true)
936 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
954 $ilTabs->setSubTabActive(
"cont_alignment");
955 $ilTabs->setTabActive(
"cont_table_cell_properties");
958 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
960 $form->setFormAction($ilCtrl->getFormAction($this));
961 $form->setTitle($this->lng->txt(
"cont_table_cell_properties"));
965 "" => $lng->txt(
"default"),
966 "Left" => $lng->txt(
"cont_left"),
967 "Center" => $lng->txt(
"cont_center"),
968 "Right" => $lng->txt(
"cont_right")
972 $si->setInfo($lng->txt(
""));
975 $form->setKeepOpen(
true);
977 $form->addCommandButton(
"setAlignment", $lng->txt(
"cont_set_alignment"));
979 $html = $form->getHTML();
980 $html.=
"<br />".$this->renderTable(
"table_edit",
"alignment").
"</form>";
981 $tpl->setContent($html);
992 if (is_array(
$_POST[
"target"]))
994 foreach (
$_POST[
"target"] as $k => $value)
998 $cid = explode(
":", $k);
1004 $this->updated = $this->pg_obj->update();
1007 $this->ctrl->redirect($this,
"editCellAlignment");