X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi%2FAngular%2FAngularLoader.php;h=4d92fa81f37bf6130e55fa975ac97d549c8ee70e;hb=a11f15b9b3e372f27400b3e19ee41d3836aabdad;hp=1dca6bcd9e1d9c61bb30e4620ee8381675620d1e;hpb=5bbbc7fe1543094478ecc72fc60389db843371d7;p=civicrm-core.git diff --git a/Civi/Angular/AngularLoader.php b/Civi/Angular/AngularLoader.php index 1dca6bcd9e..4d92fa81f3 100644 --- a/Civi/Angular/AngularLoader.php +++ b/Civi/Angular/AngularLoader.php @@ -115,8 +115,23 @@ class AngularLoader { } $res->addSettingsFactory(function () use (&$moduleNames, $angular, $res, $assetParams) { + // Merge static settings with the results of settingsFactory functions + $settingsByModule = $angular->getResources($moduleNames, 'settings', 'settings'); + foreach ($angular->getResources($moduleNames, 'settingsFactory', 'settingsFactory') as $moduleName => $factory) { + $settingsByModule[$moduleName] = array_merge($settingsByModule[$moduleName] ?? [], $factory()); + } + // Add clientside permissions + $permissions = []; + $toCheck = $angular->getResources($moduleNames, 'permissions', 'permissions'); + foreach ($toCheck as $perms) { + foreach ((array) $perms as $perm) { + if (!isset($permissions[$perm])) { + $permissions[$perm] = \CRM_Core_Permission::check($perm); + } + } + } // TODO optimization; client-side caching - $result = array_merge($angular->getResources($moduleNames, 'settings', 'settings'), [ + return array_merge($settingsByModule, ['permissions' => $permissions], [ 'resourceUrls' => \CRM_Extension_System::singleton()->getMapper()->getActiveModuleUrls(), 'angular' => [ 'modules' => $moduleNames, @@ -125,7 +140,6 @@ class AngularLoader { 'bundleUrl' => \Civi::service('asset_builder')->getUrl('angular-modules.json', $assetParams), ], ]); - return $result; }); $res->addScriptFile('civicrm', 'bower_components/angular/angular.min.js', 100, $this->getRegion(), FALSE); @@ -161,6 +175,10 @@ class AngularLoader { $res->addStyleUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), $this->getRegion()); } } + // Add bundles + foreach ($this->angular->getResources($moduleNames, 'bundles', 'bundles') as $bundles) { + $res->addBundle($bundles); + } return $this; }