/** * tiny_mce_gzip.php * * Copyright 2010, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ $frameworkPath = rtrim(dirname(dirname(dirname(dirname(__FILE__)))), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'framework'; $basePath = rtrim(dirname($frameworkPath), DIRECTORY_SEPARATOR); require_once $frameworkPath . '/core/TempPath.php'; // Handle incoming request if it's a script call if (TinyMCE4_Compressor::getParam("js")) { // Default settings $tinyMCECompressor = new TinyMCE4_Compressor(array('cache_dir' => getTempFolder($basePath))); // 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("../jscripts/tiny_mce/tiny_mce_gzip.php"); * * // Renders script tag with compressed scripts * TinyMCE_Compressor::renderTag(array( * "url" => "../jscripts/tiny_mce/tiny_mce_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 TINYMCE4_PATH . '/thirdparty/tinymce/tiny_mce_gzip.php'; $useGzip = Config::inst()->get('CustomHtmlEditorField', '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); // tinymce3 $settings['toolbar' . $i] = implode(',', $buttons); // tinymce4 } // languages $languages[] = $config->getOption('language'); // save this config settings $configs[$configID] = $settings; } // tinyMCE JS requirement if ($useGzip) { $tag = TinyMCE4_Compressor::renderTag(array('url' => TINYMCE4_DIR . '/thirdparty/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(TINYMCE4_DIR . '/thirdparty/tinymce/jquery.tinymce.min.js'); } // block old scripts Requirements::block(MCE_ROOT . 'tiny_mce_src.js'); Requirements::block(FRAMEWORK_DIR . "/javascript/HtmlEditorField.js"); Requirements::block('htmlEditorConfig'); // load replacements Requirements::javascript(TINYMCE4_DIR . "/javascript/HtmlEditorField.js"); if (Member::currentUser()) { CustomHtmlEditorConfig::set_active(Member::currentUser()->getHtmlEditorConfigForCMS()); } // 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, 'customHtmlEditorConfig'); }