/** * This basically merges HtmlEditorField::include_js() and HTMLEditorConfig::generateJS() to output all * configuration sets to a customTinyMceConfigs javascript array. * This is output in addition to the standard ssTinyMceConfig because a) we can't stop the default output * with extensions; and b) the default setting is still used for any HTMLEditorField that doesn't specify * it's own config. * * Calls Requirements::javascript() to load the scripts. */ public static function include_js() { require_once 'tinymce/tiny_mce_gzip.php'; $availableConfigs = HtmlEditorConfig::get_available_configs_map(); $pluginsForTag = array(); $languages = array(); //$allConfigs = array(); $settingsJS = ''; $externalPluginsForJS = array(); $activeConfig = HtmlEditorConfig::get_active(); foreach ($availableConfigs as $identifier => $friendlyName) { $configObj = CustomHtmlEditorConfig::get($identifier); $internalPluginsForJS = array(); $configObj->getConfig()->setOption('language', i18n::get_tinymce_lang()); if (!$configObj->getConfig()->getOption('content_css')) { $configObj->getConfig()->setOption('content_css', $activeConfig->getOption('content_css')); } $settings = $configObj->getSettings(); foreach ($configObj->getPlugins() as $plugin => $path) { if (!$path) { $pluginsForTag[$plugin] = $plugin; $internalPluginsForJS[$plugin] = $plugin; } else { $internalPluginsForJS[$plugin] = '-' . $plugin; $externalPluginsForJS[$plugin] = sprintf('tinymce.PluginManager.load("%s", "%s");' . "\n", $plugin, $path); } } $language = $configObj->getConfig()->getOption('language'); if ($language) { $languages[$language] = $language; } $settings['plugins'] = implode(',', $internalPluginsForJS); $buttons = $configObj->getButtons(); foreach ($buttons as $i => $buttons) { $settings['theme_advanced_buttons' . $i] = implode(',', $buttons); } $settingsJS .= "customTinyMceConfigs['" . $identifier . "'] = " . Convert::raw2json($settings) . ";\n"; } if (Config::inst()->get('HtmlEditorField', 'use_gzip')) { $tag = TinyMCE_Compressor::renderTag(array('url' => THIRDPARTY_DIR . '/tinymce/tiny_mce_gzip.php', 'plugins' => implode(',', $pluginsForTag), 'themes' => 'advanced', 'languages' => implode(',', $languages)), true); preg_match('/src="([^"]*)"/', $tag, $matches); Requirements::javascript($matches[1]); } else { Requirements::javascript(MCE_ROOT . 'tiny_mce_src.js'); } $externalPluginsJS = implode('', $externalPluginsForJS); $script = <<<JS \t\t\tif((typeof tinyMCE != 'undefined')) { \t\t\t\t{$externalPluginsJS} \t\t\t\tif (typeof customTinyMceConfigs == 'undefined') { \t\t\t\t\tvar customTinyMceConfigs = []; \t\t\t\t} \t\t\t\t{$settingsJS} \t\t\t} JS; Requirements::customScript($script, 'htmlEditorConfigs'); }
function loadWysiwygJavascript() { global $SETTINGS; // Renders script tag with compressed scripts // Note: We're using the direct method here: http://www.tinymce.com/wiki.php/Compressors:PHP require_once "{$GLOBALS['CMS_ASSETS_DIR']}/3rdParty/tiny_mce/tiny_mce_gzip.php"; TinyMCE_Compressor::renderTag(array('plugins' => 'inlinepopups,contextmenu,table,fullscreen,paste,media,spellchecker', 'languages' => $SETTINGS['wysiwyg']['wysiwygLang'], 'themes' => 'advanced', 'url' => "{$GLOBALS['CMS_ASSETS_URL']}/3rdParty/tiny_mce/tiny_mce_gzip.php")); }
/** * Includes the JavaScript neccesary for this field to work using the {@link Requirements} system. */ public static function include_js() { require_once 'tinymce/tiny_mce_gzip.php'; $configObj = HtmlEditorConfig::get_active(); if (Config::inst()->get('HtmlEditorField', 'use_gzip')) { $internalPlugins = array(); foreach ($configObj->getPlugins() as $plugin => $path) { if (!$path) { $internalPlugins[] = $plugin; } } $tag = TinyMCE_Compressor::renderTag(array('url' => THIRDPARTY_DIR . '/tinymce/tiny_mce_gzip.php', 'plugins' => implode(',', $internalPlugins), 'themes' => 'advanced', 'languages' => $configObj->getOption('language')), true); preg_match('/src="([^"]*)"/', $tag, $matches); Requirements::javascript(html_entity_decode($matches[1])); } else { Requirements::javascript(MCE_ROOT . 'tiny_mce_src.js'); } Requirements::customScript($configObj->generateJS(), 'htmlEditorConfig'); }
private static function include_js_internal($configName) { require_once 'tinymce/tiny_mce_gzip.php'; $configObj = HtmlEditorConfig::get_active(); if (Config::inst()->get('HtmlEditorField', 'use_gzip')) { $internalPlugins = array(); foreach ($configObj->getPlugins() as $plugin => $path) { if (!$path) { $internalPlugins[] = $plugin; } } $tag = TinyMCE_Compressor::renderTag(array('url' => THIRDPARTY_DIR . '/tinymce/tiny_mce_gzip.php', 'plugins' => implode(',', $internalPlugins), 'themes' => 'advanced', 'languages' => $configObj->getOption('language')), true); preg_match('/src="([^"]*)"/', $tag, $matches); Requirements::javascript(html_entity_decode($matches[1])); } else { Requirements::javascript(MCE_ROOT . 'tiny_mce_src.js'); } $config = HtmlEditorConfig::get($configName); $config->setOption('mode', 'none'); $config->setOption('editor_selector', "htmleditor{$configName}"); Requirements::customScript("\n\t\t\t" . str_replace("ssTinyMceConfig", "ssTinyMceConfig" . $configName, $config->generateJS()) . "\n\t\t\t", "htmlEditorConfig-{$configName}"); }
function tiny_mce_compressor_config() { return TinyMCE_Compressor::renderTag(array("url" => "lib/tinymce/tiny_mce_gzip.php", "plugins" => "advhr,contextmenu,emotions,insertdatetime,paste,table,fullscreen,inlinepopups,autosave", "themes" => "advanced", "languages" => "cs,de,en,fr,it,lv,nl,pl,sv", "disk_cache" => false), true); }
$basePath = rtrim(dirname($frameworkPath), DIRECTORY_SEPARATOR); // require composers autoloader if (file_exists($basePath . '/vendor/autoload.php')) { require_once $basePath . '/vendor/autoload.php'; } else { if (!headers_sent()) { header($_SERVER['SERVER_PROTOCOL'] . " 500 Server Error"); header('Content-Type: text/plain'); } echo "Failed to include composer's autoloader, unable to continue\n"; exit(1); } // Handle incoming request if it's a script call if (TinyMCE_Compressor::getParam("js")) { // Default settings $tinyMCECompressor = new TinyMCE_Compressor(array('cache_dir' => TEMP_FOLDER)); // Handle request, compress and stream to client $tinyMCECompressor->handleRequest(); } /** * This class combines and compresses the TinyMCE core, plugins, themes and * language packs into one disk cached gzipped request. It improves the loading speed of TinyMCE dramatically but * still provides dynamic initialization. * * Example of direct usage: * require_once("../js/tinymce/tinymce.gzip.php"); * * // Renders script tag with compressed scripts * TinyMCE_Compressor::renderTag(array( * "url" => "../js/tinymce/tinymce.gzip.php", * "plugins" => "pagebreak,style",
/** * Generate the JavaScript that will set TinyMCE's configuration: * - Parse all configurations into JSON objects to be used in JavaScript * - Includes TinyMCE and configurations using the {@link Requirements} system */ public static function require_js() { require_once 'tinymce/tiny_mce_gzip.php'; $useGzip = Config::inst()->get('HtmlEditorField', 'use_gzip'); $configs = array(); $externalPlugins = array(); $internalPlugins = array(); $languages = array(); foreach (self::$configs as $configID => $config) { $settings = $config->settings; // parse plugins $configPlugins = array(); foreach ($config->plugins as $plugin => $path) { if (!$path) { $configPlugins[] = $plugin; $internalPlugins[] = $plugin; } else { $configPlugins[] = '-' . $plugin; if (!array_key_exists($plugin, $externalPlugins)) { $externalPlugins[$plugin] = sprintf('tinymce.PluginManager.load("%s", "%s");', $plugin, $path); } } } // save config plugins settings $settings['plugins'] = implode(',', $configPlugins); // buttons foreach ($config->buttons as $i => $buttons) { $settings['theme_advanced_buttons' . $i] = implode(',', $buttons); } // languages $languages[] = $config->getOption('language'); // save this config settings $configs[$configID] = $settings; } // tinyMCE JS requirement if ($useGzip) { $tag = TinyMCE_Compressor::renderTag(array('url' => THIRDPARTY_DIR . '/tinymce/tiny_mce_gzip.php', 'plugins' => implode(',', $internalPlugins), 'themes' => 'advanced', 'languages' => implode(",", array_filter($languages))), true); preg_match('/src="([^"]*)"/', $tag, $matches); Requirements::javascript(html_entity_decode($matches[1])); } else { Requirements::javascript(MCE_ROOT . 'tiny_mce_src.js'); } // prepare external plugins js string $externalPlugins = array_values($externalPlugins); $externalPlugins = implode("\n\t", $externalPlugins); // tinyMCE config object and external plugings $configsJS = "\nif((typeof tinyMCE != 'undefined')) {\n\t{$externalPlugins}\n\tvar ssTinyMceConfig = " . Convert::raw2json($configs) . ";\n}"; Requirements::customScript($configsJS, 'htmlEditorConfig'); }
function TinyMCE_Compressor_renderTag($options) { TinyMCE_Compressor::renderTag($options); }
/** * Generate gzipped TinyMCE configuration including plugins and languages. * This ends up "pre-loading" TinyMCE bundled with the required plugins * so that multiple HTTP requests on the client don't need to be made. * * @return string */ public function getScriptURL() { // If gzip is disabled just return core script url $useGzip = Config::inst()->get('HTMLEditorField', 'use_gzip'); if (!$useGzip) { return THIRDPARTY_DIR . '/tinymce/tinymce.min.js'; } // tinyMCE JS requirement require_once THIRDPARTY_PATH . '/tinymce/tiny_mce_gzip.php'; $tag = TinyMCE_Compressor::renderTag(array('url' => THIRDPARTY_DIR . '/tinymce/tiny_mce_gzip.php', 'plugins' => implode(',', $this->getInternalPlugins()), 'themes' => $this->getTheme(), 'languages' => $this->getOption('language')), true); preg_match('/src="([^"]*)"/', $tag, $matches); return html_entity_decode($matches[1]); }