(function(){"use strict";function Account(futureAccountData){if(typeof futureAccountData.then!=="function"){angular.extend(this,futureAccountData);_.each(this.identities,function(identity){if(identity.fullName)identity.full=identity.fullName+" <"+identity.email+">";else identity.full="<"+identity.email+">"});Account.$log.debug("Account: "+JSON.stringify(futureAccountData,undefined,2))}else{}}Account.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function($q,$timeout,$log,Settings,Resource,Preferences,Mailbox,Message){angular.extend(Account,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$Preferences:Preferences,$Mailbox:Mailbox,$Message:Message});return Account}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",Account.$factory);Account.$findAll=function(data){if(!data){return Account.$$resource.fetch("","mailAccounts").then(function(o){return Account.$unwrapCollection(o)})}return Account.$unwrapCollection(data)};Account.$unwrapCollection=function(data){var collection=[];angular.forEach(data,function(o,i){o.id=i;collection[i]=new Account(o)});return collection};Account.prototype.$getMailboxes=function(options){var _this=this;if(this.$mailboxes&&!(options&&options.reload)){return Account.$q.when(this.$mailboxes)}else{return Account.$Mailbox.$find(this).then(function(data){_this.$mailboxes=data;Account.$Preferences.ready().then(function(){var expandedFolders,_visit=function(mailboxes){_.forEach(mailboxes,function(o){o.$expanded=expandedFolders.indexOf("/"+o.id)>=0;if(o.children&&o.children.length>0){_visit(o.children)}})};if(Account.$Preferences.settings.Mail.ExpandedFolders){if(angular.isString(Account.$Preferences.settings.Mail.ExpandedFolders))expandedFolders=angular.fromJson(Account.$Preferences.settings.Mail.ExpandedFolders);else expandedFolders=Account.$Preferences.settings.Mail.ExpandedFolders;if(expandedFolders.length>0){_visit(_this.$mailboxes)}}_this.$flattenMailboxes({reload:true})});return _this.$mailboxes})}};Account.prototype.$flattenMailboxes=function(options){var _this=this,allMailboxes=[],expandedMailboxes=[],_visit=function(mailboxes){_.each(mailboxes,function(o){allMailboxes.push(o);if((options&&options.all||o.$expanded)&&o.children&&o.children.length>0){_visit(o.children)}})};if(this.$$flattenMailboxes&&!(options&&(options.reload||options.all))){allMailboxes=this.$$flattenMailboxes}else{_visit(this.$mailboxes);_this.$$flattenMailboxes=allMailboxes;if(options&&options.saveState){_.reduce(allMailboxes,function(expandedFolders,mailbox){if(mailbox.$expanded){expandedFolders.push("/"+mailbox.id)}return expandedFolders},expandedMailboxes);Account.$$resource.post(null,"saveFoldersState",expandedMailboxes)}}return allMailboxes};Account.prototype.$getMailboxByType=function(type){var mailbox,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.type==type});if(!mailbox){angular.forEach(mailboxes,function(o){if(!mailbox&&o.children&&o.children.length>0){mailbox=_find(o.children)}})}return mailbox};mailbox=_find(this.$mailboxes);console.debug(mailbox);console.debug(this.specialMailboxes)};Account.prototype.$getMailboxByPath=function(path){var mailbox=null,_find=function(mailboxes){var mailbox=_.find(mailboxes,function(o){return o.path==path});if(!mailbox){angular.forEach(mailboxes,function(o){if(!mailbox&&o.children&&o.children.length>0){mailbox=_find(o.children)}})}return mailbox};mailbox=_find(this.$mailboxes);return mailbox};Account.prototype.$newMailbox=function(path,name){var _this=this;return Account.$$resource.post(path.toString(),"createFolder",{name:name}).then(function(){_this.$getMailboxes({reload:true})})};Account.prototype.$newMessage=function(){var _this=this;return Account.$$resource.fetch(this.id.toString(),"compose").then(function(data){Account.$log.debug("New message (compose): "+JSON.stringify(data,undefined,2));var message=new Account.$Message(data.accountId,_this.$getMailboxByPath(data.mailboxPath),data);return message}).then(function(message){return Account.$$resource.fetch(message.$absolutePath({asDraft:true}),"edit").then(function(data){Account.$log.debug("New message (edit): "+JSON.stringify(data,undefined,2));angular.extend(message.editable,data);return message})})};Account.prototype.$addDelegate=function(user){var _this=this,deferred=Account.$q.defer(),param={uid:user.uid};if(!user.uid||_.indexOf(_.pluck(this.delegates,"uid"),user.uid)>-1){deferred.resolve()}else{Account.$$resource.fetch(this.id.toString(),"addDelegate",param).then(function(){_this.delegates.push(user);deferred.resolve(_this.users)},function(data,status){deferred.reject(l("An error occured please try again."))})}return deferred.promise};Account.prototype.$removeDelegate=function(uid){var _this=this,param={uid:uid};return Account.$$resource.fetch(this.id.toString(),"removeDelegate",param).then(function(){var i=_.indexOf(_.pluck(_this.delegates,"uid"),uid);if(i>=0){_this.delegates.splice(i,1)}})}})();(function(){"use strict";function Mailbox(account,futureMailboxData){this.$account=account;if(typeof futureMailboxData.then!=="function"){this.init(futureMailboxData);if(this.name&&!this.path){var newMailboxData=Mailbox.$$resource.create("createFolder",this.name);this.$unwrap(newMailboxData)}}else{this.$unwrap(futureMailboxData)}}Mailbox.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function($q,$timeout,$log,Settings,Resource,Message,Acl,Preferences,PRELOAD){angular.extend(Mailbox,{$q:$q,$timeout:$timeout,$log:$log,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser()),$Message:Message,$$Acl:Acl,$Preferences:Preferences,$query:{sort:"date",asc:0},selectedFolder:null,$refreshTimeout:null,$virtualMode:false,PRELOAD:PRELOAD});Preferences.ready().then(function(){if(Preferences.settings.Mail.SortingState){Mailbox.$query.sort=Preferences.settings.Mail.SortingState[0];Mailbox.$query.asc=parseInt(Preferences.settings.Mail.SortingState[1])}});return Mailbox}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMailbox_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("Mailbox",Mailbox.$factory);Mailbox.$find=function(account){var path,futureMailboxData;futureMailboxData=this.$$resource.fetch(account.id.toString(),"view");return Mailbox.$unwrapCollection(account,futureMailboxData)};Mailbox.$unwrapCollection=function(account,futureMailboxData){var collection=[],createMailboxes=function(level,mailbox){for(var i=0;i=0&&index0){parentMailbox=findParent(o,o.children)}})}return parentMailbox};parent=findParent(null,this.$account.$mailboxes);if(parent===null)children=this.$account.$mailboxes;else children=parent.children;i=_.indexOf(_.pluck(children,"id"),this.id);return this.$save().then(function(data){var sibling;angular.extend(_this,data);_this.id=_this.$id();children.splice(i,1);sibling=_.find(children,function(o){Mailbox.$log.debug(o.name+" ? "+_this.name);return o.type=="folder"&&o.name.localeCompare(_this.name)>0});if(sibling){i=_.indexOf(_.pluck(children,"id"),sibling.id)}else{i=children.length}children.splice(i,0,_this)})};Mailbox.prototype.$compact=function(){return Mailbox.$$resource.post(this.id,"expunge")};Mailbox.prototype.$setFolderAs=function(type){return Mailbox.$$resource.post(this.id,"setAs"+type+"Folder")};Mailbox.prototype.$emptyTrash=function(){var _this=this;return Mailbox.$$resource.post(this.id,"emptyTrash").then(function(){_this.$messages=[];_this.uidsMap={};_this.unseenCount=0;if(angular.isDefined(_this.children)&&_this.children.length)_this.$account.$getMailboxes({reload:true})})};Mailbox.prototype.$markAsRead=function(){return Mailbox.$$resource.post(this.id,"markRead")};Mailbox.prototype.$flagMessages=function(uids,flags,operation){var data={msgUIDs:uids,flags:flags,operation:operation};return Mailbox.$$resource.post(this.id,"addOrRemoveLabel",data)};Mailbox.prototype.$delete=function(){var _this=this;return Mailbox.$$resource.remove(this.id).then(function(){_this.$account.$getMailboxes({reload:true});return true})};Mailbox.prototype.$deleteMessages=function(uids){return Mailbox.$$resource.post(this.id,"batchDelete",{uids:uids})};Mailbox.prototype.$copyMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"copyMessages",{uids:uids,folder:folder})};Mailbox.prototype.$moveMessages=function(uids,folder){return Mailbox.$$resource.post(this.id,"moveMessages",{uids:uids,folder:folder})};Mailbox.prototype.$reset=function(){var _this=this;angular.forEach(this,function(value,key){if(key!="constructor"&&key!="children"&&key[0]!="$"){delete _this[key]}});angular.extend(this,this.$shadowData);this.$shadowData=this.$omit()};Mailbox.prototype.$save=function(){var _this=this;return Mailbox.$$resource.save(this.id,this.$omit()).then(function(data){_this.$shadowData=_this.$omit();Mailbox.$log.debug(JSON.stringify(data,undefined,2));return data},function(data){Mailbox.$log.error(JSON.stringify(data,undefined,2));_this.$reset()})};Mailbox.prototype.$newMailbox=function(path,name){return this.$account.$newMailbox(path,name)};Mailbox.prototype.$omit=function(){var mailbox={};angular.forEach(this,function(value,key){if(key!="constructor"&&key!="children"&&key[0]!="$"){mailbox[key]=value}});return mailbox};Mailbox.prototype.$unwrap=function(futureMailboxData){var _this=this,deferred=Mailbox.$q.defer();this.$futureMailboxData=futureMailboxData;this.$futureMailboxData.then(function(data){Mailbox.$timeout(function(){var uids,headers;_this.init(data);if(_this.uids){Mailbox.$log.debug("unwrapping "+data.uids.length+" messages");headers=_.invoke(_this.headers[0],"toLowerCase");_this.headers.splice(0,1);if(_this.threaded){uids=_this.uids[0];_this.uids.splice(0,1)}_.reduce(_this.uids,function(msgs,msg,i){var data;if(_this.threaded)data=_.object(uids,msg);else data={uid:msg.toString()};_this.uidsMap[data.uid]=i;msgs.push(new Mailbox.$Message(_this.$account.id,_this,data,true));return msgs},_this.$messages);_.each(_this.headers,function(data){var msg=_.object(headers,data),i=_this.uidsMap[msg.uid.toString()];_.extend(_this.$messages[i],msg)})}Mailbox.$log.debug("mailbox "+_this.id+" ready");_this.$isLoading=false;deferred.resolve(_this.$messages)})},function(data){angular.extend(_this,data);_this.isError=true;deferred.reject()});return deferred.promise};Mailbox.prototype.$unwrapHeaders=function(futureHeadersData){var _this=this;futureHeadersData.then(function(data){Mailbox.$timeout(function(){var headers,j;if(data.length>0){headers=_.invoke(data[0],"toLowerCase");data.splice(0,1);_.each(data,function(messageHeaders){messageHeaders=_.object(headers,messageHeaders);j=_this.uidsMap[messageHeaders.uid.toString()];if(angular.isDefined(j)){_.extend(_this.$messages[j],messageHeaders)}})}})})}})();(function(){"use strict";function Message(accountId,mailbox,futureMessageData,lazy){this.accountId=accountId;this.$mailbox=mailbox;this.$hasUnsafeContent=false;this.$loadUnsafeContent=false;this.editable={to:[],cc:[],bcc:[]};this.selected=false;if(typeof futureMessageData.then!=="function"){if(angular.isDefined(lazy)&&lazy){this.uid=futureMessageData.uid}else{angular.extend(this,futureMessageData);this.$formatFullAddresses()}}else{this.$unwrap(futureMessageData)}}Message.$factory=["$q","$timeout","$log","sgSettings","Gravatar","Resource","Preferences",function($q,$timeout,$log,Settings,Gravatar,Resource,Preferences){angular.extend(Message,{$q:$q,$timeout:$timeout,$log:$log,$gravatar:Gravatar,$$resource:new Resource(Settings.activeUser("folderURL")+"Mail",Settings.activeUser())});Preferences.ready().then(function(){if(Preferences.defaults.SOGoMailLabelsColors){Message.$tags=Preferences.defaults.SOGoMailLabelsColors}if(Preferences.defaults.SOGoMailDisplayRemoteInlineImages&&Preferences.defaults.SOGoMailDisplayRemoteInlineImages=="always"){Message.$displayRemoteInlineImages=true}});return Message}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Message",Message.$factory);Message.filterTags=function(query){var re=new RegExp(query,"i"),results=[];_.forEach(_.keys(Message.$tags),function(tag){var pair=Message.$tags[tag];if(pair[0].search(re)!=-1){results.push({name:tag,description:pair[0],color:pair[1]})}});return results};Message.prototype.$absolutePath=function(options){if(angular.isUndefined(this.id)||options){var path;path=_.map(this.$mailbox.path.split("/"),function(component){return"folder"+component.asCSSIdentifier()});path.splice(0,0,this.accountId);if(options&&options.asDraft&&this.draftId){path.push(this.draftId)}else{path.push(this.uid)}this.id=path.join("/")}return this.id};Message.prototype.$setUID=function(uid){var oldUID=this.uid||-1;if(oldUID!=parseInt(uid)){this.uid=uid;if(oldUID>-1){oldUID=oldUID.toString();if(angular.isDefined(this.$mailbox.uidsMap[oldUID])){this.$mailbox.uidsMap[uid]=this.$mailbox.uidsMap[oldUID];delete this.$mailbox.uidsMap[oldUID]}}else{if(this.$mailbox.constructor.selectedFolder.type=="draft"){this.$mailbox.constructor.selectedFolder.$filter()}}}};Message.prototype.$formatFullAddresses=function(){var _this=this;var identities=_.pluck(_this.$mailbox.$account.identities,"email");_.each(["from","to","cc","bcc","reply-to"],function(type){_.each(_this[type],function(data,i){if(data.name&&data.name!=data.email){data.full=data.name+" <"+data.email+">";if(data.name.split(" ").length)data.shortname=data.name.split(" ")[0].replace("'","")}else{data.full="<"+data.email+">";data.shortname=data.email.split("@")[0]}data.image=Message.$gravatar(data.email,32);if(_.indexOf(identities,data.email)>=0)data.shortname=l("me")})})};Message.prototype.$shortRecipients=function(){var _this=this;var result=[];_.each(["to","cc","bcc"],function(type){_.each(_this[type],function(data,i){result.push(data.shortname)})});return result.join(", ")};Message.prototype.$shortAddress=function(type){var address="";if(this[type]&&this[type].length>0){address=this[type][0].name||this[type][0].email||""}return address};Message.prototype.allowReplyAll=function(){var recipientsCount=0;recipientsCount=_.reduce(["to","cc"],function(count,type){if(this[type])return count+this[type].length;else return count},recipientsCount,this);return!this.isDraft&&recipientsCount>1};Message.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=true};Message.prototype.$content=function(){var _this=this,parts=[],_visit=function(part){part.msgclass="msg-attachment-other";if(part.type=="UIxMailPartAlternativeViewer"){_visit(_.find(part.content,function(alternatePart){return part.preferredPart==alternatePart.contentType}))}else if(angular.isArray(part.content)){if(part.type=="UIxMailPartSignedViewer"&&part["supports-smime"]===1){var formattedMessage="

"+part.error.replace(/\n/,'

');formattedMessage=formattedMessage.replace(/\n/g,'

')+"

";_this.$smime={validSignature:part.valid,message:formattedMessage}}_.each(part.content,function(mixedPart){_visit(mixedPart)})}else{if(angular.isUndefined(part.safeContent)){part.safeContent=part.content;_this.$hasUnsafeContent|=part.safeContent.indexOf(" unsafe-")>-1}if(part.type=="UIxMailPartHTMLViewer"){part.html=true;if(_this.$loadUnsafeContent||Message.$displayRemoteInlineImages){if(angular.isUndefined(part.unsafeContent)){part.unsafeContent=document.createElement("div");part.unsafeContent.innerHTML=part.safeContent;angular.forEach(["src","data","classid","background","style"],function(suffix){var elements=part.unsafeContent.querySelectorAll("[unsafe-"+suffix+"]"),element,value,i;for(i=0;i=0){i=0;for(j=0;j0&&vm.accounts[0].$mailboxes.length>0){account=vm.accounts[0];mailbox=account.$mailboxes[0];$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(mailbox.path)})}function showAdvancedSearch(path){vm.showingAdvancedSearch=true;vm.search.mailbox=path}function hideAdvancedSearch(){vm.showingAdvancedSearch=false;vm.service.$virtualMode=false;account=vm.accounts[0];mailbox=vm.searchPreviousMailbox;$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(mailbox.path)})}function toggleAdvancedSearch(){if(Mailbox.selectedFolder.$isLoading){vm.virtualMailbox.stopSearch()}else{var root,mailboxes=[],_visit=function(folders){_.each(folders,function(o){mailboxes.push(o);if(o.children&&o.children.length>0){_visit(o.children)}})};vm.virtualMailbox=new VirtualMailbox(vm.accounts[0]);if(!Mailbox.$virtualMode)vm.searchPreviousMailbox=Mailbox.selectedFolder;Mailbox.selectedFolder=vm.virtualMailbox;Mailbox.$virtualMode=true;if(angular.isDefined(vm.search.mailbox)){root=vm.accounts[0].$getMailboxByPath(vm.search.mailbox);mailboxes.push(root);if(vm.search.subfolders&&root.children.length)_visit(root.children)}else{mailboxes=vm.accounts[0].$flattenMailboxes()}vm.virtualMailbox.setMailboxes(mailboxes);vm.virtualMailbox.startSearch(vm.search.match,vm.search.params);$state.go("mail.account.virtualMailbox",{accountId:vm.accounts[0].id})}}function addSearchParam(v){vm.currentSearchParam=v;focus("advancedSearch");return false}function newSearchParam(pattern){if(pattern.length&&vm.currentSearchParam.length){var n=0,searchParam=vm.currentSearchParam;if(pattern.startsWith("!")){n=1;pattern=pattern.substring(1).trim()}vm.currentSearchParam="";return{searchBy:searchParam,searchInput:pattern,negative:n}}}function newFolder(parentFolder){Dialog.prompt(l("New folder"),l("Enter the new name of your folder :")).then(function(name){parentFolder.$newMailbox(parentFolder.id,name).then(function(){},function(data,status){Dialog.alert(l('An error occured while creating the mailbox "%{0}".',name),l(data.error))})})}function delegate(account){$mdDialog.show({templateUrl:account.id+"/delegation",controller:MailboxDelegationController,controllerAs:"delegate",clickOutsideToClose:true,escapeToClose:true,locals:{User:User,account:account}});MailboxDelegationController.$inject=["$scope","$mdDialog","User","account"];function MailboxDelegationController($scope,$mdDialog,User,account){var vm=this;vm.users=account.delegates;vm.account=account;vm.userToAdd="";vm.searchText="";vm.userFilter=userFilter;vm.closeModal=closeModal;vm.removeUser=removeUser;vm.addUser=addUser;function userFilter($query){return User.$filter($query,account.delegates)}function closeModal(){$mdDialog.hide()}function removeUser(user){account.$removeDelegate(user.uid).catch(function(data,status){Dialog.alert(l("Warning"),l("An error occured please try again."))})}function addUser(data){if(data){account.$addDelegate(data).then(function(){vm.userToAdd="";vm.searchText=""},function(error){Dialog.alert(l("Warning"),error)})}}}}function editFolder(folder){vm.editMode=folder.path;focus("mailboxName_"+folder.path)}function revertEditing(folder){folder.$reset();vm.editMode=false}function selectFolder(account,folder){if(vm.editMode==folder.path)return;vm.editMode=false;vm.showingAdvancedSearch=false;vm.service.$virtualMode=false;if($mdMedia("sm"))$mdSidenav("left").close();$state.go("mail.account.mailbox",{accountId:account.id,mailboxId:encodeUriFilter(folder.path)})}function saveFolder(folder){folder.$rename().then(function(data){vm.editMode=false},function(data,status){Dialog.alert(l("Warning"),data)})}function compactFolder(folder){folder.$compact().then(function(){},function(error){Dialog.alert(l("Warning"),error)})}function emptyTrashFolder(folder){folder.$emptyTrash().then(function(){},function(error){Dialog.alert(l("Warning"),error)})}function exportMails(folder){window.location.href=ApplicationBaseURL+"/"+folder.id+"/exportFolder"}function confirmDelete(folder){Dialog.confirm(l("Confirmation"),l("Do you really want to move this folder into the trash ?")).then(function(){folder.$delete().then(function(){$state.go("mail")},function(data,status){Dialog.alert(l('An error occured while deleting the mailbox "%{0}".',folder.name),l(data.error))})})}function markFolderRead(folder){folder.$markAsRead()}function share(folder){folder.$acl.$users().then(function(){$mdDialog.show({templateUrl:folder.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:true,escapeToClose:true,locals:{usersWithACL:folder.$acl.users,User:User,folder:folder}})})}function metadataForFolder(folder){if(folder.type=="inbox")return{name:folder.name,icon:"inbox"};else if(folder.type=="draft")return{name:l("DraftsFolderName"),icon:"drafts"};else if(folder.type=="sent")return{name:l("SentFolderName"),icon:"send"};else if(folder.type=="trash")return{name:l("TrashFolderName"),icon:"delete"};else if(folder.type=="additional")return{name:folder.name,icon:"folder_shared"};return{name:folder.name,icon:"folder_open"}}function setFolderAs(folder,type){folder.$setFolderAs(type).then(function(){folder.$account.$getMailboxes({reload:true})},function(error){Dialog.alert(l("Warning"),error)})}function refreshUnseenCount(){var unseenCountFolders=window.unseenCountFolders;_.forEach(vm.accounts,function(account){if(!_.includes(unseenCountFolders,account.id+"/folderINBOX"))unseenCountFolders.push(account.id+"/folderINBOX");_.forEach(account.$$flattenMailboxes,function(mailbox){if(angular.isDefined(mailbox.unseenCount)&&!_.includes(unseenCountFolders,mailbox.id))unseenCountFolders.push(mailbox.id)})});Account.$$resource.post("","unseenCount",{mailboxes:unseenCountFolders}).then(function(data){_.forEach(vm.accounts,function(account){_.forEach(account.$$flattenMailboxes,function(mailbox){if(data[mailbox.id])mailbox.unseenCount=data[mailbox.id]})})});Preferences.ready().then(function(){var refreshViewCheck=Preferences.defaults.SOGoRefreshViewCheck;if(refreshViewCheck&&refreshViewCheck!="manually")$timeout(vm.refreshUnseenCount,refreshViewCheck.timeInterval()*1e3)})}vm.refreshUnseenCount()}angular.module("SOGo.MailerUI").controller("MailboxesController",MailboxesController)})();(function(){"use strict";MessageController.$inject=["$window","$scope","$state","$mdDialog","stateAccounts","stateAccount","stateMailbox","stateMessage","encodeUriFilter","sgSettings","sgFocus","Dialog","Account","Mailbox","Message"];function MessageController($window,$scope,$state,$mdDialog,stateAccounts,stateAccount,stateMailbox,stateMessage,encodeUriFilter,sgSettings,focus,Dialog,Account,Mailbox,Message){var vm=this,messageDialog=null,popupWindow=null;vm.accounts=stateAccounts;vm.account=stateAccount;vm.mailbox=stateMailbox;vm.message=stateMessage;vm.service=Message;vm.tags={searchText:"",selected:""};vm.showFlags=stateMessage.flags&&stateMessage.flags.length>0;vm.$showDetailedRecipients=false;vm.showDetailedRecipients=showDetailedRecipients;vm.doDelete=doDelete;vm.close=close;vm.reply=reply;vm.replyAll=replyAll;vm.forward=forward;vm.edit=edit;vm.openPopup=openPopup;vm.closePopup=closePopup;vm.newMessage=newMessage;vm.saveMessage=saveMessage;vm.toggleRawSource=toggleRawSource;vm.showRawSource=false;$scope.$watchCollection("viewer.message.flags",function(oldTags,newTags){_.each(_.difference(newTags,oldTags),function(tag){vm.message.removeTag(tag)})});function showDetailedRecipients($event){vm.$showDetailedRecipients=true;$event.stopPropagation();$event.preventDefault()}function doDelete(){stateMailbox.$deleteMessages([stateMessage.uid]).then(function(){var index=_.findIndex(stateMailbox.$messages,function(o){return o.uid==stateMessage.uid});if(index!=-1)stateMailbox.$messages.splice(index,1);vm.message=null;$state.go("mail.account.mailbox",{accountId:stateAccount.id,mailboxId:encodeUriFilter(stateMailbox.path)})})}function showMailEditor($event,message,recipients){if(messageDialog===null){if(!angular.isDefined(recipients))recipients=[];messageDialog=$mdDialog.show({parent:angular.element(document.body),targetEvent:$event,clickOutsideToClose:false,escapeToClose:false,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccounts:vm.accounts,stateMessage:message,stateRecipients:recipients}}).finally(function(){messageDialog=null})}}function close(){$state.go("mail.account.mailbox",{accountId:stateAccount.id,mailboxId:encodeUriFilter(stateMailbox.path)}).then(function(){vm.message=null;delete stateMailbox.selectedMessage})}function reply($event){var message=vm.message.$reply();showMailEditor($event,message)}function replyAll($event){var message=vm.message.$replyAll();showMailEditor($event,message)}function forward($event){var message=vm.message.$forward();showMailEditor($event,message)}function edit($event){vm.message.$editableContent().then(function(){showMailEditor($event,vm.message)})}function openPopup(){var url=[sgSettings.baseURL(),"UIxMailPopupView#/Mail",vm.message.accountId,encodeUriFilter(encodeUriFilter(vm.message.$mailbox.path)),vm.message.uid].join("/"),wId=vm.message.$absolutePath();popupWindow=$window.open(url,wId,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}function closePopup(){$window.close()}function newMessage($event,recipient){var message=vm.account.$newMessage();showMailEditor($event,message,[recipient]);$event.stopPropagation();$event.preventDefault()}function saveMessage(){window.location.href=ApplicationBaseURL+"/"+vm.mailbox.id+"/saveMessages?uid="+vm.message.uid}function toggleRawSource($event){if(!vm.showRawSource&&!vm.rawSource){Message.$$resource.post(vm.message.id,"viewsource").then(function(data){vm.rawSource=data;vm.showRawSource=true})}else{vm.showRawSource=!vm.showRawSource}}}angular.module("SOGo.MailerUI").controller("MessageController",MessageController)})();(function(){"use strict";MessageEditorController.$inject=["$stateParams","$mdDialog","$mdToast","FileUploader","stateAccounts","stateMessage","stateRecipients","$timeout","Dialog","AddressBook","Preferences"];function MessageEditorController($stateParams,$mdDialog,$mdToast,FileUploader,stateAccounts,stateMessage,stateRecipients,$timeout,Dialog,AddressBook,Preferences){var vm=this;vm.addRecipient=addRecipient;vm.autocomplete={to:{},cc:{},bcc:{}};vm.autosave=null;vm.autosaveDrafts=autosaveDrafts;vm.hideCc=true;vm.hideBcc=true;vm.cancel=cancel;vm.send=send;vm.removeAttachment=removeAttachment;vm.contactFilter=contactFilter;vm.identities=_.pluck(_.flatten(_.pluck(stateAccounts,"identities")),"full");vm.uploader=new FileUploader({url:stateMessage.$absolutePath({asDraft:true})+"/save",autoUpload:true,alias:"attachments",removeAfterUpload:false,onSuccessItem:function(item,response,status,headers){stateMessage.$setUID(response.uid);stateMessage.$reload({asDraft:false});item.inlineUrl=response.lastAttachmentAttrs[0].url},onCancelItem:function(item,response,status,headers){stateMessage.$deleteAttachment(item.file.name);this.removeFromQueue(item)},onErrorItem:function(item,response,status,headers){}});if($stateParams.actionName=="reply"){stateMessage.$reply().then(function(msgObject){vm.message=msgObject;vm.hideCc=!msgObject.editable.cc||msgObject.editable.cc.length===0;vm.hideBcc=!msgObject.editable.bcc||msgObject.editable.bcc.length===0})}else if($stateParams.actionName=="replyall"){stateMessage.$replyAll().then(function(msgObject){vm.message=msgObject;vm.hideCc=!msgObject.editable.cc||msgObject.editable.cc.length===0;vm.hideBcc=!msgObject.editable.bcc||msgObject.editable.bcc.length===0})}else if($stateParams.actionName=="forward"){stateMessage.$forward().then(function(msgObject){vm.message=msgObject;addAttachments()})}else if(angular.isDefined(stateMessage)){vm.message=stateMessage;addAttachments()}if(angular.isDefined(stateRecipients)){vm.message.editable.to=_.union(vm.message.editable.to,_.pluck(stateRecipients,"full"))}function addAttachments(){var i,data,fileItem;if(vm.message.attachmentAttrs)for(i=0;i");return recipient.join(" ")}function autosaveDrafts(){vm.message.$save();if(Preferences.defaults.SOGoMailAutoSave)vm.autosave=$timeout(vm.autosaveDrafts,Preferences.defaults.SOGoMailAutoSave*1e3*60)}Preferences.ready().then(function(){if(Preferences.defaults.SOGoMailAutoSave)vm.autosave=$timeout(vm.autosaveDrafts,Preferences.defaults.SOGoMailAutoSave*1e3*60);vm.localeCode=Preferences.defaults.LocaleCode})}SendMessageToastController.$inject=["$scope","$mdToast"];function SendMessageToastController($scope,$mdToast){$scope.closeToast=function(){$mdToast.hide()}}angular.module("SOGo.MailerUI").controller("SendMessageToastController",SendMessageToastController).controller("MessageEditorController",MessageEditorController)})();(function(){"use strict";function sgImip(){return{restrict:"A",link:link,controller:"sgImipController"};function link(scope,iElement,attrs,ctrl){ctrl.pathToAttachment=attrs.sgImipPath}}sgImipController.$inject=["$scope","User"];function sgImipController($scope,User){var vm=this;$scope.delegateInvitation=false;$scope.delegatedTo="";$scope.searchText="";$scope.userFilter=function($query){return User.$filter($query)};$scope.iCalendarAction=function(action){var data;if(action=="delegate"){data={receiveUpdates:false,delegatedTo:$scope.delegatedTo.c_email}}$scope.viewer.message.$imipAction(vm.pathToAttachment,action,data)}}angular.module("SOGo.MailerUI").controller("sgImipController",sgImipController).directive("sgImip",sgImip)})();(function(){"use strict";function sgZoomableImage(){return{restrict:"A",link:link};function link(scope,iElement,attrs,ctrl){var parentNode=iElement.parent(),toggleClass;toggleClass=function(event){if(event.target.tagName=="IMG")parentNode.toggleClass("sg-zoom")};iElement.on("click",toggleClass)}}angular.module("SOGo.MailerUI").directive("sgZoomableImage",sgZoomableImage)})(); //# sourceMappingURL=Mailer.services.js.map