4 require_once
'Services/RTE/classes/class.ilRTE.php';
40 $this->plugins = array(
60 $this->contextMenuItems = array(
'cut',
'copy',
'paste',
'link',
'unlink',
'ilimgupload',
'imagetools',
'table');
77 if (!$this->client_init->readVariable(
'tinymce',
'use_advanced_img_mng')) {
78 parent::addPlugin(
'ilimgupload');
79 parent::addButton(
'ilimgupload');
80 parent::removePlugin(
'ibrowser');
81 parent::removePlugin(
'image');
90 parent::addPlugin(
'ibrowser');
91 parent::removePlugin(
'ilimgupload');
103 if (!in_array(
'img', $tags)) {
105 parent::removePlugin(
'ilimgupload');
106 parent::removePlugin(
'ibrowser');
107 parent::removePlugin(
'image');
126 if (!$this->client_init->readVariable(
'tinymce',
'use_advanced_img_mng')) {
127 parent::removePlugin(
'ilimgupload');
130 parent::removePlugin(
'ibrowser');
140 if (self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name) {
143 parent::addPlugin($a_plugin_name);
152 if (self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name) {
155 parent::removePlugin($a_plugin_name);
162 public function addRTESupport($obj_id, $obj_type, $a_module =
"", $allowFormElements =
false, $cfg_template = null, $hide_switch =
false)
166 if ($this->browser->isMobile()) {
172 include_once
"./Services/UICore/classes/class.ilTemplate.php";
174 $tpl =
new ilTemplate(($cfg_template === null ?
"tpl.tinymce.js" : $cfg_template),
true,
true,
"Services/RTE");
178 if ($allowFormElements) {
179 $tpl->touchBlock(
"formelements");
182 $tpl->setCurrentBlock(
"initial_width");
184 $tpl->parseCurrentBlock();
186 $tpl->setCurrentBlock(
"tinymce");
187 include_once
"./Services/Object/classes/class.ilObject.php";
188 $tpl->setVariable(
"OBJ_ID", $obj_id);
189 $tpl->setVariable(
"OBJ_TYPE", $obj_type);
191 $tpl->setVariable(
"SESSION_ID",
$_COOKIE[session_name()]);
198 "TXT_ALLOWED_FILE_EXTENSIONS",
199 $lng->txt(
"file_allowed_suffixes") .
" " .
200 implode(
', ', array_map(
function ($value) {
210 $tpl->setVariable(
'BUTTONS_1', self::removeRedundantSeparators($buttons_1));
211 $tpl->setVariable(
'BUTTONS_2', self::removeRedundantSeparators($buttons_2));
212 $tpl->setVariable(
'BUTTONS_3', self::removeRedundantSeparators($buttons_3));
214 $tpl->setVariable(
'CONTEXT_MENU_ITEMS', join(
" ", $this->contextMenuItems));
216 $tpl->setVariable(
"ADDITIONAL_PLUGINS", join(
" ", $this->plugins));
217 include_once
"./Services/Utilities/classes/class.ilUtil.php";
226 $tpl->parseCurrentBlock();
228 if (!self::$renderedToGlobalTemplate) {
229 $this->tpl->addJavaScript(
"node_modules/tinymce/tinymce.js");
230 $this->tpl->addOnLoadCode(
$tpl->get());
231 self::$renderedToGlobalTemplate =
true;
242 $tpl->
touchBlock(
'remove_img_context_menu_item');
255 array_push($this->contextMenuItems, $item);
266 $this->contextMenuItems = array();
275 include_once
"./Services/UICore/classes/class.ilTemplate.php";
276 $tpl =
new ilTemplate(
"tpl.tinymce.js",
true,
true,
"Services/RTE");
278 $tpl->setCurrentBlock(
"tinymce");
279 include_once
"./Services/Object/classes/class.ilObject.php";
280 $tpl->setVariable(
"OBJ_ID", $obj_id);
281 $tpl->setVariable(
"OBJ_TYPE", $obj_type);
283 $tpl->setVariable(
"SESSION_ID",
$_COOKIE[session_name()]);
294 $tpl->setVariable(
'BUTTONS_1', self::removeRedundantSeparators($buttons_1));
295 $tpl->setVariable(
'BUTTONS_2', self::removeRedundantSeparators($buttons_2));
296 $tpl->setVariable(
'BUTTONS_3', self::removeRedundantSeparators($buttons_3));
298 $tpl->setVariable(
'CONTEXT_MENU_ITEMS', join(
" ", $this->contextMenuItems));
300 $tpl->setVariable(
"ADDITIONAL_PLUGINS", join(
" ", $this->plugins));
301 include_once
"./Services/Utilities/classes/class.ilUtil.php";
310 $tpl->parseCurrentBlock();
312 if (!self::$renderedToGlobalTemplate) {
313 $this->tpl->addJavaScript(
"node_modules/tinymce/tinymce.js");
314 $this->tpl->addOnLoadCode(
$tpl->get());
315 self::$renderedToGlobalTemplate =
true;
324 $validtags = array(
"strong",
"em",
"p",
"br",
"div",
"span");
325 $buttontags = array(
"strong",
"em");
326 include_once
"./Services/UICore/classes/class.ilTemplate.php";
327 $template =
new ilTemplate(
"tpl.usereditor.js",
true,
true,
"Services/RTE");
329 $template->setCurrentBlock(
"tinymce");
330 include_once
"./Services/Object/classes/class.ilObject.php";
331 $template->setVariable(
"SELECTOR", $editor_selector);
332 $template->setVariable(
"BLOCKFORMATS",
"");
335 $template->setVariable(
"STYLE_SELECT",
",styleselect");
338 include_once
"./Services/Utilities/classes/class.ilUtil.php";
342 $template->parseCurrentBlock();
344 $this->tpl->addJavaScript(
"node_modules/tinymce/tinymce.js");
345 $this->tpl->addOnLoadCode($template->get());
356 $btns = explode(
' ', $btns);
361 return implode(
' ', $btns);
371 $this->styleselect = $a_styleselect;
390 $blockformats = array();
392 if (in_array(
"p", $a_html_tags)) {
393 array_push($blockformats,
"p");
395 if (in_array(
"div", $a_html_tags)) {
396 array_push($blockformats,
"div");
398 if (in_array(
"pre", $a_html_tags)) {
399 array_push($blockformats,
"pre");
401 if (in_array(
"code", $a_html_tags)) {
402 array_push($blockformats,
"code");
404 if (in_array(
"h1", $a_html_tags)) {
405 array_push($blockformats,
"h1");
407 if (in_array(
"h2", $a_html_tags)) {
408 array_push($blockformats,
"h2");
410 if (in_array(
"h3", $a_html_tags)) {
411 array_push($blockformats,
"h3");
413 if (in_array(
"h4", $a_html_tags)) {
414 array_push($blockformats,
"h4");
416 if (in_array(
"h5", $a_html_tags)) {
417 array_push($blockformats,
"h5");
419 if (in_array(
"h6", $a_html_tags)) {
420 array_push($blockformats,
"h6");
422 if (count($blockformats)) {
423 return join(
",", $blockformats);
436 $theme_advanced_buttons = array();
438 if ($a_buttons_section == 1) {
439 if (in_array(
"strong", $a_html_tags)) {
440 array_push($theme_advanced_buttons,
"bold");
442 if (in_array(
"em", $a_html_tags)) {
443 array_push($theme_advanced_buttons,
"italic");
445 if (in_array(
"u", $a_html_tags)) {
446 array_push($theme_advanced_buttons,
"underline");
448 if (in_array(
"strike", $a_html_tags)) {
449 array_push($theme_advanced_buttons,
"strikethrough");
451 if (count($theme_advanced_buttons)) {
452 array_push($theme_advanced_buttons,
"|");
454 if (in_array(
"p", $a_html_tags)) {
455 array_push($theme_advanced_buttons,
"alignleft");
456 array_push($theme_advanced_buttons,
"aligncenter");
457 array_push($theme_advanced_buttons,
"alignright");
458 array_push($theme_advanced_buttons,
"alignjustify");
459 array_push($theme_advanced_buttons,
"|");
462 array_push($theme_advanced_buttons,
"formatselect");
464 if (in_array(
"hr", $a_html_tags)) {
465 array_push($theme_advanced_buttons,
"hr");
467 array_push($theme_advanced_buttons,
"removeformat");
468 array_push($theme_advanced_buttons,
"|");
469 if (in_array(
"sub", $a_html_tags)) {
470 array_push($theme_advanced_buttons,
"subscript");
472 if (in_array(
"sup", $a_html_tags)) {
473 array_push($theme_advanced_buttons,
"superscript");
475 if (in_array(
"font", $a_html_tags)) {
476 array_push($theme_advanced_buttons,
"fontselect");
477 array_push($theme_advanced_buttons,
"fontsizeselect");
479 array_push($theme_advanced_buttons,
"charmap");
480 if ((in_array(
"ol", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
481 array_push($theme_advanced_buttons,
"bullist");
483 if ((in_array(
"ul", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
484 array_push($theme_advanced_buttons,
"numlist");
486 array_push($theme_advanced_buttons,
"|");
487 if (in_array(
"cite", $a_html_tags)) {
488 array_push($theme_advanced_buttons,
"blockquote");
490 if (in_array(
"abbr", $a_html_tags)) {
491 array_push($theme_advanced_buttons,
"abbr");
493 if (in_array(
"acronym", $a_html_tags)) {
494 array_push($theme_advanced_buttons,
"acronym");
496 if (in_array(
"del", $a_html_tags)) {
497 array_push($theme_advanced_buttons,
"del");
499 if (in_array(
"ins", $a_html_tags)) {
500 array_push($theme_advanced_buttons,
"ins");
502 if (in_array(
"blockquote", $a_html_tags)) {
503 array_push($theme_advanced_buttons,
"indent");
504 array_push($theme_advanced_buttons,
"outdent");
506 if (in_array(
"img", $a_html_tags)) {
508 array_push($theme_advanced_buttons,
"image");
509 array_push($theme_advanced_buttons,
"ibrowser");
510 array_push($theme_advanced_buttons,
"ilimgupload");
512 if (in_array(
"a", $a_html_tags)) {
513 array_push($theme_advanced_buttons,
"link");
514 array_push($theme_advanced_buttons,
"unlink");
515 array_push($theme_advanced_buttons,
"anchor");
517 array_push($theme_advanced_buttons,
"|");
518 array_push($theme_advanced_buttons,
"undo");
519 array_push($theme_advanced_buttons,
"redo");
521 if (is_array($this->buttons) && count($this->buttons)) {
522 array_push($theme_advanced_buttons,
"|");
523 foreach ($this->buttons as $button) {
524 array_push($theme_advanced_buttons, $button);
528 array_push($theme_advanced_buttons,
"code");
529 array_push($theme_advanced_buttons,
"fullscreen");
532 array_push($theme_advanced_buttons,
"pasteword");
533 } elseif ($a_buttons_section == 2) {
534 array_push($theme_advanced_buttons,
"cut");
535 array_push($theme_advanced_buttons,
"copy");
536 array_push($theme_advanced_buttons,
"paste");
537 array_push($theme_advanced_buttons,
"pastetext");
540 } elseif ($a_buttons_section == 3) {
544 if (is_array($remove_buttons)) {
545 foreach ($remove_buttons as $buttontext) {
546 if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !==
false) {
547 unset($theme_advanced_buttons[
$res]);
552 return join(
" ", $theme_advanced_buttons);
561 $theme_advanced_buttons = array();
562 if (in_array(
"strong", $a_html_tags)) {
563 array_push($theme_advanced_buttons,
"bold");
565 if (in_array(
"em", $a_html_tags)) {
566 array_push($theme_advanced_buttons,
"italic");
568 if (in_array(
"u", $a_html_tags)) {
569 array_push($theme_advanced_buttons,
"underline");
571 if (in_array(
"strike", $a_html_tags)) {
572 array_push($theme_advanced_buttons,
"strikethrough");
574 if (in_array(
"p", $a_html_tags)) {
575 array_push($theme_advanced_buttons,
"alignleft");
576 array_push($theme_advanced_buttons,
"aligncenter");
577 array_push($theme_advanced_buttons,
"alignright");
578 array_push($theme_advanced_buttons,
"alignjustify");
581 array_push($theme_advanced_buttons,
"formatselect");
583 if (in_array(
"hr", $a_html_tags)) {
584 array_push($theme_advanced_buttons,
"hr");
586 if (in_array(
"sub", $a_html_tags)) {
587 array_push($theme_advanced_buttons,
"subscript");
589 if (in_array(
"sup", $a_html_tags)) {
590 array_push($theme_advanced_buttons,
"superscript");
592 if (in_array(
"font", $a_html_tags)) {
593 array_push($theme_advanced_buttons,
"fontselect");
594 array_push($theme_advanced_buttons,
"fontsizeselect");
596 if ((in_array(
"ol", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
597 array_push($theme_advanced_buttons,
"bullist");
599 if ((in_array(
"ul", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
600 array_push($theme_advanced_buttons,
"numlist");
602 if (in_array(
"cite", $a_html_tags)) {
603 array_push($theme_advanced_buttons,
"blockquote");
605 if (in_array(
"abbr", $a_html_tags)) {
606 array_push($theme_advanced_buttons,
"abbr");
608 if (in_array(
"acronym", $a_html_tags)) {
609 array_push($theme_advanced_buttons,
"acronym");
611 if (in_array(
"del", $a_html_tags)) {
612 array_push($theme_advanced_buttons,
"del");
614 if (in_array(
"ins", $a_html_tags)) {
615 array_push($theme_advanced_buttons,
"ins");
617 if (in_array(
"blockquote", $a_html_tags)) {
618 array_push($theme_advanced_buttons,
"indent");
619 array_push($theme_advanced_buttons,
"outdent");
621 if (in_array(
"img", $a_html_tags)) {
623 array_push($theme_advanced_buttons,
"image");
624 array_push($theme_advanced_buttons,
"ibrowser");
625 array_push($theme_advanced_buttons,
"ilimgupload");
627 if (in_array(
"a", $a_html_tags)) {
628 array_push($theme_advanced_buttons,
"link");
629 array_push($theme_advanced_buttons,
"unlink");
630 array_push($theme_advanced_buttons,
"anchor");
634 if (is_array($remove_buttons)) {
635 foreach ($remove_buttons as $buttontext) {
636 if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !==
false) {
637 unset($theme_advanced_buttons[
$res]);
642 return join(
" ", $theme_advanced_buttons);
651 $theme_advanced_buttons = array();
652 if (in_array(
"table", $a_html_tags) && in_array(
"tr", $a_html_tags) && in_array(
"td", $a_html_tags)) {
653 array_push($theme_advanced_buttons,
"table");
657 if (is_array($remove_buttons)) {
658 foreach ($remove_buttons as $buttontext) {
659 if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !==
false) {
660 unset($theme_advanced_buttons[
$res]);
665 return join(
",", $theme_advanced_buttons);
687 if (file_exists(
"./node_modules/tinymce/langs/$langtiny.js")) {
700 $valid_elements = array();
701 foreach ($a_html_tags as $tag) {
704 array_push($valid_elements,
"a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name" 705 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 706 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev" 707 .
"|shape<circle?default?poly?rect|style|tabindex|title|target|type]");
710 array_push($valid_elements,
"abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 711 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 715 array_push($valid_elements,
"acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress" 716 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 720 array_push($valid_elements,
"address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 721 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 722 .
"|onmouseup|style|title]");
725 array_push($valid_elements,
"applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase" 726 .
"|height|hspace|id|name|object|style|title|vspace|width]");
729 array_push($valid_elements,
"area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref" 730 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 731 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup" 732 .
"|shape<circle?default?poly?rect|style|tabindex|title|target]");
735 array_push($valid_elements,
"base[href|target]");
738 array_push($valid_elements,
"basefont[color|face|id|size]");
741 array_push($valid_elements,
"bdo[class|dir<ltr?rtl|id|lang|style|title]");
744 array_push($valid_elements,
"big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 745 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 749 array_push($valid_elements,
"blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick" 750 .
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 751 .
"|onmouseover|onmouseup|style|title]");
754 array_push($valid_elements,
"body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick" 755 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove" 756 .
"|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink]");
759 array_push($valid_elements,
"br[class|clear<all?left?none?right|id|style|title]");
762 array_push($valid_elements,
"button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur" 763 .
"|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown" 764 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type" 768 array_push($valid_elements,
"caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick" 769 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 770 .
"|onmouseout|onmouseover|onmouseup|style|title]");
773 array_push($valid_elements,
"center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 774 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 778 array_push($valid_elements,
"cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 779 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 783 array_push($valid_elements,
"code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 784 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 788 array_push($valid_elements,
"col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id" 789 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 790 .
"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title" 791 .
"|valign<baseline?bottom?middle?top|width]");
794 array_push($valid_elements,
"colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl" 795 .
"|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 796 .
"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title" 797 .
"|valign<baseline?bottom?middle?top|width]");
800 array_push($valid_elements,
"dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 801 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
804 array_push($valid_elements,
"del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 805 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 806 .
"|onmouseup|style|title]");
809 array_push($valid_elements,
"dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 810 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 814 array_push($valid_elements,
"dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 815 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 816 .
"|onmouseup|style|title]");
819 array_push($valid_elements,
"div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 820 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 821 .
"|onmouseout|onmouseover|onmouseup|style|title]");
824 array_push($valid_elements,
"dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 825 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 826 .
"|onmouseup|style|title]");
829 array_push($valid_elements,
"dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 830 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
833 array_push($valid_elements,
"em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 834 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 838 array_push($valid_elements,
"fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 839 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 843 array_push($valid_elements,
"font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]");
846 array_push($valid_elements,
"form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang" 847 .
"|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 848 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit" 849 .
"|style|title|target]");
852 array_push($valid_elements,
"frame[class|frameborder|id|longdesc|marginheight|marginwidth|name" 853 .
"|noresize<noresize|scrolling<auto?no?yes|src|style|title]");
856 array_push($valid_elements,
"frameset[class|cols|id|onload|onunload|rows|style|title]");
859 array_push($valid_elements,
"h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 860 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 861 .
"|onmouseout|onmouseover|onmouseup|style|title]");
864 array_push($valid_elements,
"h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 865 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 866 .
"|onmouseout|onmouseover|onmouseup|style|title]");
869 array_push($valid_elements,
"h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 870 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 871 .
"|onmouseout|onmouseover|onmouseup|style|title]");
874 array_push($valid_elements,
"h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 875 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 876 .
"|onmouseout|onmouseover|onmouseup|style|title]");
879 array_push($valid_elements,
"h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 880 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 881 .
"|onmouseout|onmouseover|onmouseup|style|title]");
884 array_push($valid_elements,
"h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 885 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 886 .
"|onmouseout|onmouseover|onmouseup|style|title]");
889 array_push($valid_elements,
"head[dir<ltr?rtl|lang|profile]");
892 array_push($valid_elements,
"hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick" 893 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 894 .
"|onmouseout|onmouseover|onmouseup|size|style|title|width]");
897 array_push($valid_elements,
"html[dir<ltr?rtl|lang|version]");
900 array_push($valid_elements,
"iframe[align<bottom?left?middle?right?top|class|frameborder|height|id" 901 .
"|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style" 905 array_push($valid_elements,
"img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height" 906 .
"|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown" 907 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 908 .
"|onmouseup|src|style|title|usemap|vspace|width]");
911 array_push($valid_elements,
"input[accept|accesskey|align<bottom?left?middle?right?top|alt" 912 .
"|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang" 913 .
"|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress" 914 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect" 915 .
"|readonly<readonly|size|src|style|tabindex|title" 916 .
"|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text" 920 array_push($valid_elements,
"ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 921 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 922 .
"|onmouseup|style|title]");
925 array_push($valid_elements,
"isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]");
928 array_push($valid_elements,
"kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 929 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 933 array_push($valid_elements,
"label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick" 934 .
"|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 935 .
"|onmouseover|onmouseup|style|title]");
938 array_push($valid_elements,
"legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang" 939 .
"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 940 .
"|onmouseout|onmouseover|onmouseup|style|title]");
943 array_push($valid_elements,
"li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 944 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type" 948 array_push($valid_elements,
"link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick" 949 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 950 .
"|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type]");
953 array_push($valid_elements,
"map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress" 954 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 958 array_push($valid_elements,
"menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 959 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 960 .
"|onmouseup|style|title]");
963 array_push($valid_elements,
"meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]");
966 array_push($valid_elements,
"noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 967 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 971 array_push($valid_elements,
"noscript[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 972 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 976 array_push($valid_elements,
"object[align<bottom?left?middle?right?top|archive|border|class|classid" 977 .
"|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name" 978 .
"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 979 .
"|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap" 983 array_push($valid_elements,
"ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 984 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 985 .
"|onmouseup|start|style|title|type]");
988 array_push($valid_elements,
"optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick" 989 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 990 .
"|onmouseout|onmouseover|onmouseup|style|title]");
993 array_push($valid_elements,
"option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick" 994 .
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 995 .
"|onmouseover|onmouseup|selected<selected|style|title|value]");
998 array_push($valid_elements,
"p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 999 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 1000 .
"|onmouseout|onmouseover|onmouseup|style|title]");
1003 array_push($valid_elements,
"param[id|name|type|value|valuetype<DATA?OBJECT?REF]");
1009 array_push($valid_elements,
"pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick" 1010 .
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 1011 .
"|onmouseover|onmouseup|style|title|width]");
1014 array_push($valid_elements,
"q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1015 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1019 array_push($valid_elements,
"s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 1020 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1023 array_push($valid_elements,
"samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1024 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1028 array_push($valid_elements,
"script[charset|defer|language|src|type]");
1031 array_push($valid_elements,
"select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name" 1032 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 1033 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style" 1034 .
"|tabindex|title]");
1037 array_push($valid_elements,
"small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1038 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1042 array_push($valid_elements,
"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 1043 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 1044 .
"|onmouseup|style|title]");
1047 array_push($valid_elements,
"strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 1048 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 1049 .
"|onmouseup|style|title]");
1052 array_push($valid_elements,
"strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1053 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1057 array_push($valid_elements,
"style[dir<ltr?rtl|lang|media|title|type]");
1060 array_push($valid_elements,
"sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1061 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1065 array_push($valid_elements,
"sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1066 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1070 array_push($valid_elements,
"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class" 1071 .
"|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1072 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules" 1073 .
"|style|summary|title|width]");
1076 array_push($valid_elements,
"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id" 1077 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 1078 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title" 1079 .
"|valign<baseline?bottom?middle?top]");
1082 array_push($valid_elements,
"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class" 1083 .
"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick" 1084 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 1085 .
"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup" 1086 .
"|style|title|valign<baseline?bottom?middle?top|width]");
1089 array_push($valid_elements,
"textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name" 1090 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 1091 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect" 1092 .
"|readonly<readonly|rows|style|tabindex|title]");
1095 array_push($valid_elements,
"tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id" 1096 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 1097 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title" 1098 .
"|valign<baseline?bottom?middle?top]");
1101 array_push($valid_elements,
"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class" 1102 .
"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick" 1103 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 1104 .
"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup" 1105 .
"|style|title|valign<baseline?bottom?middle?top|width]");
1108 array_push($valid_elements,
"thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id" 1109 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 1110 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title" 1111 .
"|valign<baseline?bottom?middle?top]");
1114 array_push($valid_elements,
"title[dir<ltr?rtl|lang]");
1117 array_push($valid_elements,
"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class" 1118 .
"|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1119 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1120 .
"|title|valign<baseline?bottom?middle?top]");
1123 array_push($valid_elements,
"tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 1124 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1127 array_push($valid_elements,
"u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 1128 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1132 array_push($valid_elements,
"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 1133 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 1134 .
"|onmouseup|style|title]");
1137 array_push($valid_elements,
"ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 1138 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 1139 .
"|onmouseup|style|title|type]");
1142 array_push($valid_elements,
"var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 1143 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 1148 return join(
",", $valid_elements);
1158 while (strpos($a_string,
'| |') !==
false) {
1159 $a_string = str_replace(
'| |',
'|', $a_string);
1162 while (strpos($a_string,
',,') !==
false) {
1163 $a_string = str_replace(
',,',
',', $a_string);
1165 while (strpos($a_string,
'separator') !==
false) {
1166 $a_string = str_replace(
'separator',
'|', $a_string);
1168 while (strpos($a_string,
',') !==
false) {
1169 $a_string = str_replace(
',',
' ', $a_string);
1172 if ($a_string[0] ==
',') {
1173 $a_string = (string) substr($a_string, 1);
1176 if (strlen($a_string) && $a_string[strlen($a_string) - 1] ==
',') {
1177 $a_string = substr($a_string, 0, strlen($a_string) - 1);
1180 if (strlen($a_string) && substr_count($a_string,
'ilimgupload') > 1) {
1181 $arr = explode(
'ilimgupload', $a_string, 2);
1182 $a_string = $arr[0];
1183 if (count($arr) > 1) {
1184 $a_string = $a_string .
' ilimgupload ' . str_replace(
'ilimgupload',
'', $arr[1]);
addUserTextEditor($editor_selector)
{}
_buildAdvancedButtonsFromHTMLTags($a_buttons_section, array $a_html_tags)
removeAllContextMenuItems()
removeAllContextMenuItems
handleImagePluginsBeforeRendering(array $tags)
setStyleSelect($a_styleselect)
Set Enable Style Selecttion.
getStyleSelect()
Get Enable Style Selecttion.
static _getRichTextEditor()
Returns the identifier for the Rich Text Editor.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
disableButtons($a_button)
Sets buttons which should be disabled in the RTE.
static _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
addCustomRTESupport($obj_id, $obj_type, array $tags)
{}
removePlugin($a_plugin_name)
{}
_buildButtonsFromHTMLTags(array $a_html_tags)
static _setRichTextEditorUserState($a_state)
Sets the state of the rich text editor visibility for the current user.
static removeRedundantSeparators($a_string)
Removes redundant seperators and removes ,, and , at the first or last position of the string...
__construct($a_version='')
{}
handleIliasImageManagerAdded()
Rich Text Editor base class This class provides access methods to a Rich Text Editor (RTE) integrated...
foreach($_POST as $key=> $value) $res
touchBlock($block)
overwrites ITX::touchBlock.
_buildAdvancedTableButtonsFromHTMLTags(array $a_html_tags)
addPlugin($a_plugin_name)
{}
addRTESupport($obj_id, $obj_type, $a_module="", $allowFormElements=false, $cfg_template=null, $hide_switch=false)
{}
blockExists($a_blockname)
check if block exists in actual template private
addInternalTinyMCEImageManager()
getRTERootBlockElement()
Getter for the RTE root block element.
__construct(Container $dic, ilPlugin $plugin)
static _getRichTextEditorUserState()
Gets the state of the rich text editor visibility for the current user.
getButtonsForUserTextEditor(array $buttontags)
handleImgContextMenuItem(ilTemplate $tpl)
getDisabledButtons($as_array=true)
Returns the disabled RTE buttons.
getRemoveImgContextMenuItem()
handleIliasImageManagerRemoved()
static $renderedToGlobalTemplate
_buildAdvancedBlockformatsFromHTMLTags(array $a_html_tags)
_getValidElementsFromHTMLTags(array $a_html_tags)
addContextmenuItem(string $item="")
addContextmenuItem
$remove_img_context_menu_item
setRemoveImgContextMenuItem($remove_img_context_menu_item)