getConfig($config); $text = "\n /* TinyMce Config: ".$this->configName." */\n\n"; $text .= "tinymce.init({\n"; /* $text .= "save_onsavecallback: function() {console.log('Save'); },\n"; $text .= "setup: function (editor) { editor.on('blur', function () { editor.save(); }); },\n"; */ $text .= $this->config; // Moc: temporary fix for BC with PHP 5.3: https://github.com/e107inc/e107/issues/614 $text .= "\n});"; return stripslashes($text); } function __construct($config=FALSE) { $this->bootstrapVersion = e107::getTheme()->getLibVersion('bootstrap'); } function tinymce_lang() { $lang = e_LANGUAGE; // Languages supported by TinyMce. // Commented out languages are not found in e107's language_class.php. $tinylang = array( 'Arabic' => 'ar', // 'Arabic (Saudi Arabia)' => 'ar_SA', 'Armenian' => 'hy', 'Azerbaijani' => 'az', 'Basque' => 'eu', 'Belarusian' => 'be', 'Bengali' => 'bn_BD', 'Bosnian' => 'bs', 'Bulgarian' => 'bg_BG', 'Catalan' => 'ca', 'ChineseSimp' => 'zh_CN', 'ChineseTrad' => 'zh_TW', 'Croatian' => 'hr', 'Czech' => 'cs', // 'Czech (Czech Republic)' => 'cs_CZ', 'Danish' => 'da', // 'Divehi' => 'dv', 'Dutch' => 'nl', 'English' => 'en_GB', // Default language file. // 'English (Canada)' => 'en_CA', // 'English (United Kingdom)' => 'en_GB', 'Esperanto' => 'eo', 'Estonian' => 'et', 'Faroese' => 'fo', 'Finnish' => 'fi', 'French' => 'fr_FR', // 'French (Switzerland)' => 'fr_CH', 'Gaelic' => 'gd', 'Gallegan' => 'gl', 'Georgian' => 'ka_GE', 'German' => 'de', // 'German (Austria)' => 'de_AT', 'Greek' => 'el', 'Hebrew' => 'he_IL', 'Hindi' => 'hi_IN', 'Hungarian' => 'hu_HU', 'Icelandic' => 'is_IS', 'Indonesian' => 'id', 'Irish' => 'ga', 'Italian' => 'it', 'Japanese' => 'ja', // 'Kabyle' => 'kab', 'Kazakh' => 'kk', 'Khmer' => 'km_KH', 'Korean' => 'ko', // 'Korean (Korea)' => 'ko_KR', 'Kurdish' => 'ku', // 'Kurdish (Iraq)' => 'ku_IQ', 'Latvian' => 'lv', 'Lithuanian' => 'lt', 'Letzeburgesch' => 'lb', 'Macedonian' => 'mk_MK', 'Malayalam' => 'ml', // 'Malayalam (India)' => 'ml_IN', 'Mongolian' => 'mn_MN', 'Norwegian' => 'nb_NO', 'Persian' => 'fa', // 'Persian (Iran)' => 'fa_IR', 'Polish' => 'pl', // 'Portuguese (Brazil)' => 'pt_BR', 'Portuguese' => 'pt_PT', 'Romanian' => 'ro', 'Russian' => 'ru', // 'Russian (Russia)' => 'ru_RU', 'Serbian' => 'sr', 'Sinhala' => 'si_LK', 'Slovak' => 'sk', 'Slovenian' => 'sl_SI', 'Spanish' => 'es', // 'Spanish (Mexico)' => 'es_MX', 'Swedish' => 'sv_SE', 'Tajik' => 'tg', 'Tamil' => 'ta', // 'Tamil (India)' => 'ta_IN', 'Tatar' => 'tt', 'Thai' => 'th_TH', 'Turkish' => 'tr', // 'Turkish (Turkey)' => 'tr_TR', 'Uighur' => 'ug', 'Ukrainian' => 'uk', // 'Ukrainian (Ukraine)' => 'uk_UA', 'Vietnamese' => 'vi', // 'Vietnamese (Viet Nam)' => 'vi_VN', 'Welsh' => 'cy', ); if(!isset($tinylang[$lang])) { $tinylang[$lang] = "en_GB"; } // If language file is not present, use default. $jsFile = e_PLUGIN . 'tinymce4/langs/' . $tinylang[$lang] . '.js'; if($tinylang[$lang] != 'en_GB' && !file_exists($jsFile)) { $tinylang[$lang] = "en_GB"; } return $tinylang[$lang]; } function getExternalPlugins($data) { if(empty($data)) { return null; } $tmp = explode(" ",$data); if(e107::pref('core','smiley_activate',false)) { $tmp[] = "smileys"; } $ext = array(); foreach($tmp as $val) { $ext[$val] = e_PLUGIN_ABS."tinymce4/plugins/".$val."/plugin.js"; } return json_encode($ext); } function convertBoolean($string) { if(substr($string,0,1) == '{' || substr($string,0,1) == '[' || substr($string,0,9) == 'function(') { return $string; } if(is_numeric($string)) { return $string; } if(is_string($string)) { $string = trim($string); $string = str_replace("\n","",$string); } if($string === true) { return 'true'; } if($string === false) { return 'false'; } if($string === 'true' || $string === 'false' || $string[0] == '[') { return $string; } return '"'.$string.'"'; } function getConfig($config=false) { $tp = e107::getParser(); // $fl = e107::getFile(); if($config !== false) { $template = $tp->filter($config).".xml"; } else { if(getperms('0')) { $template = "mainadmin.xml"; } elseif(ADMIN) { $template = "admin.xml"; } elseif(USER) { $template = "member.xml"; } else { $template = "public.xml"; } } if(($template == 'mainadmin.xml' && !getperms('0')) || ($template == 'admin.xml' && !ADMIN)) { $template = 'public.xml'; } $configPath = (is_readable(THEME."templates/tinymce/".$template)) ? THEME."templates/tinymce/".$template : e_PLUGIN."tinymce4/templates/".$template; $config = e107::getXml()->loadXMLfile($configPath, true); //TODO Cache! $this->configName = $config['@attributes']['name']; $tinyMceLanguage = $this->tinymce_lang(); unset($config['@attributes']); $ret = array( 'selector' => '.e-wysiwyg', // 'editor_selector' => 'advancedEditor', 'language' => $tinyMceLanguage, 'language_url' => SITEURLBASE.e_PLUGIN_ABS."tinymce4/langs/" . $tinyMceLanguage . ".js" ); // if(e_ADMIN_AREA) { // $ret['skin_url'] = e_PLUGIN_ABS.'tinymce4/skins/eskin'; } // Loop thru XML parms. foreach($config as $k=>$xml) { if($k == 'plugins') { $ret[$k] = $this->filter_plugins($xml); } else { $ret[$k] = $xml; } } $tPref = e107::pref('tinymce4'); if(!empty($tPref['paste_as_text'])) { $ret['paste_as_text'] = true; } if(!empty($tPref['browser_spellcheck'])) { $ret['browser_spellcheck'] = true; } if(!empty($tPref['visualblocks'])) { $ret['visualblocks_default_state'] = true; } $ret['autosave_ask_before_unload'] = true; $ret['autosave_retention'] = "30m"; $ret['autosave_interval'] = "3s"; $ret['autosave_prefix'] = "tinymce-autosave-{path}{query}-{id}-"; $ret['verify_html'] = false; // plugins: "visualblocks", /* $formats = array( 'hilitecolor' => array('inline'=> 'span', 'classes'=> 'hilitecolor', 'styles'=> array('backgroundColor'=> '%value')) // block : 'h1', attributes : {title : "Header"}, styles : {color : red} );*/ //@see http://www.tinymce.com/wiki.php/Configuration:formats $codeHighlightClass = varset($tPref['code_highlight_class'], 'prettyprint linenums'); $formats = "[ {title: 'Headers', items: [ {title: 'Heading 1', block: 'h1'}, {title: 'Heading 2', block: 'h2'}, {title: 'Heading 3', block: 'h3'}, {title: 'Heading 4', block: 'h4'}, {title: 'Heading 5', block: 'h5'}, {title: 'Heading 6', block: 'h6'} ]}, {title: 'Inline', items: [ {title: 'Bold', inline: 'b', icon: 'bold'}, {title: 'Italic', inline: 'em', icon: 'italic'}, {title: 'Underline', inline: 'span', styles : {textDecoration : 'underline'}, icon: 'underline'}, {title: 'Strikethrough', inline: 'span', styles : {textDecoration : 'line-through'}, icon: 'strikethrough'}, {title: 'Superscript', inline: 'sup', icon: 'superscript'}, {title: 'Subscript', inline: 'sub', icon: 'subscript'}, {title: 'Code', inline: 'code', icon: 'code'}, {title: 'Small', inline: 'small', icon: ''}, ]}, {title: 'Blocks', items: [ {title: 'Paragraph', block: 'p'}, {title: 'Blockquote', block: 'blockquote'}, {title: 'Blockquote alt.', block: 'blockquote', classes: 'blockquote-alt blockquote__alternative'}, {title: 'Div', block: 'div'}, {title: 'Pre', block: 'pre'}, {title: 'Code Highlighted', block: 'pre', classes: '".$codeHighlightClass."' } ]}, {title: 'Lists', items: [ {title: 'FontAwesome', selector: 'ul', classes: 'fa-ul' }, {title: 'FontAwesome List Icon', selector: 'i', classes: 'fa-li' }, {title: 'Bootstrap Listgroup', selector: 'ul', classes: 'list-group' }, {title: 'Bootstrap Listgroup Item', selector: 'li', classes: 'list-group-item' }, ]}, {title: 'Alignment', items: [ {title: 'Left', block: 'div', classes: 'text-left', icon: 'alignleft'}, {title: 'Center', block: 'div',classes: 'text-center', icon: 'aligncenter'}, {title: 'Right', block: 'div', classes: 'text-right', icon: 'alignright'}, {title: 'Justify', block: 'div', classes: 'text-justify', icon: 'alignjustify'}, {title: 'No Text-Wrap', block: 'div', classes: 'text-nowrap', icon: ''}, {title: 'Clear Float', block: 'div', classes: 'clearfix'}, {title: 'Image Left', selector: 'img', classes: 'bbcode-img-left', icon: 'alignleft'}, {title: 'Image Right', selector: 'img', classes: 'bbcode-img-right', icon: 'alignright'} ]}, {title: 'Glyphs', items: [ {title: 'Size 2x', selector: 'i', classes: 'fa-2x'}, {title: 'Size 3x', selector: 'i', classes: 'fa-3x'}, {title: 'Size 4x', selector: 'i', classes: 'fa-4x'}, {title: 'Size 5x', selector: 'i', classes: 'fa-5x'}, {title: 'Fixed Width', selector: 'i', classes: 'fa-fw'}, {title: 'Spin', selector: 'i', classes: 'fa-spin'} ]}, {title: 'Bootstrap Inline', items: [ {title: 'Label (Default)', inline: 'span', classes: 'label label-default'}, {title: 'Label (Primary)', inline: 'span', classes: 'label label-primary'}, {title: 'Label (Success)', inline: 'span', classes: 'label label-success'}, {title: 'Label (Info)', inline: 'span', classes: 'label label-info'}, {title: 'Label (Warning)', inline: 'span', classes: 'label label-warning'}, {title: 'Label (Danger)', inline: 'span', classes: 'label label-danger'}, {title: 'Muted', inline: 'span', classes: 'text-muted'}, ]}, {title: 'Bootstrap Blocks', items: [ {title: 'Alert (Success)', block: 'div', classes: 'alert alert-success'}, {title: 'Alert (Info)', block: 'div', classes: 'alert alert-info'}, {title: 'Alert (Warning)', block: 'div', classes: 'alert alert-warning'}, {title: 'Alert (Danger)', block: 'div', classes: 'alert alert-block alert-danger'}, {title: 'Lead', block: 'p', classes: 'lead'}, {title: 'Well', block: 'div', classes: 'well'}, {title: 'Row', block: 'div', classes: 'row'}, {title: '1/4 Width Block', block: 'div', classes: 'col-md-3 col-sm-12'}, {title: '3/4 Width Block', block: 'div', classes: 'col-md-9 col-sm-12'}, {title: '1/3 Width Block', block: 'div', classes: 'col-md-4 col-sm-12'}, {title: '2/3 Width Block', block: 'div', classes: 'col-md-8 col-sm-12'}, {title: '1/2 Width Block', block: 'div', classes: 'col-md-6 col-sm-12'}, ]}, {title: 'Bootstrap Buttons', items: ".$this->bootstrapButtonStyles()."}, {title: 'Bootstrap Images', items: [ {title: 'Responsive (recommended)', selector: 'img', classes: 'img-responsive img-fluid'}, {title: 'Rounded', selector: 'img', classes: 'img-rounded rounded'}, {title: 'Circle', selector: 'img', classes: 'img-circle rounded-circle'}, {title: 'Thumbnail', selector: 'img', classes: 'img-thumbnail'}, ]}, {title: 'Bootstrap Tables', items: [ {title: 'Bordered', selector: 'table', classes: 'table-bordered'}, {title: 'Condensed', selector: 'table', classes: 'table-condensed'}, {title: 'Hover', selector: 'table', classes: 'table-hover'}, {title: 'Striped', selector: 'table', classes: 'table-striped'}, ]}, {title: 'Animate.css Style', items: [ {title: 'bounce', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounce'}, {title: 'flash', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated flash'}, {title: 'pulse', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated pulse'}, {title: 'rubberBand', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rubberBand'}, {title: 'shake', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated shake'}, {title: 'headShake', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated headShake'}, {title: 'swing', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated swing'}, {title: 'tada', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated tada'}, {title: 'wobble', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated wobble'}, {title: 'jello', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated jello'}, {title: 'bounceIn', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceIn'}, {title: 'bounceInDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceInDown'}, {title: 'bounceInLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceInLeft'}, {title: 'bounceInRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceInRight'}, {title: 'bounceInUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceInUp'}, /* {title: 'bounceOut', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceOut'}, {title: 'bounceOutDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceOutDown'}, {title: 'bounceOutLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceOutLeft'}, {title: 'bounceOutRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceOutRight'}, {title: 'bounceOutUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated bounceOutUp'},*/ {title: 'fadeIn', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeIn'}, {title: 'fadeInDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInDown'}, {title: 'fadeInDownBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInDownBig'}, {title: 'fadeInLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInLeft'}, {title: 'fadeInLeftBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInLeftBig'}, {title: 'fadeInRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInRight'}, {title: 'fadeInRightBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInRightBig'}, {title: 'fadeInUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInUp'}, {title: 'fadeInUpBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeInUpBig'}, {title: 'fadeOut', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOut'}, /* {title: 'fadeOutDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutDown'}, {title: 'fadeOutDownBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutDownBig'}, {title: 'fadeOutLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutLeft'}, {title: 'fadeOutLeftBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutLeftBig'}, {title: 'fadeOutRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutRight'}, {title: 'fadeOutRightBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutRightBig'}, {title: 'fadeOutUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutUp'}, {title: 'fadeOutUpBig', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated fadeOutUpBig'}, */ {title: 'flip', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated flip'}, {title: 'flipInX', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated flipInX'}, {title: 'flipInY', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated flipInY'}, /* {title: 'flipOutX', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated flipOutX'}, {title: 'flipOutY', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated flipOutY'}, */ {title: 'lightSpeedIn', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated lightSpeedIn'}, /* {title: 'lightSpeedOut', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated lightSpeedOut'}, */ {title: 'rotateIn', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateIn'}, {title: 'rotateInDownLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateInDownLeft'}, {title: 'rotateInDownRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateInDownRight'}, {title: 'rotateInUpLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateInUpLeft'}, {title: 'rotateInUpRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateInUpRight'}, /* {title: 'rotateOut', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateOut'}, {title: 'rotateOutDownLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateOutDownLeft'}, {title: 'rotateOutDownRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateOutDownRight'}, {title: 'rotateOutUpLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateOutUpLeft'}, {title: 'rotateOutUpRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rotateOutUpRight'}, */ {title: 'hinge', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated hinge'}, {title: 'jackInTheBox', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated jackInTheBox'}, {title: 'rollIn', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rollIn'}, {title: 'rollOut', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated rollOut'}, {title: 'zoomIn', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomIn'}, {title: 'zoomInDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomInDown'}, {title: 'zoomInLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomInLeft'}, {title: 'zoomInRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomInRight'}, {title: 'zoomInUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomInUp'}, {title: 'zoomOut', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomOut'}, {title: 'zoomOutDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomOutDown'}, {title: 'zoomOutLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomOutLeft'}, {title: 'zoomOutRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomOutRight'}, {title: 'zoomOutUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated zoomOutUp'}, {title: 'slideInDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideInDown'}, {title: 'slideInLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideInLeft'}, {title: 'slideInRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideInRight'}, {title: 'slideInUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideInUp'}, /* {title: 'slideOutDown', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideOutDown'}, {title: 'slideOutLeft', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideOutLeft'}, {title: 'slideOutRight', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideOutRight'}, {title: 'slideOutUp', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animated slideOutUp'}, */ ]}, {title: 'Animate.css Delay', items: [ {title: '2 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-2'}, {title: '4 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-4'}, {title: '6 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-6'}, {title: '8 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-8'}, {title: '10 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-10'}, {title: '12 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-12'}, {title: '14 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-14'}, {title: '16 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-16'}, {title: '18 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-18'}, {title: '20 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-20'}, {title: '22 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-22'}, {title: '24 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-24'}, {title: '26 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-26'}, {title: '28 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-28'}, {title: '30 sec.', selector: 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes: 'animation-delay-30'}, ]}, ]"; // $ret['style_formats_merge'] = true; // $ret['visualblocks_default_state'] = true; //pref $ret['style_formats'] = $formats; // json_encode($formats); $ret['link_class_list'] = $this->getLinkClassList(); "[ {title: 'None', value: ''}, {title: 'Link', value: 'btn btn-link'}, {title: 'Alert Link', value: 'alert-link'}, {title: 'Button (Default)', value: 'btn btn-default'}, {title: 'Button (Primary)', value: 'btn btn-primary'}, {title: 'Button (Success)', value: 'btn btn-success'}, {title: 'Button (Info)', value: 'btn btn-info'}, {title: 'Button (Warning)', value: 'btn btn-warning'}, {title: 'Button (Danger)', value: 'btn btn-danger'} ]"; /* $ret['setup'] = "function(ed) { ed.addMenuItem('test', { text: 'Clear Floats', context: 'insert', icon: false, onclick: function() { ed.insertContent('
'); } }); }";*/ // https://github.com/valtlfelipe/TinyMCE-LocalAutoSave /* $ret['setup'] = "function(ed) { ed.addMenuItem('test', { text: 'Clear Floats', context: 'insert', icon: false, onclick: function() { ed.insertContent('