4require_once
'Services/RTE/classes/class.ilRTE.php';
40 $a_version =
'3.5.11';
48 $this->version = $a_version;
49 $this->
vd =
'_' . str_replace(
'.',
'_', $a_version);
57 $this->plugins = array(
89 if (!$this->client_init->readVariable(
'tinymce',
'use_advanced_img_mng')) {
90 parent::addPlugin(
'ilimgupload');
91 parent::addButton(
'ilimgupload');
92 parent::removePlugin(
'ibrowser');
93 parent::removePlugin(
'image');
102 parent::addPlugin(
'ibrowser');
103 parent::removePlugin(
'ilimgupload');
115 if (!in_array(
'img', $tags)) {
117 parent::removePlugin(
'ilimgupload');
118 parent::removePlugin(
'ibrowser');
119 parent::removePlugin(
'image');
138 if (!$this->client_init->readVariable(
'tinymce',
'use_advanced_img_mng')) {
139 parent::removePlugin(
'ilimgupload');
142 parent::removePlugin(
'ibrowser');
152 if (self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name) {
155 parent::addPlugin($a_plugin_name);
164 if (self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name) {
167 parent::removePlugin($a_plugin_name);
174 public function addRTESupport($obj_id, $obj_type, $a_module =
"", $allowFormElements =
false, $cfg_template =
null, $hide_switch =
false)
176 if ($this->browser->isMobile()) {
182 include_once
"./Services/UICore/classes/class.ilTemplate.php";
184 $tpl =
new ilTemplate(($cfg_template ===
null ?
"tpl.tinymce.js" : $cfg_template),
true,
true,
"Services/RTE");
188 if ($allowFormElements) {
189 $tpl->touchBlock(
"formelements");
192 $tpl->setCurrentBlock(
"initial_width");
194 $tpl->parseCurrentBlock();
196 $tpl->setCurrentBlock(
"tinymce");
197 include_once
"./Services/Object/classes/class.ilObject.php";
198 $tpl->setVariable(
"OBJ_ID", $obj_id);
199 $tpl->setVariable(
"OBJ_TYPE", $obj_type);
200 $tpl->setVariable(
"CLIENT_ID", CLIENT_ID);
201 $tpl->setVariable(
"SESSION_ID",
$_COOKIE[session_name()]);
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(
"ADDITIONAL_PLUGINS", join(
",", $this->plugins));
215 include_once
"./Services/Utilities/classes/class.ilUtil.php";
224 $tpl->parseCurrentBlock();
226 if (!self::$renderedToGlobalTemplate) {
227 $this->tpl->addJavaScript(
"./Services/RTE/tiny_mce" . $this->
vd .
"/tiny_mce.js");
228 $this->tpl->addOnLoadCode(
$tpl->get());
229 self::$renderedToGlobalTemplate =
true;
240 $tpl->touchBlock(
'remove_img_context_menu_item');
250 include_once
"./Services/UICore/classes/class.ilTemplate.php";
251 $tpl =
new ilTemplate(
"tpl.tinymce.js",
true,
true,
"Services/RTE");
253 $tpl->setCurrentBlock(
"tinymce");
254 include_once
"./Services/Object/classes/class.ilObject.php";
255 $tpl->setVariable(
"OBJ_ID", $obj_id);
256 $tpl->setVariable(
"OBJ_TYPE", $obj_type);
257 $tpl->setVariable(
"CLIENT_ID", CLIENT_ID);
258 $tpl->setVariable(
"SESSION_ID",
$_COOKIE[session_name()]);
268 $tpl->setVariable(
'BUTTONS_1', self::removeRedundantSeparators($buttons_1));
269 $tpl->setVariable(
'BUTTONS_2', self::removeRedundantSeparators($buttons_2));
270 $tpl->setVariable(
'BUTTONS_3', self::removeRedundantSeparators($buttons_3));
272 $tpl->setVariable(
"ADDITIONAL_PLUGINS", join(
",", $this->plugins));
273 include_once
"./Services/Utilities/classes/class.ilUtil.php";
282 $tpl->parseCurrentBlock();
284 if (!self::$renderedToGlobalTemplate) {
285 $this->tpl->addJavaScript(
"./Services/RTE/tiny_mce" . $this->
vd .
"/tiny_mce.js");
286 $this->tpl->addOnLoadCode(
$tpl->get());
287 self::$renderedToGlobalTemplate =
true;
296 $validtags = array(
"strong",
"em",
"p",
"br",
"div",
"span");
297 $buttontags = array(
"strong",
"em");
298 include_once
"./Services/UICore/classes/class.ilTemplate.php";
299 $template =
new ilTemplate(
"tpl.usereditor.html",
true,
true,
"Services/RTE");
301 $template->setCurrentBlock(
"tinymce");
302 include_once
"./Services/Object/classes/class.ilObject.php";
303 $template->setVariable(
"SELECTOR", $editor_selector);
304 $template->setVariable(
"BLOCKFORMATS",
"");
307 $template->setVariable(
"STYLE_SELECT",
",styleselect");
310 include_once
"./Services/Utilities/classes/class.ilUtil.php";
314 $template->parseCurrentBlock();
316 $this->tpl->addJavaScript(
"./Services/RTE/tiny_mce" . $this->
vd .
"/tiny_mce.js");
317 $this->tpl->addOnLoadCode($template->get());
328 $btns = explode(
',', $btns);
333 return implode(
',', $btns);
343 $this->styleselect = $a_styleselect;
362 $blockformats = array();
364 if (in_array(
"p", $a_html_tags)) {
365 array_push($blockformats,
"p");
367 if (in_array(
"div", $a_html_tags)) {
368 array_push($blockformats,
"div");
370 if (in_array(
"pre", $a_html_tags)) {
371 array_push($blockformats,
"pre");
373 if (in_array(
"code", $a_html_tags)) {
374 array_push($blockformats,
"code");
376 if (in_array(
"h1", $a_html_tags)) {
377 array_push($blockformats,
"h1");
379 if (in_array(
"h2", $a_html_tags)) {
380 array_push($blockformats,
"h2");
382 if (in_array(
"h3", $a_html_tags)) {
383 array_push($blockformats,
"h3");
385 if (in_array(
"h4", $a_html_tags)) {
386 array_push($blockformats,
"h4");
388 if (in_array(
"h5", $a_html_tags)) {
389 array_push($blockformats,
"h5");
391 if (in_array(
"h6", $a_html_tags)) {
392 array_push($blockformats,
"h6");
394 if (count($blockformats)) {
395 return join(
",", $blockformats);
408 $theme_advanced_buttons = array();
410 if ($a_buttons_section == 1) {
411 if (in_array(
"strong", $a_html_tags)) {
412 array_push($theme_advanced_buttons,
"bold");
414 if (in_array(
"em", $a_html_tags)) {
415 array_push($theme_advanced_buttons,
"italic");
417 if (in_array(
"u", $a_html_tags)) {
418 array_push($theme_advanced_buttons,
"underline");
420 if (in_array(
"strike", $a_html_tags)) {
421 array_push($theme_advanced_buttons,
"strikethrough");
423 if (count($theme_advanced_buttons)) {
424 array_push($theme_advanced_buttons,
"separator");
426 if (in_array(
"p", $a_html_tags)) {
427 array_push($theme_advanced_buttons,
"justifyleft");
428 array_push($theme_advanced_buttons,
"justifycenter");
429 array_push($theme_advanced_buttons,
"justifyright");
430 array_push($theme_advanced_buttons,
"justifyfull");
431 array_push($theme_advanced_buttons,
"separator");
434 array_push($theme_advanced_buttons,
"formatselect");
436 if (in_array(
"hr", $a_html_tags)) {
437 array_push($theme_advanced_buttons,
"hr");
439 array_push($theme_advanced_buttons,
"removeformat");
440 array_push($theme_advanced_buttons,
"separator");
441 if (in_array(
"sub", $a_html_tags)) {
442 array_push($theme_advanced_buttons,
"sub");
444 if (in_array(
"sup", $a_html_tags)) {
445 array_push($theme_advanced_buttons,
"sup");
447 if (in_array(
"font", $a_html_tags)) {
448 array_push($theme_advanced_buttons,
"fontselect");
449 array_push($theme_advanced_buttons,
"fontsizeselect");
451 array_push($theme_advanced_buttons,
"charmap");
452 if ((in_array(
"ol", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
453 array_push($theme_advanced_buttons,
"bullist");
455 if ((in_array(
"ul", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
456 array_push($theme_advanced_buttons,
"numlist");
458 array_push($theme_advanced_buttons,
"separator");
459 if (in_array(
"cite", $a_html_tags)) {
460 array_push($theme_advanced_buttons,
"cite");
462 if (in_array(
"abbr", $a_html_tags)) {
463 array_push($theme_advanced_buttons,
"abbr");
465 if (in_array(
"acronym", $a_html_tags)) {
466 array_push($theme_advanced_buttons,
"acronym");
468 if (in_array(
"del", $a_html_tags)) {
469 array_push($theme_advanced_buttons,
"del");
471 if (in_array(
"ins", $a_html_tags)) {
472 array_push($theme_advanced_buttons,
"ins");
474 if (in_array(
"blockquote", $a_html_tags)) {
475 array_push($theme_advanced_buttons,
"indent");
476 array_push($theme_advanced_buttons,
"outdent");
478 if (in_array(
"img", $a_html_tags)) {
480 array_push($theme_advanced_buttons,
"image");
481 array_push($theme_advanced_buttons,
"ibrowser");
482 array_push($theme_advanced_buttons,
"ilimgupload");
484 if (in_array(
"a", $a_html_tags)) {
485 array_push($theme_advanced_buttons,
"link");
486 array_push($theme_advanced_buttons,
"unlink");
487 array_push($theme_advanced_buttons,
"anchor");
489 array_push($theme_advanced_buttons,
"separator");
490 array_push($theme_advanced_buttons,
"undo");
491 array_push($theme_advanced_buttons,
"redo");
493 if (is_array($this->buttons) && count($this->buttons)) {
494 array_push($theme_advanced_buttons,
"separator");
495 foreach ($this->buttons as $button) {
496 array_push($theme_advanced_buttons, $button);
500 array_push($theme_advanced_buttons,
"code");
501 array_push($theme_advanced_buttons,
"fullscreen");
504 array_push($theme_advanced_buttons,
"pasteword");
505 } elseif ($a_buttons_section == 2) {
506 array_push($theme_advanced_buttons,
"cut");
507 array_push($theme_advanced_buttons,
"copy");
508 array_push($theme_advanced_buttons,
"paste");
509 array_push($theme_advanced_buttons,
"pastetext");
512 } elseif ($a_buttons_section == 3) {
516 if (is_array($remove_buttons)) {
517 foreach ($remove_buttons as $buttontext) {
518 if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !==
false) {
519 unset($theme_advanced_buttons[
$res]);
524 return join(
",", $theme_advanced_buttons);
533 $theme_advanced_buttons = array();
534 if (in_array(
"strong", $a_html_tags)) {
535 array_push($theme_advanced_buttons,
"bold");
537 if (in_array(
"em", $a_html_tags)) {
538 array_push($theme_advanced_buttons,
"italic");
540 if (in_array(
"u", $a_html_tags)) {
541 array_push($theme_advanced_buttons,
"underline");
543 if (in_array(
"strike", $a_html_tags)) {
544 array_push($theme_advanced_buttons,
"strikethrough");
546 if (in_array(
"p", $a_html_tags)) {
547 array_push($theme_advanced_buttons,
"justifyleft");
548 array_push($theme_advanced_buttons,
"justifycenter");
549 array_push($theme_advanced_buttons,
"justifyright");
550 array_push($theme_advanced_buttons,
"justifyfull");
553 array_push($theme_advanced_buttons,
"formatselect");
555 if (in_array(
"hr", $a_html_tags)) {
556 array_push($theme_advanced_buttons,
"hr");
558 if (in_array(
"sub", $a_html_tags)) {
559 array_push($theme_advanced_buttons,
"sub");
561 if (in_array(
"sup", $a_html_tags)) {
562 array_push($theme_advanced_buttons,
"sup");
564 if (in_array(
"font", $a_html_tags)) {
565 array_push($theme_advanced_buttons,
"fontselect");
566 array_push($theme_advanced_buttons,
"fontsizeselect");
568 if ((in_array(
"ol", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
569 array_push($theme_advanced_buttons,
"bullist");
571 if ((in_array(
"ul", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
572 array_push($theme_advanced_buttons,
"numlist");
574 if (in_array(
"cite", $a_html_tags)) {
575 array_push($theme_advanced_buttons,
"cite");
577 if (in_array(
"abbr", $a_html_tags)) {
578 array_push($theme_advanced_buttons,
"abbr");
580 if (in_array(
"acronym", $a_html_tags)) {
581 array_push($theme_advanced_buttons,
"acronym");
583 if (in_array(
"del", $a_html_tags)) {
584 array_push($theme_advanced_buttons,
"del");
586 if (in_array(
"ins", $a_html_tags)) {
587 array_push($theme_advanced_buttons,
"ins");
589 if (in_array(
"blockquote", $a_html_tags)) {
590 array_push($theme_advanced_buttons,
"indent");
591 array_push($theme_advanced_buttons,
"outdent");
593 if (in_array(
"img", $a_html_tags)) {
595 array_push($theme_advanced_buttons,
"image");
596 array_push($theme_advanced_buttons,
"ibrowser");
597 array_push($theme_advanced_buttons,
"ilimgupload");
599 if (in_array(
"a", $a_html_tags)) {
600 array_push($theme_advanced_buttons,
"link");
601 array_push($theme_advanced_buttons,
"unlink");
602 array_push($theme_advanced_buttons,
"anchor");
606 if (is_array($remove_buttons)) {
607 foreach ($remove_buttons as $buttontext) {
608 if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !==
false) {
609 unset($theme_advanced_buttons[
$res]);
614 return join(
",", $theme_advanced_buttons);
623 $theme_advanced_buttons = array();
624 if (in_array(
"table", $a_html_tags) && in_array(
"tr", $a_html_tags) && in_array(
"td", $a_html_tags)) {
625 array_push($theme_advanced_buttons,
"tablecontrols");
629 if (is_array($remove_buttons)) {
630 foreach ($remove_buttons as $buttontext) {
631 if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !==
false) {
632 unset($theme_advanced_buttons[
$res]);
637 return join(
",", $theme_advanced_buttons);
643 if (file_exists(
"./Services/RTE/tiny_mce" . $this->
vd .
"/langs/$lang.js")) {
656 $valid_elements = array();
657 foreach ($a_html_tags as $tag) {
660 array_push($valid_elements,
"a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name"
661 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
662 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev"
663 .
"|shape<circle?default?poly?rect|style|tabindex|title|target|type]");
666 array_push($valid_elements,
"abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
667 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
671 array_push($valid_elements,
"acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress"
672 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
676 array_push($valid_elements,
"address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
677 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
678 .
"|onmouseup|style|title]");
681 array_push($valid_elements,
"applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase"
682 .
"|height|hspace|id|name|object|style|title|vspace|width]");
685 array_push($valid_elements,
"area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref"
686 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
687 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup"
688 .
"|shape<circle?default?poly?rect|style|tabindex|title|target]");
691 array_push($valid_elements,
"base[href|target]");
694 array_push($valid_elements,
"basefont[color|face|id|size]");
697 array_push($valid_elements,
"bdo[class|dir<ltr?rtl|id|lang|style|title]");
700 array_push($valid_elements,
"big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
701 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
705 array_push($valid_elements,
"blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
706 .
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
707 .
"|onmouseover|onmouseup|style|title]");
710 array_push($valid_elements,
"body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick"
711 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove"
712 .
"|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink]");
715 array_push($valid_elements,
"br[class|clear<all?left?none?right|id|style|title]");
718 array_push($valid_elements,
"button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur"
719 .
"|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown"
720 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type"
724 array_push($valid_elements,
"caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick"
725 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
726 .
"|onmouseout|onmouseover|onmouseup|style|title]");
729 array_push($valid_elements,
"center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
730 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
734 array_push($valid_elements,
"cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
735 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
739 array_push($valid_elements,
"code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
740 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
744 array_push($valid_elements,
"col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
745 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
746 .
"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
747 .
"|valign<baseline?bottom?middle?top|width]");
750 array_push($valid_elements,
"colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl"
751 .
"|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
752 .
"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
753 .
"|valign<baseline?bottom?middle?top|width]");
756 array_push($valid_elements,
"dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
757 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
760 array_push($valid_elements,
"del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
761 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
762 .
"|onmouseup|style|title]");
765 array_push($valid_elements,
"dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
766 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
770 array_push($valid_elements,
"dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
771 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
772 .
"|onmouseup|style|title]");
775 array_push($valid_elements,
"div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
776 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
777 .
"|onmouseout|onmouseover|onmouseup|style|title]");
780 array_push($valid_elements,
"dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
781 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
782 .
"|onmouseup|style|title]");
785 array_push($valid_elements,
"dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
786 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
789 array_push($valid_elements,
"em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
790 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
794 array_push($valid_elements,
"fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
795 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
799 array_push($valid_elements,
"font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]");
802 array_push($valid_elements,
"form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang"
803 .
"|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
804 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit"
805 .
"|style|title|target]");
808 array_push($valid_elements,
"frame[class|frameborder|id|longdesc|marginheight|marginwidth|name"
809 .
"|noresize<noresize|scrolling<auto?no?yes|src|style|title]");
812 array_push($valid_elements,
"frameset[class|cols|id|onload|onunload|rows|style|title]");
815 array_push($valid_elements,
"h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
816 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
817 .
"|onmouseout|onmouseover|onmouseup|style|title]");
820 array_push($valid_elements,
"h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
821 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
822 .
"|onmouseout|onmouseover|onmouseup|style|title]");
825 array_push($valid_elements,
"h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
826 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
827 .
"|onmouseout|onmouseover|onmouseup|style|title]");
830 array_push($valid_elements,
"h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
831 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
832 .
"|onmouseout|onmouseover|onmouseup|style|title]");
835 array_push($valid_elements,
"h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
836 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
837 .
"|onmouseout|onmouseover|onmouseup|style|title]");
840 array_push($valid_elements,
"h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
841 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
842 .
"|onmouseout|onmouseover|onmouseup|style|title]");
845 array_push($valid_elements,
"head[dir<ltr?rtl|lang|profile]");
848 array_push($valid_elements,
"hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick"
849 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
850 .
"|onmouseout|onmouseover|onmouseup|size|style|title|width]");
853 array_push($valid_elements,
"html[dir<ltr?rtl|lang|version]");
856 array_push($valid_elements,
"iframe[align<bottom?left?middle?right?top|class|frameborder|height|id"
857 .
"|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style"
861 array_push($valid_elements,
"img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height"
862 .
"|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown"
863 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
864 .
"|onmouseup|src|style|title|usemap|vspace|width]");
867 array_push($valid_elements,
"input[accept|accesskey|align<bottom?left?middle?right?top|alt"
868 .
"|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang"
869 .
"|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress"
870 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
871 .
"|readonly<readonly|size|src|style|tabindex|title"
872 .
"|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text"
876 array_push($valid_elements,
"ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
877 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
878 .
"|onmouseup|style|title]");
881 array_push($valid_elements,
"isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]");
884 array_push($valid_elements,
"kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
885 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
889 array_push($valid_elements,
"label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick"
890 .
"|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
891 .
"|onmouseover|onmouseup|style|title]");
894 array_push($valid_elements,
"legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang"
895 .
"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
896 .
"|onmouseout|onmouseover|onmouseup|style|title]");
899 array_push($valid_elements,
"li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
900 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type"
904 array_push($valid_elements,
"link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick"
905 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
906 .
"|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type]");
909 array_push($valid_elements,
"map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress"
910 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
914 array_push($valid_elements,
"menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
915 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
916 .
"|onmouseup|style|title]");
919 array_push($valid_elements,
"meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]");
922 array_push($valid_elements,
"noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
923 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
927 array_push($valid_elements,
"noscript[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
928 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
932 array_push($valid_elements,
"object[align<bottom?left?middle?right?top|archive|border|class|classid"
933 .
"|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name"
934 .
"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
935 .
"|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap"
939 array_push($valid_elements,
"ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
940 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
941 .
"|onmouseup|start|style|title|type]");
944 array_push($valid_elements,
"optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick"
945 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
946 .
"|onmouseout|onmouseover|onmouseup|style|title]");
949 array_push($valid_elements,
"option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick"
950 .
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
951 .
"|onmouseover|onmouseup|selected<selected|style|title|value]");
954 array_push($valid_elements,
"p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
955 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
956 .
"|onmouseout|onmouseover|onmouseup|style|title]");
959 array_push($valid_elements,
"param[id|name|type|value|valuetype<DATA?OBJECT?REF]");
965 array_push($valid_elements,
"pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
966 .
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
967 .
"|onmouseover|onmouseup|style|title|width]");
970 array_push($valid_elements,
"q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
971 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
975 array_push($valid_elements,
"s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
976 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
979 array_push($valid_elements,
"samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
980 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
984 array_push($valid_elements,
"script[charset|defer|language|src|type]");
987 array_push($valid_elements,
"select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name"
988 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
989 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style"
990 .
"|tabindex|title]");
993 array_push($valid_elements,
"small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
994 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
998 array_push($valid_elements,
"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
999 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1000 .
"|onmouseup|style|title]");
1003 array_push($valid_elements,
"strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1004 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1005 .
"|onmouseup|style|title]");
1008 array_push($valid_elements,
"strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1009 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1013 array_push($valid_elements,
"style[dir<ltr?rtl|lang|media|title|type]");
1016 array_push($valid_elements,
"sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1017 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1021 array_push($valid_elements,
"sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1022 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1026 array_push($valid_elements,
"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class"
1027 .
"|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1028 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules"
1029 .
"|style|summary|title|width]");
1032 array_push($valid_elements,
"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id"
1033 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
1034 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
1035 .
"|valign<baseline?bottom?middle?top]");
1038 array_push($valid_elements,
"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
1039 .
"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
1040 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1041 .
"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
1042 .
"|style|title|valign<baseline?bottom?middle?top|width]");
1045 array_push($valid_elements,
"textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name"
1046 .
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
1047 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
1048 .
"|readonly<readonly|rows|style|tabindex|title]");
1051 array_push($valid_elements,
"tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
1052 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
1053 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
1054 .
"|valign<baseline?bottom?middle?top]");
1057 array_push($valid_elements,
"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
1058 .
"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
1059 .
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1060 .
"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
1061 .
"|style|title|valign<baseline?bottom?middle?top|width]");
1064 array_push($valid_elements,
"thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
1065 .
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
1066 .
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
1067 .
"|valign<baseline?bottom?middle?top]");
1070 array_push($valid_elements,
"title[dir<ltr?rtl|lang]");
1073 array_push($valid_elements,
"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class"
1074 .
"|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1075 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1076 .
"|title|valign<baseline?bottom?middle?top]");
1079 array_push($valid_elements,
"tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
1080 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1083 array_push($valid_elements,
"u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
1084 .
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1088 array_push($valid_elements,
"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1089 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1090 .
"|onmouseup|style|title]");
1093 array_push($valid_elements,
"ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1094 .
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1095 .
"|onmouseup|style|title|type]");
1098 array_push($valid_elements,
"var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1099 .
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1104 return join(
",", $valid_elements);
1114 while (strpos($a_string,
'separator,separator') !==
false) {
1115 $a_string = str_replace(
'separator,separator',
'separator', $a_string);
1118 while (strpos($a_string,
',,') !==
false) {
1119 $a_string = str_replace(
',,',
',', $a_string);
1122 if ($a_string[0] ==
',') {
1123 $a_string = (string) substr($a_string, 1);
1126 if (strlen($a_string) && $a_string[strlen($a_string) - 1] ==
',') {
1127 $a_string = substr($a_string, 0, strlen($a_string) - 1);
An exception for terminatinating execution or to throw for unit testing.
static _getRichTextEditor()
Returns the identifier for the Rich Text Editor.
static _getRichTextEditorUserState()
Gets the state of the rich text editor visibility for the current user.
static _setRichTextEditorUserState($a_state)
Sets the state of the rich text editor visibility for the current user.
static _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
Rich Text Editor base class This class provides access methods to a Rich Text Editor (RTE) integrated...
getDisabledButtons($as_array=true)
Returns the disabled RTE buttons.
getRTERootBlockElement()
Getter for the RTE root block element.
disableButtons($a_button)
Sets buttons which should be disabled in the RTE.
special template class to simplify handling of ITX/PEAR
blockExists($a_blockname)
check if block exists in actual template @access private
_buildAdvancedBlockformatsFromHTMLTags(array $a_html_tags)
_buildAdvancedTableButtonsFromHTMLTags(array $a_html_tags)
addUserTextEditor($editor_selector)
{Adds support for an user text editor.}
static $renderedToGlobalTemplate
setRemoveImgContextMenuItem($remove_img_context_menu_item)
_buildAdvancedButtonsFromHTMLTags($a_buttons_section, array $a_html_tags)
handleImgContextMenuItem(ilTemplate $tpl)
getStyleSelect()
Get Enable Style Selecttion.
$remove_img_context_menu_item
__construct($a_version='')
{ilRTE constructor.}
getRemoveImgContextMenuItem()
_getValidElementsFromHTMLTags(array $a_html_tags)
setStyleSelect($a_styleselect)
Set Enable Style Selecttion.
handleIliasImageManagerAdded()
_buildButtonsFromHTMLTags(array $a_html_tags)
addRTESupport($obj_id, $obj_type, $a_module="", $allowFormElements=false, $cfg_template=null, $hide_switch=false)
{Adds support for an RTE in an ILIAS form.}
addCustomRTESupport($obj_id, $obj_type, array $tags)
{Adds custom support for an RTE in an ILIAS form.}
handleImagePluginsBeforeRendering(array $tags)
handleIliasImageManagerRemoved()
removePlugin($a_plugin_name)
{Removes a plugin from the plugin list.}
addInternalTinyMCEImageManager()
getButtonsForUserTextEditor(array $buttontags)
static removeRedundantSeparators($a_string)
Removes redundant seperators and removes ,, and , at the first or last position of the string.
addPlugin($a_plugin_name)
{Adds a plugin to the plugin list.}
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
vd()
shortcut for var_dump with enhanced debug information
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
foreach($_POST as $key=> $value) $res