ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
ilTinyMCE Class Reference

Tiny MCE editor class. More...

+ Inheritance diagram for ilTinyMCE:
+ Collaboration diagram for ilTinyMCE:

Public Member Functions

 ilTinyMCE ($a_version="")
 
 addPlugin ($a_plugin_name)
 
 removePlugin ($a_plugin_name)
 
 addRTESupport ($obj_id, $obj_type, $a_module="", $allowFormElements=FALSE, $cfg_template=null, $hide_switch=false)
 Returns the path to the content css file for the editor. More...
 
 addCustomRTESupport ($obj_id, $obj_type, $tags)
 Adds custom support for an RTE in an ILIAS form. More...
 
 addUserTextEditor ($editor_selector)
 Adds custom support for an RTE in an ILIAS form. More...
 
 setStyleSelect ($a_styleselect)
 Set Enable Style Selecttion. More...
 
 getStyleSelect ()
 Get Enable Style Selecttion. More...
 
 _buildAdvancedBlockformatsFromHTMLTags ($a_html_tags)
 
 _buildAdvancedButtonsFromHTMLTags ($a_buttons_section, $a_html_tags)
 
 _buildButtonsFromHTMLTags ($a_html_tags)
 
 _buildAdvancedTableButtonsFromHTMLTags ($a_html_tags)
 
 _getEditorLanguage ()
 
 _getValidElementsFromHTMLTags ($a_html_tags)
 
 setRTERootBlockElement ($a_root_block_element)
 Setter for the TinyMCE root block element. More...
 
 getRTERootBlockElement ()
 Getter for the TinyMCE root block element. More...
 
 disableButtons ($a_button)
 Sets buttons which should be disabled in TinyMCE. More...
 
 getDisabledButtons ($as_array=true)
 Returns the disabled TinyMCE buttons. More...
 
 setRemoveImgContextMenuItem ($remove_img_context_menu_item)
 
 getRemoveImgContextMenuItem ()
 
- Public Member Functions inherited from ilRTE
 ilRTE ($a_version="")
 
 addPlugin ($a_plugin_name)
 Adds a plugin to the plugin list. More...
 
 addButton ($a_button_name)
 Adds a button to the button list. More...
 
 removePlugin ($a_plugin_name)
 Removes a plugin from the plugin list. More...
 
 removeAllPlugins ()
 
 removeButton ($a_button_name)
 Removes a button from the button list. More...
 
 addRTESupport ()
 Adds support for an RTE in an ILIAS form. More...
 
 addUserTextEditor ($editor_selector)
 Adds support for an user text editor. More...
 
 addCustomRTESupport ($obj_id, $obj_type, $tags)
 Adds custom support for an RTE in an ILIAS form. More...
 
 _cleanupMediaObjectUsage ($a_text, $a_usage_type, $a_usage_id)
 synchronises appearances of media objects in $a_text with media object usage table More...
 
 setRTERootBlockElement ()
 
 getRTERootBlockElement ()
 
 disableButtons ()
 
 getDisabledButtons ()
 
 getInitialWidth ()
 
 setInitialWidth ($initialWidth)
 

Static Public Member Functions

static _removeRedundantSeparators ($a_string)
 Removes redundant seperators and removes ,, and , at the first or last position of the string. More...
 
- Static Public Member Functions inherited from ilRTE
static _getRTEClassname ()
 
static _replaceMediaObjectImageSrc ($a_text, $a_direction=0, $nic=IL_INST_ID)
 replaces image source from mob image urls with the mob id or replaces mob id with the correct image source More...
 
static _getMediaObjects ($a_text, $a_direction=0)
 Returns all media objects found in the passed string. More...
 

Protected Member Functions

 handleIliasImageManagerAdded ()
 
 handleImgContextMenuItem ($tpl)
 
 getButtonsForUserTextEditor ($buttontags)
 

Protected Attributes

 $mode = "textareas"
 
 $version = ""
 
 $vd = ""
 
 $remove_img_context_menu_item = false
 
 $root_block_element = null
 
 $disabled_buttons = array()
 
- Protected Attributes inherited from ilRTE
 $initialWidth = null
 

Private Member Functions

 handleImagePluginsBeforeRendering (array $tags)
 

Additional Inherited Members

- Data Fields inherited from ilRTE
const ILIAS_IMG_MANAGER_PLUGIN = 'ilias_image_manager_plugin'
 
 $plugins
 
 $buttons
 
 $tpl
 
 $ctrl
 
 $lng
 

Detailed Description

Tiny MCE editor class.

This class provides access methods for Tiny MCE

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Version
$Id$ class.ilTinyMCE.php

Definition at line 35 of file class.ilTinyMCE.php.

Member Function Documentation

◆ _buildAdvancedBlockformatsFromHTMLTags()

ilTinyMCE::_buildAdvancedBlockformatsFromHTMLTags (   $a_html_tags)

Definition at line 494 of file class.ilTinyMCE.php.

Referenced by _buildAdvancedButtonsFromHTMLTags(), _buildButtonsFromHTMLTags(), addCustomRTESupport(), and addRTESupport().

495  {
496  $blockformats = array();
497 
498  if (in_array("p", $a_html_tags))
499  {
500  array_push($blockformats, "p");
501  }
502  if (in_array("div", $a_html_tags))
503  {
504  array_push($blockformats, "div");
505  }
506  if (in_array("pre", $a_html_tags))
507  {
508  array_push($blockformats, "pre");
509  }
510  if (in_array("code", $a_html_tags))
511  {
512  array_push($blockformats, "code");
513  }
514  if (in_array("h1", $a_html_tags))
515  {
516  array_push($blockformats, "h1");
517  }
518  if (in_array("h2", $a_html_tags))
519  {
520  array_push($blockformats, "h2");
521  }
522  if (in_array("h3", $a_html_tags))
523  {
524  array_push($blockformats, "h3");
525  }
526  if (in_array("h4", $a_html_tags))
527  {
528  array_push($blockformats, "h4");
529  }
530  if (in_array("h5", $a_html_tags))
531  {
532  array_push($blockformats, "h5");
533  }
534  if (in_array("h6", $a_html_tags))
535  {
536  array_push($blockformats, "h6");
537  }
538  if (count($blockformats))
539  {
540  return join(",", $blockformats);
541  }
542  else
543  {
544  return "";
545  }
546  }
+ Here is the caller graph for this function:

◆ _buildAdvancedButtonsFromHTMLTags()

ilTinyMCE::_buildAdvancedButtonsFromHTMLTags (   $a_buttons_section,
  $a_html_tags 
)

Definition at line 548 of file class.ilTinyMCE.php.

References $res, _buildAdvancedBlockformatsFromHTMLTags(), and ilRTE\getDisabledButtons().

Referenced by addCustomRTESupport(), and addRTESupport().

