diff --git a/src/Umbraco.Web.UI.Client/src/common/services/user.service.js b/src/Umbraco.Web.UI.Client/src/common/services/user.service.js index 80565c23e3..a598cb905c 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/user.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/user.service.js @@ -143,7 +143,6 @@ angular.module('umbraco.services') /** Called to update the current user's timeout */ function setUserTimeoutInternal(newTimeout) { - var asNumber = parseFloat(newTimeout); if (!isNaN(asNumber) && currentUser && angular.isNumber(asNumber)) { currentUser.remainingAuthSeconds = newTimeout; @@ -151,6 +150,31 @@ angular.module('umbraco.services') } } + function getMomentLocales(locales, supportedLocales) { + + var localeUrls = []; + var locales = locales.split(','); + for (var i = 0; i < locales.length; i++) { + var locale = locales[i].toString().toLowerCase(); + console.log("locale", locale); + + if (locale !== 'en-us') { + + if (supportedLocales.indexOf(locale + '.js') > -1) { + localeUrls.push('lib/moment/' + locale + '.js'); + } + if (locale.indexOf('-') > -1) { + var majorLocale = locale.split('-')[0] + '.js'; + if (supportedLocales.indexOf(majorLocale) > -1) { + localeUrls.push('lib/moment/' + majorLocale); + } + } + } + } + + return localeUrls; + } + /** resets all user data, broadcasts the notAuthenticated event and shows the login dialog */ function userAuthExpired(isLogout) { //store the last user id and clear the user @@ -178,7 +202,7 @@ angular.module('umbraco.services') } }); - return { + var services = { /** Internal method to display the login dialog */ _showLoginDialog: function () { @@ -279,47 +303,40 @@ angular.module('umbraco.services') /** Loads the Moment.js Locale for the current user. */ loadMomentLocaleForCurrentUser: function () { - function loadLocales(currentUser, supportedLocales) { - var locale = currentUser.locale.toLowerCase(); - if (locale !== 'en-us') { - var localeUrls = []; - if (supportedLocales.indexOf(locale + '.js') > -1) { - localeUrls.push('lib/moment/' + locale + '.js'); - } - if (locale.indexOf('-') > -1) { - var majorLocale = locale.split('-')[0] + '.js'; - if (supportedLocales.indexOf(majorLocale) > -1) { - localeUrls.push('lib/moment/' + majorLocale); - } - } - return assetsService.load(localeUrls, $rootScope); - } - else { - //return a noop promise - var deferred = $q.defer(); - var promise = deferred.promise; - deferred.resolve(true); - return promise; - } - } - var promises = { currentUser: this.getCurrentUser(), supportedLocales: javascriptLibraryService.getSupportedLocalesForMoment() } return $q.all(promises).then(function (values) { - return loadLocales(values.currentUser, values.supportedLocales); + return services.loadLocales(values.currentUser.locale, values.supportedLocales); }); - - }, + /** Loads specific Moment.js Locales. */ + loadLocales: function (locales, supportedLocales) { + + var localeUrls = getMomentLocales(locales, supportedLocales); + console.log("localeUrls", localeUrls); + + if (localeUrls.length >= 1) { + return assetsService.load(localeUrls, $rootScope); + } + else { + //return a noop promise + var deferred = $q.defer(); + var promise = deferred.promise; + deferred.resolve(true); + return promise; + } + }, + /** Called whenever a server request is made that contains a x-umb-user-seconds response header for which we can update the user's remaining timeout seconds */ setUserTimeout: function (newTimeout) { setUserTimeoutInternal(newTimeout); } }; + return services; });