parent::__construct($title, $mode);
$this->res = \CRM_Core_Resources::singleton();
$this->angular = \Civi\Core\Container::singleton()->get('angular');
+ $this->region = \CRM_Utils_Request::retrieve('snippet', 'String') ? 'ajax-snippet' : 'html-header';
}
/**
* The content generated by running this page
*/
public function run() {
- $snippet = (array_key_exists('snippet', $_GET) && str_replace("/", "", $_GET['snippet']) != "0");
- $this->registerResources($snippet);
+ $this->registerResources();
return parent::run();
}
/**
* Register resources required by Angular.
*/
- public function registerResources($snippet = false) {
- $scripts = array();
- $styles = array();
+ public function registerResources() {
$modules = $this->angular->getModules();
$page = $this; // PHP 5.3 does not propagate $this to inner functions.
));
});
- $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';
-
+ $this->res->addScriptFile('civicrm', 'bower_components/angular/angular.min.js', 100, $this->region, FALSE);
$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;
+ $this->res->addStyleUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), $this->region);
}
foreach ($this->angular->getResources($moduleName, 'js', 'cacheUrl') as $url) {
- $this->res->addScriptUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), 'html-header');
- $scripts[] = $url;
+ $this->res->addScriptUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), $this->region);
// addScriptUrl() bypasses the normal string-localization of addScriptFile(),
// but that's OK because all Angular strings (JS+HTML) will load via crmResource.
}
// Note: addScriptUrl() bypasses the normal string-localization of addScriptFile(),
// 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;
+ $this->res->addScriptUrl($aggScriptUrl, 120, $this->region);
// 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);
- //$this->res->addStyleUrl($aggStyleUrl, 120, 'html-header');
+ //$this->res->addStyleUrl($aggStyleUrl, 120, $this->region);
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->res->addStyleUrl($url, self::DEFAULT_MODULE_WEIGHT + (++$headOffset), $this->region);
}
}
- //This allows angular apps to be loaded as snippets in tabs
- $this->assign("snippet", $snippet);
- if($snippet) {
+ //This will enable setting of the lacation hash so that Angular knows
+ //Which page it is trying to load.
+ $this->assign("setRoute", ($this->region == "ajax-snippet"));
+ if($this->region == "ajax-snippet") {
$this->assign("route", $_REQUEST['route']);
- $this->assign("scripts", $scripts);
- $this->assign("styles", $styles);
}
-
}
-
}