sogo/UI/WebServerResources/js/Mailer.services.js
2015-12-08 12:23:54 -05:00

3 lines
48 KiB
JavaScript

(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<mailbox.children.length;i++){mailbox.children[i].level=level;mailbox.children[i]=new Mailbox(account,mailbox.children[i]);createMailboxes(level+1,mailbox.children[i])}};return futureMailboxData.then(function(data){return Mailbox.$timeout(function(){angular.forEach(data.mailboxes,function(data,index){data.level=0;var mailbox=new Mailbox(account,data);createMailboxes(1,mailbox);collection.push(mailbox)});return collection})})};Mailbox.$absolutePath=function(accountId,mailboxPath){var path=[];if(mailboxPath){path=_.map(mailboxPath.split("/"),function(component){return"folder"+component.asCSSIdentifier()})}path.splice(0,0,accountId);return path.join("/")};Mailbox.prototype.init=function(data){var _this=this;this.$isLoading=true;this.$messages=[];this.uidsMap={};angular.extend(this,data);if(this.path){this.id=this.$id();this.$acl=new Mailbox.$$Acl("Mail/"+this.id)}if(this.type){this.$isEditable=this.isEditable()}if(angular.isUndefined(this.$shadowData)){this.$shadowData=this.$omit()}};Mailbox.prototype.getLength=function(){return this.$messages.length};Mailbox.prototype.getItemAtIndex=function(index){var message;if(index>=0&&index<this.$messages.length){message=this.$messages[index];if(this.$loadMessage(message.uid))return message}return null};Mailbox.prototype.$id=function(){return Mailbox.$absolutePath(this.$account.id,this.path)};Mailbox.prototype.$selectedCount=function(){var count;count=0;if(this.$messages){count=_.filter(this.$messages,function(message){return message.selected}).length}return count};Mailbox.prototype.isSelectedMessage=function(messageId){return this.selectedMessage==messageId};Mailbox.prototype.$filter=function(sortingAttributes,filters){var _this=this,options={};if(!angular.isDefined(this.unseenCount))this.unseenCount=0;this.$isLoading=true;return Mailbox.$Preferences.ready().then(function(){if(Mailbox.$refreshTimeout)Mailbox.$timeout.cancel(Mailbox.$refreshTimeout);if(sortingAttributes)angular.extend(Mailbox.$query,sortingAttributes);angular.extend(options,{sortingAttributes:Mailbox.$query});if(angular.isDefined(filters)){options.filters=_.reject(filters,function(filter){return angular.isUndefined(filter.searchInput)||filter.searchInput.length===0});_.each(options.filters,function(filter){var secondFilter,match=filter.searchBy.match(/(\w+)_or_(\w+)/);if(match){options.sortingAttributes.match="OR";filter.searchBy=match[1];secondFilter=angular.copy(filter);secondFilter.searchBy=match[2];options.filters.push(secondFilter)}})}if(!Mailbox.$virtualMode){var refreshViewCheck=Mailbox.$Preferences.defaults.SOGoRefreshViewCheck;if(refreshViewCheck&&refreshViewCheck!="manually"){var f=angular.bind(_this,Mailbox.prototype.$filter);Mailbox.$refreshTimeout=Mailbox.$timeout(f,refreshViewCheck.timeInterval()*1e3)}}var futureMailboxData=Mailbox.$$resource.post(_this.id,"view",options);return _this.$unwrap(futureMailboxData)})};Mailbox.prototype.$loadMessage=function(messageId){var startIndex=this.uidsMap[messageId],endIndex,max=this.$messages.length,loaded=false,uids,futureHeadersData;if(angular.isDefined(this.uidsMap[messageId])&&startIndex<this.$messages.length){if(angular.isDefined(this.$messages[startIndex].subject)){loaded=true}endIndex=Math.min(startIndex+Mailbox.PRELOAD.LOOKAHEAD,max-1);if(!angular.isDefined(this.$messages[endIndex].subject)&&!angular.isDefined(this.$messages[endIndex].loading)){endIndex=Math.min(startIndex+Mailbox.PRELOAD.SIZE,max);for(uids=[];startIndex<endIndex&&startIndex<max;startIndex++){if(angular.isDefined(this.$messages[startIndex].subject)||this.$messages[startIndex].loading){endIndex++}else{uids.push(this.$messages[startIndex].uid);this.$messages[startIndex].loading=true}}Mailbox.$log.debug("Loading UIDs "+uids.join(" "));futureHeadersData=Mailbox.$$resource.post(this.id,"headers",{uids:uids});this.$unwrapHeaders(futureHeadersData)}}return loaded};Mailbox.prototype.isEditable=function(){return this.type=="folder"};Mailbox.prototype.$rename=function(){var _this=this,findParent,parent,children,i;if(this.name==this.$shadowData.name){return Mailbox.$q.when()}findParent=function(parent,children){var parentMailbox=null,mailbox=_.find(children,function(o){return o.path==_this.path});if(mailbox){parentMailbox=parent}else{angular.forEach(children,function(o){if(!parentMailbox&&o.children&&o.children.length>0){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="<p>"+part.error.replace(/\n/,'</p><p class="md-caption">');formattedMessage=formattedMessage.replace(/\n/g,'</p><p class="md-caption">')+"</p>";_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<elements.length;i++){element=angular.element(elements[i]);value=element.attr("unsafe-"+suffix);element.attr(suffix,value);element.removeAttr("unsafe-"+suffix)}});_this.$hasUnsafeContent=false}part.content=part.unsafeContent.innerHTML}else{part.content=part.safeContent}parts.push(part)}else if(part.type=="UIxMailPartICalViewer"||part.type=="UIxMailPartImageViewer"||part.type=="UIxMailPartLinkViewer"){if(part.participants){_.each(part.participants,function(participant){participant.image=Message.$gravatar(participant.email,32)})}if(part.type=="UIxMailPartImageViewer")part.msgclass="msg-attachment-image";else if(part.type=="UIxMailPartLinkViewer")part.msgclass="msg-attachment-link";part.compile=true;parts.push(part)}else{part.html=true;part.content=part.safeContent;parts.push(part)}}};_visit(this.parts);return parts};Message.prototype.$editableContent=function(){var _this=this;return Message.$$resource.fetch(this.$absolutePath(),"edit").then(function(data){angular.extend(_this,data);return Message.$$resource.fetch(_this.$absolutePath({asDraft:true}),"edit").then(function(data){Message.$log.debug("editable = "+JSON.stringify(data,undefined,2));angular.extend(_this.editable,data);return data.text})})};Message.prototype.addTag=function(tag){return this.$addOrRemoveTag("add",tag)};Message.prototype.removeTag=function(tag){return this.$addOrRemoveTag("remove",tag)};Message.prototype.$addOrRemoveTag=function(operation,tag){var data={operation:operation,msgUIDs:[this.uid],flags:tag};if(tag)return Message.$$resource.post(this.$mailbox.$id(),"addOrRemoveLabel",data)};Message.prototype.$imipAction=function(path,action,data){var _this=this;Message.$$resource.post([this.$absolutePath(),path].join("/"),action,data).then(function(data){Message.$timeout(function(){_this.$reload()},function(){})})};Message.prototype.$sendMDN=function(){this.shouldAskReceipt=0;return Message.$$resource.post(this.$absolutePath(),"sendMDN")};Message.prototype.$deleteAttachment=function(filename){var action="deleteAttachment?filename="+filename;var _this=this;Message.$$resource.post(this.$absolutePath({asDraft:true}),action).then(function(data){Message.$timeout(function(){_this.editable.attachmentAttrs=_.filter(_this.editable.attachmentAttrs,function(attachment){return attachment.filename!=filename})},function(){})})};Message.prototype.toggleFlag=function(){var _this=this,action="markMessageFlagged";if(this.isflagged)action="markMessageUnflagged";return Message.$$resource.post(this.$absolutePath(),action).then(function(data){Message.$timeout(function(){_this.isflagged=!_this.isflagged})})};Message.prototype.$reload=function(options){var futureMessageData;futureMessageData=Message.$$resource.fetch(this.$absolutePath(options),"view");return this.$unwrap(futureMessageData)};Message.prototype.$reply=function(){return this.$newDraft("reply")};Message.prototype.$replyAll=function(){return this.$newDraft("replyall")};Message.prototype.$forward=function(){return this.$newDraft("forward")};Message.prototype.$newDraft=function(action){var _this=this;return Message.$$resource.fetch(this.$absolutePath(),action).then(function(data){var mailbox,message;Message.$log.debug("New "+action+": "+JSON.stringify(data,undefined,2));mailbox=_this.$mailbox.$account.$getMailboxByPath(data.mailboxPath);message=new Message(data.accountId,mailbox,data);return Message.$$resource.fetch(message.$absolutePath({asDraft:true}),"edit").then(function(data){Message.$log.debug("New "+action+": "+JSON.stringify(data,undefined,2)+" original UID: "+_this.uid);angular.extend(message.editable,data);message.origin={message:_this,action:action};return message})})};Message.prototype.$save=function(){var _this=this,data=this.editable;Message.$log.debug("save = "+JSON.stringify(data,undefined,2));return Message.$$resource.save(this.$absolutePath({asDraft:true}),data).then(function(response){Message.$log.debug("save = "+JSON.stringify(response,undefined,2));_this.$setUID(response.uid);_this.$reload({asDraft:false})})};Message.prototype.$send=function(){var _this=this,data=angular.copy(this.editable),deferred=Message.$q.defer();Message.$log.debug("send = "+JSON.stringify(data,undefined,2));Message.$$resource.post(this.$absolutePath({asDraft:true}),"send",data).then(function(data){if(data.status=="success"){deferred.resolve(data);if(angular.isDefined(_this.origin)){if(_this.origin.action.startsWith("reply"))_this.origin.message.isanswered=true;else if(_this.origin.action=="forward")_this.origin.message.isforwarded=true}}else{deferred.reject(data)}});return deferred.promise};Message.prototype.$unwrap=function(futureMessageData){var _this=this;this.$futureMessageData=futureMessageData.then(function(data){if(_this.isread===0){Message.$$resource.fetch(_this.$absolutePath(),"markMessageRead").then(function(){Message.$timeout(function(){_this.isread=true;_this.$mailbox.unseenCount--})})}return Message.$timeout(function(){angular.extend(_this,data);_this.$formatFullAddresses();_this.$loadUnsafeContent=false;return _this})});return this.$futureMessageData};Message.prototype.$omit=function(){var message={};angular.forEach(this,function(value,key){if(key!="constructor"&&key[0]!="$"){message[key]=value}});_.each(["from","to","cc","bcc","reply-to"],function(type){if(message[type])message[type]=_.invoke(message[type].split(","),"trim")});return message}})();(function(){"use strict";function VirtualMailbox(account){this.$account=account}VirtualMailbox.$factory=["$q","$timeout","$log","sgSettings","Message","Mailbox","sgMailbox_PRELOAD",function($q,$timeout,$log,Settings,Mailbox,Message,PRELOAD){angular.extend(VirtualMailbox,{$q:$q,$timeout:$timeout,$log:$log,$Message:Message,selectedFolder:null,PRELOAD:PRELOAD});return VirtualMailbox}];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("VirtualMailbox",VirtualMailbox.$factory);VirtualMailbox.$absolutePath=function(accountId){return[accountId,"virtual"].join("/")};VirtualMailbox.prototype.init=function(data){this.$isLoading=false;this.$mailboxes=[];this.uidsMap={};angular.extend(this,data);this.id=this.$id()};VirtualMailbox.prototype.setMailboxes=function(data){this.$mailboxes=data;_.each(this.$mailboxes,function(mailbox){mailbox.$messages=[];mailbox.uidsMap={}})};VirtualMailbox.prototype.startSearch=function(match,params){var _this=this,search=VirtualMailbox.$q.when();this.$isLoading=true;_.each(this.$mailboxes,function(mailbox){search=search.then(function(){if(_this.$isLoading){VirtualMailbox.$log.debug("searching mailbox "+mailbox.path);return mailbox.$filter({sort:"date",asc:false,match:match},params)}})});search.finally(function(){_this.$isLoading=false})};VirtualMailbox.prototype.stopSearch=function(){VirtualMailbox.$log.debug("stopping search...");this.$isLoading=false};VirtualMailbox.prototype.resetSelectedMessage=function(){_.each(this.$mailboxes,function(mailbox){delete mailbox.selectedMessage})};VirtualMailbox.prototype.isSelectedMessage=function(messageId,mailboxPath){return angular.isDefined(_.find(this.$mailboxes,function(mailbox){return mailbox.path==mailboxPath&&mailbox.selectedMessage==messageId}))};VirtualMailbox.prototype.getLength=function(){var len=0;if(!angular.isDefined(this.$mailboxes))return len;_.each(this.$mailboxes,function(mailbox){len+=mailbox.$messages.length});return len};VirtualMailbox.prototype.getItemAtIndex=function(index){var i,j,k,mailbox,message;if(angular.isDefined(this.$mailboxes)&&index>=0){i=0;for(j=0;j<this.$mailboxes.length;j++){mailbox=this.$mailboxes[j];for(k=0;k<mailbox.$messages.length;i++,k++){message=mailbox.$messages[k];if(i==index){if(mailbox.$loadMessage(message.uid))return message}}}}return null};VirtualMailbox.prototype.$id=function(){return VirtualMailbox.$absolutePath(this.$account.id)};VirtualMailbox.prototype.$selectedCount=function(){return 0};VirtualMailbox.prototype.$flagMessages=function(uids,flags,operation){};VirtualMailbox.prototype.$deleteMessages=function(uids){};VirtualMailbox.prototype.$copyMessages=function(uids,folder){};VirtualMailbox.prototype.$moveMessages=function(uids,folder){}})();(function(){"use strict";MailboxController.$inject=["$state","$timeout","$mdDialog","stateAccounts","stateAccount","stateMailbox","encodeUriFilter","Dialog","Account","Mailbox"];function MailboxController($state,$timeout,$mdDialog,stateAccounts,stateAccount,stateMailbox,encodeUriFilter,Dialog,Account,Mailbox){var vm=this,messageDialog=null;Mailbox.selectedFolder=stateMailbox;vm.service=Mailbox;vm.accounts=stateAccounts;vm.account=stateAccount;vm.selectedFolder=stateMailbox;vm.selectMessage=selectMessage;vm.toggleMessageSelection=toggleMessageSelection;vm.unselectMessages=unselectMessages;vm.confirmDeleteSelectedMessages=confirmDeleteSelectedMessages;vm.copySelectedMessages=copySelectedMessages;vm.saveSelectedMessages=saveSelectedMessages;vm.markSelectedMessagesAsFlagged=markSelectedMessagesAsFlagged;vm.markSelectedMessagesAsUnread=markSelectedMessagesAsUnread;vm.selectAll=selectAll;vm.sort=sort;vm.sortedBy=sortedBy;vm.cancelSearch=cancelSearch;vm.newMessage=newMessage;vm.mode={search:false};function selectMessage(message){if(Mailbox.$virtualMode)$state.go("mail.account.virtualMailbox.message",{accountId:stateAccount.id,mailboxId:encodeUriFilter(message.$mailbox.path),messageId:message.uid});else $state.go("mail.account.mailbox.message",{accountId:stateAccount.id,mailboxId:encodeUriFilter(message.$mailbox.path),messageId:message.uid})}function toggleMessageSelection($event,message){message.selected=!message.selected;$event.preventDefault();$event.stopPropagation()}function unselectMessages(){_.each(vm.selectedFolder.$messages,function(message){message.selected=false})}function confirmDeleteSelectedMessages(){Dialog.confirm(l("Warning"),l("Are you sure you want to delete the selected messages?")).then(function(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected});var selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$deleteMessages(selectedUIDs).then(function(){var unseenCount=_.filter(selectedMessages,function(message){return!message.isread});vm.selectedFolder.$messages=_.difference(vm.selectedFolder.$messages,selectedMessages);vm.selectedFolder.unseenCount=-unseenCount},function(error){Dialog.alert(l("Error"),error)})})}function copySelectedMessages(folder){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected});var selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$copyMessages(selectedUIDs,"/"+folder).then(function(){},function(error){Dialog.alert(l("Error"),error)})}function saveSelectedMessages(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected});var selectedUIDs=_.pluck(selectedMessages,"uid");window.location.href=ApplicationBaseURL+"/"+vm.selectedFolder.id+"/saveMessages?uid="+selectedUIDs.join(",")}function selectAll(){var i=0,length=vm.selectedFolder.$messages.length;for(;i<length;i++)vm.selectedFolder.$messages[i].selected=true}function markSelectedMessagesAsFlagged(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected});var selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$flagMessages(selectedUIDs,"\\Flagged","add").then(function(d){_.forEach(selectedMessages,function(message){message.isflagged=true})})}function markSelectedMessagesAsUnread(){var selectedMessages=_.filter(vm.selectedFolder.$messages,function(message){return message.selected});var selectedUIDs=_.pluck(selectedMessages,"uid");vm.selectedFolder.$flagMessages(selectedUIDs,"seen","remove").then(function(d){_.forEach(selectedMessages,function(message){message.isread=false;vm.selectedFolder.unseenCount++})})}function sort(field){
vm.selectedFolder.$filter({sort:field})}function sortedBy(field){return Mailbox.$query.sort==field}function cancelSearch(){vm.mode.search=false;vm.selectedFolder.$filter()}function newMessage($event){var message;if(messageDialog===null){message=vm.account.$newMessage();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:[]}}).finally(function(){messageDialog=null})}}}angular.module("SOGo.MailerUI").controller("MailboxController",MailboxController)})();(function(){"use strict";MailboxesController.$inject=["$state","$timeout","$mdDialog","$mdMedia","$mdSidenav","sgFocus","encodeUriFilter","Dialog","sgSettings","Account","Mailbox","VirtualMailbox","User","Preferences","stateAccounts"];function MailboxesController($state,$timeout,$mdDialog,$mdMedia,$mdSidenav,focus,encodeUriFilter,Dialog,Settings,Account,Mailbox,VirtualMailbox,User,Preferences,stateAccounts){var vm=this,account,mailbox;vm.service=Mailbox;vm.accounts=stateAccounts;vm.newFolder=newFolder;vm.delegate=delegate;vm.editFolder=editFolder;vm.revertEditing=revertEditing;vm.selectFolder=selectFolder;vm.saveFolder=saveFolder;vm.compactFolder=compactFolder;vm.emptyTrashFolder=emptyTrashFolder;vm.exportMails=exportMails;vm.confirmDelete=confirmDelete;vm.markFolderRead=markFolderRead;vm.share=share;vm.metadataForFolder=metadataForFolder;vm.setFolderAs=setFolderAs;vm.refreshUnseenCount=refreshUnseenCount;vm.showingAdvancedSearch=false;vm.currentSearchParam="";vm.addSearchParam=addSearchParam;vm.newSearchParam=newSearchParam;vm.showAdvancedSearch=showAdvancedSearch;vm.hideAdvancedSearch=hideAdvancedSearch;vm.toggleAdvancedSearch=toggleAdvancedSearch;vm.search={options:{"":l("Select a criteria"),subject:l("Enter Subject"),from:l("Enter From"),to:l("Enter To"),cc:l("Enter Cc"),body:l("Enter Body")},mailbox:"INBOX",subfolders:1,match:"AND",params:[]};if($state.current.name=="mail"&&vm.accounts.length>0&&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<vm.message.attachmentAttrs.length;i++){data={name:vm.message.attachmentAttrs[i].filename,type:vm.message.attachmentAttrs[i].mimetype,size:parseInt(vm.message.attachmentAttrs[i].size)};fileItem=new FileUploader.FileItem(vm.uploader,data);fileItem.progress=100;fileItem.isUploaded=true;fileItem.isSuccess=true;fileItem.inlineUrl=vm.message.attachmentAttrs[i].url;vm.uploader.queue.push(fileItem)}}function removeAttachment(item){if(item.isUploading)vm.uploader.cancelItem(item);else{vm.message.$deleteAttachment(item.file.name);item.remove()}}function cancel(){if(vm.autosave)$timeout.cancel(vm.autosave);$mdDialog.cancel()}function send(){if(vm.autosave)$timeout.cancel(vm.autosave);vm.message.$send().then(function(data){$mdDialog.hide()},function(data){$mdToast.show({controller:"SendMessageToastController",template:["<md-toast>"," <span flex>"+l(data.message)+"</span>",' <md-button class="md-icon-button md-primary" ng-click="closeToast()">'," <md-icon>close</md-icon>"," </md-button>","</md-toast>"].join(""),hideDelay:2e3,position:"top right"})})}function contactFilter($query){return AddressBook.$filterAll($query)}function addRecipient(user){var recipient=[];if(angular.isString(user))return user;if(user.$$fullname)recipient.push(user.$$fullname);if(user.$$email)recipient.push("<"+user.$$email+">");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