diff --git a/data/VERSION b/data/VERSION index fe985ab1a..8b36ff1d8 100644 --- a/data/VERSION +++ b/data/VERSION @@ -1 +1 @@ -1.3.7.466 \ No newline at end of file +1.3.8.476 \ No newline at end of file diff --git a/rainloop/v/1.3.7.466/REVISION b/rainloop/v/1.3.7.466/REVISION deleted file mode 100644 index 5bd048c00..000000000 --- a/rainloop/v/1.3.7.466/REVISION +++ /dev/null @@ -1 +0,0 @@ -4e8f8e7da270f436b9ca2b8f68166567b6467c56 \ No newline at end of file diff --git a/rainloop/v/1.3.7.466/VERSION b/rainloop/v/1.3.7.466/VERSION deleted file mode 100644 index fe985ab1a..000000000 --- a/rainloop/v/1.3.7.466/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.3.7.466 \ No newline at end of file diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/AttachmentCollection.php b/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/AttachmentCollection.php deleted file mode 100644 index f317d70db..000000000 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/AttachmentCollection.php +++ /dev/null @@ -1,50 +0,0 @@ -FilterList(function ($oAttachment) { - return $oAttachment && $oAttachment->IsInline(); - }); - - return \is_array($aList) ? \count($aList) : 0; - } - - /** - * @return int - */ - public function NonInlineCount() - { - $aList = $this->FilterList(function ($oAttachment) { - return $oAttachment && !$oAttachment->IsInline(); - }); - - return \is_array($aList) ? \count($aList) : 0; - } -} diff --git a/rainloop/v/1.3.7.466/static/js/admin.min.js b/rainloop/v/1.3.7.466/static/js/admin.min.js deleted file mode 100644 index f85c46052..000000000 --- a/rainloop/v/1.3.7.466/static/js/admin.min.js +++ /dev/null @@ -1,155 +0,0 @@ -(function(g,j,d,fa,z,i){function p(){this.sBase="#/";this.sCdnStaticDomain=e.settingsGet("CdnStaticDomain");this.sVersion=e.settingsGet("Version");this.sSpecSuffix=e.settingsGet("AuthAccountHash")||"0";this.sServer=(e.settingsGet("IndexFile")||"./")+"?";this.sCdnStaticDomain=""===this.sCdnStaticDomain?this.sCdnStaticDomain:"/"===this.sCdnStaticDomain.substr(-1)?this.sCdnStaticDomain:this.sCdnStaticDomain+"/"}function M(){}function N(){}function O(){var a=i.find([N,M],function(a){return a.supported()}); -a&&(this.oDriver=new a)}function ga(){}function t(a,b){this.sPosition=c.pString(a);this.sTemplate=c.pString(b);this.viewModelName="";this.viewModelVisibility=d.observable(!1);"Popups"===this.sPosition&&(this.modalVisibility=d.observable(!1));this.viewModelDom=null}function w(a,b){this.sScreenName=a;this.aViewModels=c.isArray(b)?b:[]}function q(){this.sDefaultScreenName="";this.oScreens={};this.oCurrentScreen=this.oBoot=null;this.popupVisibility=d.observable(!1);this.popupVisibility.subscribe(function(a){e&& -e.popupVisibility(a)})}function s(a,b){this.email=a||"";this.name=b||"";this.privateType=null;this.clearDuplicateName()}function B(){t.call(this,"Popups","PopupsDomain");this.edit=d.observable(!1);this.saving=d.observable(!1);this.savingError=d.observable("");this.whiteListPage=d.observable(!1);this.testing=d.observable(!1);this.testingDone=d.observable(!1);this.testingImapError=d.observable(!1);this.testingSmtpError=d.observable(!1);this.imapServerFocus=d.observable(!1);this.smtpServerFocus=d.observable(!1); -this.name=d.observable("");this.imapServer=d.observable("");this.imapPort=d.observable(m.Values.ImapDefaulPort);this.imapSecure=d.observable(f.ServerSecure.None);this.smtpServer=d.observable("");this.smtpPort=d.observable(m.Values.SmtpDefaulPort);this.smtpSecure=d.observable(f.ServerSecure.None);this.smtpAuth=d.observable(!0);this.whiteList=d.observable("");this.imapServerFocus.subscribe(function(a){a&&(""!==this.name()&&""===this.imapServer())&&this.imapServer(this.name())},this);this.smtpServerFocus.subscribe(function(a){a&& -(""!==this.imapServer()&&""===this.smtpServer())&&this.smtpServer(this.imapServer())},this);this.headerText=d.computed(function(){var a=this.name();return this.edit()?'Edit Domain "'+a+'"':"Add Domain"+(""===a?"":' "'+a+'"')},this);this.domainIsComputed=d.computed(function(){return""!==this.name()&&""!==this.imapServer()&&""!==this.imapPort()&&""!==this.smtpServer()&&""!==this.smtpPort()},this);this.canBeTested=d.computed(function(){return!this.testing()&&this.domainIsComputed()},this);this.canBeSaved= -d.computed(function(){return!this.saving()&&this.domainIsComputed()},this);this.createOrAddCommand=c.createCommand(this,function(){this.saving(!0);e.remote().createOrUpdateDomain(i.bind(this.onDomainCreateOrSaveResponse,this),!this.edit(),this.name(),this.imapServer(),this.imapPort(),this.imapSecure(),this.smtpServer(),this.smtpPort(),this.smtpSecure(),this.smtpAuth(),this.whiteList())},this.canBeSaved);this.testConnectionCommand=c.createCommand(this,function(){this.whiteListPage(!1);this.testingDone(!1); -this.testingImapError(!1);this.testingSmtpError(!1);this.testing(!0);e.remote().testConnectionForDomain(i.bind(this.onTestConnectionResponse,this),this.imapServer(),this.imapPort(),this.imapSecure(),this.smtpServer(),this.smtpPort(),this.smtpSecure(),this.smtpAuth())},this.canBeTested);this.whiteListCommand=c.createCommand(this,function(){this.whiteListPage(!this.whiteListPage())})}function P(){t.call(this,"Popups","PopupsPlugin");var a=this;this.onPluginSettingsUpdateResponse=i.bind(this.onPluginSettingsUpdateResponse, -this);this.saveError=d.observable("");this.name=d.observable("");this.readme=d.observable("");this.configures=d.observableArray([]);this.hasReadme=d.computed(function(){return""!==this.readme()},this);this.hasConfiguration=d.computed(function(){return 0').appendTo("body"); -H.on("error",function(a){e&&(a&&a.originalEvent&&a.originalEvent.message&&-1===c.inArray(a.originalEvent.message,["Uncaught Error: Error calling method on NPObject."]))&&e.remote().jsError(c.emptyFunction,a.originalEvent.message,a.originalEvent.filename,a.originalEvent.lineno,location&&location.toString?location.toString():"",T.attr("class"))})}function v(){u.call(this);this.oCache=this.oRemote=this.oData=null}var m={},f={},l={},c={},o={},k={},A={settings:[],"settings-removed":[],"settings-disabled":[]}, -r=null,U=g.rainloopAppData||{},da=g.rainloopI18N||{},T=j("html"),H=j(g),ka=j(g.document),V=g.Notification&&g.Notification.requestPermission?g.Notification:null,e=null;k.minuteTick=d.observable(!0);k.fiveMinuteTick=d.observable(!0);k.langChangeTick=d.observable(!0);k.iAjaxErrorCount=0;k.iTokenErrorCount=0;k.iMessageBodyCacheCount=0;k.bUnload=!1;k.sUserAgent=(navigator.userAgent||"").toLowerCase();k.bIsiOSDevice=-1/g,">").replace(/"/g,""").replace(/'/g,"'"):""};c.splitPlainText=function(a,b){for(var h="",d="",e=a,f=0,g=0,b=c.isUnd(b)?100:b;e.length>b;)d=e.substring(0,b),f=d.lastIndexOf(" "),g=d.lastIndexOf("\n"),-1!==g&&(f=g),-1=== -f&&(f=b),h+=d.substring(0,f)+"\n",e=e.substring(f+1);return h+e};var W={};c.timeOutAction=function(a,b,h){c.isUnd(W[a])&&(W[a]=0);g.clearTimeout(W[a]);W[a]=g.setTimeout(b,h)};var ea={};c.timeOutActionSecond=function(a,b,c){ea[a]||(ea[a]=g.setTimeout(function(){b();ea[a]=0},c))};var y=!1;c.audio=function(a,b){if(!1===y)if(k.bIsiOSDevice)y=null;else{var c=!1,d=!1,e=g.Audio?new g.Audio:null;e&&e.canPlayType&&e.play?((c=""!==e.canPlayType('audio/mpeg; codecs="mp3"'))||(d=""!==e.canPlayType('audio/ogg; codecs="vorbis"')), -c||d?(y=e,y.preload="none",y.loop=!1,y.autoplay=!1,y.muted=!1,y.src=c?a:b):y=null):y=null}return y};c.hos=function(a,b){return a&&Object.hasOwnProperty?Object.hasOwnProperty.call(a,b):!1};c.i18n=function(a,b,h){var d="",a=c.isUnd(da[a])?c.isUnd(h)?a:h:da[a];if(!c.isUnd(b)&&!c.isNull(b))for(d in b)c.hos(b,d)&&(a=a.replace("%"+d+"%",b[d]));return a};c.i18nToNode=function(a){i.defer(function(){j(".i18n",a).each(function(){var a=j(this),h="";(h=a.data("i18n-text"))?a.text(c.i18n(h)):((h=a.data("i18n-html"))&& -a.html(c.i18n(h)),(h=a.data("i18n-placeholder"))&&a.attr("placeholder",c.i18n(h)))})})};c.i18nToDoc=function(){g.rainloopI18N&&(da=g.rainloopI18N||{},c.i18nToNode(ka),k.langChangeTick(!k.langChangeTick()));g.rainloopI18N={}};c.initOnStartOrLangChange=function(a,b,c){a&&a.call(b);c?k.langChangeTick.subscribe(function(){a&&a.call(b);c.call(b)}):a&&k.langChangeTick.subscribe(a,b)};c.inFocus=function(){var a=document.activeElement;return a&&("INPUT"===a.tagName||"TEXTAREA"===a.tagName||"IFRAME"===a.tagName|| -"DIV"===a.tagName&&"editorHtmlArea"===a.className&&a.contentEditable)};c.removeInFocus=function(){if(document&&document.activeElement&&document.activeElement.blur){var a=j(document.activeElement);(a.is("input")||a.is("textarea"))&&document.activeElement.blur()}};c.removeSelection=function(){if(g&&g.getSelection){var a=g.getSelection();a&&a.removeAllRanges&&a.removeAllRanges()}else document&&(document.selection&&document.selection.empty)&&document.selection.empty()};c.replySubjectAdd=function(a,b){var h= -null,d=c.trim(b);null!==(h=(new g.RegExp("^"+a+"[\\s]?\\:(.*)$","gi")).exec(b))&&!c.isUnd(h[1])?d=a+"[2]: "+h[1]:null!==(h=(new g.RegExp("^("+a+"[\\s]?[\\[\\(]?)([\\d]+)([\\]\\)]?[\\s]?\\:.*)$","gi")).exec(b))&&!c.isUnd(h[1])&&!c.isUnd(h[2])&&!c.isUnd(h[3])?(c.pInt(h[2]),d=h[1]+(c.pInt(h[2])+1)+h[3]):d=a+": "+b;return d};c.roundNumber=function(a,b){return Math.round(a*Math.pow(10,b))/Math.pow(10,b)};c.friendlySize=function(a){a=c.pInt(a);return 1073741824<=a?c.roundNumber(a/1073741824,1)+"GB":1048576<= -a?c.roundNumber(a/1048576,1)+"MB":1024<=a?c.roundNumber(a/1024,0)+"KB":a+"B"};c.log=function(a){g.console&&g.console.log&&g.console.log(a)};c.getNotification=function(a){a=c.pInt(a);return c.isUnd(l[a])?"":l[a]};c.initNotificationLanguage=function(){l[f.Notification.InvalidToken]=c.i18n("NOTIFICATIONS/INVALID_TOKEN");l[f.Notification.AuthError]=c.i18n("NOTIFICATIONS/AUTH_ERROR");l[f.Notification.AccessError]=c.i18n("NOTIFICATIONS/ACCESS_ERROR");l[f.Notification.ConnectionError]=c.i18n("NOTIFICATIONS/CONNECTION_ERROR"); -l[f.Notification.CaptchaError]=c.i18n("NOTIFICATIONS/CAPTCHA_ERROR");l[f.Notification.SocialFacebookLoginAccessDisable]=c.i18n("NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE");l[f.Notification.SocialTwitterLoginAccessDisable]=c.i18n("NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE");l[f.Notification.SocialGoogleLoginAccessDisable]=c.i18n("NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE");l[f.Notification.DomainNotAllowed]=c.i18n("NOTIFICATIONS/DOMAIN_NOT_ALLOWED");l[f.Notification.AccountNotAllowed]= -c.i18n("NOTIFICATIONS/ACCOUNT_NOT_ALLOWED");l[f.Notification.CantGetMessageList]=c.i18n("NOTIFICATIONS/CANT_GET_MESSAGE_LIST");l[f.Notification.CantGetMessage]=c.i18n("NOTIFICATIONS/CANT_GET_MESSAGE");l[f.Notification.CantDeleteMessage]=c.i18n("NOTIFICATIONS/CANT_DELETE_MESSAGE");l[f.Notification.CantMoveMessage]=c.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE");l[f.Notification.CantSaveMessage]=c.i18n("NOTIFICATIONS/CANT_SAVE_MESSAGE");l[f.Notification.CantSendMessage]=c.i18n("NOTIFICATIONS/CANT_SEND_MESSAGE"); -l[f.Notification.InvalidRecipients]=c.i18n("NOTIFICATIONS/INVALID_RECIPIENTS");l[f.Notification.CantCreateFolder]=c.i18n("NOTIFICATIONS/CANT_CREATE_FOLDER");l[f.Notification.CantRenameFolder]=c.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER");l[f.Notification.CantDeleteFolder]=c.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER");l[f.Notification.CantDeleteNonEmptyFolder]=c.i18n("NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER");l[f.Notification.CantSubscribeFolder]=c.i18n("NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER");l[f.Notification.CantUnsubscribeFolder]= -c.i18n("NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER");l[f.Notification.CantSaveSettings]=c.i18n("NOTIFICATIONS/CANT_SAVE_SETTINGS");l[f.Notification.CantSavePluginSettings]=c.i18n("NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS");l[f.Notification.DomainAlreadyExists]=c.i18n("NOTIFICATIONS/DOMAIN_ALREADY_EXISTS");l[f.Notification.CantInstallPackage]=c.i18n("NOTIFICATIONS/CANT_INSTALL_PACKAGE");l[f.Notification.CantDeletePackage]=c.i18n("NOTIFICATIONS/CANT_DELETE_PACKAGE");l[f.Notification.InvalidPluginPackage]= -c.i18n("NOTIFICATIONS/INVALID_PLUGIN_PACKAGE");l[f.Notification.UnsupportedPluginPackage]=c.i18n("NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE");l[f.Notification.LicensingServerIsUnavailable]=c.i18n("NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE");l[f.Notification.LicensingExpired]=c.i18n("NOTIFICATIONS/LICENSING_EXPIRED");l[f.Notification.LicensingBanned]=c.i18n("NOTIFICATIONS/LICENSING_BANNED");l[f.Notification.DemoSendMessageError]=c.i18n("NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR");l[f.Notification.AccountAlreadyExists]= -c.i18n("NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS");l[f.Notification.MailServerError]=c.i18n("NOTIFICATIONS/MAIL_SERVER_ERROR");l[f.Notification.UnknownNotification]=c.i18n("NOTIFICATIONS/UNKNOWN_ERROR");l[f.Notification.UnknownError]=c.i18n("NOTIFICATIONS/UNKNOWN_ERROR")};c.getUploadErrorDescByCode=function(a){var b="";switch(c.pInt(a)){case f.UploadErrorCode.FileIsTooBig:b=c.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG");break;case f.UploadErrorCode.FilePartiallyUploaded:b=c.i18n("UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED"); -break;case f.UploadErrorCode.FileNoUploaded:b=c.i18n("UPLOAD/ERROR_NO_FILE_UPLOADED");break;case f.UploadErrorCode.MissingTempFolder:b=c.i18n("UPLOAD/ERROR_MISSING_TEMP_FOLDER");break;case f.UploadErrorCode.FileOnSaveingError:b=c.i18n("UPLOAD/ERROR_ON_SAVING_FILE");break;case f.UploadErrorCode.FileType:b=c.i18n("UPLOAD/ERROR_FILE_TYPE");break;default:b=c.i18n("UPLOAD/ERROR_UNKNOWN")}return b};c.killCtrlAandS=function(a){if(a=a||g.event){var b=a.target||a.srcElement,c=a.keyCode||a.which;if(a.ctrlKey&& -c===f.EventKeyCode.S)a.preventDefault();else if((!b||!b.tagName||!b.tagName.match(/INPUT|TEXTAREA/i))&&a.ctrlKey&&c===f.EventKeyCode.A)g.getSelection?g.getSelection().removeAllRanges():g.document.selection&&g.document.selection.clear&&g.document.selection.clear(),a.preventDefault()}};c.createCommand=function(a,b,h){var e=b?function(){e.canExecute&&e.canExecute()&&b.apply(a,Array.prototype.slice.call(arguments));return!1}:function(){};e.enabled=d.observable(!0);h=c.isUnd(h)?!0:h;e.canExecute=c.isFunc(h)? -d.computed(function(){return e.enabled()&&h.call(a)}):d.computed(function(){return e.enabled()&&!!h});return e};c.initDataConstructorBySettings=function(a){a.ignoreFolderSubscribe=d.observable(!1);a.editorDefaultType=d.observable(f.EditorDefaultType.Html);a.showImages=d.observable(!1);a.showAnimation=d.observable(!1);a.allowThemes=d.observable(!0);a.allowCustomLogin=d.observable(!1);a.allowLanguagesOnSettings=d.observable(!0);a.allowLanguagesOnLogin=d.observable(!0);a.desktopNotifications=d.observable(!1); -a.useThreads=d.observable(!0);a.replySameFolder=d.observable(!0);a.usePreviewPane=d.observable(!0);a.useCheckboxesInList=d.observable(!0);a.showAnimation.subscribe(function(a){k.bMobileDevice?T.removeClass("rl-anim").addClass("no-rl-anim"):T.toggleClass("rl-anim",a).toggleClass("no-rl-anim",!a)});a.showAnimation.valueHasMutated();a.desktopNotificationsPermisions=d.computed(function(){a.desktopNotifications();var b=f.DesktopNotifications.NotSupported;if(V&&V.permission)switch(V.permission.toLowerCase()){case "granted":b= -f.DesktopNotifications.Allowed;break;case "denied":b=f.DesktopNotifications.Denied;break;case "default":b=f.DesktopNotifications.NotAllowed}else g.webkitNotifications&&g.webkitNotifications.checkPermission&&(b=g.webkitNotifications.checkPermission());return b});a.useDesktopNotifications=d.computed({read:function(){return a.desktopNotifications()&&f.DesktopNotifications.Allowed===a.desktopNotificationsPermisions()},write:function(b){b?(b=a.desktopNotificationsPermisions(),f.DesktopNotifications.Allowed=== -b?a.desktopNotifications(!0):f.DesktopNotifications.NotAllowed===b?V.requestPermission(function(){a.desktopNotifications.valueHasMutated();f.DesktopNotifications.Allowed===a.desktopNotificationsPermisions()?a.desktopNotifications()?a.desktopNotifications.valueHasMutated():a.desktopNotifications(!0):a.desktopNotifications()?a.desktopNotifications(!1):a.desktopNotifications.valueHasMutated()}):a.desktopNotifications(!1)):a.desktopNotifications(!1)}});a.language=d.observable("");a.languages=d.observableArray([]); -a.mainLanguage=d.computed({read:a.language,write:function(b){b!==a.language()?-1=a.diff(h,"hours")?d:a.format("L")===h.format("L")?c.i18n("MESSAGE_LIST/TODAY_AT",{TIME:h.format("LT")}):a.clone().subtract("days",1).format("L")===h.format("L")?c.i18n("MESSAGE_LIST/YESTERDAY_IN",{TIME:h.format("LT")}):a.year()===h.year()?h.format("D MMM."):h.format("LL")},a)};c.isFolderExpanded=function(a){var b=e.local().get(f.ClientSideKeyName.ExpandedFolders);return i.isArray(b)&&-1!==i.indexOf(b,a)};c.setExpandedFolder=function(a, -b){var c=e.local().get(f.ClientSideKeyName.ExpandedFolders);i.isArray(c)||(c=[]);b?(c.push(a),c=i.uniq(c)):c=i.without(c,a);e.local().set(f.ClientSideKeyName.ExpandedFolders,c)};c.initLayoutResizer=function(a,b,c,d,f,L,g,k){var d=d||300,f=f||500,L=L||f-d/2,g=g||300,x=0,l=j(a),m=j(b),o=j(c),b=e.local().get(k)||L,p=function(a,b,c){if(b||c)a=o.width(),b=b?100*(b.size.width/a):null,null===b&&c&&(b=100*(l.width()/a)),null!==b&&(l.css({width:"",height:"",right:""+(100-b)+"%"}),m.css({width:"",height:"", -left:""+b+"%"}))};b&&l.width(b);x=o.width()-g;x=f>x?x:f;l.resizable({minWidth:d,maxWidth:x,handles:"e",resize:p,stop:p});p(null,null,!0);H.resize(i.throttle(function(b,c){c&&(c.element&&c.element[0].id&&"#"+c.element[0].id===""+a)&&(x=o.width()-g,x=f>x?x:f,l.resizable("option","maxWidth",x),c.size&&c.size.width&&e.local().set(k,c.size.width),p(null,null,!0))},400))};c.initBlockquoteSwitcher=function(a){if(a){var b=j("blockquote:not(.rl-bq-switcher)",a).filter(function(){return 0===j(this).parent().closest("blockquote", -a).length});b&&0').insertBefore(a).click(function(){a.toggleClass("hidden-bq");c.windowResize()}).after("
").before("
")})}};c.removeBlockquoteSwitcher=function(a){a&&(j(a).find("blockquote.rl-bq-switcher").each(function(){j(this).removeClass("rl-bq-switcher hidden-bq")}),j(a).find(".rlBlockquoteSwitcher").each(function(){j(this).remove()}))}; -c.extendAsViewModel=function(a,b){b&&(b.__name=a,o.regViewModelHook(a,b),i.extend(b.prototype,t.prototype))};c.addSettingsViewModel=function(a,b,c,d,e){a.__rlSettingsData={Label:c,Template:b,Route:d,IsDefault:!!e};A.settings.push(a)};c.removeSettingsViewModel=function(a){A["settings-removed"].push(a)};c.disableSettingsViewModel=function(a){A["settings-disabled"].push(a)};c.convertThemeName=function(a){return c.trim(a.replace(/[^a-zA-Z]/g," ").replace(/([A-Z])/g," $1").replace(/[\s]+/g," "))};c.convertLangName= -function(a){return c.i18n("LANGS_NAMES/LANG_"+a.toUpperCase().replace(/[^a-zA-Z0-9]+/,"_"),null,a)};c.fakeMd5=function(a){for(var b="",a=c.isUnd(a)?32:c.pInt(a);b.length/g,">").replace(/")};c.draggeblePlace=function(){return j('
 
').appendTo("#rl-hidden")}; -c.defautOptionsAfterRender=function(a,b){b&&!c.isUnd(b.disable)&&d.applyBindingsToNode(a,{disable:b.disable},b)};c.windowPopupKnockout=function(a,b,h,d){var e=null,f=g.open(""),i="__OpenerApplyBindingsUid"+c.fakeMd5()+"__",k=j("#"+b);g[i]=function(){if(f&&f.document.body&&k&&k[0]){var b=j(f.document.body);j("#rl-content",b).html(k.html());j("html",f.document).addClass("external "+j("html").attr("class"));c.i18nToNode(b);q.prototype.applyExternal(a,j("#rl-content",b)[0]);g[i]=null;d(f)}};f.document.open(); -f.document.write(''+c.encodeHtml(h)+'
');f.document.close();e=f.document.createElement("script");e.type="text/javascript";e.innerHTML="if(window&&window.opener&&window.opener['"+ -i+"']){window.opener['"+i+"']();window.opener['"+i+"']=null}";f.document.getElementsByTagName("head")[0].appendChild(e)};c.settingsSaveHelperFunction=function(a,b,h,d){h=h||null;d=c.isUnd(d)?1E3:c.pInt(d);return function(c,e,g,j,x){b.call(h,e&&e.Result?f.SaveSettingsStep.TrueResult:f.SaveSettingsStep.FalseResult);a&&a.call(h,c,e,g,j,x);i.delay(function(){b.call(h,f.SaveSettingsStep.Idle)},d)}};c.settingsSaveHelperSimpleFunction=function(a,b){return c.settingsSaveHelperFunction(null,a,b,1E3)};c.resizeAndCrop= -function(a,b,c){var d=new Image;d.onload=function(){var a=[0,0],d=document.createElement("canvas"),e=d.getContext("2d");d.width=b;d.height=b;a=this.width>this.height?[this.width-this.height,0]:[0,this.height-this.width];e.fillStyle="#fff";e.fillRect(0,0,b,b);e.drawImage(this,a[0]/2,a[1]/2,this.width-a[0],this.height-a[1],0,0,b,b);c(d.toDataURL("image/jpeg"))};d.src=a};d.bindingHandlers.tooltip={init:function(a,b){if(!k.bMobileDevice){var h=j(a).data("tooltip-class")||"";j(a).tooltip({delay:{show:500, -hide:100},html:!0,trigger:"hover",title:function(){return''+c.i18n(d.utils.unwrapObservable(b()))+""}})}}};d.bindingHandlers.tooltip2={init:function(a,b){var c=j(a).data("tooltip-class")||"";j(a).tooltip({delay:{show:500,hide:100},html:!0,title:function(){return''+b()()+""}})}};d.bindingHandlers.popover={init:function(a,b){j(a).popover(d.utils.unwrapObservable(b()))}};d.bindingHandlers.resizecrop={init:function(a){j(a).addClass("resizecrop").resizecrop({width:"100", -height:"100",wrapperCSS:{"border-radius":"10px"}})},update:function(a,b){b()();j(a).resizecrop({width:"100",height:"100"})}};d.bindingHandlers.onEnter={init:function(a,b,c,d){j(a).on("keypress",function(c){c&&13===g.parseInt(c.keyCode,10)&&(j(a).trigger("change"),b().call(d))})}};d.bindingHandlers.onEsc={init:function(a,b,c,d){j(a).on("keypress",function(c){c&&27===g.parseInt(c.keyCode,10)&&(j(a).trigger("change"),b().call(d))})}};d.bindingHandlers.modal={init:function(a,b){j(a).modal({keyboard:!1, -show:d.utils.unwrapObservable(b())}).on("hidden",function(){b()(!1)})},update:function(a,b){var c=d.utils.unwrapObservable(b());j(a).modal(c?"show":"hide");i.delay(function(){j(a).toggleClass("popup-active",c)},1)}};d.bindingHandlers.i18nInit={init:function(a){c.i18nToNode(a)}};d.bindingHandlers.i18nUpdate={update:function(a,b){d.utils.unwrapObservable(b());c.i18nToNode(a)}};d.bindingHandlers.link={update:function(a,b){j(a).attr("href",d.utils.unwrapObservable(b()))}};d.bindingHandlers.title={update:function(a, -b){j(a).attr("title",d.utils.unwrapObservable(b()))}};d.bindingHandlers.textF={init:function(a,b){j(a).text(d.utils.unwrapObservable(b()))}};d.bindingHandlers.initDom={init:function(a,b){b()(a)}};d.bindingHandlers.initResizeTrigger={init:function(a,b){var c=d.utils.unwrapObservable(b());j(a).css({height:c[1],"min-height":c[1]})},update:function(a,b){var h=d.utils.unwrapObservable(b()),e=c.pInt(h[1]),f=0,f=j(a).offset().top;0=h.left&&a.pageX<=h.left+d.width()&&(a.pageY>=b-100&&a.pageY<=b&&(b=function(){d.scrollTop(d.scrollTop()+3);c.windowResize()},d.data("timerScroll",g.setInterval(b,10)),b()),a.pageY>=h.top&&a.pageY<=h.top+100))h=function(){d.scrollTop(d.scrollTop()-3);c.windowResize()},d.data("timerScroll",g.setInterval(h,10)),h()})},h.stop=function(){j(e).each(function(){g.clearInterval(j(this).data("timerScroll"));j(this).data("timerScroll",!1)})});h.helper=function(a){return b()(a&&a.target?d.dataFor(a.target): -null)};j(a).draggable(h).on("mousedown",function(){c.removeInFocus()})}}};d.bindingHandlers.droppable={init:function(a,b,c){if(!k.bMobileDevice){var d=b(),e=(b=c())&&b.droppableOver?b.droppableOver:null,f=b&&b.droppableOut?b.droppableOut:null,b={tolerance:"pointer",hoverClass:"droppableHover"};d&&(b.drop=function(a,b){d(a,b)},e&&(b.over=function(a,b){e(a,b)}),f&&(b.out=function(a,b){f(a,b)}),j(a).droppable(b))}}};d.bindingHandlers.nano={init:function(a){k.bDisableNanoScroll||j(a).addClass("nano").nanoScroller({iOSNativeScrolling:!1, -preventPageScrolling:!0})}};d.bindingHandlers.saveTrigger={init:function(a){j(a).append('  ').addClass("settings-saved-trigger")},update:function(a,b){var c=d.utils.unwrapObservable(b()),e=j(a);switch(c.toString()){case "1":e.find(".animated,.error").hide().removeClass("visible").end().find(".success").show().addClass("visible");break;case "0":e.find(".animated,.success").hide().removeClass("visible").end().find(".error").show().addClass("visible"); -break;case "-2":e.find(".error,.success").hide().removeClass("visible").end().find(".animated").show().addClass("visible");break;default:e.find(".animated").hide().end().find(".error,.success").removeClass("visible")}}};d.bindingHandlers.select2={init:function(a,b){var h=0,f=null,la=new g.RegExp(/[a-zA-Z0-9\.\-_]+@[a-zA-Z0-9\.\-_]+/),L=new g.RegExp(/(.+) [<]?([^\s<@]+@[a-zA-Z0-9\.\-_]+)[>]?/),k=function(){return""},l=function(a){e.getAutocomplete(a.term,a.page,function(b,c){a.callback({more:!!c,results:i.map(b, -function(a){var b=a.toLine(!1);return{id:b,text:b,c:a}})})})};j(a).addClass("ko-select2").select2({query:function(a){a&&(0===h?(l(a),h=g.setTimeout(c.emptyFunction,100)):(g.clearInterval(h),h=g.setTimeout(function(){l(a)},100)))},formatSelection:function(a,b){var c=a&&a.c?a.c.select2Selection(b):a.text;if(null!==c)return c},formatResult:function(a,b,c,h){b=a&&a.c?a.c.select2Result(b):"";return""===b?h(a.text):b},createSearchChoice:function(a,b){return 0===b.length&&la.test(a)?{id:a,text:a}:null}, -formatNoMatches:k,formatSearching:function(){return c.i18n("SUGGESTIONS/SEARCHING_DESC")},formatInputTooShort:k,formatSelectionTooBig:k,multiple:!0,tokenSeparators:[",",";"],minimumInputLength:2,selectOnBlur:!1,closeOnSelect:!0,openOnEnter:!1});d.utils.domNodeDisposal.addDisposeCallback(a,function(){j(a).select2("destroy")});j(a).on("change",function(){for(var a=j(this).select2("data"),h=0,d=a.length,e=null,g=[];h").addClass("rl-view-model").addClass("RL-"+h.viewModelTemplate()).hide().attr("data-bind",'template: {name: "'+ -h.viewModelTemplate()+'"}, i18nInit: true'),i.appendTo(g),h.viewModelDom=i,a.__dom=i,"Popups"===f&&(h.cancelCommand=h.closeCommand=c.createCommand(h,function(){r.hideScreenPopup(a)})),o.runHook("view-model-pre-build",[a.__name,h,i]),d.applyBindings(h,i[0]),this.delegateRun(h,"onBuild",[i]),o.runHook("view-model-post-build",[a.__name,h,i])):c.log("Cannot find view model position: "+f)}return a?a.__vm:null};q.prototype.applyExternal=function(a,b){a&&b&&d.applyBindings(a,b)};q.prototype.hideScreenPopup= -function(a){a&&(a.__vm&&a.__dom)&&(a.__dom.hide(),a.__vm.modalVisibility(!1),this.delegateRun(a.__vm,"onHide"),this.popupVisibility(!1),i.defer(function(){a.__dom.find(".ko-select2").select2("close")}))};q.prototype.showScreenPopup=function(a,b){a&&(this.buildViewModel(a),a.__vm&&a.__dom&&(a.__dom.show(),a.__vm.modalVisibility(!0),this.delegateRun(a.__vm,"onShow",b||[]),this.popupVisibility(!0),o.runHook("view-model-on-show",[a.__name,a.__vm,b||[]])))};q.prototype.screenOnRoute=function(a,b){var d= -this,e=null,f=null;""===c.pString(a)&&(a=this.sDefaultScreenName);if(""!==a){e=this.screen(a);if(!e&&(e=this.screen(this.sDefaultScreenName)))b=a+"/"+b,a=this.sDefaultScreenName;e&&e.__started&&(e.__builded||(e.__builded=!0,c.isNonEmptyArray(e.viewModels())&&i.each(e.viewModels(),function(a){this.buildViewModel(a,e)},this),this.delegateRun(e,"onBuild")),i.defer(function(){if(d.oCurrentScreen){d.delegateRun(d.oCurrentScreen,"onHide");c.isNonEmptyArray(d.oCurrentScreen.viewModels())&&i.each(d.oCurrentScreen.viewModels(), -function(a){if(a.__vm&&a.__dom&&"Popups"!==a.__vm.viewModelPosition()){a.__dom.hide();a.__vm.viewModelVisibility(false);d.delegateRun(a.__vm,"onHide")}})}d.oCurrentScreen=e;if(d.oCurrentScreen){d.delegateRun(d.oCurrentScreen,"onShow");o.runHook("screen-on-show",[d.oCurrentScreen.screenName(),d.oCurrentScreen]);c.isNonEmptyArray(d.oCurrentScreen.viewModels())&&i.each(d.oCurrentScreen.viewModels(),function(a){if(a.__vm&&a.__dom&&"Popups"!==a.__vm.viewModelPosition()){a.__dom.show();a.__vm.viewModelVisibility(true); -d.delegateRun(a.__vm,"onShow");o.runHook("view-model-on-show",[a.__name,a.__vm])}},d)}(f=e.__cross())&&f.parse(b)}))}};q.prototype.startScreens=function(a){i.each(a,function(a){var c=(a=new a)?a.screenName():"";a&&""!==c&&(""===this.sDefaultScreenName&&(this.sDefaultScreenName=c),this.oScreens[c]=a)},this);i.each(this.oScreens,function(a){a&&(!a.__started&&a.__start)&&(a.__started=!0,a.__start(),o.runHook("screen-pre-start",[a.screenName(),a]),this.delegateRun(a,"onStart"),o.runHook("screen-post-start", -[a.screenName(),a]))},this);a=fa.create();a.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/,i.bind(this.screenOnRoute,this));z.initialized.add(a.parse,a);z.changed.add(a.parse,a);z.init()};q.prototype.setHash=function(a,b){a="#"===a.substr(0,1)?a.substr(1):a;a="/"===a.substr(0,1)?a.substr(1):a;(c.isUnd(b)?0:b)?(z.changed.active=!1,z.setHash(a),z.changed.active=!0):(z.changed.active=!0,z.setHash(a))};q.prototype.bootstart=function(){this.oBoot&&this.oBoot.bootstart&&this.oBoot.bootstart();return this};r=new q; -s.newInstanceFromJson=function(a){var b=new s;return b.initByJson(a)?b:null};s.prototype.name="";s.prototype.email="";s.prototype.privateType=null;s.prototype.validate=function(){return""!==this.name||""!==this.email};s.prototype.hash=function(a){return"#"+(a?"":this.name)+"#"+this.email+"#"};s.prototype.clearDuplicateName=function(){this.name===this.email&&(this.name="")};s.prototype.type=function(){if(null===this.privateType&&(this.email&&"@facebook.com"===this.email.substr(-13)&&(this.privateType= -f.EmailType.Facebook),null===this.privateType))this.privateType=f.EmailType.Default;return this.privateType};s.prototype.search=function(a){return-1<(this.name+" "+this.email).toLowerCase().indexOf(a.toLowerCase())};s.prototype.parse=function(a){var a=c.trim(a),b=/(?:"([^"]+)")? ?,]+)>?,? ?/g.exec(a);b?(this.name=b[1]||"",this.email=b[2]||"",this.clearDuplicateName()):/^[^@]+@[^@]+$/.test(a)&&(this.name="",this.email=a)};s.prototype.initByJson=function(a){var b=!1;a&&"Object/Email"===a["@Object"]&& -(this.name=c.trim(a.Name),this.email=c.trim(a.Email),b=""!==this.email,this.clearDuplicateName());return b};s.prototype.toLine=function(a,b){var d="";""!==this.email&&(b=c.isUnd(b)?!1:!!b,a&&""!==this.name?d=b?'")+'" target="_blank" tabindex="-1">'+c.encodeHtml(this.name)+"":this.name:(d=this.email,""!==this.name?d=b?c.encodeHtml('"'+this.name+'" <')+'")+'" target="_blank" tabindex="-1">'+ -c.encodeHtml(d)+""+c.encodeHtml(">"):'"'+this.name+'" <'+d+">":b&&(d=''+c.encodeHtml(this.email)+"")));return d};s.prototype.select2Result=function(){var a="",b=e.cache().getUserPic(this.email),a=""!==b?a+(''):a+('');f.EmailType.Facebook===this.type()?(a+=""+(0('+this.name+")":this.email);return a+""};s.prototype.select2Selection=function(a){var b="";if(f.EmailType.Facebook===this.type()){if(b=0").text(b).appendTo(a),a.append(''),null}else b=0(new g.Date).getTime()-p);n&&l.oRequests[n]&&(l.oRequests[n].__aborted&&(e="abort"),l.oRequests[n]=null);l.defaultResponse(a,n,e,d,f,b)});n&&(0").addClass("rl-settings-view-model").hide().attr("data-bind",'template: {name: "'+g.__rlSettingsData.Template+'"}, i18nInit: true'), -l.appendTo(k),f.data=e.data(),f.viewModelDom=l,f.viewModelDom.addClass("rl-animation-margin"),f.__rlSettingsData=g.__rlSettingsData,g.__dom=l,g.__builded=!0,g.__vm=f,d.applyBindings(f,l[0]),r.delegateRun(f,"onBuild",[l])):c.log("Cannot find sub settings view model position: SettingsSubScreen"),f&&i.defer(function(){if(b.oCurrentSubScreen){r.delegateRun(b.oCurrentSubScreen,"onHide");b.oCurrentSubScreen.viewModelDom.hide();b.oCurrentSubScreen.viewModelDom.addClass("rl-animation-margin")}b.oCurrentSubScreen= -f;if(b.oCurrentSubScreen){b.oCurrentSubScreen.viewModelDom.show();r.delegateRun(b.oCurrentSubScreen,"onShow");i.each(b.menu(),function(a){a.selected(f&&f.__rlSettingsData&&a.route===f.__rlSettingsData.Route)});j("#rl-content .b-settings .b-content .content").scrollTop(0);b.oCurrentSubScreen.viewModelDom.removeClass("rl-animation-margin")}c.windowResize()}))};G.prototype.onHide=function(){this.oCurrentSubScreen&&this.oCurrentSubScreen.viewModelDom&&(r.delegateRun(this.oCurrentSubScreen,"onHide"),this.oCurrentSubScreen.viewModelDom.hide(), -this.oCurrentSubScreen.viewModelDom.addClass("rl-animation-margin"))};G.prototype.onBuild=function(){i.each(A.settings,function(a){a&&(a.__rlSettingsData&&!i.find(A["settings-removed"],function(b){return b&&b===a}))&&this.menu.push({route:a.__rlSettingsData.Route,label:a.__rlSettingsData.Label,selected:d.observable(!1),disabled:!!i.find(A["settings-disabled"],function(b){return b&&b===a})})},this);this.oViewModelPlace=j("#rl-content #rl-settings-subscreen")};G.prototype.routes=function(){var a=i.find(A.settings, -function(a){return a&&a.__rlSettingsData&&a.__rlSettingsData.IsDefault}),b=a?a.__rlSettingsData.Route:"general",a={subname:/^(.*)$/,normalize_:function(a,d){d.subname=c.isUnd(d.subname)?b:c.pString(d.subname);return[d.subname]}};return[["{subname}/",a],["{subname}",a],["",a]]};i.extend(ba.prototype,w.prototype);ba.prototype.onShow=function(){e.setTitle("")};i.extend(ca.prototype,G.prototype);ca.prototype.onShow=function(){e.setTitle("")};i.extend(u.prototype,ga.prototype);u.prototype.oSettings=null; -u.prototype.oLink=null;u.prototype.download=function(a){k.bMobileDevice?g.open(a):this.iframe.attr("src",a)};u.prototype.link=function(){null===this.oLink&&(this.oLink=new p);return this.oLink};u.prototype.local=function(){null===this.oLocal&&(this.oLocal=new O);return this.oLocal};u.prototype.settingsGet=function(a){null===this.oSettings&&(this.oSettings=c.isNormal(U)?U:{});return c.isUnd(this.oSettings[a])?null:this.oSettings[a]};u.prototype.settingsSet=function(a,b){null===this.oSettings&&(this.oSettings= -c.isNormal(U)?U:{});this.oSettings[a]=b};u.prototype.setTitle=function(a){a=(0=f||g-2<=f)l+=2;k(f);c=b=f}for(;0=c)k(c, -!0),l--;else if(0>=b)break;3===b?k(2,!1):3c&&k(Math.round((g+c)/2),!0,"...");1c&&k(g,!0)}return e},this);this.checkAll=f.computed({read:function(){return 0c},this);this.hasMessages=f.computed(function(){return 0'),c.after(l),c.remove();l&&l[0]&&l.attr("data-href",f).attr("data-theme",b[0]).text(b[1]);a.themeTrigger(g.SaveSettingsStep.TrueResult)}}).always(function(){a.iTimer=h.setTimeout(function(){a.themeTrigger(g.SaveSettingsStep.Idle)}, -1E3);a.oLastAjax=null}));e.remote().saveSettings(null,{Theme:b})},this)}function Na(){d.initDataConstructorBySettings(this)}function T(){d.initDataConstructorBySettings(this);var a=function(a){return function(){var b=e.cache().getFolderFromCacheList(a());b&&b.type(g.FolderType.User)}},b=function(a){return function(b){(b=e.cache().getFolderFromCacheList(b))&&b.type(a)}};this.devPassword=this.devLogin=this.devEmail="";this.accountEmail=f.observable("");this.accountLogin=f.observable("");this.projectHash= -f.observable("");this.threading=f.observable(!1);this.lastFoldersHash="";this.remoteChangePassword=this.remoteSuggestions=!1;this.sentFolder=f.observable("");this.draftFolder=f.observable("");this.spamFolder=f.observable("");this.trashFolder=f.observable("");this.sentFolder.subscribe(a(this.sentFolder),this,"beforeChange");this.draftFolder.subscribe(a(this.draftFolder),this,"beforeChange");this.spamFolder.subscribe(a(this.spamFolder),this,"beforeChange");this.trashFolder.subscribe(a(this.trashFolder), -this,"beforeChange");this.sentFolder.subscribe(b(g.FolderType.SentItems),this);this.draftFolder.subscribe(b(g.FolderType.Draft),this);this.spamFolder.subscribe(b(g.FolderType.Spam),this);this.trashFolder.subscribe(b(g.FolderType.Trash),this);this.draftFolderNotEnabled=f.computed(function(){return""===this.draftFolder()||o.Values.UnuseOptionValue===this.draftFolder()},this);this.displayName=f.observable("");this.signature=f.observable("");this.replyTo=f.observable("");this.accounts=f.observableArray([]); -this.accountsLoading=f.observable(!1);this.namespace="";this.folderList=f.observableArray([]);this.foldersListError=f.observable("");this.foldersLoading=f.observable(!1);this.foldersCreating=f.observable(!1);this.foldersDeleting=f.observable(!1);this.foldersRenaming=f.observable(!1);this.currentFolder=f.observable(null).extend({toggleSubscribe:[null,function(a){a&&a.selected(!1)},function(a){a&&a.selected(!0)}]});this.currentFolderFullNameRaw=f.computed(function(){return this.currentFolder()?this.currentFolder().fullNameRaw: -""},this);this.currentFolderFullName=f.computed(function(){return this.currentFolder()?this.currentFolder().fullName:""},this);this.currentFolderFullNameHash=f.computed(function(){return this.currentFolder()?this.currentFolder().fullNameHash:""},this);this.currentFolderName=f.computed(function(){return this.currentFolder()?this.currentFolder().name():""},this);this.folderListSystemNames=f.computed(function(){var a=["INBOX"],b=this.folderList(),e=this.sentFolder(),f=this.draftFolder(),g=this.spamFolder(), -k=this.trashFolder();d.isArray(b)&&0').appendTo("body"); -P.on("error",function(a){e&&(a&&a.originalEvent&&a.originalEvent.message&&-1===d.inArray(a.originalEvent.message,["Uncaught Error: Error calling method on NPObject."]))&&e.remote().jsError(d.emptyFunction,a.originalEvent.message,a.originalEvent.filename,a.originalEvent.lineno,location&&location.toString?location.toString():"",da.attr("class"))})}function B(){K.call(this);this.oCache=this.oRemote=this.oData=null;this.iSuggestionsLimit=d.pInt(this.settingsGet("SuggestionsLimit"));this.iSuggestionsLimit= -0===this.iSuggestionsLimit?20:this.iSuggestionsLimit;this.quotaDebounce=i.debounce(this.quota,3E4)}var o={},g={},v={},d={},x={},oa={},n={},U={settings:[],"settings-removed":[],"settings-disabled":[]},q=null,Ga=h.rainloopAppData||{},Pa=h.rainloopI18N||{},da=j("html"),P=j(h),Ha=j(h.document),pa=h.Notification&&h.Notification.requestPermission?h.Notification:null,e=null;n.minuteTick=f.observable(!0);n.fiveMinuteTick=f.observable(!0);n.langChangeTick=f.observable(!0);n.iAjaxErrorCount=0;n.iTokenErrorCount= -0;n.iMessageBodyCacheCount=0;n.bUnload=!1;n.sUserAgent=(navigator.userAgent||"").toLowerCase();n.bIsiOSDevice=-1/g,">").replace(/"/g, -""").replace(/'/g,"'"):""};d.splitPlainText=function(a,b){for(var c="",l="",e=a,f=0,g=0,b=d.isUnd(b)?100:b;e.length>b;)l=e.substring(0,b),f=l.lastIndexOf(" "),g=l.lastIndexOf("\n"),-1!==g&&(f=g),-1===f&&(f=b),c+=l.substring(0,f)+"\n",e=e.substring(f+1);return c+e};var Ia={};d.timeOutAction=function(a,b,c){d.isUnd(Ia[a])&&(Ia[a]=0);h.clearTimeout(Ia[a]);Ia[a]=h.setTimeout(b,c)};var Qa={};d.timeOutActionSecond=function(a,b,c){Qa[a]||(Qa[a]=h.setTimeout(function(){b();Qa[a]=0},c))};var Q=!1; -d.audio=function(a,b){if(!1===Q)if(n.bIsiOSDevice)Q=null;else{var c=!1,d=!1,e=h.Audio?new h.Audio:null;e&&e.canPlayType&&e.play?((c=""!==e.canPlayType('audio/mpeg; codecs="mp3"'))||(d=""!==e.canPlayType('audio/ogg; codecs="vorbis"')),c||d?(Q=e,Q.preload="none",Q.loop=!1,Q.autoplay=!1,Q.muted=!1,Q.src=c?a:b):Q=null):Q=null}return Q};d.hos=function(a,b){return a&&Object.hasOwnProperty?Object.hasOwnProperty.call(a,b):!1};d.i18n=function(a,b,c){var l="",a=d.isUnd(Pa[a])?d.isUnd(c)?a:c:Pa[a];if(!d.isUnd(b)&& -!d.isNull(b))for(l in b)d.hos(b,l)&&(a=a.replace("%"+l+"%",b[l]));return a};d.i18nToNode=function(a){i.defer(function(){j(".i18n",a).each(function(){var a=j(this),c="";(c=a.data("i18n-text"))?a.text(d.i18n(c)):((c=a.data("i18n-html"))&&a.html(d.i18n(c)),(c=a.data("i18n-placeholder"))&&a.attr("placeholder",d.i18n(c)))})})};d.i18nToDoc=function(){h.rainloopI18N&&(Pa=h.rainloopI18N||{},d.i18nToNode(Ha),n.langChangeTick(!n.langChangeTick()));h.rainloopI18N={}};d.initOnStartOrLangChange=function(a,b,c){a&& -a.call(b);c?n.langChangeTick.subscribe(function(){a&&a.call(b);c.call(b)}):a&&n.langChangeTick.subscribe(a,b)};d.inFocus=function(){var a=document.activeElement;return a&&("INPUT"===a.tagName||"TEXTAREA"===a.tagName||"IFRAME"===a.tagName||"DIV"===a.tagName&&"editorHtmlArea"===a.className&&a.contentEditable)};d.removeInFocus=function(){if(document&&document.activeElement&&document.activeElement.blur){var a=j(document.activeElement);(a.is("input")||a.is("textarea"))&&document.activeElement.blur()}}; -d.removeSelection=function(){if(h&&h.getSelection){var a=h.getSelection();a&&a.removeAllRanges&&a.removeAllRanges()}else document&&(document.selection&&document.selection.empty)&&document.selection.empty()};d.replySubjectAdd=function(a,b){var c=null,l=d.trim(b);null!==(c=(new h.RegExp("^"+a+"[\\s]?\\:(.*)$","gi")).exec(b))&&!d.isUnd(c[1])?l=a+"[2]: "+c[1]:null!==(c=(new h.RegExp("^("+a+"[\\s]?[\\[\\(]?)([\\d]+)([\\]\\)]?[\\s]?\\:.*)$","gi")).exec(b))&&!d.isUnd(c[1])&&!d.isUnd(c[2])&&!d.isUnd(c[3])? -(d.pInt(c[2]),l=c[1]+(d.pInt(c[2])+1)+c[3]):l=a+": "+b;return l};d.roundNumber=function(a,b){return Math.round(a*Math.pow(10,b))/Math.pow(10,b)};d.friendlySize=function(a){a=d.pInt(a);return 1073741824<=a?d.roundNumber(a/1073741824,1)+"GB":1048576<=a?d.roundNumber(a/1048576,1)+"MB":1024<=a?d.roundNumber(a/1024,0)+"KB":a+"B"};d.log=function(a){h.console&&h.console.log&&h.console.log(a)};d.getNotification=function(a){a=d.pInt(a);return d.isUnd(v[a])?"":v[a]};d.initNotificationLanguage=function(){v[g.Notification.InvalidToken]= -d.i18n("NOTIFICATIONS/INVALID_TOKEN");v[g.Notification.AuthError]=d.i18n("NOTIFICATIONS/AUTH_ERROR");v[g.Notification.AccessError]=d.i18n("NOTIFICATIONS/ACCESS_ERROR");v[g.Notification.ConnectionError]=d.i18n("NOTIFICATIONS/CONNECTION_ERROR");v[g.Notification.CaptchaError]=d.i18n("NOTIFICATIONS/CAPTCHA_ERROR");v[g.Notification.SocialFacebookLoginAccessDisable]=d.i18n("NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE");v[g.Notification.SocialTwitterLoginAccessDisable]=d.i18n("NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE"); -v[g.Notification.SocialGoogleLoginAccessDisable]=d.i18n("NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE");v[g.Notification.DomainNotAllowed]=d.i18n("NOTIFICATIONS/DOMAIN_NOT_ALLOWED");v[g.Notification.AccountNotAllowed]=d.i18n("NOTIFICATIONS/ACCOUNT_NOT_ALLOWED");v[g.Notification.CantGetMessageList]=d.i18n("NOTIFICATIONS/CANT_GET_MESSAGE_LIST");v[g.Notification.CantGetMessage]=d.i18n("NOTIFICATIONS/CANT_GET_MESSAGE");v[g.Notification.CantDeleteMessage]=d.i18n("NOTIFICATIONS/CANT_DELETE_MESSAGE"); -v[g.Notification.CantMoveMessage]=d.i18n("NOTIFICATIONS/CANT_MOVE_MESSAGE");v[g.Notification.CantSaveMessage]=d.i18n("NOTIFICATIONS/CANT_SAVE_MESSAGE");v[g.Notification.CantSendMessage]=d.i18n("NOTIFICATIONS/CANT_SEND_MESSAGE");v[g.Notification.InvalidRecipients]=d.i18n("NOTIFICATIONS/INVALID_RECIPIENTS");v[g.Notification.CantCreateFolder]=d.i18n("NOTIFICATIONS/CANT_CREATE_FOLDER");v[g.Notification.CantRenameFolder]=d.i18n("NOTIFICATIONS/CANT_RENAME_FOLDER");v[g.Notification.CantDeleteFolder]=d.i18n("NOTIFICATIONS/CANT_DELETE_FOLDER"); -v[g.Notification.CantDeleteNonEmptyFolder]=d.i18n("NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER");v[g.Notification.CantSubscribeFolder]=d.i18n("NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER");v[g.Notification.CantUnsubscribeFolder]=d.i18n("NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER");v[g.Notification.CantSaveSettings]=d.i18n("NOTIFICATIONS/CANT_SAVE_SETTINGS");v[g.Notification.CantSavePluginSettings]=d.i18n("NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS");v[g.Notification.DomainAlreadyExists]=d.i18n("NOTIFICATIONS/DOMAIN_ALREADY_EXISTS"); -v[g.Notification.CantInstallPackage]=d.i18n("NOTIFICATIONS/CANT_INSTALL_PACKAGE");v[g.Notification.CantDeletePackage]=d.i18n("NOTIFICATIONS/CANT_DELETE_PACKAGE");v[g.Notification.InvalidPluginPackage]=d.i18n("NOTIFICATIONS/INVALID_PLUGIN_PACKAGE");v[g.Notification.UnsupportedPluginPackage]=d.i18n("NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE");v[g.Notification.LicensingServerIsUnavailable]=d.i18n("NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE");v[g.Notification.LicensingExpired]=d.i18n("NOTIFICATIONS/LICENSING_EXPIRED"); -v[g.Notification.LicensingBanned]=d.i18n("NOTIFICATIONS/LICENSING_BANNED");v[g.Notification.DemoSendMessageError]=d.i18n("NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR");v[g.Notification.AccountAlreadyExists]=d.i18n("NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS");v[g.Notification.MailServerError]=d.i18n("NOTIFICATIONS/MAIL_SERVER_ERROR");v[g.Notification.UnknownNotification]=d.i18n("NOTIFICATIONS/UNKNOWN_ERROR");v[g.Notification.UnknownError]=d.i18n("NOTIFICATIONS/UNKNOWN_ERROR")};d.getUploadErrorDescByCode=function(a){var b= -"";switch(d.pInt(a)){case g.UploadErrorCode.FileIsTooBig:b=d.i18n("UPLOAD/ERROR_FILE_IS_TOO_BIG");break;case g.UploadErrorCode.FilePartiallyUploaded:b=d.i18n("UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED");break;case g.UploadErrorCode.FileNoUploaded:b=d.i18n("UPLOAD/ERROR_NO_FILE_UPLOADED");break;case g.UploadErrorCode.MissingTempFolder:b=d.i18n("UPLOAD/ERROR_MISSING_TEMP_FOLDER");break;case g.UploadErrorCode.FileOnSaveingError:b=d.i18n("UPLOAD/ERROR_ON_SAVING_FILE");break;case g.UploadErrorCode.FileType:b= -d.i18n("UPLOAD/ERROR_FILE_TYPE");break;default:b=d.i18n("UPLOAD/ERROR_UNKNOWN")}return b};d.killCtrlAandS=function(a){if(a=a||h.event){var b=a.target||a.srcElement,c=a.keyCode||a.which;if(a.ctrlKey&&c===g.EventKeyCode.S)a.preventDefault();else if((!b||!b.tagName||!b.tagName.match(/INPUT|TEXTAREA/i))&&a.ctrlKey&&c===g.EventKeyCode.A)h.getSelection?h.getSelection().removeAllRanges():h.document.selection&&h.document.selection.clear&&h.document.selection.clear(),a.preventDefault()}};d.createCommand=function(a, -b,c){var l=b?function(){l.canExecute&&l.canExecute()&&b.apply(a,Array.prototype.slice.call(arguments));return!1}:function(){};l.enabled=f.observable(!0);c=d.isUnd(c)?!0:c;l.canExecute=d.isFunc(c)?f.computed(function(){return l.enabled()&&c.call(a)}):f.computed(function(){return l.enabled()&&!!c});return l};d.initDataConstructorBySettings=function(a){a.ignoreFolderSubscribe=f.observable(!1);a.editorDefaultType=f.observable(g.EditorDefaultType.Html);a.showImages=f.observable(!1);a.showAnimation=f.observable(!1); -a.allowThemes=f.observable(!0);a.allowCustomLogin=f.observable(!1);a.allowLanguagesOnSettings=f.observable(!0);a.allowLanguagesOnLogin=f.observable(!0);a.desktopNotifications=f.observable(!1);a.useThreads=f.observable(!0);a.replySameFolder=f.observable(!0);a.usePreviewPane=f.observable(!0);a.useCheckboxesInList=f.observable(!0);a.showAnimation.subscribe(function(a){n.bMobileDevice?da.removeClass("rl-anim").addClass("no-rl-anim"):da.toggleClass("rl-anim",a).toggleClass("no-rl-anim",!a)});a.showAnimation.valueHasMutated(); -a.desktopNotificationsPermisions=f.computed(function(){a.desktopNotifications();var b=g.DesktopNotifications.NotSupported;if(pa&&pa.permission)switch(pa.permission.toLowerCase()){case "granted":b=g.DesktopNotifications.Allowed;break;case "denied":b=g.DesktopNotifications.Denied;break;case "default":b=g.DesktopNotifications.NotAllowed}else h.webkitNotifications&&h.webkitNotifications.checkPermission&&(b=h.webkitNotifications.checkPermission());return b});a.useDesktopNotifications=f.computed({read:function(){return a.desktopNotifications()&& -g.DesktopNotifications.Allowed===a.desktopNotificationsPermisions()},write:function(b){b?(b=a.desktopNotificationsPermisions(),g.DesktopNotifications.Allowed===b?a.desktopNotifications(!0):g.DesktopNotifications.NotAllowed===b?pa.requestPermission(function(){a.desktopNotifications.valueHasMutated();g.DesktopNotifications.Allowed===a.desktopNotificationsPermisions()?a.desktopNotifications()?a.desktopNotifications.valueHasMutated():a.desktopNotifications(!0):a.desktopNotifications()?a.desktopNotifications(!1): -a.desktopNotifications.valueHasMutated()}):a.desktopNotifications(!1)):a.desktopNotifications(!1)}});a.language=f.observable("");a.languages=f.observableArray([]);a.mainLanguage=f.computed({read:a.language,write:function(b){b!==a.language()?-1=a.diff(c,"hours")?l:a.format("L")===c.format("L")?d.i18n("MESSAGE_LIST/TODAY_AT",{TIME:c.format("LT")}):a.clone().subtract("days",1).format("L")===c.format("L")?d.i18n("MESSAGE_LIST/YESTERDAY_IN",{TIME:c.format("LT")}):a.year()===c.year()?c.format("D MMM."):c.format("LL")},a)};d.isFolderExpanded=function(a){var b=e.local().get(g.ClientSideKeyName.ExpandedFolders); -return i.isArray(b)&&-1!==i.indexOf(b,a)};d.setExpandedFolder=function(a,b){var c=e.local().get(g.ClientSideKeyName.ExpandedFolders);i.isArray(c)||(c=[]);b?(c.push(a),c=i.uniq(c)):c=i.without(c,a);e.local().set(g.ClientSideKeyName.ExpandedFolders,c)};d.initLayoutResizer=function(a,b,c,d,f,t,g,k){var d=d||300,f=f||500,t=t||f-d/2,g=g||300,h=0,p=j(a),V=j(b),r=j(c),b=e.local().get(k)||t,H=function(a,b,c){if(b||c)a=r.width(),b=b?100*(b.size.width/a):null,null===b&&c&&(b=100*(p.width()/a)),null!==b&&(p.css({width:"", -height:"",right:""+(100-b)+"%"}),V.css({width:"",height:"",left:""+b+"%"}))};b&&p.width(b);h=r.width()-g;h=f>h?h:f;p.resizable({minWidth:d,maxWidth:h,handles:"e",resize:H,stop:H});H(null,null,!0);P.resize(i.throttle(function(b,c){c&&(c.element&&c.element[0].id&&"#"+c.element[0].id===""+a)&&(h=r.width()-g,h=f>h?h:f,p.resizable("option","maxWidth",h),c.size&&c.size.width&&e.local().set(k,c.size.width),H(null,null,!0))},400))};d.initBlockquoteSwitcher=function(a){if(a){var b=j("blockquote:not(.rl-bq-switcher)", -a).filter(function(){return 0===j(this).parent().closest("blockquote",a).length});b&&0').insertBefore(a).click(function(){a.toggleClass("hidden-bq");d.windowResize()}).after("
").before("
")})}};d.removeBlockquoteSwitcher=function(a){a&&(j(a).find("blockquote.rl-bq-switcher").each(function(){j(this).removeClass("rl-bq-switcher hidden-bq")}), -j(a).find(".rlBlockquoteSwitcher").each(function(){j(this).remove()}))};d.extendAsViewModel=function(a,b){b&&(b.__name=a,x.regViewModelHook(a,b),i.extend(b.prototype,D.prototype))};d.addSettingsViewModel=function(a,b,c,d,e){a.__rlSettingsData={Label:c,Template:b,Route:d,IsDefault:!!e};U.settings.push(a)};d.removeSettingsViewModel=function(a){U["settings-removed"].push(a)};d.disableSettingsViewModel=function(a){U["settings-disabled"].push(a)};d.convertThemeName=function(a){return d.trim(a.replace(/[^a-zA-Z]/g, -" ").replace(/([A-Z])/g," $1").replace(/[\s]+/g," "))};d.convertLangName=function(a){return d.i18n("LANGS_NAMES/LANG_"+a.toUpperCase().replace(/[^a-zA-Z0-9]+/,"_"),null,a)};d.fakeMd5=function(a){for(var b="",a=d.isUnd(a)?32:d.pInt(a);b.length/g,">").replace(/")}; -d.draggeblePlace=function(){return j('
 
').appendTo("#rl-hidden")};d.defautOptionsAfterRender=function(a,b){b&&!d.isUnd(b.disable)&&f.applyBindingsToNode(a,{disable:b.disable},b)};d.windowPopupKnockout=function(a,b,c,l){var e=null,f=h.open(""),g="__OpenerApplyBindingsUid"+d.fakeMd5()+"__",k=j("#"+b);h[g]=function(){if(f&&f.document.body&&k&&k[0]){var b=j(f.document.body);j("#rl-content",b).html(k.html()); -j("html",f.document).addClass("external "+j("html").attr("class"));d.i18nToNode(b);F.prototype.applyExternal(a,j("#rl-content",b)[0]);h[g]=null;l(f)}};f.document.open();f.document.write(''+d.encodeHtml(c)+'
'); -f.document.close();e=f.document.createElement("script");e.type="text/javascript";e.innerHTML="if(window&&window.opener&&window.opener['"+g+"']){window.opener['"+g+"']();window.opener['"+g+"']=null}";f.document.getElementsByTagName("head")[0].appendChild(e)};d.settingsSaveHelperFunction=function(a,b,c,l){c=c||null;l=d.isUnd(l)?1E3:d.pInt(l);return function(d,e,f,k,h){b.call(c,e&&e.Result?g.SaveSettingsStep.TrueResult:g.SaveSettingsStep.FalseResult);a&&a.call(c,d,e,f,k,h);i.delay(function(){b.call(c, -g.SaveSettingsStep.Idle)},l)}};d.settingsSaveHelperSimpleFunction=function(a,b){return d.settingsSaveHelperFunction(null,a,b,1E3)};d.resizeAndCrop=function(a,b,c){var d=new Image;d.onload=function(){var a=[0,0],d=document.createElement("canvas"),l=d.getContext("2d");d.width=b;d.height=b;a=this.width>this.height?[this.width-this.height,0]:[0,this.height-this.width];l.fillStyle="#fff";l.fillRect(0,0,b,b);l.drawImage(this,a[0]/2,a[1]/2,this.width-a[0],this.height-a[1],0,0,b,b);c(d.toDataURL("image/jpeg"))}; -d.src=a};oa={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",urlsafe_encode:function(a){return oa.encode(a).replace(/[+]/g,"-").replace(/[\/]/g,"_").replace(/[=]/g,".")},encode:function(a){for(var b="",c,d,e,f,g,k,h=0,a=oa._utf8_encode(a);h>2,c=(c&3)<<4|d>>4,g=(d&15)<<2|e>>6,k=e&63,isNaN(d)?g=k=64:isNaN(e)&&(k=64),b=b+this._keyStr.charAt(f)+this._keyStr.charAt(c)+this._keyStr.charAt(g)+this._keyStr.charAt(k); -return b},decode:function(a){for(var b="",c,d,e,f,g,k=0,a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,d=(d&15)<<4|f>>2,e=(f&3)<<6|g,b+=String.fromCharCode(c),64!==f&&(b+=String.fromCharCode(d)),64!==g&&(b+=String.fromCharCode(e));return oa._utf8_decode(b)},_utf8_encode:function(a){for(var a=a.replace(/\r\n/g,"\n"),b="",c=0,d=a.length, -e=0;ce?b+=String.fromCharCode(e):(127e?b+=String.fromCharCode(e>>6|192):(b+=String.fromCharCode(e>>12|224),b+=String.fromCharCode(e>>6&63|128)),b+=String.fromCharCode(e&63|128));return b},_utf8_decode:function(a){for(var b="",c=0,d=0,e=0,f=0;cd?(b+=String.fromCharCode(d),c++):191d?(e=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|e&63),c+=2):(e=a.charCodeAt(c+1),f=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12| -(e&63)<<6|f&63),c+=3);return b}};f.bindingHandlers.tooltip={init:function(a,b){if(!n.bMobileDevice){var c=j(a).data("tooltip-class")||"";j(a).tooltip({delay:{show:500,hide:100},html:!0,trigger:"hover",title:function(){return''+d.i18n(f.utils.unwrapObservable(b()))+""}})}}};f.bindingHandlers.tooltip2={init:function(a,b){var c=j(a).data("tooltip-class")||"";j(a).tooltip({delay:{show:500,hide:100},html:!0,title:function(){return''+b()()+""}})}};f.bindingHandlers.popover={init:function(a,b){j(a).popover(f.utils.unwrapObservable(b()))}};f.bindingHandlers.resizecrop={init:function(a){j(a).addClass("resizecrop").resizecrop({width:"100",height:"100",wrapperCSS:{"border-radius":"10px"}})},update:function(a,b){b()();j(a).resizecrop({width:"100",height:"100"})}};f.bindingHandlers.onEnter={init:function(a,b,c,d){j(a).on("keypress",function(c){c&&13===h.parseInt(c.keyCode,10)&&(j(a).trigger("change"),b().call(d))})}};f.bindingHandlers.onEsc= -{init:function(a,b,c,d){j(a).on("keypress",function(c){c&&27===h.parseInt(c.keyCode,10)&&(j(a).trigger("change"),b().call(d))})}};f.bindingHandlers.modal={init:function(a,b){j(a).modal({keyboard:!1,show:f.utils.unwrapObservable(b())}).on("hidden",function(){b()(!1)})},update:function(a,b){var c=f.utils.unwrapObservable(b());j(a).modal(c?"show":"hide");i.delay(function(){j(a).toggleClass("popup-active",c)},1)}};f.bindingHandlers.i18nInit={init:function(a){d.i18nToNode(a)}};f.bindingHandlers.i18nUpdate= -{update:function(a,b){f.utils.unwrapObservable(b());d.i18nToNode(a)}};f.bindingHandlers.link={update:function(a,b){j(a).attr("href",f.utils.unwrapObservable(b()))}};f.bindingHandlers.title={update:function(a,b){j(a).attr("title",f.utils.unwrapObservable(b()))}};f.bindingHandlers.textF={init:function(a,b){j(a).text(f.utils.unwrapObservable(b()))}};f.bindingHandlers.initDom={init:function(a,b){b()(a)}};f.bindingHandlers.initResizeTrigger={init:function(a,b){var c=f.utils.unwrapObservable(b());j(a).css({height:c[1], -"min-height":c[1]})},update:function(a,b){var c=f.utils.unwrapObservable(b()),l=d.pInt(c[1]),e=0,e=j(a).offset().top;0=c.left&&a.pageX<=c.left+l.width()&&(a.pageY>=b-100&&a.pageY<=b&&(b=function(){l.scrollTop(l.scrollTop()+3);d.windowResize()},l.data("timerScroll",h.setInterval(b,10)),b()),a.pageY>=c.top&&a.pageY<=c.top+100))c=function(){l.scrollTop(l.scrollTop()-3);d.windowResize()},l.data("timerScroll", -h.setInterval(c,10)),c()})},c.stop=function(){j(l).each(function(){h.clearInterval(j(this).data("timerScroll"));j(this).data("timerScroll",!1)})});c.helper=function(a){return b()(a&&a.target?f.dataFor(a.target):null)};j(a).draggable(c).on("mousedown",function(){d.removeInFocus()})}}};f.bindingHandlers.droppable={init:function(a,b,c){if(!n.bMobileDevice){var d=b(),e=(b=c())&&b.droppableOver?b.droppableOver:null,f=b&&b.droppableOut?b.droppableOut:null,b={tolerance:"pointer",hoverClass:"droppableHover"}; -d&&(b.drop=function(a,b){d(a,b)},e&&(b.over=function(a,b){e(a,b)}),f&&(b.out=function(a,b){f(a,b)}),j(a).droppable(b))}}};f.bindingHandlers.nano={init:function(a){n.bDisableNanoScroll||j(a).addClass("nano").nanoScroller({iOSNativeScrolling:!1,preventPageScrolling:!0})}};f.bindingHandlers.saveTrigger={init:function(a){j(a).append('  ').addClass("settings-saved-trigger")},update:function(a, -b){var c=f.utils.unwrapObservable(b()),d=j(a);switch(c.toString()){case "1":d.find(".animated,.error").hide().removeClass("visible").end().find(".success").show().addClass("visible");break;case "0":d.find(".animated,.success").hide().removeClass("visible").end().find(".error").show().addClass("visible");break;case "-2":d.find(".error,.success").hide().removeClass("visible").end().find(".animated").show().addClass("visible");break;default:d.find(".animated").hide().end().find(".error,.success").removeClass("visible")}}}; -f.bindingHandlers.select2={init:function(a,b){var c=0,l=null,g=new h.RegExp(/[a-zA-Z0-9\.\-_]+@[a-zA-Z0-9\.\-_]+/),t=new h.RegExp(/(.+) [<]?([^\s<@]+@[a-zA-Z0-9\.\-_]+)[>]?/),y=function(){return""},k=function(a){e.getAutocomplete(a.term,a.page,function(b,c){a.callback({more:!!c,results:i.map(b,function(a){var b=a.toLine(!1);return{id:b,text:b,c:a}})})})};j(a).addClass("ko-select2").select2({query:function(a){a&&(0===c?(k(a),c=h.setTimeout(d.emptyFunction,100)):(h.clearInterval(c),c=h.setTimeout(function(){k(a)}, -100)))},formatSelection:function(a,b){var c=a&&a.c?a.c.select2Selection(b):a.text;if(null!==c)return c},formatResult:function(a,b,c,d){b=a&&a.c?a.c.select2Result(b):"";return""===b?d(a.text):b},createSearchChoice:function(a,b){return 0===b.length&&g.test(a)?{id:a,text:a}:null},formatNoMatches:y,formatSearching:function(){return d.i18n("SUGGESTIONS/SEARCHING_DESC")},formatInputTooShort:y,formatSelectionTooBig:y,multiple:!0,tokenSeparators:[",",";"],minimumInputLength:2,selectOnBlur:!1,closeOnSelect:!0, -openOnEnter:!1});f.utils.domNodeDisposal.addDisposeCallback(a,function(){j(a).select2("destroy")});j(a).on("change",function(){for(var a=j(this).select2("data"),c=0,e=a.length,f=null,g=[];cd.pInt(j.browser.version)? -(c=this.getEditorRange())&&c.execCommand("forecolor"===a?"ForeColor":"BackColor",!1,b):(c=j.browser.msie?"forecolor"===a?"ForeColor":"BackColor":"forecolor"===a?"foreColor":"backColor",this.ec(c,!1,b))};u.prototype.isHtml=function(){return!0===this.bOnlyPlain?!1:this.textarea.is(":hidden")};u.prototype.toHtmlString=function(){return this.editor.innerHTML};u.prototype.toString=function(){return this.editor.innerText};u.prototype.updateTextArea=function(){this.textarea.val(this.toHtmlString())};u.prototype.updateHtmlArea= -function(){this.editor.innerHTML=this.textarea.val()};u.prototype.setRawText=function(a,b){b&&!this.bOnlyPlain?(this.isHtml()||(this.textarea.val(""),this.switchToHtml()),this.textarea.val(a.toString()),this.updateHtmlArea()):(this.textarea.val(a.toString()),this.updateHtmlArea(),this.switchToPlain(!1))};u.prototype.clear=function(){this.textarea.val("");this.editor.innerHTML="";this.bOnlyPlain?(this.toolbar.hide(),this.switchToPlain(!1)):this.switchToHtml()};u.prototype.getTextForRequest=function(){this.isHtml()&& -this.updateTextArea();return this.textarea.val()};u.prototype.getTextFromHtml=function(a){var b="",c=function(){if(arguments&&1 "+d.trim(a).replace(/\n/gm,"\n> ")+"\n>\n";return a.replace(/\n([> ]+)/gm,function(){return arguments&&1]*>([\s\S]*)<\/div>/gmi,e),a="\n"+d.trim(a)+"\n");return a}return""},a=d.isUnd(a)?!0:!!a,b=this.toHtmlString().replace(/[\s]+/gm," ").replace(//gmi,"\n").replace(/<\/h\d>/gi,"\n").replace(/<\/p>/gi,"\n\n").replace(/<\/li>/gi,"\n").replace(/<\/td>/gi,"\n").replace(/<\/tr>/gi,"\n").replace(/]*>/gmi,"\n_______________________________\n\n").replace(/]*>/gmi,"").replace(/]*>([\s\S]*)<\/div>/gmi,e).replace(/]*>/gmi,"\n__bq__start__\n").replace(/<\/blockquote>/gmi, -"\n__bq__end__\n").replace(/]*>([\s\S]*?)<\/a>/gmi,function(){return arguments&&1]*>/gm,"").replace(/>/gi,">").replace(/</gi,"<").replace(/&/gi,"&").replace(/&\w{2,6};/gi,"");return(a?d.splitPlainText(b):b).replace(/\n[ \t]+/gm,"\n").replace(/[\n]{3,}/gm,"\n\n").replace(/__bq__start__([\s\S]*)__bq__end__/gm,c).replace(/__bq__start__/gm,"").replace(/__bq__end__/gm,"")};u.prototype.getHtmlFromText=function(){return d.convertPlainTextToHtml(this.textarea.val())}; -u.prototype.switchToggle=function(){this.isHtml()?this.switchToPlain():this.switchToHtml()};u.prototype.switchToPlain=function(a){var a=d.isUnd(a)?!0:a,b=this.getTextFromHtml(),c=i.bind(function(a){a&&(this.toolbar.addClass("editorHideToolbar"),j(".editorSwitcher",this.toolbar).text(this.switcherLinkText(!1)),this.textarea.val(b),this.textarea.show(),this.htmlarea.hide(),this.fOnSwitch&&this.fOnSwitch(!1))},this);!a||0===d.trim(b).length?c(!0):c(h.confirm(this.oOptions.LangSwitcherConferm))};u.prototype.switcherLinkText= -function(a){return a?this.oOptions.LangSwitcherTextLabel:this.oOptions.LangSwitcherHtmlLabel};u.prototype.switchToHtml=function(){this.toolbar.removeClass("editorHideToolbar");j(".editorSwitcher",this.toolbar).text(this.switcherLinkText(!0));this.textarea.val(this.getHtmlFromText());this.updateHtmlArea();this.textarea.hide();this.htmlarea.show();this.fOnSwitch&&this.fOnSwitch(!0)};u.prototype.addButton=function(a,b){var c=this;j("
").addClass("editorToolbarButtom").append(j('').addClass(a)).attr("title", -b).click(function(b){d.isUnd(u.htmlFunctions[a])?h.alert(a):u.htmlFunctions[a].apply(c,[j(this),b])}).appendTo(this.toolbar)};u.htmlInitToolbar=function(){if(!this.bOnlyPlain){this.addButton("bold","Bold");this.addButton("italic","Italic");this.addButton("underline","Underline");this.addButton("strikethrough","Strikethrough");this.addButton("removeformat","removeformat");this.addButton("justifyleft","justifyleft");this.addButton("justifycenter","justifycenter");this.addButton("justifyright","justifyright"); -this.addButton("horizontalrule","horizontalrule");this.addButton("orderedlist","orderedlist");this.addButton("unorderedlist","unorderedlist");this.addButton("indent","indent");this.addButton("outdent","outdent");this.addButton("forecolor","forecolor");var a=this;j("").addClass("editorSwitcher").text(a.switcherLinkText(!0)).click(function(){a.switchToggle()}).appendTo(a.toolbar)}};u.htmlInitEditor=function(){this.editor=this.htmlarea[0];this.editor.innerHTML=this.textarea.val()};u.htmlAttachEditorEvents= -function(){var a=this,b=function(b){if(b=(b&&b.originalEvent?b.originalEvent:b)||h.event){b.stopPropagation();b.preventDefault();var c=null,d=null;if((b=b.files||(b.dataTransfer?b.dataTransfer.files:null))&&1===b.length&&b[0]&&b[0].type&&0===b[0].type.indexOf("image/")){var d=b[0],c=new h.FileReader,e=d;c.onload=function(b){a.insertImage(b.target.result,e.name)};c.readAsDataURL(d)}}a.htmlarea.removeClass("editorDragOver")},c=function(){a.htmlarea.removeClass("editorDragOver")},d=function(b){b.stopPropagation(); -b.preventDefault();a.htmlarea.addClass("editorDragOver")},e=function(b){(b=b&&b.clipboardData?b.clipboardData:b&&b.originalEvent&&b.originalEvent.clipboardData?b.originalEvent.clipboardData:null)&&b.items&&i.each(b.items,function(b){if(b&&(b.type&&0===b.type.indexOf("image/"))&&b.getAsFile){var c=null,d=b.getAsFile();d&&(c=new h.FileReader,c.onload=function(b){a.insertImage(b.target.result,d.name)},c.readAsDataURL(d))}})};!this.bOnlyPlain&&(h.File&&h.FileReader&&h.FileList)&&(this.htmlarea.bind("dragover", -d),this.htmlarea.bind("dragleave",c),this.htmlarea.bind("drop",b),this.htmlarea.bind("paste",e))};for(var ta=u,ua=[],Wa=[],Y=0,Z=0,Ja=0,Ka=0,Z="",Y=0;256>Y;Y+=85)Z=Y.toString(16),ua.push(1===Z.length?"0"+Z:Z);Ka=ua.length;for(Y=0;Y
'),Za=va.find(".editorFpFonts"), -$a=function(){};j.each("Arial;Arial Black;Courier New;Tahoma;Times New Roman;Verdana".split(";"),function(a,b){Za.append(j(''+b+"").click(function(){$a(b)}));Za.append("
")});va.hide();ta.htmlFontPicker=function(a,b,c){Ya||(va.appendTo(c),Ya=!0);$a=b;Xa.unbind("click.fpNamespace");h.setTimeout(function(){Xa.one("click.fpNamespace",function(){va.hide()})},500);b=j(a).position();va.css("top",5+b.top+ -j(a).height()+"px").css("left",b.left+"px").show()};var ta=u,ab=j(h.document),bb=!1,wa=j('
'),cb=wa.find(".editorCpColors"),db=function(){};j.each(u.htmlColorPickerColors,function(a,b){cb.append('')});wa.hide();j(".editorCpColor",cb).click(function(a){var b=1,c="#000000",a=j(a.target).css("background-color"), -c=a.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(null!==c){for(delete c[0];3>=b;++b)c[b]=d.pInt(c[b]).toString(16),1===c[b].length&&(c[b]="0"+c[b]);c="#"+c.join("")}else c=a;db(c)});ta.htmlColorPicker=function(a,b,c){bb||(wa.appendTo(c),bb=!0);c=j(a).position();db=b;ab.unbind("click.cpNamespace");h.setTimeout(function(){ab.one("click.cpNamespace",function(){wa.hide()})},100);wa.css("top",5+c.top+j(a).height()+"px").css("left",c.left+"px").show()};u.htmlFunctions={bold:function(){this.ec("bold")}, -italic:function(){this.ec("italic")},underline:function(){this.ec("underline")},strikethrough:function(){this.ec("strikethrough")},indent:function(){this.ec("indent")},outdent:function(){this.ec("outdent")},justifyleft:function(){this.ec("justifyLeft")},justifycenter:function(){this.ec("justifyCenter")},justifyright:function(){this.ec("justifyRight")},horizontalrule:function(){this.ec("insertHorizontalRule",!1,"ht")},removeformat:function(){this.ec("removeFormat")},orderedlist:function(){this.ec("insertorderedlist")}, -unorderedlist:function(){this.ec("insertunorderedlist")},forecolor:function(a){u.htmlColorPicker(a,i.bind(function(a){this.setcolor("forecolor",a)},this),this.toolbar)},backcolor:function(a){u.htmlColorPicker(a,i.bind(function(a){this.setcolor("backcolor",a)},this),this.toolbar)},fontname:function(a){u.htmlFontPicker(a,i.bind(function(a){this.ec("fontname",!1,a)},this),this.toolbar)}};M.prototype.selectItemCallbacks=function(a){(this.oCallbacks.onItemSelect||this.emptyFunction)(a)};M.prototype.init= -function(a,b){this.oContentVisible=a;this.oContentScrollable=b;if(this.oContentVisible&&this.oContentScrollable){var c=this;j(this.oContentVisible).on("click",this.sItemSelector,function(a){c.actionClick(f.dataFor(this),a)}).on("click",this.sItemCheckedSelector,function(a){var b=f.dataFor(this);b&&(a&&a.shiftKey?c.actionClick(b,a):(c.sLastUid=c.getItemUid(b),b.selected()?(b.checked(!1),c.selectedItem(null)):b.checked(!b.checked())))});j(h.document).on("keydown",function(a){var b=!0;if(a&&c.bUseKeyboard&& -!d.inFocus())if(-1d?0:d;y=k[d];break}}else if(g.EventKeyCode.Down===a||g.EventKeyCode.Insert===a||g.EventKeyCode.Home=== -a||g.EventKeyCode.PageUp===a)y=k[0];else if(g.EventKeyCode.Up===a||g.EventKeyCode.End===a||g.EventKeyCode.PageDown===a)y=k[k.length-1];y?(p&&(b?(g.EventKeyCode.Up===a||g.EventKeyCode.Down===a)&&p.checked(!p.checked()):g.EventKeyCode.Insert===a&&p.checked(!p.checked())),this.throttleSelection=!0,this.selectedItem(y),this.throttleSelection=!0,0!==this.iSelectTimer?(h.clearTimeout(this.iSelectTimer),this.iSelectTimer=h.setTimeout(function(){c.iSelectTimer=0;c.actionClick(y)},1E3)):(this.iSelectTimer= -h.setTimeout(function(){c.iSelectTimer=0},200),this.actionClick(y)),this.scrollToSelected()):p&&(b&&(g.EventKeyCode.Up===a||g.EventKeyCode.Down===a)?p.checked(!p.checked()):g.EventKeyCode.Insert===a&&p.checked(!p.checked()))};M.prototype.scrollToSelected=function(){if(!this.oContentVisible||!this.oContentScrollable)return!1;var a=j(this.sItemSelectedSelector,this.oContentScrollable),b=a.position(),c=this.oContentVisible.height(),a=a.outerHeight();return b&&(0>b.top||b.top+a>c)?(0>b.top?this.oContentScrollable.scrollTop(this.oContentScrollable.scrollTop()+ -b.top-20):this.oContentScrollable.scrollTop(this.oContentScrollable.scrollTop()+b.top-c+a+20),!0):!1};M.prototype.eventClickFunction=function(a,b){var c=this.getItemUid(a),d=0,e=0,f=null,g="",k=!1,h=!1,i=[],j=!1;if(b&&b.shiftKey&&""!==c&&""!==this.sLastUid&&c!==this.sLastUid){i=this.list();j=a.checked();d=0;for(e=i.length;d").addClass("rl-view-model").addClass("RL-"+c.viewModelTemplate()).hide().attr("data-bind",'template: {name: "'+c.viewModelTemplate()+'"}, i18nInit: true'),t.appendTo(g),c.viewModelDom=t,a.__dom=t,"Popups"===l&&(c.cancelCommand=c.closeCommand=d.createCommand(c,function(){q.hideScreenPopup(a)})),x.runHook("view-model-pre-build",[a.__name,c,t]),f.applyBindings(c,t[0]),this.delegateRun(c,"onBuild",[t]),x.runHook("view-model-post-build",[a.__name,c,t])):d.log("Cannot find view model position: "+ -l)}return a?a.__vm:null};F.prototype.applyExternal=function(a,b){a&&b&&f.applyBindings(a,b)};F.prototype.hideScreenPopup=function(a){a&&(a.__vm&&a.__dom)&&(a.__dom.hide(),a.__vm.modalVisibility(!1),this.delegateRun(a.__vm,"onHide"),this.popupVisibility(!1),i.defer(function(){a.__dom.find(".ko-select2").select2("close")}))};F.prototype.showScreenPopup=function(a,b){a&&(this.buildViewModel(a),a.__vm&&a.__dom&&(a.__dom.show(),a.__vm.modalVisibility(!0),this.delegateRun(a.__vm,"onShow",b||[]),this.popupVisibility(!0), -x.runHook("view-model-on-show",[a.__name,a.__vm,b||[]])))};F.prototype.screenOnRoute=function(a,b){var c=this,e=null,f=null;""===d.pString(a)&&(a=this.sDefaultScreenName);if(""!==a){e=this.screen(a);if(!e&&(e=this.screen(this.sDefaultScreenName)))b=a+"/"+b,a=this.sDefaultScreenName;e&&e.__started&&(e.__builded||(e.__builded=!0,d.isNonEmptyArray(e.viewModels())&&i.each(e.viewModels(),function(a){this.buildViewModel(a,e)},this),this.delegateRun(e,"onBuild")),i.defer(function(){if(c.oCurrentScreen){c.delegateRun(c.oCurrentScreen, -"onHide");d.isNonEmptyArray(c.oCurrentScreen.viewModels())&&i.each(c.oCurrentScreen.viewModels(),function(a){if(a.__vm&&a.__dom&&"Popups"!==a.__vm.viewModelPosition()){a.__dom.hide();a.__vm.viewModelVisibility(false);c.delegateRun(a.__vm,"onHide")}})}c.oCurrentScreen=e;if(c.oCurrentScreen){c.delegateRun(c.oCurrentScreen,"onShow");x.runHook("screen-on-show",[c.oCurrentScreen.screenName(),c.oCurrentScreen]);d.isNonEmptyArray(c.oCurrentScreen.viewModels())&&i.each(c.oCurrentScreen.viewModels(),function(a){if(a.__vm&& -a.__dom&&"Popups"!==a.__vm.viewModelPosition()){a.__dom.show();a.__vm.viewModelVisibility(true);c.delegateRun(a.__vm,"onShow");x.runHook("view-model-on-show",[a.__name,a.__vm])}},c)}(f=e.__cross())&&f.parse(b)}))}};F.prototype.startScreens=function(a){i.each(a,function(a){var c=(a=new a)?a.screenName():"";a&&""!==c&&(""===this.sDefaultScreenName&&(this.sDefaultScreenName=c),this.oScreens[c]=a)},this);i.each(this.oScreens,function(a){a&&(!a.__started&&a.__start)&&(a.__started=!0,a.__start(),x.runHook("screen-pre-start", -[a.screenName(),a]),this.delegateRun(a,"onStart"),x.runHook("screen-post-start",[a.screenName(),a]))},this);a=Ra.create();a.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/,i.bind(this.screenOnRoute,this));R.initialized.add(a.parse,a);R.changed.add(a.parse,a);R.init()};F.prototype.setHash=function(a,b){a="#"===a.substr(0,1)?a.substr(1):a;a="/"===a.substr(0,1)?a.substr(1):a;(d.isUnd(b)?0:b)?(R.changed.active=!1,R.setHash(a),R.changed.active=!0):(R.changed.active=!0,R.setHash(a))};F.prototype.bootstart=function(){this.oBoot&& -this.oBoot.bootstart&&this.oBoot.bootstart();return this};q=new F;G.newInstanceFromJson=function(a){var b=new G;return b.initByJson(a)?b:null};G.prototype.name="";G.prototype.email="";G.prototype.privateType=null;G.prototype.validate=function(){return""!==this.name||""!==this.email};G.prototype.hash=function(a){return"#"+(a?"":this.name)+"#"+this.email+"#"};G.prototype.clearDuplicateName=function(){this.name===this.email&&(this.name="")};G.prototype.type=function(){if(null===this.privateType&&(this.email&& -"@facebook.com"===this.email.substr(-13)&&(this.privateType=g.EmailType.Facebook),null===this.privateType))this.privateType=g.EmailType.Default;return this.privateType};G.prototype.search=function(a){return-1<(this.name+" "+this.email).toLowerCase().indexOf(a.toLowerCase())};G.prototype.parse=function(a){var a=d.trim(a),b=/(?:"([^"]+)")? ?,]+)>?,? ?/g.exec(a);b?(this.name=b[1]||"",this.email=b[2]||"",this.clearDuplicateName()):/^[^@]+@[^@]+$/.test(a)&&(this.name="",this.email=a)};G.prototype.initByJson= -function(a){var b=!1;a&&"Object/Email"===a["@Object"]&&(this.name=d.trim(a.Name),this.email=d.trim(a.Email),b=""!==this.email,this.clearDuplicateName());return b};G.prototype.toLine=function(a,b){var c="";""!==this.email&&(b=d.isUnd(b)?!1:!!b,a&&""!==this.name?c=b?'")+'" target="_blank" tabindex="-1">'+d.encodeHtml(this.name)+"":this.name:(c=this.email,""!==this.name?c=b?d.encodeHtml('"'+this.name+'" <')+'")+'" target="_blank" tabindex="-1">'+d.encodeHtml(c)+""+d.encodeHtml(">"):'"'+this.name+'" <'+c+">":b&&(c=''+d.encodeHtml(this.email)+"")));return c};G.prototype.select2Result=function(){var a="",b=e.cache().getUserPic(this.email),a=""!==b?a+(''):a+('');g.EmailType.Facebook===this.type()?(a+=""+(0'):a+=""+(0('+this.name+")":this.email);return a+""};G.prototype.select2Selection=function(a){var b="";if(g.EmailType.Facebook===this.type()){if(b=0").text(b).appendTo(a),a.append(''), -null}else b=0+$/, -""),b=!0);return b};E.prototype.isImage=function(){return-1+$/,""),b=i.find(c,function(b){return a===b.cidWithOutTags}));return b||null};m.prototype.messageId=function(){return this.sMessageId};m.prototype.inReplyTo=function(){return this.sInReplyTo};m.prototype.references=function(){return this.sReferences};m.prototype.fromAsSingleEmail=function(){return d.isArray(this.from)&& -this.from[0]?this.from[0].email:""};m.prototype.viewLink=function(){return e.link().messageViewLink(this.requestHash)};m.prototype.downloadLink=function(){return e.link().messageDownloadLink(this.requestHash)};m.prototype.replyEmails=function(a){var b=[],a=d.isUnd(a)?{}:a;m.replyHelper(this.replyTo,a,b);0===b.length&&m.replyHelper(this.from,a,b);return b};m.prototype.replyAllEmails=function(a){var b=[],c=[],a=d.isUnd(a)?{}:a;m.replyHelper(this.replyTo,a,b);0===b.length&&m.replyHelper(this.from,a, -b);m.replyHelper(this.to,a,b);m.replyHelper(this.cc,a,c);return[b,c]};m.prototype.textBodyToString=function(){return this.body?this.body.html():""};m.prototype.attachmentsToStringLine=function(){var a=i.map(this.attachments(),function(a){return a.fileName+" ("+a.friendlySize+")"});return a&&0
"+k+":

"+p+"
";break;case g.ComposeType.Forward:aa=r.fromToLine(!1,!0);t=r.toToLine(!1,!0);h=r.ccToLine(!1,!0);p="


"+ -d.i18n("COMPOSE/FORWARD_MESSAGE_TOP_TITLE")+"
"+d.i18n("COMPOSE/FORWARD_MESSAGE_TOP_FROM")+": "+aa+"
"+d.i18n("COMPOSE/FORWARD_MESSAGE_TOP_TO")+": "+t+(0"+d.i18n("COMPOSE/FORWARD_MESSAGE_TOP_CC")+": "+h:"")+"
"+d.i18n("COMPOSE/FORWARD_MESSAGE_TOP_SENT")+": "+d.encodeHtml(k)+"
"+d.i18n("COMPOSE/FORWARD_MESSAGE_TOP_SUBJECT")+": "+d.encodeHtml(m)+"

"+p;break;case g.ComposeType.ForwardAsAttachment:p=""}this.oEditor.setRawText(p,r.isHtml)}}else this.oEditor&& -g.ComposeType.Empty===a?this.oEditor.setRawText("
"+d.convertPlainTextToHtml(e.data().signature()),g.EditorDefaultType.Html===e.data().editorDefaultType()):d.isNonEmptyArray(b)&&i.each(b,function(a){f.addMessageAsAttachment(a)});r=this.getAttachmentsDownloadsForUpload();d.isNonEmptyArray(r)&&e.remote().messageUploadAttachments(function(a,b){if(g.StorageResultType.Success===a&&b&&b.Result){var c=null,d="";if(!f.viewModelVisibility())for(d in b.Result)b.Result.hasOwnProperty(d)&&(c=f.getAttachmentById(b.Result[d]))&& -c.tempName(d)}else f.setMessageAttachmentFailedDowbloadText()},r);V&&this.oEditor&&this.oEditor.focus();this.triggerForResize()};z.prototype.onBuild=function(){this.initEditor();this.initUploader();var a=this,b=null;P.on("keydown",function(b){var d=!0;b&&(a.modalVisibility()&&e.data().useKeyboardShortcuts())&&(b.ctrlKey&&g.EventKeyCode.S===b.keyCode?(a.saveCommand(),d=!1):b.ctrlKey&&g.EventKeyCode.Enter===b.keyCode&&(a.sendCommand(),d=!1));return d});P.on("resize",function(){a.triggerForResize()}); -this.dropboxEnabled()&&(b=document.createElement("script"),b.type="text/javascript",b.src="https://www.dropbox.com/static/api/1/dropins.js",j(b).attr("id","dropboxjs").attr("data-app-key",e.settingsGet("DropboxApiKey")),document.body.appendChild(b))};z.prototype.getAttachmentById=function(a){for(var b=this.attachments(),c=0,d=b.length;cb.data("rl-cache-count")&&(b.addClass("rl-cache-purge"),a++)}),0').hide().addClass("rl-cache-class"),h.data("rl-cache-count",++n.iMessageBodyCacheCount),d.isNormal(a.Result.Html)&&""!==a.Result.Html?(c=!0,h.html(a.Result.Html.toString()).addClass("b-text-part html")):d.isNormal(a.Result.Plain)&&""!==a.Result.Plain?(c=!1,h.html(a.Result.Plain.toString()).addClass("b-text-part plain")): -c=!1,a.Result.Rtl&&(h.data("rl-is-rtl",!0),h.addClass("rtl-text-part")),i.append(h),h.data("rl-is-html",c),h.data("rl-has-images",f),k.isRtl(!!h.data("rl-is-rtl")),k.isHtml(!!h.data("rl-is-html")),k.hasImages(!!h.data("rl-has-images")),k.body=h,g&&k.showInternalImages(!0),k.hasImages()&&this.showImages()&&k.showExternalImages(!0),this.purgeMessageBodyCacheThrottle()):(f.data("rl-cache-count",++n.iMessageBodyCacheCount),k.isRtl(!!f.data("rl-is-rtl")),k.isHtml(!!f.data("rl-is-html")),k.hasImages(!!f.data("rl-has-images")), -k.body=f),this.messageActiveDom(k.body),this.hideMessageBodies(),k.body.show(),h&&d.initBlockquoteSwitcher(h);e.cache().initMessageFlagsFromCache(k);k.unseen()&&e.setMessageSeen(k);d.windowResize()}};T.prototype.setMessageList=function(a,b){if(a&&a.Result&&"Collection/MessageCollection"===a.Result["@Object"]&&a.Result["@Collection"]&&d.isArray(a.Result["@Collection"])){var c=e.data(),f=e.cache(),h=null,i=0,j=0,k=0,q=0,p=[],n=c.staticMessageList,r=null,H=null,o=null,s=0,u=!1,k=d.pInt(a.Result.MessageResultCount), -q=d.pInt(a.Result.Offset);d.isNonEmptyArray(a.Result.LastCollapsedThreadUids)&&(h=a.Result.LastCollapsedThreadUids);if((o=e.cache().getFolderFromCacheList(d.isNormal(a.Result.Folder)?a.Result.Folder:""))&&!b)e.cache().setFolderHash(a.Result.Folder,a.Result.FolderHash),d.isNormal(a.Result.MessageCount)&&o.messageCountAll(a.Result.MessageCount),d.isNormal(a.Result.MessageUnseenCount)&&(d.pInt(o.messageCountUnread())!==d.pInt(a.Result.MessageUnseenCount)&&(u=!0),o.messageCountUnread(a.Result.MessageUnseenCount)), -this.initUidNextAndNewMessages(o.fullNameRaw,a.Result.UidNext,a.Result.NewMessages);u&&o&&e.cache().clearMessageFlagsFromCacheByFolder(o.fullNameRaw);i=0;for(j=a.Result["@Collection"].length;i=s&&(s++,H.newForAnimation(!0)),H.deleted(!1),b?e.cache().initMessageFlagsFromCache(H):e.cache().storeMessageFlagsToCache(H), -H.lastInCollapsedThread(h&&-1(new h.Date).getTime()-k);p&&t.oRequests[p]&& -(t.oRequests[p].__aborted&&(e="abort"),t.oRequests[p]=null);t.defaultResponse(a,p,e,c,f,b)});p&&(0").addClass("rl-settings-view-model").hide().attr("data-bind", -'template: {name: "'+g.__rlSettingsData.Template+'"}, i18nInit: true'),t.appendTo(h),c.data=e.data(),c.viewModelDom=t,c.viewModelDom.addClass("rl-animation-margin"),c.__rlSettingsData=g.__rlSettingsData,g.__dom=t,g.__builded=!0,g.__vm=c,f.applyBindings(c,t[0]),q.delegateRun(c,"onBuild",[t])):d.log("Cannot find sub settings view model position: SettingsSubScreen"),c&&i.defer(function(){if(b.oCurrentSubScreen){q.delegateRun(b.oCurrentSubScreen,"onHide");b.oCurrentSubScreen.viewModelDom.hide();b.oCurrentSubScreen.viewModelDom.addClass("rl-animation-margin")}b.oCurrentSubScreen= -c;if(b.oCurrentSubScreen){b.oCurrentSubScreen.viewModelDom.show();q.delegateRun(b.oCurrentSubScreen,"onShow");i.each(b.menu(),function(a){a.selected(c&&c.__rlSettingsData&&a.route===c.__rlSettingsData.Route)});j("#rl-content .b-settings .b-content .content").scrollTop(0);b.oCurrentSubScreen.viewModelDom.removeClass("rl-animation-margin")}d.windowResize()}))};ha.prototype.onHide=function(){this.oCurrentSubScreen&&this.oCurrentSubScreen.viewModelDom&&(q.delegateRun(this.oCurrentSubScreen,"onHide"), -this.oCurrentSubScreen.viewModelDom.hide(),this.oCurrentSubScreen.viewModelDom.addClass("rl-animation-margin"))};ha.prototype.onBuild=function(){i.each(U.settings,function(a){a&&(a.__rlSettingsData&&!i.find(U["settings-removed"],function(b){return b&&b===a}))&&this.menu.push({route:a.__rlSettingsData.Route,label:a.__rlSettingsData.Label,selected:f.observable(!1),disabled:!!i.find(U["settings-disabled"],function(b){return b&&b===a})})},this);this.oViewModelPlace=j("#rl-content #rl-settings-subscreen")}; -ha.prototype.routes=function(){var a=i.find(U.settings,function(a){return a&&a.__rlSettingsData&&a.__rlSettingsData.IsDefault}),b=a?a.__rlSettingsData.Route:"general",a={subname:/^(.*)$/,normalize_:function(a,e){e.subname=d.isUnd(e.subname)?b:d.pString(e.subname);return[e.subname]}};return[["{subname}/",a],["{subname}",a],["",a]]};i.extend(Fa.prototype,L.prototype);Fa.prototype.onShow=function(){e.setTitle(d.i18n("TITLES/LOGIN"))};i.extend(ea.prototype,L.prototype);ea.prototype.oLastRoute={};ea.prototype.onShow= -function(){var a=e.data().accountEmail();e.setTitle((""===a?"":a+" - ")+d.i18n("TITLES/MAILBOX"))};ea.prototype.onRoute=function(a,b,c){var d=e.data(),a=e.cache().getFolderFullNameRaw(a);if(a=e.cache().getFolderFromCacheList(a))d.currentFolder(a).messageListPage(b).messageListSearch(c),!d.usePreviewPane()&&d.message()&&d.message(null),e.reloadMessageList()};ea.prototype.onStart=function(){var a=e.data(),b=function(){d.windowResize()};e.settingsGet("AllowAdditionalAccounts")&&e.accounts();i.delay(function(){e.quota()}, -5E3);i.delay(function(){"INBOX"!==a.currentFolderFullNameRaw()&&e.folderInformation("INBOX")},1E3);i.delay(function(){var b=e.data().spamFolder();b!==a.currentFolderFullNameRaw()&&e.folderInformation(b)},1500);i.delay(function(){var b=e.data().draftFolder();b!==a.currentFolderFullNameRaw()&&e.folderInformation(b)},2E3);i.delay(function(){e.remote().appDelayStart(d.emptyFunction)},35E3);h.setInterval(function(){e.folderInformation("INBOX")},12E4);h.setInterval(function(){e.quota()},3E5);da.toggleClass("rl-no-preview-pane", -!a.usePreviewPane());a.folderList.subscribe(b);a.messageList.subscribe(b);a.message.subscribe(b);a.usePreviewPane.subscribe(function(a){da.toggleClass("rl-no-preview-pane",!a)})};ea.prototype.onBuild=function(){n.bMobileDevice||i.defer(function(){d.initLayoutResizer("#rl-resizer-left","#rl-resizer-right","#rl-right",350,900,350,350,g.ClientSideKeyName.MailBoxListSize)})};ea.prototype.routes=function(){var a=function(a,c){c[0]=d.pString(c[0]);c[1]=d.pInt(c[1]);c[1]=0>=c[1]?1:c[1];c[2]=d.pString(c[2]); -""===a&&(c[0]="Inbox",c[1]=1);return[decodeURI(c[0]),c[1],decodeURI(c[2])]};return[[/^([a-zA-Z0-9]+)\/p([1-9][0-9]*)\/(.+)\/?$/,{normalize_:a}],[/^([a-zA-Z0-9]+)\/p([1-9][0-9]*)\/?$/,{normalize_:a}],[/^([a-zA-Z0-9]+)\/(.+)\/?$/,{normalize_:function(a,c){c[0]=d.pString(c[0]);c[1]=d.pString(c[1]);""===a&&(c[0]="Inbox");return[decodeURI(c[0]),1,decodeURI(c[1])]}}],[/^([^\/]*)$/,{normalize_:a}]]};i.extend(Oa.prototype,ha.prototype);Oa.prototype.onShow=function(){e.setTitle(this.sSettingsTitle)};i.extend(K.prototype, -Sa.prototype);K.prototype.oSettings=null;K.prototype.oLink=null;K.prototype.download=function(a){n.bMobileDevice?h.open(a):this.iframe.attr("src",a)};K.prototype.link=function(){null===this.oLink&&(this.oLink=new C);return this.oLink};K.prototype.local=function(){null===this.oLocal&&(this.oLocal=new Aa);return this.oLocal};K.prototype.settingsGet=function(a){null===this.oSettings&&(this.oSettings=d.isNormal(Ga)?Ga:{});return d.isUnd(this.oSettings[a])?null:this.oSettings[a]};K.prototype.settingsSet= -function(a,b){null===this.oSettings&&(this.oSettings=d.isNormal(Ga)?Ga:{});this.oSettings[a]=b};K.prototype.setTitle=function(a){a=(0getAttribute('src')); $oElement->removeAttribute('src'); - if ('cid:' === \strtolower(\substr($sSrc, 0, 4))) + if (\in_array($sSrc, $aContentLocationUrls)) + { + $oElement->setAttribute('data-x-src-location', $sSrc); + $aFoundedContentLocationUrls[] = $sSrc; + } + else if ('cid:' === \strtolower(\substr($sSrc, 0, 4))) { $oElement->setAttribute('data-x-src-cid', \substr($sSrc, 4)); $aFoundCIDs[] = \substr($sSrc, 4); @@ -356,7 +366,8 @@ class HtmlUtils if ($oElement->hasAttribute('style')) { $oElement->setAttribute('style', - \MailSo\Base\HtmlUtils::ClearStyle($oElement->getAttribute('style'), $oElement, $bHasExternals, $aFoundCIDs)); + \MailSo\Base\HtmlUtils::ClearStyle($oElement->getAttribute('style'), $oElement, $bHasExternals, + $aFoundCIDs, $aContentLocationUrls, $aFoundedContentLocationUrls)); } } @@ -375,10 +386,11 @@ class HtmlUtils * @param string $sHtml * @param array $aFoundCids = array() * @param array|null $mFoundDataURL = null + * @param array $aFoundedContentLocationUrls = array() * * @return string */ - public static function BuildHtml($sHtml, &$aFoundCids = array(), &$mFoundDataURL = null) + public static function BuildHtml($sHtml, &$aFoundCids = array(), &$mFoundDataURL = null, &$aFoundedContentLocationUrls = array()) { $bRtl = \MailSo\Base\Utils::IsRTL($sHtml); @@ -403,6 +415,20 @@ class HtmlUtils $oElement->setAttribute('src', 'cid:'.$sCid); } } + + if ($oElement->hasAttribute('data-x-src-location')) + { + $sSrc = $oElement->getAttribute('data-x-src-location'); + $oElement->removeAttribute('data-x-src-location'); + + if (!empty($sSrc)) + { + $aFoundedContentLocationUrls[] = $sSrc; + + @$oElement->removeAttribute('src'); + $oElement->setAttribute('src', $sSrc); + } + } if ($oElement->hasAttribute('data-x-broken-src')) { diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Http.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Http.php similarity index 99% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Http.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Http.php index ed4375f2a..83cf2ace9 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Http.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Http.php @@ -401,10 +401,11 @@ class Http * @param string $sContentType = '' * @param int $iCode = 0 * @param \MailSo\Log\Logger $oLogger = null + * @param int $iTimeout = 10 * * @return bool */ - public function SaveUrlToFile($sUrl, $rFile, $sCustomUserAgent = 'MaiSo Http User Agent (v1)', &$sContentType = '', &$iCode = 0, $oLogger = null) + public function SaveUrlToFile($sUrl, $rFile, $sCustomUserAgent = 'MaiSo Http User Agent (v1)', &$sContentType = '', &$iCode = 0, $oLogger = null, $iTimeout = 10) { if (!is_resource($rFile)) { @@ -423,7 +424,7 @@ class Http CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_FILE => $rFile, - CURLOPT_TIMEOUT => 10 + CURLOPT_TIMEOUT => (int) $iTimeout ); if (0 < \strlen($sCustomUserAgent)) diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/LinkFinder.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/LinkFinder.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/LinkFinder.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/LinkFinder.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Loader.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Loader.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Loader.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Loader.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/ResourceRegistry.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/ResourceRegistry.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/ResourceRegistry.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/ResourceRegistry.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/Binary.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/Binary.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/Binary.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/Binary.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/Literal.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/Literal.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/Literal.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/Literal.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/SubStreams.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/SubStreams.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/SubStreams.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/SubStreams.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/Test.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/Test.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/StreamWrappers/Test.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/StreamWrappers/Test.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Utils.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Utils.php similarity index 95% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Utils.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Utils.php index 84c4ee85f..6605836eb 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Utils.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Utils.php @@ -712,6 +712,69 @@ class Utils return $sResult; } + /** + * @param string $sContentType + * @param string $sFileName + * + * @return string + */ + public static function ContentTypeType($sContentType, $sFileName) + { + $sResult = ''; + $sContentType = \strtolower($sContentType); + if (0 === strpos($sContentType, 'image/')) + { + $sResult = 'image'; + } + else + { + switch ($sContentType) + { + case 'application/zip': + case 'application/x-7z-compressed': + case 'application/x-rar-compressed': + case 'application/x-msdownload': + case 'application/vnd.ms-cab-compressed': + case 'application/x-gzip': + case 'application/x-bzip': + case 'application/x-bzip2': + case 'application/x-debian-package': + $sResult = 'archive'; + break; + case 'application/msword': + case 'application/rtf': + case 'application/vnd.ms-excel': + case 'application/vnd.ms-powerpoint': + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': + case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': + case 'application/vnd.oasis.opendocument.text': + case 'application/vnd.oasis.opendocument.spreadsheet': + $sResult = 'doc'; + break; + case 'application/pdf': + case 'application/x-pdf': + $sResult = 'pdf'; + break; + } + + if ('' === $sResult) + { + switch (\strtolower(\MailSo\Base\Utils::GetFileExtension($sFileName))) + { + case 'zip': + case '7z': + case 'rar': + $sResult = 'archive'; + break; + } + } + } + + return $sResult; + } + /** * @staticvar bool $bValidateAction * diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Validator.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Validator.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Base/Validator.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Base/Validator.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/CacheClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/CacheClient.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/CacheClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/CacheClient.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/DriverInterface.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/DriverInterface.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/DriverInterface.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/DriverInterface.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/Drivers/APC.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/Drivers/APC.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/Drivers/APC.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/Drivers/APC.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/Drivers/File.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/Drivers/File.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/Drivers/File.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/Drivers/File.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/Drivers/Memcache.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/Drivers/Memcache.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Cache/Drivers/Memcache.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Cache/Drivers/Memcache.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/BodyStructure.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/BodyStructure.php similarity index 95% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/BodyStructure.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/BodyStructure.php index 3e09c6279..c5e5fdbae 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/BodyStructure.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/BodyStructure.php @@ -199,6 +199,14 @@ class BodyStructure return (null === $this->sContentID) ? '' : $this->sContentID; } + /** + * return string + */ + public function ContentLocation() + { + return (null === $this->sLocation) ? '' : $this->sLocation; + } + /** * return bool */ @@ -208,6 +216,38 @@ class BodyStructure (0 < strlen($this->ContentID())) : ('inline' === strtolower($this->sDisposition)); } + /** + * return bool + */ + public function IsImage() + { + return 'image' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + + /** + * return bool + */ + public function IsArchive() + { + return 'archive' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + + /** + * @return bool + */ + public function IsPdf() + { + return 'pdf' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + + /** + * @return bool + */ + public function IsDoc() + { + return 'doc' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + /** * @return array|null */ diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FetchType.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FetchType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FetchType.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FetchType.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FolderResponseStatus.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FolderResponseStatus.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FolderResponseStatus.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FolderResponseStatus.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FolderStatus.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FolderStatus.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FolderStatus.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FolderStatus.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FolderType.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FolderType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/FolderType.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/FolderType.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/MessageFlag.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/MessageFlag.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/MessageFlag.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/MessageFlag.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/ResponseStatus.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/ResponseStatus.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/ResponseStatus.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/ResponseStatus.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/ResponseType.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/ResponseType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/ResponseType.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/ResponseType.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/StoreAction.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/StoreAction.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Enumerations/StoreAction.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Enumerations/StoreAction.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/InvalidResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/InvalidResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/InvalidResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/InvalidResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/LoginBadCredentialsException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/LoginBadCredentialsException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/LoginBadCredentialsException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/LoginBadCredentialsException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/LoginBadMethodException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/LoginBadMethodException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/LoginBadMethodException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/LoginBadMethodException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/LoginException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/LoginException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/LoginException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/LoginException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/NegativeResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/NegativeResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/NegativeResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/NegativeResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/ResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/ResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/ResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/ResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/ResponseNotFoundException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/ResponseNotFoundException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/ResponseNotFoundException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/ResponseNotFoundException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/RuntimeException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/RuntimeException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Exceptions/RuntimeException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Exceptions/RuntimeException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/FetchResponse.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/FetchResponse.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/FetchResponse.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/FetchResponse.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Folder.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Folder.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Folder.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Folder.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/FolderInformation.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/FolderInformation.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/FolderInformation.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/FolderInformation.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/ImapClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/ImapClient.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/ImapClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/ImapClient.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/NamespaceResult.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/NamespaceResult.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/NamespaceResult.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/NamespaceResult.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Response.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Response.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/Response.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/Response.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/SearchBuilder.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/SearchBuilder.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Imap/SearchBuilder.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Imap/SearchBuilder.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Driver.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Driver.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Driver.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Driver.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Drivers/Callback.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Drivers/Callback.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Drivers/Callback.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Drivers/Callback.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Drivers/File.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Drivers/File.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Drivers/File.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Drivers/File.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Drivers/Inline.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Drivers/Inline.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Drivers/Inline.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Drivers/Inline.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Enumerations/Type.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Enumerations/Type.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Enumerations/Type.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Enumerations/Type.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Logger.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Logger.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Log/Logger.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Log/Logger.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Attachment.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Attachment.php similarity index 82% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Attachment.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Attachment.php index 6602f6cd3..60d0ab8cd 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Attachment.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Attachment.php @@ -139,6 +139,14 @@ class Attachment return $this->oBodyStructure ? $this->oBodyStructure->ContentID() : ''; } + /** + * @return string + */ + public function ContentLocation() + { + return $this->oBodyStructure ? $this->oBodyStructure->ContentLocation() : ''; + } + /** * @return bool */ @@ -147,6 +155,38 @@ class Attachment return $this->oBodyStructure ? $this->oBodyStructure->IsInline() : false; } + /** + * @return bool + */ + public function IsImage() + { + return $this->oBodyStructure ? $this->oBodyStructure->IsImage() : false; + } + + /** + * @return bool + */ + public function IsArchive() + { + return $this->oBodyStructure ? $this->oBodyStructure->IsArchive() : false; + } + + /** + * @return bool + */ + public function IsPdf() + { + return $this->oBodyStructure ? $this->oBodyStructure->IsPdf() : false; + } + + /** + * @return bool + */ + public function IsDoc() + { + return $this->oBodyStructure ? $this->oBodyStructure->IsDoc() : false; + } + /** * @return \MailSo\Mail\Attachment */ diff --git a/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/AttachmentCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/AttachmentCollection.php new file mode 100644 index 000000000..69648e5af --- /dev/null +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/AttachmentCollection.php @@ -0,0 +1,98 @@ +FilterList(function ($oAttachment) { + return $oAttachment && $oAttachment->IsInline(); + }); + + return \is_array($aList) ? \count($aList) : 0; + } + + /** + * @return int + */ + public function NonInlineCount() + { + $aList = $this->FilterList(function ($oAttachment) { + return $oAttachment && !$oAttachment->IsInline(); + }); + + return \is_array($aList) ? \count($aList) : 0; + } + + /** + * @return int + */ + public function ImageCount() + { + $aList = $this->FilterList(function ($oAttachment) { + return $oAttachment && $oAttachment->IsImage(); + }); + + return \is_array($aList) ? \count($aList) : 0; + } + + /** + * @return int + */ + public function ArchiveCount() + { + $aList = $this->FilterList(function ($oAttachment) { + return $oAttachment && $oAttachment->IsArchive(); + }); + + return \is_array($aList) ? \count($aList) : 0; + } + + /** + * @return int + */ + public function PdfCount() + { + $aList = $this->FilterList(function ($oAttachment) { + return $oAttachment && $oAttachment->IsPdf(); + }); + + return \is_array($aList) ? \count($aList) : 0; + } + + /** + * @return int + */ + public function DocCount() + { + $aList = $this->FilterList(function ($oAttachment) { + return $oAttachment && $oAttachment->IsDoc(); + }); + + return \is_array($aList) ? \count($aList) : 0; + } +} diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Exceptions/NonEmptyFolder.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Exceptions/NonEmptyFolder.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Exceptions/NonEmptyFolder.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Exceptions/NonEmptyFolder.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Exceptions/RuntimeException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Exceptions/RuntimeException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Exceptions/RuntimeException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Exceptions/RuntimeException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Folder.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Folder.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Folder.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Folder.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/FolderCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/FolderCollection.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/FolderCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/FolderCollection.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/MailClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/MailClient.php similarity index 94% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/MailClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/MailClient.php index 96367971d..b274fb8fc 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/MailClient.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/MailClient.php @@ -635,6 +635,16 @@ class MailClient $sUidNext = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT]) ? (string) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT] : '0'; + + + if (0 === \strpos($sFolderName, '[Gmail]/')) + { + $oFolder = $this->oImapClient->FolderCurrentInformation(); + if ($oFolder && null !== $oFolder->Exists) + { + $iCount = (int) $oFolder->Exists; + } + } } /** @@ -1610,15 +1620,29 @@ class MailClient * @param string $sParent = '' * @param string $sListPattern = '*' * @param bool $bUseListStatus = false + * @param bool $bUseListSubscribeStatus = false * * @return \MailSo\Mail\FolderCollection|false */ - public function Folders($sParent = '', $sListPattern = '*', $bUseListStatus = false) + public function Folders($sParent = '', $sListPattern = '*', $bUseListStatus = false, $bUseListSubscribeStatus = true) { $oFolderCollection = false; $aFolders = $this->oImapClient->FolderList($sParent, $sListPattern); - $aSubscribedFolders = $this->oImapClient->FolderSubscribeList($sParent, $sListPattern); + + $aSubscribedFolders = null; + if ($bUseListSubscribeStatus) + { + try + { + $aSubscribedFolders = $this->oImapClient->FolderSubscribeList($sParent, $sListPattern); + } + catch (\Exception $oException) + { + + } + } + // TODO // $mStatusFolders = null; // if ($bUseListStatus) @@ -1626,9 +1650,10 @@ class MailClient // $mStatusFolders = $this->oImapClient->FolderStatusList($sParent, $sListPattern); // } - $aImapSubscribedFoldersHelper = array(); + $aImapSubscribedFoldersHelper = null; if (\is_array($aSubscribedFolders)) { + $aImapSubscribedFoldersHelper = array(); foreach ($aSubscribedFolders as /* @var $oImapFolder \MailSo\Imap\Folder */ $oImapFolder) { $aImapSubscribedFoldersHelper[] = $oImapFolder->FullNameRaw(); @@ -1643,7 +1668,8 @@ class MailClient foreach ($aFolders as /* @var $oImapFolder \MailSo\Imap\Folder */ $oImapFolder) { $aMailFoldersHelper[] = Folder::NewInstance($oImapFolder, - \in_array($oImapFolder->FullNameRaw(), $aImapSubscribedFoldersHelper) || $oImapFolder->IsInbox() + (null === $aImapSubscribedFoldersHelper || \in_array($oImapFolder->FullNameRaw(), $aImapSubscribedFoldersHelper)) || + $oImapFolder->IsInbox() ); } } @@ -1687,84 +1713,6 @@ class MailClient return $oFolderCollection; } - /** - * @param string $sFolderName = '' - * - * @return \MailSo\Mail\FolderCollection|false - */ - public function FoldersLevel($sFolderName = '', $sDelimiter = '/') - { - $oFolderCollection = false; - - $sFolderLevel = 0 === \strlen($sFolderName) ? '' : $sFolderName.$sDelimiter; - - $aFolders = $this->oImapClient->FolderList($sFolderLevel, '%'); - $aSubscribedFolders = $this->oImapClient->FolderSubscribeList($sFolderLevel, '%'); - - $aSubFolders = $this->oImapClient->FolderList($sFolderLevel, '%/%'); - $aSubSubscribedFolders = $this->oImapClient->FolderSubscribeList($sFolderLevel, '%/%'); - - $aImapSubscribedFoldersHelper = array(); - if (\is_array($aSubscribedFolders)) - { - foreach ($aSubscribedFolders as /* @var $oImapFolder \MailSo\Imap\Folder */ $oImapFolder) - { - $aImapSubscribedFoldersHelper[] = $oImapFolder->FullNameRaw(); - } - } - if (\is_array($aSubSubscribedFolders)) - { - foreach ($aSubSubscribedFolders as /* @var $oImapFolder \MailSo\Imap\Folder */ $oImapFolder) - { - $aImapSubscribedFoldersHelper[] = $oImapFolder->FullNameRaw(); - } - } - - $aMailFoldersHelper = null; - if (\is_array($aFolders)) - { - $aMailFoldersHelper = array(); - - foreach ($aFolders as /* @var $oImapFolder \MailSo\Imap\Folder */ $oImapFolder) - { - $aMailFoldersHelper[] = Folder::NewInstance($oImapFolder, - in_array($oImapFolder->FullNameRaw(), $aImapSubscribedFoldersHelper) || $oImapFolder->IsInbox() - ); - } - } - - if (\is_array($aMailFoldersHelper) && \is_array($aSubFolders)) - { - foreach ($aSubFolders as /* @var $oImapFolder \MailSo\Imap\Folder */ $oImapFolder) - { - $aMailFoldersHelper[] = Folder::NewInstance($oImapFolder, - \in_array($oImapFolder->FullNameRaw(), $aImapSubscribedFoldersHelper) || $oImapFolder->IsInbox() - ); - } - } - - if (\is_array($aMailFoldersHelper)) - { - $oFolderCollection = FolderCollection::NewInstance(); - $oFolderCollection->InitByUnsortedMailFolderArray($aMailFoldersHelper); - } - - if (0 < \strlen($sFolderLevel) && $oFolderCollection) - { - $oLevelFolder = $oFolderCollection->GetByFullNameRaw($sFolderName); - if ($oLevelFolder && $oLevelFolder->HasSubFolders()) - { - $oFolderCollection = $oLevelFolder->SubFolders(); - } - else - { - $oFolderCollection = false; - } - } - - return $oFolderCollection; - } - /** * @param string $sFolderNameInUtf * @param string $sFolderParentFullNameRaw = '' @@ -1826,12 +1774,13 @@ class MailClient /** * @param string $sPrevFolderFullNameRaw * @param string $sNewTopFolderNameInUtf + * @param bool $bSubscribeOnRename = true * * @return \MailSo\Mail\MailClient * * @throws \MailSo\Base\Exceptions\InvalidArgumentException */ - public function FolderRename($sPrevFolderFullNameRaw, $sNewTopFolderNameInUtf) + public function FolderRename($sPrevFolderFullNameRaw, $sNewTopFolderNameInUtf, $bSubscribeOnRename = true) { if (0 === \strlen($sPrevFolderFullNameRaw) || 0 === \strlen($sNewTopFolderNameInUtf)) { @@ -1849,12 +1798,16 @@ class MailClient $iLast = \strrpos($sPrevFolderFullNameRaw, $sDelimiter); $sFolderParentFullNameRaw = false === $iLast ? '' : \substr($sPrevFolderFullNameRaw, 0, $iLast + 1); - $aSubscribeFolders = $this->oImapClient->FolderSubscribeList($sPrevFolderFullNameRaw, '*'); - if (\is_array($aSubscribeFolders) && 0 < count($aSubscribeFolders)) + $mSubscribeFolders = null; + if ($bSubscribeOnRename) { - foreach ($aSubscribeFolders as /* @var $oFolder \MailSo\Imap\Folder */ $oFolder) + $mSubscribeFolders = $this->oImapClient->FolderSubscribeList($sPrevFolderFullNameRaw, '*'); + if (\is_array($mSubscribeFolders) && 0 < count($mSubscribeFolders)) { - $this->oImapClient->FolderUnSubscribe($oFolder->FullNameRaw()); + foreach ($mSubscribeFolders as /* @var $oFolder \MailSo\Imap\Folder */ $oFolder) + { + $this->oImapClient->FolderUnSubscribe($oFolder->FullNameRaw()); + } } } @@ -1873,9 +1826,9 @@ class MailClient $this->oImapClient->FolderRename($sPrevFolderFullNameRaw, $sNewFolderFullNameRaw); - if (\is_array($aSubscribeFolders) && 0 < count($aSubscribeFolders)) + if (\is_array($mSubscribeFolders) && 0 < count($mSubscribeFolders)) { - foreach ($aSubscribeFolders as /* @var $oFolder \MailSo\Imap\Folder */ $oFolder) + foreach ($mSubscribeFolders as /* @var $oFolder \MailSo\Imap\Folder */ $oFolder) { $sFolderFullNameRawForResubscrine = $oFolder->FullNameRaw(); if (0 === \strpos($sFolderFullNameRawForResubscrine, $sPrevFolderFullNameRaw)) diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Message.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Message.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/Message.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/Message.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/MessageCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/MessageCollection.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mail/MessageCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mail/MessageCollection.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/MailSo.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/MailSo.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/MailSo.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/MailSo.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Attachment.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Attachment.php similarity index 62% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Attachment.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Attachment.php index 4db420279..dc4260ea8 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Attachment.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Attachment.php @@ -43,10 +43,16 @@ class Attachment */ private $aCustomContentTypeParams; + /** + * @var string + */ + private $sContentLocation; + /** * @access private */ - private function __construct($rResource, $sFileName, $iFileSize, $bIsInline, $bIsLinked, $sCID, $aCustomContentTypeParams = array()) + private function __construct($rResource, $sFileName, $iFileSize, $bIsInline, $bIsLinked, $sCID, + $aCustomContentTypeParams = array(), $sContentLocation = '') { $this->rResource = $rResource; $this->sFileName = $sFileName; @@ -55,6 +61,7 @@ class Attachment $this->bIsLinked = $bIsLinked; $this->sCID = $sCID; $this->aCustomContentTypeParams = $aCustomContentTypeParams; + $this->sContentLocation = $sContentLocation; } /** @@ -65,13 +72,14 @@ class Attachment * @param bool $bIsLinked = false * @param string $sCID = '' * @param array $aCustomContentTypeParams = array() + * @param string $sContentLocation = '' * * @return \MailSo\Mime\Attachment */ public static function NewInstance($rResource, $sFileName = '', $iFileSize = 0, $bIsInline = false, - $bIsLinked = false, $sCID = '', $aCustomContentTypeParams = array()) + $bIsLinked = false, $sCID = '', $aCustomContentTypeParams = array(), $sContentLocation = '') { - return new self($rResource, $sFileName, $iFileSize, $bIsInline, $bIsLinked, $sCID, $aCustomContentTypeParams); + return new self($rResource, $sFileName, $iFileSize, $bIsInline, $bIsLinked, $sCID, $aCustomContentTypeParams, $sContentLocation); } /** @@ -106,6 +114,14 @@ class Attachment return $this->sCID; } + /** + * @return string + */ + public function ContentLocation() + { + return $this->sContentLocation; + } + /** * @return string */ @@ -130,6 +146,38 @@ class Attachment return $this->bIsInline; } + /** + * @return bool + */ + public function IsImage() + { + return 'image' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + + /** + * @return bool + */ + public function IsArchive() + { + return 'archive' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + + /** + * @return bool + */ + public function IsPdf() + { + return 'pdf' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + + /** + * @return bool + */ + public function IsDoc() + { + return 'doc' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName()); + } + /** * @return bool */ diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/AttachmentCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/AttachmentCollection.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/AttachmentCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/AttachmentCollection.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Email.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Email.php similarity index 99% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Email.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Email.php index 59c590922..32b0d7628 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Email.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Email.php @@ -177,6 +177,7 @@ class Email $sEmail = \trim(\trim($sEmail), '<>'); $sName = \trim(\trim($sName), '"'); + $sName = \trim($sName, '\''); $sComment = \trim(\trim($sComment), '()'); // Remove backslash diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/EmailCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/EmailCollection.php similarity index 98% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/EmailCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/EmailCollection.php index 0e496c8cd..772ded386 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/EmailCollection.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/EmailCollection.php @@ -164,6 +164,10 @@ class EmailCollection extends \MailSo\Base\Collection if (!$bIsInAngleBrackets) { $bIsInAngleBrackets = true; + if ($bIsInQuotes) + { + $bIsInQuotes = false; + } } break; diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Constants.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Constants.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Constants.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Constants.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Header.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Header.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Header.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Header.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/MimeType.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/MimeType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/MimeType.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/MimeType.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Parameter.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Parameter.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Parameter.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Parameter.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Sensitivity.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Sensitivity.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Enumerations/Sensitivity.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Enumerations/Sensitivity.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Header.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Header.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Header.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Header.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/HeaderCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/HeaderCollection.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/HeaderCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/HeaderCollection.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Message.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Message.php similarity index 98% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Message.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Message.php index 5a49e059a..004e58f71 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Message.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Message.php @@ -457,6 +457,7 @@ class Message $sFileName = $oAttachment->FileName(); $sCID = $oAttachment->CID(); + $sContentLocation = $oAttachment->ContentLocation(); $oContentTypeParameters = null; $oContentDispositionParameters = null; @@ -492,6 +493,13 @@ class Message Header::NewInstance(\MailSo\Mime\Enumerations\Header::CONTENT_ID, $sCID) ); } + + if (0 < strlen($sContentLocation)) + { + $oAttachmentPart->Headers->Add( + Header::NewInstance(\MailSo\Mime\Enumerations\Header::CONTENT_LOCATION, $sContentLocation) + ); + } $oAttachmentPart->Body = $oAttachment->Resource(); diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parameter.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parameter.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parameter.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parameter.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/ParameterCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/ParameterCollection.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/ParameterCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/ParameterCollection.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parser/ParserEmpty.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parser/ParserEmpty.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parser/ParserEmpty.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parser/ParserEmpty.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parser/ParserInterface.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parser/ParserInterface.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parser/ParserInterface.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parser/ParserInterface.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parser/ParserMemory.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parser/ParserMemory.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Parser/ParserMemory.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Parser/ParserMemory.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Part.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Part.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/Part.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/Part.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/PartCollection.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/PartCollection.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Mime/PartCollection.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Mime/PartCollection.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Enumerations/ConnectionSecurityType.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Enumerations/ConnectionSecurityType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Enumerations/ConnectionSecurityType.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Enumerations/ConnectionSecurityType.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/ConnectionException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/ConnectionException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/ConnectionException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/ConnectionException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/InvalidArgumentException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/InvalidArgumentException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/InvalidArgumentException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/InvalidArgumentException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketAlreadyConnectedException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketAlreadyConnectedException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketAlreadyConnectedException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketAlreadyConnectedException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketCanNotConnectToHostException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketCanNotConnectToHostException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketCanNotConnectToHostException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketCanNotConnectToHostException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketConnectionDoesNotAvailableException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketConnectionDoesNotAvailableException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketConnectionDoesNotAvailableException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketConnectionDoesNotAvailableException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketReadException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketReadException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketReadException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketReadException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketReadTimeoutException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketReadTimeoutException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketReadTimeoutException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketReadTimeoutException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketUnreadBufferException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketUnreadBufferException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketUnreadBufferException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketUnreadBufferException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketUnsuppoterdSecureConnectionException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketUnsuppoterdSecureConnectionException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketUnsuppoterdSecureConnectionException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketUnsuppoterdSecureConnectionException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketWriteException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketWriteException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/Exceptions/SocketWriteException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/Exceptions/SocketWriteException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Net/NetClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Net/NetClient.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Net/NetClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Net/NetClient.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/LoginBadCredentialsException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/LoginBadCredentialsException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/LoginBadCredentialsException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/LoginBadCredentialsException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/NegativeResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/NegativeResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/NegativeResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/NegativeResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/ResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/ResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/ResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/ResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/RuntimeException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/RuntimeException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Exceptions/RuntimeException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Exceptions/RuntimeException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Pop3Client.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Pop3Client.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Pop3/Pop3Client.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Pop3/Pop3Client.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/LoginBadCredentialsException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/LoginBadCredentialsException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/LoginBadCredentialsException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/LoginBadCredentialsException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/NegativeResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/NegativeResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/NegativeResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/NegativeResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/ResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/ResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/ResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/ResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/RuntimeException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/RuntimeException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/Exceptions/RuntimeException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/Exceptions/RuntimeException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/PoppassdClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/PoppassdClient.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Poppassd/PoppassdClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Poppassd/PoppassdClient.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/LoginBadCredentialsException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/LoginBadCredentialsException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/LoginBadCredentialsException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/LoginBadCredentialsException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/LoginBadMethodException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/LoginBadMethodException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/LoginBadMethodException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/LoginBadMethodException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/LoginException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/LoginException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/LoginException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/LoginException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/NegativeResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/NegativeResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/NegativeResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/NegativeResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/ResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/ResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/ResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/ResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/RuntimeException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/RuntimeException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/Exceptions/RuntimeException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/Exceptions/RuntimeException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/ManageSieveClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/ManageSieveClient.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Sieve/ManageSieveClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Sieve/ManageSieveClient.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/Exception.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/Exception.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/Exception.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/Exception.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/LoginBadCredentialsException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/LoginBadCredentialsException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/LoginBadCredentialsException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/LoginBadCredentialsException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/LoginBadMethodException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/LoginBadMethodException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/LoginBadMethodException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/LoginBadMethodException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/LoginException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/LoginException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/LoginException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/LoginException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/NegativeResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/NegativeResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/NegativeResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/NegativeResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/ResponseException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/ResponseException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/ResponseException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/ResponseException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/RuntimeException.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/RuntimeException.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/Exceptions/RuntimeException.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/Exceptions/RuntimeException.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/SmtpClient.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/SmtpClient.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Smtp/SmtpClient.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Smtp/SmtpClient.php diff --git a/rainloop/v/1.3.7.466/app/libraries/MailSo/Version.php b/rainloop/v/1.3.8.476/app/libraries/MailSo/Version.php similarity index 94% rename from rainloop/v/1.3.7.466/app/libraries/MailSo/Version.php rename to rainloop/v/1.3.8.476/app/libraries/MailSo/Version.php index 6a77efbe4..e8263281c 100644 --- a/rainloop/v/1.3.7.466/app/libraries/MailSo/Version.php +++ b/rainloop/v/1.3.8.476/app/libraries/MailSo/Version.php @@ -10,7 +10,7 @@ final class Version /** * @var string */ - const APP_VERSION = '1.2.1'; + const APP_VERSION = '1.2.2'; /** * @var string diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/Client.php b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/Client.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/Client.php rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/Client.php diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/AuthorizationCode.php b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/AuthorizationCode.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/AuthorizationCode.php rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/AuthorizationCode.php diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/ClientCredentials.php b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/ClientCredentials.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/ClientCredentials.php rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/ClientCredentials.php diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/IGrantType.php b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/IGrantType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/IGrantType.php rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/IGrantType.php diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/Password.php b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/Password.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/Password.php rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/Password.php diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/RefreshToken.php b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/RefreshToken.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/GrantType/RefreshToken.php rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/GrantType/RefreshToken.php diff --git a/rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/README b/rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/README similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/PHP-OAuth2/README rename to rainloop/v/1.3.8.476/app/libraries/PHP-OAuth2/README diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Account.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Account.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Account.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Account.php diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Actions.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Actions.php similarity index 96% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Actions.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Actions.php index 548579323..ca86f3d26 100644 --- a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Actions.php @@ -888,6 +888,7 @@ class Actions 'ContactsIsAllowed' => (bool) $this->ContactsProvider()->IsActive(), 'JsHash' => \md5(\RainLoop\Utils::GetConnectionToken()), 'UseImapThread' => (bool) $oConfig->Get('labs', 'use_imap_thread', false), + 'UseImapSubscribe' => (bool) $oConfig->Get('labs', 'use_imap_list_subscribe', true), 'AllowAppendMessage' => (bool) $oConfig->Get('labs', 'allow_message_append', false), 'CdnStaticDomain' => $oConfig->Get('labs', 'cdn_static_domain', ''), 'Plugins' => array() @@ -994,10 +995,8 @@ class Actions // user $aResult['EditorDefaultType'] = (string) $oConfig->Get('webmail', 'editor_default_type', ''); $aResult['ShowImages'] = (bool) $oConfig->Get('webmail', 'show_images', false); - $aResult['IgnoreFolderSubscribe'] = (bool) $oConfig->Get('labs', 'ignore_folders_subscription', false); $aResult['MPP'] = (int) $oConfig->Get('webmail', 'messages_per_page', 25); $aResult['DesktopNotifications'] = false; - $aResult['ShowAnimation'] = true; $aResult['UseThreads'] = false; $aResult['ReplySameFolder'] = false; $aResult['UsePreviewPane'] = true; @@ -1006,6 +1005,7 @@ class Actions $aResult['ReplyTo'] = ''; $aResult['Signature'] = ''; $aResult['ParentEmail'] = ''; + $aResult['InterfaceAnimation'] = \RainLoop\Enumerations\InterfaceAnimation::NORMAL; $aResult['CustomThemeType'] = \RainLoop\Enumerations\CustomThemeType::LIGHT; $aResult['CustomThemeImg'] = ''; @@ -1029,11 +1029,11 @@ class Actions $aResult['ShowImages'] = (bool) $oSettings->GetConf('ShowImages', $aResult['ShowImages']); $aResult['MPP'] = (int) $oSettings->GetConf('MPP', $aResult['MPP']); $aResult['DesktopNotifications'] = (bool) $oSettings->GetConf('DesktopNotifications', $aResult['DesktopNotifications']); - $aResult['ShowAnimation'] = (bool) $oSettings->GetConf('ShowAnimation', $aResult['ShowAnimation']); $aResult['UseThreads'] = (bool) $oSettings->GetConf('UseThreads', $aResult['UseThreads']); $aResult['ReplySameFolder'] = (bool) $oSettings->GetConf('ReplySameFolder', $aResult['ReplySameFolder']); $aResult['UsePreviewPane'] = (bool) $oSettings->GetConf('UsePreviewPane', $aResult['UsePreviewPane']); $aResult['UseCheckboxesInList'] = (bool) $oSettings->GetConf('UseCheckboxesInList', $aResult['UseCheckboxesInList']); + $aResult['InterfaceAnimation'] = (string) $oSettings->GetConf('InterfaceAnimation', $aResult['InterfaceAnimation']); $aResult['CustomThemeType'] = (string) $oSettings->GetConf('CustomThemeType', $aResult['CustomThemeType']); $aResult['CustomThemeImg'] = (string) $oSettings->GetConf('CustomThemeImg', $aResult['CustomThemeImg']); @@ -2225,16 +2225,6 @@ class Actions } } -// if (!$bReal) -// { -// $iTime = $this->CacherFile()->GetTimer('Statistic/PackagesRepositoryUnreal') ; -// if (0 === $iTime || $iTime + 60 * 60 * 24 < \time()) -// { -// $this->CacherFile()->SetTimer('Statistic/PackagesRepositoryUnreal'); -// $this->KeenIO('PackagesRepositoryUnreal'); -// } -// } - return $aResult; } @@ -2328,34 +2318,26 @@ class Actions if ('' !== $sRealFile) { $sUrl = $this->rainloopRepo().$sRealFile; - $pSrc = @fopen($sUrl, 'rb'); - if ($pSrc) + $sTmp = APP_PRIVATE_DATA.md5(microtime(true).$sRealFile).'.zip'; + $pDest = @fopen($sTmp, 'w+b'); + if ($pDest) { - $sTmp = APP_PRIVATE_DATA.md5(microtime(true).$sRealFile).'.zip'; - $pDest = @fopen($sTmp, 'w+b'); - if ($pDest) - { - $iCopy = stream_copy_to_stream($pSrc, $pDest); - - $bResult = is_int($iCopy) && 0 < $iCopy; + $iCode = 0; + $sContentType = ''; - if (!$bResult) - { - $this->Logger()->Write('Cannot copy remote stream to local: '.$pDest, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER'); - } - - @fclose($pDest); - } - else + $oHttp = \MailSo\Base\Http::SingletonInstance(); + $bResult = $oHttp->SaveUrlToFile($sUrl, $pDest, $sTmp, $sContentType, $iCode, $this->Logger(), 60); + if (!$bResult) { - $this->Logger()->Write('Cannot create temp file: '.$pDest, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER'); + $this->Logger()->Write('Cannot save urt to temp file: ', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER'); + $this->Logger()->Write($sUrl.' -> '.$sTmp, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER'); } - - @fclose($pSrc); + + @fclose($pDest); } else { - $this->Logger()->Write('Can not open remote file: '.$sUrl, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER'); + $this->Logger()->Write('Cannot create temp file: '.$sTmp, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER'); } } @@ -2424,15 +2406,6 @@ class Actions @unlink($sTmp); } -// $this->KeenIO('PackagesInstallation', array( -// 'type' => $sType, -// 'name' => $sId, -// 'file' => $sFile, -// 'repo-available' => $bReal ? 1 : 0, -// 'core-updatable' => $bRainLoopUpdatable ? 1 : 0, -// 'result' => $bResult ? 1 : 0 -// )); - return $this->DefaultResponse(__FUNCTION__, $bResult ? ( 'plugin' !== $sType ? array('Reload' => true) : true ) : false); @@ -2682,18 +2655,24 @@ class Actions } $this->setSettingsFromParams($oSettings, 'CustomThemeType', 'string', function ($sCustomThemeType) { - return in_array($sCustomThemeType, array( + return \in_array($sCustomThemeType, array( \RainLoop\Enumerations\CustomThemeType::LIGHT, \RainLoop\Enumerations\CustomThemeType::DARK)) ? $sCustomThemeType : \RainLoop\Enumerations\CustomThemeType::LIGHT; }); - $this->setSettingsFromParams($oSettings, 'MPP', 'int', function ($iMpp) { - return (int) (in_array($iMpp, array(10, 20, 30, 50, 100, 150, 200, 300)) ? $iMpp : 20); + $this->setSettingsFromParams($oSettings, 'MPP', 'int', function ($iValue) { + return (int) (\in_array($iValue, array(10, 20, 30, 50, 100, 150, 200, 300)) ? $iValue : 20); }); $this->setSettingsFromParams($oSettings, 'EditorDefaultType', 'string'); $this->setSettingsFromParams($oSettings, 'ShowImages', 'bool'); - $this->setSettingsFromParams($oSettings, 'ShowAnimation', 'bool'); + $this->setSettingsFromParams($oSettings, 'InterfaceAnimation', 'string', function ($sValue) { + return (\in_array($sValue, + array(\RainLoop\Enumerations\InterfaceAnimation::NONE, + \RainLoop\Enumerations\InterfaceAnimation::NORMAL, + \RainLoop\Enumerations\InterfaceAnimation::FULL)) ? $sValue : + \RainLoop\Enumerations\InterfaceAnimation::FULL); + }); $this->setSettingsFromParams($oSettings, 'DesktopNotifications', 'bool'); $this->setSettingsFromParams($oSettings, 'UseThreads', 'bool'); $this->setSettingsFromParams($oSettings, 'ReplySameFolder', 'bool'); @@ -2912,7 +2891,9 @@ class Actions $this->initMailClientConnection(); $oFolderCollection = $this->MailClient()->Folders('', '*', - !!$this->Config()->Get('labs', 'use_imap_list_status', false)); + !!$this->Config()->Get('labs', 'use_imap_list_status', false), + !!$this->Config()->Get('labs', 'use_imap_list_subscribe', true) + ); if ($oFolderCollection instanceof \MailSo\Mail\FolderCollection) { @@ -2940,7 +2921,8 @@ class Actions $sFolderNameInUtf = $this->GetActionParam('Folder', ''); $sFolderParentFullNameRaw = $this->GetActionParam('Parent', ''); - $this->MailClient()->FolderCreate($sFolderNameInUtf, $sFolderParentFullNameRaw); + $this->MailClient()->FolderCreate($sFolderNameInUtf, $sFolderParentFullNameRaw, + !!$this->Config()->Get('labs', 'use_imap_list_subscribe', true)); } catch (\Exception $oException) { @@ -2993,7 +2975,8 @@ class Actions try { - $this->MailClient()->FolderRename($sPrevFolderFullNameRaw, $sNewTopFolderNameInUtf); + $this->MailClient()->FolderRename($sPrevFolderFullNameRaw, $sNewTopFolderNameInUtf, + !!$this->Config()->Get('labs', 'use_imap_list_subscribe', true)); } catch (\Exception $oException) { @@ -3016,7 +2999,8 @@ class Actions try { - $this->MailClient()->FolderDelete($sFolderFullNameRaw); + $this->MailClient()->FolderDelete($sFolderFullNameRaw, + !!$this->Config()->Get('labs', 'use_imap_list_subscribe', true)); } catch (\MailSo\Mail\Exceptions\NonEmptyFolder $oException) { @@ -3279,9 +3263,10 @@ class Actions } $aFoundedCids = array(); + $aFoundedContentLocationUrls = array(); $mFoundDataURL = array(); $oMessage->AddText($bTextIsHtml ? - \MailSo\Base\HtmlUtils::BuildHtml($sText, $aFoundedCids, $mFoundDataURL) : $sText, $bTextIsHtml); + \MailSo\Base\HtmlUtils::BuildHtml($sText, $aFoundedCids, $mFoundDataURL, $aFoundedContentLocationUrls) : $sText, $bTextIsHtml); if (is_array($aAttachments)) { @@ -3290,6 +3275,7 @@ class Actions $sFileName = (string) $aData[0]; $bIsInline = (bool) $aData[1]; $sCID = (string) $aData[2]; + $sContentLocation = isset($aData[3]) ? (string) $aData[3] : ''; $rResource = $this->StorageProvider()->GetFile($oAccount, StorageType::TEMP, $sTempName); if (is_resource($rResource)) @@ -3298,7 +3284,9 @@ class Actions $oMessage->Attachments()->Add( \MailSo\Mime\Attachment::NewInstance($rResource, $sFileName, $iFileSize, $bIsInline, - in_array(trim(trim($sCID), '<>'), $aFoundedCids), $sCID) + \in_array(trim(trim($sCID), '<>'), $aFoundedCids), + $sCID, array(), $sContentLocation + ) ); } } @@ -4874,20 +4862,11 @@ class Actions ); $aResult['domains'] = $this->DomainProvider()->Count(); + $aResult['multiply'] = !!APP_MULTIPLY; $aResult['settings'] = array( 'lang' => $this->Config()->Get('webmail', 'language', ''), 'theme' => $this->Config()->Get('webmail', 'theme', ''), - 'multiply' => !!APP_MULTIPLY, 'cache' => $this->Config()->Get('cache', 'fast_cache_driver', ''), - 'preview-pane' => !!$this->Config()->Get('webmail', 'use_preview_pane', true), - 'security' => array( - 'weak' => '12345' === $this->Config()->Get('security', 'admin_password', ''), - 'csrf' => !!$this->Config()->Get('security', 'csrf_protection', true), - ), - 'logs' => array( - 'enabled' => !!$this->Config()->Get('logs', 'enable', false), - 'error-only' => !!$this->Config()->Get('logs', 'write_on_error_only', false), - ), 'social' => array( 'google' => !!$this->Config()->Get('social', 'google_enable', false) && 0 < \strlen($this->Config()->Get('social', 'google_client_id', '')) && @@ -5263,12 +5242,12 @@ class Actions if (is_object($mResponse)) { $bHook = true; - $sClassName = get_class($mResponse); + $sClassName = \get_class($mResponse); if ('MailSo\Mail\Message' === $sClassName) { $oAccount = $this->getAccountFromToken(false); - $mResult = array_merge($this->objectData($mResponse, $sParent, $aParameters), array( + $mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array( 'Folder' => $mResponse->Folder(), 'Uid' => (string) $mResponse->Uid(), 'Subject' => \MailSo\Base\Utils::Utf8Clear($mResponse->Subject()), @@ -5286,13 +5265,34 @@ class Actions 'Threads' => $mResponse->Threads(), 'ThreadsLen' => $mResponse->ThreadsLen(), 'ParentThread' => $mResponse->ParentThread(), - 'Sensitivity' => $mResponse->Sensitivity() -// 'ReadingConfirmation' => $mResponse->ReadingConfirmation(), + 'Sensitivity' => $mResponse->Sensitivity(), + 'ReadingConfirmation' => $mResponse->ReadingConfirmation() )); $oAttachments = $mResponse->Attachments(); - $mResult['HasAttachments'] = $oAttachments && 0 < $oAttachments->NonInlineCount(); + $iAttachmentsCount = $oAttachments ? $oAttachments->Count() : 0; + $mResult['HasAttachments'] = 0 < $iAttachmentsCount; + $mResult['AttachmentsMainType'] = ''; + if (0 < $iAttachmentsCount) + { + switch (true) + { + case $iAttachmentsCount === $oAttachments->ImageCount(): + $mResult['AttachmentsMainType'] = 'image'; + break; + case $iAttachmentsCount === $oAttachments->ArchiveCount(): + $mResult['AttachmentsMainType'] = 'archive'; + break; + case $iAttachmentsCount === $oAttachments->PdfCount(): + $mResult['AttachmentsMainType'] = 'pdf'; + break; + case $iAttachmentsCount === $oAttachments->DocCount(): + $mResult['AttachmentsMainType'] = 'doc'; + break; + } + } + $mResult['RequestHash'] = \RainLoop\Utils::EncodeKeyValues(array( 'V' => APP_VERSION, 'Account' => $oAccount ? md5($oAccount->Hash()) : '', @@ -5313,10 +5313,28 @@ class Actions if ('Message' === $sParent) { - $oAttachments = $mResponse->Attachments(); + $oAttachments = /* @var \MailSo\Mail\AttachmentCollection */ $mResponse->Attachments(); $bHasExternals = false; - $aFoundedCIDs = array(); + $mFoundedCIDs = array(); + $aContentLocationUrls = array(); + $mFoundedContentLocationUrls = array(); + + if ($oAttachments && 0 < $oAttachments->Count()) + { + $aList =& $oAttachments->GetAsArray(); + foreach ($aList as /* @var \MailSo\Mail\Attachment */ $oAttachment) + { + if ($oAttachment) + { + $sContentLocation = $oAttachment->ContentLocation(); + if ($sContentLocation && 0 < strlen($sContentLocation)) + { + $aContentLocationUrls[] = $oAttachment->ContentLocation(); + } + } + } + } $sPlain = ''; $sHtml = $mResponse->Html(); @@ -5335,30 +5353,34 @@ class Actions $mResult['DraftInfo'] = $mResponse->DraftInfo(); $mResult['InReplyTo'] = $mResponse->InReplyTo(); $mResult['References'] = $mResponse->References(); - $mResult['Html'] = 0 === \strlen($sHtml) ? '' : \MailSo\Base\HtmlUtils::ClearHtml($sHtml, $bHasExternals, $aFoundedCIDs); + $mResult['Html'] = 0 === \strlen($sHtml) ? '' : \MailSo\Base\HtmlUtils::ClearHtml( + $sHtml, $bHasExternals, $mFoundedCIDs, $aContentLocationUrls, $mFoundedContentLocationUrls); + $mResult['Plain'] = 0 === \strlen($sPlain) ? '' : \MailSo\Base\HtmlUtils::ConvertPlainToHtml($sPlain); $mResult['Rtl'] = $bRtl; unset($sHtml, $sPlain); $mResult['HasExternals'] = $bHasExternals; - $mResult['HasInternals'] = \is_array($aFoundedCIDs) && 0 < \count($aFoundedCIDs); - $mResult['FoundedCIDs'] = $aFoundedCIDs; - $mResult['Attachments'] = $this->responseObject($oAttachments, $sParent, array_merge($aParameters, array( - 'FoundedCIDs' => $aFoundedCIDs + $mResult['HasInternals'] = (\is_array($mFoundedCIDs) && 0 < \count($mFoundedCIDs)) || + (\is_array($mFoundedContentLocationUrls) && 0 < \count($mFoundedContentLocationUrls)); + $mResult['FoundedCIDs'] = $mFoundedCIDs; + $mResult['Attachments'] = $this->responseObject($oAttachments, $sParent, \array_merge($aParameters, array( + 'FoundedCIDs' => $mFoundedCIDs, + 'FoundedContentLocationUrls' => $mFoundedContentLocationUrls ))); } } else if ('MailSo\Mime\Email' === $sClassName) { - $mResult = array_merge($this->objectData($mResponse, $sParent, $aParameters), array( + $mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array( 'Name' => \MailSo\Base\Utils::Utf8Clear($mResponse->GetDisplayName()), 'Email' => \MailSo\Base\Utils::Utf8Clear($mResponse->GetEmail()) )); } else if ('RainLoop\Providers\Contacts\Classes\Contact' === $sClassName) { - $mResult = array_merge($this->objectData($mResponse, $sParent, $aParameters), array( + $mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array( 'IdContact' => $mResponse->IdContact, 'ImageHash' => $mResponse->ImageHash, 'ListName' => \MailSo\Base\Utils::Utf8Clear($mResponse->ListName), @@ -5368,7 +5390,7 @@ class Actions } else if ('RainLoop\Domain' === $sClassName) { - $mResult = array_merge($this->objectData($mResponse, $sParent, $aParameters), array( + $mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array( 'Name' => $mResponse->Name(), 'IncHost' => $mResponse->IncHost(), 'IncPort' => $mResponse->IncPort(), @@ -5384,10 +5406,24 @@ class Actions { $oAccount = $this->getAccountFromToken(false); - $aFoundedCIDs = isset($aParameters['FoundedCIDs']) && is_array($aParameters['FoundedCIDs']) - ? $aParameters['FoundedCIDs'] : array(); + $mFoundedCIDs = isset($aParameters['FoundedCIDs']) && \is_array($aParameters['FoundedCIDs']) && + 0 < \count($aParameters['FoundedCIDs']) ? + $aParameters['FoundedCIDs'] : null; + + $mFoundedContentLocationUrls = isset($aParameters['FoundedContentLocationUrls']) && + \is_array($aParameters['FoundedContentLocationUrls']) && + 0 < \count($aParameters['FoundedContentLocationUrls']) ? + $aParameters['FoundedContentLocationUrls'] : null; - $mResult = array_merge($this->objectData($mResponse, $sParent, $aParameters), array( + if ($mFoundedCIDs || $mFoundedContentLocationUrls) + { + $mFoundedCIDs = \array_merge($mFoundedCIDs ? $mFoundedCIDs : array(), + $mFoundedContentLocationUrls ? $mFoundedContentLocationUrls : array()); + + $mFoundedCIDs = 0 < \count($mFoundedCIDs) ? $mFoundedCIDs : null; + } + + $mResult = \array_merge($this->objectData($mResponse, $sParent, $aParameters), array( 'Folder' => $mResponse->Folder(), 'Uid' => (string) $mResponse->Uid(), 'MimeIndex' => (string) $mResponse->MimeIndex(), @@ -5395,8 +5431,10 @@ class Actions 'FileName' => $mResponse->FileName(true), 'EstimatedSize' => $mResponse->EstimatedSize(), 'CID' => $mResponse->Cid(), + 'ContentLocation' => $mResponse->ContentLocation(), 'IsInline' => $mResponse->IsInline(), - 'IsLinked' => in_array(trim(trim($mResponse->Cid()), '<>'), $aFoundedCIDs) + 'IsLinked' => ($mFoundedCIDs && \in_array(trim(trim($mResponse->Cid()), '<>'), $mFoundedCIDs)) || + ($mFoundedContentLocationUrls && \in_array(\trim($mResponse->ContentLocation()), $mFoundedContentLocationUrls)) )); $mResult['Download'] = \RainLoop\Utils::EncodeKeyValues(array( @@ -5411,8 +5449,6 @@ class Actions } else if ('MailSo\Mail\Folder' === $sClassName) { - $bIgnoreFolderSubscribe = (bool) $this->Config()->Get('labs', 'ignore_folders_subscription', false); - $aExtended = null; $mStatus = $mResponse->Status(); if (is_array($mStatus) && isset($mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'])) @@ -5433,7 +5469,7 @@ class Actions 'FullNameHash' => $this->hashFolderFullName($mResponse->FullNameRaw(), $mResponse->FullName()), 'Delimiter' => (string) $mResponse->Delimiter(), 'HasVisibleSubFolders' => $mResponse->HasVisibleSubFolders(), - 'IsSubscribed' => $bIgnoreFolderSubscribe ? true : $mResponse->IsSubscribed(), + 'IsSubscribed' => $mResponse->IsSubscribed(), 'IsExisten' => $mResponse->IsExisten(), 'IsSelectable' => $mResponse->IsSelectable(), 'Flags' => $mResponse->FlagsLowerCase(), diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/AbstractConfig.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/AbstractConfig.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/AbstractConfig.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/AbstractConfig.php diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/Application.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/Application.php similarity index 96% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/Application.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/Application.php index 3ef532d4c..2fdfb81da 100644 --- a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/Application.php +++ b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/Application.php @@ -194,6 +194,7 @@ Enables caching in the system'), 'determine_user_language' => array(false), 'use_imap_sort' => array(false), 'use_imap_list_status' => array(false), + 'use_imap_list_subscribe' => array(true), 'use_imap_thread' => array(true), 'use_imap_move' => array(true), 'use_imap_auth_plain' => array(false), diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/Plugin.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/Plugin.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Config/Plugin.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Config/Plugin.php diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Domain.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Domain.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Domain.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Domain.php diff --git a/rainloop/v/1.3.7.466/app/libraries/RainLoop/Enumerations/CustomThemeType.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Enumerations/CustomThemeType.php similarity index 100% rename from rainloop/v/1.3.7.466/app/libraries/RainLoop/Enumerations/CustomThemeType.php rename to rainloop/v/1.3.8.476/app/libraries/RainLoop/Enumerations/CustomThemeType.php diff --git a/rainloop/v/1.3.8.476/app/libraries/RainLoop/Enumerations/InterfaceAnimation.php b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Enumerations/InterfaceAnimation.php new file mode 100644 index 000000000..2ddeb46a8 --- /dev/null +++ b/rainloop/v/1.3.8.476/app/libraries/RainLoop/Enumerations/InterfaceAnimation.php @@ -0,0 +1,10 @@ + - +
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/AdminGeneral.html b/rainloop/v/1.3.8.476/app/templates/Views/AdminGeneral.html similarity index 88% rename from rainloop/v/1.3.7.466/app/templates/Views/AdminGeneral.html rename to rainloop/v/1.3.8.476/app/templates/Views/AdminGeneral.html index ffbebd8ad..a8950c702 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/AdminGeneral.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/AdminGeneral.html @@ -12,7 +12,7 @@
General
-
+
@@ -21,7 +21,7 @@
-
+
@@ -44,7 +44,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
-
+
+
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/AdminPane.html b/rainloop/v/1.3.8.476/app/templates/Views/AdminPane.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/AdminPane.html rename to rainloop/v/1.3.8.476/app/templates/Views/AdminPane.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/AdminPluginListItem.html b/rainloop/v/1.3.8.476/app/templates/Views/AdminPluginListItem.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/AdminPluginListItem.html rename to rainloop/v/1.3.8.476/app/templates/Views/AdminPluginListItem.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/AdminPluginProperty.html b/rainloop/v/1.3.8.476/app/templates/Views/AdminPluginProperty.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/AdminPluginProperty.html rename to rainloop/v/1.3.8.476/app/templates/Views/AdminPluginProperty.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/AdminPlugins.html b/rainloop/v/1.3.8.476/app/templates/Views/AdminPlugins.html similarity index 90% rename from rainloop/v/1.3.7.466/app/templates/Views/AdminPlugins.html rename to rainloop/v/1.3.8.476/app/templates/Views/AdminPlugins.html index b503d10e4..0497c0d2e 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/AdminPlugins.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/AdminPlugins.html @@ -25,7 +25,7 @@
-
+
No plugins have yet been installed.
@@ -33,7 +33,7 @@ Click here install new!
-
+
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/AdminSecurity.html b/rainloop/v/1.3.8.476/app/templates/Views/AdminSecurity.html similarity index 82% rename from rainloop/v/1.3.7.466/app/templates/Views/AdminSecurity.html rename to rainloop/v/1.3.8.476/app/templates/Views/AdminSecurity.html index f06868b34..dbfac2424 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/AdminSecurity.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/AdminSecurity.html @@ -3,7 +3,7 @@
Security
-
+
-
+
-
+
@@ -31,7 +31,7 @@
Changer Admin Password
-
+
@@ -39,7 +39,7 @@
-
+
@@ -47,7 +47,7 @@
-
+ -
+
Google
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/ComposeAttachment.html b/rainloop/v/1.3.8.476/app/templates/Views/ComposeAttachment.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/ComposeAttachment.html rename to rainloop/v/1.3.8.476/app/templates/Views/ComposeAttachment.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/ComposeAttachmentInProcess.html b/rainloop/v/1.3.8.476/app/templates/Views/ComposeAttachmentInProcess.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/ComposeAttachmentInProcess.html rename to rainloop/v/1.3.8.476/app/templates/Views/ComposeAttachmentInProcess.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/Login.html b/rainloop/v/1.3.8.476/app/templates/Views/Login.html similarity index 93% rename from rainloop/v/1.3.7.466/app/templates/Views/Login.html rename to rainloop/v/1.3.8.476/app/templates/Views/Login.html index e4ead42b3..733334310 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/Login.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/Login.html @@ -9,7 +9,7 @@ {{INCLUDE/TopControlGroup/PLACE}}
- @@ -18,7 +18,7 @@
- @@ -27,7 +27,7 @@
- diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailFolderList.html b/rainloop/v/1.3.8.476/app/templates/Views/MailFolderList.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/MailFolderList.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailFolderList.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailFolderListItem.html b/rainloop/v/1.3.8.476/app/templates/Views/MailFolderListItem.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/MailFolderListItem.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailFolderListItem.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailFolderListSystemItem.html b/rainloop/v/1.3.8.476/app/templates/Views/MailFolderListSystemItem.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/MailFolderListSystemItem.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailFolderListSystemItem.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailMessageList.html b/rainloop/v/1.3.8.476/app/templates/Views/MailMessageList.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/MailMessageList.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailMessageList.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailMessageListItem.html b/rainloop/v/1.3.8.476/app/templates/Views/MailMessageListItem.html similarity index 94% rename from rainloop/v/1.3.7.466/app/templates/Views/MailMessageListItem.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailMessageListItem.html index 178941f43..da866c074 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/MailMessageListItem.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/MailMessageListItem.html @@ -33,7 +33,7 @@
- +
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailMessageListItemNoPreviewPane.html b/rainloop/v/1.3.8.476/app/templates/Views/MailMessageListItemNoPreviewPane.html similarity index 94% rename from rainloop/v/1.3.7.466/app/templates/Views/MailMessageListItemNoPreviewPane.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailMessageListItemNoPreviewPane.html index 134890cc6..77fc21f6b 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/MailMessageListItemNoPreviewPane.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/MailMessageListItemNoPreviewPane.html @@ -33,7 +33,7 @@
- +
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/MailMessageView.html b/rainloop/v/1.3.8.476/app/templates/Views/MailMessageView.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/MailMessageView.html rename to rainloop/v/1.3.8.476/app/templates/Views/MailMessageView.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsActivate.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsActivate.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsActivate.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsActivate.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsAddAccount.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsAddAccount.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsAddAccount.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsAddAccount.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsAdvancedSearch.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsAdvancedSearch.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsAdvancedSearch.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsAdvancedSearch.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsCompose.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsCompose.html similarity index 96% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsCompose.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsCompose.html index 833c8d7f3..13ac60b63 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/PopupsCompose.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/PopupsCompose.html @@ -104,8 +104,8 @@
- -
+ +
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsContacts.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsContacts.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsContacts.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsContacts.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsDomain.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsDomain.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsDomain.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsDomain.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsFolderClear.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsFolderClear.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsFolderClear.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsFolderClear.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsFolderCreate.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsFolderCreate.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsFolderCreate.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsFolderCreate.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsFolderSystem.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsFolderSystem.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsFolderSystem.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsFolderSystem.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsLanguages.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsLanguages.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsLanguages.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsLanguages.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsPlugin.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsPlugin.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsPlugin.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsPlugin.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/PopupsWindowSimpleMessage.html b/rainloop/v/1.3.8.476/app/templates/Views/PopupsWindowSimpleMessage.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/PopupsWindowSimpleMessage.html rename to rainloop/v/1.3.8.476/app/templates/Views/PopupsWindowSimpleMessage.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/SettingsAccounts.html b/rainloop/v/1.3.8.476/app/templates/Views/SettingsAccounts.html similarity index 89% rename from rainloop/v/1.3.7.466/app/templates/Views/SettingsAccounts.html rename to rainloop/v/1.3.8.476/app/templates/Views/SettingsAccounts.html index 1a53c9b7e..6b6f08d9b 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/SettingsAccounts.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/SettingsAccounts.html @@ -14,7 +14,7 @@   
-
+
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/SettingsChangePassword.html b/rainloop/v/1.3.8.476/app/templates/Views/SettingsChangePassword.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/SettingsChangePassword.html rename to rainloop/v/1.3.8.476/app/templates/Views/SettingsChangePassword.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/SettingsCustom.html b/rainloop/v/1.3.8.476/app/templates/Views/SettingsCustom.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/SettingsCustom.html rename to rainloop/v/1.3.8.476/app/templates/Views/SettingsCustom.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/SettingsFolderItem.html b/rainloop/v/1.3.8.476/app/templates/Views/SettingsFolderItem.html similarity index 100% rename from rainloop/v/1.3.7.466/app/templates/Views/SettingsFolderItem.html rename to rainloop/v/1.3.8.476/app/templates/Views/SettingsFolderItem.html diff --git a/rainloop/v/1.3.7.466/app/templates/Views/SettingsFolders.html b/rainloop/v/1.3.8.476/app/templates/Views/SettingsFolders.html similarity index 87% rename from rainloop/v/1.3.7.466/app/templates/Views/SettingsFolders.html rename to rainloop/v/1.3.8.476/app/templates/Views/SettingsFolders.html index f0b252a84..91e631b03 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/SettingsFolders.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/SettingsFolders.html @@ -1,4 +1,4 @@ -
+
@@ -24,7 +24,7 @@   
-
+
diff --git a/rainloop/v/1.3.7.466/app/templates/Views/SettingsGeneral.html b/rainloop/v/1.3.8.476/app/templates/Views/SettingsGeneral.html similarity index 71% rename from rainloop/v/1.3.7.466/app/templates/Views/SettingsGeneral.html rename to rainloop/v/1.3.8.476/app/templates/Views/SettingsGeneral.html index b259290d6..4271646ba 100644 --- a/rainloop/v/1.3.7.466/app/templates/Views/SettingsGeneral.html +++ b/rainloop/v/1.3.8.476/app/templates/Views/SettingsGeneral.html @@ -3,7 +3,7 @@
-
+
@@ -17,7 +17,32 @@
-
+
+ +
+ + + +
+
+
@@ -41,14 +66,14 @@
-
+
-
+
-
@@ -89,7 +107,7 @@
-
+