}
$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,
'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);
$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;
}