assetHandler = $assetHandler; return $this; } /** * Get backend for assets * @return GeneratedAssetHandler */ public function getAssetHandler() { return $this->assetHandler; } /** * Generate a script URL for the given config * * @param TinyMCEConfig $config * @return string */ public function getScriptURL(TinyMCEConfig $config) { // Build URL for this config based on named config and hash of settings $url = $this->generateFilename($config); // Pass content generator return $this->getAssetHandler()->getContentURL($url, function () use ($config) { return $this->generateContent($config); }); } /** * Build raw config for tinymce * * @param TinyMCEConfig $config * @return string */ public function generateContent(TinyMCEConfig $config) { $tinymceDir = $config->getTinyMCEResource(); // List of string / ModuleResource references to embed $files = []; // Add core languages $language = $config->getOption('language'); if ($language) { $files[] = $this->resolveRelativeResource($tinymceDir, "langs/{$language}"); } // Add plugins, along with any plugin specific lang files foreach ($config->getPlugins() as $plugin => $path) { // Add external plugin if ($path) { // Skip external urls if (is_string($path) && !Director::is_site_url($path)) { continue; } // Convert URLS to relative paths if (is_string($path)) { $path = Director::makeRelative($path); } // Ensure file exists if ($this->resourceExists($path)) { $files[] = $path; } continue; } // Core tinymce plugin $files[] = $this->resolveRelativeResource($tinymceDir, "plugins/{$plugin}/plugin"); if ($language) { $files[] = $this->resolveRelativeResource($tinymceDir, "plugins/{$plugin}/langs/{$language}"); } } // Add themes $theme = $config->getTheme(); if ($theme) { $files[] = $this->resolveRelativeResource($tinymceDir, "themes/{$theme}/theme"); if ($language) { $files[] = $this->resolveRelativeResource($tinymceDir, "themes/{$theme}/langs/{$language}"); } } // Process source files $files = array_filter($files); $libResource = $this->resolveRelativeResource($tinymceDir, 'tinymce'); $libContent = $this->getFileContents($libResource); // Register vars for config $baseDirJS = Convert::raw2js(Director::absoluteBaseURL()); $name = Convert::raw2js($this->checkName($config)); $buffer = []; $buffer[] = <<