549  {
550  $theme_advanced_buttons = array();
551 
552  if($a_buttons_section == 1)
553  {
554  if (in_array("strong", $a_html_tags))
555  {
556  array_push($theme_advanced_buttons, "bold");
557  }
558  if (in_array("em", $a_html_tags))
559  {
560  array_push($theme_advanced_buttons, "italic");
561  }
562  if (in_array("u", $a_html_tags))
563  {
564  array_push($theme_advanced_buttons, "underline");
565  }
566  if (in_array("strike", $a_html_tags))
567  {
568  array_push($theme_advanced_buttons, "strikethrough");
569  }
570  if (count($theme_advanced_buttons))
571  {
572  array_push($theme_advanced_buttons, "separator");
573  }
574  if (in_array("p", $a_html_tags))
575  {
576  array_push($theme_advanced_buttons, "justifyleft");
577  array_push($theme_advanced_buttons, "justifycenter");
578  array_push($theme_advanced_buttons, "justifyright");
579  array_push($theme_advanced_buttons, "justifyfull");
580  array_push($theme_advanced_buttons, "separator");
581  }
582  if (strlen(ilTinyMCE::_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)))
583  {
584  array_push($theme_advanced_buttons, "formatselect");
585  }
586  if (in_array("hr", $a_html_tags))
587  {
588  array_push($theme_advanced_buttons, "hr");
589  }
590  array_push($theme_advanced_buttons, "removeformat");
591  array_push($theme_advanced_buttons, "separator");
592  if (in_array("sub", $a_html_tags))
593  {
594  array_push($theme_advanced_buttons, "sub");
595  }
596  if (in_array("sup", $a_html_tags))
597  {
598  array_push($theme_advanced_buttons, "sup");
599  }
600  if (in_array("font", $a_html_tags))
601  {
602  array_push($theme_advanced_buttons, "fontselect");
603  array_push($theme_advanced_buttons, "fontsizeselect");
604  }
605  array_push($theme_advanced_buttons, "charmap");
606  if ((in_array("ol", $a_html_tags)) && (in_array("li", $a_html_tags)))
607  {
608  array_push($theme_advanced_buttons, "bullist");
609  }
610  if ((in_array("ul", $a_html_tags)) && (in_array("li", $a_html_tags)))
611  {
612  array_push($theme_advanced_buttons, "numlist");
613  }
614  array_push($theme_advanced_buttons, "separator");
615  if (in_array("cite", $a_html_tags))
616  {
617  array_push($theme_advanced_buttons, "cite");
618  }
619  if (in_array("abbr", $a_html_tags))
620  {
621  array_push($theme_advanced_buttons, "abbr");
622  }
623  if (in_array("acronym", $a_html_tags))
624  {
625  array_push($theme_advanced_buttons, "acronym");
626  }
627  if (in_array("del", $a_html_tags))
628  {
629  array_push($theme_advanced_buttons, "del");
630  }
631  if (in_array("ins", $a_html_tags))
632  {
633  array_push($theme_advanced_buttons, "ins");
634  }
635  if (in_array("blockquote", $a_html_tags))
636  {
637  array_push($theme_advanced_buttons, "indent");
638  array_push($theme_advanced_buttons, "outdent");
639  }
640  if (in_array("img", $a_html_tags))
641  {
642  //array_push($theme_advanced_buttons, "advimage");
643  array_push($theme_advanced_buttons, "image");
644  array_push($theme_advanced_buttons, "ibrowser");
645  array_push($theme_advanced_buttons, "ilimgupload");
646  }
647  if (in_array("a", $a_html_tags))
648  {
649  array_push($theme_advanced_buttons, "link");
650  array_push($theme_advanced_buttons, "unlink");
651  array_push($theme_advanced_buttons, "anchor");
652  }
653  array_push($theme_advanced_buttons, "separator");
654  array_push($theme_advanced_buttons, "undo");
655  array_push($theme_advanced_buttons, "redo");
656 
657  if(is_array($this->buttons) && count($this->buttons))
658  {
659  array_push($theme_advanced_buttons, "separator");
660  foreach($this->buttons as $button)
661  {
662  array_push($theme_advanced_buttons, $button);
663  }
664  }
665 
666  array_push($theme_advanced_buttons, "code");
667  array_push($theme_advanced_buttons, "fullscreen");
668 
669  // Changed in elba2 branch, adopted change for 4.2.x due to manits bug #8147
670  array_push($theme_advanced_buttons, "pasteword");
671  }
672  else if($a_buttons_section == 2)
673  {
674  array_push($theme_advanced_buttons, "cut");
675  array_push($theme_advanced_buttons, "copy");
676  array_push($theme_advanced_buttons, "paste");
677  array_push($theme_advanced_buttons, "pastetext");
678  // Changed in elba2 branch, adopted change for 4.2.x due to manits bug #8147
679  //array_push($theme_advanced_buttons, "pasteword");
680  }
681  else if($a_buttons_section == 3)
682  {
683  }
684 
685  $remove_buttons = $this->getDisabledButtons();
686  if (is_array($remove_buttons))
687  {
688  foreach ($remove_buttons as $buttontext)
689  {
690  if (($res = array_search($buttontext, $theme_advanced_buttons)) !== FALSE)
691  {
692  unset($theme_advanced_buttons[$res]);
693  }
694  }
695  }
696 
697  return join(",", $theme_advanced_buttons);
698  }
_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)
getDisabledButtons()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _buildAdvancedTableButtonsFromHTMLTags()

ilTinyMCE::_buildAdvancedTableButtonsFromHTMLTags (   $a_html_tags)

Definition at line 809 of file class.ilTinyMCE.php.

References $res, and ilRTE\getDisabledButtons().

810  {
811  $theme_advanced_buttons = array();
812  if (in_array("table", $a_html_tags) && in_array("tr", $a_html_tags) && in_array("td", $a_html_tags))
813  {
814  array_push($theme_advanced_buttons, "tablecontrols");
815  }
816 
817  $remove_buttons = $this->getDisabledButtons();
818  if (is_array($remove_buttons))
819  {
820  foreach ($remove_buttons as $buttontext)
821  {
822  if (($res = array_search($buttontext, $theme_advanced_buttons)) !== FALSE)
823  {
824  unset($theme_advanced_buttons[$res]);
825  }
826  }
827  }
828 
829  return join(",", $theme_advanced_buttons);
830  }
getDisabledButtons()
+ Here is the call graph for this function:

◆ _buildButtonsFromHTMLTags()

ilTinyMCE::_buildButtonsFromHTMLTags (   $a_html_tags)

Definition at line 700 of file class.ilTinyMCE.php.

References $res, _buildAdvancedBlockformatsFromHTMLTags(), and ilRTE\getDisabledButtons().

Referenced by getButtonsForUserTextEditor().

