4require_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]);
 
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.
addContextmenuItem(string $item="")
addContextmenuItem
$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()
removeAllContextMenuItems()
removeAllContextMenuItems
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
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
foreach($_POST as $key=> $value) $res