From 949a87e8b05017ff86fb00fab61d55bd700461b9 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 21 Nov 2016 23:46:01 -0500 Subject: [PATCH] CRM-19649 - Improve ckeditor config defaults --- CRM/Admin/Page/CKEditorConfig.php | 35 +++++++++++++++++++---- CRM/Core/Resources.php | 1 + CRM/Upgrade/Incremental/php/FourSeven.php | 15 ++-------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/CRM/Admin/Page/CKEditorConfig.php b/CRM/Admin/Page/CKEditorConfig.php index f1018bed7e..05f039d43c 100644 --- a/CRM/Admin/Page/CKEditorConfig.php +++ b/CRM/Admin/Page/CKEditorConfig.php @@ -74,6 +74,7 @@ class CRM_Admin_Page_CKEditorConfig extends CRM_Core_Page { // If the form was submitted, take appropriate action. if (!empty($_POST['revert'])) { self::deleteConfigFile($this->preset); + self::setConfigDefault(); } elseif (!empty($_POST['config'])) { $this->save($_POST); @@ -122,12 +123,7 @@ class CRM_Admin_Page_CKEditorConfig extends CRM_Core_Page { * @param array $params */ public function save($params) { - $config = "/**\n" - . " * CKEditor config file auto-generated by CiviCRM.\n" - . " *\n" - . " * Note: This file will be overwritten if settings are modified at:\n" - . " * @link " . CRM_Utils_System::url(CRM_Utils_System::currentPath(), NULL, TRUE, NULL, FALSE) . "\n" - . " */\n\n" + $config = self::fileHeader() // Standardize line-endings . preg_replace('~\R~u', "\n", $params['config']); @@ -264,4 +260,31 @@ class CRM_Admin_Page_CKEditorConfig extends CRM_Core_Page { } } + /** + * Create default config file if it doesn't exist + */ + public static function setConfigDefault() { + if (!self::getConfigFile()) { + $config = self::fileHeader() . "CKEDITOR.editorConfig = function( config ) {\n\tconfig.allowedContent = true;\n};\n"; + // Make sure directories exist + if (!is_dir(Civi::paths()->getPath('[civicrm.files]/persist'))) { + mkdir(Civi::paths()->getPath('[civicrm.files]/persist')); + } + $newFileName = Civi::paths()->getPath('[civicrm.files]/persist/crm-ckeditor-default.js'); + file_put_contents($newFileName, $config); + } + } + + /** + * @return string + */ + public static function fileHeader() { + return "/**\n" + . " * CKEditor config file auto-generated by CiviCRM (" . date('Y-m-d H:i:s') . ").\n" + . " *\n" + . " * Note: This file will be overwritten if settings are modified at:\n" + . " * @link " . CRM_Utils_System::url('civicrm/admin/ckeditor', NULL, TRUE, NULL, FALSE) . "\n" + . " */\n"; + } + } diff --git a/CRM/Core/Resources.php b/CRM/Core/Resources.php index 92d73bd6dd..d998717d43 100644 --- a/CRM/Core/Resources.php +++ b/CRM/Core/Resources.php @@ -728,6 +728,7 @@ class CRM_Core_Resources { $editor = Civi::settings()->get('editor_id'); if ($editor == "CKEditor") { $items[] = "js/wysiwyg/crm.ckeditor.js"; + CRM_Admin_Page_CKEditorConfig::setConfigDefault(); $items[] = array('config' => array('CKEditorCustomConfig' => CRM_Admin_Page_CKEditorConfig::getConfigUrl())); } diff --git a/CRM/Upgrade/Incremental/php/FourSeven.php b/CRM/Upgrade/Incremental/php/FourSeven.php index 198ae31d26..2442f75175 100644 --- a/CRM/Upgrade/Incremental/php/FourSeven.php +++ b/CRM/Upgrade/Incremental/php/FourSeven.php @@ -921,20 +921,9 @@ FROM `civicrm_dashboard_contact` JOIN `civicrm_contact` WHERE civicrm_dashboard_ $setting = "\n\tconfig.allowedContent = true;\n"; $config = substr_replace($config, $setting, $pos, 0); unlink($fileName); + $newFileName = Civi::paths()->getPath('[civicrm.files]/persist/crm-ckeditor-default.js'); + file_put_contents($newFileName, $config); } - // Create config file if it doesn't exist - else { - $config = "CKEDITOR.editorConfig = function( config ) {\n\tconfig.allowedContent = true;\n};\n"; - // Make sure directories exist - if (!is_dir(Civi::paths()->getPath('[civicrm.files]'))) { - mkdir(Civi::paths()->getPath('[civicrm.files]')); - } - if (!is_dir(Civi::paths()->getPath('[civicrm.files]/persist'))) { - mkdir(Civi::paths()->getPath('[civicrm.files]/persist')); - } - } - $newFileName = Civi::paths()->getPath('[civicrm.files]/persist/crm-ckeditor-default.js'); - file_put_contents($newFileName, $config); return TRUE; } -- 2.25.1