!function(){"use strict";function e(t){"function"!=typeof t.then&&(angular.extend(this,t),_.forEach(this.identities,function(e){e.fullName?e.full=e.fullName+" <"+e.email+">":e.full="<"+e.email+">"}),e.$log.debug("Account: "+JSON.stringify(t,void 0,2)))}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(t,n,s,o,a,i,r,l){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new a(o.activeUser("folderURL")+"Mail",o.activeUser()),$Preferences:i,$Mailbox:r,$Message:l}),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",e.$factory),e.$findAll=function(t){return t?e.$unwrapCollection(t):e.$$resource.fetch("","mailAccounts").then(function(t){return e.$unwrapCollection(t)})},e.$unwrapCollection=function(t){var n=[];return angular.forEach(t,function(t,s){t.id=s,n[s]=new e(t)}),e.$accounts=n,n},e.prototype.getLength=function(){return this.$flattenMailboxes().length},e.prototype.getItemAtIndex=function(e){var t;return t=this.$flattenMailboxes(),e>=0&&e=0,e.children&&e.children.length>0&&o(e.children)})};return e.$Preferences.settings.Mail.ExpandedFolders&&(s=angular.isString(e.$Preferences.settings.Mail.ExpandedFolders)?angular.fromJson(e.$Preferences.settings.Mail.ExpandedFolders):e.$Preferences.settings.Mail.ExpandedFolders,n.$expanded=s.indexOf("/"+n.id)>=0,s.length>0&&o(n.$mailboxes)),e.$accounts&&(n.$expanded|=1==e.$accounts.length),n.$flattenMailboxes({reload:!0}),n.$mailboxes}):e.$q.when(this.$mailboxes)},e.prototype.$flattenMailboxes=function(t){var n=this,s=[],o=[],a=function(e){_.forEach(e,function(e){s.push(e),(t&&t.all||e.$expanded)&&e.children&&e.children.length>0&&a(e.children)})};return!this.$$flattenMailboxes||t&&(t.reload||t.all)?(a(this.$mailboxes),t&&t.all||(n.$$flattenMailboxes=s,t&&t.saveState&&(_.forEach(e.$accounts,function(e){e.$expanded&&o.push("/"+e.id),_.reduce(e.$$flattenMailboxes,function(e,t){return t.$expanded&&e.push("/"+t.id),e},o)}),e.$$resource.post(null,"saveFoldersState",o)))):s=this.$$flattenMailboxes,s},e.prototype.$getMailboxByType=function(e){var t=function(n){var s=_.find(n,function(t){return t.type==e});return s||angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e.children))}),s};return t(this.$mailboxes)},e.prototype.$getMailboxByPath=function(e){var t=function(n){var s=_.find(n,function(t){return t.path==e});return s||angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e.children))}),s};return t(this.$mailboxes)},e.prototype.$newMailbox=function(t,n){var s=this;return e.$$resource.post(t.toString(),"createFolder",{name:n}).then(function(){s.$getMailboxes({reload:!0})})},e.prototype.updateQuota=function(e){var t,n;t=Math.round(1e4*e.usedSpace/e.maxQuota)/100,n=l("quotasFormat").formatted(t,Math.round(e.maxQuota/10.24)/100),this.$quota={percent:t,description:n}},e.prototype.$newMessage=function(){var t=this;return e.$$resource.fetch(this.id.toString(),"compose").then(function(n){return e.$log.debug("New message (compose): "+JSON.stringify(n,void 0,2)),new e.$Message(n.accountId,t.$getMailboxByPath(n.mailboxPath),n)}).then(function(t){return e.$$resource.fetch(t.$absolutePath({asDraft:!0}),"edit").then(function(n){return e.$log.debug("New message (edit): "+JSON.stringify(n,void 0,2)),angular.extend(t.editable,n),t.isNew=!0,t})})},e.prototype.$addDelegate=function(t){var n=this,s=e.$q.defer(),o={uid:t.uid};return!t.uid||_.indexOf(_.map(this.delegates,"uid"),t.uid)>-1?s.resolve():e.$$resource.fetch(this.id.toString(),"addDelegate",o).then(function(){n.delegates.push(t),s.resolve(n.users)},function(e,t){s.reject(l("An error occured please try again."))}),s.promise},e.prototype.$removeDelegate=function(t){var n=this,s={uid:t};return e.$$resource.fetch(this.id.toString(),"removeDelegate",s).then(function(){var e=_.indexOf(_.map(n.delegates,"uid"),t);e>=0&&n.delegates.splice(e,1)})}}(),function(){"use strict";function e(t,n){if(this.$account=t,"function"!=typeof n.then){if(this.init(n),this.name&&!this.path){var s=e.$$resource.create("createFolder",this.name);this.$unwrap(s)}}else this.$unwrap(n)}e.$factory=["$q","$timeout","$log","sgSettings","Resource","Message","Acl","Preferences","sgMailbox_PRELOAD",function(t,n,s,o,a,i,r,l,c){return angular.extend(e,{$q:t,$timeout:n,$log:s,$$resource:new a(o.activeUser("folderURL")+"Mail",o.activeUser()),$Message:i,$$Acl:r,$Preferences:l,$query:{sort:"arrival",asc:0},selectedFolder:null,$refreshTimeout:null,$virtualMode:!1,$virtualPath:!1,PRELOAD:c}),l.settings.Mail.SortingState&&(e.$query.sort=l.settings.Mail.SortingState[0],e.$query.asc=parseInt(l.settings.Mail.SortingState[1])),e}];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",e.$factory),e.$find=function(t,n){var s;return s=n&&n.all?this.$$resource.fetch(t.id.toString(),"viewAll"):this.$$resource.fetch(t.id.toString(),"view"),e.$unwrapCollection(t,s)},e.$unwrapCollection=function(t,n){var s=[],o=function(n,s){for(var a=0;a=0&&e=0},e.prototype.isNoSelect=function(){return this.flags.indexOf("noselect")>=0},e.prototype.getClassName=function(e){return!1},e.prototype.$rename=function(){var t,n,s,o,a=this;return this.name==this.$shadowData.name?e.$q.when():(t=function(e,n){var s=null;return _.find(n,function(e){return e.path==a.path})?s=e:angular.forEach(n,function(e){!s&&e.children&&e.children.length>0&&(s=t(e,e.children))}),s},n=t(null,this.$account.$mailboxes),s=null===n?this.$account.$mailboxes:n.children,o=_.indexOf(_.map(s,"id"),this.id),this.$save().then(function(t){var n,i=a.path;a.init(t),s.splice(o,1),n=_.find(s,function(t){return e.$log.debug(t.name+" ? "+a.name),"folder"==t.type&&t.name.localeCompare(a.name)>0}),o=n?_.indexOf(_.map(s,"id"),n.id):s.length,s.splice(o,0,a);var r=new RegExp("^"+i),l=function(e){_.forEach(e.children,function(e){e.path=e.path.replace(r,a.path),e.id=e.$id(),l(e)})};l(a)}))},e.prototype.$compact=function(){var t=this;return e.$$resource.post(this.id,"expunge").then(function(e){e.quotas&&t.$account.updateQuota(e.quotas)})},e.prototype.$canFolderAs=function(){return"folder"==this.type&&0===this.level},e.prototype.$setFolderAs=function(t){return e.$$resource.post(this.id,"setAs"+t+"Folder")},e.prototype.$emptyTrash=function(){var t=this;return e.$$resource.post(this.id,"emptyTrash").then(function(e){t.$messages=[],t.uidsMap={},t.unseenCount=0,angular.isDefined(t.children)&&t.children.length&&t.$account.$getMailboxes({reload:!0}),e.quotas&&t.$account.updateQuota(e.quotas)})},e.prototype.$markAsRead=function(){var t=this;return e.$$resource.post(this.id,"markRead").then(function(){t.unseenCount=0,_.forEach(t.$messages,function(e){e.isread=!0})})},e.prototype.$flagMessages=function(t,n,s){var o={msgUIDs:_.map(t,"uid"),flags:n,operation:s};return e.$$resource.post(this.id,"addOrRemoveLabel",o).then(function(){return t})},e.prototype.saveSelectedMessages=function(){var t,n;return t=_.filter(this.$messages,function(e){return e.selected}),n=_.map(t,"uid"),{uids:n},{filename:l("Saved Messages.zip")},e.$$resource.download(this.id,"saveMessages",{uids:n})},e.prototype.exportFolder=function(){var t;return t={filename:this.name+".zip"},e.$$resource.download(this.id,"exportFolder",null,t)},e.prototype.$delete=function(t){var n=this;return e.$$resource.post(this.id,"delete",t).then(function(){return n.$account.$getMailboxes({reload:!0}),!0})},e.prototype.$_deleteMessages=function(e,t){var n,s=this,o=this.$messages.length;return n=_.filter(t,function(e,t){return!e.isread}),this.unseenCount-=n.length,_.forEachRight(this.$messages,function(t,n){var a=_.findIndex(e,function(e){return t.uid==e});a>-1?(e.splice(a,1),delete s.uidsMap[t.uid],t.uid==s.selectedMessage&&delete s.selectedMessage,s.$messages.splice(n,1),nt.uids.length-1)&&(n.$topIndex=0),n.init(t),n.uids&&(e.$log.debug("unwrapping "+n.uids.length+" messages"),a=_.invokeMap(n.headers[0],"toLowerCase"),n.headers.splice(0,1),n.threaded&&(o=n.uids[0],n.uids.splice(0,1)),_.reduce(n.uids,function(t,s,a){var i;return i=n.threaded?_.zipObject(o,s):{uid:s.toString()},n.uidsMap[i.uid]=a,t.push(new e.$Message(n.$account.id,n,i,!0)),t},n.$messages),_.forEach(n.headers,function(e){var t=_.zipObject(a,e),s=n.uidsMap[t.uid.toString()];_.extend(n.$messages[s],t)})),e.$log.debug("mailbox "+n.id+" ready"),n.$isLoading=!1,s.resolve(n.$messages)})},function(e){angular.extend(n,e),n.isError=!0,n.$isLoading=!1,s.reject()}),s.promise},e.prototype.$unwrapHeaders=function(t){var n=this;t.then(function(t){e.$timeout(function(){var e,s;t.length>0&&(e=_.invokeMap(t[0],"toLowerCase"),t.splice(0,1),_.forEach(t,function(t){t=_.zipObject(e,t),s=n.uidsMap[t.uid.toString()],angular.isDefined(s)&&_.extend(n.$messages[s],t)}))})})},e.prototype.$updateSubscribe=function(){var t=this.subscribed?"subscribe":"unsubscribe";e.$$resource.post(this.id,t)}}(),function(){"use strict";function e(e,t,n,s){this.accountId=e,this.$mailbox=t,this.$hasUnsafeContent=!1,this.$loadUnsafeContent=!1,this.editable={to:[],cc:[],bcc:[]},this.selected=!1,"function"!=typeof n.then?(!angular.isUndefined(s)&&s||(angular.extend(this,n),this.$formatFullAddresses()),this.uid=parseInt(n.uid)):this.$unwrap(n)}e.$factory=["$q","$timeout","$log","sgSettings","sgMessage_STATUS","Resource","Preferences",function(t,n,s,o,a,i,r){return angular.extend(e,{STATUS:a,$q:t,$timeout:n,$log:s,$$resource:new i(o.activeUser("folderURL")+"Mail",o.activeUser()),$avatar:angular.bind(r,r.avatar)}),r.defaults.SOGoMailLabelsColors&&(e.$tags=r.defaults.SOGoMailLabelsColors),r.defaults.SOGoMailDisplayRemoteInlineImages&&"always"==r.defaults.SOGoMailDisplayRemoteInlineImages&&(e.$displayRemoteInlineImages=!0),e}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").constant("sgMessage_STATUS",{NOT_LOADED:0,DELAYED_LOADING:1,LOADING:2,LOADED:3,DELAYED_MS:300}).factory("Message",e.$factory),e.filterTags=function(t,n){var s=new RegExp(t,"i"),o=[];return _.forEach(_.keys(e.$tags),function(t){var a=e.$tags[t];-1!=a[0].search(s)&&(_.includes(n,t)||o.push({name:t,description:a[0],color:a[1]}))}),o},e.prototype.$absolutePath=function(t){function n(){var e;return(e=_.map(s.$mailbox.path.split("/"),function(e){return"folder"+e.asCSSIdentifier()})).splice(0,0,s.accountId),e.join("/")}var s=this,o=this.id;return(angular.isUndefined(this.id)||t&&t.nocache)&&(this.id=n()+"/"+this.uid,o=this.id),t&&t.asDraft&&this.draftId&&(o=n()+"/"+this.draftId),t&&t.withResourcePath&&(o=e.$$resource.path(o)),o},e.prototype.$setUID=function(e){var t,n=this.uid||-1,s=this;n!=parseInt(e)&&(this.uid=parseInt(e),this.$absolutePath({nocache:!0}),n>-1?(n=n.toString(),angular.isDefined(this.$mailbox.uidsMap[n])&&(t=this.$mailbox.uidsMap[n],this.$mailbox.uidsMap[e]=t,delete this.$mailbox.uidsMap[n],_.forEach(["from","to","subject"],function(e){s.$mailbox.$messages[t][e]=s[e]}))):this.$mailbox.constructor.selectedFolder&&"draft"==this.$mailbox.constructor.selectedFolder.type&&this.$mailbox.constructor.selectedFolder.$filter())},e.prototype.$formatFullAddresses=function(){var t=this,n=_.map(t.$mailbox.$account.identities,"email");_.forEach(["from","to","cc","bcc","reply-to"],function(s){_.forEach(t[s],function(t){t.name&&t.name!=t.email?(t.full=t.name+" <"+t.email+">",t.name.length<10?t.shortname=t.name:t.name.split(" ").length&&(t.shortname=_.first(_.last(t.name.split(/, */)).split(/ +/)).replace("'",""))):t.email&&(t.full="<"+t.email+">",t.shortname=t.email.split("@")[0]),t.image=e.$avatar(t.email,32),_.indexOf(n,t.email)>=0&&(t.shortname=l("me"))})})},e.prototype.$shortRecipients=function(e){var t=this,n=[],s=0,o=0;return _.forEach(["to","cc","bcc"],function(a){o+=t[a]?t[a].length:0,_.forEach(t[a],function(t,o){se&&n.push(l("and %{0} more...",o-e)),n.join(", ")},e.prototype.$shortAddress=function(e){var t="";return this[e]&&this[e].length>0&&(t=this[e][0].name||this[e][0].email||""),t},e.prototype.allowReplyAll=function(){var e=0;return e=_.reduce(["to","cc"],_.bind(function(e,t){return this[t]?e+this[t].length:e},this),e),!this.isDraft&&e>1},e.prototype.loadUnsafeContent=function(){this.$loadUnsafeContent=!0},e.prototype.$content=function(){var t=this,n=[],s=function(o){if(o.msgclass="msg-attachment-other","UIxMailPartAlternativeViewer"==o.type)s(_.find(o.content,function(e){return o.preferredPart==e.contentType}));else if(angular.isArray(o.content)){if("UIxMailPartSignedViewer"==o.type&&1===o["supports-smime"]){var a="

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

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

')+"

",t.$smime={validSignature:o.valid,message:a}}_.forEach(o.content,function(e){s(e)})}else angular.isUndefined(o.safeContent)&&(o.safeContent=o.content,t.$hasUnsafeContent|=o.safeContent.indexOf(" unsafe-")>-1),"UIxMailPartHTMLViewer"==o.type?(o.html=!0,t.$loadUnsafeContent||e.$displayRemoteInlineImages?(angular.isUndefined(o.unsafeContent)&&(o.unsafeContent=document.createElement("div"),o.unsafeContent.innerHTML=o.safeContent,angular.forEach(["src","data","classid","background","style"],function(e){var t,n,s,a=o.unsafeContent.querySelectorAll("[unsafe-"+e+"]");for(s=0;s0&&this.selectImage(this.selectedIndex-1)}}var o=this,a=e.$mdPanel,i=angular.element(this.message.parts.content[n].content).find("img")[0].src,r=_.filter(this.message.attachmentAttrs,function(e){return 0===e.mimetype.indexOf("image/")}),c=_.findIndex(r,function(e){return e.url.indexOf(i)>=0});angular.element(e.$document[0].body).addClass("sg-image-gallery-backdrop");var u=a.newPanelPosition().absolute(),d=a.newPanelAnimation().openFrom(t.target).duration(100).withAnimation(a.animation.FADE),h={attachTo:angular.element(document.body),locals:{lastIndex:r.length-1,images:r,selectedIndex:c,selectedImage:r[c]},bindToController:!0,controller:s,controllerAs:"$panelCtrl",position:u,animation:d,targetEvent:t,fullscreen:!0,hasBackdrop:!0,template:['','
',' '," arrow_back"," ",' image','
',' '," file_download"," ","
",'
',' '," navigate_before"," ",' ',' '," navigate_next"," ","
",'
','
',' ',"
","
","
"].join(""),trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!0,onOpenComplete:function(){o.show=!0,_.forEach(e.$document.find("sg-image-gallery")[0].getElementsByClassName("sg-image-thumbnail"),function(t){var n=t.children[0];angular.element(n).one("load",function(){n.naturalWidth=0)for(t=0,n=0;n0){var s=_.map(t,"uid");a.push(t);var r=e.$$resource.post(n,"addOrRemoveLabel",_.assign(o,{msgUIDs:s}));i.push(r)}}),e.$q.all(i).then(function(){return _.flatten(a)})},e.prototype.$deleteMessages=function(t){var n=[];return _.forEach(t,function(e,t){if(e.length>0){var s=e[0].$mailbox.$deleteMessages(e);n.push(s)}}),e.$q.all(n)},e.prototype.$markOrUnMarkMessagesAsJunk=function(t){var n=[];return _.forEach(t,function(e,t){if(e.length>0){var s=e[0].$mailbox.$markOrUnMarkMessagesAsJunk(e);n.push(s)}}),e.$q.all(n)},e.prototype.$copyMessages=function(t,n){var s=[];return _.forEach(t,function(e,t){if(e.length>0){var o=e[0].$mailbox.$copyMessages(e,n);s.push(o)}}),e.$q.all(s)},e.prototype.$moveMessages=function(t,n){var s=[];return _.forEach(t,function(e,t){if(e.length>0){var o=e[0].$mailbox.$moveMessages(e,n);s.push(o)}}),e.$q.all(s)}}(),function(){"use strict";function e(e,t,n,s,o,a,i,r,c,u,d,h,g,f,m,p,$){function b(e){e.push(d.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:E.searchMode})),e.push(d.createHotkey({key:l("hotkey_compose"),description:l("Write a new message"),callback:function(e){null===E.messageDialog&&E.newMessage(e)}})),e.push(d.createHotkey({key:l("hotkey_junk"),description:l("Mark the selected messages as junk"),callback:E.markOrUnMarkMessagesAsJunk})),e.push(d.createHotkey({key:"space",description:l("Toggle item"),callback:E.toggleMessageSelection})),e.push(d.createHotkey({key:"shift+space",description:l("Toggle range of items"),callback:E.toggleMessageSelection})),e.push(d.createHotkey({key:"up",description:l("View next item"),callback:M,preventInClass:["sg-mail-part"]})),e.push(d.createHotkey({key:"down",description:l("View previous item"),callback:x,preventInClass:["sg-mail-part"]})),e.push(d.createHotkey({key:"shift+up",description:l("Add next item to selection"),callback:C,preventInClass:["sg-mail-part"]})),e.push(d.createHotkey({key:"shift+down",description:l("Add previous item to selection"),callback:w,preventInClass:["sg-mail-part"]})),e.push(d.createHotkey({key:"backspace",description:l("Delete selected message or folder"),callback:E.confirmDeleteSelectedMessages})),_.forEach(e,function(e){d.registerHotkey(e)})}function v(e){return E.selectedFolder.$compact()}function y(){var t=[g.baseURL(),"UIxMailPopupView#!/Mail",E.account.id,h(h(E.selectedFolder.path)),"new"].join("/"),n=E.selectedFolder.$id()+"/"+Math.random(0,1e3);console.debug(t),e.open(t,n,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}function M(e){var t=E.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t--,E.selectedFolder.$topIndex>0&&E.selectedFolder.$topIndex--):(t=E.selectedFolder.getLength()-1,E.selectedFolder.$topIndex=E.selectedFolder.getLength()),t>-1&&E.selectMessage(E.selectedFolder.$messages[t]),e.preventDefault(),t}function x(e){var t=E.selectedFolder.$selectedMessageIndex();return angular.isDefined(t)?(t++,E.selectedFolder.$topIndex=0&&E.toggleMessageSelection(e,E.selectedFolder.$messages[t])}function w(e){var t;E.selectedFolder.hasSelectedMessage()&&(t=x(e))>=0&&E.toggleMessageSelection(e,E.selectedFolder.$messages[t])}function I(){return $.$virtualMode?E.selectedFolder.$mailboxes:[E.selectedFolder]}function S(e,t){var s,a,i=t;E.mode.multiple=E.selectedFolder.$selectedCount(),e?(t>0&&(i-=1,s=E.selectedFolder.$messages[i]),t1){for(s=(n=a.uidsMap[t.uid])-2;s>=0&&!a.$messages[s].selected;)s--;if(s<0)for(s=n+2;s=0&&s0&&(E.messageDialog=m.confirm(l("Confirmation"),l("Are you sure you want to delete the selected messages?"),{ok:l("Delete")}).then(function(){var e=E.selectedFolder.hasSelectedMessage();E.selectedFolder.$deleteMessages(t).then(function(t){$.$virtualMode?e&&o.go("mail.account.virtualMailbox"):S(e,t)},function(n){E.messageDialog=m.confirm(l("Warning"),l("The messages could not be moved to the trash folder. Would you like to delete them immediately?"),{ok:l("Delete")}).then(function(){E.selectedFolder.$deleteMessages(t,{withoutTrash:!0}).then(function(t){$.$virtualMode?e&&o.go("mail.account.virtualMailbox"):S(e,t)})})})}).finally(function(){E.messageDialog=null})),e.preventDefault()},this.markOrUnMarkMessagesAsJunk=function(){var e=E.selectedFolder.hasSelectedMessage(),t=E.selectedFolder.$selectedMessages();0===_.size(t)&&e&&(t=[E.selectedFolder.$selectedMessage()]),_.size(t)>0&&E.selectedFolder.$markOrUnMarkMessagesAsJunk(t).then(function(){var n="/"+E.account.id+"/folderINBOX";"junk"!=E.selectedFolder.type&&(n="/"+E.account.$getMailboxByType("junk").id),E.selectedFolder.$moveMessages(t,n).then(function(t){$.$virtualMode?e&&o.go("mail.account.virtualMailbox"):S(e,t)})})},this.copySelectedMessages=function(e){var t=E.selectedFolder.$selectedMessages();_.size(t)>0&&E.selectedFolder.$copyMessages(t,"/"+e).then(function(){i.show(i.simple().content(l("%{0} message(s) copied",E.selectedFolder.$selectedCount())).position("top right").hideDelay(2e3))})},this.moveSelectedMessages=function(e){var t=E.selectedFolder.hasSelectedMessage(),n=E.selectedFolder.$selectedMessages(),s=E.selectedFolder.$selectedCount();_.size(n)>0&&E.selectedFolder.$moveMessages(n,"/"+e).then(function(e){i.show(i.simple().content(l("%{0} message(s) moved",s)).position("top right").hideDelay(2e3)),$.$virtualMode?t&&o.go("mail.account.virtualMailbox"):S(t,e)})},this.selectAll=function(){var e=0;_.forEach(I(),function(t){for(var n=0,s=t.$messages.length;n0&&E.selectedFolder.$flagMessages(e,"\\Flagged","add").then(function(e){_.forEach(e,function(e){e.isflagged=!0})})},this.markSelectedMessagesAsUnread=function(){var e=E.selectedFolder.$selectedMessages();_.size(e)>0&&E.selectedFolder.$flagMessages(e,"seen","remove").then(function(e){_.forEach(e,function(e){e.isread&&e.$mailbox.unseenCount++,e.isread=!1})})},this.markSelectedMessagesAsRead=function(){var e=E.selectedFolder.$selectedMessages();_.size(e)>0&&E.selectedFolder.$flagMessages(e,"seen","add").then(function(e){_.forEach(e,function(e){e.isread||e.$mailbox.unseenCount--,e.isread=!0})})}}function t(e){return e[0].controller.prototype.resetScroll=function(){"messagesList"==this.$element.parent().attr("id")?this.updateSize():this.scrollTo(0)},e}e.$inject=["$window","$scope","$timeout","$q","$state","$mdDialog","$mdToast","stateAccounts","stateAccount","stateMailbox","sgHotkeys","encodeUriFilter","sgSettings","sgFocus","Dialog","Account","Mailbox"],angular.module("SOGo.MailerUI").controller("MailboxController",e),t.$inject=["$delegate"],angular.module("material.components.virtualRepeat").decorator("mdVirtualRepeatContainerDirective",t)}(),function(){"use strict";function e(e,t,n,s,o,a,i,r,c,u,d,h,g,f,m,p,$,b){function v(e){e.push(h.createHotkey({key:"backspace",description:l("Delete selected message or folder"),callback:function(){f.selectedFolder&&!f.selectedFolder.hasSelectedMessage()&&confirmDelete(f.selectedFolder)}})),_.forEach(e,function(e){h.registerHotkey(e)})}var y,M,x=this,C=[];this.$onInit=function(){this.service=f,this.accounts=b,this.currentSearchParam="",this.search={options:{"":"",subject:l("Enter Subject"),from:l("Enter From"),to:l("Enter To"),cc:l("Enter Cc"),body:l("Enter Body")},subfolders:1,match:"AND",params:[]},this.showSubscribedOnly=$.defaults.SOGoMailShowSubscribedFoldersOnly,this.refreshUnseenCount(),v(C),e.$on("$destroy",function(){_.forEach(C,function(e){h.deregisterHotkey(e)})})},this.hideAdvancedSearch=function(){x.service.$virtualPath=!1,x.service.$virtualMode=!1,y=x.accounts[0],M=x.searchPreviousMailbox,t.go("mail.account.mailbox",{accountId:y.id,mailboxId:c(M.path)})},this.toggleAdvancedSearch=function(){if(f.selectedFolder.$isLoading)x.virtualMailbox.stopSearch();else{var e,n=[],s=function(e){_.forEach(e,function(e){n.push(e),e.children&&e.children.length>0&&s(e.children)})};x.virtualMailbox=new m(x.accounts[0]),f.$virtualMode||(x.searchPreviousMailbox=f.selectedFolder),f.selectedFolder=x.virtualMailbox,f.$virtualMode=!0,angular.isDefined(f.$virtualPath)?(e=x.accounts[0].$getMailboxByPath(f.$virtualPath),n.push(e),x.search.subfolders&&e.children.length&&s(e.children)):n=x.accounts[0].$flattenMailboxes(),x.virtualMailbox.setMailboxes(n),x.virtualMailbox.startSearch(x.search.match,x.search.params),"mail.account.virtualMailbox"!=t.$current.name&&t.go("mail.account.virtualMailbox",{accountId:x.accounts[0].id})}},this.addSearchParam=function(e){return x.currentSearchParam=e,r("advancedSearch"),!1},this.newSearchParam=function(e){if(e.length&&x.currentSearchParam.length){var t=0,n=x.currentSearchParam;return e.startsWith("!")&&(t=1,e=e.substring(1).trim()),x.currentSearchParam="",{searchBy:n,searchInput:e,negative:t}}},this.toggleAccountState=function(e){e.$expanded=!e.$expanded,e.$flattenMailboxes({reload:!0,saveState:!0}),s(function(){angular.element(o).triggerHandler("resize")},150)},this.subscribe=function(e){function t(e,t,n){function s(){t.hide()}var o=this;o.loading=!0,o.filter={name:""},o.account=new g({id:n.id,name:n.name}),o.close=s,o.account.$getMailboxes({reload:!0,all:!0}).then(function(){o.loading=!1})}a.show({templateUrl:e.id+"/subscribe",controller:t,controllerAs:"subscriptions",clickOutsideToClose:!0,escapeToClose:!0,locals:{srcAccount:e}}).finally(function(){e.$getMailboxes({reload:!0})}),t.$inject=["$scope","$mdDialog","srcAccount"]},this.newFolder=function(e){u.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(t){e.$newMailbox(e.id,t).then(function(){},function(e,n){u.alert(l('An error occured while creating the mailbox "%{0}".',t),l(e.error))})})},this.delegate=function(e){function t(e,t,n,s){function o(e){return n.$filter(e,s.delegates)}function a(){t.hide()}function i(e){s.$removeDelegate(e.uid).catch(function(e,t){u.alert(l("Warning"),l("An error occured please try again."))})}function r(e){e&&s.$addDelegate(e).then(function(){c.userToAdd="",c.searchText=""},function(e){u.alert(l("Warning"),e)})}var c=this;c.users=s.delegates,c.account=s,c.userToAdd="",c.searchText="",c.userFilter=o,c.closeModal=a,c.removeUser=i,c.addUser=r}a.show({templateUrl:e.id+"/delegation",controller:t,controllerAs:"delegate",clickOutsideToClose:!0,escapeToClose:!0,locals:{User:p,account:e}}),t.$inject=["$scope","$mdDialog","User","account"]},this.refreshUnseenCount=function(){var e,t=o.unseenCountFolders;_.forEach(x.accounts,function(e){_.includes(t,e.id+"/folderINBOX")||t.push(e.id+"/folderINBOX"),_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(e.unseenCount)&&!_.includes(t,e.id)&&t.push(e.id)})}),g.$$resource.post("","unseenCount",{mailboxes:t}).then(function(e){_.forEach(x.accounts,function(t){_.forEach(t.$$flattenMailboxes,function(t){e[t.id]&&(t.unseenCount=e[t.id])})})}),(e=$.defaults.SOGoRefreshViewCheck)&&"manually"!=e&&s(x.refreshUnseenCount,1e3*e.timeInterval())},this.isDroppableFolder=function(e,t){return t.id!=e.id&&!t.isNoSelect()},this.dragSelectedMessages=function(e,n,s){var o,a,r,c,u,d;o="/"+n.id,0===(a=e.$selectedMessages()).length&&(a=[e.$selectedMessage()]),r=_.map(a,"uid"),c=e.selectedMessage&&r.indexOf(e.selectedMessage)>=0,"copy"==s?(u=e.$copyMessages(a,o),d=l("%{0} message(s) copied",a.length)):(u=e.$moveMessages(a,o),d=l("%{0} message(s) moved",a.length)),u.then(function(){c&&t.go("mail.account.mailbox"),i.show(i.simple().content(d).position("top right").hideDelay(2e3))})}}e.$inject=["$scope","$state","$transitions","$timeout","$window","$mdDialog","$mdToast","sgFocus","encodeUriFilter","Dialog","sgSettings","sgHotkeys","Account","Mailbox","VirtualMailbox","User","Preferences","stateAccounts"],angular.module("SOGo.MailerUI").controller("MailboxesController",e)}(),function(){"use strict";function e(e,t,n,s,o,a,i,r,c,u,d,h,g,f,m,p,$,b,v,y,M){function x(){return t.mailbox?(arguments.length>0&&(t.mailbox.messageDialog=arguments[0]),t.mailbox.messageDialog):null}function C(e){return function(){if(null===x())return e.apply(q,arguments)}}function w(){var t,n,s={};return e.opener&&e.opener.$mailboxController&&e.opener.$mailboxController.selectedFolder.$id()==c.$id()&&(n=e.opener.$mailboxController,s.mailboxCtrl=n,e.opener.$messageController&&e.opener.$messageController.message.uid==u.uid&&(t=e.opener.$messageController,s.messageCtrl=t)),s}function I(e){q.$showDetailedRecipients=!q.$showDetailedRecipients,e.stopPropagation(),e.preventDefault()}function S(e){var t,n,s,o;"A"==e.target.tagName&&"href"in e.target.attributes&&(t=e.target.attributes.href.value,(n=/^mailto:([^\?]+)/.exec(t))&&(s=_.map(decodeURIComponent(n[1]).split(","),function(e){return"<"+e+">"}),o={to:s},_.forEach(["subject","body"],function(e){var s=new RegExp(e+"=([^&]+)");e="body"==e?"text":e,(n=s.exec(t))&&(o[e]=[decodeURIComponent(n[1])])}),_.forEach(["cc","bcc"],function(e){var s=new RegExp(e+"=([^&]+)");(n=s.exec(t))&&(o[e]=[decodeURIComponent(n[1])])}),P(e,o)))}function E(){var e,t,o,i,r,l=w();l.messageCtrl?(e=l.mailboxCtrl.selectedFolder,t=l.messageCtrl.message,o=l.messageCtrl.$state):(e=c,t=u,o=n),e.$deleteMessages([t]).then(function(n){var l=n;if(t=null,angular.isDefined(o)){n>0&&(l-=1,i=e.$messages[l]),ne.$lastVisibleIndex&&(e.$topIndex=l-(e.$lastVisibleIndex-e.$topIndex))):o.go("mail.account.mailbox").then(function(){t=null,delete e.selectedMessage})}catch(e){}}T()})}function k(e,t){null===x()&&x(o.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",locals:{stateAccount:q.account,stateMessage:t}}).finally(function(){x(null),T()}))}function A(){n.go("mail.account.mailbox").then(function(){q.message=null,delete c.selectedMessage})}function D(e){k(e,q.message.$reply())}function F(e){k(e,q.message.$replyAll())}function O(e){k(e,q.message.$forward())}function U(e){q.message.$editableContent().then(function(){k(e,q.message)})}function L(){var t=[g.baseURL(),"UIxMailPopupView#!/Mail",q.message.accountId,h(h(q.message.$mailbox.path)),q.message.uid].join("/"),n=q.message.$absolutePath();z=e.open(t,n,["width=680","height=520","resizable=1","scrollbars=1","toolbar=0","location=0","directories=0","status=0","menubar=0","copyhistory=0"].join(","))}function T(){e.opener&&e.close()}function P(e,t){q.account.$newMessage().then(function(n){angular.extend(n.editable,t),k(e,n)}),e.stopPropagation(),e.preventDefault()}function R(e){q.showRawSource||q.message.$rawSource?q.showRawSource=!q.showRawSource:M.$$resource.post(q.message.id,"viewsource").then(function(e){q.message.$rawSource=e,q.showRawSource=!0})}function N(t){e.print()}function j(e){return G(e,"appointment")}function H(e){return G(e,"task")}function G(e,t){q.message.$plainContent().then(function(n){var s={pid:$.$defaultCalendar(),type:t,summary:n.subject,comment:n.content},a=new b(s),i=[g.activeUser("folderURL"),"Calendar","UIx"+t.capitalize()+"EditorTemplate"].join("/");return o.show({parent:angular.element(document.body),targetEvent:e,clickOutsideToClose:!0,escapeToClose:!0,templateUrl:i,controller:"ComponentEditorController",controllerAs:"editor",locals:{stateComponent:a}})})}var q=this,z=null,B=[];e.$messageController=q,f.setMessage(u),q.$state=n,q.accounts=i,q.account=r,q.mailbox=c,q.message=u,q.service=M,q.tags={searchText:"",selected:""},q.showFlags=u.flags&&u.flags.length>0,q.$showDetailedRecipients=!1,q.toggleDetailedRecipients=I,q.filterMailtoLinks=S,q.deleteMessage=E,q.close=A,q.reply=D,q.replyAll=F,q.forward=O,q.edit=U,q.openPopup=L,q.closePopup=T,q.newMessage=P,q.toggleRawSource=R,q.showRawSource=!1,q.print=N,q.convertToEvent=j,q.convertToTask=H,function(e){e.push(d.createHotkey({key:l("hotkey_reply"),description:l("Reply to the message"),callback:C(D)})),e.push(d.createHotkey({key:l("hotkey_replyall"),description:l("Reply to sender and all recipients"),callback:C(F)})),e.push(d.createHotkey({key:l("hotkey_forward"),description:l("Forward selected message"),callback:C(O)})),e.push(d.createHotkey({key:l("hotkey_flag"),description:l("Flagged"),callback:C(angular.bind(u,u.toggleFlag))})),e.push(d.createHotkey({key:"backspace",callback:C(function(e){0===q.mailbox.$selectedCount()&&E(),e.preventDefault()})})),_.forEach(e,function(e){d.registerHotkey(e)})}(B),e.opener?(t.$watchCollection(function(){return q.message.flags},function(e,t){var n;(e||t)&&(n=w()).messageCtrl&&n.messageCtrl.service.$timeout(function(){n.messageCtrl.showFlags=!0,n.messageCtrl.message.flags=e})}),t.$watch(function(){return q.message.isflagged},function(e,t){var n=w();n.mailboxCtrl&&n.mailboxCtrl.service.$timeout(function(){_.find(n.mailboxCtrl.selectedFolder.$messages,{uid:q.message.uid}).isflagged=e})})):t.$watchCollection(function(){return q.message.flags},function(e,t){var n,s,o;(e||t)&&(n=e||[],s=t||[],_.forEach(n,function(e,t){angular.isObject(e)&&(n[t]=e.name)}),n.length>s.length?(o=_.difference(n,s),_.forEach(o,function(e){q.message.addTag(e)})):n.length',' '," {{$ctrl.mailbox.$icon}}"," ",'

',' ',' ',"

",' ',' '," ",' more_vert'].join(""),controller:"sgMailboxListItemController",controllerAs:"$ctrl"}}function t(e,t,n,s,o,a,i,r,c,u,d){var h=this;this.$onInit=function(){this.$element=t,this.service=u,this.editMode=!1,this.accountController.addMailboxController(this)},this.$postLink=function(){this.selectableElement=t.find("div")[0],this.clickableElement=t.find("p")[0],this.inputContainer=t.find("md-input-container")[0],this.inputElement=t.find("input")[0],this.moreOptionsButton=_.last(t.find("md-icon")),null!==u.selectedFolder&&u.selectedFolder.id==this.mailbox.id&&this.selectFolder()},this.childLevel=function(){return"sg-child-level-"+this.mailbox.level},this.selectFolder=function(e){this.editMode||this.mailbox==u.selectedFolder||(u.$virtualPath=!1,u.$virtualMode=!1,this.accountController.selectFolder(this),e&&(n.go("mail.account.mailbox",{accountId:this.mailbox.$account.id,mailboxId:d(this.mailbox.path)}),e.stopPropagation(),e.preventDefault()))},this.unselectFolder=function(){t[0].classList.remove("md-bg")},this.editFolder=function(e){this.editMode=!0,this.inputElement.value=this.mailbox.name,this.clickableElement.classList.add("ng-hide"),this.inputContainer.classList.remove("ng-hide"),this.inputElement.focus(),this.inputElement.select(),e&&(e.stopPropagation(),e.preventDefault())},this.saveFolder=function(e){this.inputElement.disabled||(this.mailbox.name=this.inputElement.value,this.inputElement.disabled=!0,this.mailbox.$rename().then(function(e){h.editMode=!1,h.inputContainer.classList.add("ng-hide"),h.clickableElement.classList.remove("ng-hide")}).finally(function(){h.inputElement.disabled=!1}))},this.revertEditing=function(){this.editMode=!1,this.clickableElement.classList.remove("ng-hide"),this.inputContainer.classList.add("ng-hide"),this.inputElement.value=this.mailbox.name},this.showMenu=function(e){function t(e,t,n,o){var d=this;this.markFolderRead=function(){this.folder.$markAsRead()},this.newFolder=function(){c.prompt(l("New Folder..."),l("Enter the new name of your folder")).then(function(e){d.folder.$newMailbox(d.folder.id,e).then(function(){},function(t,n){c.alert(l('An error occured while creating the mailbox "%{0}".',e),l(t.error))})})},this.editFolder=function(){this.itemCtrl.editFolder()},this.compactFolder=function(){this.folder.$compact().then(function(){s.show(s.simple().content(l("Folder compacted")).position("top right").hideDelay(3e3))})},this.emptyTrashFolder=function(){this.folder.$emptyTrash().then(function(){s.show(s.simple().content(l("Trash emptied")).position("top right").hideDelay(3e3))})},this.confirmDelete=function(){c.confirm(l("Warning"),l("Do you really want to move this folder into the trash ?"),{ok:l("Delete")}).then(function(){d.folder.$delete().then(function(){t.go("mail.account.inbox")},function(e){c.confirm(l("Warning"),l("The mailbox could not be moved to the trash folder. Would you like to delete it immediately?"),{ok:l("Delete")}).then(function(){d.folder.$delete({withoutTrash:!0}).then(function(){t.go("mail.account.inbox")},function(e){c.alert(l('An error occured while deleting the mailbox "%{0}".',d.folder.name),l(e.error))})})})})},this.showAdvancedSearch=function(){u.$virtualPath=this.folder.path,a(r["gt-md"])||i("left").close()},this.share=function(){this.folder.$acl.$users().then(function(){n.show({templateUrl:d.folder.id+"/UIxAclEditor",controller:"AclController",controllerAs:"acl",clickOutsideToClose:!0,escapeToClose:!0,locals:{usersWithACL:d.folder.$acl.users,User:o,folder:d.folder}})})},this.setFolderAs=function(e){this.folder.$setFolderAs(e).then(function(){d.folder.$account.$getMailboxes({reload:!0})})}}var n=o.newPanelPosition().relativeTo(this.moreOptionsButton).addPanelPosition(o.xPosition.ALIGN_START,o.yPosition.ALIGN_TOPS),d=o.newPanelAnimation().openFrom(this.moreOptionsButton).duration(100).withAnimation(o.animation.FADE),h={attachTo:angular.element(document.body),locals:{itemCtrl:this,folder:this.mailbox},bindToController:!0,controller:t,controllerAs:"$menuCtrl",position:n,animation:d,targetEvent:e,templateUrl:"UIxMailFolderMenu",trapFocus:!0,clickOutsideToClose:!0,escapeToClose:!0,focusOnOpen:!0};o.open(h).then(function(e){e.panelEl.one("click",function(){e.close()})}),t.$inject=["mdPanelRef","$state","$mdDialog","User"]}}t.$inject=["$scope","$element","$state","$mdToast","$mdPanel","$mdMedia","$mdSidenav","sgConstant","Dialog","Mailbox","encodeUriFilter"],angular.module("SOGo.MailerUI").controller("sgMailboxListItemController",t).directive("sgMailboxListItem",e)}(),function(){function e(){return{restrict:"C",scope:{},bindToController:{message:"=sgMessage"},controller:"sgMessageListItemController"}}function t(e,t,n){var s=this;this.$onInit=function(){this.MailboxService=n,e.$watch(function(){return s.message?[_.pick(s.message,["uid","isread","isflagged"])]:null},function(e,t){s.message&&s.onUpdate()},!0)},this.onUpdate=function(){this.message.isread?t.removeClass("unread"):t.addClass("unread"),n.selectedFolder.isSelectedMessage(this.message.uid,this.message.$mailbox.path)?t.addClass("md-default-theme md-accent md-bg md-hue-2"):t.removeClass("md-default-theme md-accent md-bg md-hue-2")},this.setVisibility=function(e,t){t?e.classList.remove("ng-hide"):e.classList.add("ng-hide")}}t.$inject=["$scope","$element","Mailbox"],angular.module("SOGo.MailerUI").controller("sgMessageListItemController",t).directive("sgMessageListItem",e)}(),function(){function e(){function e(e,t,n,s){e.parentController=s}return{restrict:"C",require:"^^sgMessageListItem",scope:{},template:['
','
',"
",' \x3c!-- mailbox --\x3e',' error'," \x3c!-- sender or recipient --\x3e","
",'
\x3c!-- date --\x3e
',"
",'
','
\x3c!-- subject --\x3e
','
\x3c!-- size --\x3e
',"
","
",'
',' star',' reply',' forward',' attach_file',"
",'
',' \x3c!-- message loading progress --\x3e',"
"].join(""),link:e,controller:"sgMessageListItemMainController",controllerAs:"$ctrl"}}function t(e,t,n,s,o,a,i,r,l){var c=this;this.$postLink=function(){var n,s,a,l;this.parentController=e.parentController,a=this.parentController.onUpdate,l=this.parentController.setVisibility,_.forEach(t.find("div"),function(e){e.classList.contains("sg-tile-content")?n=angular.element(e):e.classList.contains("sg-tile-icons")&&(s=angular.element(e))}),this.priorityIconElement=n.find("md-icon")[0],i.$virtualMode&&(this.mailboxNameElement=n.find("span")[0],this.mailboxNameElement.classList.remove("ng-hide")),this.senderElement=n.find("span")[1],_.forEach(n.find("div"),function(e){e.classList.contains("sg-tile-subject")?c.subjectElement=e:e.classList.contains("sg-tile-size")?c.sizeElement=e:e.classList.contains("sg-tile-date")&&(c.dateElement=e)}),_.forEach(s.find("md-icon"),function(e){"star"==e.textContent?c.flagIconElement=e:"reply"==e.textContent?c.answerIconElement=e:"forward"==e.textContent?c.forwardIconElement=e:"attach_file"==e.textContent&&(c.attachmentIconElement=e)}),this.parentController.onUpdate=function(){var e;c.message=c.parentController.message;var n=o.nodesToArray(t[0].querySelectorAll(".sg-category"));for(_.forEach(n,function(e){t[0].removeChild(e)}),e=0;e');i.css("left",3*e+"px"),i.css("background-color",c.service.$tags[s][1]),t.prepend(i)}}c.mailboxNameElement&&(c.mailboxNameElement.innerHTML=c.message.$mailbox.$displayName),"sent"==c.MailboxService.selectedFolder.type?c.senderElement.innerHTML=c.message.$shortAddress("to").encodeEntities():c.senderElement.innerHTML=c.message.$shortAddress("from").encodeEntities(),c.message.priority&&c.message.priority.level<3?(c.priorityIconElement.classList.remove("ng-hide"),c.message.priority.level<2?c.priorityIconElement.classList.add("md-warn"):c.priorityIconElement.classList.remove("md-warn")):c.priorityIconElement.classList.add("ng-hide"),c.subjectElement.innerHTML=c.message.subject.encodeEntities(),c.sizeElement.innerHTML=c.message.size,c.dateElement.innerHTML=c.message.relativedate,l(c.flagIconElement,c.message.isflagged),l(c.answerIconElement,c.message.isanswered),l(c.forwardIconElement,c.message.isforwarded),l(c.attachmentIconElement,c.message.hasattachment),angular.bind(c.parentController,a)()},this.service=r,this.MailboxService=i}}t.$inject=["$scope","$element","$parse","$state","$mdUtil","$mdToast","Mailbox","Message","encodeUriFilter"],angular.module("SOGo.MailerUI").controller("sgMessageListItemMainController",t).directive("sgMessageListItemMain",e)}(),function(){"use strict";function e(){return{restrict:"A",bindToController:{partIndex:"=sgZoomableImage"},controller:t}}function t(e,t){var n=this;this.$postLink=function(){t.registerImage(e),e.on("click",this.showImage)},this.showImage=function(e){"IMG"==e.target.tagName&&t.showGallery(e,n.partIndex)}}t.$inject=["$element","ImageGallery"],angular.module("SOGo.MailerUI").directive("sgZoomableImage",e)}(); //# sourceMappingURL=Mailer.services.js.map