sogo/UI/WebServerResources/js/Preferences.services.js.map
2016-01-13 09:15:07 -05:00

1 line
13 KiB
Plaintext

{"version":3,"file":"Preferences.services.js","sources":["Preferences/Preferences.service.js"],"names":["Preferences","_this","this","defaults","settings","defaultsPromise","$$resource","fetch","then","data","labels","_","object","map","SOGoMailLabelsColors","value","key","charAt","Vacation","endDate","Date","parseInt","endDateEnabled","autoReplyEmailAddresses","length","join","angular","isUndefined","isDefined","window","defaultEmailAddresses","daysBetweenResponse","Forward","forwardAddress","SOGoCalendarCategoriesColors","SOGoCalendarCategories","SOGoContactsCategories","extend","$mdDateLocaleProvider","locale","firstDayOfWeek","SOGoFirstDayOfWeek","weekNumberFormatter","weekNumber","l","msgCalendar","msgOpenCalendar","parseDate","dateString","SOGoShortDateFormat","NaN","formatDate","date","format","formatTime","SOGoTimeFormat","settingsPromise","Calendar","PreventInvitationsWhitelist","match","exec","$User","uid","cn","c_email","$factory","$q","$timeout","$log","Settings","Resource","User","activeUser","module","e","factory","prototype","ready","all","$save","save","$omit","deep","preferences","whitelist","forEach","copy","toLowerCase","replace","substring","getTime","filter","split","v","each","user","$shortFormat"],"mappings":"CAEA,WACE,YAMA,SAASA,KACP,GAAIC,GAAQC,IAEZA,MAAKC,YACLD,KAAKE,YAELF,KAAKG,gBAAkBL,EAAYM,WAAWC,MAAM,gBAAgBC,KAAK,SAASC,GAEhF,GAAIC,GAASC,EAAEC,OAAOD,EAAEE,IAAIJ,EAAKK,qBAAsB,SAASC,EAAOC,GACrE,MAAqB,KAAjBA,EAAIC,OAAO,IACL,IAAMD,EAAKD,IACbC,EAAKD,KAgEf,OA7DAN,GAAKK,qBAAuBJ,EAKxBD,EAAKS,UACHT,EAAKS,SAASC,QAChBV,EAAKS,SAASC,QAAU,GAAIC,MAAuC,IAAlCC,SAASZ,EAAKS,SAASC,WAExDV,EAAKS,SAASI,eAAiB,EAC/Bb,EAAKS,SAASC,QAAU,GAAIC,OAE1BX,EAAKS,SAASK,yBAA2Bd,EAAKS,SAASK,wBAAwBC,OACjFf,EAAKS,SAASK,wBAA0Bd,EAAKS,SAASK,wBAAwBE,KAAK,WAE5EhB,GAAKS,SAASK,yBAEvBd,EAAKS,YAEHQ,QAAQC,YAAYlB,EAAKS,SAASK,0BAClCG,QAAQE,UAAUC,OAAOC,yBAC3BrB,EAAKS,SAASK,wBAA0BM,OAAOC,uBAE7CJ,QAAQC,YAAYlB,EAAKS,SAASa,uBACpCtB,EAAKS,SAASa,oBAAsB,GAElCL,QAAQC,YAAYlB,EAAKS,SAASC,WACpCV,EAAKS,SAASI,eAAiB,EAC/Bb,EAAKS,SAASC,QAAU,GAAIC,OAG1BX,EAAKuB,SAAWvB,EAAKuB,QAAQC,iBAC/BxB,EAAKuB,QAAQC,eAAiBxB,EAAKuB,QAAQC,eAAeR,KAAK,MAE7DC,QAAQC,YAAYlB,EAAKyB,gCAC3BzB,EAAKyB,gCACLzB,EAAK0B,2BAGHT,QAAQC,YAAYlB,EAAK2B,0BAC3B3B,EAAK2B,2BAEPV,QAAQW,OAAOpC,EAAME,SAAUM,GAE/BiB,QAAQW,OAAOrC,EAAYsC,sBAAuB7B,EAAK8B,QACvDvC,EAAYsC,sBAAsBE,eAAiBnB,SAASZ,EAAKgC,oBACjEzC,EAAYsC,sBAAsBI,oBAAsB,SAASC,GAC/D,MAAOC,GAAE,UAAWD,IAEtB3C,EAAYsC,sBAAsBO,YAAcD,EAAE,YAClD5C,EAAYsC,sBAAsBQ,gBAAkBF,EAAE,iBACtD5C,EAAYsC,sBAAsBS,UAAY,SAASC,GACrD,MAAOA,GAAYA,EAAWD,UAAU/C,EAAYsC,sBAAuB7B,EAAKwC,qBAAuB,GAAI7B,MAAK8B,MAElHlD,EAAYsC,sBAAsBa,WAAa,SAASC,GACtD,MAAOA,GAAMA,EAAKC,OAAOrD,EAAYsC,sBAAuB7B,EAAKwC,qBAAuB,IAE1FjD,EAAYsC,sBAAsBgB,WAAa,SAASF,GACtD,MAAOA,GAAMA,EAAKC,OAAOrD,EAAYsC,sBAAuB7B,EAAK8C,gBAAkB,IAG9EtD,EAAME,WAGfD,KAAKsD,gBAAkBxD,EAAYM,WAAWC,MAAM,gBAAgBC,KAAK,SAASC,GAchF,MAZIA,GAAKgD,WACHhD,EAAKgD,SAASC,4BAChBjD,EAAKgD,SAASC,4BAA8B/C,EAAEE,IAAIJ,EAAKgD,SAASC,4BAA6B,SAAS3C,EAAOC,GAC3G,GAAI2C,GAAQ,kBAAkBC,KAAK7C,EACnC,OAAO,IAAIf,GAAY6D,OAAOC,IAAK9C,EAAK+C,GAAIJ,EAAM,GAAIK,QAASL,EAAM,OAGvElD,EAAKgD,SAASC,gCAGlBhC,QAAQW,OAAOpC,EAAMG,SAAUK,GAExBR,EAAMG,WASjBJ,EAAYiE,UAAY,KAAM,WAAY,OAAQ,gBAAiB,aAAc,WAAY,OAAQ,SAASC,EAAIC,EAAUC,EAAM9B,EAAuB+B,EAAUC,EAAUC,GAW3K,MAVA7C,SAAQW,OAAOrC,GACbkE,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACN9B,sBAAuBA,EACvBhC,WAAY,GAAIgE,GAASD,EAASG,WAAW,aAAcH,EAASG,cACpEA,WAAYH,EAASG,aACrBX,MAAOU,IAGF,GAAIvE,IAIb,KACE0B,QAAQ+C,OAAO,sBAEjB,MAAMC,GACJhD,QAAQ+C,OAAO,sBAAuB,gBAIxC/C,QAAQ+C,OAAO,sBACZE,QAAQ,cAAe3E,EAAYiE,UAQtCjE,EAAY4E,UAAUC,MAAQ,WAC5B,MAAO7E,GAAYkE,GAAGY,KAAK5E,KAAKG,gBAAiBH,KAAKsD,mBAQxDxD,EAAY4E,UAAUG,MAAQ,WAG5B,MAAO/E,GAAYM,WAAW0E,KAAK,cAAe9E,KAAK+E,OAAM,IAC1DzE,KAAK,SAASC,GAGb,MAAOA,MAWbT,EAAY4E,UAAUK,MAAQ,SAASC,GACrC,GAAIC,GAAazE,EAAQ0E,CAkDzB,OAhDAD,MACAC,KAEA1D,QAAQ2D,QAAQnF,KAAM,SAASa,EAAOC,GACzB,eAAPA,GAAkC,KAAVA,EAAI,KAC1BkE,EACFC,EAAYnE,GAAOU,QAAQ4D,KAAKvE,GAEhCoE,EAAYnE,GAAOD,KAKzBL,EAASC,EAAEC,OAAOD,EAAEE,IAAIsE,EAAYhF,SAASW,qBAAsB,SAASC,EAAOC,GACjF,MAAqB,KAAjBA,EAAIC,OAAO,IAA8B,KAAjBD,EAAIC,OAAO,GAEjCD,EAAIQ,OAAS,GAAsB,KAAjBR,EAAIC,OAAO,IACvBF,EAAM,GAAGwE,cAAcC,QAAQ,wBAAyB,KAAMzE,IAEhEC,EAAIyE,UAAU,GAAI1E,IAEpBC,EAAKD,MAGfoE,EAAYhF,SAASW,qBAAuBJ,EAExCyE,EAAYhF,SAASe,WACnBiE,EAAYhF,SAASe,SAASI,eAChC6D,EAAYhF,SAASe,SAASC,QAAUgE,EAAYhF,SAASe,SAASC,QAAQuE,UAAU,IAExFP,EAAYhF,SAASe,SAASC,QAAU,EAEtCgE,EAAYhF,SAASe,SAASK,wBAChC4D,EAAYhF,SAASe,SAASK,wBAA0BZ,EAAEgF,OAAOR,EAAYhF,SAASe,SAASK,wBAAwBqE,MAAM,KAAM,SAASC,GAAK,MAAOA,GAAErE,SAE1J2D,EAAYhF,SAASe,SAASK,4BAG9B4D,EAAYhF,SAAS6B,SAAWmD,EAAYhF,SAAS6B,QAAQC,iBAC/DkD,EAAYhF,SAAS6B,QAAQC,eAAiBkD,EAAYhF,SAAS6B,QAAQC,eAAe2D,MAAM,MAE9FT,EAAY/E,SAASqD,UAAY0B,EAAY/E,SAASqD,SAASC,8BACjE/C,EAAEmF,KAAKX,EAAY/E,SAASqD,SAASC,4BAA6B,SAASqC,GACzEX,EAAUW,EAAKjC,KAAOiC,EAAKC,iBAE7Bb,EAAY/E,SAASqD,SAASC,4BAA8B0B,GAGvDD","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Preferences\n * @constructor\n */\n function Preferences() {\n var _this = this;\n\n this.defaults = {};\n this.settings = {};\n\n this.defaultsPromise = Preferences.$$resource.fetch(\"jsonDefaults\").then(function(data) {\n // We swap $key -> _$key to avoid an Angular bug (https://github.com/angular/angular.js/issues/6266)\n var labels = _.object(_.map(data.SOGoMailLabelsColors, function(value, key) {\n if (key.charAt(0) == '$')\n return ['_' + key, value];\n return [key, value];\n }));\n\n data.SOGoMailLabelsColors = labels;\n\n // We convert our list of autoReplyEmailAddresses/forwardAddress into a string.\n // We also convert our date objects into real date, otherwise we'll have strings\n // or undefined values and the md-datepicker does NOT like this.\n if (data.Vacation) {\n if (data.Vacation.endDate)\n data.Vacation.endDate = new Date(parseInt(data.Vacation.endDate) * 1000);\n else {\n data.Vacation.endDateEnabled = 0;\n data.Vacation.endDate = new Date();\n }\n if (data.Vacation.autoReplyEmailAddresses && data.Vacation.autoReplyEmailAddresses.length)\n data.Vacation.autoReplyEmailAddresses = data.Vacation.autoReplyEmailAddresses.join(\",\");\n else\n delete data.Vacation.autoReplyEmailAddresses;\n } else\n data.Vacation = {};\n\n if (angular.isUndefined(data.Vacation.autoReplyEmailAddresses) &&\n angular.isDefined(window.defaultEmailAddresses))\n data.Vacation.autoReplyEmailAddresses = window.defaultEmailAddresses;\n\n if (angular.isUndefined(data.Vacation.daysBetweenResponse))\n data.Vacation.daysBetweenResponse = 7;\n\n if (angular.isUndefined(data.Vacation.endDate)) {\n data.Vacation.endDateEnabled = 0;\n data.Vacation.endDate = new Date();\n }\n\n if (data.Forward && data.Forward.forwardAddress)\n data.Forward.forwardAddress = data.Forward.forwardAddress.join(\",\");\n\n if (angular.isUndefined(data.SOGoCalendarCategoriesColors)) {\n data.SOGoCalendarCategoriesColors = {};\n data.SOGoCalendarCategories = [];\n }\n\n if (angular.isUndefined(data.SOGoContactsCategories))\n data.SOGoContactsCategories = [];\n\n angular.extend(_this.defaults, data);\n\n angular.extend(Preferences.$mdDateLocaleProvider, data.locale);\n Preferences.$mdDateLocaleProvider.firstDayOfWeek = parseInt(data.SOGoFirstDayOfWeek);\n Preferences.$mdDateLocaleProvider.weekNumberFormatter = function(weekNumber) {\n return l('Week %d', weekNumber);\n };\n Preferences.$mdDateLocaleProvider.msgCalendar = l('Calender');\n Preferences.$mdDateLocaleProvider.msgOpenCalendar = l('Open Calendar');\n Preferences.$mdDateLocaleProvider.parseDate = function(dateString) {\n return dateString? dateString.parseDate(Preferences.$mdDateLocaleProvider, data.SOGoShortDateFormat) : new Date(NaN);\n };\n Preferences.$mdDateLocaleProvider.formatDate = function(date) {\n return date? date.format(Preferences.$mdDateLocaleProvider, data.SOGoShortDateFormat) : '';\n };\n Preferences.$mdDateLocaleProvider.formatTime = function(date) {\n return date? date.format(Preferences.$mdDateLocaleProvider, data.SOGoTimeFormat) : '';\n };\n\n return _this.defaults;\n });\n\n this.settingsPromise = Preferences.$$resource.fetch(\"jsonSettings\").then(function(data) {\n // We convert our PreventInvitationsWhitelist hash into a array of user\n if (data.Calendar) {\n if (data.Calendar.PreventInvitationsWhitelist)\n data.Calendar.PreventInvitationsWhitelist = _.map(data.Calendar.PreventInvitationsWhitelist, function(value, key) {\n var match = /^(.+)\\s<(\\S+)>$/.exec(value);\n return new Preferences.$User({uid: key, cn: match[1], c_email: match[2]});\n });\n else\n data.Calendar.PreventInvitationsWhitelist = [];\n }\n\n angular.extend(_this.settings, data);\n\n return _this.settings;\n });\n }\n\n /**\n * @memberof Preferences\n * @desc The factory we'll use to register with Angular\n * @returns the Preferences constructor\n */\n Preferences.$factory = ['$q', '$timeout', '$log', '$mdDateLocale', 'sgSettings', 'Resource', 'User', function($q, $timeout, $log, $mdDateLocaleProvider, Settings, Resource, User) {\n angular.extend(Preferences, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $mdDateLocaleProvider: $mdDateLocaleProvider,\n $$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),\n activeUser: Settings.activeUser(),\n $User: User\n });\n\n return new Preferences(); // return unique instance\n }];\n\n /* Initialize module if necessary */\n try {\n angular.module('SOGo.PreferencesUI');\n }\n catch(e) {\n angular.module('SOGo.PreferencesUI', ['SOGo.Common']);\n }\n\n /* Factory registration in Angular module */\n angular.module('SOGo.PreferencesUI')\n .factory('Preferences', Preferences.$factory);\n\n /**\n * @function ready\n * @memberof Preferences.prototype\n * @desc Combine promises used to load user's defaults and settings.\n * @return a combined promise\n */\n Preferences.prototype.ready = function() {\n return Preferences.$q.all([this.defaultsPromise, this.settingsPromise]);\n };\n\n /**\n * @function $save\n * @memberof Preferences.prototype\n * @desc Save the preferences to the server.\n */\n Preferences.prototype.$save = function() {\n var _this = this;\n\n return Preferences.$$resource.save(\"Preferences\", this.$omit(true))\n .then(function(data) {\n // Make a copy of the data for an eventual reset\n //_this.$shadowData = _this.$omit(true);\n return data;\n });\n };\n\n /**\n * @function $omit\n * @memberof Preferences.prototype\n * @desc Return a sanitized object used to send to the server.\n * @param {Boolean} [deep] - make a deep copy if true\n * @return an object literal copy of the Preferences instance\n */\n Preferences.prototype.$omit = function(deep) {\n var preferences, labels, whitelist;\n\n preferences = {};\n whitelist = {};\n\n angular.forEach(this, function(value, key) {\n if (key != 'constructor' && key[0] != '$') {\n if (deep)\n preferences[key] = angular.copy(value);\n else\n preferences[key] = value;\n }\n });\n\n // We swap _$key -> $key to avoid an Angular bug (https://github.com/angular/angular.js/issues/6266)\n labels = _.object(_.map(preferences.defaults.SOGoMailLabelsColors, function(value, key) {\n if (key.charAt(0) == '_' && key.charAt(1) == '$') {\n // New key, let's take the value and flatten it\n if (key.length > 2 && key.charAt(2) == '$') {\n return [value[0].toLowerCase().replace(/[ \\(\\)\\/\\{%\\*<>\\\\\\\"]/g, \"_\"), value];\n }\n return [key.substring(1), value];\n }\n return [key, value];\n }));\n\n preferences.defaults.SOGoMailLabelsColors = labels;\n\n if (preferences.defaults.Vacation) {\n if (preferences.defaults.Vacation.endDateEnabled)\n preferences.defaults.Vacation.endDate = preferences.defaults.Vacation.endDate.getTime()/1000;\n else\n preferences.defaults.Vacation.endDate = 0;\n\n if (preferences.defaults.Vacation.autoReplyEmailAddresses)\n preferences.defaults.Vacation.autoReplyEmailAddresses = _.filter(preferences.defaults.Vacation.autoReplyEmailAddresses.split(\",\"), function(v) { return v.length; });\n else\n preferences.defaults.Vacation.autoReplyEmailAddresses = [];\n }\n\n if (preferences.defaults.Forward && preferences.defaults.Forward.forwardAddress)\n preferences.defaults.Forward.forwardAddress = preferences.defaults.Forward.forwardAddress.split(\",\");\n\n if (preferences.settings.Calendar && preferences.settings.Calendar.PreventInvitationsWhitelist) {\n _.each(preferences.settings.Calendar.PreventInvitationsWhitelist, function(user) {\n whitelist[user.uid] = user.$shortFormat();\n });\n preferences.settings.Calendar.PreventInvitationsWhitelist = whitelist;\n }\n\n return preferences;\n };\n\n})();\n"]}