sogo/UI/WebServerResources/js/Mailer.js.map
2015-08-07 10:37:36 -04:00

1 line
44 KiB
Plaintext

{"version":3,"file":"Mailer.js","sources":["Mailer/Mailer.app.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgIMIP.directive.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","views","mailboxes","templateUrl","controller","controllerAs","resolve","stateAccounts","abstract","mailbox","template","stateAccount","mailbox@mail","stateMailbox","stateMessages","message","stateMessage","otherwise","$q","Account","accounts","$findAll","mailAccounts","promises","angular","forEach","account","i","$getMailboxes","push","then","objects","all","$stateParams","_","find","id","accountId","decodeUriFilter","_find","mailboxId","o","path","children","length","$mailboxes","$filter","encodeUriFilter","$state","$messages","messageObject","uid","messageId","selectedMessage","$reload","go","$account","runBlock","$rootScope","$on","event","current","previous","rejection","console","error","module","config","run","$inject","MailboxController","$timeout","$mdDialog","focus","Dialog","Mailbox","selectMessage","unselectMessages","each","vm","selectedFolder","selected","confirmDeleteSelectedMessages","confirm","l","selectedMessages","filter","selectedUIDs","pluck","$deleteMessages","difference","alert","copySelectedMessages","folder","$copyMessages","saveSelectedMessages","window","location","href","ApplicationBaseURL","join","selectAll","sort","field","sortedBy","$query","cancelSearch","mode","search","newMessage","$event","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","locals","$newMessage","this","service","MailboxesController","Settings","User","Preferences","newFolder","parentFolder","prompt","name","$newMailbox","data","status","delegate","MailboxDelegationController","$scope","userFilter","delegates","closeModal","hide","removeUser","user","$removeDelegate","addUser","$addDelegate","userToAdd","searchText","users","editFolder","editMode","revertEditing","$reset","selectFolder","saveFolder","$rename","compactFolder","$compact","emptyTrashFolder","$emptyTrash","exportMails","confirmDelete","$delete","markFolderRead","$markAsRead","share","$acl","$users","usersWithACL","metadataForFolder","type","icon","setFolderAs","$setFolderAs","reload","refreshUnseenCount","unseenCountFolders","includes","$$flattenMailboxes","isDefined","unseenCount","$$resource","post","ready","refreshViewCheck","defaults","SOGoRefreshViewCheck","timeInterval","MessageController","Message","doDelete","index","findIndex","splice","showMailEditor","reply","$reply","replyAll","$replyAll","forward","$forward","edit","$editableContent","viewRawSource","MessageRawSourceDialogController","scope","close","tags","$watchCollection","oldTags","newTags","tag","removeTag","MessageEditorController","FileUploader","AddressBook","cancel","autosave","send","$send","contactFilter","deferred","defer","$filterAll","results","invoke","promise","autosaveDrafts","$save","SOGoMailAutoSave","autocomplete","to","cc","bcc","hideCc","hideBcc","identities","flatten","uploader","$absolutePath","asDraft","autoUpload","alias","onProgressItem","item","progress","debug","onSuccessItem","response","headers","$setUID","JSON","stringify","undefined","onCancelItem","$deleteAttachment","file","removeFromQueue","onErrorItem","actionName","msgObject","editable","localeCode","LocaleCode","sgImip","link","iElement","attrs","ctrl","pathToAttachment","sgImipPath","restrict","sgImipController","delegateInvitation","delegatedTo","iCalendarAction","action","receiveUpdates","c_email","viewer","$imipAction","directive"],"mappings":"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","sourcesContent":["/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* JavaScript for SOGo.MailerUI module */\n\n(function() {\n 'use strict';\n\n angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'ngAnimate', 'SOGo.PreferencesUI'])\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('mail', {\n url: '/Mail',\n views: {\n mailboxes: {\n templateUrl: 'UIxMailMainFrame', // UI/Templates/MailerUI/UIxMailMainFrame.wox\n controller: 'MailboxesController',\n controllerAs: 'app'\n }\n },\n resolve: {\n stateAccounts: stateAccounts\n }\n })\n .state('mail.account', {\n url: '/:accountId',\n abstract: true,\n views: {\n mailbox: {\n template: '<ui-view/>'\n }\n },\n resolve: {\n stateAccount: stateAccount\n }\n })\n .state('mail.account.mailbox', {\n url: '/:mailboxId',\n views: {\n 'mailbox@mail': {\n templateUrl: 'UIxMailFolderTemplate', // UI/Templates/MailerUI/UIxMailFolderTemplate.wox\n controller: 'MailboxController',\n controllerAs: 'mailbox'\n }\n },\n resolve: {\n stateMailbox: stateMailbox,\n stateMessages: stateMessages\n }\n })\n // .state('mail.account.mailbox.newMessage', {\n // url: '/new',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // },\n // resolve: {\n // stateMessage: stateNewMessage\n // }\n // })\n .state('mail.account.mailbox.message', {\n url: '/:messageId',\n views: {\n message: {\n templateUrl: 'UIxMailViewTemplate', // UI/Templates/MailerUI/UIxMailViewTemplate.wox\n controller: 'MessageController',\n controllerAs: 'viewer'\n }\n },\n resolve: {\n stateMessage: stateMessage\n }\n });\n // .state('mail.account.mailbox.message.edit', {\n // url: '/edit',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // },\n // resolve: {\n // stateContent: stateContent\n // }\n // })\n // .state('mail.account.mailbox.message.action', {\n // url: '/{actionName:(?:reply|replyall|forward)}',\n // views: {\n // 'mailbox@mail': {\n // templateUrl: 'UIxMailEditor', // UI/Templates/MailerUI/UIxMailEditor.wox\n // controller: 'MessageEditorController',\n // controllerAs: 'editor'\n // }\n // }\n // });\n\n // if none of the above states are matched, use this as the fallback\n $urlRouterProvider.otherwise('/Mail');\n\n // Set default configuration for tags input\n // tagsInputConfigProvider.setDefaults('tagsInput', {\n // addOnComma: false,\n // replaceSpacesWithDashes: false,\n // allowedTagsPattern: /([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)/i\n // });\n }\n\n /**\n * @ngInject\n */\n stateAccounts.$inject = ['$q', 'Account'];\n function stateAccounts($q, Account) {\n var accounts = Account.$findAll(mailAccounts),\n promises = [];\n // Fetch list of mailboxes for each account\n angular.forEach(accounts, function(account, i) {\n var mailboxes = account.$getMailboxes();\n promises.push(mailboxes.then(function(objects) {\n return account;\n }));\n });\n return $q.all(promises);\n }\n\n /**\n * @ngInject\n */\n stateAccount.$inject = ['$stateParams', 'stateAccounts'];\n function stateAccount($stateParams, stateAccounts) {\n return _.find(stateAccounts, function(account) {\n return account.id == $stateParams.accountId;\n });\n }\n\n /**\n * @ngInject\n */\n stateMailbox.$inject = ['$stateParams', 'stateAccount', 'decodeUriFilter'];\n function stateMailbox($stateParams, stateAccount, decodeUriFilter) {\n var mailboxId = decodeUriFilter($stateParams.mailboxId),\n _find;\n // Recursive find function\n _find = function(mailboxes) {\n var mailbox = _.find(mailboxes, function(o) {\n return o.path == mailboxId;\n });\n if (!mailbox) {\n angular.forEach(mailboxes, function(o) {\n if (!mailbox && o.children && o.children.length > 0) {\n mailbox = _find(o.children);\n }\n });\n }\n return mailbox;\n };\n return _find(stateAccount.$mailboxes);\n }\n\n /**\n * @ngInject\n */\n stateMessages.$inject = ['stateMailbox'];\n function stateMessages(stateMailbox) {\n return stateMailbox.$filter();\n }\n\n /**\n * @ngInject\n */\n // stateNewMessage.$inject = ['stateAccount'];\n // function stateNewMessage(stateAccount) {\n // return stateAccount.$newMessage();\n // }\n\n /**\n * @ngInject\n */\n stateMessage.$inject = ['encodeUriFilter', '$stateParams', '$state', 'stateMailbox', 'stateMessages'];\n function stateMessage(encodeUriFilter, $stateParams, $state, stateMailbox, stateMessages) {\n var message = _.find(stateMailbox.$messages, function(messageObject) {\n return messageObject.uid == $stateParams.messageId;\n });\n\n if (message) {\n stateMailbox.selectedMessage = $stateParams.messageId;\n return message.$reload();\n }\n else {\n // Message not found\n $state.go('mail.account.mailbox', { accountId: stateMailbox.$account.id, mailboxId: encodeUriFilter(stateMailbox.path) });\n }\n }\n\n /**\n * @ngInject\n */\n // stateContent.$inject = ['stateMessage'];\n // function stateContent(stateMessage) {\n // return stateMessage.$editableContent();\n // }\n\n /**\n * @ngInject\n */\n runBlock.$inject = ['$rootScope'];\n function runBlock($rootScope) {\n $rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {\n console.error(event, current, previous, rejection);\n });\n }\n\n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MailboxController.$inject = ['$state', '$timeout', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox'];\n function MailboxController($state, $timeout, $mdDialog, stateAccounts, stateAccount, stateMailbox, encodeUriFilter, focus, Dialog, Account, Mailbox) {\n var vm = this;\n\n Mailbox.selectedFolder = stateMailbox;\n\n vm.service = Mailbox;\n vm.accounts = stateAccounts;\n vm.account = stateAccount;\n vm.selectedFolder = stateMailbox;\n vm.selectMessage = selectMessage;\n vm.unselectMessages = unselectMessages;\n vm.confirmDeleteSelectedMessages = confirmDeleteSelectedMessages;\n vm.copySelectedMessages = copySelectedMessages;\n // vm.moveSelectedMessages = moveSelectedMessages;\n vm.saveSelectedMessages = saveSelectedMessages;\n vm.selectAll = selectAll;\n vm.sort = sort;\n vm.sortedBy = sortedBy;\n vm.cancelSearch = cancelSearch;\n vm.newMessage = newMessage;\n vm.mode = { search: false };\n\n function selectMessage(message) {\n $state.go('mail.account.mailbox.message', {accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path), messageId: message.uid});\n }\n\n function unselectMessages() {\n _.each(vm.selectedFolder.$messages, function(message) { message.selected = false; });\n }\n\n function confirmDeleteSelectedMessages() {\n Dialog.confirm(l('Warning'),\n l('Are you sure you want to delete the selected messages?'))\n .then(function() {\n // User confirmed the deletion\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n vm.selectedFolder.$deleteMessages(selectedUIDs).then(function() {\n vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n });\n }\n\n function copySelectedMessages(folder) {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n vm.selectedFolder.$copyMessages(selectedUIDs, '/' + folder).then(function() {\n // TODO: refresh target mailbox?\n }, function(error) {\n Dialog.alert(l('Error'), error);\n });\n }\n\n // function moveSelectedMessages(folder) {\n // var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected });\n // var selectedUIDs = _.pluck(selectedMessages, 'uid');\n // vm.selectedFolder.$moveMessages(selectedUIDs, '/' + folder).then(function() {\n // // TODO: refresh target mailbox?\n // vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n // });\n // }\n\n function saveSelectedMessages() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/saveMessages?uid=' + selectedUIDs.join(\",\");\n }\n\n function selectAll() {\n _.each(vm.selectedFolder.$messages, function(message) {\n message.selected = true;\n });\n }\n\n function sort(field) {\n vm.selectedFolder.$filter({ sort: field });\n }\n\n function sortedBy(field) {\n return Mailbox.$query.sort == field;\n }\n\n function cancelSearch() {\n vm.mode.search = false;\n vm.selectedFolder.$filter();\n }\n\n function newMessage($event) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: false,\n escapeToClose: false,\n templateUrl: 'UIxMailEditor',\n controller: 'MessageEditorController',\n controllerAs: 'editor',\n locals: {\n stateAccounts: vm.accounts,\n stateMessage: vm.account.$newMessage()\n }\n });\n }\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MailboxController', MailboxController); \n})();\n\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MailboxesController.$inject = ['$state', '$timeout', '$mdDialog', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'User', 'Preferences', 'stateAccounts'];\n function MailboxesController($state, $timeout, $mdDialog, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, User, Preferences, stateAccounts) {\n var vm = this,\n account,\n mailbox;\n\n vm.service = Mailbox;\n vm.accounts = stateAccounts;\n vm.newFolder = newFolder;\n vm.delegate = delegate;\n vm.editFolder = editFolder;\n vm.revertEditing = revertEditing;\n vm.selectFolder = selectFolder;\n vm.saveFolder = saveFolder;\n vm.compactFolder = compactFolder;\n vm.emptyTrashFolder = emptyTrashFolder;\n vm.exportMails = exportMails;\n vm.confirmDelete = confirmDelete;\n vm.markFolderRead = markFolderRead;\n vm.share = share;\n vm.metadataForFolder = metadataForFolder;\n vm.setFolderAs = setFolderAs;\n vm.refreshUnseenCount = refreshUnseenCount;\n\n if ($state.current.name == 'mail' && vm.accounts.length > 0 && vm.accounts[0].$mailboxes.length > 0) {\n // Redirect to first mailbox of first account if no mailbox is selected\n account = vm.accounts[0];\n mailbox = account.$mailboxes[0];\n $state.go('mail.account.mailbox', { accountId: account.id, mailboxId: encodeUriFilter(mailbox.path) });\n }\n\n function newFolder(parentFolder) {\n Dialog.prompt(l('New folder'),\n l('Enter the new name of your folder :'))\n .then(function(name) {\n parentFolder.$newMailbox(parentFolder.id, name)\n .then(function() {\n // success\n }, function(data, status) {\n Dialog.alert(l('An error occured while creating the mailbox \"%{0}\".', name),\n l(data.error));\n });\n });\n }\n\n function delegate(account) {\n $mdDialog.show({\n templateUrl: account.id + '/delegation', // UI/Templates/MailerUI/UIxMailUserDelegation.wox\n controller: MailboxDelegationController,\n controllerAs: 'delegate',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n User: User,\n account: account\n }\n });\n\n /**\n * @ngInject\n */\n MailboxDelegationController.$inject = ['$scope', '$mdDialog', 'User', 'account'];\n function MailboxDelegationController($scope, $mdDialog, User, account) {\n var vm = this;\n\n vm.users = account.delegates;\n vm.account = account;\n vm.userToAdd = '';\n vm.searchText = '';\n vm.userFilter = userFilter;\n vm.closeModal = closeModal;\n vm.removeUser = removeUser;\n vm.addUser = addUser;\n\n function userFilter($query) {\n return User.$filter($query, account.delegates);\n }\n\n function closeModal() {\n $mdDialog.hide();\n }\n\n function removeUser(user) {\n account.$removeDelegate(user.uid).catch(function(data, status) {\n Dialog.alert(l('Warning'), l('An error occured please try again.'));\n });\n }\n\n function addUser(data) {\n if (data) {\n account.$addDelegate(data).then(function() {\n vm.userToAdd = '';\n vm.searchText = '';\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n }\n }\n } // delegate\n\n function editFolder(folder) {\n vm.editMode = folder.path;\n focus('mailboxName_' + folder.path);\n }\n\n function revertEditing(folder) {\n folder.$reset();\n vm.editMode = false;\n }\n\n function selectFolder(account, folder) {\n if (vm.editMode == folder.path)\n return;\n vm.editMode = false;\n $state.go('mail.account.mailbox', { accountId: account.id, mailboxId: encodeUriFilter(folder.path) });\n }\n\n function saveFolder(folder) {\n folder.$rename();\n }\n\n function compactFolder(folder) {\n folder.$compact().then(function() {\n // Success\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function emptyTrashFolder(folder) {\n folder.$emptyTrash().then(function() {\n // Success\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function exportMails(folder) {\n window.location.href = ApplicationBaseURL + '/' + folder.id + '/exportFolder';\n }\n\n function confirmDelete(folder) {\n Dialog.confirm(l('Confirmation'), l('Do you really want to move this folder into the trash ?'))\n .then(function() {\n folder.$delete()\n .then(function() {\n $state.go('mail');\n }, function(data, status) {\n Dialog.alert(l('An error occured while deleting the mailbox \"%{0}\".', folder.name),\n l(data.error));\n });\n });\n }\n\n function markFolderRead(folder) {\n folder.$markAsRead();\n }\n\n function share(folder) {\n // Fetch list of ACL users\n folder.$acl.$users().then(function() {\n // Show ACL editor\n $mdDialog.show({\n templateUrl: folder.id + '/UIxAclEditor', // UI/Templates/UIxAclEditor.wox\n controller: 'AclController', // from the ng module SOGo.Common\n controllerAs: 'acl',\n clickOutsideToClose: true,\n escapeToClose: true,\n locals: {\n usersWithACL: folder.$acl.users,\n User: User,\n folder: folder\n }\n });\n });\n } // share\n\n function metadataForFolder(folder) {\n if (folder.type == 'inbox')\n return {name: folder.name, icon:'inbox'};\n else if (folder.type == 'draft')\n return {name: l('DraftsFolderName'), icon: 'drafts'};\n else if (folder.type == 'sent')\n return {name: l('SentFolderName'), icon: 'send'};\n else if (folder.type == 'trash')\n return {name: l('TrashFolderName'), icon: 'delete'};\n else if (folder.type == 'additional')\n return {name: folder.name, icon: 'folder_shared'};\n\n //if ($rootScope.currentFolder == folder)\n // return 'folder_open';\n\n return {name: folder.name, icon: 'folder'};\n }\n\n function setFolderAs(folder, type) {\n folder.$setFolderAs(type).then(function() {\n folder.$account.$getMailboxes({reload: true});\n }, function(error) {\n Dialog.alert(l('Warning'), error);\n });\n }\n\n function refreshUnseenCount() {\n var unseenCountFolders = window.unseenCountFolders;\n\n _.forEach(vm.accounts, function(account) {\n\n // Always include the INBOX\n if (!_.includes(unseenCountFolders, account.id + '/folderINBOX'))\n unseenCountFolders.push(account.id + '/folderINBOX');\n\n _.forEach(account.$$flattenMailboxes, function(mailbox) {\n if (angular.isDefined(mailbox.unseenCount) &&\n !_.includes(unseenCountFolders, mailbox.id))\n unseenCountFolders.push(mailbox.id);\n });\n });\n\n Account.$$resource.post('', 'unseenCount', {mailboxes: unseenCountFolders}).then(function(data) {\n _.forEach(vm.accounts, function(account) {\n _.forEach(account.$$flattenMailboxes, function(mailbox) {\n if (data[mailbox.id])\n mailbox.unseenCount = data[mailbox.id];\n });\n });\n });\n\n Preferences.ready().then(function() {\n var refreshViewCheck = Preferences.defaults.SOGoRefreshViewCheck;\n if (refreshViewCheck && refreshViewCheck != 'manually')\n $timeout(vm.refreshUnseenCount, refreshViewCheck.timeInterval()*1000);\n });\n }\n\n vm.refreshUnseenCount();\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MailboxesController', MailboxesController); \n})();\n\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MessageController.$inject = ['$scope', '$state', '$mdDialog', 'stateAccounts', 'stateAccount', 'stateMailbox', 'stateMessage', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'Message'];\n function MessageController($scope, $state, $mdDialog, stateAccounts, stateAccount, stateMailbox, stateMessage, encodeUriFilter, focus, Dialog, Account, Mailbox, Message) {\n var vm = this;\n\n vm.accounts = stateAccounts;\n vm.account = stateAccount;\n vm.mailbox = stateMailbox;\n vm.message = stateMessage;\n vm.service = Message;\n vm.tags = { searchText: '', selected: '' };\n vm.doDelete = doDelete;\n vm.reply = reply;\n vm.replyAll = replyAll;\n vm.forward = forward;\n vm.edit = edit;\n vm.viewRawSource = viewRawSource;\n\n // Watch the message model \"flags\" attribute to remove on-the-fly a tag from the IMAP message\n // when removed from the message viewer.\n // TODO: this approach should be reviewed once md-chips supports ng-change.\n $scope.$watchCollection('viewer.message.flags', function(oldTags, newTags) {\n _.each(_.difference(newTags, oldTags), function(tag) {\n vm.message.removeTag(tag);\n });\n });\n\n function doDelete() {\n stateMailbox.$deleteMessages([stateMessage.uid]).then(function() {\n // Remove message from list of messages\n var index = _.findIndex(stateMailbox.$messages, function(o) {\n return o.uid == stateMessage.uid;\n });\n if (index != -1)\n stateMailbox.$messages.splice(index, 1);\n // Remove message object from scope\n vm.message = null;\n $state.go('mail.account.mailbox', { accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path) });\n });\n }\n\n function showMailEditor($event, message) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: false,\n escapeToClose: false,\n templateUrl: 'UIxMailEditor',\n controller: 'MessageEditorController',\n controllerAs: 'editor',\n locals: {\n stateAccounts: vm.accounts,\n stateMessage: message\n }\n });\n }\n\n function reply($event) {\n var message = vm.message.$reply();\n showMailEditor($event, message);\n }\n\n function replyAll($event) {\n var message = vm.message.$replyAll();\n showMailEditor($event, message);\n }\n\n function forward($event) {\n var message = vm.message.$forward();\n showMailEditor($event, message);\n }\n\n function edit($event) {\n vm.message.$editableContent().then(function() {\n showMailEditor($event, vm.message);\n });\n }\n\n function viewRawSource($event) {\n Message.$$resource.post(vm.message.id, \"viewsource\").then(function(data) {\n $mdDialog.show({\n parent: angular.element(document.body),\n targetEvent: $event,\n clickOutsideToClose: true,\n escapeToClose: true,\n template: [\n '<md-dialog flex=\"80\" flex-sm=\"100\" aria-label=\"' + l('View Message Source') + '\">',\n ' <md-dialog-content>',\n ' <pre>',\n data,\n ' </pre>',\n ' </md-dialog-content>',\n ' <div class=\"md-actions\">',\n ' <md-button ng-click=\"close()\">' + l('Close') + '</md-button>',\n ' </div>',\n '</md-dialog>'\n ].join(''),\n controller: MessageRawSourceDialogController\n });\n\n /**\n * @ngInject\n */\n MessageRawSourceDialogController.$inject = ['scope', '$mdDialog'];\n function MessageRawSourceDialogController(scope, $mdDialog) {\n scope.close = function() {\n $mdDialog.hide();\n };\n }\n });\n }\n }\n \n angular\n .module('SOGo.MailerUI') \n .controller('MessageController', MessageController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n 'use strict';\n\n /**\n * @ngInject\n */\n MessageEditorController.$inject = ['$stateParams', '$state', '$q', '$mdDialog', 'FileUploader', 'stateAccounts', 'stateMessage', '$timeout', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'AddressBook', 'Preferences'];\n function MessageEditorController($stateParams, $state, $q, $mdDialog, FileUploader, stateAccounts, stateMessage, $timeout, encodeUriFilter, focus, Dialog, Account, Mailbox, AddressBook, Preferences) {\n var vm = this;\n\n vm.autocomplete = {to: {}, cc: {}, bcc: {}};\n vm.autosave = null;\n vm.autosaveDrafts = autosaveDrafts;\n vm.hideCc = true;\n vm.hideBcc = true;\n vm.cancel = cancel;\n vm.send = send;\n vm.contactFilter = contactFilter;\n vm.identities = _.pluck(_.flatten(_.pluck(stateAccounts, 'identities')), 'full');\n vm.uploader = new FileUploader({\n url: stateMessage.$absolutePath({asDraft: true}) + '/save',\n autoUpload: true,\n alias: 'attachments',\n onProgressItem: function(item, progress) {\n console.debug(item); console.debug(progress);\n },\n onSuccessItem: function(item, response, status, headers) {\n stateMessage.$setUID(response.uid);\n stateMessage.$reload();\n console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2));\n },\n onCancelItem: function(item, response, status, headers) {\n console.debug(item); console.debug('cancel = ' + JSON.stringify(response, undefined, 2));\n\n // We remove the attachment\n stateMessage.$deleteAttachment(item.file.name);\n this.removeFromQueue(item);\n },\n onErrorItem: function(item, response, status, headers) {\n console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));\n }\n });\n\n if ($stateParams.actionName == 'reply') {\n stateMessage.$reply().then(function(msgObject) {\n vm.message = msgObject;\n vm.hideCc = (!msgObject.editable.cc || msgObject.editable.cc.length === 0);\n vm.hideBcc = (!msgObject.editable.bcc || msgObject.editable.bcc.length === 0);\n });\n }\n else if ($stateParams.actionName == 'replyall') {\n stateMessage.$replyAll().then(function(msgObject) {\n vm.message = msgObject;\n vm.hideCc = (!msgObject.editable.cc || msgObject.editable.cc.length === 0);\n vm.hideBcc = (!msgObject.editable.bcc || msgObject.editable.bcc.length === 0);\n });\n }\n else if ($stateParams.actionName == 'forward') {\n stateMessage.$forward().then(function(msgObject) {\n vm.message = msgObject;\n });\n }\n else if (angular.isDefined(stateMessage)) {\n vm.message = stateMessage;\n }\n\n function cancel() {\n // TODO: delete draft?\n if (vm.autosave)\n $timeout.cancel(vm.autosave);\n\n $mdDialog.cancel();\n }\n\n function send() {\n if (vm.autosave)\n $timeout.cancel(vm.autosave);\n\n vm.message.$send().then(function(data) {\n $mdDialog.hide();\n }, function(data) {\n Dialog.alert(l(data.status), l(data.message));\n });\n }\n\n function contactFilter($query) {\n var deferred = $q.defer();\n AddressBook.$filterAll($query).then(function(results) {\n deferred.resolve(_.invoke(results, '$shortFormat', $query));\n });\n return deferred.promise;\n }\n\n // Drafts autosaving\n function autosaveDrafts() {\n vm.message.$save();\n if (Preferences.defaults.SOGoMailAutoSave)\n vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);\n }\n\n // Select list based on user's settings\n Preferences.ready().then(function() {\n if (Preferences.defaults.SOGoMailAutoSave)\n vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);\n vm.localeCode = Preferences.defaults.LocaleCode;\n });\n }\n\n angular\n .module('SOGo.MailerUI') \n .controller('MessageEditorController', MessageEditorController); \n})();\n","/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n\n(function() {\n /* jshint validthis: true */\n 'use strict';\n\n /**\n * sgIMIP - A directive to handle IMIP actions on emails\n * @memberof SOGo.MailerUI\n * @example:\n\n */\n function sgImip() {\n return {\n restrict: 'A',\n link: link,\n controller: 'sgImipController'\n };\n\n function link(scope, iElement, attrs, ctrl) {\n ctrl.pathToAttachment = attrs.sgImipPath;\n }\n }\n\n /**\n * @ngInject\n */\n sgImipController.$inject = ['$scope', 'User'];\n function sgImipController($scope, User) {\n var vm = this;\n\n $scope.delegateInvitation = false;\n $scope.delegatedTo = '';\n $scope.searchText = '';\n\n $scope.userFilter = function($query) {\n return User.$filter($query);\n };\n\n $scope.iCalendarAction = function(action) {\n var data;\n\n if (action == 'delegate') {\n data = {\n receiveUpdates: false,\n delegatedTo: $scope.delegatedTo.c_email\n };\n }\n\n $scope.viewer.message.$imipAction(vm.pathToAttachment, action, data);\n };\n }\n\n angular\n .module('SOGo.MailerUI')\n .controller('sgImipController', sgImipController)\n .directive('sgImip', sgImip);\n})();\n\n"]}