function init() { if (Member::currentUser()) { CustomHtmlEditorConfig::set_active(Member::currentUser()->getHtmlEditorConfigForCMS()); } Requirements::block(MCE_ROOT . 'tiny_mce_src.js'); Requirements::block(FRAMEWORK_DIR . "/javascript/HtmlEditorField.js"); // Set default values in the config if missing. These things can't be defined in the config // file because insufficient information exists when that is being processed $htmlEditorConfig = CustomHtmlEditorConfig::get_active(); $htmlEditorConfig->setOption('language', i18n::get_tinymce_lang()); if (!$htmlEditorConfig->getOption('content_css')) { $cssFiles = array(); $cssFiles[] = FRAMEWORK_ADMIN_DIR . '/css/editor.css'; // Use theme from the site config if (class_exists('SiteConfig') && ($config = SiteConfig::current_site_config()) && $config->Theme) { $theme = $config->Theme; } elseif (Config::inst()->get('SSViewer', 'theme_enabled') && Config::inst()->get('SSViewer', 'theme')) { $theme = Config::inst()->get('SSViewer', 'theme'); } else { $theme = false; } if ($theme) { $cssFiles[] = THEMES_DIR . "/{$theme}/css/editor.css"; } else { if (project()) { $cssFiles[] = project() . '/css/editor.css'; } } // Remove files that don't exist foreach ($cssFiles as $k => $cssFile) { if (!file_exists(BASE_PATH . '/' . $cssFile)) { unset($cssFiles[$k]); } } $htmlEditorConfig->setOption('content_css', implode(',', $cssFiles)); } CustomHtmlEditorConfig::require_js(); }
public function saveInto(DataObjectInterface $record) { if ($record->hasField($this->name) && $record->escapeTypeForField($this->name) != 'xml') { throw new Exception('HtmlEditorField->saveInto(): This field should save into a HTMLText or HTMLVarchar field.'); } $htmlValue = Injector::inst()->create('HTMLValue', $this->value); // Sanitise if requested if ($this->config()->sanitise_server_side) { $santiser = Injector::inst()->create('HtmlEditorSanitiser', CustomHtmlEditorConfig::get_active()); $santiser->sanitise($htmlValue); } // Resample images and add default attributes if ($images = $htmlValue->getElementsByTagName('img')) { foreach ($images as $img) { // strip any ?r=n data from the src attribute $img->setAttribute('src', preg_replace('/([^\\?]*)\\?r=[0-9]+$/i', '$1', $img->getAttribute('src'))); // Resample the images if the width & height have changed. if ($image = File::find(urldecode(Director::makeRelative($img->getAttribute('src'))))) { $width = $img->getAttribute('width'); $height = $img->getAttribute('height'); if ($width && $height && ($width != $image->getWidth() || $height != $image->getHeight())) { //Make sure that the resized image actually returns an image: $resized = $image->ResizedImage($width, $height); if ($resized) { $img->setAttribute('src', $resized->getRelativePath()); } } } // Add default empty title & alt attributes. if (!$img->getAttribute('alt')) { $img->setAttribute('alt', ''); } if (!$img->getAttribute('title')) { $img->setAttribute('title', ''); } } } // Store into record $record->{$this->name} = $htmlValue->getContent(); }