sogo/UI/WebServerResources/js/Mailer.js.map
2015-08-12 09:43:55 -04:00

1 line
47 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","unseenCount","isread","difference","alert","copySelectedMessages","folder","$copyMessages","saveSelectedMessages","window","location","href","ApplicationBaseURL","join","selectAll","markSelectedMessagesAsFlagged","$flagMessages","d","isflagged","markSelectedMessagesAsUnread","sort","field","sortedBy","$query","cancelSearch","mode","search","newMessage","$event","$newMessage","show","parent","element","document","body","targetEvent","clickOutsideToClose","escapeToClose","locals","stateRecipients","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","$$resource","post","ready","refreshViewCheck","defaults","SOGoRefreshViewCheck","timeInterval","MessageController","Message","doDelete","index","findIndex","splice","showMailEditor","recipients","reply","$reply","replyAll","$replyAll","forward","$forward","edit","$editableContent","recipient","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","union","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.markSelectedMessagesAsFlagged = markSelectedMessagesAsFlagged;\n vm.markSelectedMessagesAsUnread = markSelectedMessagesAsUnread;\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 // Decrement the unseenCount accordingly\n var unseenCount = _.filter(selectedMessages, function(message) { return !message.isread; });\n vm.selectedFolder.$messages = _.difference(vm.selectedFolder.$messages, selectedMessages);\n vm.selectedFolder.unseenCount =- unseenCount;\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 markSelectedMessagesAsFlagged() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n\n vm.selectedFolder.$flagMessages(selectedUIDs, '\\\\Flagged', 'add').then(function(d) {\n // Success\n _.forEach(selectedMessages, function(message) {\n message.isflagged = true;\n });\n });\n }\n\n function markSelectedMessagesAsUnread() {\n var selectedMessages = _.filter(vm.selectedFolder.$messages, function(message) { return message.selected; });\n var selectedUIDs = _.pluck(selectedMessages, 'uid');\n\n vm.selectedFolder.$flagMessages(selectedUIDs, 'seen', 'remove').then(function(d) {\n // Success\n _.forEach(selectedMessages, function(message) {\n message.isread = false;\n vm.selectedFolder.unseenCount++;\n });\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 var message = vm.account.$newMessage();\n\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 stateRecipients: [] \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.newMessage = newMessage;\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, recipients) {\n\n if (!angular.isDefined(recipients))\n recipients = [];\n\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 stateRecipients: recipients\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 newMessage($event, recipient) {\n var message = vm.account.$newMessage();\n showMailEditor($event, message, [recipient]);\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', 'stateRecipients', '$timeout', 'encodeUriFilter', 'sgFocus', 'Dialog', 'Account', 'Mailbox', 'AddressBook', 'Preferences'];\n function MessageEditorController($stateParams, $state, $q, $mdDialog, FileUploader, stateAccounts, stateMessage, stateRecipients, $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 if (angular.isDefined(stateRecipients)) {\n vm.message.editable.to = _.union(vm.message.editable.to, _.pluck(stateRecipients, 'full'));\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"]}