CRM-19649 - Improve ckeditor config defaults
authorColeman Watts <coleman@civicrm.org>
Tue, 22 Nov 2016 04:46:01 +0000 (23:46 -0500)
committerSeamus Lee <seamuslee001@gmail.com>
Wed, 23 Nov 2016 03:31:52 +0000 (14:31 +1100)
CRM/Admin/Page/CKEditorConfig.php
CRM/Core/Resources.php
CRM/Upgrade/Incremental/php/FourSeven.php

index f1018bed7e0ed43a10fbf66b9e07f786b0837258..05f039d43c47c7115f6cac3ed723f10f5c5d1af4 100644 (file)
@@ -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";
+  }
+
 }
index 92d73bd6dde82aa8ae2b930fc56c335e7605df1d..d998717d43612a7bd4fcf40a4eb860fcc988b35b 100644 (file)
@@ -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()));
     }
 
index 198ae31d26441b930dbdbab822eaa595df2b3b7e..2442f75175f8af5e5582dbfb23afb3eceef55a0d 100644 (file)
@@ -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;
   }