Globally reset angular hashPrefix
authorColeman Watts <coleman@civicrm.org>
Mon, 26 Apr 2021 23:27:13 +0000 (19:27 -0400)
committerColeman Watts <coleman@civicrm.org>
Mon, 26 Apr 2021 23:39:46 +0000 (19:39 -0400)
In dev/core#1818 a reset was added to remove the ! character after the #
to maintain consistency with previous versions of Angular.
It was added to crmApp which yeilded inconsistent results,
as crmApp isn't used everywhere.
This adds the reset globally.

Civi/Angular/AngularLoader.php
Civi/Angular/Page/Modules.php
ang/crmApp.js
ang/resetLocationProviderHashPrefix.js [new file with mode: 0644]

index 6ddd90ed090948f6cdffa7afb679cc575adc574e..c887e9d13f477a0c0df566e3bee243e03a408e6b 100644 (file)
@@ -155,6 +155,7 @@ class AngularLoader {
     $headOffset = 0;
     $config = \CRM_Core_Config::singleton();
     if ($config->debug) {
+      $res->addScriptFile('civicrm', 'ang/resetLocationProviderHashPrefix.js', 101, $this->getRegion(), FALSE);
       foreach ($moduleNames as $moduleName) {
         foreach ($this->angular->getResources($moduleName, 'css', 'cacheUrl') as $url) {
           $res->addStyleUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), $this->getRegion());
index d7957629ab9b62fdf50f1e2d73a56f6a463d4c0c..83a72da5cc5e8e10afb4522948bcaa668d9c23aa 100644 (file)
@@ -85,7 +85,11 @@ class Modules extends \CRM_Core_Page {
       case 'angular-modules.js':
         $moduleNames = $page->parseModuleNames($event->params['modules'] ?? NULL, $angular);
         $event->mimeType = 'application/javascript';
-        $event->content = $page->digestJs($angular->getResources($moduleNames, 'js', 'path'));
+        $files = array_merge(
+          [\Civi::resources()->getPath('civicrm', 'ang/resetLocationProviderHashPrefix.js')],
+          $angular->getResources($moduleNames, 'js', 'path')
+        );
+        $event->content = $page->digestJs($files);
         break;
 
       case 'angular-modules.css':
index e3baceb971a6618ba84bcea245725811ffdbaba1..388ad98ae07d4139fe8651a6bf1dbb2dbc24ac32 100644 (file)
@@ -4,11 +4,6 @@
   // modules should depend on it.
   var crmApp = angular.module('crmApp', CRM.angular.modules);
 
-  // dev/core#1818 use angular 1.5 default of # instead of 1.6+ default of #!
-  crmApp.config(['$locationProvider', function($locationProvider) {
-    $locationProvider.hashPrefix("");
-  }]);
-
   crmApp.config(['$routeProvider',
     function($routeProvider) {
 
diff --git a/ang/resetLocationProviderHashPrefix.js b/ang/resetLocationProviderHashPrefix.js
new file mode 100644 (file)
index 0000000..eb70026
--- /dev/null
@@ -0,0 +1,9 @@
+(function(angular, $, _) {
+
+  // dev/core#1818 use angular 1.5 default of # instead of 1.6+ default of #!
+  angular.module('ng')
+    .config(['$locationProvider', function($locationProvider) {
+      $locationProvider.hashPrefix('');
+    }]);
+
+})(angular, CRM.$, CRM._);