701  {
702  $theme_advanced_buttons = array();
703  if (in_array("strong", $a_html_tags))
704  {
705  array_push($theme_advanced_buttons, "bold");
706  }
707  if (in_array("em", $a_html_tags))
708  {
709  array_push($theme_advanced_buttons, "italic");
710  }
711  if (in_array("u", $a_html_tags))
712  {
713  array_push($theme_advanced_buttons, "underline");
714  }
715  if (in_array("strike", $a_html_tags))
716  {
717  array_push($theme_advanced_buttons, "strikethrough");
718  }
719  if (in_array("p", $a_html_tags))
720  {
721  array_push($theme_advanced_buttons, "justifyleft");
722  array_push($theme_advanced_buttons, "justifycenter");
723  array_push($theme_advanced_buttons, "justifyright");
724  array_push($theme_advanced_buttons, "justifyfull");
725  }
726  if (strlen(ilTinyMCE::_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)))
727  {
728  array_push($theme_advanced_buttons, "formatselect");
729  }
730  if (in_array("hr", $a_html_tags))
731  {
732  array_push($theme_advanced_buttons, "hr");
733  }
734  if (in_array("sub", $a_html_tags))
735  {
736  array_push($theme_advanced_buttons, "sub");
737  }
738  if (in_array("sup", $a_html_tags))
739  {
740  array_push($theme_advanced_buttons, "sup");
741  }
742  if (in_array("font", $a_html_tags))
743  {
744  array_push($theme_advanced_buttons, "fontselect");
745  array_push($theme_advanced_buttons, "fontsizeselect");
746  }
747  if ((in_array("ol", $a_html_tags)) && (in_array("li", $a_html_tags)))
748  {
749  array_push($theme_advanced_buttons, "bullist");
750  }
751  if ((in_array("ul", $a_html_tags)) && (in_array("li", $a_html_tags)))
752  {
753  array_push($theme_advanced_buttons, "numlist");
754  }
755  if (in_array("cite", $a_html_tags))
756  {
757  array_push($theme_advanced_buttons, "cite");
758  }
759  if (in_array("abbr", $a_html_tags))
760  {
761  array_push($theme_advanced_buttons, "abbr");
762  }
763  if (in_array("acronym", $a_html_tags))
764  {
765  array_push($theme_advanced_buttons, "acronym");
766  }
767  if (in_array("del", $a_html_tags))
768  {
769  array_push($theme_advanced_buttons, "del");
770  }
771  if (in_array("ins", $a_html_tags))
772  {
773  array_push($theme_advanced_buttons, "ins");
774  }
775  if (in_array("blockquote", $a_html_tags))
776  {
777  array_push($theme_advanced_buttons, "indent");
778  array_push($theme_advanced_buttons, "outdent");
779  }
780  if (in_array("img", $a_html_tags))
781  {
782  //array_push($theme_advanced_buttons, "advimage");
783  array_push($theme_advanced_buttons, "image");
784  array_push($theme_advanced_buttons, "ibrowser");
785  array_push($theme_advanced_buttons, "ilimgupload");
786  }
787  if (in_array("a", $a_html_tags))
788  {
789  array_push($theme_advanced_buttons, "link");
790  array_push($theme_advanced_buttons, "unlink");
791  array_push($theme_advanced_buttons, "anchor");
792  }
793 
794  $remove_buttons = $this->getDisabledButtons();
795  if (is_array($remove_buttons))
796  {
797  foreach ($remove_buttons as $buttontext)
798  {
799  if (($res = array_search($buttontext, $theme_advanced_buttons)) !== FALSE)
800  {
801  unset($theme_advanced_buttons[$res]);
802  }
803  }
804  }
805 
806  return join(",", $theme_advanced_buttons);
807  }
_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)
getDisabledButtons()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getEditorLanguage()

ilTinyMCE::_getEditorLanguage ( )

Definition at line 832 of file class.ilTinyMCE.php.

References $ilUser, $lang, and vd().

Referenced by addCustomRTESupport(), addRTESupport(), and addUserTextEditor().

833  {
834  global $ilUser;
835  $lang = $ilUser->getLanguage();
836  if (file_exists("./Services/RTE/tiny_mce".$this->vd."/langs/$lang.js"))
837  {
838  return "$lang";
839  }
840  else
841  {
842  return "en";
843  }
844  }
vd()
shortcut for var_dump with enhanced debug information
Definition: inc.debug.php:42
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getValidElementsFromHTMLTags()

ilTinyMCE::_getValidElementsFromHTMLTags (   $a_html_tags)

Definition at line 846 of file class.ilTinyMCE.php.

Referenced by addCustomRTESupport(), addRTESupport(), and addUserTextEditor().

