From 7207925362ffe1b22d50b9df80dae962ad29abbe Mon Sep 17 00:00:00 2001 From: InverseBot Date: Sat, 13 May 2017 01:24:30 -0400 Subject: [PATCH] (js/css) Update generated files --- UI/WebServerResources/js/Administration.js | 2 +- UI/WebServerResources/js/Administration.js.map | 2 +- UI/WebServerResources/js/Administration.services.js | 2 +- UI/WebServerResources/js/Administration.services.js.map | 2 +- UI/WebServerResources/js/Common.js | 4 +--- UI/WebServerResources/js/Common.js.map | 2 +- UI/WebServerResources/js/Contacts.js | 2 +- UI/WebServerResources/js/Contacts.js.map | 2 +- UI/WebServerResources/js/Contacts.services.js | 2 +- UI/WebServerResources/js/Contacts.services.js.map | 2 +- UI/WebServerResources/js/Mailer.app.popup.js | 2 +- UI/WebServerResources/js/Mailer.app.popup.js.map | 2 +- UI/WebServerResources/js/Mailer.js | 2 +- UI/WebServerResources/js/Mailer.js.map | 2 +- UI/WebServerResources/js/Mailer.services.js | 3 +-- UI/WebServerResources/js/Mailer.services.js.map | 2 +- UI/WebServerResources/js/Main.js | 2 +- UI/WebServerResources/js/Main.js.map | 2 +- UI/WebServerResources/js/Preferences.js | 2 +- UI/WebServerResources/js/Preferences.js.map | 2 +- UI/WebServerResources/js/Preferences.services.js | 2 +- UI/WebServerResources/js/Preferences.services.js.map | 2 +- UI/WebServerResources/js/Scheduler.js | 2 +- UI/WebServerResources/js/Scheduler.js.map | 2 +- UI/WebServerResources/js/Scheduler.services.js | 4 +--- UI/WebServerResources/js/Scheduler.services.js.map | 2 +- UI/WebServerResources/js/vendor/FileSaver.min.js | 2 +- UI/WebServerResources/js/vendor/FileSaver.min.js.map | 2 +- UI/WebServerResources/js/vendor/angular-file-upload.min.js | 2 +- .../js/vendor/angular-file-upload.min.js.map | 2 +- 30 files changed, 30 insertions(+), 35 deletions(-) diff --git a/UI/WebServerResources/js/Administration.js b/UI/WebServerResources/js/Administration.js index 09c604e3e..3c224ed02 100644 --- a/UI/WebServerResources/js/Administration.js +++ b/UI/WebServerResources/js/Administration.js @@ -1,2 +1,2 @@ -!function(){"use strict";function a(a,d){a.state("administration",{abstract:!0,views:{administration:{templateUrl:"administration.html",controller:"AdministrationController",controllerAs:"app"}}}).state("administration.rights",{url:"/rights",views:{module:{templateUrl:"rights.html"}}}).state("administration.rights.edit",{url:"/:userId/:folderId/edit",views:{acl:{templateUrl:"UIxAdministrationAclEditor",controller:"AdministrationAclController",controllerAs:"acl"}},resolve:{stateUser:b,stateFolder:c}}),d.otherwise("/rights")}function b(a,b,c){var d;return d=_.find(c.$users,function(a){return a.uid==b.userId}),angular.isUndefined(d)?c.$filter(b.userId).then(function(e){return d=_.find(c.$users,function(a){return a.uid==b.userId}),angular.isUndefined(d)?a.reject("User with ID "+b.userId+" not found"):d.$folders().then(function(){return d})}):d}function c(a,b,c,d,e,f){var g,h,i=c(b.folderId);return g=_.find(d.$$folders,function(a){return a.name==i}),h="Appointment"==g.type?new f({id:g.name.split("/").pop(),owner:g.owner,name:g.displayName}):new e({id:g.name.split("/").pop(),owner:g.owner,name:g.displayName}),d.selectedFolder=h.id,h}function d(a,b,c){b.$on("$stateChangeError",function(b,d,e,f,g,h){a.error(h),c.go("administration.rights")}),b.$on("$routeChangeError",function(b,c,d,e){a.error(b,c,d,e)})}angular.module("SOGo.AdministrationUI",["ui.router","SOGo.Common","SOGo.Authentication","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.SchedulerUI"]).config(a).run(d),a.$inject=["$stateProvider","$urlRouterProvider"],b.$inject=["$q","$stateParams","User"],c.$inject=["$state","$stateParams","decodeUriFilter","stateUser","AddressBook","Calendar"],d.$inject=["$log","$rootScope","$state"]}(),function(){"use strict";function a(a,b,c,d,e,f,g){function h(){return angular.isDefined(f.$cards)?"../"+f.owner+"/Contacts/"+f.id+"/UIxContactsUserRightsEditor":"../"+f.owner+"/Calendar/"+f.id+"/UIxCalUserRightsEditor"}function i(a){f.$acl.$selectAllRights(a)}function j(a,b){if(b&&b.target.parentNode.classList.contains("md-secondary"))return!1;r.selectedUid==a.uid?r.selectedUid=null:(r.selectedUid=a.uid,r.selectedUser=a,r.selectedUser.$rights())}function k(a){return r.selectedUid==a.uid&&a.rights}function m(a){return g.$filter(a,f.$acl.users,{dry:!0,uid:r.user.uid})}function n(b){a(function(){f.$acl.$removeUser(b.uid,f.owner)},500)}function o(a){a&&f.$acl.$addUser(a,f.owner).then(function(a){r.userToAdd="",r.searchText="",r.selectedUid=null,a&&j(a)})}function p(){b.go("administration.rights").then(function(){delete r.user.selectedFolder,r.user=null})}function q(){f.$acl.$saveUsersRights(f.owner).then(function(){d.show(d.simple().content(l("ACLs saved")).position("bottom right").hideDelay(3e3)),c("xs")&&p()})}var r=this;r.user=e,r.folder=f,r.folderType=angular.isDefined(f.$cards)?"AddressBook":"Calendar",r.selectedUser=null,r.selectedUid=null,r.selectUser=j,r.selectAllRights=i,r.showRights=k,r.removeUser=n,r.getTemplate=h,r.close=p,r.save=q,r.userToAdd="",r.searchText="",r.userFilter=m,r.addUser=o,f.$acl.$users(f.owner).then(function(a){r.users=a})}a.$inject=["$timeout","$state","$mdMedia","$mdToast","stateUser","stateFolder","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationAclController",a)}(),function(){"use strict";function a(a,b,c,d,e,f,g,h){function i(b){a.go("administration."+b),c(e["gt-md"])||d("left").close()}function j(a){h.$filter(a)}function k(a){m.selectedUser==m.users[a]?m.selectedUser=null:m.users[a].$folders().then(function(){m.selectedUser=m.users[a]})}function l(b){a.go("administration.rights.edit",{userId:m.selectedUser.uid,folderId:g(b.name)})}var m=this;m.service=h,m.selectedUser=null,m.users=h.$users,m.go=i,m.filter=j,m.selectUser=k,m.selectFolder=l}a.$inject=["$state","$mdToast","$mdMedia","$mdSidenav","sgConstant","Dialog","encodeUriFilter","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationController",a)}(); +!function(){"use strict";function e(e,n){e.state("administration",{abstract:!0,views:{administration:{templateUrl:"administration.html",controller:"AdministrationController",controllerAs:"app"}}}).state("administration.rights",{url:"/rights",views:{module:{templateUrl:"rights.html"}}}).state("administration.rights.edit",{url:"/:userId/:folderId/edit",views:{acl:{templateUrl:"UIxAdministrationAclEditor",controller:"AdministrationAclController",controllerAs:"acl"}},resolve:{stateUser:t,stateFolder:r}}),n.otherwise("/rights")}function t(e,t,r){var n;return n=_.find(r.$users,function(e){return e.uid==t.userId}),angular.isUndefined(n)?r.$filter(t.userId).then(function(s){return n=_.find(r.$users,function(e){return e.uid==t.userId}),angular.isUndefined(n)?e.reject("User with ID "+t.userId+" not found"):n.$folders().then(function(){return n})}):n}function r(e,t,r,n,s,i){var o,d,l=r(t.folderId);return o=_.find(n.$$folders,function(e){return e.name==l}),d="Appointment"==o.type?new i({id:o.name.split("/").pop(),owner:o.owner,name:o.displayName}):new s({id:o.name.split("/").pop(),owner:o.owner,name:o.displayName}),n.selectedFolder=d.id,d}function n(e,t,r){t.$on("$stateChangeError",function(t,n,s,i,o,d){e.error(d),r.go("administration.rights")}),t.$on("$routeChangeError",function(t,r,n,s){e.error(t,r,n,s)})}angular.module("SOGo.AdministrationUI",["ui.router","SOGo.Common","SOGo.Authentication","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.SchedulerUI"]).config(e).run(n),e.$inject=["$stateProvider","$urlRouterProvider"],t.$inject=["$q","$stateParams","User"],r.$inject=["$state","$stateParams","decodeUriFilter","stateUser","AddressBook","Calendar"],n.$inject=["$log","$rootScope","$state"]}(),function(){"use strict";function e(e,t,r,n,s,i,o){function d(){return angular.isDefined(i.$cards)?"../"+i.owner+"/Contacts/"+i.id+"/UIxContactsUserRightsEditor":"../"+i.owner+"/Calendar/"+i.id+"/UIxCalUserRightsEditor"}function a(e){i.$acl.$selectAllRights(e)}function u(e,t){if(t&&t.target.parentNode.classList.contains("md-secondary"))return!1;g.selectedUid==e.uid?g.selectedUid=null:(g.selectedUid=e.uid,g.selectedUser=e,g.selectedUser.$rights())}function c(e){return g.selectedUid==e.uid&&e.rights}function f(e){return o.$filter(e,i.$acl.users,{dry:!0,uid:g.user.uid})}function m(t){e(function(){i.$acl.$removeUser(t.uid,i.owner)},500)}function $(e){e&&i.$acl.$addUser(e,i.owner).then(function(e){g.userToAdd="",g.searchText="",g.selectedUid=null,e&&u(e)})}function U(){t.go("administration.rights").then(function(){delete g.user.selectedFolder,g.user=null})}function h(){i.$acl.$saveUsersRights(i.owner).then(function(){n.show(n.simple().content(l("ACLs saved")).position("bottom right").hideDelay(3e3)),r("xs")&&U()})}var g=this;g.user=s,g.folder=i,g.folderType=angular.isDefined(i.$cards)?"AddressBook":"Calendar",g.selectedUser=null,g.selectedUid=null,g.selectUser=u,g.selectAllRights=a,g.showRights=c,g.removeUser=m,g.getTemplate=d,g.close=U,g.save=h,g.userToAdd="",g.searchText="",g.userFilter=f,g.addUser=$,i.$acl.$users(i.owner).then(function(e){g.users=e})}e.$inject=["$timeout","$state","$mdMedia","$mdToast","stateUser","stateFolder","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationAclController",e)}(),function(){"use strict";function e(e,t,r,n,s,i,o,d){function l(t){e.go("administration."+t),r(s["gt-md"])||n("left").close()}function a(e){d.$filter(e)}function u(e){f.selectedUser==f.users[e]?f.selectedUser=null:f.users[e].$folders().then(function(){f.selectedUser=f.users[e]})}function c(t){e.go("administration.rights.edit",{userId:f.selectedUser.uid,folderId:o(t.name)})}var f=this;f.service=d,f.selectedUser=null,f.users=d.$users,f.go=l,f.filter=a,f.selectUser=u,f.selectFolder=c}e.$inject=["$state","$mdToast","$mdMedia","$mdSidenav","sgConstant","Dialog","encodeUriFilter","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationController",e)}(); //# sourceMappingURL=Administration.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Administration.js.map b/UI/WebServerResources/js/Administration.js.map index 579d577d8..742c9d036 100644 --- a/UI/WebServerResources/js/Administration.js.map +++ b/UI/WebServerResources/js/Administration.js.map @@ -1 +1 @@ -{"version":3,"sources":["Administration/Administration.app.js","Administration/AdministrationAclController.js","Administration/AdministrationController.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","abstract","views","administration","templateUrl","controller","controllerAs","url","module","acl","resolve","stateUser","stateFolder","otherwise","$q","$stateParams","User","user","_","find","$users","uid","userId","angular","isUndefined","$filter","then","users","reject","$folders","$state","decodeUriFilter","AddressBook","Calendar","folder","o","folderId","$$folders","name","type","id","split","pop","owner","displayName","selectedFolder","runBlock","$log","$rootScope","$on","event","toState","toParams","fromState","fromParams","error","go","current","previous","rejection","config","run","$inject","AdministrationAclController","$timeout","$mdMedia","$mdToast","getTemplate","isDefined","$cards","selectAllRights","$acl","$selectAllRights","selectUser","$event","target","parentNode","classList","contains","vm","selectedUid","selectedUser","$rights","showRights","rights","userFilter","$query","dry","removeUser","$removeUser","addUser","data","$addUser","userToAdd","searchText","close","save","$saveUsersRights","show","simple","content","l","position","hideDelay","this","folderType","AdministrationController","$mdSidenav","sgConstant","Dialog","encodeUriFilter","filter","i","selectFolder","service"],"mappings":"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","file":"Administration.js","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoAdministration */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.AdministrationUI', ['ui.router', 'SOGo.Common', 'SOGo.Authentication', 'SOGo.PreferencesUI', 'SOGo.ContactsUI', 'SOGo.SchedulerUI'])\n .config(configure)\n .run(runBlock);\n\n /**\n * @ngInject\n */\n configure.$inject = ['$stateProvider', '$urlRouterProvider'];\n function configure($stateProvider, $urlRouterProvider) {\n $stateProvider\n .state('administration', {\n abstract: true,\n views: {\n administration: {\n templateUrl: 'administration.html',\n controller: 'AdministrationController',\n controllerAs: 'app'\n }\n }\n })\n .state('administration.rights', {\n url: '/rights',\n views: {\n module: {\n templateUrl: 'rights.html'\n }\n }\n })\n .state('administration.rights.edit', {\n url: '/:userId/:folderId/edit',\n views: {\n acl: {\n templateUrl: 'UIxAdministrationAclEditor', // UI/Templates/Administration/UIxAdministrationAclEditor.wox\n controller: 'AdministrationAclController',\n controllerAs: 'acl'\n }\n },\n resolve: {\n stateUser: stateUser,\n stateFolder: stateFolder\n }\n });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/rights');\n }\n\n /**\n * @ngInject\n */\n stateUser.$inject = ['$q', '$stateParams', 'User'];\n function stateUser($q, $stateParams, User) {\n var user;\n\n user = _.find(User.$users, function(user) {\n return user.uid == $stateParams.userId;\n });\n\n if (angular.isUndefined(user)) {\n return User.$filter($stateParams.userId).then(function(users) {\n user = _.find(User.$users, function(user) {\n return user.uid == $stateParams.userId;\n });\n if (angular.isUndefined(user)) {\n return $q.reject('User with ID ' + $stateParams.userId + ' not found');\n }\n else {\n // Resolve folders\n return user.$folders().then(function() {\n return user;\n });\n }\n return user;\n });\n }\n\n return user;\n }\n\n /**\n * @ngInject\n */\n stateFolder.$inject = ['$state', '$stateParams', 'decodeUriFilter', 'stateUser', 'AddressBook', 'Calendar'];\n function stateFolder($state, $stateParams, decodeUriFilter, stateUser, AddressBook, Calendar) {\n var folder, o,\n folderId = decodeUriFilter($stateParams.folderId);\n\n folder = _.find(stateUser.$$folders, function(folder) {\n return folder.name == folderId;\n });\n \n if (folder.type == \"Appointment\") {\n o = new Calendar({ id: folder.name.split('/').pop(),\n owner: folder.owner,\n name: folder.displayName });\n } else {\n o = new AddressBook({ id: folder.name.split('/').pop(),\n owner: folder.owner,\n name: folder.displayName });\n }\n\n stateUser.selectedFolder = o.id;\n\n return o;\n }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$log', '$rootScope', '$state'];\n function runBlock($log, $rootScope, $state) {\n $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {\n $log.error(error);\n $state.go('administration.rights');\n });\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n $log.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoAdministration */\n\n(function() {\n 'use strict';\n \n /**\n * @ngInject\n */\n AdministrationAclController.$inject = ['$timeout', '$state', '$mdMedia', '$mdToast', 'stateUser', 'stateFolder', 'User'];\n function AdministrationAclController($timeout, $state, $mdMedia, $mdToast, stateUser, stateFolder, User) {\n var vm = this;\n\n vm.user = stateUser;\n vm.folder = stateFolder;\n vm.folderType = angular.isDefined(stateFolder.$cards)? 'AddressBook' : 'Calendar';\n vm.selectedUser = null;\n vm.selectedUid = null;\n vm.selectUser = selectUser;\n vm.selectAllRights = selectAllRights;\n vm.showRights = showRights;\n vm.removeUser = removeUser;\n vm.getTemplate = getTemplate;\n vm.close = close;\n vm.save = save;\n\n vm.userToAdd = '';\n vm.searchText = '';\n vm.userFilter = userFilter;\n vm.addUser = addUser;\n\n stateFolder.$acl.$users(stateFolder.owner).then(function(data) {\n vm.users = data;\n });\n\n function getTemplate() {\n if (angular.isDefined(stateFolder.$cards))\n return '../' + stateFolder.owner + '/Contacts/' + stateFolder.id + '/UIxContactsUserRightsEditor';\n\n return '../' + stateFolder.owner + '/Calendar/' + stateFolder.id + '/UIxCalUserRightsEditor';\n }\n\n function selectAllRights(user) {\n stateFolder.$acl.$selectAllRights(user);\n }\n\n function selectUser(user, $event) {\n if ($event && $event.target.parentNode.classList.contains('md-secondary'))\n return false;\n if (vm.selectedUid == user.uid) {\n vm.selectedUid = null;\n }\n else {\n vm.selectedUid = user.uid;\n vm.selectedUser = user;\n vm.selectedUser.$rights();\n }\n }\n\n function showRights(user) {\n return vm.selectedUid == user.uid && user.rights;\n }\n\n function userFilter($query) {\n return User.$filter($query, stateFolder.$acl.users, { dry: true, uid: vm.user.uid });\n }\n\n function removeUser(user) {\n $timeout(function() {\n stateFolder.$acl.$removeUser(user.uid, stateFolder.owner);\n }, 500); // wait for CSS transition to complete (see card.scss)\n }\n\n function addUser(data) {\n if (data) {\n stateFolder.$acl.$addUser(data, stateFolder.owner).then(function(user) {\n vm.userToAdd = '';\n vm.searchText = '';\n vm.selectedUid = null;\n if (user)\n selectUser(user);\n });\n }\n }\n\n function close() {\n $state.go('administration.rights').then(function() {\n delete vm.user.selectedFolder;\n vm.user = null;\n });\n }\n\n function save() {\n stateFolder.$acl.$saveUsersRights(stateFolder.owner).then(function() {\n $mdToast.show(\n $mdToast.simple()\n .content(l('ACLs saved'))\n .position('bottom right')\n .hideDelay(3000)\n );\n // Close acls on small devices\n if ($mdMedia('xs'))\n close();\n });\n }\n }\n\n angular\n .module('SOGo.AdministrationUI')\n .controller('AdministrationAclController', AdministrationAclController);\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGoAdministration */\n\n(function() {\n 'use strict';\n \n /**\n * @ngInject\n */\n AdministrationController.$inject = ['$state', '$mdToast', '$mdMedia', '$mdSidenav', 'sgConstant', 'Dialog', 'encodeUriFilter', 'User'];\n function AdministrationController($state, $mdToast, $mdMedia, $mdSidenav, sgConstant, Dialog, encodeUriFilter, User) {\n var vm = this;\n\n vm.service = User;\n\n vm.selectedUser = null;\n vm.users = User.$users;\n\n vm.go = go;\n vm.filter = filter;\n vm.selectUser = selectUser;\n vm.selectFolder = selectFolder;\n\n function go(module) {\n $state.go('administration.' + module);\n // Close sidenav on small devices\n if (!$mdMedia(sgConstant['gt-md']))\n $mdSidenav('left').close();\n }\n\n function filter(searchText) {\n User.$filter(searchText);\n }\n\n function selectUser(i) {\n if (vm.selectedUser == vm.users[i]) {\n vm.selectedUser = null;\n }\n else {\n // Fetch folders of specific type for selected user\n vm.users[i].$folders().then(function() {\n vm.selectedUser = vm.users[i];\n });\n }\n }\n\n function selectFolder(folder) {\n $state.go('administration.rights.edit', {userId: vm.selectedUser.uid, folderId: encodeUriFilter(folder.name)});\n }\n\n }\n\n angular\n .module('SOGo.AdministrationUI')\n .controller('AdministrationController', AdministrationController);\n\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["Administration/Administration.app.js","Administration/AdministrationAclController.js","Administration/AdministrationController.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","abstract","views","administration","templateUrl","controller","controllerAs","url","module","acl","resolve","stateUser","stateFolder","otherwise","$q","$stateParams","User","user","_","find","$users","uid","userId","angular","isUndefined","$filter","then","users","reject","$folders","$state","decodeUriFilter","AddressBook","Calendar","folder","o","folderId","$$folders","name","type","id","split","pop","owner","displayName","selectedFolder","runBlock","$log","$rootScope","$on","event","toState","toParams","fromState","fromParams","error","go","current","previous","rejection","config","run","$inject","AdministrationAclController","$timeout","$mdMedia","$mdToast","getTemplate","isDefined","$cards","selectAllRights","$acl","$selectAllRights","selectUser","$event","target","parentNode","classList","contains","vm","selectedUid","selectedUser","$rights","showRights","rights","userFilter","$query","dry","removeUser","$removeUser","addUser","data","$addUser","userToAdd","searchText","close","save","$saveUsersRights","show","simple","content","l","position","hideDelay","this","folderType","AdministrationController","$mdSidenav","sgConstant","Dialog","encodeUriFilter","filter","i","selectFolder","service"],"mappings":"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","file":"Administration.js"} \ No newline at end of file diff --git a/UI/WebServerResources/js/Administration.services.js b/UI/WebServerResources/js/Administration.services.js index bca77320c..5d98f070d 100644 --- a/UI/WebServerResources/js/Administration.services.js +++ b/UI/WebServerResources/js/Administration.services.js @@ -1,2 +1,2 @@ -!function(){"use strict";function a(){}a.$factory=["$q","$timeout","$log","sgSettings","Resource","User",function(b,c,d,e,f,g){return angular.extend(a,{$q:b,$timeout:c,$log:d,$$resource:new f(e.activeUser("folderURL"),e.activeUser()),activeUser:e.activeUser(),$User:g}),new a}];try{angular.module("SOGo.AdministrationUI")}catch(a){angular.module("SOGo.AdministrationUI",["SOGo.Common"])}angular.module("SOGo.AdministrationUI").factory("Administration",a.$factory)}(); +!function(){"use strict";function t(){}t.$factory=["$q","$timeout","$log","sgSettings","Resource","User",function(e,o,r,n,i,a){return angular.extend(t,{$q:e,$timeout:o,$log:r,$$resource:new i(n.activeUser("folderURL"),n.activeUser()),activeUser:n.activeUser(),$User:a}),new t}];try{angular.module("SOGo.AdministrationUI")}catch(t){angular.module("SOGo.AdministrationUI",["SOGo.Common"])}angular.module("SOGo.AdministrationUI").factory("Administration",t.$factory)}(); //# sourceMappingURL=Administration.services.js.map \ No newline at end of file diff --git a/UI/WebServerResources/js/Administration.services.js.map b/UI/WebServerResources/js/Administration.services.js.map index 1ee0c631a..28441fcf4 100644 --- a/UI/WebServerResources/js/Administration.services.js.map +++ b/UI/WebServerResources/js/Administration.services.js.map @@ -1 +1 @@ -{"version":3,"sources":["Administration/Administration.service.js"],"names":["Administration","$factory","$q","$timeout","$log","Settings","Resource","User","angular","extend","$$resource","activeUser","$User","module","e","factory"],"mappings":"CAEA,WACE,YAMA,SAASA,MASTA,EAAeC,UAAY,KAAM,WAAY,OAAQ,aAAc,WAAY,OAAQ,SAASC,EAAIC,EAAUC,EAAMC,EAAUC,EAAUC,GAUtI,MATAC,SAAQC,OAAOT,GACbE,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACNM,WAAY,GAAIJ,GAASD,EAASM,WAAW,aAAcN,EAASM,cACpEA,WAAYN,EAASM,aACrBC,MAAOL,IAGF,GAAIP,IAIb,KACEQ,QAAQK,OAAO,yBAEjB,MAAMC,GACJN,QAAQK,OAAO,yBAA0B,gBAI3CL,QAAQK,OAAO,yBACZE,QAAQ,iBAAkBf,EAAeC","file":"Administration.services.js","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @name Administration\n * @constructor\n */\n function Administration() {\n\n }\n\n /**\n * @memberof Administration\n * @desc The factory we'll use to register with Angular\n * @returns the Administration constructor\n */\n Administration.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'User', function($q, $timeout, $log, Settings, Resource, User) {\n angular.extend(Administration, {\n $q: $q,\n $timeout: $timeout,\n $log: $log,\n $$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),\n activeUser: Settings.activeUser(),\n $User: User\n });\n\n return new Administration(); // return unique instance\n }];\n\n /* Initialize module if necessary */\n try {\n angular.module('SOGo.AdministrationUI');\n }\n catch(e) {\n angular.module('SOGo.AdministrationUI', ['SOGo.Common']);\n }\n\n /* Factory registration in Angular module */\n angular.module('SOGo.AdministrationUI')\n .factory('Administration', Administration.$factory);\n\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["Administration/Administration.service.js"],"names":["Administration","$factory","$q","$timeout","$log","Settings","Resource","User","angular","extend","$$resource","activeUser","$User","module","e","factory"],"mappings":"CAEA,WACE,YAMA,SAASA,MASTA,EAAeC,UAAY,KAAM,WAAY,OAAQ,aAAc,WAAY,OAAQ,SAASC,EAAIC,EAAUC,EAAMC,EAAUC,EAAUC,GAUtI,MATAC,SAAQC,OAAOT,GACbE,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACNM,WAAY,GAAIJ,GAASD,EAASM,WAAW,aAAcN,EAASM,cACpEA,WAAYN,EAASM,aACrBC,MAAOL,IAGF,GAAIP,IAIb,KACEQ,QAAQK,OAAO,yBAEjB,MAAMC,GACJN,QAAQK,OAAO,yBAA0B,gBAI3CL,QAAQK,OAAO,yBACZE,QAAQ,iBAAkBf,EAAeC","file":"Administration.services.js"} \ No newline at end of file diff --git a/UI/WebServerResources/js/Common.js b/UI/WebServerResources/js/Common.js index b14b8488f..4dbfc4c3f 100644 --- a/UI/WebServerResources/js/Common.js +++ b/UI/WebServerResources/js/Common.js @@ -1,4 +1,2 @@ -function l(){var a,b,c=arguments[0],d=c,e=arguments;for(labels[c]?d=labels[c]:clabels[c]&&(d=clabels[c]),a=1,b=0;a1&&(d=d.replace(/%((%)|s|d)/g,function(b){var c=null;if(b[2])c=b[2];else{switch(c=e[a],b){case"%d":c=parseFloat(c),isNaN(c)&&(c=0)}a++}return c})),d}function hexToRgb(a){var b=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return b?{r:parseInt(b[1],16),g:parseInt(b[2],16),b:parseInt(b[3],16)}:null}function contrast(a){var b,c,d=1;if(b=hexToRgb(a)){c=[b.r/255,b.g/255,b.b/255];for(var e=0;e.179?"black":"white"}function guid(){function a(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return(a()+a()+"-"+a()+"-4"+a().substr(0,3)+"-"+a()+"-"+a()+a()+a()).toLowerCase()}!function(){"use strict";function a(a,b,c,d,e){d.definePalette("sogo-green",{50:"eaf5e9",100:"cbe5c8",200:"aad6a5",300:"88c781",400:"66b86a",500:"56b04c",600:"4da143",700:"388e3c",800:"367d2e",900:"225e1b",A100:"fafafa",A200:"69f0ae",A400:"00e676",A700:"00c853",contrastDefaultColor:"dark",contrastLightColors:["300","400","500","600","700","800","900"]}),d.definePalette("sogo-blue",{50:"f0faf9",100:"e1f5f3",200:"ceebe8",300:"bfe0dd",400:"b2d6d3",500:"a1ccc8",600:"8ebfbb",700:"7db3b0",800:"639997",900:"4d8080",A100:"d4f7fa",A200:"c3f5fa",A400:"53e3f0",A700:"00b0c0",contrastDefaultColor:"light",contrastDarkColors:["50","100","200"]}),d.definePalette("sogo-paper",{50:"fcf7f8",100:"f7f1dc",200:"ede5ca",300:"e6d8ba",400:"e2d2a3",500:"d6c48d",600:"baa870",700:"857545",800:"524517",900:"433809",1000:"000000",A100:"ffffff",A200:"eeeeee",A400:"bdbdbd",A700:"616161",contrastDefaultColor:"dark",contrastLightColors:["800","900"]}),d.theme("default").primaryPalette("sogo-blue",{default:"900","hue-1":"400","hue-2":"800","hue-3":"A700"}).accentPalette("sogo-green",{default:"500","hue-1":"A100","hue-2":"300","hue-3":"A700"}),DebugEnabled||(a.debugEnabled(!1),b.debugInfoEnabled(!1),e.disableWarnings(),d.generateThemesOnDemand(!0)),c.interceptors.push("AuthInterceptor"),c.interceptors.push("ErrorInterceptor")}function b(a,b){return{response:function(c){return c&&/^application\/json/.test(c.config.headers.Accept)&&/^[\n\r ]*/.test(c.data)?(a.location.reload(!0),b.reject()):c}}}function c(a,b,c,d){return{responseError:function(e){var f,g;if(/^application\/json/.test(e.config.headers.Accept)){if(b.usesCASAuthentication&&-1==e.status)return f=c.defer(),g=angular.element(''),g.on("load",function(){d.get("$http")(e.config).then(f.resolve,f.reject),g.remove()}),document.body.appendChild(g[0]),f.promise;a.$broadcast("http:Error",e)}return c.reject(e)}}}angular.module("SOGo.Common",["ngAnimate","ngMessages","ngSanitize","ngMaterial","mdColors"]).value("sgSettings",{isPopup:document.body.classList.contains("popup"),baseURL:function(){return ApplicationBaseURL||null},resourcesURL:function(){return ResourcesURL||null},activeUser:function(a){var b={login:UserLogin||null,identification:UserIdentification||null,email:UserEmail||null,language:UserLanguage||null,folderURL:UserFolderURL||null,isSuperUser:IsSuperUser||null,path:{calendar:UserCalendarPath||null,contacts:UserContactsPath||null,mail:UserMailPath||null,preferences:UserPreferencesPath||null,administration:IsSuperUser?UserAdministrationPath:null,help:HelpURL||null,logoff:UserLogoffPath||null}};return a?b[a]:b},minimumSearchLength:function(){return angular.isNumber(minimumSearchLength)?minimumSearchLength:2}}).constant("sgColors",{selection:["#FFFFFF","#330033","#C0C0C0","#999999","#666666","#333333","#000000","#FFCCCC","#FF6666","#FF0000","#CC0000","#990000","#660000","#330000","#FFCC99","#FF9966","#FF9900","#FF6600","#CC6600","#993300","#663300","#FFFF99","#FFFF66","#FFCC66","#FFCC33","#CC9933","#996633","#663333","#FFFFCC","#FFFF33","#FFFF00","#FFCC00","#999900","#666600","#333300","#CCCCCC","#66FF99","#33FF33","#33CC00","#009900","#006600","#003300","#99FFFF","#33FFFF","#66CCCC","#00CCCC","#339999","#336666","#003333","#CCFFFF","#66FFFF","#33CCFF","#3366FF","#3333FF","#000099","#000066","#CCCCFF","#9999FF","#6666CC","#6633FF","#6600CC","#333399","#330099","#FFCCFF","#FF99FF","#CC66CC","#CC33CC","#993399","#663366","#99FF99"]}).constant("sgConstant",{xs:"(max-width: 599px)","gt-xs":"(min-width: 600px)",sm:"(min-width: 600px) and (max-width: 959px)","gt-sm":"(min-width: 960px)",md:"(min-width: 960px) and (max-width: 1023px)","gt-md":"(min-width: 1024px)",lg:"(min-width: 1024px) and (max-width: 1279px)","gt-lg":"(min-width: 1280px)",xl:"(min-width: 1920px)",print:"print"}).config(a).factory("AuthInterceptor",b).factory("ErrorInterceptor",c),a.$inject=["$logProvider","$compileProvider","$httpProvider","$mdThemingProvider","$mdAriaProvider"],b.$inject=["$window","$q"],c.$inject=["$rootScope","$window","$q","$injector"]}(),function(){"use strict";function a(a){c=a}function b(a,b,d){function e(a){return a.join("")}function f(a,b,c,d,e,f){if(e){var g="rgb("+e.value[0]+","+e.value[1]+","+e.value[2]+")",h="rgb("+e.contrast[0]+","+e.contrast[1]+","+e.contrast[2]+")",i={theme:c,palette:d,value:g,contrast:h,hue:f};r.insertRule(a(i),s),s+=1,r.insertRule(b(i),s),s+=1}}function g(a,b,c,d,e){if(d){var f="rgb("+d.value[0]+","+d.value[1]+","+d.value[2]+")";r.insertRule(a({theme:b,palette:c,value:f,hue:e}),s),s+=1}}for(var h=a(e([".md-{{theme}}-theme",".md-fg"])+" { color:{{value}};}"),i=a(e([".md-{{theme}}-theme",".md-bg"])+" { background-color:{{value}};}"),j=a(e([".md-{{theme}}-theme",".md-bdr"])+" { border-color:{{value}};}"),k=a(e([".md-{{theme}}-theme",".md-{{hue}}",".md-fg"])+" { color:{{value}};}"),l=a(e([".md-{{theme}}-theme",".md-{{hue}}",".md-bg"])+" { background-color:{{value}};}"),m=a(e([".md-{{theme}}-theme",".md-{{palette}}",".md-fg"])+" { color:{{value}};}"),n=a(e([".md-{{theme}}-theme",".md-{{palette}}",".md-bg"])+" { background-color:{{value}}; color:{{contrast}} !important; }"),o=a(e([".md-{{theme}}-theme",".md-{{palette}}",".md-bdr"])+" { border-color:{{value}};}"),p=a(e([".md-{{theme}}-theme",".md-{{palette}}.md-{{hue}}",".md-fg"])+" { color:{{value}};}"),q=a(e([".md-{{theme}}-theme",".md-{{palette}}.md-{{hue}}",".md-bg"])+" { background-color:{{value}};}"),r=function(){var a=b[0].head.querySelector('style[title="Dynamic-Generated-by-mdColors"]');return null===a&&(a=b[0].createElement("style"),a.title="Dynamic-Generated-by-mdColors",a.appendChild(b[0].createTextNode("")),b[0].head.appendChild(a)),a.sheet}(),s=0;r.cssRules.length>0;)r.deleteRule(0);angular.forEach(c._THEMES,function(a,b){f(h,i,b,"primary",c._PALETTES[a.colors.primary.name][a.colors.primary.hues.default]),f(k,l,b,"primary",c._PALETTES[a.colors.primary.name][a.colors.primary.hues["hue-2"]],"hue-2"),f(k,l,b,"primary",c._PALETTES[a.colors.primary.name][a.colors.primary.hues["hue-3"]],"hue-3"),f(k,l,b,"primary",c._PALETTES[a.colors.primary.name][a.colors.primary.hues["hue-1"]],"hue-1"),g(j,b,"primary",c._PALETTES[a.colors.primary.name][a.colors.primary.hues.default]),angular.forEach(a.colors,function(a,d){f(m,n,b,d,c._PALETTES[a.name][a.hues.default]),g(o,b,d,c._PALETTES[a.name][a.hues.default]),f(p,q,b,d,c._PALETTES[a.name][a.hues["hue-2"]],"hue-2"),f(p,q,b,d,c._PALETTES[a.name][a.hues["hue-3"]],"hue-3"),f(p,q,b,d,c._PALETTES[a.name][a.hues["hue-1"]],"hue-1")})})}var c;angular.module("mdColors",["ngMaterial"]).config(a).run(b),a.$inject=["$mdThemingProvider"],b.$inject=["$interpolate","$document","$log"]}(),function(){"use strict";function a(a){return a.decodeURIComponent}a.$inject=["$window"],angular.module("SOGo.Common").filter("decodeUri",a)}(),function(){"use strict";function a(a){return a.encodeURIComponent}a.$inject=["$window"],angular.module("SOGo.Common").filter("encodeUri",a)}(),function(){"use strict";function a(a){return function(b){var c=angular.element("
"+b+"
");return c.find("a").attr("target","_blank"),a.trustAs("html",c.html())}}a.$inject=["$sce"],angular.module("SOGo.Common").filter("ensureTarget",a)}(),function(){"use strict";function a(){return function(a){return a?String(a).replace(/\r?\n/gm,"
"):void 0}}angular.module("SOGo.Common").filter("ln2br",a)}(),function(){"use strict";function a(){return l}angular.module("SOGo.Common").filter("loc",a)}(),function(){"use strict";function a(){return function(a){for(var b=[],c=0;c",'
',' error_outline'," "+l(c)+"","
",""].join(""),hideDelay:5e3,position:"top right"}):j.debug("untrap error")}var r=new n(m.baseURL(),m.activeUser());b.isPopup=m.isPopup,b.activeUser=m.activeUser(),b.baseURL=m.baseURL(),b.leftIsClose=!i(k["gt-md"]),b.centerIsClose=!!f.centerIsClose&&!b.leftIsClose,b.currentDay=window.currentDay,c(function(){d(function(){e.get("../date").then(function(a){b.currentDay=a})},864e5)},1e3*window.currentDay.secondsBeforeTomorrow),b.toggleLeft=function(){b.isGtMedium?b.leftIsClose=!b.leftIsClose:(b.leftIsClose=p(),b.leftIsClose&&angular.element(f).triggerHandler("resize"),g("left").toggle().then(function(){j.debug("toggle left is done")}))},b.toggleRight=function(){g("right").toggle().then(function(){j.debug("toggle right is done")})},b.toggleCenter=function(a){b.centerIsClose=!b.centerIsClose,a&&a.save&&r.post(null,"saveListState",{state:b.centerIsClose?"collapse":"rise"})},b.$watch(function(){return i(k["gt-md"])},function(a){b.isGtMedium=a,a&&(b.leftIsClose=!1)}),a.$on("http:Error",q),m.activeUser("path").calendar&&o.getAlarms()}a.$inject=["$rootScope","$scope","$timeout","$interval","$http","$window","$mdSidenav","$mdToast","$mdMedia","$log","sgConstant","sgSettings","Resource","Alarm"],angular.module("SOGo.Common").controller("navController",a)}(),function(){"use strict";function a(a){this.folderId=a}a.factory=["$q","$timeout","sgSettings","Resource","User",function(b,c,d,e,f){return angular.extend(a,{$q:b,$timeout:c,$$resource:new e(d.activeUser("folderURL"),d.activeUser()),$User:f}),a}],angular.module("SOGo.Common").factory("Acl",a.factory),a.prototype.$users=function(b){var c,d=this,e=a.$q.defer();if(!this.users){var f;return f=angular.isDefined(b)?a.$$resource.userResource(b).fetch(this.folderId,"acls"):a.$$resource.fetch(this.folderId,"acls"),f.then(function(f){return d.users=[],angular.forEach(f.users,function(e){c=new a.$User(e),c.canSubscribeUser=c.isSubscribed,c.wasSubscribed=c.isSubscribed,c.$rights=angular.bind(c,c.$acl,d.folderId,b),d.users.push(c)}),e.resolve(d.users),d.users})}return e.resolve(this.users),e.promise},a.prototype.$addUser=function(b,c){var d=this,e=a.$q.defer(),f={uid:b.uid};if(!b.uid||_.indexOf(_.map(this.users,"uid"),b.uid)>-1)e.resolve();else{var g;g=angular.isDefined(c)?a.$$resource.userResource(c).fetch(this.folderId,"addUserInAcls",f):a.$$resource.fetch(this.folderId,"addUserInAcls",f),g.then(function(){b.wasSubscribed=!1,b.userClass=b.isGroup?"normal-group":"normal-user",b.$rights=angular.bind(b,b.$acl,d.folderId,c),d.users.push(b),e.resolve(b)},function(a,b){e.reject(l("An error occured please try again."))})}return e.promise},a.prototype.$removeUser=function(b,c){var d,e=this,f={uid:b};return d=angular.isDefined(c)?a.$$resource.userResource(c).fetch(this.folderId,"removeUserFromAcls",f):a.$$resource.fetch(this.folderId,"removeUserFromAcls",f),d.then(function(){var a=_.indexOf(_.map(e.users,"uid"),b);a>=0&&(e.users[a].$shadowRights=null,e.users.splice(a,1))})},a.prototype.$selectAllRights=function(a){_.forEach(a.rights,function(b,c){angular.isNumber(a.rights[c])&&(a.rights[c]=1)})},a.prototype.$resetUsersRights=function(){angular.forEach(this.users,function(a){a.$resetRights()})},a.prototype.$saveUsersRights=function(b){var c=this,d=a.$q.defer(),e=a.$q.defer(),f={action:"saveUserRights"},g=[];if(angular.forEach(this.users,function(a){a.$rightsAreDirty()&&g.push(a.$omit())}),g.length){var h;h=angular.isDefined(b)?a.$$resource.userResource(b).save(this.folderId,g,f):a.$$resource.save(this.folderId,g,f),h.then(function(){angular.forEach(c.users,function(a){a.$rightsAreDirty()&&(a.$shadowRights=angular.copy(a.rights))}),d.resolve()},d.reject)}else d.resolve();return g=[],angular.forEach(this.users,function(a){!a.wasSubscribed&&a.isSubscribed&&g.push(a.uid)}),g.length?(f={uids:g.join(",")},a.$$resource.fetch(this.folderId,"subscribeUsers",f).then(function(){angular.forEach(c.users,function(a){a.wasSubscribed=a.isSubscribed}),e.resolve()},e.reject)):e.resolve(),a.$q.all([d.promise,e.promise])}}(),function(){"use strict";function a(){this.currentAlarm=null}function b(b,c,d,e){return angular.extend(a,{$timeout:b,$$resource:new d(c.activeUser("folderURL")+"Calendar",c.activeUser()),$toast:e}),a}a.getAlarms=function(){var b=this,c=new Date,d=Math.floor(c.getTime()/1e3);this.$$resource.fetch("","alarmslist?browserTime="+d).then(function(c){var d=c.alarms.sort(function(a,b){var c=parseInt(a[2]);return parseInt(b[2])-c});if(d.length>0){var e=d.pop(),f=new Date,g=Math.floor(f.getTime()/1e3),h=e[0]+"/"+e[1],i=parseInt(e[2]),j=i;i>0&&(j-=g);var k=(new Date(1e3*i),angular.bind(b,a.showAlarm,h));b.currentAlarm&&b.$timeout.cancel(b.currentAlarm),b.currentAlarm=b.$timeout(k,1e3*j)}})},a.showAlarm=function(a){var b=this;this.$$resource.fetch(a,"?resetAlarm=yes").then(function(c){function d(a,d,e){a.summary=c.summary,a.reminder="10",a.close=function(){d.hide()},a.snooze=function(){b.$$resource.fetch(e,"view?snoozeAlarm="+a.reminder),d.hide()}}b.$toast.show({position:"top right",hideDelay:0,template:["",'
','
','

{{ summary }}

','
'," ",' ',' ',' ',l("5 minutes")," ",' ',l("10 minutes")," ",' ',l("15 minutes")," ",' ',l("30 minutes")," ",' ',l("45 minutes")," ",' ',l("1 hour")," ",' ',l("1 day")," "," "," ",' ',l("Snooze")," ",' ',l("Close")," ","
","
","
","
"].join(""),locals:{url:a},controller:d}),d.$inject=["scope","$mdToast","url"]})},b.$inject=["$timeout","sgSettings","Resource","$mdToast"],angular.module("SOGo.Common").factory("Alarm",b)}(),function(){"use strict";function a(){function a(a,b){var c,d,e,f,g,h,i;return c=a,b&&(c+="@"+b.value),d=""+window.location.href,e=ApplicationBaseURL+"/"+encodeURIComponent(c),"/"==e[0]&&(g=d.split("/"),h=g[2],i=g[0],e=i+"//"+h+e),g=e.split("/"),g.splice(0,3),f=g.join("/"),!d.startsWith(e)&&!d.startsWith(f)||d.endsWith("/logoff")?e:d}function b(b,c,d,e){function f(){var a,b=null,c=d.get("0xHIGHFLYxSOGo");return c&&c.length>8&&(a=decodeURIComponent(c.substr(8)),b=a.base64decode().split(":")),b}return{login:function(d){var g,h=b.defer(),i=d.username,j=d.password,k=d.domain,m=d.rememberLogin?1:0;return d.loginSuffix&&!i.endsWith(d.loginSuffix)&&(i+=loginSuffix,k=!1),d.language&&"WONoSelectionString"!=d.language&&(g=d.language),c({method:"POST",url:"/SOGo/connect",data:{userName:i,password:j,domain:k,language:g,rememberLogin:m}}).then(function(b){var c=b.data;f()?void 0!==c.expire&&void 0!==c.grace?c.expire<0&&c.grace>0?h.reject({grace:c.grace}):c.expire>0&&-1==c.grace?h.reject({expire:c.expire}):h.resolve({cn:c.cn,url:a(i,k)}):h.resolve(a(i,k)):h.reject(l("cookiesNotEnabled"))},function(a){var b,c,d=a.data;d&&d.LDAPPasswordPolicyError?(c=d.LDAPPasswordPolicyError,b=c==e.PolicyNoError?l("Wrong username or password."):c==e.PolicyAccountLocked?l("Your account was locked due to too many failed attempts."):l("Login failed due to unhandled error case: ")+c):b=l("Unhandled error response"),h.reject({error:b})}),h.promise},changePassword:function(a){var g=b.defer(),h=f(),i=d.get("XSRF-TOKEN");return d.remove("XSRF-TOKEN",{path:"/SOGo/"}),c({method:"POST",url:"/SOGo/so/changePassword",headers:{"X-XSRF-TOKEN":i},data:{userName:h[0],password:h[1],newPassword:a}}).then(g.resolve,function(a){var b,c=a.data,f=c.LDAPPasswordPolicyError;f?f==e.PolicyNoError?b=l("Password change failed"):f==e.PolicyPasswordModNotAllowed?b=l("Password change failed - Permission denied"):f==e.PolicyInsufficientPasswordQuality?b=l("Password change failed - Insufficient password quality"):f==e.PolicyPasswordTooShort?b=l("Password change failed - Password is too short"):f==e.PolicyPasswordTooYoung?b=l("Password change failed - Password is too young"):f==e.PolicyPasswordInHistory?b=l("Password change failed - Password is in history"):(b=l("Unhandled policy error: %{0}").formatted(f),f=e.PolicyPasswordUnknown):(f=e.PolicyPasswordSystemUnknown,b=_("Unhandled error response")),d.put("XSRF-TOKEN",i,{path:"/SOGo/"}),g.reject(b)}),g.promise}}}this.$get=b,b.$inject=["$q","$http","$cookies","passwordPolicyConfig"]}angular.module("SOGo.Authentication",["ngCookies"]).constant("passwordPolicyConfig",{PolicyPasswordChangeUnsupported:-3,PolicyPasswordSystemUnknown:-2,PolicyPasswordUnknown:-1,PolicyPasswordExpired:0,PolicyAccountLocked:1,PolicyChangeAfterReset:2,PolicyPasswordModNotAllowed:3,PolicyMustSupplyOldPassword:4,PolicyInsufficientPasswordQuality:5,PolicyPasswordTooShort:6,PolicyPasswordTooYoung:7,PolicyPasswordInHistory:8,PolicyNoError:65535}).provider("Authentication",a)}(),function(){"use strict";function a(){}function b(b,c){return angular.extend(a,{$q:b,$modal:c}),a}a.alert=function(a,b){var c=this.$modal.alert().title(a).htmlContent(b).ok(l("OK"));this.$modal.show(c)},a.confirm=function(a,b,c){var d=this.$modal.confirm().title(a).htmlContent(b).ok(c&&c.ok?c.ok:l("OK")).cancel(c&&c.cancel?c.cancel:l("Cancel"));return this.$modal.show(d)},a.prompt=function(a,b,c){function d(b,c){b.title=a,b.name="",b.cancel=function(){g.reject(),c.hide()},b.ok=function(){g.resolve(b.name),c.hide()}}var e=c||{},f=a.asCSSIdentifier(),g=this.$q.defer();return this.$modal.show({parent:angular.element(document.body),clickOutsideToClose:!0,escapeToClose:!0,template:['','
',' ','

'," "," ",' '," ","
"," ",' '," "+l("Cancel")," ",' '," "+l("OK")," "," ","
","
"].join(""),controller:d}),d.$inject=["scope","$mdDialog"],g.promise},b.$inject=["$q","$mdDialog"],angular.module("SOGo.Common").factory("Dialog",b)}(),function(){"use strict";function a(){return function(a,b,c,d){var e,f,g,h=b,i=c;return a?(e=a.indexOf("<"),e>=0&&(f=a.indexOf(">",e))>e&&(a=a.substring(e+1,f)),b||(h=48),g=a.md5(),i&&"none"!=i||(c=d&&d.no_404?"mm":"404"),"https://www.gravatar.com/avatar/"+g+"?s="+h+"&d="+c):""}}angular.module("SOGo.Common").factory("Gravatar",a)}(),function(){"use strict";function a(a,b,c,d,e){angular.extend(this,{_http:a,_q:b,_path:c,_activeUser:d}),angular.extend(this,e),this._path=this._path.replace(/\/$/,"")}a.$factory=["$http","$q",function(b,c){return function(d,e,f){return new a(b,c,d,e,f)}}],angular.module("SOGo.Common").factory("Resource",a.$factory),a.prototype.userResource=function(b){var c=_.compact(this._activeUser.folderURL.split("/"));return b&&c.splice(c.length-1,1,escape(b)),new a(this._http,this._q,"/"+c.join("/"),this._activeUser)},a.prototype.path=function(){var a=[this._path];return arguments.length>0&&Array.prototype.push.apply(a,Array.prototype.slice.call(arguments)),a.join("/")},a.prototype.fetch=function(a,b,c){var d=this._q.defer(),e=[this._path];return a&&e.push(a.split("/")),b&&e.push(b),e=_.compact(_.flatten(e)).join("/"),this._http({method:"GET",url:e,params:c}).then(function(a){return d.resolve(a.data)},d.reject),d.promise},a.prototype.newguid=function(a){var b=this._q.defer(),c=this._path+"/"+a+"/newguid";return this._http.get(c).then(function(a){return b.resolve(a.data)},b.reject),b.promise},a.prototype.create=function(a,b){var c=this._q.defer(),d=this._path+"/"+a;return this._http.post(d,{name:b}).then(function(a){return c.resolve(a.data)},c.reject),c.promise},a.prototype.post=function(a,b,c){var d=this._q.defer(),e=[this._path];return a&&e.push(a),b&&e.push(b),e=_.compact(_.flatten(e)).join("/"),this._http.post(e,c).then(function(a){return d.resolve(a.data)},d.reject),d.promise},a.prototype.save=function(a,b,c){var d=c&&c.action?c.action:"save";return this.post(a,d,b)},a.prototype.download=function(a,b,c,d){function e(a){var b;return a?(b=a.split(";")[1].trim().split("=")[1],b.replace(/"/g,"")):null}var f=(this._q.defer(),d&&d.type?d.type:"application/zip"),g=[this._path];return a&&g.push(a),b&&g.push(b),g=_.compact(_.flatten(g)).join("/"),this._http({method:"POST",url:g,data:c,headers:{accept:f},responseType:"arraybuffer",cache:!1,transformResponse:function(a,b,c){var g,h=null;if(c<200||c>299)throw new Error("Bad gateway");if(a&&(h=new Blob([a],{type:f})),d&&d.filename?g=d.filename:e(b("content-disposition")),!saveAs)throw new Error("To use Resource.download, FileSaver.js must be loaded.");saveAs(h,g)}})},a.prototype.remove=function(a){var b=this._q.defer(),c=this._path+"/"+a+"/delete";return this._http.get(c).then(function(a){return b.resolve(a.data)},b.reject),b.promise}}(),function(){"use strict";function a(a,b){return function(c){b(function(){a.$broadcast("sgFocusOn",c)})}}a.$inject=["$rootScope","$timeout"],angular.module("SOGo.Common").factory("sgFocus",a)}(),function(){"use strict";function a(){function a(a,d){var e=function(b){return function(c,d){a.$apply(function(){b.call(this,c,d)}.bind(this))}},f=function(a){this.id=a.id||guid(),this.key=a.key,this.description=a.description||null,this.context=a.context||null,this.callback=a.callback,this.preventInClass=a.preventInClass,this.args=a.args,this.onKeyUp=!1,this.key.length>1&&(this.lkey=l("key_"+this.key))};f.prototype.clone=function(){return new f(this)};var g=function(){this._hotkeys={},this._hotkeysUp={},this._preventIn=["INPUT","SELECT","TEXTAREA","MD-OPTION"],this._preventInClass=["md-chip-content"],this._onKeydown=this._onKeydown.bind(this),this._onKeyup=this._onKeyup.bind(this),this._onKeypress=this._onKeypress.bind(this),this.initialize()};return g.prototype.initialize=function(){this.registerHotkey(this.createHotkey({key:"?",description:l("Show or hide this help"),callback:this._toggleCheatSheet.bind(this)})),d.addEventListener("keydown",this._onKeydown,!0),d.addEventListener("keyup",this._onKeyup,!0),d.addEventListener("keypress",this._onKeypress,!0)},g.prototype._invokeHotkeyHandlers=function(a,b,c){for(var d=0,e=c.length;d=0;c--){var d=a.clone();d.key=a.key[c];var e=this._deregisterHotkey(d);void 0!==e&&b.push(e[0])}else b.push(this._deregisterHotkey(a));return b},g.prototype._validateHotkey=function(a){if(!(a instanceof f))throw new TypeError("Hotkeys: Expected a hotkey object be instance of HotKey")},g.prototype._registerKey=function(a){var b=this._hotkeys;return a.onKeyUp&&(b=this._hotkeysUp),b[a.key]=b[a.key]||[],b[a.key].push(a),a},g.prototype._registerKeys=function(a){var b=[];if(angular.isArray(a.key))for(var c=a.key.length-1;c>=0;c--){var d=a.clone();d.id=guid(),d.key=a.key[c],b.push(this._registerKey(d))}else b.push(this._registerKey(a));return b},g.prototype.registerHotkey=function(a){return this._validateHotkey(a),this._registerKeys(a)},g.prototype.registerHotkeyUp=function(a){this._validateHotkey(a),a.onKeyUp=!0,this._registerKeys(a)},g.prototype.createHotkey=function(a){if(null===a.key||void 0===a.key)throw new TypeError('HotKeys: Argument "key" is required');if(null===a.callback||void 0===a.callback)throw new TypeError('HotKeys: Argument "callback" is required');return a.callback=e(a.callback),new f(a)},g.prototype.match=function(a,b){angular.isArray(b)||(b=[b]);var c=this.keyStringFromEvent(a);return Boolean(~b.indexOf(c))},g.prototype._toggleCheatSheet=function(){function a(a,b){a.hotkeys=b,a.closeDialog=function(){g.$modal.hide()}}var b=this;this._cheatSheet?(g.$modal.hide(),this._cheatSheet=null):this._cheatSheet=g.$modal.show({clickOutsideToClose:!0,escapeToClose:!0,template:[""," "," ",' ','
'," {{keys[0].lkey || hotkey}}","
"," {{keys[0].description}}","
","
","
","
"].join(""),controller:a,locals:{hotkeys:b._hotkeys}}).finally(function(){b._cheatSheet=null}),a.$inject=["$scope","hotkeys"]},g}var b={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"caps",27:"escape",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12"},c={42:"*",63:"?"};this.$get=a,a.$inject=["$rootScope","$window"]}function b(a,b){return angular.extend(b,{$modal:a}),new b}b.$inject=["$mdDialog","$sgHotkeys"],angular.module("SOGo.Common").service("sgHotkeys",b).provider("$sgHotkeys",a)}(),function(){"use strict";function a(a){a&&this.init(a)}a.factory=["$q","$log","sgSettings","Resource",function(b,c,d,e){return angular.extend(a,{$q:b,$log:c,$$resource:new e(d.activeUser("folderURL"),d.activeUser()),$query:"",$users:[]}),a}],angular.module("SOGo.Common").factory("User",a.factory),a.$filter=function(b,c,d){var e=a.$$resource,f={search:b};if(d&&d.dry)d&&d.uid&&(e=a.$$resource.userResource(d.uid));else{if(!b)return a.$users.splice(0,a.$users.length),a.$q.when(a.$users);if(a.$query==b)return a.$q.when(a.$users);a.$query=b}return e.fetch(null,"usersSearch",f).then(function(b){var e,f,g,h,i=function(a){return this.uid==a.uid};for(d?d.dry?h=[]:d.results&&(h=d.results):h=a.$users,e=c?_.filter(b.users,function(a){return!_.find(c,_.bind(i,a))}):b.users,f=h.length-1;f>=0;f--)g=h[f],_.find(e,_.bind(i,g))||h.splice(f,1);return _.forEach(e,function(b,c){if(_.isUndefined(_.find(h,_.bind(i,b)))){var d=new a(b);h.splice(c,0,d)}}),a.$log.debug(h),h})},a.prototype.init=function(a){angular.extend(this,a),this.$$shortFormat||(this.$$shortFormat=this.$shortFormat()),this.$$image||(this.$$image=this.image),this.$avatarIcon=this.$isGroup()||this.$isSpecial()?"group":"person",this.empty=" "},a.prototype.$fullname=function(){var a=this.cn||this.uid;return this.c_info&&(a+=" ("+this.c_info.split("\n").join("; ")+")"),a},a.prototype.$shortFormat=function(a){var b=this.$fullname(),c=this.c_email;return!(a&&!1===a.email)&&c&&b!=c&&(b+=" <"+c+">"),b},a.prototype.$acl=function(b,c){var d=this,e=a.$q.defer(),f={uid:this.uid};if(this.$shadowRights)e.resolve(this.rights);else{var g;g=angular.isDefined(c)?a.$$resource.userResource(c).fetch(b,"userRights",f):a.$$resource.fetch(b,"userRights",f),g.then(function(a){return d.rights=a,d.$shadowRights=angular.copy(a),e.resolve(a),a})}return e.promise},a.prototype.$isGroup=function(){return this.isGroup||this.userClass&&"normal-group"==this.userClass},a.prototype.$isAnonymous=function(){return"anonymous"==this.uid},a.prototype.$isSpecial=function(){return this.userClass&&"public-user"==this.userClass},a.prototype.$confirmRights=function(a){var b=!1 -;return!this.$confirmation&&(_.some(_.values(this.rights))&&("anonymous"==this.uid?"AddressBook"==a.constructor.name?b=l('Potentially anyone on the Internet will be able to access your address book "%{0}", even if they do not have an account on this system. Is this information suitable for the public Internet?',a.name):"Calendar"==a.constructor.name&&(b=l('Potentially anyone on the Internet will be able to access your calendar "%{0}", even if they do not have an account on this system. Is this information suitable for the public Internet?',a.name)):"anyone"!=this.uid&&""!=this.uid||("AddressBook"==a.constructor.name?b=l('Any user with an account on this system will be able to access your address book "%{0}". Are you certain you trust them all?',a.name):"Calendar"==a.constructor.name?b=l('Any user with an account on this system will be able to access your calendar "%{0}". Are you certain you trust them all?',a.name):"Mailbox"==a.constructor.name&&(b=l('Any user with an account on this system will be able to access your mailbox "%{0}". Are you certain you trust them all?',a.name)))),this.$confirmation=b,b)},a.prototype.$rightsAreDirty=function(){return this.rights&&!_.isEqual(this.rights,this.$shadowRights)},a.prototype.$resetRights=function(a){var b=this;a?_.map(_.keys(this.rights),function(a){angular.isString(b.rights[a])?b.rights[a]="None":b.rights[a]=0}):this.$shadowRights&&(this.rights=angular.copy(this.$shadowRights))},a.prototype.$folders=function(b){var c=this,d=a.$q.defer(),e={type:b};return this.$$folders?d.resolve(this.$$folders):a.$$resource.userResource(this.uid).fetch(null,"foldersSearch",e).then(function(a){c.$$folders=a.folders,d.resolve(a.folders)}),d.promise},a.prototype.$omit=function(){var a={};return angular.forEach(this,function(b,c){"constructor"!=c&&"$"!=c[0]&&(a[c]=b)}),a},a.prototype.toString=function(){return"[User "+this.c_email+"]"}}(),function(){"use strict";function a(){function a(a,b,c,d){var e,f=b.find("img"),g=b.find("md-icon"),h=angular.element(g[0]),i=angular.element(g[1]);c.size&&(f.attr("width",c.size),f.attr("height",c.size),h.css("font-size",c.size+"px"),i.css("font-size",parseInt(.4*c.size)+"px")),angular.isDefined(c.ngDisabled)&&(e=a.$watch(c.ngDisabled,function(a){c.disabled&&i.css({display:"block"}),e()})),d.img=f,d.genericImg=h}return{restrict:"AE",scope:{},bindToController:{size:"@",email:"=sgEmail",src:"=sgSrc"},transclude:!0,template:['
'," ",' ',' ',"
"].join(""),link:a,controller:"sgAvatarImageController",controllerAs:"vm"}}function b(a,b,c,d,e,f){function g(a){var b=f(a,k.size,e.defaults.SOGoAlternateAvatar);c({method:"GET",url:b,cache:!0,headers:{Accept:"image/*"}}).then(function(){k.url||(k.url=b,k.urlEmail=a,i())},function(){h()})}function h(){k.url=null,k.urlEmail=null,k.img.addClass("ng-hide"),k.genericImg.removeClass("ng-hide")}function i(){k.genericImg.addClass("ng-hide"),k.img.removeClass("ng-hide")}function j(){b.addClass("sg-avatar-image--zoomable"),l=function(){b.toggleClass("sg-avatar-image--zoom")},b.on("click",l)}var k,l;k=this,a.$on("$destroy",function(){l&&b.off("click",l)}),e.ready().then(function(){a.$watch(function(){return k.email},function(a,b){a&&k.urlEmail!=a?(h(),e.defaults.SOGoGravatarEnabled&&g(a)):a||h()})}),"sg-src"in b[0].attributes&&a.$watch(function(){return k.src},function(a){a&&(k.url=a,k.urlEmail=""+k.email,j(),i())})}b.$inject=["$scope","$element","$http","$q","Preferences","Gravatar"],angular.module("SOGo.Common").directive("sgAvatarImage",a).controller("sgAvatarImageController",b)}(),function(){"use strict";function a(a,b,c,d){function e(e,g){return e.on("click",function(a){this.hasAttribute("disabled")&&a.stopImmediatePropagation()}),function(e,g,h,i){function j(a,b,c,d,e){var f;if(angular.isDefined(d)){if(f=a(d),!f.constant)throw Error("Expected constant expression for `"+c+"`, but saw `"+d+"`.");return f(b)}return e}function k(a){g[0].hasAttribute("disabled")||e.$apply(function(){var b=i.$viewValue==m?n:m;i.$setViewValue(b,a&&a.type),i.$render()})}function l(){i.$viewValue==m?g.addClass(f):g.removeClass(f)}var m=j(a,e,"sgTrueValue",h.sgTrueValue,!0),n=j(a,e,"sgFalseValue",h.sgFalseValue,!1);i=i||d.fakeNgModel(),c(g),b.expectWithText(g,"aria-label"),g.on("click",k),i.$render=l}}var f="sg-checked";return{restrict:"E",replace:!0,transclude:!0,require:"?ngModel",template:['