var app = angular.module('umbraco', [ 'umbraco.filters', 'umbraco.directives', 'umbraco.resources', 'umbraco.services', 'umbraco.packages', 'umbraco.views', 'ngCookies', 'ngSanitize', 'ngMobile', 'tmh.dynamicLocale', 'ngFileUpload', 'LocalStorageModule' ]); var packages = angular.module("umbraco.packages", []); //this ensures we can inject our own views into templateCache and clear //the entire cache before the app runs, due to the module //order, clearing will always happen before umbraco.views and umbraco //module is initilized. angular.module("umbraco.views", ["umbraco.viewcache"]); angular.module("umbraco.viewcache", []) .run(function($rootScope, $templateCache) { /** For debug mode, always clear template cache to cut down on dev frustration and chrome cache on templates */ if (Umbraco.Sys.ServerVariables.isDebuggingEnabled) { $templateCache.removeAll(); } }) .config([ //This ensures that all of our angular views are cache busted, if the path starts with views/ and ends with .html, then // we will append the cache busting value to it. This way all upgraded sites will not have to worry about browser cache. "$provide", function($provide) { return $provide.decorator("$http", [ "$delegate", function($delegate) { var get = $delegate.get; $delegate.get = function (url, config) { if (Umbraco.Sys.ServerVariables.application && url.startsWith("views/") && url.endsWith(".html")) { var rnd = Umbraco.Sys.ServerVariables.application.version + "." + Umbraco.Sys.ServerVariables.application.cdf; var _op = (url.indexOf("?") > 0) ? "&" : "?"; url += _op + "umb__rnd=" + rnd; } return get(url, config); }; return $delegate; } ]); } ]); //Call a document callback if defined, this is sort of a dodgy hack to // be able to configure angular values in the Default.cshtml // view which is much easier to do that configuring values by injecting them in the back office controller // to follow through to the js initialization stuff if (angular.isFunction(document.angularReady)) { document.angularReady.apply(this, [app]); }