* The content generated by running this page
*/
public function run() {
- $this->registerResources();
+ $snippet = (array_key_exists('snippet', $_GET) && str_replace("/", "", $_GET['snippet']) != "0");
+ $this->registerResources($snippet);
return parent::run();
}
/**
* Register resources required by Angular.
*/
- public function registerResources() {
+ public function registerResources($snippet = false) {
+ $scripts = array();
+ $styles = array();
$modules = $this->angular->getModules();
$page = $this; // PHP 5.3 does not propagate $this to inner functions.
$this->res->addSettingsFactory(function () use (&$modules, $page) {
// TODO optimization; client-side caching
return array_merge($page->angular->getResources(array_keys($modules), 'settings', 'settings'), array(
- 'resourceUrls' => \CRM_Extension_System::singleton()->getMapper()->getActiveModuleUrls(),
- 'angular' => array(
- 'modules' => array_merge(array('ngRoute'), array_keys($modules)),
- 'cacheCode' => $page->res->getCacheCode(),
- ),
+ 'resourceUrls' => \CRM_Extension_System::singleton()->getMapper()->getActiveModuleUrls(),
+ 'angular' => array(
+ 'modules' => array_merge(array('ngRoute'), array_keys($modules)),
+ 'cacheCode' => $page->res->getCacheCode(),
+ ),
));
});
+ $config = \CRM_Core_Config::singleton();
+
$this->res->addScriptFile('civicrm', 'bower_components/angular/angular.min.js', 100, 'html-header', FALSE);
+ $scripts[] = $config->userFrameworkResourceURL .'bower_components/angular/angular.min.js';
+
$headOffset = 0;
- $config = \CRM_Core_Config::singleton();
if ($config->debug) {
foreach ($modules as $moduleName => $module) {
foreach ($this->angular->getResources($moduleName, 'css', 'cacheUrl') as $url) {
$this->res->addStyleUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), 'html-header');
+ $styles[] = $url;
}
foreach ($this->angular->getResources($moduleName, 'js', 'cacheUrl') as $url) {
$this->res->addScriptUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), 'html-header');
+ $scripts[] = $url;
// addScriptUrl() bypasses the normal string-localization of addScriptFile(),
// but that's OK because all Angular strings (JS+HTML) will load via crmResource.
}
// but that's OK because all Angular strings (JS+HTML) will load via crmResource.
$aggScriptUrl = \CRM_Utils_System::url('civicrm/ajax/angular-modules', 'format=js&r=' . $page->res->getCacheCode(), FALSE, NULL, FALSE);
$this->res->addScriptUrl($aggScriptUrl, 120, 'html-header');
+ $scripts[] = $aggScriptUrl;
// FIXME: The following CSS aggregator doesn't currently handle path-adjustments - which can break icons.
//$aggStyleUrl = \CRM_Utils_System::url('civicrm/ajax/angular-modules', 'format=css&r=' . $page->res->getCacheCode(), FALSE, NULL, FALSE);
foreach ($this->angular->getResources(array_keys($modules), 'css', 'cacheUrl') as $url) {
$this->res->addStyleUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), 'html-header');
+ $styles[] = $url;
}
}
+
+ //This allows angular apps to be loaded as snippets in tabs
+ $this->assign("snippet", $snippet);
+ if($snippet) {
+ $this->assign("route", $_REQUEST['route']);
+ $this->assign("scripts", $scripts);
+ $this->assign("styles", $styles);
+ }
+
}
}