4require_once(
"./Services/COPage/classes/class.ilPCParagraph.php");
5require_once(
"./Services/COPage/classes/class.ilPageContentGUI.php");
23 function __construct($a_pg_obj, &$a_content_obj, $a_hier_id, $a_pc_id =
"")
25 parent::__construct($a_pg_obj, $a_content_obj, $a_hier_id, $a_pc_id);
38 return array(
"Standard" =>
$lng->txt(
"cont_standard"),
39 "Headline1" =>
$lng->txt(
"cont_Headline1"),
40 "Headline2" =>
$lng->txt(
"cont_Headline2"),
41 "Headline3" =>
$lng->txt(
"cont_Headline3"),
42 "Citation" =>
$lng->txt(
"cont_Citation"),
43 "Mnemonic" =>
$lng->txt(
"cont_Mnemonic"),
44 "Example" =>
$lng->txt(
"cont_Example"),
45 "Additional" =>
$lng->txt(
"cont_Additional"),
46 "Remark" =>
$lng->txt(
"cont_Remark"),
47 "List" =>
$lng->txt(
"cont_List"),
48 "TableContent" =>
$lng->txt(
"cont_TableContent")
60 if ($a_style_id > 0 &&
63 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
65 $types = array(
"text_block",
"heading1",
"heading2",
"heading3");
67 foreach ($types as
$t)
69 $chars = array_merge($chars,
$style->getCharacteristics(
$t));
72 foreach ($chars as $char)
74 if ($st_chars[$char] !=
"")
76 $new_chars[$char] = $st_chars[$char];
80 $new_chars[$char] = $char;
101 if ($a_style_id > 0 &&
104 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
106 $types = array(
"text_inline");
107 foreach ($types as
$t)
109 $chars = array_merge($chars,
$style->getCharacteristics(
$t,
false, $a_include_core));
123 $next_class = $this->ctrl->getNextClass($this);
126 array(
"text_block",
"heading1",
"heading2",
"heading3"));
129 $cmd = $this->ctrl->getCmd();
131 $this->log->debug(
"ilPCParagraphGUI: executeCommand ".
$cmd);
146 function edit($a_insert =
false)
151 $tpl =
new ilTemplate(
"tpl.paragraph_edit.html",
true,
true,
"Services/COPage");
159 $tpl->setCurrentBlock(
"commands");
160 $tpl->setVariable(
"BTN_NAME",
"create_par");
161 $tpl->setVariable(
"BTN_TEXT", $this->lng->txt(
"save"));
162 $tpl->setVariable(
"BTN_CANCEL",
"cancelCreate");
163 $tpl->setVariable(
"TXT_CANCEL", $this->lng->txt(
"cancel"));
164 $tpl->parseCurrentBlock();
171 $tpl->setVariable(
"TXT_ACTION", $this->lng->txt(
"cont_insert_par"));
175 $tpl->setCurrentBlock(
"commands");
176 $tpl->setVariable(
"BTN_NAME",
"update");
177 $tpl->setVariable(
"BTN_TEXT", $this->lng->txt(
"save"));
178 $tpl->setVariable(
"BTN_CANCEL",
"cancelUpdate");
179 $tpl->setVariable(
"TXT_CANCEL", $this->lng->txt(
"cancel"));
180 $tpl->parseCurrentBlock();
187 $tpl->setVariable(
"TXT_ACTION", $this->lng->txt(
"cont_edit_par"));
194 if (key(
$_POST[
"cmd"]) ==
"update")
196 $s_lang =
$_POST[
"par_language"];
200 $s_lang = $this->content_obj->getLanguage();
205 if (key(
$_POST[
"cmd"]) ==
"create_par")
207 $s_lang =
$_POST[
"par_language"];
213 $s_lang =
$_SESSION[
"il_text_lang_".$_GET[
"ref_id"]];
217 $s_lang =
$ilUser->getLanguage();
226 $tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
228 $tpl->setVariable(
"PAR_TA_NAME",
"par_content");
230 $this->tpl->addJavascript(
"./Services/COPage/phpBB/3_0_5/editor.js");
231 $this->tpl->addJavascript(
"./Services/COPage/js/paragraph_editing.js");
236 $tpl->setVariable(
"TXT_LANGUAGE", $this->lng->txt(
"language"));
237 $tpl->setVariable(
"TXT_ANCHOR", $this->lng->txt(
"cont_anchor"));
239 require_once(
"Services/MetaData/classes/class.ilMDLanguageItem.php");
242 $tpl->setVariable(
"SELECT_LANGUAGE", $select_lang);
244 $tpl->setVariable(
"TXT_CHARACTERISTIC", $this->lng->txt(
"cont_characteristic"));
249 if (key(
$_POST[
"cmd"]) ==
"update" || key(
$_POST[
"cmd"]) ==
"create_par")
253 $s_text = str_replace(
"{",
"{", $s_text);
254 $s_text = str_replace(
"}",
"}", $s_text);
258 $s_text = $this->content_obj->xml2output($this->content_obj->getText());
261 $tpl->setVariable(
"PAR_TA_CONTENT", $s_text);
263 $tpl->parseCurrentBlock();
265 $this->tpl->setContent(
$tpl->get());
280 if (key(
$_POST[
"cmd"]) ==
"update")
282 $s_char =
$_POST[
"par_characteristic"];
286 $s_char = $this->content_obj->getCharacteristic();
289 $s_char =
"Standard";
295 if (key(
$_POST[
"cmd"]) ==
"create_par")
297 $s_char =
$_POST[
"par_characteristic"];
301 $s_char =
"Standard";
304 $cont_obj = $this->pg_obj->getContentObject($this->
getHierId());
305 if (is_object($cont_obj))
307 if ($cont_obj->getType() ==
"li" ||
308 ($cont_obj->getType() ==
"par" && $cont_obj->getCharacteristic() ==
"List"))
313 if ($cont_obj->getType() ==
"td" ||
314 ($cont_obj->getType() ==
"par" && $cont_obj->getCharacteristic() ==
"TableContent"))
316 $s_char =
"TableContent";
330 $s_text = $this->content_obj->getText();
331 $this->log->debug(
"step 1: ".substr($s_text, 0, 1000));
334 $s_text = $this->content_obj->xml2output($s_text,
true,
false);
335 $this->log->debug(
"step 2: ".substr($s_text, 0, 1000));
340 $this->log->debug(
"step 3: ".substr($s_text, 0, 1000));
343 $ids =
"###".$this->content_obj->readHierId().
":".$this->content_obj->readPCId().
"###".
346 $this->log->debug(
"step 4: ".substr($ids.$s_text, 0, 1000));
357 echo $this->content_obj->getParagraphSequenceContent($this->pg_obj);
369 $s_text = str_replace(array(
"<SimpleBulletList>",
"</SimpleBulletList>"),
370 array(
"<ul class='ilc_list_u_BulletedList'>",
"</ul>"),
372 $s_text = str_replace(array(
"<SimpleNumberedList>",
"</SimpleNumberedList>"),
373 array(
"<ol class='ilc_list_o_NumberedList'>",
"</ol>"), $s_text);
374 $s_text = str_replace(array(
"<SimpleListItem>",
"</SimpleListItem>"),
375 array(
"<li class='ilc_list_item_StandardListItem'>",
"</li>"), $s_text);
376 $s_text = str_replace(array(
"<SimpleListItem/>"),
377 array(
"<li class='ilc_list_item_StandardListItem'></li>"), $s_text);
384 include_once(
"./Services/COPage/classes/class.ilPageContentGUI.php");
387 if (!in_array($bb, array(
"code",
"tex",
"fn",
"xln",
"sub",
"sup")))
389 $s_text = str_replace(
"[".$bb.
"]",
390 '<span class="ilc_text_inline_'.$cl.
'">', $s_text);
391 $s_text = str_replace(
"[/".$bb.
"]",
397 $ws=
"[ \t\r\f\v\n]*";
398 while (preg_match(
"~\[(marked$ws(class$ws=$ws\"([^\"])*\")$ws)\]~i", $s_text, $found))
401 if (isset($attribs[
"class"]))
403 $s_text = str_replace(
"[".$found[1].
"]",
"<span class=\"ilc_text_inline_".$attribs[
"class"].
"\">", $s_text);
407 $s_text = str_replace(
"[".$found[1].
"]",
"[error:marked".$found[1].
"]",$s_text);
410 $s_text = preg_replace(
'~\[\/marked\]~i',
"</span>",$s_text);
414 $s_text = str_replace(array(
"[code]",
"[/code]"),
415 array(
"<code>",
"</code>"), $s_text);
418 $s_text = str_replace(array(
"[sup]",
"[/sup]"),
419 array(
'<sup class="ilc_sup_Sup">',
"</sup>"), $s_text);
422 $s_text = str_replace(array(
"[sub]",
"[/sub]"),
423 array(
'<sub class="ilc_sub_Sub">',
"</sub>"), $s_text);
439 $this->log->debug(
"start");
441 $this->updated = $this->content_obj->saveJS($this->pg_obj,
442 $_POST[
"ajaxform_content"],
446 $this->log->debug(
"ilPCParagraphGUI, saveJS: got updated value ".$this->updated);
450 if ($this->updated ===
true)
452 $a_pc_id_str = $this->content_obj->getLastSavedPcId($this->pg_obj,
true);
453 $this->log->debug(
"ilPCParagraphGUI, saveJS: echoing pc_id_str ".$a_pc_id_str.
" (and exit)");
459 if ($this->updated !==
true && is_array($this->updated))
464 $a_pc_id_str = $this->content_obj->getLastSavedPcId($this->pg_obj,
true);
466 $ilCtrl->setParameterByClass(
$ilCtrl->getReturnClass($this),
"updated_pc_id_str",
467 urlencode($a_pc_id_str));
468 $this->log->debug(
"ilPCParagraphGUI, saveJS: redirecting to edit command of ".
$ilCtrl->getReturnClass($this).
".");
469 $ilCtrl->redirectByClass(
$ilCtrl->getReturnClass($this),
"edit",
"",
true);
480 foreach ($a_err as $err)
482 $err_str.= $err[1].
"<br />";
485 $this->log->debug(
"ilPCParagraphGUI, outputError() and exit: ".substr($err_str, 0, 100));
495 $this->log->debug(
"ilPCParagraphGUI, cancel(): return to parent: jump".$this->hier_id);
496 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
508 if ($chars[$a_seleted_value] ==
"" && ($a_seleted_value !=
""))
510 $chars = array_merge(array($a_seleted_value => $a_seleted_value),
514 foreach ($chars as $char => $char_lang)
516 $a_tpl->setCurrentBlock(
"characteristic_cell");
517 $a_tpl->setVariable(
"CHAR_HTML",
518 '<div class="ilc_text_block_'.$char.
'" style="margin-top:2px; margin-bottom:2px; position:static;">'.$char_lang.
"</div>");
519 $a_tpl->setVariable(
"CHAR_VALUE", $char);
520 if ($char == $a_seleted_value)
522 $a_tpl->setVariable(
"SELECTED",
523 ' checked="checked" ');
525 $a_tpl->parseCurrentBlock();
526 if ((($i+1) % 3) == 0)
528 $a_tpl->touchBlock(
"characteristic_row");
532 $a_tpl->touchBlock(
"characteristic_table");
543 $a_tpl->setVariable(
"ADV_SEL_STYLE", self::getStyleSelector($a_selected,
552 include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
554 $selection->setPullRight(
false);
555 $selection->setFormSelectMode(
"par_characteristic",
"",
false,
558 $selection->setId(
"style_selection");
559 $selection->setSelectionHeaderClass(
"ilEditSubmit ilTinyMenuDropDown");
561 $selection->setSelectedValue($a_selected);
562 $selection->setUseImages(
false);
566 $selection->setSelectCallback(
"ilCOPage.setParagraphClass");
570 $title_char = ($chars[$a_selected] !=
"")
571 ? $chars[$a_selected]
573 $selection->setListTitle($title_char);
575 if ($chars[$a_seleted] ==
"" && ($a_seleted !=
""))
577 $chars = array_merge(array($a_seleted => $a_seleted),
581 foreach ($chars as $char => $char_lang)
587 case "Headline1":
$t =
"heading1"; $tag =
"h1";
break;
588 case "Headline2":
$t =
"heading2"; $tag =
"h2";
break;
589 case "Headline3":
$t =
"heading3"; $tag =
"h3";
break;
591 $html =
'<div class="ilCOPgEditStyleSelectionItem"><'.$tag.
' class="ilc_'.
$t.
'_'.$char.
'" style="'.self::$style_selector_reset.
'">'.$char_lang.
"</".$tag.
"></div>";
592 $selection->addItem($char_lang, $char,
"",
593 "", $char,
"",
$html);
595 return $selection->getHTML();
605 include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
607 $selection->setPullRight(
false);
608 $selection->setFormSelectMode(
"char_characteristic",
"",
false,
611 $selection->setId(
"char_style_selection");
612 $selection->setSelectionHeaderClass(
"ilEditSubmit");
615 $selection->setUseImages(
false);
619 $selection->setSelectCallback(
"ilCOPage.setCharacterClass");
626 $selection->setListTitle(
" <i>A</i>");
635 "Comment" => array(
"code" =>
"com",
"txt" =>
$lng->txt(
"cont_char_style_com")),
636 "Quotation" => array(
"code" =>
"quot",
"txt" =>
$lng->txt(
"cont_char_style_quot")),
637 "Accent" => array(
"code" =>
"acc",
"txt" =>
$lng->txt(
"cont_char_style_acc")),
638 "Code" => array(
"code" =>
"code",
"txt" =>
$lng->txt(
"cont_char_style_code"))
641 if ($a_style_id > 0 )
645 if (!isset($chars[$c]))
647 $chars[$c] = array(
"code" =>
"",
"txt" => $c);
652 foreach ($chars as $key => $char)
655 $a_par_type,
"active_".$char[
"code"],
true))
661 case "Code": $tag =
"code";
break;
663 $html =
'<'.$tag.
' class="ilc_'.
$t.
'_'.$key.
'" style="font-size:90%; margin-top:2px; margin-bottom:2px; position:static;">'.$char[
"txt"].
"</".$tag.
">";
669 $html =
'<a class="nostyle" style="display:block;" href="#" onclick="return false;">'.$html.
"</a>";
670 $selection->addItem($char[
"txt"], $key,
"",
671 "", $key,
"",
$html);
674 return $selection->getHTML();
682 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
684 if ($this->pg_obj->getParentType() ==
"gdf" ||
685 $this->pg_obj->getParentType() ==
"lm")
687 if ($this->pg_obj->getParentType() !=
"gdf")
699 if ($this->pg_obj->getParentType() !=
"sahs")
711 $this->log->debug(
"ilPCParagraphGUI, saveJS: got updated value ".$this->updated);
712 return $this->
edit(
true);
720 $this->log->debug(
"ilPCParagraphGUI, update(): start");
723 $this->content_obj->setLanguage(
$_POST[
"par_language"]);
724 $this->content_obj->setCharacteristic(
$_POST[
"par_characteristic"]);
726 $this->updated = $this->content_obj->setText(
727 $this->content_obj->input2xml(
$_POST[
"par_content"],
728 $_POST[
"usedwsiwygeditor"]),
true);
729 if ($this->updated !==
true)
735 $this->updated = $this->content_obj->updatePage($this->pg_obj);
738 if ($this->updated ===
true)
740 $this->log->debug(
"ilPCParagraphGUI, update(): return to parent: jump".$this->hier_id);
741 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
745 $this->log->debug(
"ilPCParagraphGUI, update(): call edit.");
756 $this->log->debug(
"ilPCParagraphGUI, create(): start.");
758 if (
$_POST[
"ajaxform_hier_id"] !=
"")
765 $this->content_obj->create($this->pg_obj, $this->hier_id, $this->pc_id);
767 $this->content_obj->setLanguage(
$_POST[
"par_language"]);
769 $this->content_obj->setCharacteristic(
$_POST[
"par_characteristic"]);
771 $this->updated = $this->content_obj->setText(
772 $this->content_obj->input2xml(
$_POST[
"par_content"],
773 $_POST[
"usedwsiwygeditor"]),
true);
775 if ($this->updated !==
true)
780 $this->updated = $this->content_obj->updatePage($this->pg_obj);
782 if ($this->updated ===
true)
784 $this->ctrl->returnToParent($this,
"jump".$this->hier_id);
799 $this->log->debug(
"ilPCParagraphGUI, createJS(): start");
802 $this->updated = $this->content_obj->saveJS($this->pg_obj,
803 $_POST[
"ajaxform_content"],
811 $a_pc_id_str = $this->content_obj->getLastSavedPcId($this->pg_obj,
true);
813 $this->log->debug(
"ilPCParagraphGUI, createJS(): echo pc id and exit: ".$a_pc_id_str);
818 if ($this->updated !==
true && is_array($this->updated))
824 $a_pc_id_str = $this->content_obj->getLastSavedPcId($this->pg_obj,
true);
825 $ilCtrl->setParameterByClass(
$ilCtrl->getReturnClass($this),
"updated_pc_id_str",
826 urlencode($a_pc_id_str));
827 $this->log->debug(
"ilPCParagraphGUI, createJS(): return to edit cmd of ".
$ilCtrl->getReturnClass($this));
829 $ilCtrl->redirectByClass(
$ilCtrl->getReturnClass($this),
"edit",
"",
true);
839 $a_tpl->setCurrentBlock(
"help_item");
840 $a_tpl->setVariable(
"TXT_HELP",
"<b>".
$lng->txt(
"cont_syntax_help").
"</b>");
841 $a_tpl->parseCurrentBlock();
842 $a_tpl->setCurrentBlock(
"help_item");
843 $a_tpl->setVariable(
"TXT_HELP",
"* ".
$lng->txt(
"cont_bullet_list"));
844 $a_tpl->parseCurrentBlock();
845 $a_tpl->setCurrentBlock(
"help_item");
846 $a_tpl->setVariable(
"TXT_HELP",
"# ".
$lng->txt(
"cont_numbered_list"));
847 $a_tpl->parseCurrentBlock();
848 $a_tpl->setCurrentBlock(
"help_item");
849 $a_tpl->setVariable(
"TXT_HELP",
"=".
$lng->txt(
"cont_Headline1").
"=<br />".
850 "==".$lng->txt(
"cont_Headline2").
"==<br />".
851 "===".$lng->txt(
"cont_Headline3").
"===");
852 $a_tpl->parseCurrentBlock();
856 $a_tpl->setCurrentBlock(
"help_item");
857 $a_tpl->setVariable(
"TXT_HELP",
"[[".
$lng->txt(
"cont_wiki_page_link").
"]]");
858 $a_tpl->parseCurrentBlock();
861 $a_tpl->setCurrentBlock(
"help");
862 $a_tpl->parseCurrentBlock();
An exception for terminatinating execution or to throw for unit testing.
User interface class for advanced drop-down selection lists.
const ON_ITEM_CLICK_FORM_SELECT
static _lookupStyleSheetId($a_cont_obj_id)
lookup style sheet ID
static getContentStylePath($a_style_id)
get content style path
static _lookupType($a_id, $a_reference=false)
lookup object type
saveJS()
Save paragraph by JS call.
insert()
insert paragraph form
insertCharacteristicTable($a_tpl, $a_seleted_value)
Insert characteristic table.
determineCharacteristic($a_insert=false)
Determine current characteristic.
outputError($a_err)
Output error.
static xml2outputJS($s_text, $char, $a_pc_id)
Prepare content for js output.
__construct($a_pg_obj, &$a_content_obj, $a_hier_id, $a_pc_id="")
Constructor @access public.
createJS()
Create paragraph per JS.
editJS()
Edit paragraph (Ajax mode, sends the content of the paragraph)
create()
create new paragraph in dom and update page in db
executeCommand()
execute command
static _getCharacteristics($a_style_id)
Get characteristics.
static _getTextCharacteristics($a_style_id, $a_include_core=false)
Get text characteristics.
static getStyleSelector($a_selected, $a_chars, $a_use_callback=false)
Get style selector.
edit($a_insert=false)
edit paragraph form
insertHelp($a_tpl)
Insert Help.
insertStyleSelectionList($a_tpl, $a_selected)
Insert style selection list.
static getCharStyleSelector($a_par_type, $a_use_callback=true, $a_style_id=0)
Get character style selector.
static _getStandardCharacteristics()
Get standard characteristics.
update()
update paragraph in dom and update page in db
editMultipleJS()
Edit multiple paragraphs (Ajax mode, sends the content of the paragraphs)
User Interface for Editing of Page Content Objects (Paragraphs, Tables, ...)
getHierId()
get hierarchical id in dom object
getCharacteristicsOfCurrentStyle($a_type)
Get characteristics of current style.
getPageConfig()
Get Page Config.
displayValidationError()
display validation errors
static _getCommonBBButtons()
Get common bb buttons.
getCharacteristics()
Get characteristics.
getBBMenu($a_ta_name="par_content")
Get the bb menu incl.
setCharacteristics($a_chars)
Set Characteristics.
static lookupSettingByParentType($a_par_type, $a_name, $a_default=false)
Lookup setting by parent type.
special template class to simplify handling of ITX/PEAR
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 attribsToArray($a_str)
converts a string of format var1 = "val1" var2 = "val2" ... into an array
for($i=1; $i<=count($kw_cases_sel); $i+=1) $lang