Merge pull request #2507 from lcdservices/CRM-14204
[civicrm-core.git] / CRM / Core / Resources.php
index 4a4c1222bad055cf4299df53a232e02a7f232320..26bd78fc75c562db662919fef5ad96a3a5153fa2 100644 (file)
@@ -428,41 +428,31 @@ class CRM_Core_Resources {
       $this->addedCoreResources[$region] = TRUE;
       $config = CRM_Core_Config::singleton();
 
-      // Add resources from jquery.files.tpl
-      $files = self::parseTemplate('CRM/common/jquery.files.tpl');
+      // Add resources from coreResourceList
+      $files = $this->coreResourceList();
       $jsWeight = -9999;
-      foreach ($files as $file => $type) {
-        if ($type == 'js') {
+      foreach ($files as $file) {
+        if (substr($file, -2) == 'js') {
           // Don't bother  looking for ts() calls in packages, there aren't any
           $translate = (substr($file, 0, 9) != 'packages/');
           $this->addScriptFile('civicrm', $file, $jsWeight++, $region, $translate);
         }
-        elseif ($type == 'css') {
+        else {
           $this->addStyleFile('civicrm', $file, -100, $region);
         }
       }
 
-      // Add localized calendar js
-      // Search for i18n file in order of specificity (try fr-CA, then fr)
-      list($lang) = explode('_', $config->lcMessages);
-      foreach (array(str_replace('_', '-', $config->lcMessages), $lang) as $language) {
-        $localizationFile = "packages/jquery/jquery-ui-1.9.0/development-bundle/ui/i18n/jquery.ui.datepicker-{$language}.js";
-        if ($this->getPath('civicrm', $localizationFile)) {
-          $this->addScriptFile('civicrm', $localizationFile, $jsWeight++, $region, FALSE);
-          break;
-        }
-      }
-
       // Initialize CRM.url and CRM.formatMoney
       $url = CRM_Utils_System::url('civicrm/example', 'placeholder', FALSE, NULL, FALSE);
       $js = "CRM.url('init', '$url');\n";
-      $js .= "CRM.formatMoney('init', '" . CRM_Utils_Money::format(1234.56) . "');";
+      $js .= "CRM.formatMoney('init', " . json_encode(CRM_Utils_Money::format(1234.56)) . ");";
       $this->addScript($js, $jsWeight++, $region);
 
       // Add global settings
       $settings = array(
         'userFramework' => $config->userFramework,
         'resourceBase' => $config->resourceBase,
+        'lcMessages' => $config->lcMessages,
       );
       $this->addSetting(array('config' => $settings));
 
@@ -490,11 +480,10 @@ class CRM_Core_Resources {
       // Load custom or core css
       $config = CRM_Core_Config::singleton();
       if (!empty($config->customCSSURL)) {
-        $this->addStyleUrl($config->customCSSURL, -99, $region);
+        $this->addStyleUrl($config->customCSSURL, 99, $region);
       }
-      else {
+      if (!CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'disable_core_css')) {
         $this->addStyleFile('civicrm', 'css/civicrm.css', -99, $region);
-        $this->addStyleFile('civicrm', 'css/extras.css', -98, $region);
       }
     }
     return $this;
@@ -534,20 +523,71 @@ class CRM_Core_Resources {
   }
 
   /**
-   * Read resource files from a template
+   * List of core resources we add to every CiviCRM page
    *
-   * @param $tpl (str) template file name
-   * @return array: filename => filetype
+   * @return array
    */
-  static function parseTemplate($tpl) {
-    $items = array();
-    $template = CRM_Core_Smarty::singleton();
-    $buffer = $template->fetch($tpl);
-    $lines = preg_split('/\s+/', $buffer);
-    foreach ($lines as $line) {
-      $line = trim($line);
-      if ($line) {
-        $items[$line] = substr($line, 1 + strrpos($line, '.'));
+  public function coreResourceList() {
+    $config = CRM_Core_Config::singleton();
+    // Use minified files for production, uncompressed in debug mode
+    $min = $config->debug ? '' : '.min';
+
+    $items = array(
+      "packages/jquery/jquery-1.10.2$min.js",
+      "packages/jquery/jquery-migrate-1.2.1.js",
+      "packages/jquery/jquery-ui/js/jquery-ui-1.10.3.custom$min.js",
+      "packages/jquery/jquery-ui/css/black-tie/jquery-ui-1.10.3.custom$min.css",
+        
+      "packages/jquery/plugins/select2/select2$min.js",
+      "packages/jquery/plugins/select2/select2.css",
+
+      "packages/jquery/plugins/jquery.autocomplete.js",
+      "packages/jquery/css/jquery.autocomplete.css",
+
+      "packages/jquery/plugins/jquery.menu$min.js",
+      "packages/jquery/css/menu.css",
+
+      "packages/jquery/plugins/jquery.tableHeader.js",
+
+      "packages/jquery/plugins/jquery.textarearesizer.js",
+
+      "packages/jquery/plugins/jquery.form$min.js",
+
+      "packages/jquery/plugins/jquery.tokeninput$min.js",
+      "packages/jquery/css/token-input-facebook.css",
+
+      "packages/jquery/plugins/jquery.timeentry$min.js",
+
+      "packages/jquery/plugins/DataTables/media/js/jquery.dataTables$min.js",
+
+      "packages/jquery/plugins/jquery.FormNavigate$min.js",
+
+      "packages/jquery/plugins/jquery.validate$min.js",
+      "packages/jquery/plugins/jquery.ui.datepicker.validation.pack.js",
+
+      "packages/jquery/plugins/jquery.jeditable$min.js",
+
+      "packages/jquery/plugins/jquery.blockUI$min.js",
+
+      "packages/jquery/plugins/jquery.notify$min.js",
+
+      "js/rest.js",
+      "js/Common.js",
+
+      "js/jquery/jquery.crmeditable.js",
+    );
+
+    // Add localized jQuery UI files
+    if ($config->lcMessages && $config->lcMessages != 'en_US') {
+      // Search for i18n file in order of specificity (try fr-CA, then fr)
+      list($lang) = explode('_', $config->lcMessages);
+      $path = "packages/jquery/jquery-ui/development-bundle/ui/" . ($min ? 'minified/' : '') . "i18n";
+      foreach (array(str_replace('_', '-', $config->lcMessages), $lang) as $language) {
+        $localizationFile = "$path/jquery.ui.datepicker-{$language}{$min}.js";
+        if ($this->getPath('civicrm', $localizationFile)) {
+          $items[] = $localizationFile;
+          break;
+        }
       }
     }
     return $items;