847  {
848  $valid_elements = array();
849  foreach ($a_html_tags as $tag)
850  {
851  switch ($tag)
852  {
853  case "a":
854  array_push($valid_elements, "a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name"
855  ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
856  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev"
857  ."|shape<circle?default?poly?rect|style|tabindex|title|target|type]");
858  break;
859  case "abbr":
860  array_push($valid_elements, "abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
861  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
862  ."|title]");
863  break;
864  case "acronym":
865  array_push($valid_elements, "acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress"
866  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
867  ."|title]");
868  break;
869  case "address":
870  array_push($valid_elements, "address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
871  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
872  ."|onmouseup|style|title]");
873  break;
874  case "applet":
875  array_push($valid_elements, "applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase"
876  ."|height|hspace|id|name|object|style|title|vspace|width]");
877  break;
878  case "area":
879  array_push($valid_elements, "area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref"
880  ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
881  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup"
882  ."|shape<circle?default?poly?rect|style|tabindex|title|target]");
883  break;
884  case "base":
885  array_push($valid_elements, "base[href|target]");
886  break;
887  case "basefont":
888  array_push($valid_elements, "basefont[color|face|id|size]");
889  break;
890  case "bdo":
891  array_push($valid_elements, "bdo[class|dir<ltr?rtl|id|lang|style|title]");
892  break;
893  case "big":
894  array_push($valid_elements, "big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
895  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
896  ."|title]");
897  break;
898  case "blockquote":
899  array_push($valid_elements, "blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
900  ."|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
901  ."|onmouseover|onmouseup|style|title]");
902  break;
903  case "body":
904  array_push($valid_elements, "body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick"
905  ."|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove"
906  ."|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink]");
907  break;
908  case "br":
909  array_push($valid_elements, "br[class|clear<all?left?none?right|id|style|title]");
910  break;
911  case "button":
912  array_push($valid_elements, "button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur"
913  ."|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown"
914  ."|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type"
915  ."|value]");
916  break;
917  case "caption":
918  array_push($valid_elements, "caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick"
919  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
920  ."|onmouseout|onmouseover|onmouseup|style|title]");
921  break;
922  case "center":
923  array_push($valid_elements, "center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
924  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
925  ."|title]");
926  break;
927  case "cite":
928  array_push($valid_elements, "cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
929  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
930  ."|title]");
931  break;
932  case "code":
933  array_push($valid_elements, "code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
934  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
935  ."|title]");
936  break;
937  case "col":
938  array_push($valid_elements, "col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
939  ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
940  ."|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
941  ."|valign<baseline?bottom?middle?top|width]");
942  break;
943  case "colgroup":
944  array_push($valid_elements, "colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl"
945  ."|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
946  ."|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
947  ."|valign<baseline?bottom?middle?top|width]");
948  break;
949  case "dd":
950  array_push($valid_elements, "dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
951  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
952  break;
953  case "del":
954  array_push($valid_elements, "del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
955  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
956  ."|onmouseup|style|title]");
957  break;
958  case "dfn":
959  array_push($valid_elements, "dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
960  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
961  ."|title]");
962  break;
963  case "dir":
964  array_push($valid_elements, "dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
965  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
966  ."|onmouseup|style|title]");
967  break;
968  case "div":
969  array_push($valid_elements, "div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
970  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
971  ."|onmouseout|onmouseover|onmouseup|style|title]");
972  break;
973  case "dl":
974  array_push($valid_elements, "dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
975  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
976  ."|onmouseup|style|title]");
977  break;
978  case "dt":
979  array_push($valid_elements, "dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
980  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
981  break;
982  case "em":
983  array_push($valid_elements, "em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
984  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
985  ."|title]");
986  break;
987  case "fieldset":
988  array_push($valid_elements, "fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
989  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
990  ."|title]");
991  break;
992  case "font":
993  array_push($valid_elements, "font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]");
994  break;
995  case "form":
996  array_push($valid_elements, "form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang"
997  ."|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
998  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit"
999  ."|style|title|target]");
1000  break;
1001  case "frame":
1002  array_push($valid_elements, "frame[class|frameborder|id|longdesc|marginheight|marginwidth|name"
1003  ."|noresize<noresize|scrolling<auto?no?yes|src|style|title]");
1004  break;
1005  case "frameset":
1006  array_push($valid_elements, "frameset[class|cols|id|onload|onunload|rows|style|title]");
1007  break;
1008  case "h1":
1009  array_push($valid_elements, "h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1010  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1011  ."|onmouseout|onmouseover|onmouseup|style|title]");
1012  break;
1013  case "h2":
1014  array_push($valid_elements, "h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1015  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1016  ."|onmouseout|onmouseover|onmouseup|style|title]");
1017  break;
1018  case "h3":
1019  array_push($valid_elements, "h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1020  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1021  ."|onmouseout|onmouseover|onmouseup|style|title]");
1022  break;
1023  case "h4":
1024  array_push($valid_elements, "h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1025  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1026  ."|onmouseout|onmouseover|onmouseup|style|title]");
1027  break;
1028  case "h5":
1029  array_push($valid_elements, "h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1030  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1031  ."|onmouseout|onmouseover|onmouseup|style|title]");
1032  break;
1033  case "h6":
1034  array_push($valid_elements, "h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1035  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1036  ."|onmouseout|onmouseover|onmouseup|style|title]");
1037  break;
1038  case "head":
1039  array_push($valid_elements, "head[dir<ltr?rtl|lang|profile]");
1040  break;
1041  case "hr":
1042  array_push($valid_elements, "hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick"
1043  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1044  ."|onmouseout|onmouseover|onmouseup|size|style|title|width]");
1045  break;
1046  case "html":
1047  array_push($valid_elements, "html[dir<ltr?rtl|lang|version]");
1048  break;
1049  case "iframe":
1050  array_push($valid_elements, "iframe[align<bottom?left?middle?right?top|class|frameborder|height|id"
1051  ."|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style"
1052  ."|title|width]");
1053  break;
1054  case "img":
1055  array_push($valid_elements, "img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height"
1056  ."|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown"
1057  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1058  ."|onmouseup|src|style|title|usemap|vspace|width]");
1059  break;
1060  case "input":
1061  array_push($valid_elements, "input[accept|accesskey|align<bottom?left?middle?right?top|alt"
1062  ."|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang"
1063  ."|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress"
1064  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
1065  ."|readonly<readonly|size|src|style|tabindex|title"
1066  ."|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text"
1067  ."|usemap|value]");
1068  break;
1069  case "ins":
1070  array_push($valid_elements, "ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1071  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1072  ."|onmouseup|style|title]");
1073  break;
1074  case "isindex":
1075  array_push($valid_elements, "isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]");
1076  break;
1077  case "kbd":
1078  array_push($valid_elements, "kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1079  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1080  ."|title]");
1081  break;
1082  case "label":
1083  array_push($valid_elements, "label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick"
1084  ."|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
1085  ."|onmouseover|onmouseup|style|title]");
1086  break;
1087  case "legend":
1088  array_push($valid_elements, "legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang"
1089  ."|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1090  ."|onmouseout|onmouseover|onmouseup|style|title]");
1091  break;
1092  case "li":
1093  array_push($valid_elements, "li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
1094  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type"
1095  ."|value]");
1096  break;
1097  case "link":
1098  array_push($valid_elements, "link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick"
1099  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1100  ."|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type]");
1101  break;
1102  case "map":
1103  array_push($valid_elements, "map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress"
1104  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1105  ."|title]");
1106  break;
1107  case "menu":
1108  array_push($valid_elements, "menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1109  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1110  ."|onmouseup|style|title]");
1111  break;
1112  case "meta":
1113  array_push($valid_elements, "meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]");
1114  break;
1115  case "noframes":
1116  array_push($valid_elements, "noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1117  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1118  ."|title]");
1119  break;
1120  case "noscript":
1121  array_push($valid_elements, "noscript[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1122  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1123  ."|title]");
1124  break;
1125  case "object":
1126  array_push($valid_elements, "object[align<bottom?left?middle?right?top|archive|border|class|classid"
1127  ."|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name"
1128  ."|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1129  ."|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap"
1130  ."|vspace|width]");
1131  break;
1132  case "ol":
1133  array_push($valid_elements, "ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1134  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1135  ."|onmouseup|start|style|title|type]");
1136  break;
1137  case "optgroup":
1138  array_push($valid_elements, "optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick"
1139  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1140  ."|onmouseout|onmouseover|onmouseup|style|title]");
1141  break;
1142  case "option":
1143  array_push($valid_elements, "option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick"
1144  ."|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
1145  ."|onmouseover|onmouseup|selected<selected|style|title|value]");
1146  break;
1147  case "p":
1148  array_push($valid_elements, "p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
1149  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1150  ."|onmouseout|onmouseover|onmouseup|style|title]");
1151  break;
1152  case "param":
1153  array_push($valid_elements, "param[id|name|type|value|valuetype<DATA?OBJECT?REF]");
1154  break;
1155  case "pre":
1156  case "listing":
1157  case "plaintext":
1158  case "xmp":
1159  array_push($valid_elements, "pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
1160  ."|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
1161  ."|onmouseover|onmouseup|style|title|width]");
1162  break;
1163  case "q":
1164  array_push($valid_elements, "q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1165  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1166  ."|title]");
1167  break;
1168  case "s":
1169  array_push($valid_elements, "s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
1170  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1171  break;
1172  case "samp":
1173  array_push($valid_elements, "samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1174  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1175  ."|title]");
1176  break;
1177  case "script":
1178  array_push($valid_elements, "script[charset|defer|language|src|type]");
1179  break;
1180  case "select":
1181  array_push($valid_elements, "select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name"
1182  ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
1183  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style"
1184  ."|tabindex|title]");
1185  break;
1186  case "small":
1187  array_push($valid_elements, "small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1188  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1189  ."|title]");
1190  break;
1191  case "span":
1192  array_push($valid_elements, "span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1193  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1194  ."|onmouseup|style|title]");
1195  break;
1196  case "strike":
1197  array_push($valid_elements, "strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1198  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1199  ."|onmouseup|style|title]");
1200  break;
1201  case "strong":
1202  array_push($valid_elements, "strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1203  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1204  ."|title]");
1205  break;
1206  case "style":
1207  array_push($valid_elements, "style[dir<ltr?rtl|lang|media|title|type]");
1208  break;
1209  case "sub":
1210  array_push($valid_elements, "sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1211  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1212  ."|title]");
1213  break;
1214  case "sup":
1215  array_push($valid_elements, "sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1216  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1217  ."|title]");
1218  break;
1219  case "table":
1220  array_push($valid_elements, "table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class"
1221  ."|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1222  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules"
1223  ."|style|summary|title|width]");
1224  break;
1225  case "tbody":
1226  array_push($valid_elements, "tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id"
1227  ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
1228  ."|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
1229  ."|valign<baseline?bottom?middle?top]");
1230  break;
1231  case "td":
1232  array_push($valid_elements, "td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
1233  ."|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
1234  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1235  ."|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
1236  ."|style|title|valign<baseline?bottom?middle?top|width]");
1237  break;
1238  case "textarea":
1239  array_push($valid_elements, "textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name"
1240  ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
1241  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
1242  ."|readonly<readonly|rows|style|tabindex|title]");
1243  break;
1244  case "tfoot":
1245  array_push($valid_elements, "tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
1246  ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
1247  ."|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
1248  ."|valign<baseline?bottom?middle?top]");
1249  break;
1250  case "th":
1251  array_push($valid_elements, "th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
1252  ."|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
1253  ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
1254  ."|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
1255  ."|style|title|valign<baseline?bottom?middle?top|width]");
1256  break;
1257  case "thead":
1258  array_push($valid_elements, "thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
1259  ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
1260  ."|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
1261  ."|valign<baseline?bottom?middle?top]");
1262  break;
1263  case "title":
1264  array_push($valid_elements, "title[dir<ltr?rtl|lang]");
1265  break;
1266  case "tr":
1267  array_push($valid_elements, "tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class"
1268  ."|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1269  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1270  ."|title|valign<baseline?bottom?middle?top]");
1271  break;
1272  case "tt":
1273  array_push($valid_elements, "tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
1274  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1275  break;
1276  case "u":
1277  array_push($valid_elements, "u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
1278  ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
1279 
1280  // Bugfix #5945: Necessary because TinyMCE does not use the "u"
1281  // html element but <span style="text-decoration: underline">E</span>
1282  array_push($valid_elements, "span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1283  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1284  ."|onmouseup|style|title]");
1285  break;
1286  case "ul":
1287  array_push($valid_elements, "ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
1288  ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
1289  ."|onmouseup|style|title|type]");
1290  break;
1291  case "var":
1292  array_push($valid_elements, "var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
1293  ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
1294  ."|title]");
1295  break;
1296  }
1297  }
1298  return join(",", $valid_elements);
1299  }
+ Here is the caller graph for this function:

◆ _removeRedundantSeparators()

static ilTinyMCE::_removeRedundantSeparators (   $a_string)
static

Removes redundant seperators and removes ,, and , at the first or last position of the string.

Parameters
string$a_stringA string
Returns
string A string public

Definition at line 1376 of file class.ilTinyMCE.php.

1377  {
1378  while(strpos($a_string, 'separator,separator') !== false)
1379  {
1380  $a_string = str_replace('separator,separator', 'separator', $a_string);
1381  }
1382 
1383  while(strpos($a_string, ',,') !== false)
1384  {
1385  $a_string = str_replace(',,', ',', $a_string);
1386  }
1387 
1388  if($a_string{0} == ',')
1389  {
1390  $a_string = (string)substr($a_string, 1);
1391  }
1392 
1393  if(strlen($a_string) && $a_string{strlen($a_string) - 1} == ',')
1394  {
1395  $a_string = substr($a_string, 0, strlen($a_string) - 1);
1396  }
1397 
1398  return $a_string;
1399  }

◆ addCustomRTESupport()

ilTinyMCE::addCustomRTESupport (   $obj_id,
  $obj_type,
  $tags 
)

Adds custom support for an RTE in an ILIAS form.

Adds custom support for an RTE in an ILIAS form

public

Definition at line 384 of file class.ilTinyMCE.php.

References $_COOKIE, ilRTE\$tpl, _buildAdvancedBlockformatsFromHTMLTags(), _buildAdvancedButtonsFromHTMLTags(), _getEditorLanguage(), _getValidElementsFromHTMLTags(), ilRTE\disableButtons(), ilUtil\getNewContentStyleSheetLocation(), getRTERootBlockElement(), getStyleSelect(), handleImagePluginsBeforeRendering(), handleImgContextMenuItem(), and vd().

385  {
386  $this->handleImagePluginsBeforeRendering($tags);
387  include_once "./Services/UICore/classes/class.ilTemplate.php";
388  $tpl = new ilTemplate("tpl.tinymce.html", true, true, "Services/RTE");
390  $tpl->setCurrentBlock("tinymce");
391  $tpl->setVariable("JAVASCRIPT_LOCATION", "./Services/RTE/tiny_mce".$this->vd."/tiny_mce.js");
392  include_once "./Services/Object/classes/class.ilObject.php";
393  $tpl->setVariable("OBJ_ID", $obj_id);
394  $tpl->setVariable("OBJ_TYPE", $obj_type);
395  $tpl->setVariable("CLIENT_ID", CLIENT_ID);
396  $tpl->setVariable("SESSION_ID", $_COOKIE["PHPSESSID"]);
397  $tpl->setVariable("BLOCKFORMATS", $this->_buildAdvancedBlockformatsFromHTMLTags($tags));
398  $tpl->setVariable("VALID_ELEMENTS", $this->_getValidElementsFromHTMLTags($tags));
399 
400  $this->disableButtons('charmap');
401  $buttons_1 = $this->_buildAdvancedButtonsFromHTMLTags(1, $tags);
402  $buttons_2 = $this->_buildAdvancedButtonsFromHTMLTags(2, $tags)
403  . ','.$this->_buildAdvancedTableButtonsFromHTMLTags($tags)
404  . ($this->getStyleSelect() ? ',styleselect' : '');
405  $buttons_3 = $this->_buildAdvancedButtonsFromHTMLTags(3, $tags);
406  $tpl->setVariable('BUTTONS_1', self::_removeRedundantSeparators($buttons_1));
407  $tpl->setVariable('BUTTONS_2', self::_removeRedundantSeparators($buttons_2));
408  $tpl->setVariable('BUTTONS_3', self::_removeRedundantSeparators($buttons_3));
409 
410  $tpl->setVariable("ADDITIONAL_PLUGINS", join(",", $this->plugins));
411  include_once "./Services/Utilities/classes/class.ilUtil.php";
412  //$tpl->setVariable("STYLESHEET_LOCATION", $this->getContentCSS());
413  $tpl->setVariable("STYLESHEET_LOCATION", ilUtil::getNewContentStyleSheetLocation());
414  $tpl->setVariable("LANG", $this->_getEditorLanguage());
415 
416  if($this->getRTERootBlockElement() !== null)
417  {
418  $tpl->setVariable('FORCED_ROOT_BLOCK', $this->getRTERootBlockElement());
419  }
420 
421  $tpl->parseCurrentBlock();
422  $this->tpl->setVariable("CONTENT_BLOCK", $tpl->get());
423  }
_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)
vd()
shortcut for var_dump with enhanced debug information
Definition: inc.debug.php:42
handleImagePluginsBeforeRendering(array $tags)
getStyleSelect()
Get Enable Style Selecttion.
_getValidElementsFromHTMLTags($a_html_tags)
$_COOKIE["ilClientId"]
Definition: cron.php:11
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
special template class to simplify handling of ITX/PEAR
disableButtons()
_buildAdvancedButtonsFromHTMLTags($a_buttons_section, $a_html_tags)
handleImgContextMenuItem($tpl)
getRTERootBlockElement()
Getter for the TinyMCE root block element.
+ Here is the call graph for this function:

◆ addPlugin()

ilTinyMCE::addPlugin (   $a_plugin_name)
Parameters
string$a_plugin_name

Definition at line 181 of file class.ilTinyMCE.php.

References handleIliasImageManagerAdded().

182  {
183  if(self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name)
184  {
186  }
187  else
188  {
189  parent::addPlugin($a_plugin_name);
190  }
191  }
handleIliasImageManagerAdded()
+ Here is the call graph for this function:

◆ addRTESupport()

ilTinyMCE::addRTESupport (   $obj_id,
  $obj_type,
  $a_module = "",
  $allowFormElements = FALSE,
  $cfg_template = null,
  $hide_switch = false 
)

Returns the path to the content css file for the editor.

Returns the path to the content css file for the editor

Returns
string Path to the content CSS file public Adds support for an RTE in an ILIAS form

Adds support for an RTE in an ILIAS form

Parameters
string$a_moduleModule or object which should use the HTML tags public

Definition at line 277 of file class.ilTinyMCE.php.

References $_COOKIE, ilRTE\$tpl, _buildAdvancedBlockformatsFromHTMLTags(), _buildAdvancedButtonsFromHTMLTags(), _getEditorLanguage(), ilObjAdvancedEditing\_getRichTextEditor(), ilObjAdvancedEditing\_getRichTextEditorUserState(), ilObjAdvancedEditing\_getUsedHTMLTags(), _getValidElementsFromHTMLTags(), ilObjAdvancedEditing\_setRichTextEditorUserState(), ilRTE\getInitialWidth(), ilUtil\getNewContentStyleSheetLocation(), getRTERootBlockElement(), getStyleSelect(), ilUtil\getStyleSheetLocation(), handleImagePluginsBeforeRendering(), handleImgContextMenuItem(), and vd().

278  {
279  global $ilBrowser;
280 
281  include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
282  /*
283  if (array_key_exists("show_rte", $_POST))
284  {
285  ilObjAdvancedEditing::_setRichTextEditorUserState($_POST["show_rte"]);
286  }
287  */
288 
289  if($ilBrowser->isMobile())
290  {
292  }
293  else
294  {
296  }
297 
298  include_once "./Services/UICore/classes/class.ilTemplate.php";
300  {
301  $tpl = new ilTemplate(($cfg_template === null ? "tpl.tinymce.html" : $cfg_template), true, true, "Services/RTE");
303  $tags = ilObjAdvancedEditing::_getUsedHTMLTags($a_module);
304  $this->handleImagePluginsBeforeRendering($tags);
305  if ($allowFormElements)
306  {
307  $tpl->touchBlock("formelements");
308  }
309  if($this->getInitialWidth() !== null && $tpl->blockExists('initial_width'))
310  {
311  $tpl->setCurrentBlock("initial_width");
312  $tpl->setVariable('INITIAL_WIDTH', $this->getInitialWidth());
313  $tpl->parseCurrentBlock();
314  }
315  $tpl->setCurrentBlock("tinymce");
316  $tpl->setVariable("JAVASCRIPT_LOCATION", "./Services/RTE/tiny_mce".$this->vd."/tiny_mce.js");
317  include_once "./Services/Object/classes/class.ilObject.php";
318  $tpl->setVariable("OBJ_ID", $obj_id);
319  $tpl->setVariable("OBJ_TYPE", $obj_type);
320  $tpl->setVariable("CLIENT_ID", CLIENT_ID);
321  $tpl->setVariable("SESSION_ID", $_COOKIE["PHPSESSID"]);
322  $tpl->setVariable("BLOCKFORMATS", $this->_buildAdvancedBlockformatsFromHTMLTags($tags));
323  $tpl->setVariable("VALID_ELEMENTS", $this->_getValidElementsFromHTMLTags($tags));
324 
325  $buttons_1 = $this->_buildAdvancedButtonsFromHTMLTags(1, $tags);
326  $buttons_2 = $this->_buildAdvancedButtonsFromHTMLTags(2, $tags)
327  . ','.$this->_buildAdvancedTableButtonsFromHTMLTags($tags)
328  . ($this->getStyleSelect() ? ',styleselect' : '');
329  $buttons_3 = $this->_buildAdvancedButtonsFromHTMLTags(3, $tags);
330  $tpl->setVariable('BUTTONS_1', self::_removeRedundantSeparators($buttons_1));
331  $tpl->setVariable('BUTTONS_2', self::_removeRedundantSeparators($buttons_2));
332  $tpl->setVariable('BUTTONS_3', self::_removeRedundantSeparators($buttons_3));
333 
334  $tpl->setVariable("ADDITIONAL_PLUGINS", join(",", $this->plugins));
335  include_once "./Services/Utilities/classes/class.ilUtil.php";
336  //$tpl->setVariable("STYLESHEET_LOCATION", $this->getContentCSS());
337  $tpl->setVariable("STYLESHEET_LOCATION", ilUtil::getNewContentStyleSheetLocation() . "," . ilUtil::getStyleSheetLocation("output", "delos.css"));
338  $tpl->setVariable("LANG", $this->_getEditorLanguage());
339 
340  if($this->getRTERootBlockElement() !== null)
341  {
342  $tpl->setVariable('FORCED_ROOT_BLOCK', $this->getRTERootBlockElement());
343  }
344 
345  $tpl->parseCurrentBlock();
346 
347  $this->tpl->setVariable("CONTENT_BLOCK", $tpl->get());
348  }
349 
350  /*
351  if (!$hide_switch && strcmp(ilObjAdvancedEditing::_getRichTextEditor(), "0") != 0)
352  {
353  $tpl = new ilTemplate("tpl.rte.switch.html", true, true, "Services/RTE");
354  $tpl->setVariable("FORMACTION", $this->ctrl->getFormActionByClass($this->ctrl->getCmdClass()), $this->ctrl->getCmd());
355  $tpl->setVariable("TEXT_SET_MODE", $this->lng->txt("set_edit_mode"));
356  $tpl->setVariable("TEXT_ENABLED", $this->lng->txt("rte_editor_enabled"));
357  $tpl->setVariable("TEXT_DISABLED", $this->lng->txt("rte_editor_disabled"));
358  if (ilObjAdvancedEditing::_getRichTextEditorUserState() != 0)
359  {
360  $tpl->setVariable("SELECTED_ENABLED", " selected=\"selected\"");
361  }
362  $tpl->setVariable("BTN_COMMAND", $this->ctrl->getCmd());
363 
364  $this->tpl->setVariable("RTE_SWITCH", $tpl->get());
365  }
366  */
367  }
_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)
vd()
shortcut for var_dump with enhanced debug information
Definition: inc.debug.php:42
handleImagePluginsBeforeRendering(array $tags)
getStyleSelect()
Get Enable Style Selecttion.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
_getValidElementsFromHTMLTags($a_html_tags)
$_COOKIE["ilClientId"]
Definition: cron.php:11
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
_getRichTextEditor()
Returns the identifier for the Rich Text Editor.
static _setRichTextEditorUserState($a_state)
Sets the state of the rich text editor visibility for the current user.
getInitialWidth()
special template class to simplify handling of ITX/PEAR
& _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
_buildAdvancedButtonsFromHTMLTags($a_buttons_section, $a_html_tags)
static _getRichTextEditorUserState()
Gets the state of the rich text editor visibility for the current user.
handleImgContextMenuItem($tpl)
getRTERootBlockElement()
Getter for the TinyMCE root block element.
+ Here is the call graph for this function:

◆ addUserTextEditor()

ilTinyMCE::addUserTextEditor (   $editor_selector)

Adds custom support for an RTE in an ILIAS form.

Adds custom support for an RTE in an ILIAS form

Parameters
string$editor_selectorCSS class of the text input field(s) public

Definition at line 433 of file class.ilTinyMCE.php.

References _getEditorLanguage(), _getValidElementsFromHTMLTags(), getButtonsForUserTextEditor(), ilUtil\getNewContentStyleSheetLocation(), getStyleSelect(), ilUtil\getStyleSheetLocation(), handleImgContextMenuItem(), and vd().

434  {
435  $validtags = array("strong","em","p", "br", "div", "span");
436  $buttontags = array("strong","em");
437  include_once "./Services/UICore/classes/class.ilTemplate.php";
438  $template = new ilTemplate("tpl.usereditor.html", true, true, "Services/RTE");
439  $this->handleImgContextMenuItem($template);
440  $template->setCurrentBlock("tinymce");
441  $template->setVariable("JAVASCRIPT_LOCATION", "./Services/RTE/tiny_mce".$this->vd."/tiny_mce.js");
442  include_once "./Services/Object/classes/class.ilObject.php";
443  $template->setVariable("SELECTOR", $editor_selector);
444  $template->setVariable("BLOCKFORMATS", "");
445  $template->setVariable("VALID_ELEMENTS", $this->_getValidElementsFromHTMLTags($validtags));
446  if ($this->getStyleSelect())
447  {
448  $template->setVariable("STYLE_SELECT", ",styleselect");
449  }
450  $template->setVariable("BUTTONS", $this->getButtonsForUserTextEditor($buttontags) . ",backcolor,removeformat");
451  include_once "./Services/Utilities/classes/class.ilUtil.php";
452  //$template->setVariable("STYLESHEET_LOCATION", $this->getContentCSS());
453  $template->setVariable("STYLESHEET_LOCATION", ilUtil::getNewContentStyleSheetLocation() . "," . ilUtil::getStyleSheetLocation("output", "delos.css"));
454  $template->setVariable("LANG", $this->_getEditorLanguage());
455  $template->parseCurrentBlock();
456  $this->tpl->setCurrentBlock("HeadContent");
457  $this->tpl->setVariable("CONTENT_BLOCK", $template->get());
458  $this->tpl->parseCurrentBlock();
459  }
vd()
shortcut for var_dump with enhanced debug information
Definition: inc.debug.php:42
getStyleSelect()
Get Enable Style Selecttion.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
_getValidElementsFromHTMLTags($a_html_tags)
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
getButtonsForUserTextEditor($buttontags)
special template class to simplify handling of ITX/PEAR
handleImgContextMenuItem($tpl)
+ Here is the call graph for this function:

◆ disableButtons()

ilTinyMCE::disableButtons (   $a_button)

Sets buttons which should be disabled in TinyMCE.

Parameters
mixed$a_buttonEither a button string or an array of button strings
Returns
ilTextAreaInputGUI Instance of ilTextAreaInputGUI public

Definition at line 1333 of file class.ilTinyMCE.php.

1334  {
1335  if(is_array($a_button))
1336  {
1337  $this->disabled_buttons = array_unique(array_merge($this->disabled_buttons, $a_button));
1338  }
1339  else
1340  {
1341  $this->disabled_buttons = array_unique(array_merge($this->disabled_buttons, array($a_button)));
1342  }
1343 
1344  return $this;
1345  }

◆ getButtonsForUserTextEditor()

ilTinyMCE::getButtonsForUserTextEditor (   $buttontags)
protected

Definition at line 461 of file class.ilTinyMCE.php.

References _buildButtonsFromHTMLTags().

Referenced by addUserTextEditor().

462  {
463  $btns = $this->_buildButtonsFromHTMLTags($buttontags);
464 
465  $btns = explode(',', $btns);
466 
467  $btns[] = 'undo';
468  $btns[] = 'redo';
469 
470  return implode(',', $btns);
471  }
_buildButtonsFromHTMLTags($a_html_tags)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDisabledButtons()

ilTinyMCE::getDisabledButtons (   $as_array = true)

Returns the disabled TinyMCE buttons.

Parameters
boolean$as_arrayShould the disabled buttons be returned as a string or as an array
Returns
Array Array of disabled buttons public

Definition at line 1355 of file class.ilTinyMCE.php.

References $disabled_buttons.

1356  {
1357  if(!$as_array)
1358  {
1359  return implode(',', $this->disabled_buttons);
1360  }
1361  else
1362  {
1363  return $this->disabled_buttons;
1364  }
1365  }

◆ getRemoveImgContextMenuItem()

ilTinyMCE::getRemoveImgContextMenuItem ( )
Returns
boolean

Definition at line 1412 of file class.ilTinyMCE.php.

References $remove_img_context_menu_item.

Referenced by handleImgContextMenuItem().

1413  {
1415  }
$remove_img_context_menu_item
+ Here is the caller graph for this function:

◆ getRTERootBlockElement()

ilTinyMCE::getRTERootBlockElement ( )

Getter for the TinyMCE root block element.

Returns
string Root block element of TinyMCE public

Definition at line 1320 of file class.ilTinyMCE.php.

References $root_block_element.

Referenced by addCustomRTESupport(), and addRTESupport().

1321  {
1323  }
+ Here is the caller graph for this function:

◆ getStyleSelect()

ilTinyMCE::getStyleSelect ( )

Get Enable Style Selecttion.

Returns
boolean Enable Style Selecttion

Definition at line 488 of file class.ilTinyMCE.php.

Referenced by addCustomRTESupport(), addRTESupport(), and addUserTextEditor().

489  {
490  return $this->styleselect;
491  }
+ Here is the caller graph for this function:

◆ handleIliasImageManagerAdded()

ilTinyMCE::handleIliasImageManagerAdded ( )
protected

Definition at line 154 of file class.ilTinyMCE.php.

References ilRTE\disableButtons().

Referenced by addPlugin().

155  {
156  $this->addInternalTinyMCEImageManager();
157  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleImagePluginsBeforeRendering()

ilTinyMCE::handleImagePluginsBeforeRendering ( array  $tags)
private
Parameters
array$tags

Definition at line 135 of file class.ilTinyMCE.php.

References ilRTE\disableButtons(), and setRemoveImgContextMenuItem().

Referenced by addCustomRTESupport(), and addRTESupport().

136  {
137  if(!in_array('img', $tags))
138  {
139  $this->setRemoveImgContextMenuItem(true);
140  parent::removePlugin('ilimgupload');
141  parent::removePlugin('ibrowser');
142  parent::removePlugin('image');
143  $this->disableButtons(array(
144  'ibrowser',
145  'image',
146  'ilimgupload'
147  ));
148  }
149  }
disableButtons()
setRemoveImgContextMenuItem($remove_img_context_menu_item)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleImgContextMenuItem()

ilTinyMCE::handleImgContextMenuItem (   $tpl)
protected

Definition at line 369 of file class.ilTinyMCE.php.

References ilRTE\$tpl, and getRemoveImgContextMenuItem().

Referenced by addCustomRTESupport(), addRTESupport(), and addUserTextEditor().

370  {
371  if($this->getRemoveImgContextMenuItem() && $tpl->blockExists('remove_img_context_menu_item'))
372  {
373  $tpl->touchBlock(remove_img_context_menu_item);
374  }
375  }
getRemoveImgContextMenuItem()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ilTinyMCE()

ilTinyMCE::ilTinyMCE (   $a_version = "")

Definition at line 49 of file class.ilTinyMCE.php.

References ilRTE\disableButtons(), setRemoveImgContextMenuItem(), setStyleSelect(), and vd().

50  {
51  if(!$a_version)
52  {
53  $a_version = "3.5.11";
54  }
55 
56  parent::ilRTE($a_version);
57 
58  switch ($a_version)
59  {
60  case "3.4.7":
61  case "3.5.11":
62  $this->version = $a_version;
63  $this->vd = "_".str_replace(".", "_", $a_version);
64  break;
65 
66  default:
67  // unknown/unsupported version?
68  break;
69  }
70 
71  $this->plugins = array(
72  "xhtmlxtras",
73  "style",
74  "layer",
75  "table",
76  "save",
77  "advhr",
78  "advlink",
79  "emotions",
80  "iespell",
81  "insertdatetime",
82  "preview",
83  "searchreplace",
84  "print",
85  "contextmenu",
86  "paste",
87  "directionality",
88  "fullscreen",
89  "nonbreaking",
90  "noneditable",
91  "style"
92  );
93 
94  $this->setStyleSelect(false);
95  $this->addInternalTinyMCEImageManager();
96  }
vd()
shortcut for var_dump with enhanced debug information
Definition: inc.debug.php:42
setStyleSelect($a_styleselect)
Set Enable Style Selecttion.
+ Here is the call graph for this function:

◆ removePlugin()

ilTinyMCE::removePlugin (   $a_plugin_name)
Parameters
string$a_plugin_name

Definition at line 196 of file class.ilTinyMCE.php.

197  {
198  if(self::ILIAS_IMG_MANAGER_PLUGIN == $a_plugin_name)
199  {
200  $this->handleIliasImageManagerRemoved();
201  }
202  else
203  {
204  parent::removePlugin($a_plugin_name);
205  }
206  }

◆ setRemoveImgContextMenuItem()

ilTinyMCE::setRemoveImgContextMenuItem (   $remove_img_context_menu_item)
Parameters
boolean$remove_img_context_menu_item

Definition at line 1404 of file class.ilTinyMCE.php.

References $remove_img_context_menu_item.

Referenced by handleImagePluginsBeforeRendering(), and ilTinyMCE().

1405  {
1406  $this->remove_img_context_menu_item = $remove_img_context_menu_item;
1407  }
$remove_img_context_menu_item
+ Here is the caller graph for this function:

◆ setRTERootBlockElement()

ilTinyMCE::setRTERootBlockElement (   $a_root_block_element)

Setter for the TinyMCE root block element.

Parameters
string$a_root_block_elementroot block element
Returns
ilTextAreaInputGUI Instance of ilTinyMCE public

Definition at line 1308 of file class.ilTinyMCE.php.

1309  {
1310  $this->root_block_element = $a_root_block_element;
1311  return $this;
1312  }

◆ setStyleSelect()

ilTinyMCE::setStyleSelect (   $a_styleselect)

Set Enable Style Selecttion.

Parameters
boolean$a_styleselectEnable Style Selecttion

Definition at line 478 of file class.ilTinyMCE.php.

Referenced by ilTinyMCE().

479  {
480  $this->styleselect = $a_styleselect;
481  }
+ Here is the caller graph for this function:

Field Documentation

◆ $disabled_buttons

ilTinyMCE::$disabled_buttons = array()
protected

Definition at line 225 of file class.ilTinyMCE.php.

Referenced by getDisabledButtons().

◆ $mode

ilTinyMCE::$mode = "textareas"
protected

Definition at line 37 of file class.ilTinyMCE.php.

◆ $remove_img_context_menu_item

ilTinyMCE::$remove_img_context_menu_item = false
protected

Definition at line 46 of file class.ilTinyMCE.php.

Referenced by getRemoveImgContextMenuItem(), and setRemoveImgContextMenuItem().

◆ $root_block_element

ilTinyMCE::$root_block_element = null
protected

Definition at line 215 of file class.ilTinyMCE.php.

Referenced by getRTERootBlockElement().

◆ $vd

ilTinyMCE::$vd = ""
protected

Definition at line 39 of file class.ilTinyMCE.php.

◆ $version

ilTinyMCE::$version = ""
protected

Definition at line 38 of file class.ilTinyMCE.php.


The documentation for this class was generated from the following file: