4require_once 
'Services/RTE/classes/class.ilRTE.php';
 
   38            $a_version = 
'3.5.11';
 
   41        parent::__construct($a_version);
 
   46                $this->version = $a_version;
 
   47                $this->
vd = 
'_' . str_replace(
'.', 
'_', $a_version);
 
   55        $this->plugins = array(
 
   87        if (!$this->client_init->readVariable(
'tinymce', 
'use_advanced_img_mng')) {
 
   89            parent::addButton(
'ilimgupload');
 
   90            parent::removePlugin(
'ibrowser');
 
   91            parent::removePlugin(
'image');
 
  101            parent::removePlugin(
'ilimgupload');
 
  113        if (!in_array(
'img', 
$tags)) {
 
  115            parent::removePlugin(
'ilimgupload');
 
  116            parent::removePlugin(
'ibrowser');
 
  117            parent::removePlugin(
'image');
 
  136        if (!$this->client_init->readVariable(
'tinymce', 
'use_advanced_img_mng')) {
 
  137            parent::removePlugin(
'ilimgupload');
 
  140            parent::removePlugin(
'ibrowser');
 
  150        if (self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name) {
 
  162        if (self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name) {
 
  165            parent::removePlugin($a_plugin_name);
 
  172    public function addRTESupport($obj_id, $obj_type, $a_module = 
"", $allowFormElements = 
false, $cfg_template = 
null, $hide_switch = 
false)
 
  174        if ($this->browser->isMobile()) {
 
  180        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  182            $tpl = 
new ilTemplate(($cfg_template === 
null ? 
"tpl.tinymce.html" : $cfg_template), 
true, 
true, 
"Services/RTE");
 
  186            if ($allowFormElements) {
 
  187                $tpl->touchBlock(
"formelements");
 
  190                $tpl->setCurrentBlock(
"initial_width");
 
  192                $tpl->parseCurrentBlock();
 
  194            $tpl->setCurrentBlock(
"tinymce");
 
  195            $tpl->setVariable(
"JAVASCRIPT_LOCATION", 
"./Services/RTE/tiny_mce" . $this->
vd . 
"/tiny_mce.js");
 
  196            include_once 
"./Services/Object/classes/class.ilObject.php";
 
  197            $tpl->setVariable(
"OBJ_ID", $obj_id);
 
  198            $tpl->setVariable(
"OBJ_TYPE", $obj_type);
 
  199            $tpl->setVariable(
"CLIENT_ID", CLIENT_ID);
 
  200            $tpl->setVariable(
"SESSION_ID", 
$_COOKIE[session_name()]);
 
  209            $tpl->setVariable(
'BUTTONS_1', self::removeRedundantSeparators($buttons_1));
 
  210            $tpl->setVariable(
'BUTTONS_2', self::removeRedundantSeparators($buttons_2));
 
  211            $tpl->setVariable(
'BUTTONS_3', self::removeRedundantSeparators($buttons_3));
 
  213            $tpl->setVariable(
"ADDITIONAL_PLUGINS", join(
",", $this->plugins));
 
  214            include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  223            $tpl->parseCurrentBlock();
 
  225            $this->tpl->setVariable(
"CONTENT_BLOCK", 
$tpl->get());
 
  235            $tpl->touchBlock(
'remove_img_context_menu_item');
 
  245        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  246        $tpl = 
new ilTemplate(
"tpl.tinymce.html", 
true, 
true, 
"Services/RTE");
 
  248        $tpl->setCurrentBlock(
"tinymce");
 
  249        $tpl->setVariable(
"JAVASCRIPT_LOCATION", 
"./Services/RTE/tiny_mce" . $this->
vd . 
"/tiny_mce.js");
 
  250        include_once 
"./Services/Object/classes/class.ilObject.php";
 
  251        $tpl->setVariable(
"OBJ_ID", $obj_id);
 
  252        $tpl->setVariable(
"OBJ_TYPE", $obj_type);
 
  253        $tpl->setVariable(
"CLIENT_ID", CLIENT_ID);
 
  254        $tpl->setVariable(
"SESSION_ID", 
$_COOKIE[session_name()]);
 
  264        $tpl->setVariable(
'BUTTONS_1', self::removeRedundantSeparators($buttons_1));
 
  265        $tpl->setVariable(
'BUTTONS_2', self::removeRedundantSeparators($buttons_2));
 
  266        $tpl->setVariable(
'BUTTONS_3', self::removeRedundantSeparators($buttons_3));
 
  268        $tpl->setVariable(
"ADDITIONAL_PLUGINS", join(
",", $this->plugins));
 
  269        include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  278        $tpl->parseCurrentBlock();
 
  279        $this->tpl->setVariable(
"CONTENT_BLOCK", 
$tpl->get());
 
  287        $validtags = array(
"strong",
"em",
"p", 
"br", 
"div", 
"span");
 
  288        $buttontags = array(
"strong",
"em");
 
  289        include_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
  293        $template->setVariable(
"JAVASCRIPT_LOCATION", 
"./Services/RTE/tiny_mce" . $this->
vd . 
"/tiny_mce.js");
 
  294        include_once 
"./Services/Object/classes/class.ilObject.php";
 
  295        $template->setVariable(
"SELECTOR", $editor_selector);
 
  296        $template->setVariable(
"BLOCKFORMATS", 
"");
 
  299            $template->setVariable(
"STYLE_SELECT", 
",styleselect");
 
  302        include_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
  307        $this->tpl->setCurrentBlock(
"HeadContent");
 
  308        $this->tpl->setVariable(
"CONTENT_BLOCK", 
$template->get());
 
  309        $this->tpl->parseCurrentBlock();
 
  320        $btns = explode(
',', $btns);
 
  325        return implode(
',', $btns);
 
  335        $this->styleselect = $a_styleselect;
 
  354        $blockformats = array();
 
  356        if (in_array(
"p", $a_html_tags)) {
 
  357            array_push($blockformats, 
"p");
 
  359        if (in_array(
"div", $a_html_tags)) {
 
  360            array_push($blockformats, 
"div");
 
  362        if (in_array(
"pre", $a_html_tags)) {
 
  363            array_push($blockformats, 
"pre");
 
  365        if (in_array(
"code", $a_html_tags)) {
 
  366            array_push($blockformats, 
"code");
 
  368        if (in_array(
"h1", $a_html_tags)) {
 
  369            array_push($blockformats, 
"h1");
 
  371        if (in_array(
"h2", $a_html_tags)) {
 
  372            array_push($blockformats, 
"h2");
 
  374        if (in_array(
"h3", $a_html_tags)) {
 
  375            array_push($blockformats, 
"h3");
 
  377        if (in_array(
"h4", $a_html_tags)) {
 
  378            array_push($blockformats, 
"h4");
 
  380        if (in_array(
"h5", $a_html_tags)) {
 
  381            array_push($blockformats, 
"h5");
 
  383        if (in_array(
"h6", $a_html_tags)) {
 
  384            array_push($blockformats, 
"h6");
 
  386        if (count($blockformats)) {
 
  387            return join(
",", $blockformats);
 
  400        $theme_advanced_buttons = array();
 
  402        if ($a_buttons_section == 1) {
 
  403            if (in_array(
"strong", $a_html_tags)) {
 
  404                array_push($theme_advanced_buttons, 
"bold");
 
  406            if (in_array(
"em", $a_html_tags)) {
 
  407                array_push($theme_advanced_buttons, 
"italic");
 
  409            if (in_array(
"u", $a_html_tags)) {
 
  410                array_push($theme_advanced_buttons, 
"underline");
 
  412            if (in_array(
"strike", $a_html_tags)) {
 
  413                array_push($theme_advanced_buttons, 
"strikethrough");
 
  415            if (count($theme_advanced_buttons)) {
 
  416                array_push($theme_advanced_buttons, 
"separator");
 
  418            if (in_array(
"p", $a_html_tags)) {
 
  419                array_push($theme_advanced_buttons, 
"justifyleft");
 
  420                array_push($theme_advanced_buttons, 
"justifycenter");
 
  421                array_push($theme_advanced_buttons, 
"justifyright");
 
  422                array_push($theme_advanced_buttons, 
"justifyfull");
 
  423                array_push($theme_advanced_buttons, 
"separator");
 
  426                array_push($theme_advanced_buttons, 
"formatselect");
 
  428            if (in_array(
"hr", $a_html_tags)) {
 
  429                array_push($theme_advanced_buttons, 
"hr");
 
  431            array_push($theme_advanced_buttons, 
"removeformat");
 
  432            array_push($theme_advanced_buttons, 
"separator");
 
  433            if (in_array(
"sub", $a_html_tags)) {
 
  434                array_push($theme_advanced_buttons, 
"sub");
 
  436            if (in_array(
"sup", $a_html_tags)) {
 
  437                array_push($theme_advanced_buttons, 
"sup");
 
  439            if (in_array(
"font", $a_html_tags)) {
 
  440                array_push($theme_advanced_buttons, 
"fontselect");
 
  441                array_push($theme_advanced_buttons, 
"fontsizeselect");
 
  443            array_push($theme_advanced_buttons, 
"charmap");
 
  444            if ((in_array(
"ol", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
 
  445                array_push($theme_advanced_buttons, 
"bullist");
 
  447            if ((in_array(
"ul", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
 
  448                array_push($theme_advanced_buttons, 
"numlist");
 
  450            array_push($theme_advanced_buttons, 
"separator");
 
  451            if (in_array(
"cite", $a_html_tags)) {
 
  452                array_push($theme_advanced_buttons, 
"cite");
 
  454            if (in_array(
"abbr", $a_html_tags)) {
 
  455                array_push($theme_advanced_buttons, 
"abbr");
 
  457            if (in_array(
"acronym", $a_html_tags)) {
 
  458                array_push($theme_advanced_buttons, 
"acronym");
 
  460            if (in_array(
"del", $a_html_tags)) {
 
  461                array_push($theme_advanced_buttons, 
"del");
 
  463            if (in_array(
"ins", $a_html_tags)) {
 
  464                array_push($theme_advanced_buttons, 
"ins");
 
  466            if (in_array(
"blockquote", $a_html_tags)) {
 
  467                array_push($theme_advanced_buttons, 
"indent");
 
  468                array_push($theme_advanced_buttons, 
"outdent");
 
  470            if (in_array(
"img", $a_html_tags)) {
 
  472                array_push($theme_advanced_buttons, 
"image");
 
  473                array_push($theme_advanced_buttons, 
"ibrowser");
 
  474                array_push($theme_advanced_buttons, 
"ilimgupload");
 
  476            if (in_array(
"a", $a_html_tags)) {
 
  477                array_push($theme_advanced_buttons, 
"link");
 
  478                array_push($theme_advanced_buttons, 
"unlink");
 
  479                array_push($theme_advanced_buttons, 
"anchor");
 
  481            array_push($theme_advanced_buttons, 
"separator");
 
  482            array_push($theme_advanced_buttons, 
"undo");
 
  483            array_push($theme_advanced_buttons, 
"redo");
 
  485            if (is_array($this->buttons) && count($this->buttons)) {
 
  486                array_push($theme_advanced_buttons, 
"separator");
 
  487                foreach ($this->buttons as $button) {
 
  488                    array_push($theme_advanced_buttons, $button);
 
  492            array_push($theme_advanced_buttons, 
"code");
 
  493            array_push($theme_advanced_buttons, 
"fullscreen");
 
  496            array_push($theme_advanced_buttons, 
"pasteword");
 
  497        } elseif ($a_buttons_section == 2) {
 
  498            array_push($theme_advanced_buttons, 
"cut");
 
  499            array_push($theme_advanced_buttons, 
"copy");
 
  500            array_push($theme_advanced_buttons, 
"paste");
 
  501            array_push($theme_advanced_buttons, 
"pastetext");
 
  504        } elseif ($a_buttons_section == 3) {
 
  508        if (is_array($remove_buttons)) {
 
  509            foreach ($remove_buttons as $buttontext) {
 
  510                if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !== 
false) {
 
  511                    unset($theme_advanced_buttons[
$res]);
 
  516        return join(
",", $theme_advanced_buttons);
 
  525        $theme_advanced_buttons = array();
 
  526        if (in_array(
"strong", $a_html_tags)) {
 
  527            array_push($theme_advanced_buttons, 
"bold");
 
  529        if (in_array(
"em", $a_html_tags)) {
 
  530            array_push($theme_advanced_buttons, 
"italic");
 
  532        if (in_array(
"u", $a_html_tags)) {
 
  533            array_push($theme_advanced_buttons, 
"underline");
 
  535        if (in_array(
"strike", $a_html_tags)) {
 
  536            array_push($theme_advanced_buttons, 
"strikethrough");
 
  538        if (in_array(
"p", $a_html_tags)) {
 
  539            array_push($theme_advanced_buttons, 
"justifyleft");
 
  540            array_push($theme_advanced_buttons, 
"justifycenter");
 
  541            array_push($theme_advanced_buttons, 
"justifyright");
 
  542            array_push($theme_advanced_buttons, 
"justifyfull");
 
  545            array_push($theme_advanced_buttons, 
"formatselect");
 
  547        if (in_array(
"hr", $a_html_tags)) {
 
  548            array_push($theme_advanced_buttons, 
"hr");
 
  550        if (in_array(
"sub", $a_html_tags)) {
 
  551            array_push($theme_advanced_buttons, 
"sub");
 
  553        if (in_array(
"sup", $a_html_tags)) {
 
  554            array_push($theme_advanced_buttons, 
"sup");
 
  556        if (in_array(
"font", $a_html_tags)) {
 
  557            array_push($theme_advanced_buttons, 
"fontselect");
 
  558            array_push($theme_advanced_buttons, 
"fontsizeselect");
 
  560        if ((in_array(
"ol", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
 
  561            array_push($theme_advanced_buttons, 
"bullist");
 
  563        if ((in_array(
"ul", $a_html_tags)) && (in_array(
"li", $a_html_tags))) {
 
  564            array_push($theme_advanced_buttons, 
"numlist");
 
  566        if (in_array(
"cite", $a_html_tags)) {
 
  567            array_push($theme_advanced_buttons, 
"cite");
 
  569        if (in_array(
"abbr", $a_html_tags)) {
 
  570            array_push($theme_advanced_buttons, 
"abbr");
 
  572        if (in_array(
"acronym", $a_html_tags)) {
 
  573            array_push($theme_advanced_buttons, 
"acronym");
 
  575        if (in_array(
"del", $a_html_tags)) {
 
  576            array_push($theme_advanced_buttons, 
"del");
 
  578        if (in_array(
"ins", $a_html_tags)) {
 
  579            array_push($theme_advanced_buttons, 
"ins");
 
  581        if (in_array(
"blockquote", $a_html_tags)) {
 
  582            array_push($theme_advanced_buttons, 
"indent");
 
  583            array_push($theme_advanced_buttons, 
"outdent");
 
  585        if (in_array(
"img", $a_html_tags)) {
 
  587            array_push($theme_advanced_buttons, 
"image");
 
  588            array_push($theme_advanced_buttons, 
"ibrowser");
 
  589            array_push($theme_advanced_buttons, 
"ilimgupload");
 
  591        if (in_array(
"a", $a_html_tags)) {
 
  592            array_push($theme_advanced_buttons, 
"link");
 
  593            array_push($theme_advanced_buttons, 
"unlink");
 
  594            array_push($theme_advanced_buttons, 
"anchor");
 
  598        if (is_array($remove_buttons)) {
 
  599            foreach ($remove_buttons as $buttontext) {
 
  600                if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !== 
false) {
 
  601                    unset($theme_advanced_buttons[
$res]);
 
  606        return join(
",", $theme_advanced_buttons);
 
  615        $theme_advanced_buttons = array();
 
  616        if (in_array(
"table", $a_html_tags) && in_array(
"tr", $a_html_tags) && in_array(
"td", $a_html_tags)) {
 
  617            array_push($theme_advanced_buttons, 
"tablecontrols");
 
  621        if (is_array($remove_buttons)) {
 
  622            foreach ($remove_buttons as $buttontext) {
 
  623                if ((
$res = array_search($buttontext, $theme_advanced_buttons)) !== 
false) {
 
  624                    unset($theme_advanced_buttons[
$res]);
 
  629        return join(
",", $theme_advanced_buttons);
 
  635        if (file_exists(
"./Services/RTE/tiny_mce" . $this->
vd . 
"/langs/$lang.js")) {
 
  648        $valid_elements = array();
 
  649        foreach ($a_html_tags as 
$tag) {
 
  652                    array_push($valid_elements, 
"a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name" 
  653                        . 
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 
  654                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev" 
  655                        . 
"|shape<circle?default?poly?rect|style|tabindex|title|target|type]");
 
  658                    array_push($valid_elements, 
"abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  659                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  663                    array_push($valid_elements, 
"acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  664                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  668                    array_push($valid_elements, 
"address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  669                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  670                        . 
"|onmouseup|style|title]");
 
  673                    array_push($valid_elements, 
"applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase" 
  674                        . 
"|height|hspace|id|name|object|style|title|vspace|width]");
 
  677                    array_push($valid_elements, 
"area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref" 
  678                    . 
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 
  679                    . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup" 
  680                    . 
"|shape<circle?default?poly?rect|style|tabindex|title|target]");
 
  683                    array_push($valid_elements, 
"base[href|target]");
 
  686                    array_push($valid_elements, 
"basefont[color|face|id|size]");
 
  689                    array_push($valid_elements, 
"bdo[class|dir<ltr?rtl|id|lang|style|title]");
 
  692                    array_push($valid_elements, 
"big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  693                    . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  697                    array_push($valid_elements, 
"blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick" 
  698                    . 
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 
  699                    . 
"|onmouseover|onmouseup|style|title]");
 
  702                    array_push($valid_elements, 
"body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick" 
  703                    . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove" 
  704                    . 
"|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink]");
 
  707                    array_push($valid_elements, 
"br[class|clear<all?left?none?right|id|style|title]");
 
  710                    array_push($valid_elements, 
"button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur" 
  711                    . 
"|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown" 
  712                    . 
"|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type" 
  716                    array_push($valid_elements, 
"caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick" 
  717                    . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  718                    . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  721                    array_push($valid_elements, 
"center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  722                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  726                    array_push($valid_elements, 
"cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  727                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  731                    array_push($valid_elements, 
"code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  732                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  736                    array_push($valid_elements, 
"col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id" 
  737                        . 
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 
  738                        . 
"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title" 
  739                        . 
"|valign<baseline?bottom?middle?top|width]");
 
  742                    array_push($valid_elements, 
"colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl" 
  743                        . 
"|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 
  744                        . 
"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title" 
  745                        . 
"|valign<baseline?bottom?middle?top|width]");
 
  748                    array_push($valid_elements, 
"dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
  749                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
 
  752                    array_push($valid_elements, 
"del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  753                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  754                        . 
"|onmouseup|style|title]");
 
  757                    array_push($valid_elements, 
"dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  758                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  762                    array_push($valid_elements, 
"dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  763                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  764                        . 
"|onmouseup|style|title]");
 
  767                    array_push($valid_elements, 
"div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  768                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  769                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  772                    array_push($valid_elements, 
"dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  773                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  774                        . 
"|onmouseup|style|title]");
 
  777                    array_push($valid_elements, 
"dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
  778                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
 
  781                    array_push($valid_elements, 
"em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  782                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  786                    array_push($valid_elements, 
"fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  787                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  791                    array_push($valid_elements, 
"font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]");
 
  794                    array_push($valid_elements, 
"form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang" 
  795                        . 
"|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
  796                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit" 
  797                        . 
"|style|title|target]");
 
  800                    array_push($valid_elements, 
"frame[class|frameborder|id|longdesc|marginheight|marginwidth|name" 
  801                        . 
"|noresize<noresize|scrolling<auto?no?yes|src|style|title]");
 
  804                    array_push($valid_elements, 
"frameset[class|cols|id|onload|onunload|rows|style|title]");
 
  807                    array_push($valid_elements, 
"h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  808                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  809                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  812                    array_push($valid_elements, 
"h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  813                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  814                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  817                    array_push($valid_elements, 
"h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  818                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  819                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  822                    array_push($valid_elements, 
"h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  823                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  824                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  827                    array_push($valid_elements, 
"h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  828                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  829                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  832                    array_push($valid_elements, 
"h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  833                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  834                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  837                    array_push($valid_elements, 
"head[dir<ltr?rtl|lang|profile]");
 
  840                    array_push($valid_elements, 
"hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick" 
  841                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  842                        . 
"|onmouseout|onmouseover|onmouseup|size|style|title|width]");
 
  845                    array_push($valid_elements, 
"html[dir<ltr?rtl|lang|version]");
 
  848                    array_push($valid_elements, 
"iframe[align<bottom?left?middle?right?top|class|frameborder|height|id" 
  849                        . 
"|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style" 
  853                    array_push($valid_elements, 
"img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height" 
  854                        . 
"|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown" 
  855                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  856                        . 
"|onmouseup|src|style|title|usemap|vspace|width]");
 
  859                    array_push($valid_elements, 
"input[accept|accesskey|align<bottom?left?middle?right?top|alt" 
  860                        . 
"|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang" 
  861                        . 
"|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress" 
  862                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect" 
  863                        . 
"|readonly<readonly|size|src|style|tabindex|title" 
  864                        . 
"|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text" 
  868                    array_push($valid_elements, 
"ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  869                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  870                        . 
"|onmouseup|style|title]");
 
  873                    array_push($valid_elements, 
"isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]");
 
  876                    array_push($valid_elements, 
"kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  877                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  881                    array_push($valid_elements, 
"label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick" 
  882                        . 
"|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 
  883                        . 
"|onmouseover|onmouseup|style|title]");
 
  886                    array_push($valid_elements, 
"legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang" 
  887                        . 
"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  888                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  891                    array_push($valid_elements, 
"li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
  892                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type" 
  896                    array_push($valid_elements, 
"link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick" 
  897                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  898                        . 
"|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type]");
 
  901                    array_push($valid_elements, 
"map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress" 
  902                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  906                    array_push($valid_elements, 
"menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  907                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  908                        . 
"|onmouseup|style|title]");
 
  911                    array_push($valid_elements, 
"meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]");
 
  914                    array_push($valid_elements, 
"noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  915                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  919                    array_push($valid_elements, 
"noscript[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  920                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  924                    array_push($valid_elements, 
"object[align<bottom?left?middle?right?top|archive|border|class|classid" 
  925                        . 
"|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name" 
  926                        . 
"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  927                        . 
"|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap" 
  931                    array_push($valid_elements, 
"ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  932                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  933                        . 
"|onmouseup|start|style|title|type]");
 
  936                    array_push($valid_elements, 
"optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick" 
  937                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  938                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  941                    array_push($valid_elements, 
"option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick" 
  942                        . 
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 
  943                        . 
"|onmouseover|onmouseup|selected<selected|style|title|value]");
 
  946                    array_push($valid_elements, 
"p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick" 
  947                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
  948                        . 
"|onmouseout|onmouseover|onmouseup|style|title]");
 
  951                    array_push($valid_elements, 
"param[id|name|type|value|valuetype<DATA?OBJECT?REF]");
 
  957                    array_push($valid_elements, 
"pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick" 
  958                        . 
"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout" 
  959                        . 
"|onmouseover|onmouseup|style|title|width]");
 
  962                    array_push($valid_elements, 
"q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  963                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  967                    array_push($valid_elements, 
"s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
  968                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
 
  971                    array_push($valid_elements, 
"samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  972                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  976                    array_push($valid_elements, 
"script[charset|defer|language|src|type]");
 
  979                    array_push($valid_elements, 
"select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name" 
  980                        . 
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 
  981                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style" 
  982                        . 
"|tabindex|title]");
 
  985                    array_push($valid_elements, 
"small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
  986                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
  990                    array_push($valid_elements, 
"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  991                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  992                        . 
"|onmouseup|style|title]");
 
  995                    array_push($valid_elements, 
"strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
  996                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
  997                        . 
"|onmouseup|style|title]");
 
 1000                    array_push($valid_elements, 
"strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
 1001                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
 1005                    array_push($valid_elements, 
"style[dir<ltr?rtl|lang|media|title|type]");
 
 1008                    array_push($valid_elements, 
"sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
 1009                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
 1013                    array_push($valid_elements, 
"sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
 1014                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
 1018                    array_push($valid_elements, 
"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class" 
 1019                        . 
"|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
 1020                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules" 
 1021                        . 
"|style|summary|title|width]");
 
 1024                    array_push($valid_elements, 
"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id" 
 1025                        . 
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 
 1026                        . 
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title" 
 1027                        . 
"|valign<baseline?bottom?middle?top]");
 
 1030                    array_push($valid_elements, 
"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class" 
 1031                        . 
"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick" 
 1032                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
 1033                        . 
"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup" 
 1034                        . 
"|style|title|valign<baseline?bottom?middle?top|width]");
 
 1037                    array_push($valid_elements, 
"textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name" 
 1038                        . 
"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup" 
 1039                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect" 
 1040                        . 
"|readonly<readonly|rows|style|tabindex|title]");
 
 1043                    array_push($valid_elements, 
"tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id" 
 1044                        . 
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 
 1045                        . 
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title" 
 1046                        . 
"|valign<baseline?bottom?middle?top]");
 
 1049                    array_push($valid_elements, 
"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class" 
 1050                        . 
"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick" 
 1051                        . 
"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove" 
 1052                        . 
"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup" 
 1053                        . 
"|style|title|valign<baseline?bottom?middle?top|width]");
 
 1056                    array_push($valid_elements, 
"thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id" 
 1057                        . 
"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown" 
 1058                        . 
"|onmousemove|onmouseout|onmouseover|onmouseup|style|title" 
 1059                        . 
"|valign<baseline?bottom?middle?top]");
 
 1062                    array_push($valid_elements, 
"title[dir<ltr?rtl|lang]");
 
 1065                    array_push($valid_elements, 
"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class" 
 1066                        . 
"|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
 1067                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
 1068                        . 
"|title|valign<baseline?bottom?middle?top]");
 
 1071                    array_push($valid_elements, 
"tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
 1072                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
 
 1075                    array_push($valid_elements, 
"u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup" 
 1076                        . 
"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
 
 1080                    array_push($valid_elements, 
"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
 1081                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
 1082                        . 
"|onmouseup|style|title]");
 
 1085                    array_push($valid_elements, 
"ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown" 
 1086                        . 
"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover" 
 1087                        . 
"|onmouseup|style|title|type]");
 
 1090                    array_push($valid_elements, 
"var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress" 
 1091                        . 
"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style" 
 1096        return join(
",", $valid_elements);
 
 1106        while (strpos($a_string, 
'separator,separator') !== 
false) {
 
 1107            $a_string = str_replace(
'separator,separator', 
'separator', $a_string);
 
 1110        while (strpos($a_string, 
',,') !== 
false) {
 
 1111            $a_string = str_replace(
',,', 
',', $a_string);
 
 1114        if ($a_string[0] == 
',') {
 
 1115            $a_string = (string) substr($a_string, 1);
 
 1118        if (strlen($a_string) && $a_string[strlen($a_string) - 1] == 
',') {
 
 1119            $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.}
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
for($i=1; $i<=count($kw_cases_sel); $i+=1) $lang
if(function_exists( 'posix_getuid') &&posix_getuid()===0) if(!array_key_exists('t', $options)) $tag
addPlugin(PluginInterface $plugin)
Register a plugin.
foreach($_POST as $key=> $value) $res