/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */ /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "rainloop/v/0.0.0/static/js/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /*!**********************!*\ !*** ./dev/admin.js ***! \**********************/ /***/ function(module, exports, __webpack_require__) { __webpack_require__(/*! bootstrap */ 70)(__webpack_require__(/*! App/Admin */ 16)); /***/ }, /* 1 */ /*!*****************************!*\ !*** ./dev/Common/Utils.js ***! \*****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var oEncryptObject = null, Utils = {}, window = __webpack_require__(/*! window */ 11), _ = __webpack_require__(/*! _ */ 2), $ = __webpack_require__(/*! $ */ 12), ko = __webpack_require__(/*! ko */ 3), Autolinker = __webpack_require__(/*! Autolinker */ 72), JSEncrypt = __webpack_require__(/*! JSEncrypt */ 73), Mime = __webpack_require__(/*! Common/Mime */ 49), Enums = __webpack_require__(/*! Common/Enums */ 4), Globals = __webpack_require__(/*! Common/Globals */ 7) ; Utils.trim = $.trim; Utils.inArray = $.inArray; Utils.isArray = _.isArray; Utils.isObject = _.isObject; Utils.isFunc = _.isFunction; Utils.isUnd = _.isUndefined; Utils.isNull = _.isNull; Utils.emptyFunction = function () {}; /** * @param {*} oValue * @return {boolean} */ Utils.isNormal = function (oValue) { return !Utils.isUnd(oValue) && !Utils.isNull(oValue); }; Utils.windowResize = _.debounce(function (iTimeout) { if (Utils.isUnd(iTimeout)) { Globals.$win.resize(); } else { window.setTimeout(function () { Globals.$win.resize(); }, iTimeout); } }, 50); Utils.windowResizeCallback = function () { Utils.windowResize(); }; /** * @param {(string|number)} mValue * @param {boolean=} bIncludeZero * @return {boolean} */ Utils.isPosNumeric = function (mValue, bIncludeZero) { return Utils.isNormal(mValue) ? ((Utils.isUnd(bIncludeZero) ? true : !!bIncludeZero) ? (/^[0-9]*$/).test(mValue.toString()) : (/^[1-9]+[0-9]*$/).test(mValue.toString())) : false; }; /** * @param {*} iValue * @param {number=} iDefault = 0 * @return {number} */ Utils.pInt = function (iValue, iDefault) { var iResult = Utils.isNormal(iValue) && '' !== iValue ? window.parseInt(iValue, 10) : (iDefault || 0); return window.isNaN(iResult) ? (iDefault || 0) : iResult; }; /** * @param {*} mValue * @return {string} */ Utils.pString = function (mValue) { return Utils.isNormal(mValue) ? '' + mValue : ''; }; /** * @param {string} sComponent * @return {string} */ Utils.encodeURIComponent = function (sComponent) { return window.encodeURIComponent(sComponent); }; /** * @param {*} aValue * @return {boolean} */ Utils.isNonEmptyArray = function (aValue) { return Utils.isArray(aValue) && 0 < aValue.length; }; /** * @param {string} sQueryString * @return {Object} */ Utils.simpleQueryParser = function (sQueryString) { var oParams = {}, aQueries = [], aTemp = [], iIndex = 0, iLen = 0 ; aQueries = sQueryString.split('&'); for (iIndex = 0, iLen = aQueries.length; iIndex < iLen; iIndex++) { aTemp = aQueries[iIndex].split('='); oParams[window.decodeURIComponent(aTemp[0])] = window.decodeURIComponent(aTemp[1]); } return oParams; }; /** * @param {string} sMailToUrl * @param {Function} PopupComposeVoreModel * @returns {boolean} */ Utils.mailToHelper = function (sMailToUrl, PopupComposeVoreModel) { if (sMailToUrl && 'mailto:' === sMailToUrl.toString().substr(0, 7).toLowerCase()) { sMailToUrl = sMailToUrl.toString().substr(7); var aTo = [], aCc = null, aBcc = null, oParams = {}, EmailModel = __webpack_require__(/*! Model/Email */ 25), sEmail = sMailToUrl.replace(/\?.+$/, ''), sQueryString = sMailToUrl.replace(/^[^\?]*\?/, ''), fParseEmailLine = function (sLine) { return sLine ? _.compact(_.map(window.decodeURIComponent(sLine).split(/[,]/), function (sItem) { var oEmailModel = new EmailModel(); oEmailModel.mailsoParse(sItem); return '' !== oEmailModel.email ? oEmailModel : null; })) : null; } ; aTo = fParseEmailLine(sEmail); oParams = Utils.simpleQueryParser(sQueryString); if (!Utils.isUnd(oParams.cc)) { aCc = fParseEmailLine(window.decodeURIComponent(oParams.cc)); } if (!Utils.isUnd(oParams.bcc)) { aBcc = fParseEmailLine(window.decodeURIComponent(oParams.bcc)); } __webpack_require__(/*! Knoin/Knoin */ 5).showScreenPopup(PopupComposeVoreModel, [Enums.ComposeType.Empty, null, aTo, aCc, aBcc, Utils.isUnd(oParams.subject) ? null : Utils.pString(window.decodeURIComponent(oParams.subject)), Utils.isUnd(oParams.body) ? null : Utils.plainToHtml(Utils.pString(window.decodeURIComponent(oParams.body))) ]); return true; } return false; }; /** * @param {string} sPublicKey * @return {JSEncrypt} */ Utils.rsaObject = function (sPublicKey) { if (JSEncrypt && sPublicKey && (null === oEncryptObject || (oEncryptObject && oEncryptObject.__sPublicKey !== sPublicKey)) && window.crypto && window.crypto.getRandomValues) { oEncryptObject = new JSEncrypt(); oEncryptObject.setPublicKey(sPublicKey); oEncryptObject.__sPublicKey = sPublicKey; } else { oEncryptObject = false; } return oEncryptObject; }; /** * @param {string} sValue * @param {string} sPublicKey * @return {string} */ Utils.rsaEncode = function (sValue, sPublicKey) { if (window.crypto && window.crypto.getRandomValues && sPublicKey) { var sResultValue = false, oEncrypt = Utils.rsaObject(sPublicKey) ; if (oEncrypt) { sResultValue = oEncrypt.encrypt(Utils.fakeMd5() + ':' + sValue + ':' + Utils.fakeMd5()); if (false !== sResultValue && Utils.isNormal(sResultValue)) { return 'rsa:xxx:' + sResultValue; } } } return sValue; }; Utils.rsaEncode.supported = !!(window.crypto && window.crypto.getRandomValues && false && JSEncrypt); /** * @param {string} sText * @return {string} */ Utils.encodeHtml = function (sText) { return Utils.isNormal(sText) ? _.escape(sText.toString()) : ''; }; /** * @param {string} sText * @param {number=} iLen * @return {string} */ Utils.splitPlainText = function (sText, iLen) { var sPrefix = '', sSubText = '', sResult = sText, iSpacePos = 0, iNewLinePos = 0 ; iLen = Utils.isUnd(iLen) ? 100 : iLen; while (sResult.length > iLen) { sSubText = sResult.substring(0, iLen); iSpacePos = sSubText.lastIndexOf(' '); iNewLinePos = sSubText.lastIndexOf('\n'); if (-1 !== iNewLinePos) { iSpacePos = iNewLinePos; } if (-1 === iSpacePos) { iSpacePos = iLen; } sPrefix += sSubText.substring(0, iSpacePos) + '\n'; sResult = sResult.substring(iSpacePos + 1); } return sPrefix + sResult; }; Utils.timeOutAction = (function () { var oTimeOuts = {} ; return function (sAction, fFunction, iTimeOut) { if (Utils.isUnd(oTimeOuts[sAction])) { oTimeOuts[sAction] = 0; } window.clearTimeout(oTimeOuts[sAction]); oTimeOuts[sAction] = window.setTimeout(fFunction, iTimeOut); }; }()); Utils.timeOutActionSecond = (function () { var oTimeOuts = {} ; return function (sAction, fFunction, iTimeOut) { if (!oTimeOuts[sAction]) { oTimeOuts[sAction] = window.setTimeout(function () { fFunction(); oTimeOuts[sAction] = 0; }, iTimeOut); } }; }()); /** * @param {(Object|null|undefined)} oObject * @param {string} sProp * @return {boolean} */ Utils.hos = function (oObject, sProp) { return oObject && window.Object && window.Object.hasOwnProperty ? window.Object.hasOwnProperty.call(oObject, sProp) : false; }; /** * @return {boolean} */ Utils.inFocus = function () { if (window.document.activeElement) { if (Utils.isUnd(window.document.activeElement.__inFocusCache)) { window.document.activeElement.__inFocusCache = $(window.document.activeElement).is('input,textarea,iframe,.cke_editable'); } return !!window.document.activeElement.__inFocusCache; } return false; }; Utils.removeInFocus = function () { if (window.document && window.document.activeElement && window.document.activeElement.blur) { var oA = $(window.document.activeElement); if (oA.is('input,textarea')) { window.document.activeElement.blur(); } } }; Utils.removeSelection = function () { if (window && window.getSelection) { var oSel = window.getSelection(); if (oSel && oSel.removeAllRanges) { oSel.removeAllRanges(); } } else if (window.document && window.document.selection && window.document.selection.empty) { window.document.selection.empty(); } }; /** * @param {string} sPrefix * @param {string} sSubject * @return {string} */ Utils.replySubjectAdd = function (sPrefix, sSubject) { sPrefix = Utils.trim(sPrefix.toUpperCase()); sSubject = Utils.trim(sSubject.replace(/[\s]+/g, ' ')); var bDrop = false, aSubject = [], bRe = 'RE' === sPrefix, bFwd = 'FWD' === sPrefix, bPrefixIsRe = !bFwd ; if ('' !== sSubject) { _.each(sSubject.split(':'), function (sPart) { var sTrimmedPart = Utils.trim(sPart); if (!bDrop && (/^(RE|FWD)$/i.test(sTrimmedPart) || /^(RE|FWD)[\[\(][\d]+[\]\)]$/i.test(sTrimmedPart))) { if (!bRe) { bRe = !!(/^RE/i.test(sTrimmedPart)); } if (!bFwd) { bFwd = !!(/^FWD/i.test(sTrimmedPart)); } } else { aSubject.push(sPart); bDrop = true; } }); } if (bPrefixIsRe) { bRe = false; } else { bFwd = false; } return Utils.trim( (bPrefixIsRe ? 'Re: ' : 'Fwd: ') + (bRe ? 'Re: ' : '') + (bFwd ? 'Fwd: ' : '') + Utils.trim(aSubject.join(':')) ); }; /** * @param {number} iNum * @param {number} iDec * @return {number} */ Utils.roundNumber = function (iNum, iDec) { return window.Math.round(iNum * window.Math.pow(10, iDec)) / window.Math.pow(10, iDec); }; /** * @param {(number|string)} iSizeInBytes * @return {string} */ Utils.friendlySize = function (iSizeInBytes) { iSizeInBytes = Utils.pInt(iSizeInBytes); if (iSizeInBytes >= 1073741824) { return Utils.roundNumber(iSizeInBytes / 1073741824, 1) + 'GB'; } else if (iSizeInBytes >= 1048576) { return Utils.roundNumber(iSizeInBytes / 1048576, 1) + 'MB'; } else if (iSizeInBytes >= 1024) { return Utils.roundNumber(iSizeInBytes / 1024, 0) + 'KB'; } return iSizeInBytes + 'B'; }; /** * @param {string} sDesc */ Utils.log = function (sDesc) { if (window.console && window.console.log) { window.console.log(sDesc); } }; /** * @param {?} oObject * @param {string} sMethodName * @param {Array=} aParameters * @param {number=} nDelay */ Utils.delegateRun = function (oObject, sMethodName, aParameters, nDelay) { if (oObject && oObject[sMethodName]) { nDelay = Utils.pInt(nDelay); if (0 >= nDelay) { oObject[sMethodName].apply(oObject, Utils.isArray(aParameters) ? aParameters : []); } else { _.delay(function () { oObject[sMethodName].apply(oObject, Utils.isArray(aParameters) ? aParameters : []); }, nDelay); } } }; /** * @param {?} oEvent */ Utils.kill_CtrlA_CtrlS = function (oEvent) { oEvent = oEvent || window.event; if (oEvent && oEvent.ctrlKey && !oEvent.shiftKey && !oEvent.altKey) { var oSender = oEvent.target || oEvent.srcElement, iKey = oEvent.keyCode || oEvent.which ; if (iKey === Enums.EventKeyCode.S) { oEvent.preventDefault(); return; } if (oSender && oSender.tagName && oSender.tagName.match(/INPUT|TEXTAREA/i)) { return; } if (iKey === Enums.EventKeyCode.A) { if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (window.document.selection && window.document.selection.clear) { window.document.selection.clear(); } oEvent.preventDefault(); } } }; /** * @param {(Object|null|undefined)} oContext * @param {Function} fExecute * @param {(Function|boolean|null)=} fCanExecute * @return {Function} */ Utils.createCommand = function (oContext, fExecute, fCanExecute) { var fNonEmpty = function () { if (fResult && fResult.canExecute && fResult.canExecute()) { fExecute.apply(oContext, Array.prototype.slice.call(arguments)); } return false; }, fResult = fExecute ? fNonEmpty : Utils.emptyFunction ; fResult.enabled = ko.observable(true); fCanExecute = Utils.isUnd(fCanExecute) ? true : fCanExecute; if (Utils.isFunc(fCanExecute)) { fResult.canExecute = ko.computed(function () { return fResult.enabled() && fCanExecute.call(oContext); }); } else { fResult.canExecute = ko.computed(function () { return fResult.enabled() && !!fCanExecute; }); } return fResult; }; /** * @param {{moment:Function}} oObject */ Utils.createMomentDate = function (oObject) { if (Utils.isUnd(oObject.moment)) { oObject.moment = ko.observable(moment()); } return ko.computed(function () { Globals.momentTrigger(); var oMoment = this.moment(); return 1970 === oMoment.year() ? '' : oMoment.fromNow(); }, oObject); }; /** * @param {{moment:Function, momentDate:Function}} oObject */ Utils.createMomentShortDate = function (oObject) { return ko.computed(function () { var sResult = '', oMomentNow = moment(), oMoment = this.moment(), sMomentDate = this.momentDate() ; if (1970 === oMoment.year()) { sResult = ''; } else if (4 >= oMomentNow.diff(oMoment, 'hours')) { sResult = sMomentDate; } else if (oMomentNow.format('L') === oMoment.format('L')) { sResult = __webpack_require__(/*! Common/Translator */ 8).i18n('MESSAGE_LIST/TODAY_AT', { 'TIME': oMoment.format('LT') }); } else if (oMomentNow.clone().subtract('days', 1).format('L') === oMoment.format('L')) { sResult = __webpack_require__(/*! Common/Translator */ 8).i18n('MESSAGE_LIST/YESTERDAY_AT', { 'TIME': oMoment.format('LT') }); } else if (oMomentNow.year() === oMoment.year()) { sResult = oMoment.format('D MMM.'); } else { sResult = oMoment.format('LL'); } return sResult; }, oObject); }; /** * @param {string} sTheme * @return {string} */ Utils.convertThemeName = function (sTheme) { if ('@custom' === sTheme.substr(-7)) { sTheme = Utils.trim(sTheme.substring(0, sTheme.length - 7)); } return Utils.trim(sTheme.replace(/[^a-zA-Z0-9]+/g, ' ').replace(/([A-Z])/g, ' $1').replace(/[\s]+/g, ' ')); }; /** * @param {string} sName * @return {string} */ Utils.quoteName = function (sName) { return sName.replace(/["]/g, '\\"'); }; /** * @return {number} */ Utils.microtime = function () { return (new Date()).getTime(); }; /** * @return {number} */ Utils.timestamp = function () { return window.Math.round(Utils.microtime() / 1000); }; /** * * @param {string} sLanguage * @param {boolean=} bEng = false * @return {string} */ Utils.convertLangName = function (sLanguage, bEng) { return __webpack_require__(/*! Common/Translator */ 8).i18n('LANGS_NAMES' + (true === bEng ? '_EN' : '') + '/LANG_' + sLanguage.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_'), null, sLanguage); }; /** * @param {number=} iLen * @return {string} */ Utils.fakeMd5 = function(iLen) { var sResult = '', sLine = '0123456789abcdefghijklmnopqrstuvwxyz' ; iLen = Utils.isUnd(iLen) ? 32 : Utils.pInt(iLen); while (sResult.length < iLen) { sResult += sLine.substr(window.Math.round(window.Math.random() * sLine.length), 1); } return sResult; }; Utils.draggablePlace = function () { return $('
' + ' ' + '
').appendTo('#rl-hidden'); }; Utils.defautOptionsAfterRender = function (oDomOption, oItem) { if (oItem && !Utils.isUnd(oItem.disabled) && oDomOption) { $(oDomOption) .toggleClass('disabled', oItem.disabled) .prop('disabled', oItem.disabled) ; } }; /** * @param {Object} oViewModel * @param {string} sTemplateID * @param {string} sTitle * @param {Function=} fCallback */ Utils.windowPopupKnockout = function (oViewModel, sTemplateID, sTitle, fCallback) { var oScript = null, oWin = window.open(''), sFunc = '__OpenerApplyBindingsUid' + Utils.fakeMd5() + '__', oTemplate = $('#' + sTemplateID) ; window[sFunc] = function () { if (oWin && oWin.document.body && oTemplate && oTemplate[0]) { var oBody = $(oWin.document.body); $('#rl-content', oBody).html(oTemplate.html()); $('html', oWin.document).addClass('external ' + $('html').attr('class')); __webpack_require__(/*! Common/Translator */ 8).i18nToNode(oBody); if (oViewModel && $('#rl-content', oBody)[0]) { ko.applyBindings(oViewModel, $('#rl-content', oBody)[0]); } window[sFunc] = null; fCallback(oWin); } }; oWin.document.open(); oWin.document.write('' + '' + '' + '' + '' + '' + '' + Utils.encodeHtml(sTitle) + '' + '
'); oWin.document.close(); oScript = oWin.document.createElement('script'); oScript.type = 'text/javascript'; oScript.innerHTML = 'if(window&&window.opener&&window.opener[\'' + sFunc + '\']){window.opener[\'' + sFunc + '\']();window.opener[\'' + sFunc + '\']=null}'; oWin.document.getElementsByTagName('head')[0].appendChild(oScript); }; /** * @param {Function} fCallback * @param {?} koTrigger * @param {?} oContext = null * @param {number=} iTimer = 1000 * @return {Function} */ Utils.settingsSaveHelperFunction = function (fCallback, koTrigger, oContext, iTimer) { oContext = oContext || null; iTimer = Utils.isUnd(iTimer) ? 1000 : Utils.pInt(iTimer); return function (sType, mData, bCached, sRequestAction, oRequestParameters) { koTrigger.call(oContext, mData && mData['Result'] ? Enums.SaveSettingsStep.TrueResult : Enums.SaveSettingsStep.FalseResult); if (fCallback) { fCallback.call(oContext, sType, mData, bCached, sRequestAction, oRequestParameters); } _.delay(function () { koTrigger.call(oContext, Enums.SaveSettingsStep.Idle); }, iTimer); }; }; Utils.settingsSaveHelperSimpleFunction = function (koTrigger, oContext) { return Utils.settingsSaveHelperFunction(null, koTrigger, oContext, 1000); }; Utils.settingsSaveHelperSubscribeFunction = function (oRemote, sSettingName, sType, fTriggerFunction) { return function (mValue) { if (oRemote) { switch (sType) { default: mValue = Utils.pString(mValue); break; case 'bool': case 'boolean': mValue = mValue ? '1' : '0'; break; case 'int': case 'integer': case 'number': mValue = Utils.pInt(mValue); break; case 'trim': mValue = Utils.trim(mValue); break; } var oData = {}; oData[sSettingName] = mValue; if (oRemote.saveAdminConfig) { oRemote.saveAdminConfig(fTriggerFunction || null, oData); } else if (oRemote.saveSettings) { oRemote.saveSettings(fTriggerFunction || null, oData); } } }; }; /** * @param {string} sHtml * @return {string} */ Utils.htmlToPlain = function (sHtml) { var iPos = 0, iP1 = 0, iP2 = 0, iP3 = 0, iLimit = 0, sText = '', splitPlainText = function (sText) { var iLen = 100, sPrefix = '', sSubText = '', sResult = sText, iSpacePos = 0, iNewLinePos = 0 ; while (sResult.length > iLen) { sSubText = sResult.substring(0, iLen); iSpacePos = sSubText.lastIndexOf(' '); iNewLinePos = sSubText.lastIndexOf('\n'); if (-1 !== iNewLinePos) { iSpacePos = iNewLinePos; } if (-1 === iSpacePos) { iSpacePos = iLen; } sPrefix += sSubText.substring(0, iSpacePos) + '\n'; sResult = sResult.substring(iSpacePos + 1); } return sPrefix + sResult; }, convertBlockquote = function (sText) { sText = splitPlainText($.trim(sText)); sText = '> ' + sText.replace(/\n/gm, '\n> '); return sText.replace(/(^|\n)([> ]+)/gm, function () { return (arguments && 2 < arguments.length) ? arguments[1] + $.trim(arguments[2].replace(/[\s]/g, '')) + ' ' : ''; }); }, convertDivs = function () { if (arguments && 1 < arguments.length) { var sText = $.trim(arguments[1]); if (0 < sText.length) { sText = sText.replace(/]*>([\s\S\r\n]*)<\/div>/gmi, convertDivs); sText = '\n' + $.trim(sText) + '\n'; } return sText; } return ''; }, convertPre = function () { return (arguments && 1 < arguments.length) ? arguments[1].toString().replace(/[\n]/gm, '
') : ''; }, fixAttibuteValue = function () { return (arguments && 1 < arguments.length) ? '' + arguments[1] + _.escape(arguments[2]) : ''; }, convertLinks = function () { return (arguments && 1 < arguments.length) ? $.trim(arguments[1]) : ''; } ; sText = sHtml // specials for signature .replace(/\u0002\u0002/g, '\u200C\u200C') .replace(/\u0003\u0003/g, '\u200D\u200D') .replace(/]*>([\s\S\r\n]*)<\/pre>/gmi, convertPre) .replace(/[\s]+/gm, ' ') .replace(/((?:href|data)\s?=\s?)("[^"]+?"|'[^']+?')/gmi, fixAttibuteValue) .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(/]*>([\s\S\r\n]*)<\/div>/gmi, convertDivs) .replace(/]*>/gmi, '\n__bq__start__\n') .replace(/<\/blockquote>/gmi, '\n__bq__end__\n') .replace(/]*>([\s\S\r\n]*?)<\/a>/gmi, convertLinks) .replace(/<\/div>/gi, '\n') .replace(/ /gi, ' ') .replace(/"/gi, '"') .replace(/<[^>]*>/gm, '') ; sText = Globals.$div.html(sText).text(); sText = sText .replace(/\n[ \t]+/gm, '\n') .replace(/[\n]{3,}/gm, '\n\n') .replace(/>/gi, '>') .replace(/</gi, '<') .replace(/&/gi, '&') ; iPos = 0; iLimit = 100; while (0 < iLimit) { iLimit--; iP1 = sText.indexOf('__bq__start__', iPos); if (-1 < iP1) { iP2 = sText.indexOf('__bq__start__', iP1 + 5); iP3 = sText.indexOf('__bq__end__', iP1 + 5); if ((-1 === iP2 || iP3 < iP2) && iP1 < iP3) { sText = sText.substring(0, iP1) + convertBlockquote(sText.substring(iP1 + 13, iP3)) + sText.substring(iP3 + 11); iPos = 0; } else if (-1 < iP2 && iP2 < iP3) { iPos = iP2 - 1; } else { iPos = 0; } } else { break; } } sText = sText .replace(/__bq__start__/gm, '') .replace(/__bq__end__/gm, '') ; return sText; }; /** * @param {string} sPlain * @param {boolean} bFindEmailAndLinks = false * @return {string} */ Utils.plainToHtml = function (sPlain, bFindEmailAndLinks) { sPlain = sPlain.toString().replace(/\r/g, ''); bFindEmailAndLinks = Utils.isUnd(bFindEmailAndLinks) ? false : !!bFindEmailAndLinks; var bIn = false, bDo = true, bStart = true, aNextText = [], sLine = '', iIndex = 0, aText = sPlain.split("\n") ; do { bDo = false; aNextText = []; for (iIndex = 0; iIndex < aText.length; iIndex++) { sLine = aText[iIndex]; bStart = '>' === sLine.substr(0, 1); if (bStart && !bIn) { bDo = true; bIn = true; aNextText.push('~~~blockquote~~~'); aNextText.push(sLine.substr(1)); } else if (!bStart && bIn) { if ('' !== sLine) { bIn = false; aNextText.push('~~~/blockquote~~~'); aNextText.push(sLine); } else { aNextText.push(sLine); } } else if (bStart && bIn) { aNextText.push(sLine.substr(1)); } else { aNextText.push(sLine); } } if (bIn) { bIn = false; aNextText.push('~~~/blockquote~~~'); } aText = aNextText; } while (bDo); sPlain = aText.join("\n"); sPlain = sPlain // specials for signature .replace(/\u200C\u200C/g, '\u0002\u0002') .replace(/\u200D\u200D/g, '\u0003\u0003') // .replace(/~~~\/blockquote~~~\n~~~blockquote~~~/g, '\n') .replace(/&/g, '&') .replace(/>/g, '>').replace(/') .replace(/[\s]*~~~\/blockquote~~~/g, '') .replace(/\n/g, '
') ; return bFindEmailAndLinks ? Utils.findEmailAndLinks(sPlain) : sPlain; }; window.rainloop_Utils_htmlToPlain = Utils.htmlToPlain; window.rainloop_Utils_plainToHtml = Utils.plainToHtml; /** * @param {string} sHtml * @return {string} */ Utils.findEmailAndLinks = function (sHtml) { sHtml = Autolinker.link(sHtml, { 'newWindow': true, 'stripPrefix': false, 'urls': true, 'email': true, 'twitter': false, 'replaceFn': function (autolinker, match) { return !(autolinker && match && 'url' === match.getType() && match.matchedText && 0 !== match.matchedText.indexOf('http')); } }); return sHtml; }; /** * @param {string} sUrl * @param {number} iValue * @param {Function} fCallback */ Utils.resizeAndCrop = function (sUrl, iValue, fCallback) { var oTempImg = new window.Image(); oTempImg.onload = function() { var aDiff = [0, 0], oCanvas = window.document.createElement('canvas'), oCtx = oCanvas.getContext('2d') ; oCanvas.width = iValue; oCanvas.height = iValue; if (this.width > this.height) { aDiff = [this.width - this.height, 0]; } else { aDiff = [0, this.height - this.width]; } oCtx.fillStyle = '#fff'; oCtx.fillRect(0, 0, iValue, iValue); oCtx.drawImage(this, aDiff[0] / 2, aDiff[1] / 2, this.width - aDiff[0], this.height - aDiff[1], 0, 0, iValue, iValue); fCallback(oCanvas.toDataURL('image/jpeg')); }; oTempImg.src = sUrl; }; /** * @param {Array} aSystem * @param {Array} aList * @param {Array=} aDisabled * @param {Array=} aHeaderLines * @param {?number=} iUnDeep * @param {Function=} fDisableCallback * @param {Function=} fVisibleCallback * @param {Function=} fRenameCallback * @param {boolean=} bSystem * @param {boolean=} bBuildUnvisible * @return {Array} */ Utils.folderListOptionsBuilder = function (aSystem, aList, aDisabled, aHeaderLines, iUnDeep, fDisableCallback, fVisibleCallback, fRenameCallback, bSystem, bBuildUnvisible) { var /** * @type {?FolderModel} */ oItem = null, bSep = false, iIndex = 0, iLen = 0, sDeepPrefix = '\u00A0\u00A0\u00A0', aResult = [] ; bBuildUnvisible = Utils.isUnd(bBuildUnvisible) ? false : !!bBuildUnvisible; bSystem = !Utils.isNormal(bSystem) ? 0 < aSystem.length : bSystem; iUnDeep = !Utils.isNormal(iUnDeep) ? 0 : iUnDeep; fDisableCallback = Utils.isNormal(fDisableCallback) ? fDisableCallback : null; fVisibleCallback = Utils.isNormal(fVisibleCallback) ? fVisibleCallback : null; fRenameCallback = Utils.isNormal(fRenameCallback) ? fRenameCallback : null; if (!Utils.isArray(aDisabled)) { aDisabled = []; } if (!Utils.isArray(aHeaderLines)) { aHeaderLines = []; } for (iIndex = 0, iLen = aHeaderLines.length; iIndex < iLen; iIndex++) { aResult.push({ 'id': aHeaderLines[iIndex][0], 'name': aHeaderLines[iIndex][1], 'system': false, 'seporator': false, 'disabled': false }); } bSep = true; for (iIndex = 0, iLen = aSystem.length; iIndex < iLen; iIndex++) { oItem = aSystem[iIndex]; if (fVisibleCallback ? fVisibleCallback.call(null, oItem) : true) { if (bSep && 0 < aResult.length) { aResult.push({ 'id': '---', 'name': '---', 'system': false, 'seporator': true, 'disabled': true }); } bSep = false; aResult.push({ 'id': oItem.fullNameRaw, 'name': fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name(), 'system': true, 'seporator': false, 'disabled': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) || (fDisableCallback ? fDisableCallback.call(null, oItem) : false) }); } } bSep = true; for (iIndex = 0, iLen = aList.length; iIndex < iLen; iIndex++) { oItem = aList[iIndex]; // if (oItem.subScribed() || !oItem.existen || bBuildUnvisible) if ((oItem.subScribed() || !oItem.existen || bBuildUnvisible) && (oItem.selectable || oItem.hasSubScribedSubfolders())) { if (fVisibleCallback ? fVisibleCallback.call(null, oItem) : true) { if (Enums.FolderType.User === oItem.type() || !bSystem || oItem.hasSubScribedSubfolders()) { if (bSep && 0 < aResult.length) { aResult.push({ 'id': '---', 'name': '---', 'system': false, 'seporator': true, 'disabled': true }); } bSep = false; aResult.push({ 'id': oItem.fullNameRaw, 'name': (new window.Array(oItem.deep + 1 - iUnDeep)).join(sDeepPrefix) + (fRenameCallback ? fRenameCallback.call(null, oItem) : oItem.name()), 'system': false, 'seporator': false, 'disabled': !oItem.selectable || -1 < Utils.inArray(oItem.fullNameRaw, aDisabled) || (fDisableCallback ? fDisableCallback.call(null, oItem) : false) }); } } } if (oItem.subScribed() && 0 < oItem.subFolders().length) { aResult = aResult.concat(Utils.folderListOptionsBuilder([], oItem.subFolders(), aDisabled, [], iUnDeep, fDisableCallback, fVisibleCallback, fRenameCallback, bSystem, bBuildUnvisible)); } } return aResult; }; Utils.computedPagenatorHelper = function (koCurrentPage, koPageCount) { return function() { var iPrev = 0, iNext = 0, iLimit = 2, aResult = [], iCurrentPage = koCurrentPage(), iPageCount = koPageCount(), /** * @param {number} iIndex * @param {boolean=} bPush = true * @param {string=} sCustomName = '' */ fAdd = function (iIndex, bPush, sCustomName) { var oData = { 'current': iIndex === iCurrentPage, 'name': Utils.isUnd(sCustomName) ? iIndex.toString() : sCustomName.toString(), 'custom': Utils.isUnd(sCustomName) ? false : true, 'title': Utils.isUnd(sCustomName) ? '' : iIndex.toString(), 'value': iIndex.toString() }; if (Utils.isUnd(bPush) ? true : !!bPush) { aResult.push(oData); } else { aResult.unshift(oData); } } ; if (1 < iPageCount || (0 < iPageCount && iPageCount < iCurrentPage)) // if (0 < iPageCount && 0 < iCurrentPage) { if (iPageCount < iCurrentPage) { fAdd(iPageCount); iPrev = iPageCount; iNext = iPageCount; } else { if (3 >= iCurrentPage || iPageCount - 2 <= iCurrentPage) { iLimit += 2; } fAdd(iCurrentPage); iPrev = iCurrentPage; iNext = iCurrentPage; } while (0 < iLimit) { iPrev -= 1; iNext += 1; if (0 < iPrev) { fAdd(iPrev, false); iLimit--; } if (iPageCount >= iNext) { fAdd(iNext, true); iLimit--; } else if (0 >= iPrev) { break; } } if (3 === iPrev) { fAdd(2, false); } else if (3 < iPrev) { fAdd(window.Math.round((iPrev - 1) / 2), false, '...'); } if (iPageCount - 2 === iNext) { fAdd(iPageCount - 1, true); } else if (iPageCount - 2 > iNext) { fAdd(window.Math.round((iPageCount + iNext) / 2), true, '...'); } // first and last if (1 < iPrev) { fAdd(1, false); } if (iPageCount > iNext) { fAdd(iPageCount, true); } } return aResult; }; }; Utils.selectElement = function (element) { var sel, range; if (window.getSelection) { sel = window.getSelection(); sel.removeAllRanges(); range = window.document.createRange(); range.selectNodeContents(element); sel.addRange(range); } else if (window.document.selection) { range = window.document.body.createTextRange(); range.moveToElementText(element); range.select(); } }; Utils.detectDropdownVisibility = _.debounce(function () { Globals.dropdownVisibility(!!_.find(Globals.aBootstrapDropdowns, function (oItem) { return oItem.hasClass('open'); })); }, 50); /** * @param {boolean=} bDelay = false */ Utils.triggerAutocompleteInputChange = function (bDelay) { var fFunc = function () { $('.checkAutocomplete').trigger('change'); }; if (Utils.isUnd(bDelay) ? false : !!bDelay) { _.delay(fFunc, 100); } else { fFunc(); } }; /** * @param {Object} oParams */ Utils.setHeadViewport = function (oParams) { var aContent = []; _.each(oParams, function (sKey, sValue) { aContent.push('' + sKey + '=' + sValue); }); $('#rl-head-viewport').attr('content', aContent.join(', ')); }; /** * @param {string} sFileName * @return {string} */ Utils.getFileExtension = function (sFileName) { sFileName = Utils.trim(sFileName).toLowerCase(); var sResult = sFileName.split('.').pop(); return (sResult === sFileName) ? '' : sResult; }; /** * @param {string} sFileName * @return {string} */ Utils.mimeContentType = function (sFileName) { var sExt = '', sResult = 'application/octet-stream' ; sFileName = Utils.trim(sFileName).toLowerCase(); if ('winmail.dat' === sFileName) { return 'application/ms-tnef'; } sExt = Utils.getFileExtension(sFileName); if (sExt && 0 < sExt.length && !Utils.isUnd(Mime[sExt])) { sResult = Mime[sExt]; } return sResult; }; /** * @param {mixed} mPropOrValue * @param {mixed} mValue */ Utils.disposeOne = function (mPropOrValue, mValue) { var mDisposable = mValue || mPropOrValue; if (mDisposable && typeof mDisposable.dispose === 'function') { mDisposable.dispose(); } }; /** * @param {Object} oObject */ Utils.disposeObject = function (oObject) { if (oObject) { if (Utils.isArray(oObject.disposables)) { _.each(oObject.disposables, Utils.disposeOne); } ko.utils.objectForEach(oObject, Utils.disposeOne); } }; /** * @param {Object|Array} mObjectOrObjects */ Utils.delegateRunOnDestroy = function (mObjectOrObjects) { if (mObjectOrObjects) { if (Utils.isArray(mObjectOrObjects)) { _.each(mObjectOrObjects, function (oItem) { Utils.delegateRunOnDestroy(oItem); }); } else if (mObjectOrObjects && mObjectOrObjects.onDestroy) { mObjectOrObjects.onDestroy(); } } }; Utils.__themeTimer = 0; Utils.__themeAjax = null; Utils.changeTheme = function (sValue, themeTrigger) { var oThemeLink = $('#rlThemeLink'), oThemeStyle = $('#rlThemeStyle'), sUrl = oThemeLink.attr('href') ; if (!sUrl) { sUrl = oThemeStyle.attr('data-href'); } if (sUrl) { sUrl = sUrl.toString().replace(/\/-\/[^\/]+\/\-\//, '/-/' + sValue + '/-/'); sUrl = sUrl.toString().replace(/\/Css\/[^\/]+\/User\//, '/Css/0/User/'); sUrl = sUrl.toString().replace(/\/Hash\/[^\/]+\//, '/Hash/-/'); if ('Json/' !== sUrl.substring(sUrl.length - 5, sUrl.length)) { sUrl += 'Json/'; } window.clearTimeout(Utils.__themeTimer); themeTrigger(Enums.SaveSettingsStep.Animate); if (Utils.__themeAjax && Utils.__themeAjax.abort) { Utils.__themeAjax.abort(); } Utils.__themeAjax = $.ajax({ 'url': sUrl, 'dataType': 'json' }).done(function(aData) { if (aData && Utils.isArray(aData) && 2 === aData.length) { if (oThemeLink && oThemeLink[0] && (!oThemeStyle || !oThemeStyle[0])) { oThemeStyle = $(''); oThemeLink.after(oThemeStyle); oThemeLink.remove(); } if (oThemeStyle && oThemeStyle[0]) { oThemeStyle.attr('data-href', sUrl).attr('data-theme', aData[0]); if (oThemeStyle[0].styleSheet && !Utils.isUnd(oThemeStyle[0].styleSheet.cssText)) { oThemeStyle[0].styleSheet.cssText = aData[1]; } else { oThemeStyle.text(aData[1]); } } themeTrigger(Enums.SaveSettingsStep.TrueResult); } }).always(function() { Utils.__themeTimer = window.setTimeout(function () { themeTrigger(Enums.SaveSettingsStep.Idle); }, 1000); Utils.__themeAjax = null; }); } }; Utils.substr = window.String.substr; if ('ab'.substr(-1) !== 'b') { Utils.substr = function(sStr, iStart, iLength) { if (iStart < 0) { iStart = sStr.length + iStart; } return sStr.substr(iStart, iLength); }; } module.exports = Utils; }()); /***/ }, /* 2 */ /*!***************************!*\ !*** external "window._" ***! \***************************/ /***/ function(module, exports, __webpack_require__) { module.exports = window._; /***/ }, /* 3 */ /*!****************************!*\ !*** ./dev/External/ko.js ***! \****************************/ /***/ function(module, exports, __webpack_require__) { (function (ko) { 'use strict'; var window = __webpack_require__(/*! window */ 11), _ = __webpack_require__(/*! _ */ 2), $ = __webpack_require__(/*! $ */ 12), fDisposalTooltipHelper = function (oElement, $oEl, oSubscription) { ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { if (oSubscription && oSubscription.dispose) { oSubscription.dispose(); } if ($oEl) { $oEl.off('click.koTooltip'); if ($oEl.tooltip) { $oEl.tooltip('destroy'); } } $oEl = null; }); } ; ko.bindingHandlers.tooltip = { 'init': function (oElement, fValueAccessor) { var $oEl = null, bi18n = true, sClass = '', sPlacement = '', oSubscription = null, Globals = __webpack_require__(/*! Common/Globals */ 7), Translator = __webpack_require__(/*! Common/Translator */ 8) ; if (!Globals.bMobileDevice) { $oEl = $(oElement); sClass = $oEl.data('tooltip-class') || ''; bi18n = 'on' === ($oEl.data('tooltip-i18n') || 'on'); sPlacement = $oEl.data('tooltip-placement') || 'top'; $oEl.tooltip({ 'delay': { 'show': 500, 'hide': 100 }, 'html': true, 'container': 'body', 'placement': sPlacement, 'trigger': 'hover', 'title': function () { var sValue = bi18n ? ko.unwrap(fValueAccessor()) : fValueAccessor()(); return '' === sValue || $oEl.is('.disabled') || Globals.dropdownVisibility() ? '' : '' + (bi18n ? Translator.i18n(sValue) : sValue) + ''; } }).on('click.koTooltip', function () { $oEl.tooltip('hide'); }); oSubscription = Globals.tooltipTrigger.subscribe(function () { $oEl.tooltip('hide'); }); fDisposalTooltipHelper(oElement, $oEl, oSubscription); } } }; ko.bindingHandlers.tooltipForTest = { 'init': function (oElement) { var $oEl = $(oElement), oSubscription = null, Globals = __webpack_require__(/*! Common/Globals */ 7) ; $oEl.tooltip({ 'container': 'body', 'trigger': 'hover manual', 'title': function () { return $oEl.data('tooltip3-data') || ''; } }); $(window.document).on('click', function () { $oEl.tooltip('hide'); }); oSubscription = Globals.tooltipTrigger.subscribe(function () { $oEl.tooltip('hide'); }); fDisposalTooltipHelper(oElement, $oEl, oSubscription); }, 'update': function (oElement, fValueAccessor) { var sValue = ko.unwrap(fValueAccessor()); if ('' === sValue) { $(oElement).data('tooltip3-data', '').tooltip('hide'); } else { $(oElement).data('tooltip3-data', sValue); _.delay(function () { if ($(oElement).is(':visible')) { $(oElement).tooltip('show'); } }, 100); } } }; ko.bindingHandlers.registrateBootstrapDropdown = { 'init': function (oElement) { var Globals = __webpack_require__(/*! Common/Globals */ 7); if (Globals && Globals.aBootstrapDropdowns) { Globals.aBootstrapDropdowns.push($(oElement)); // ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { // }); } } }; ko.bindingHandlers.openDropdownTrigger = { 'update': function (oElement, fValueAccessor) { if (ko.unwrap(fValueAccessor())) { var $oEl = $(oElement), Utils = __webpack_require__(/*! Common/Utils */ 1) ; if (!$oEl.hasClass('open')) { $oEl.find('.dropdown-toggle').dropdown('toggle'); Utils.detectDropdownVisibility(); } fValueAccessor()(false); } } }; ko.bindingHandlers.dropdownCloser = { 'init': function (oElement) { $(oElement).closest('.dropdown').on('click', '.e-item', function () { $(oElement).dropdown('toggle'); }); } }; ko.bindingHandlers.popover = { 'init': function (oElement, fValueAccessor) { $(oElement).popover(ko.unwrap(fValueAccessor())); ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { $(oElement).popover('destroy'); }); } }; ko.bindingHandlers.csstext = { 'init': function (oElement, fValueAccessor) { var Utils = __webpack_require__(/*! Common/Utils */ 1); if (oElement && oElement.styleSheet && !Utils.isUnd(oElement.styleSheet.cssText)) { oElement.styleSheet.cssText = ko.unwrap(fValueAccessor()); } else { $(oElement).text(ko.unwrap(fValueAccessor())); } }, 'update': function (oElement, fValueAccessor) { var Utils = __webpack_require__(/*! Common/Utils */ 1); if (oElement && oElement.styleSheet && !Utils.isUnd(oElement.styleSheet.cssText)) { oElement.styleSheet.cssText = ko.unwrap(fValueAccessor()); } else { $(oElement).text(ko.unwrap(fValueAccessor())); } } }; ko.bindingHandlers.resizecrop = { 'init': function (oElement) { $(oElement).addClass('resizecrop').resizecrop({ 'width': '100', 'height': '100', 'wrapperCSS': { 'border-radius': '10px' } }); }, 'update': function (oElement, fValueAccessor) { fValueAccessor()(); $(oElement).resizecrop({ 'width': '100', 'height': '100' }); } }; ko.bindingHandlers.onEnter = { 'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) { $(oElement).on('keypress.koOnEnter', function (oEvent) { if (oEvent && 13 === window.parseInt(oEvent.keyCode, 10)) { $(oElement).trigger('change'); fValueAccessor().call(oViewModel); } }); ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { $(oElement).off('keypress.koOnEnter'); }); } }; ko.bindingHandlers.onEsc = { 'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) { $(oElement).on('keypress.koOnEsc', function (oEvent) { if (oEvent && 27 === window.parseInt(oEvent.keyCode, 10)) { $(oElement).trigger('change'); fValueAccessor().call(oViewModel); } }); ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { $(oElement).off('keypress.koOnEsc'); }); } }; ko.bindingHandlers.clickOnTrue = { 'update': function (oElement, fValueAccessor) { if (ko.unwrap(fValueAccessor())) { $(oElement).click(); } } }; ko.bindingHandlers.modal = { 'init': function (oElement, fValueAccessor) { var Globals = __webpack_require__(/*! Common/Globals */ 7), Utils = __webpack_require__(/*! Common/Utils */ 1) ; $(oElement).toggleClass('fade', !Globals.bMobileDevice).modal({ 'keyboard': false, 'show': ko.unwrap(fValueAccessor()) }) .on('shown.koModal', Utils.windowResizeCallback) .find('.close').on('click.koModal', function () { fValueAccessor()(false); }); ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { $(oElement) .off('shown.koModal') .find('.close') .off('click.koModal') ; }); }, 'update': function (oElement, fValueAccessor) { var Globals = __webpack_require__(/*! Common/Globals */ 7); $(oElement).modal(!!ko.unwrap(fValueAccessor()) ? 'show' : 'hide'); if (Globals.$html.hasClass('rl-anim')) { Globals.$html.addClass('rl-modal-animation'); _.delay(function () { Globals.$html.removeClass('rl-modal-animation'); }, 400); } } }; ko.bindingHandlers.i18nInit = { 'init': function (oElement) { __webpack_require__(/*! Common/Translator */ 8).i18nToNode(oElement); } }; ko.bindingHandlers.i18nUpdate = { 'update': function (oElement, fValueAccessor) { ko.unwrap(fValueAccessor()); __webpack_require__(/*! Common/Translator */ 8).i18nToNode(oElement); } }; ko.bindingHandlers.link = { 'update': function (oElement, fValueAccessor) { $(oElement).attr('href', ko.unwrap(fValueAccessor())); } }; ko.bindingHandlers.title = { 'update': function (oElement, fValueAccessor) { $(oElement).attr('title', ko.unwrap(fValueAccessor())); } }; ko.bindingHandlers.textF = { 'init': function (oElement, fValueAccessor) { $(oElement).text(ko.unwrap(fValueAccessor())); } }; ko.bindingHandlers.initDom = { 'init': function (oElement, fValueAccessor) { fValueAccessor()(oElement); } }; ko.bindingHandlers.initFixedTrigger = { 'init': function (oElement, fValueAccessor) { var aValues = ko.unwrap(fValueAccessor()), $oContainer = null, $oElement = $(oElement), oOffset = null, iTop = aValues[1] || 0 ; $oContainer = $(aValues[0] || null); $oContainer = $oContainer[0] ? $oContainer : null; if ($oContainer) { $(window).resize(function () { oOffset = $oContainer.offset(); if (oOffset && oOffset.top) { $oElement.css('top', oOffset.top + iTop); } }); } } }; ko.bindingHandlers.initResizeTrigger = { 'init': function (oElement, fValueAccessor) { var aValues = ko.unwrap(fValueAccessor()); $(oElement).css({ 'height': aValues[1], 'min-height': aValues[1] }); }, 'update': function (oElement, fValueAccessor) { var Utils = __webpack_require__(/*! Common/Utils */ 1), Globals = __webpack_require__(/*! Common/Globals */ 7), aValues = ko.unwrap(fValueAccessor()), iValue = Utils.pInt(aValues[1]), iSize = 0, iOffset = $(oElement).offset().top ; if (0 < iOffset) { iOffset += Utils.pInt(aValues[2]); iSize = Globals.$win.height() - iOffset; if (iValue < iSize) { iValue = iSize; } $(oElement).css({ 'height': iValue, 'min-height': iValue }); } } }; ko.bindingHandlers.appendDom = { 'update': function (oElement, fValueAccessor) { $(oElement).hide().empty().append(ko.unwrap(fValueAccessor())).show(); } }; ko.bindingHandlers.draggable = { 'init': function (oElement, fValueAccessor, fAllBindingsAccessor) { var Globals = __webpack_require__(/*! Common/Globals */ 7), Utils = __webpack_require__(/*! Common/Utils */ 1) ; if (!Globals.bMobileDevice) { var iTriggerZone = 100, iScrollSpeed = 3, fAllValueFunc = fAllBindingsAccessor(), sDroppableSelector = fAllValueFunc && fAllValueFunc['droppableSelector'] ? fAllValueFunc['droppableSelector'] : '', oConf = { 'distance': 20, 'handle': '.dragHandle', 'cursorAt': {'top': 22, 'left': 3}, 'refreshPositions': true, 'scroll': true } ; if (sDroppableSelector) { oConf['drag'] = function (oEvent) { $(sDroppableSelector).each(function () { var moveUp = null, moveDown = null, $this = $(this), oOffset = $this.offset(), bottomPos = oOffset.top + $this.height() ; window.clearInterval($this.data('timerScroll')); $this.data('timerScroll', false); if (oEvent.pageX >= oOffset.left && oEvent.pageX <= oOffset.left + $this.width()) { if (oEvent.pageY >= bottomPos - iTriggerZone && oEvent.pageY <= bottomPos) { moveUp = function() { $this.scrollTop($this.scrollTop() + iScrollSpeed); Utils.windowResize(); }; $this.data('timerScroll', window.setInterval(moveUp, 10)); moveUp(); } if (oEvent.pageY >= oOffset.top && oEvent.pageY <= oOffset.top + iTriggerZone) { moveDown = function() { $this.scrollTop($this.scrollTop() - iScrollSpeed); Utils.windowResize(); }; $this.data('timerScroll', window.setInterval(moveDown, 10)); moveDown(); } } }); }; oConf['stop'] = function() { $(sDroppableSelector).each(function () { window.clearInterval($(this).data('timerScroll')); $(this).data('timerScroll', false); }); }; } oConf['helper'] = function (oEvent) { return fValueAccessor()(oEvent && oEvent.target ? ko.dataFor(oEvent.target) : null); }; $(oElement).draggable(oConf).on('mousedown.koDraggable', function () { Utils.removeInFocus(); }); ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { $(oElement) .off('mousedown.koDraggable') .draggable('destroy') ; }); } } }; ko.bindingHandlers.droppable = { 'init': function (oElement, fValueAccessor, fAllBindingsAccessor) { var Globals = __webpack_require__(/*! Common/Globals */ 7); if (!Globals.bMobileDevice) { var fValueFunc = fValueAccessor(), fAllValueFunc = fAllBindingsAccessor(), fOverCallback = fAllValueFunc && fAllValueFunc['droppableOver'] ? fAllValueFunc['droppableOver'] : null, fOutCallback = fAllValueFunc && fAllValueFunc['droppableOut'] ? fAllValueFunc['droppableOut'] : null, oConf = { 'tolerance': 'pointer', 'hoverClass': 'droppableHover' } ; if (fValueFunc) { oConf['drop'] = function (oEvent, oUi) { fValueFunc(oEvent, oUi); }; if (fOverCallback) { oConf['over'] = function (oEvent, oUi) { fOverCallback(oEvent, oUi); }; } if (fOutCallback) { oConf['out'] = function (oEvent, oUi) { fOutCallback(oEvent, oUi); }; } $(oElement).droppable(oConf); ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () { $(oElement).droppable('destroy'); }); } } } }; ko.bindingHandlers.nano = { 'init': function (oElement) { var Globals = __webpack_require__(/*! Common/Globals */ 7); if (!Globals.bDisableNanoScroll) { $(oElement) .addClass('nano') .nanoScroller({ 'iOSNativeScrolling': false, 'preventPageScrolling': true }) ; } } }; ko.bindingHandlers.saveTrigger = { 'init': function (oElement) { var $oEl = $(oElement); $oEl.data('save-trigger-type', $oEl.is('input[type=text],input[type=email],input[type=password],select,textarea') ? 'input' : 'custom'); if ('custom' === $oEl.data('save-trigger-type')) { $oEl.append( '  ' ).addClass('settings-saved-trigger'); } else { $oEl.addClass('settings-saved-trigger-input'); } }, 'update': function (oElement, fValueAccessor) { var mValue = ko.unwrap(fValueAccessor()), $oEl = $(oElement) ; if ('custom' === $oEl.data('save-trigger-type')) { switch (mValue.toString()) { case '1': $oEl .find('.animated,.error').hide().removeClass('visible') .end() .find('.success').show().addClass('visible') ; break; case '0': $oEl .find('.animated,.success').hide().removeClass('visible') .end() .find('.error').show().addClass('visible') ; break; case '-2': $oEl .find('.error,.success').hide().removeClass('visible') .end() .find('.animated').show().addClass('visible') ; break; default: $oEl .find('.animated').hide() .end() .find('.error,.success').removeClass('visible') ; break; } } else { switch (mValue.toString()) { case '1': $oEl.addClass('success').removeClass('error'); break; case '0': $oEl.addClass('error').removeClass('success'); break; case '-2': // $oEl; break; default: $oEl.removeClass('error success'); break; } } } }; ko.bindingHandlers.emailsTags = { 'init': function(oElement, fValueAccessor, fAllBindingsAccessor) { var Utils = __webpack_require__(/*! Common/Utils */ 1), EmailModel = __webpack_require__(/*! Model/Email */ 25), $oEl = $(oElement), fValue = fValueAccessor(), fAllBindings = fAllBindingsAccessor(), fAutoCompleteSource = fAllBindings['autoCompleteSource'] || null, fFocusCallback = function (bValue) { if (fValue && fValue.focused) { fValue.focused(!!bValue); } } ; $oEl.inputosaurus({ 'parseOnBlur': true, 'allowDragAndDrop': true, 'focusCallback': fFocusCallback, 'inputDelimiters': [',', ';'], 'autoCompleteSource': fAutoCompleteSource, 'parseHook': function (aInput) { return _.map(aInput, function (sInputValue) { var sValue = Utils.trim(sInputValue), oEmail = null ; if ('' !== sValue) { oEmail = new EmailModel(); oEmail.mailsoParse(sValue); return [oEmail.toLine(false), oEmail]; } return [sValue, null]; }); }, 'change': _.bind(function (oEvent) { $oEl.data('EmailsTagsValue', oEvent.target.value); fValue(oEvent.target.value); }, this) }); if (fValue && fValue.focused && fValue.focused.subscribe) { fValue.focused.subscribe(function (bValue) { $oEl.inputosaurus(!!bValue ? 'focus' : 'blur'); }); } }, 'update': function (oElement, fValueAccessor) { var $oEl = $(oElement), fValue = fValueAccessor(), sValue = ko.unwrap(fValue) ; if ($oEl.data('EmailsTagsValue') !== sValue) { $oEl.val(sValue); $oEl.data('EmailsTagsValue', sValue); $oEl.inputosaurus('refresh'); } } }; ko.bindingHandlers.command = { 'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) { var jqElement = $(oElement), oCommand = fValueAccessor() ; if (!oCommand || !oCommand.enabled || !oCommand.canExecute) { throw new Error('You are not using command function'); } jqElement.addClass('command'); ko.bindingHandlers[jqElement.is('form') ? 'submit' : 'click'].init.apply(oViewModel, arguments); }, 'update': function (oElement, fValueAccessor) { var bResult = true, jqElement = $(oElement), oCommand = fValueAccessor() ; bResult = oCommand.enabled(); jqElement.toggleClass('command-not-enabled', !bResult); if (bResult) { bResult = oCommand.canExecute(); jqElement.toggleClass('command-can-not-be-execute', !bResult); } jqElement.toggleClass('command-disabled disable disabled', !bResult).toggleClass('no-disabled', !!bResult); if (jqElement.is('input') || jqElement.is('button')) { jqElement.prop('disabled', !bResult); } } }; // extenders ko.extenders.trimmer = function (oTarget) { var Utils = __webpack_require__(/*! Common/Utils */ 1), oResult = ko.computed({ 'read': oTarget, 'write': function (sNewValue) { oTarget(Utils.trim(sNewValue.toString())); }, 'owner': this }) ; oResult(oTarget()); return oResult; }; ko.extenders.posInterer = function (oTarget, iDefault) { var Utils = __webpack_require__(/*! Common/Utils */ 1), oResult = ko.computed({ 'read': oTarget, 'write': function (sNewValue) { var iNew = Utils.pInt(sNewValue.toString(), iDefault); if (0 >= iNew) { iNew = iDefault; } if (iNew === oTarget() && '' + iNew !== '' + sNewValue) { oTarget(iNew + 1); } oTarget(iNew); } }) ; oResult(oTarget()); return oResult; }; ko.extenders.limitedList = function (oTarget, mList) { var Utils = __webpack_require__(/*! Common/Utils */ 1), oResult = ko.computed({ 'read': oTarget, 'write': function (sNewValue) { var sCurrentValue = ko.unwrap(oTarget), aList = ko.unwrap(mList) ; if (Utils.isNonEmptyArray(aList)) { if (-1 < Utils.inArray(sNewValue, aList)) { oTarget(sNewValue); } else if (-1 < Utils.inArray(sCurrentValue, aList)) { oTarget(sCurrentValue + ' '); oTarget(sCurrentValue); } else { oTarget(aList[0] + ' '); oTarget(aList[0]); } } else { oTarget(''); } } }).extend({'notify': 'always'}) ; oResult(oTarget()); if (!oResult.valueHasMutated) { oResult.valueHasMutated = function () { oTarget.valueHasMutated(); }; } return oResult; }; ko.extenders.reversible = function (oTarget) { var mValue = oTarget(); oTarget.commit = function () { mValue = oTarget(); }; oTarget.reverse = function () { oTarget(mValue); }; oTarget.commitedValue = function () { return mValue; }; return oTarget; }; ko.extenders.toggleSubscribe = function (oTarget, oOptions) { oTarget.subscribe(oOptions[1], oOptions[0], 'beforeChange'); oTarget.subscribe(oOptions[2], oOptions[0]); return oTarget; }; ko.extenders.toggleSubscribeProperty = function (oTarget, oOptions) { var sProp = oOptions[1]; if (sProp) { oTarget.subscribe(function (oPrev) { if (oPrev && oPrev[sProp]) { oPrev[sProp](false); } }, oOptions[0], 'beforeChange'); oTarget.subscribe(function (oNext) { if (oNext && oNext[sProp]) { oNext[sProp](true); } }, oOptions[0]); } return oTarget; }; ko.extenders.falseTimeout = function (oTarget, iOption) { var Utils = __webpack_require__(/*! Common/Utils */ 1); oTarget.iTimeout = 0; oTarget.subscribe(function (bValue) { if (bValue) { window.clearTimeout(oTarget.iTimeout); oTarget.iTimeout = window.setTimeout(function () { oTarget(false); oTarget.iTimeout = 0; }, Utils.pInt(iOption)); } }); return oTarget; }; // functions ko.observable.fn.validateNone = function () { this.hasError = ko.observable(false); return this; }; ko.observable.fn.validateEmail = function () { var Utils = __webpack_require__(/*! Common/Utils */ 1); this.hasError = ko.observable(false); this.subscribe(function (sValue) { sValue = Utils.trim(sValue); this.hasError('' !== sValue && !(/^[^@\s]+@[^@\s]+$/.test(sValue))); }, this); this.valueHasMutated(); return this; }; ko.observable.fn.validateSimpleEmail = function () { var Utils = __webpack_require__(/*! Common/Utils */ 1); this.hasError = ko.observable(false); this.subscribe(function (sValue) { sValue = Utils.trim(sValue); this.hasError('' !== sValue && !(/^.+@.+$/.test(sValue))); }, this); this.valueHasMutated(); return this; }; ko.observable.fn.deleteAccessHelper = function () { this.extend({'falseTimeout': 3000}).extend({'toggleSubscribe': [null, function (oPrev) { if (oPrev && oPrev.deleteAccess) { oPrev.deleteAccess(false); } }, function (oNext) { if (oNext && oNext.deleteAccess) { oNext.deleteAccess(true); } } ]}); return this; }; ko.observable.fn.validateFunc = function (fFunc) { var Utils = __webpack_require__(/*! Common/Utils */ 1); this.hasFuncError = ko.observable(false); if (Utils.isFunc(fFunc)) { this.subscribe(function (sValue) { this.hasFuncError(!fFunc(sValue)); }, this); this.valueHasMutated(); } return this; }; module.exports = ko; }(ko)); /***/ }, /* 4 */ /*!*****************************!*\ !*** ./dev/Common/Enums.js ***! \*****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var Enums = {}; /** * @enum {string} */ Enums.StorageResultType = { 'Success': 'success', 'Abort': 'abort', 'Error': 'error', 'Unload': 'unload' }; /** * @enum {number} */ Enums.State = { 'Empty': 10, 'Login': 20, 'Auth': 30 }; /** * @enum {number} */ Enums.StateType = { 'Webmail': 0, 'Admin': 1 }; /** * @enum {string} */ Enums.Capa = { 'TwoFactor': 'TWO_FACTOR', 'OpenPGP': 'OPEN_PGP', 'Prefetch': 'PREFETCH', 'Gravatar': 'GRAVATAR', 'Themes': 'THEMES', 'UserBackground': 'USER_BACKGROUND', 'Sieve': 'SIEVE', 'Filters': 'FILTERS', 'AttachmentThumbnails': 'ATTACHMENT_THUMBNAILS', 'Templates': 'TEMPLATES', 'AutoLogout': 'AUTOLOGOUT', 'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS' }; /** * @enum {string} */ Enums.KeyState = { 'All': 'all', 'None': 'none', 'ContactList': 'contact-list', 'MessageList': 'message-list', 'FolderList': 'folder-list', 'MessageView': 'message-view', 'Compose': 'compose', 'Settings': 'settings', 'Menu': 'menu', 'PopupComposeOpenPGP': 'compose-open-pgp', 'PopupKeyboardShortcutsHelp': 'popup-keyboard-shortcuts-help', 'PopupAsk': 'popup-ask' }; /** * @enum {number} */ Enums.FolderType = { 'Inbox': 10, 'SentItems': 11, 'Draft': 12, 'Trash': 13, 'Spam': 14, 'Archive': 15, 'NotSpam': 80, 'User': 99 }; /** * @enum {string} */ Enums.LoginSignMeTypeAsString = { 'DefaultOff': 'defaultoff', 'DefaultOn': 'defaulton', 'Unused': 'unused' }; /** * @enum {number} */ Enums.LoginSignMeType = { 'DefaultOff': 0, 'DefaultOn': 1, 'Unused': 2 }; /** * @enum {string} */ Enums.ComposeType = { 'Empty': 'empty', 'Reply': 'reply', 'ReplyAll': 'replyall', 'Forward': 'forward', 'ForwardAsAttachment': 'forward-as-attachment', 'Draft': 'draft', 'EditAsNew': 'editasnew' }; /** * @enum {number} */ Enums.UploadErrorCode = { 'Normal': 0, 'FileIsTooBig': 1, 'FilePartiallyUploaded': 2, 'FileNoUploaded': 3, 'MissingTempFolder': 4, 'FileOnSaveingError': 5, 'FileType': 98, 'Unknown': 99 }; /** * @enum {number} */ Enums.SetSystemFoldersNotification = { 'None': 0, 'Sent': 1, 'Draft': 2, 'Spam': 3, 'Trash': 4, 'Archive': 5 }; /** * @enum {number} */ Enums.ClientSideKeyName = { 'FoldersLashHash': 0, 'MessagesInboxLastHash': 1, 'MailBoxListSize': 2, 'ExpandedFolders': 3, 'FolderListSize': 4, 'MessageListSize': 5, 'LastReplyAction': 6, 'LastSignMe': 7, 'ComposeLastIdentityID': 8 }; /** * @enum {number} */ Enums.EventKeyCode = { 'Backspace': 8, 'Tab': 9, 'Enter': 13, 'Esc': 27, 'PageUp': 33, 'PageDown': 34, 'Left': 37, 'Right': 39, 'Up': 38, 'Down': 40, 'End': 35, 'Home': 36, 'Space': 32, 'Insert': 45, 'Delete': 46, 'A': 65, 'S': 83 }; /** * @enum {number} */ Enums.MessageSetAction = { 'SetSeen': 0, 'UnsetSeen': 1, 'SetFlag': 2, 'UnsetFlag': 3 }; /** * @enum {number} */ Enums.MessageSelectAction = { 'All': 0, 'None': 1, 'Invert': 2, 'Unseen': 3, 'Seen': 4, 'Flagged': 5, 'Unflagged': 6 }; /** * @enum {number} */ Enums.DesktopNotification = { 'Allowed': 0, 'NotAllowed': 1, 'Denied': 2, 'NotSupported': 9 }; /** * @enum {number} */ Enums.MessagePriority = { 'Low': 5, 'Normal': 3, 'High': 1 }; /** * @enum {string} */ Enums.EditorDefaultType = { 'Html': 'Html', 'Plain': 'Plain', 'HtmlForced': 'HtmlForced', 'PlainForced': 'PlainForced' }; /** * @enum {number} */ Enums.ServerSecure = { 'None': 0, 'SSL': 1, 'TLS': 2 }; /** * @enum {number} */ Enums.SearchDateType = { 'All': -1, 'Days3': 3, 'Days7': 7, 'Month': 30 }; /** * @enum {number} */ Enums.SaveSettingsStep = { 'Animate': -2, 'Idle': -1, 'TrueResult': 1, 'FalseResult': 0 }; /** * @enum {number} */ Enums.Layout = { 'NoPreview': 0, 'SidePreview': 1, 'BottomPreview': 2, 'Mobile': 3 }; /** * @enum {string} */ Enums.FilterConditionField = { 'From': 'From', 'Recipient': 'Recipient', 'Subject': 'Subject' }; /** * @enum {string} */ Enums.FilterConditionType = { 'Contains': 'Contains', 'NotContains': 'NotContains', 'EqualTo': 'EqualTo', 'NotEqualTo': 'NotEqualTo' }; /** * @enum {string} */ Enums.FiltersAction = { 'None': 'None', 'MoveTo': 'MoveTo', 'Discard': 'Discard', 'Vacation': 'Vacation', 'Reject': 'Reject', 'Forward': 'Forward' }; /** * @enum {string} */ Enums.FilterRulesType = { 'All': 'All', 'Any': 'Any' }; /** * @enum {number} */ Enums.SignedVerifyStatus = { 'UnknownPublicKeys': -4, 'UnknownPrivateKey': -3, 'Unverified': -2, 'Error': -1, 'None': 0, 'Success': 1 }; /** * @enum {number} */ Enums.ContactPropertyType = { 'Unknown': 0, 'FullName': 10, 'FirstName': 15, 'LastName': 16, 'MiddleName': 16, 'Nick': 18, 'NamePrefix': 20, 'NameSuffix': 21, 'Email': 30, 'Phone': 31, 'Web': 32, 'Birthday': 40, 'Facebook': 90, 'Skype': 91, 'GitHub': 92, 'Note': 110, 'Custom': 250 }; /** * @enum {number} */ Enums.Notification = { 'InvalidToken': 101, 'AuthError': 102, 'AccessError': 103, 'ConnectionError': 104, 'CaptchaError': 105, 'SocialFacebookLoginAccessDisable': 106, 'SocialTwitterLoginAccessDisable': 107, 'SocialGoogleLoginAccessDisable': 108, 'DomainNotAllowed': 109, 'AccountNotAllowed': 110, 'AccountTwoFactorAuthRequired': 120, 'AccountTwoFactorAuthError': 121, 'CouldNotSaveNewPassword': 130, 'CurrentPasswordIncorrect': 131, 'NewPasswordShort': 132, 'NewPasswordWeak': 133, 'NewPasswordForbidden': 134, 'ContactsSyncError': 140, 'CantGetMessageList': 201, 'CantGetMessage': 202, 'CantDeleteMessage': 203, 'CantMoveMessage': 204, 'CantCopyMessage': 205, 'CantSaveMessage': 301, 'CantSendMessage': 302, 'InvalidRecipients': 303, 'CantSaveFilters': 351, 'CantGetFilters': 352, 'FiltersAreNotCorrect': 355, 'CantCreateFolder': 400, 'CantRenameFolder': 401, 'CantDeleteFolder': 402, 'CantSubscribeFolder': 403, 'CantUnsubscribeFolder': 404, 'CantDeleteNonEmptyFolder': 405, 'CantSaveSettings': 501, 'CantSavePluginSettings': 502, 'DomainAlreadyExists': 601, 'CantInstallPackage': 701, 'CantDeletePackage': 702, 'InvalidPluginPackage': 703, 'UnsupportedPluginPackage': 704, 'LicensingServerIsUnavailable': 710, 'LicensingExpired': 711, 'LicensingBanned': 712, 'DemoSendMessageError': 750, 'DemoAccountError': 751, 'AccountAlreadyExists': 801, 'AccountDoesNotExist': 802, 'MailServerError': 901, 'ClientViewError': 902, 'InvalidInputArgument': 903, 'UnknownNotification': 999, 'UnknownError': 999 }; module.exports = Enums; }()); /***/ }, /* 5 */ /*!****************************!*\ !*** ./dev/Knoin/Knoin.js ***! \****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), $ = __webpack_require__(/*! $ */ 12), ko = __webpack_require__(/*! ko */ 3), hasher = __webpack_require__(/*! hasher */ 77), crossroads = __webpack_require__(/*! crossroads */ 41), Globals = __webpack_require__(/*! Common/Globals */ 7), Plugins = __webpack_require__(/*! Common/Plugins */ 20), Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @constructor */ function Knoin() { this.oScreens = {}; this.sDefaultScreenName = ''; this.oCurrentScreen = null; } Knoin.prototype.oScreens = {}; Knoin.prototype.sDefaultScreenName = ''; Knoin.prototype.oCurrentScreen = null; Knoin.prototype.hideLoading = function () { $('#rl-loading').hide(); }; /** * @param {Object} thisObject */ Knoin.prototype.constructorEnd = function (thisObject) { if (Utils.isFunc(thisObject['__constructor_end'])) { thisObject['__constructor_end'].call(thisObject); } }; /** * @param {string|Array} mName * @param {Function} ViewModelClass */ Knoin.prototype.extendAsViewModel = function (mName, ViewModelClass) { if (ViewModelClass) { if (Utils.isArray(mName)) { ViewModelClass.__names = mName; } else { ViewModelClass.__names = [mName]; } ViewModelClass.__name = ViewModelClass.__names[0]; } }; /** * @param {Function} SettingsViewModelClass * @param {string} sLabelName * @param {string} sTemplate * @param {string} sRoute * @param {boolean=} bDefault */ Knoin.prototype.addSettingsViewModel = function (SettingsViewModelClass, sTemplate, sLabelName, sRoute, bDefault) { SettingsViewModelClass.__rlSettingsData = { 'Label': sLabelName, 'Template': sTemplate, 'Route': sRoute, 'IsDefault': !!bDefault }; Globals.aViewModels['settings'].push(SettingsViewModelClass); }; /** * @param {Function} SettingsViewModelClass */ Knoin.prototype.removeSettingsViewModel = function (SettingsViewModelClass) { Globals.aViewModels['settings-removed'].push(SettingsViewModelClass); }; /** * @param {Function} SettingsViewModelClass */ Knoin.prototype.disableSettingsViewModel = function (SettingsViewModelClass) { Globals.aViewModels['settings-disabled'].push(SettingsViewModelClass); }; Knoin.prototype.routeOff = function () { hasher.changed.active = false; }; Knoin.prototype.routeOn = function () { hasher.changed.active = true; }; /** * @param {string} sScreenName * @return {?Object} */ Knoin.prototype.screen = function (sScreenName) { return ('' !== sScreenName && !Utils.isUnd(this.oScreens[sScreenName])) ? this.oScreens[sScreenName] : null; }; /** * @param {Function} ViewModelClass * @param {Object=} oScreen */ Knoin.prototype.buildViewModel = function (ViewModelClass, oScreen) { if (ViewModelClass && !ViewModelClass.__builded) { var kn = this, oViewModel = new ViewModelClass(oScreen), sPosition = oViewModel.viewModelPosition(), oViewModelPlace = $('#rl-content #rl-' + sPosition.toLowerCase()), oViewModelDom = null ; ViewModelClass.__builded = true; ViewModelClass.__vm = oViewModel; oViewModel.onShowTrigger = ko.observable(false); oViewModel.onHideTrigger = ko.observable(false); oViewModel.viewModelName = ViewModelClass.__name; oViewModel.viewModelNames = ViewModelClass.__names; if (oViewModelPlace && 1 === oViewModelPlace.length) { oViewModelDom = $('
').addClass('rl-view-model').addClass('RL-' + oViewModel.viewModelTemplate()).hide(); oViewModelDom.appendTo(oViewModelPlace); oViewModel.viewModelDom = oViewModelDom; ViewModelClass.__dom = oViewModelDom; if ('Popups' === sPosition) { oViewModel.cancelCommand = oViewModel.closeCommand = Utils.createCommand(oViewModel, function () { kn.hideScreenPopup(ViewModelClass); }); oViewModel.modalVisibility.subscribe(function (bValue) { var self = this; if (bValue) { this.viewModelDom.show(); this.storeAndSetKeyScope(); Globals.popupVisibilityNames.push(this.viewModelName); oViewModel.viewModelDom.css('z-index', 3000 + Globals.popupVisibilityNames().length + 10); // Utils.delegateRun(this, 'onShow'); // moved to showScreenPopup function (for parameters) if (this.onShowTrigger) { this.onShowTrigger(!this.onShowTrigger()); } Utils.delegateRun(this, 'onShowWithDelay', [], 500); } else { Utils.delegateRun(this, 'onHide'); Utils.delegateRun(this, 'onHideWithDelay', [], 500); if (this.onHideTrigger) { this.onHideTrigger(!this.onHideTrigger()); } this.restoreKeyScope(); _.each(this.viewModelNames, function (sName) { Plugins.runHook('view-model-on-hide', [sName, self]); }); Globals.popupVisibilityNames.remove(this.viewModelName); oViewModel.viewModelDom.css('z-index', 2000); Globals.tooltipTrigger(!Globals.tooltipTrigger()); _.delay(function () { self.viewModelDom.hide(); }, 300); } }, oViewModel); } _.each(ViewModelClass.__names, function (sName) { Plugins.runHook('view-model-pre-build', [sName, oViewModel, oViewModelDom]); }); ko.applyBindingAccessorsToNode(oViewModelDom[0], { 'i18nInit': true, 'template': function () { return {'name': oViewModel.viewModelTemplate()};} }, oViewModel); Utils.delegateRun(oViewModel, 'onBuild', [oViewModelDom]); if (oViewModel && 'Popups' === sPosition) { oViewModel.registerPopupKeyDown(); } _.each(ViewModelClass.__names, function (sName) { Plugins.runHook('view-model-post-build', [sName, oViewModel, oViewModelDom]); }); } else { Utils.log('Cannot find view model position: ' + sPosition); } } return ViewModelClass ? ViewModelClass.__vm : null; }; /** * @param {Function} ViewModelClassToHide */ Knoin.prototype.hideScreenPopup = function (ViewModelClassToHide) { if (ViewModelClassToHide && ViewModelClassToHide.__vm && ViewModelClassToHide.__dom) { ViewModelClassToHide.__vm.modalVisibility(false); } }; /** * @param {Function} ViewModelClassToShow * @param {Array=} aParameters */ Knoin.prototype.showScreenPopup = function (ViewModelClassToShow, aParameters) { if (ViewModelClassToShow) { this.buildViewModel(ViewModelClassToShow); if (ViewModelClassToShow.__vm && ViewModelClassToShow.__dom) { ViewModelClassToShow.__vm.modalVisibility(true); Utils.delegateRun(ViewModelClassToShow.__vm, 'onShow', aParameters || []); _.each(ViewModelClassToShow.__names, function (sName) { Plugins.runHook('view-model-on-show', [sName, ViewModelClassToShow.__vm, aParameters || []]); }); } } }; /** * @param {Function} ViewModelClassToShow * @return {boolean} */ Knoin.prototype.isPopupVisible = function (ViewModelClassToShow) { return ViewModelClassToShow && ViewModelClassToShow.__vm ? ViewModelClassToShow.__vm.modalVisibility() : false; }; /** * @param {string} sScreenName * @param {string} sSubPart */ Knoin.prototype.screenOnRoute = function (sScreenName, sSubPart) { var self = this, oScreen = null, oCross = null ; if ('' === Utils.pString(sScreenName)) { sScreenName = this.sDefaultScreenName; } if ('' !== sScreenName) { oScreen = this.screen(sScreenName); if (!oScreen) { oScreen = this.screen(this.sDefaultScreenName); if (oScreen) { sSubPart = sScreenName + '/' + sSubPart; sScreenName = this.sDefaultScreenName; } } if (oScreen && oScreen.__started) { if (!oScreen.__builded) { oScreen.__builded = true; if (Utils.isNonEmptyArray(oScreen.viewModels())) { _.each(oScreen.viewModels(), function (ViewModelClass) { this.buildViewModel(ViewModelClass, oScreen); }, this); } Utils.delegateRun(oScreen, 'onBuild'); } _.defer(function () { // hide screen if (self.oCurrentScreen) { Utils.delegateRun(self.oCurrentScreen, 'onHide'); Utils.delegateRun(self.oCurrentScreen, 'onHideWithDelay', [], 500); if (self.oCurrentScreen.onHideTrigger) { self.oCurrentScreen.onHideTrigger(!self.oCurrentScreen.onHideTrigger()); } if (Utils.isNonEmptyArray(self.oCurrentScreen.viewModels())) { _.each(self.oCurrentScreen.viewModels(), function (ViewModelClass) { if (ViewModelClass.__vm && ViewModelClass.__dom && 'Popups' !== ViewModelClass.__vm.viewModelPosition()) { ViewModelClass.__dom.hide(); ViewModelClass.__vm.viewModelVisibility(false); Utils.delegateRun(ViewModelClass.__vm, 'onHide'); Utils.delegateRun(ViewModelClass.__vm, 'onHideWithDelay', [], 500); if (ViewModelClass.__vm.onHideTrigger) { ViewModelClass.__vm.onHideTrigger(!ViewModelClass.__vm.onHideTrigger()); } } }); } } // -- self.oCurrentScreen = oScreen; // show screen if (self.oCurrentScreen) { Utils.delegateRun(self.oCurrentScreen, 'onShow'); if (self.oCurrentScreen.onShowTrigger) { self.oCurrentScreen.onShowTrigger(!self.oCurrentScreen.onShowTrigger()); } Plugins.runHook('screen-on-show', [self.oCurrentScreen.screenName(), self.oCurrentScreen]); if (Utils.isNonEmptyArray(self.oCurrentScreen.viewModels())) { _.each(self.oCurrentScreen.viewModels(), function (ViewModelClass) { if (ViewModelClass.__vm && ViewModelClass.__dom && 'Popups' !== ViewModelClass.__vm.viewModelPosition()) { ViewModelClass.__dom.show(); ViewModelClass.__vm.viewModelVisibility(true); Utils.delegateRun(ViewModelClass.__vm, 'onShow'); if (ViewModelClass.__vm.onShowTrigger) { ViewModelClass.__vm.onShowTrigger(!ViewModelClass.__vm.onShowTrigger()); } Utils.delegateRun(ViewModelClass.__vm, 'onShowWithDelay', [], 200); _.each(ViewModelClass.__names, function (sName) { Plugins.runHook('view-model-on-show', [sName, ViewModelClass.__vm]); }); } }, self); } } // -- oCross = oScreen.__cross ? oScreen.__cross() : null; if (oCross) { oCross.parse(sSubPart); } }); } } }; /** * @param {Array} aScreensClasses */ Knoin.prototype.startScreens = function (aScreensClasses) { $('#rl-content').css({ 'visibility': 'hidden' }); _.each(aScreensClasses, function (CScreen) { var oScreen = new CScreen(), sScreenName = oScreen ? oScreen.screenName() : '' ; if (oScreen && '' !== sScreenName) { if ('' === this.sDefaultScreenName) { this.sDefaultScreenName = sScreenName; } this.oScreens[sScreenName] = oScreen; } }, this); _.each(this.oScreens, function (oScreen) { if (oScreen && !oScreen.__started && oScreen.__start) { oScreen.__started = true; oScreen.__start(); Plugins.runHook('screen-pre-start', [oScreen.screenName(), oScreen]); Utils.delegateRun(oScreen, 'onStart'); Plugins.runHook('screen-post-start', [oScreen.screenName(), oScreen]); } }, this); var oCross = crossroads.create(); oCross.addRoute(/^([a-zA-Z0-9\-]*)\/?(.*)$/, _.bind(this.screenOnRoute, this)); hasher.initialized.add(oCross.parse, oCross); hasher.changed.add(oCross.parse, oCross); hasher.init(); $('#rl-content').css({ 'visibility': 'visible' }); _.delay(function () { Globals.$html.removeClass('rl-started-trigger').addClass('rl-started'); }, 100); _.delay(function () { Globals.$html.addClass('rl-started-delay'); }, 200); }; /** * @param {string} sHash * @param {boolean=} bSilence = false * @param {boolean=} bReplace = false */ Knoin.prototype.setHash = function (sHash, bSilence, bReplace) { sHash = '#' === sHash.substr(0, 1) ? sHash.substr(1) : sHash; sHash = '/' === sHash.substr(0, 1) ? sHash.substr(1) : sHash; bReplace = Utils.isUnd(bReplace) ? false : !!bReplace; if (Utils.isUnd(bSilence) ? false : !!bSilence) { hasher.changed.active = false; hasher[bReplace ? 'replaceHash' : 'setHash'](sHash); hasher.changed.active = true; } else { hasher.changed.active = true; hasher[bReplace ? 'replaceHash' : 'setHash'](sHash); hasher.setHash(sHash); } }; module.exports = new Knoin(); }()); /***/ }, /* 6 */, /* 7 */ /*!*******************************!*\ !*** ./dev/Common/Globals.js ***! \*******************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var Globals = {}, window = __webpack_require__(/*! window */ 11), _ = __webpack_require__(/*! _ */ 2), $ = __webpack_require__(/*! $ */ 12), ko = __webpack_require__(/*! ko */ 3), key = __webpack_require__(/*! key */ 19), Enums = __webpack_require__(/*! Common/Enums */ 4) ; Globals.$win = $(window); Globals.$doc = $(window.document); Globals.$html = $('html'); Globals.$div = $('
'); Globals.$win.__sizes = [0, 0]; /** * @type {?} */ Globals.now = (new window.Date()).getTime(); /** * @type {?} */ Globals.momentTrigger = ko.observable(true); /** * @type {?} */ Globals.dropdownVisibility = ko.observable(false).extend({'rateLimit': 0}); /** * @type {?} */ Globals.tooltipTrigger = ko.observable(false).extend({'rateLimit': 0}); /** * @type {boolean} */ Globals.useKeyboardShortcuts = ko.observable(true); /** * @type {number} */ Globals.iAjaxErrorCount = 0; /** * @type {number} */ Globals.iTokenErrorCount = 0; /** * @type {number} */ Globals.iMessageBodyCacheCount = 0; /** * @type {boolean} */ Globals.bUnload = false; /** * @type {string} */ Globals.sUserAgent = 'navigator' in window && 'userAgent' in window.navigator && window.navigator.userAgent.toLowerCase() || ''; /** * @type {boolean} */ Globals.bMobileDevice = /android/i.test(Globals.sUserAgent) || /iphone/i.test(Globals.sUserAgent) || /ipod/i.test(Globals.sUserAgent) || /ipad/i.test(Globals.sUserAgent) || /blackberry/i.test(Globals.sUserAgent) ; /** * @type {boolean} */ Globals.bDisableNanoScroll = Globals.bMobileDevice; /** * @type {boolean} */ Globals.bAllowPdfPreview = !Globals.bMobileDevice; /** * @type {boolean} */ Globals.bAnimationSupported = !Globals.bMobileDevice && Globals.$html.hasClass('csstransitions') && Globals.$html.hasClass('cssanimations'); /** * @type {boolean} */ Globals.bXMLHttpRequestSupported = !!window.XMLHttpRequest; /** * @type {*} */ Globals.__APP__ = null; /** * @type {Object} */ Globals.oHtmlEditorDefaultConfig = { 'title': false, 'stylesSet': false, 'customConfig': '', 'contentsCss': '', 'toolbarGroups': [ {name: 'spec'}, {name: 'styles'}, {name: 'basicstyles', groups: ['basicstyles', 'cleanup', 'bidi']}, {name: 'colors'}, {name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align']}, {name: 'links'}, {name: 'insert'}, {name: 'document', groups: ['mode', 'document', 'doctools']}, {name: 'others'} ], 'removePlugins': 'liststyle', 'removeButtons': 'Format,Undo,Redo,Cut,Copy,Paste,Anchor,Strike,Subscript,Superscript,Image,SelectAll,Source', 'removeDialogTabs': 'link:advanced;link:target;image:advanced;images:advanced', 'extraPlugins': 'plain,signature', 'allowedContent': true, 'extraAllowedContent': true, 'forceEnterMode': true, 'autoParagraph': false, 'fillEmptyBlocks': false, 'ignoreEmptyParagraph': true, 'font_defaultLabel': 'Arial', 'fontSize_defaultLabel': '13', 'fontSize_sizes': '10/10px;12/12px;13/13px;14/14px;16/16px;18/18px;20/20px;24/24px;28/28px;36/36px;48/48px' }; /** * @type {Object} */ Globals.oHtmlEditorLangsMap = { 'bg': 'bg', 'de': 'de', 'es': 'es', 'fr': 'fr', 'hu': 'hu', 'is': 'is', 'it': 'it', 'ja': 'ja', 'ja-jp': 'ja', 'ko': 'ko', 'ko-kr': 'ko', 'lt': 'lt', 'lv': 'lv', 'nl': 'nl', 'no': 'no', 'pl': 'pl', 'pt': 'pt', 'pt-pt': 'pt', 'pt-br': 'pt-br', 'ro': 'ro', 'ru': 'ru', 'sk': 'sk', 'sv': 'sv', 'tr': 'tr', 'ua': 'ru', 'zh': 'zh', 'zh-tw': 'zh', 'zh-cn': 'zh-cn' }; if (Globals.bAllowPdfPreview && window.navigator && window.navigator.mimeTypes) { Globals.bAllowPdfPreview = !!_.find(window.navigator.mimeTypes, function (oType) { return oType && 'application/pdf' === oType.type; }); } Globals.aBootstrapDropdowns = []; Globals.aViewModels = { 'settings': [], 'settings-removed': [], 'settings-disabled': [] }; Globals.leftPanelDisabled = ko.observable(false); // popups Globals.popupVisibilityNames = ko.observableArray([]); Globals.popupVisibility = ko.computed(function () { return 0 < Globals.popupVisibilityNames().length; }, this); Globals.popupVisibility.subscribe(function (bValue) { Globals.$html.toggleClass('rl-modal', bValue); }); // keys Globals.keyScopeReal = ko.observable(Enums.KeyState.All); Globals.keyScopeFake = ko.observable(Enums.KeyState.All); Globals.keyScope = ko.computed({ 'owner': this, 'read': function () { return Globals.keyScopeFake(); }, 'write': function (sValue) { if (Enums.KeyState.Menu !== sValue) { if (Enums.KeyState.Compose === sValue) { // disableKeyFilter key.filter = function () { return Globals.useKeyboardShortcuts(); }; } else { // restoreKeyFilter key.filter = function (event) { if (Globals.useKeyboardShortcuts()) { var oElement = event.target || event.srcElement, sTagName = oElement ? oElement.tagName : '' ; sTagName = sTagName.toUpperCase(); return !(sTagName === 'INPUT' || sTagName === 'SELECT' || sTagName === 'TEXTAREA' || (oElement && sTagName === 'DIV' && 'editorHtmlArea' === oElement.className && oElement.contentEditable) ); } return false; }; } Globals.keyScopeFake(sValue); if (Globals.dropdownVisibility()) { sValue = Enums.KeyState.Menu; } } Globals.keyScopeReal(sValue); } }); Globals.keyScopeReal.subscribe(function (sValue) { key.setScope(sValue); }); Globals.dropdownVisibility.subscribe(function (bValue) { if (bValue) { Globals.tooltipTrigger(!Globals.tooltipTrigger()); Globals.keyScope(Enums.KeyState.Menu); } else if (Enums.KeyState.Menu === key.getScope()) { Globals.keyScope(Globals.keyScopeFake()); } }); module.exports = Globals; }()); /***/ }, /* 8 */ /*!**********************************!*\ !*** ./dev/Common/Translator.js ***! \**********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var window = __webpack_require__(/*! window */ 11), $ = __webpack_require__(/*! $ */ 12), _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), Enums = __webpack_require__(/*! Common/Enums */ 4), Globals = __webpack_require__(/*! Common/Globals */ 7) ; /** * @constructor */ function Translator() { this.data = window['rainloopI18N'] || {}; this.notificationI18N = {}; this.trigger = ko.observable(false); this.i18n = _.bind(this.i18n, this); } Translator.prototype.data = {}; Translator.prototype.notificationI18N = {}; /** * @param {string} sKey * @param {Object=} oValueList * @param {string=} sDefaulValue * @return {string} */ Translator.prototype.i18n = function (sKey, oValueList, sDefaulValue) { var sValueName = '', sResult = _.isUndefined(this.data[sKey]) ? (_.isUndefined(sDefaulValue) ? sKey : sDefaulValue) : this.data[sKey] ; if (!_.isUndefined(oValueList) && !_.isNull(oValueList)) { for (sValueName in oValueList) { if (_.has(oValueList, sValueName)) { sResult = sResult.replace('%' + sValueName + '%', oValueList[sValueName]); } } } return sResult; }; /** * @param {Object} oElement * @param {boolean=} bAnimate = false */ Translator.prototype.i18nToNode = function (oElement, bAnimate) { var self = this; _.defer(function () { $('.i18n', oElement).each(function () { var jqThis = $(this), sKey = '' ; sKey = jqThis.data('i18n-text'); if (sKey) { jqThis.text(self.i18n(sKey)); } else { sKey = jqThis.data('i18n-html'); if (sKey) { jqThis.html(self.i18n(sKey)); } sKey = jqThis.data('i18n-placeholder'); if (sKey) { jqThis.attr('placeholder', self.i18n(sKey)); } sKey = jqThis.data('i18n-title'); if (sKey) { jqThis.attr('title', self.i18n(sKey)); } } }); if (bAnimate && Globals.bAnimationSupported) { $('.i18n-animation.i18n', oElement).letterfx({ 'fx': 'fall fade', 'backwards': false, 'timing': 50, 'fx_duration': '50ms', 'letter_end': 'restore', 'element_end': 'restore' }); } }); }; Translator.prototype.reloadData = function () { if (window['rainloopI18N']) { this.data = window['rainloopI18N'] || {}; this.i18nToNode($(window.document), true); this.trigger(!this.trigger()); } window['rainloopI18N'] = null; }; Translator.prototype.initNotificationLanguage = function () { var oN = this.notificationI18N || {}; oN[Enums.Notification.InvalidToken] = this.i18n('NOTIFICATIONS/INVALID_TOKEN'); oN[Enums.Notification.AuthError] = this.i18n('NOTIFICATIONS/AUTH_ERROR'); oN[Enums.Notification.AccessError] = this.i18n('NOTIFICATIONS/ACCESS_ERROR'); oN[Enums.Notification.ConnectionError] = this.i18n('NOTIFICATIONS/CONNECTION_ERROR'); oN[Enums.Notification.CaptchaError] = this.i18n('NOTIFICATIONS/CAPTCHA_ERROR'); oN[Enums.Notification.SocialFacebookLoginAccessDisable] = this.i18n('NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE'); oN[Enums.Notification.SocialTwitterLoginAccessDisable] = this.i18n('NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE'); oN[Enums.Notification.SocialGoogleLoginAccessDisable] = this.i18n('NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE'); oN[Enums.Notification.DomainNotAllowed] = this.i18n('NOTIFICATIONS/DOMAIN_NOT_ALLOWED'); oN[Enums.Notification.AccountNotAllowed] = this.i18n('NOTIFICATIONS/ACCOUNT_NOT_ALLOWED'); oN[Enums.Notification.AccountTwoFactorAuthRequired] = this.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED'); oN[Enums.Notification.AccountTwoFactorAuthError] = this.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR'); oN[Enums.Notification.CouldNotSaveNewPassword] = this.i18n('NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD'); oN[Enums.Notification.CurrentPasswordIncorrect] = this.i18n('NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT'); oN[Enums.Notification.NewPasswordShort] = this.i18n('NOTIFICATIONS/NEW_PASSWORD_SHORT'); oN[Enums.Notification.NewPasswordWeak] = this.i18n('NOTIFICATIONS/NEW_PASSWORD_WEAK'); oN[Enums.Notification.NewPasswordForbidden] = this.i18n('NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT'); oN[Enums.Notification.ContactsSyncError] = this.i18n('NOTIFICATIONS/CONTACTS_SYNC_ERROR'); oN[Enums.Notification.CantGetMessageList] = this.i18n('NOTIFICATIONS/CANT_GET_MESSAGE_LIST'); oN[Enums.Notification.CantGetMessage] = this.i18n('NOTIFICATIONS/CANT_GET_MESSAGE'); oN[Enums.Notification.CantDeleteMessage] = this.i18n('NOTIFICATIONS/CANT_DELETE_MESSAGE'); oN[Enums.Notification.CantMoveMessage] = this.i18n('NOTIFICATIONS/CANT_MOVE_MESSAGE'); oN[Enums.Notification.CantCopyMessage] = this.i18n('NOTIFICATIONS/CANT_MOVE_MESSAGE'); oN[Enums.Notification.CantSaveMessage] = this.i18n('NOTIFICATIONS/CANT_SAVE_MESSAGE'); oN[Enums.Notification.CantSendMessage] = this.i18n('NOTIFICATIONS/CANT_SEND_MESSAGE'); oN[Enums.Notification.InvalidRecipients] = this.i18n('NOTIFICATIONS/INVALID_RECIPIENTS'); oN[Enums.Notification.CantSaveFilters] = this.i18n('NOTIFICATIONS/CANT_SAVE_FILTERS'); oN[Enums.Notification.CantGetFilters] = this.i18n('NOTIFICATIONS/CANT_GET_FILTERS'); oN[Enums.Notification.FiltersAreNotCorrect] = this.i18n('NOTIFICATIONS/FILTERS_ARE_NOT_CORRECT'); oN[Enums.Notification.CantCreateFolder] = this.i18n('NOTIFICATIONS/CANT_CREATE_FOLDER'); oN[Enums.Notification.CantRenameFolder] = this.i18n('NOTIFICATIONS/CANT_RENAME_FOLDER'); oN[Enums.Notification.CantDeleteFolder] = this.i18n('NOTIFICATIONS/CANT_DELETE_FOLDER'); oN[Enums.Notification.CantDeleteNonEmptyFolder] = this.i18n('NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER'); oN[Enums.Notification.CantSubscribeFolder] = this.i18n('NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER'); oN[Enums.Notification.CantUnsubscribeFolder] = this.i18n('NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER'); oN[Enums.Notification.CantSaveSettings] = this.i18n('NOTIFICATIONS/CANT_SAVE_SETTINGS'); oN[Enums.Notification.CantSavePluginSettings] = this.i18n('NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS'); oN[Enums.Notification.DomainAlreadyExists] = this.i18n('NOTIFICATIONS/DOMAIN_ALREADY_EXISTS'); oN[Enums.Notification.CantInstallPackage] = this.i18n('NOTIFICATIONS/CANT_INSTALL_PACKAGE'); oN[Enums.Notification.CantDeletePackage] = this.i18n('NOTIFICATIONS/CANT_DELETE_PACKAGE'); oN[Enums.Notification.InvalidPluginPackage] = this.i18n('NOTIFICATIONS/INVALID_PLUGIN_PACKAGE'); oN[Enums.Notification.UnsupportedPluginPackage] = this.i18n('NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE'); oN[Enums.Notification.LicensingServerIsUnavailable] = this.i18n('NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE'); oN[Enums.Notification.LicensingExpired] = this.i18n('NOTIFICATIONS/LICENSING_EXPIRED'); oN[Enums.Notification.LicensingBanned] = this.i18n('NOTIFICATIONS/LICENSING_BANNED'); oN[Enums.Notification.DemoSendMessageError] = this.i18n('NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR'); oN[Enums.Notification.DemoAccountError] = this.i18n('NOTIFICATIONS/DEMO_ACCOUNT_ERROR'); oN[Enums.Notification.AccountAlreadyExists] = this.i18n('NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS'); oN[Enums.Notification.AccountDoesNotExist] = this.i18n('NOTIFICATIONS/ACCOUNT_DOES_NOT_EXIST'); oN[Enums.Notification.MailServerError] = this.i18n('NOTIFICATIONS/MAIL_SERVER_ERROR'); oN[Enums.Notification.InvalidInputArgument] = this.i18n('NOTIFICATIONS/INVALID_INPUT_ARGUMENT'); oN[Enums.Notification.UnknownNotification] = this.i18n('NOTIFICATIONS/UNKNOWN_ERROR'); oN[Enums.Notification.UnknownError] = this.i18n('NOTIFICATIONS/UNKNOWN_ERROR'); }; /** * @param {Function} fCallback * @param {Object} oScope * @param {Function=} fLangCallback */ Translator.prototype.initOnStartOrLangChange = function (fCallback, oScope, fLangCallback) { if (fCallback) { fCallback.call(oScope); } if (fLangCallback) { this.trigger.subscribe(function () { if (fCallback) { fCallback.call(oScope); } fLangCallback.call(oScope); }); } else if (fCallback) { this.trigger.subscribe(fCallback, oScope); } }; /** * @param {number} iCode * @param {*=} mMessage = '' * @return {string} */ Translator.prototype.getNotification = function (iCode, mMessage) { iCode = window.parseInt(iCode, 10) || 0; if (Enums.Notification.ClientViewError === iCode && mMessage) { return mMessage; } return _.isUndefined(this.notificationI18N[iCode]) ? '' : this.notificationI18N[iCode]; }; /** * @param {*} mCode * @return {string} */ Translator.prototype.getUploadErrorDescByCode = function (mCode) { var sResult = ''; switch (window.parseInt(mCode, 10) || 0) { case Enums.UploadErrorCode.FileIsTooBig: sResult = this.i18n('UPLOAD/ERROR_FILE_IS_TOO_BIG'); break; case Enums.UploadErrorCode.FilePartiallyUploaded: sResult = this.i18n('UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED'); break; case Enums.UploadErrorCode.FileNoUploaded: sResult = this.i18n('UPLOAD/ERROR_NO_FILE_UPLOADED'); break; case Enums.UploadErrorCode.MissingTempFolder: sResult = this.i18n('UPLOAD/ERROR_MISSING_TEMP_FOLDER'); break; case Enums.UploadErrorCode.FileOnSaveingError: sResult = this.i18n('UPLOAD/ERROR_ON_SAVING_FILE'); break; case Enums.UploadErrorCode.FileType: sResult = this.i18n('UPLOAD/ERROR_FILE_TYPE'); break; default: sResult = this.i18n('UPLOAD/ERROR_UNKNOWN'); break; } return sResult; }; /** * @param {string} sLanguage * @param {Function=} fDone * @param {Function=} fFail */ Translator.prototype.reload = function (sLanguage, fDone, fFail) { var self = this, $html = $('html'), fEmptyFunction = function () {}, iStart = (new Date()).getTime() ; $html.addClass('rl-changing-language'); $.ajax({ 'url': __webpack_require__(/*! Common/Links */ 13).langLink(sLanguage), 'dataType': 'script', 'cache': true }) .fail(fFail || fEmptyFunction) .done(function () { _.delay(function () { self.reloadData(); (fDone || fEmptyFunction)(); $html.removeClass('rl-changing-language'); }, 500 < (new Date()).getTime() - iStart ? 1 : 500); }) ; }; module.exports = new Translator(); }()); /***/ }, /* 9 */ /*!*********************************!*\ !*** ./dev/Storage/Settings.js ***! \*********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var window = __webpack_require__(/*! window */ 11), Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @constructor */ function SettingsStorage() { this.oSettings = window['rainloopAppData'] || {}; this.oSettings = Utils.isNormal(this.oSettings) ? this.oSettings : {}; } SettingsStorage.prototype.oSettings = null; /** * @param {string} sName * @return {?} */ SettingsStorage.prototype.settingsGet = function (sName) { return Utils.isUnd(this.oSettings[sName]) ? null : this.oSettings[sName]; }; /** * @param {string} sName * @param {?} mValue */ SettingsStorage.prototype.settingsSet = function (sName, mValue) { this.oSettings[sName] = mValue; }; /** * @param {string} sName * @return {boolean} */ SettingsStorage.prototype.capa = function (sName) { var mCapa = this.settingsGet('Capa'); return Utils.isArray(mCapa) && Utils.isNormal(sName) && -1 < Utils.inArray(sName, mCapa); }; module.exports = new SettingsStorage(); }()); /***/ }, /* 10 */ /*!***********************************!*\ !*** ./dev/Knoin/AbstractView.js ***! \***********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var ko = __webpack_require__(/*! ko */ 3), Enums = __webpack_require__(/*! Common/Enums */ 4), Utils = __webpack_require__(/*! Common/Utils */ 1), Globals = __webpack_require__(/*! Common/Globals */ 7) ; /** * @constructor * @param {string=} sPosition = '' * @param {string=} sTemplate = '' */ function AbstractView(sPosition, sTemplate) { this.bDisabeCloseOnEsc = false; this.sPosition = Utils.pString(sPosition); this.sTemplate = Utils.pString(sTemplate); this.sDefaultKeyScope = Enums.KeyState.None; this.sCurrentKeyScope = this.sDefaultKeyScope; this.viewModelVisibility = ko.observable(false); this.modalVisibility = ko.observable(false).extend({'rateLimit': 0}); this.viewModelName = ''; this.viewModelNames = []; this.viewModelDom = null; } /** * @type {boolean} */ AbstractView.prototype.bDisabeCloseOnEsc = false; /** * @type {string} */ AbstractView.prototype.sPosition = ''; /** * @type {string} */ AbstractView.prototype.sTemplate = ''; /** * @type {string} */ AbstractView.prototype.sDefaultKeyScope = Enums.KeyState.None; /** * @type {string} */ AbstractView.prototype.sCurrentKeyScope = Enums.KeyState.None; /** * @type {string} */ AbstractView.prototype.viewModelName = ''; /** * @type {Array} */ AbstractView.prototype.viewModelNames = []; /** * @type {?} */ AbstractView.prototype.viewModelDom = null; /** * @return {string} */ AbstractView.prototype.viewModelTemplate = function () { return this.sTemplate; }; /** * @return {string} */ AbstractView.prototype.viewModelPosition = function () { return this.sPosition; }; AbstractView.prototype.cancelCommand = function () {}; AbstractView.prototype.closeCommand = function () {}; AbstractView.prototype.storeAndSetKeyScope = function () { this.sCurrentKeyScope = Globals.keyScope(); Globals.keyScope(this.sDefaultKeyScope); }; AbstractView.prototype.restoreKeyScope = function () { Globals.keyScope(this.sCurrentKeyScope); }; AbstractView.prototype.registerPopupKeyDown = function () { var self = this; Globals.$win.on('keydown', function (oEvent) { if (oEvent && self.modalVisibility && self.modalVisibility()) { if (!this.bDisabeCloseOnEsc && Enums.EventKeyCode.Esc === oEvent.keyCode) { Utils.delegateRun(self, 'cancelCommand'); return false; } else if (Enums.EventKeyCode.Backspace === oEvent.keyCode && !Utils.inFocus()) { return false; } } return true; }); }; module.exports = AbstractView; }()); /***/ }, /* 11 */ /*!*************************!*\ !*** external "window" ***! \*************************/ /***/ function(module, exports, __webpack_require__) { module.exports = window; /***/ }, /* 12 */ /*!********************************!*\ !*** external "window.jQuery" ***! \********************************/ /***/ function(module, exports, __webpack_require__) { module.exports = window.jQuery; /***/ }, /* 13 */ /*!*****************************!*\ !*** ./dev/Common/Links.js ***! \*****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var window = __webpack_require__(/*! window */ 11), Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @constructor */ function Links() { var Settings = __webpack_require__(/*! Storage/Settings */ 9); this.sBase = '#/'; this.sServer = './?'; this.sSubQuery = '&s=/'; this.sSubSubQuery = '&ss=/'; this.sVersion = Settings.settingsGet('Version'); this.sSpecSuffix = Settings.settingsGet('AuthAccountHash') || '0'; this.sWebPrefix = Settings.settingsGet('WebPath') || ''; this.sVersionPrefix = Settings.settingsGet('WebVersionPath') || 'rainloop/v/' + this.sVersion + '/'; this.sStaticPrefix = this.sVersionPrefix + 'static/'; } /** * @return {string} */ Links.prototype.root = function () { return this.sBase; }; /** * @return {string} */ Links.prototype.rootAdmin = function () { return this.sServer + '/Admin/'; }; /** * @param {string} sDownload * @return {string} */ Links.prototype.attachmentDownload = function (sDownload) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/Download/' + this.sSubSubQuery + sDownload; }; /** * @param {string} sDownload * @return {string} */ Links.prototype.attachmentPreview = function (sDownload) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/View/' + this.sSubSubQuery + sDownload; }; /** * @param {string} sDownload * @return {string} */ Links.prototype.attachmentThumbnailPreview = function (sDownload) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/ViewThumbnail/' + this.sSubSubQuery + sDownload; }; /** * @param {string} sDownload * @return {string} */ Links.prototype.attachmentPreviewAsPlain = function (sDownload) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/ViewAsPlain/' + this.sSubSubQuery + sDownload; }; /** * @param {string} sDownload * @return {string} */ Links.prototype.attachmentFramed = function (sDownload) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/FramedView/' + this.sSubSubQuery + sDownload; }; /** * @return {string} */ Links.prototype.upload = function () { return this.sServer + '/Upload/' + this.sSubQuery + this.sSpecSuffix + '/'; }; /** * @return {string} */ Links.prototype.uploadContacts = function () { return this.sServer + '/UploadContacts/' + this.sSubQuery + this.sSpecSuffix + '/'; }; /** * @return {string} */ Links.prototype.uploadBackground = function () { return this.sServer + '/UploadBackground/' + this.sSubQuery + this.sSpecSuffix + '/'; }; /** * @return {string} */ Links.prototype.append = function () { return this.sServer + '/Append/' + this.sSubQuery + this.sSpecSuffix + '/'; }; /** * @param {string} sEmail * @return {string} */ Links.prototype.change = function (sEmail) { return this.sServer + '/Change/' + this.sSubQuery + this.sSpecSuffix + '/' + Utils.encodeURIComponent(sEmail) + '/'; }; /** * @param {string=} sAdd * @return {string} */ Links.prototype.ajax = function (sAdd) { return this.sServer + '/Ajax/' + this.sSubQuery + this.sSpecSuffix + '/' + sAdd; }; /** * @param {string} sRequestHash * @return {string} */ Links.prototype.messageViewLink = function (sRequestHash) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/ViewAsPlain/' + this.sSubSubQuery + sRequestHash; }; /** * @param {string} sRequestHash * @return {string} */ Links.prototype.messageDownloadLink = function (sRequestHash) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/Download/' + this.sSubSubQuery + sRequestHash; }; /** * @param {string} sEmail * @return {string} */ Links.prototype.avatarLink = function (sEmail) { return this.sServer + '/Raw/0/Avatar/' + Utils.encodeURIComponent(sEmail) + '/'; }; /** * @param {string} sHash * @return {string} */ Links.prototype.publicLink = function (sHash) { return this.sServer + '/Raw/0/Public/' + sHash + '/'; }; /** * @param {string} sHash * @return {string} */ Links.prototype.userBackground = function (sHash) { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/UserBackground/' + this.sSubSubQuery + sHash; }; /** * @param {string} sInboxFolderName = 'INBOX' * @return {string} */ Links.prototype.inbox = function (sInboxFolderName) { sInboxFolderName = Utils.isUnd(sInboxFolderName) ? 'INBOX' : sInboxFolderName; return this.sBase + 'mailbox/' + sInboxFolderName; }; /** * @return {string} */ Links.prototype.messagePreview = function () { return this.sBase + 'mailbox/message-preview'; }; /** * @param {string=} sScreenName * @return {string} */ Links.prototype.settings = function (sScreenName) { var sResult = this.sBase + 'settings'; if (!Utils.isUnd(sScreenName) && '' !== sScreenName) { sResult += '/' + sScreenName; } return sResult; }; /** * @return {string} */ Links.prototype.about = function () { return this.sBase + 'about'; }; /** * @param {string} sScreenName * @return {string} */ Links.prototype.admin = function (sScreenName) { var sResult = this.sBase; switch (sScreenName) { case 'AdminDomains': sResult += 'domains'; break; case 'AdminSecurity': sResult += 'security'; break; case 'AdminLicensing': sResult += 'licensing'; break; } return sResult; }; /** * @param {string} sFolder * @param {number=} iPage = 1 * @param {string=} sSearch = '' * @return {string} */ Links.prototype.mailBox = function (sFolder, iPage, sSearch) { iPage = Utils.isNormal(iPage) ? Utils.pInt(iPage) : 1; sSearch = Utils.pString(sSearch); var sResult = this.sBase + 'mailbox/'; if ('' !== sFolder) { sResult += encodeURI(sFolder); } if (1 < iPage) { sResult = sResult.replace(/[\/]+$/, ''); sResult += '/p' + iPage; } if ('' !== sSearch) { sResult = sResult.replace(/[\/]+$/, ''); sResult += '/' + encodeURI(sSearch); } return sResult; }; /** * @return {string} */ Links.prototype.phpInfo = function () { return this.sServer + 'Info'; }; /** * @param {string} sLang * @return {string} */ Links.prototype.langLink = function (sLang) { return this.sServer + '/Lang/0/' + encodeURI(sLang) + '/' + this.sVersion + '/'; }; /** * @return {string} */ Links.prototype.exportContactsVcf = function () { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/ContactsVcf/'; }; /** * @return {string} */ Links.prototype.exportContactsCsv = function () { return this.sServer + '/Raw/' + this.sSubQuery + this.sSpecSuffix + '/ContactsCsv/'; }; /** * @return {string} */ Links.prototype.emptyContactPic = function () { return this.sStaticPrefix + 'css/images/empty-contact.png'; }; /** * @param {string} sFileName * @return {string} */ Links.prototype.sound = function (sFileName) { return this.sStaticPrefix + 'sounds/' + sFileName; }; /** * @param {string} sTheme * @return {string} */ Links.prototype.themePreviewLink = function (sTheme) { var sPrefix = this.sVersionPrefix; if ('@custom' === sTheme.substr(-7)) { sTheme = Utils.trim(sTheme.substring(0, sTheme.length - 7)); sPrefix = this.sWebPrefix; } return sPrefix + 'themes/' + window.encodeURI(sTheme) + '/images/preview.png'; }; /** * @return {string} */ Links.prototype.notificationMailIcon = function () { return this.sStaticPrefix + 'css/images/icom-message-notification.png'; }; /** * @return {string} */ Links.prototype.openPgpJs = function () { return this.sStaticPrefix + 'js/min/openpgp.js'; }; /** * @return {string} */ Links.prototype.socialGoogle = function () { return this.sServer + 'SocialGoogle' + ('' !== this.sSpecSuffix ? '/' + this.sSubQuery + this.sSpecSuffix + '/' : ''); }; /** * @return {string} */ Links.prototype.socialTwitter = function () { return this.sServer + 'SocialTwitter' + ('' !== this.sSpecSuffix ? '/' + this.sSubQuery + this.sSpecSuffix + '/' : ''); }; /** * @return {string} */ Links.prototype.socialFacebook = function () { return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSubQuery + this.sSpecSuffix + '/' : ''); }; module.exports = new Links(); }()); /***/ }, /* 14 */, /* 15 */ /*!******************************!*\ !*** ./dev/Common/Consts.js ***! \******************************/ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) { (function () { 'use strict'; var Consts = {}; Consts.Values = {}; Consts.DataImages = {}; Consts.Defaults = {}; /** * @const * @type {number} */ Consts.Defaults.MessagesPerPage = 20; /** * @const * @type {number} */ Consts.Defaults.ContactsPerPage = 50; /** * @const * @type {Array} */ Consts.Defaults.MessagesPerPageArray = [10, 20, 30, 50, 100/*, 150, 200, 300*/]; /** * @const * @type {number} */ Consts.Defaults.DefaultAjaxTimeout = 30000; /** * @const * @type {number} */ Consts.Defaults.SearchAjaxTimeout = 300000; /** * @const * @type {number} */ Consts.Defaults.SendMessageAjaxTimeout = 300000; /** * @const * @type {number} */ Consts.Defaults.SaveMessageAjaxTimeout = 200000; /** * @const * @type {number} */ Consts.Defaults.ContactsSyncAjaxTimeout = 200000; /** * @const * @type {string} */ Consts.Values.UnuseOptionValue = '__UNUSE__'; /** * @const * @type {string} */ Consts.Values.ClientSideStorageIndexName = 'rlcsc'; /** * @const * @type {number} */ Consts.Values.ImapDefaulPort = 143; /** * @const * @type {number} */ Consts.Values.ImapDefaulSecurePort = 993; /** * @const * @type {number} */ Consts.Values.SieveDefaulPort = 4190; /** * @const * @type {number} */ Consts.Values.SmtpDefaulPort = 25; /** * @const * @type {number} */ Consts.Values.SmtpDefaulSecurePort = 465; /** * @const * @type {number} */ Consts.Values.MessageBodyCacheLimit = 15; /** * @const * @type {number} */ Consts.Values.AjaxErrorLimit = 7; /** * @const * @type {number} */ Consts.Values.TokenErrorLimit = 10; /** * @const * @type {string} */ Consts.Values.RainLoopTrialKey = 'RAINLOOP-TRIAL-KEY'; /** * @const * @type {string} */ // Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2P8DwQACgAD/il4QJ8AAAAASUVORK5CYII='; Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAAHHklEQVRoQ7VZW08bVxCeXRuwIbTGXIwNtBBaqjwgVUiR8lDlbza9qe1DpVZ9aNQ/0KpPeaJK07SpcuEeCEmUAObm21bfrL9lONjexSYrWfbunj37zXdmvpkz9oIgCKTD0Wg0xPd94TDP83Q0zvWa50vzklSrdanVanqf4/D84GBGr+F+Op3S8fqoJxLOdnZgTvsO/nYhenHA+UC7CWF1uXwkb9++ldPTUwVerVbVqFQqpR8YPjQ0JCMjI5LNDijoRgP3PQVu5+5Eor2XGLg7IV4GkIdHJ/LmzRs5ODiIwNbrdR0O0GCcq4Xz4eFhmZyclP7+tDQaIik/BG5XKQn4SwG3zJTLZXn9+rUclI8UHD5YVoDDN8bSzXhONwL48fFxGR4eilzFZT1uFRIB5yT8BqCdnR3Z3d0VP9Un6XRawYJpggVrZBv38ME4XKtUKnLt2jUplUoy1PR/l3U7T6sVSAQcgMAkj8PDQ9ne3pajoyMRL7zeKsYZWHgWYDGmv78/mmdwcFA+mJlSgziHDWrERrsjEXDXegTi1tZW+DLxI2bxIrqFNYTXyDyCFweMAHCwb8e4RnTNuOsqe3t7sra21pTD0Kct666E8XlcZyzw9/RUUXK5nK5oUinUQI6TQ3cynO/v78vq6qrKXCNwlTiJJpyNGc3nZHp6uqV2dwrQWOCtZBDAV1ZWwsQk7f0wiQn5kffbAu/0/KWBYzIC1+XukfGx0RGZmppKlC2tIV0Bh4aDcZW7HhkfH8urLLZL7T2pihvlkMNnz56FiadHxicL41IsFpN41bkxsYxbRdFo9jwB8KdPn14J8KnSpBQKhQs63nPmbCVRcBUAR2Lq1VVmpksyMTFxAXjcEsQybiegESionjx5osCZOeNe1O4+EhCAX7bQSgQcxRHTMgAgcz5+/Dis/hL4uHU3/B4YGNASGHIKxuEql0k+l05AeIAF1vPnz5VxFFmdDlaJrMtZITJeSsXCOTlMunKxjLtMYOKNjQ158eJFuAuKkUOb5sEwgff19SkJUBVkThZUbnXZrtCKBQ6gbnWIkjZpyne3ejAWoGnA7Icz6irvBLgbOMicCM6TkxPx/LAkbXfgWcsazuE2kFRsKD5Z+CiqDumKncpZvieWcS6dDVD8xiYCNflpJdwcdwJOf9airLmVQ7DPzMxIYWLsXGXoVqLt5k0M3K3JUVPDZdbWNzsCp48TPFdvdnZWUz32nDha7bJ63kgAJPzSdRks9/Kf9xMJAQ1gq2NpaUmy2Yz4zar4nQC3xb99AQwCcGzLAAwuhG8YiWvcOKts+r4GOe5nMhm5efOm9lUA3E3vSZJRrKvE0fnPv//Jy5cvo5cTHIPQbSjhOoqq69evS19f6lxDKK4+sVhigZPtKJqbrQeqxd5+WR4+fKgqgT0k2XX3nhiPgETWXFhYkFzuPZ2yVq1GTSOXpE47/VjgNnD4m4GG7/LhsTx69EiwD4Vr2MwIIxgbAH18fKx1yfz8vEogNvGtWnCuhLZa9UTAreVWFsHy/b/+Vrbdl7E5REMQD2jDoUbByty+/ZnU64GkU2HzyJLhktU1cLv8nARgkYS2d3ajAgwG8qU2oLmDZ92CMaOjo7K4uCiZgbDWaRWgnZhPxLhrMUCvr69riwKZk1LHF7XqrWAO9hJxH6ozNzcnCx/PqztZg9mf6SQMscCtm2C5ke4BGMlHWTUp36036AJajDVrFMzBrhhWslQsSrFYiOqVpMriNYIgqFRq2j3FAb/zffT6zuxFXxsNzs3NTXn16lW4gYiW96w1FyedF+83xG/2FNGCRpU4NjamMsn+OZ9xE5RXqdaDdPpib6RWCzuwKF9RxqI2AVNQBwQYJoK0wdBejnqtEikP3pfP51XjUTESl12FqJEKxsEorARYDD44ONTeID7YpsEnrRvQfWAI2e8WfDaTUSIwJ0iBCmFOtOUAHvVMPp/TPwvYFVYFIuP8l+DBgwdaa2Miqwa0GgYwfeMltovbDfh6c1vIgMYcliSsKv4IWFr6VDHxvldvBAH+1sA+cnl5WYOPmmr9ir+1l9I0Cgz0yjhXjfJJ0JROnmezWbl165ayr/5fqwcBNr7IfhjMqKcvESSM4eRcCasQ3bDNObmKPLdGUGpZsN24cUNLBm9zazu4d++e6qpNBFaTuUS26U5dpuR1CxyA7J9ddrMRqlz4pwLLYawymPd++/2PADt2ugcGwq9gCCdhQ96C6xWwa6j1ceuq+I0EhW0i8MAIVJfeL3d/DVD8EKi12P6/2S2jV/EccVB54O/ejz/9HGCpoBBMta5rXMXLu53D1XAwjhXwvvv+h4BAXVe4bOu3O3ChxF08LiZFG3fel199G9CH3fLyqv24NcB44MRhpdK788U3CpyKwsCw590xmfSpzsBt0Fqc3ud3vtZigxWcVZCklVpSiN0w3q5E/h9TGMIUuA3+EQAAAABJRU5ErkJggg=='; /** * @const * @type {string} */ Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII='; module.exports = Consts; }(module)); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! (webpack)/buildin/module.js */ 71)(module))) /***/ }, /* 16 */ /*!**************************!*\ !*** ./dev/App/Admin.js ***! \**************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var window = __webpack_require__(/*! window */ 11), _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), SimplePace = __webpack_require__(/*! SimplePace */ 76), Enums = __webpack_require__(/*! Common/Enums */ 4), Utils = __webpack_require__(/*! Common/Utils */ 1), Links = __webpack_require__(/*! Common/Links */ 13), Translator = __webpack_require__(/*! Common/Translator */ 8), Settings = __webpack_require__(/*! Storage/Settings */ 9), AppStore = __webpack_require__(/*! Stores/Admin/App */ 37), DomainStore = __webpack_require__(/*! Stores/Admin/Domain */ 61), PluginStore = __webpack_require__(/*! Stores/Admin/Plugin */ 64), LicenseStore = __webpack_require__(/*! Stores/Admin/License */ 62), PackageStore = __webpack_require__(/*! Stores/Admin/Package */ 63), CoreStore = __webpack_require__(/*! Stores/Admin/Core */ 82), Remote = __webpack_require__(/*! Remote/Admin/Ajax */ 17), kn = __webpack_require__(/*! Knoin/Knoin */ 5), AbstractApp = __webpack_require__(/*! App/Abstract */ 47) ; /** * @constructor * @extends AbstractApp */ function AdminApp() { AbstractApp.call(this, Remote); } _.extend(AdminApp.prototype, AbstractApp.prototype); AdminApp.prototype.remote = function () { return Remote; }; AdminApp.prototype.reloadDomainList = function () { DomainStore.domains.loading(true); Remote.domainList(function (sResult, oData) { DomainStore.domains.loading(false); if (Enums.StorageResultType.Success === sResult && oData && oData.Result) { var aList = _.map(oData.Result, function (bEnabled, sName) { return { 'name': sName, 'disabled': ko.observable(!bEnabled), 'deleteAccess': ko.observable(false) }; }, this); DomainStore.domains(aList); } }); }; AdminApp.prototype.reloadPluginList = function () { PluginStore.plugins.loading(true); Remote.pluginList(function (sResult, oData) { PluginStore.plugins.loading(false); if (Enums.StorageResultType.Success === sResult && oData && oData.Result) { var aList = _.map(oData.Result, function (oItem) { return { 'name': oItem['Name'], 'disabled': ko.observable(!oItem['Enabled']), 'configured': ko.observable(!!oItem['Configured']) }; }, this); PluginStore.plugins(aList); } }); }; AdminApp.prototype.reloadPackagesList = function () { PackageStore.packages.loading(true); PackageStore.packagesReal(true); Remote.packagesList(function (sResult, oData) { PackageStore.packages.loading(false); if (Enums.StorageResultType.Success === sResult && oData && oData.Result) { PackageStore.packagesReal(!!oData.Result.Real); PackageStore.packagesMainUpdatable(!!oData.Result.MainUpdatable); var aList = [], aLoading = {} ; _.each(PackageStore.packages(), function (oItem) { if (oItem && oItem['loading']()) { aLoading[oItem['file']] = oItem; } }); if (Utils.isArray(oData.Result.List)) { aList = _.compact(_.map(oData.Result.List, function (oItem) { if (oItem) { oItem['loading'] = ko.observable(!Utils.isUnd(aLoading[oItem['file']])); return 'core' === oItem['type'] && !oItem['canBeInstalled'] ? null : oItem; } return null; })); } PackageStore.packages(aList); } else { PackageStore.packagesReal(false); } }); }; AdminApp.prototype.updateCoreData = function () { CoreStore.coreUpdating(true); Remote.updateCoreData(function (sResult, oData) { CoreStore.coreUpdating(false); CoreStore.coreVersion(''); CoreStore.coreRemoteVersion(''); CoreStore.coreRemoteRelease(''); CoreStore.coreVersionCompare(-2); if (Enums.StorageResultType.Success === sResult && oData && oData.Result) { CoreStore.coreReal(true); window.location.reload(); } else { CoreStore.coreReal(false); } }); }; AdminApp.prototype.reloadCoreData = function () { CoreStore.coreChecking(true); CoreStore.coreReal(true); Remote.coreData(function (sResult, oData) { CoreStore.coreChecking(false); if (Enums.StorageResultType.Success === sResult && oData && oData.Result) { CoreStore.coreReal(!!oData.Result.Real); CoreStore.coreChannel(oData.Result.Channel || 'stable'); CoreStore.coreType(oData.Result.Type || 'stable'); CoreStore.coreUpdatable(!!oData.Result.Updatable); CoreStore.coreAccess(!!oData.Result.Access); CoreStore.coreWarning(!!oData.Result.Warning); CoreStore.coreVersion(oData.Result.Version || ''); CoreStore.coreRemoteVersion(oData.Result.RemoteVersion || ''); CoreStore.coreRemoteRelease(oData.Result.RemoteRelease || ''); CoreStore.coreVersionCompare(Utils.pInt(oData.Result.VersionCompare)); } else { CoreStore.coreReal(false); CoreStore.coreChannel('stable'); CoreStore.coreType('stable'); CoreStore.coreWarning(false); CoreStore.coreVersion(''); CoreStore.coreRemoteVersion(''); CoreStore.coreRemoteRelease(''); CoreStore.coreVersionCompare(-2); } }); }; /** * * @param {boolean=} bForce = false */ AdminApp.prototype.reloadLicensing = function (bForce) { bForce = Utils.isUnd(bForce) ? false : !!bForce; LicenseStore.licensingProcess(true); LicenseStore.licenseError(''); Remote.licensing(function (sResult, oData) { LicenseStore.licensingProcess(false); if (Enums.StorageResultType.Success === sResult && oData && oData.Result && Utils.isNormal(oData.Result['Expired'])) { LicenseStore.licenseValid(true); LicenseStore.licenseExpired(Utils.pInt(oData.Result['Expired'])); LicenseStore.licenseError(''); LicenseStore.licensing(true); AppStore.prem(true); } else { if (oData && oData.ErrorCode && -1 < Utils.inArray(Utils.pInt(oData.ErrorCode), [ Enums.Notification.LicensingServerIsUnavailable, Enums.Notification.LicensingExpired ])) { LicenseStore.licenseError(Translator.getNotification(Utils.pInt(oData.ErrorCode))); LicenseStore.licensing(true); } else { if (Enums.StorageResultType.Abort === sResult) { LicenseStore.licenseError(Translator.getNotification(Enums.Notification.LicensingServerIsUnavailable)); LicenseStore.licensing(true); } else { LicenseStore.licensing(false); } } } }, bForce); }; AdminApp.prototype.bootstart = function () { AbstractApp.prototype.bootstart.call(this); __webpack_require__(/*! Stores/Admin/App */ 37).populate(); __webpack_require__(/*! Stores/Admin/Capa */ 43).populate(); kn.hideLoading(); if (!Settings.settingsGet('AllowAdminPanel')) { kn.routeOff(); kn.setHash(Links.root(), true); kn.routeOff(); _.defer(function () { window.location.href = '/'; }); } else { if (!!Settings.settingsGet('Auth')) { kn.startScreens([ __webpack_require__(/*! Screen/Admin/Settings */ 108) ]); } else { kn.startScreens([ __webpack_require__(/*! Screen/Admin/Login */ 107) ]); } } if (SimplePace) { SimplePace.set(100); } }; module.exports = new AdminApp(); }()); /***/ }, /* 17 */ /*!**********************************!*\ !*** ./dev/Remote/Admin/Ajax.js ***! \**********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), AbstractAjaxRemote = __webpack_require__(/*! Remote/AbstractAjax */ 59) ; /** * @constructor * @extends AbstractAjaxRemote */ function RemoteAdminStorage() { AbstractAjaxRemote.call(this); this.oRequests = {}; } _.extend(RemoteAdminStorage.prototype, AbstractAjaxRemote.prototype); /** * @param {?Function} fCallback * @param {string} sLogin * @param {string} sPassword */ RemoteAdminStorage.prototype.adminLogin = function (fCallback, sLogin, sPassword) { this.defaultRequest(fCallback, 'AdminLogin', { 'Login': sLogin, 'Password': sPassword }); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.adminLogout = function (fCallback) { this.defaultRequest(fCallback, 'AdminLogout'); }; /** * @param {?Function} fCallback * @param {?} oData */ RemoteAdminStorage.prototype.saveAdminConfig = function (fCallback, oData) { this.defaultRequest(fCallback, 'AdminSettingsUpdate', oData); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.domainList = function (fCallback) { this.defaultRequest(fCallback, 'AdminDomainList'); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.pluginList = function (fCallback) { this.defaultRequest(fCallback, 'AdminPluginList'); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.packagesList = function (fCallback) { this.defaultRequest(fCallback, 'AdminPackagesList'); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.coreData = function (fCallback) { this.defaultRequest(fCallback, 'AdminCoreData'); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.updateCoreData = function (fCallback) { this.defaultRequest(fCallback, 'AdminUpdateCoreData', {}, 90000); }; /** * @param {?Function} fCallback * @param {Object} oPackage */ RemoteAdminStorage.prototype.packageInstall = function (fCallback, oPackage) { this.defaultRequest(fCallback, 'AdminPackageInstall', { 'Id': oPackage.id, 'Type': oPackage.type, 'File': oPackage.file }, 60000); }; /** * @param {?Function} fCallback * @param {Object} oPackage */ RemoteAdminStorage.prototype.packageDelete = function (fCallback, oPackage) { this.defaultRequest(fCallback, 'AdminPackageDelete', { 'Id': oPackage.id }); }; /** * @param {?Function} fCallback * @param {string} sName */ RemoteAdminStorage.prototype.domain = function (fCallback, sName) { this.defaultRequest(fCallback, 'AdminDomainLoad', { 'Name': sName }); }; /** * @param {?Function} fCallback * @param {string} sName */ RemoteAdminStorage.prototype.plugin = function (fCallback, sName) { this.defaultRequest(fCallback, 'AdminPluginLoad', { 'Name': sName }); }; /** * @param {?Function} fCallback * @param {string} sName */ RemoteAdminStorage.prototype.domainDelete = function (fCallback, sName) { this.defaultRequest(fCallback, 'AdminDomainDelete', { 'Name': sName }); }; /** * @param {?Function} fCallback * @param {string} sName * @param {boolean} bDisabled */ RemoteAdminStorage.prototype.domainDisable = function (fCallback, sName, bDisabled) { return this.defaultRequest(fCallback, 'AdminDomainDisable', { 'Name': sName, 'Disabled': !!bDisabled ? '1' : '0' }); }; /** * @param {?Function} fCallback * @param {Object} oConfig */ RemoteAdminStorage.prototype.pluginSettingsUpdate = function (fCallback, oConfig) { return this.defaultRequest(fCallback, 'AdminPluginSettingsUpdate', oConfig); }; /** * @param {?Function} fCallback * @param {boolean} bForce */ RemoteAdminStorage.prototype.licensing = function (fCallback, bForce) { return this.defaultRequest(fCallback, 'AdminLicensing', { 'Force' : bForce ? '1' : '0' }); }; /** * @param {?Function} fCallback * @param {string} sDomain * @param {string} sKey */ RemoteAdminStorage.prototype.licensingActivate = function (fCallback, sDomain, sKey) { return this.defaultRequest(fCallback, 'AdminLicensingActivate', { 'Domain' : sDomain, 'Key' : sKey }); }; /** * @param {?Function} fCallback * @param {string} sName * @param {boolean} bDisabled */ RemoteAdminStorage.prototype.pluginDisable = function (fCallback, sName, bDisabled) { return this.defaultRequest(fCallback, 'AdminPluginDisable', { 'Name': sName, 'Disabled': !!bDisabled ? '1' : '0' }); }; RemoteAdminStorage.prototype.createOrUpdateDomain = function (fCallback, bCreate, sName, sIncHost, iIncPort, sIncSecure, bIncShortLogin, bUseSieve, sSieveAllowRaw, sSieveHost, iSievePort, sSieveSecure, sOutHost, iOutPort, sOutSecure, bOutShortLogin, bOutAuth, bOutPhpMail, sWhiteList) { this.defaultRequest(fCallback, 'AdminDomainSave', { 'Create': bCreate ? '1' : '0', 'Name': sName, 'IncHost': sIncHost, 'IncPort': iIncPort, 'IncSecure': sIncSecure, 'IncShortLogin': bIncShortLogin ? '1' : '0', 'UseSieve': bUseSieve ? '1' : '0', 'SieveAllowRaw': sSieveAllowRaw ? '1' : '0', 'SieveHost': sSieveHost, 'SievePort': iSievePort, 'SieveSecure': sSieveSecure, 'OutHost': sOutHost, 'OutPort': iOutPort, 'OutSecure': sOutSecure, 'OutShortLogin': bOutShortLogin ? '1' : '0', 'OutAuth': bOutAuth ? '1' : '0', 'OutUsePhpMail': bOutPhpMail ? '1' : '0', 'WhiteList': sWhiteList }); }; RemoteAdminStorage.prototype.testConnectionForDomain = function (fCallback, sName, sIncHost, iIncPort, sIncSecure, bUseSieve, sSieveHost, iSievePort, sSieveSecure, sOutHost, iOutPort, sOutSecure, bOutAuth, bOutPhpMail) { this.defaultRequest(fCallback, 'AdminDomainTest', { 'Name': sName, 'IncHost': sIncHost, 'IncPort': iIncPort, 'IncSecure': sIncSecure, 'UseSieve': bUseSieve ? '1' : '0', 'SieveHost': sSieveHost, 'SievePort': iSievePort, 'SieveSecure': sSieveSecure, 'OutHost': sOutHost, 'OutPort': iOutPort, 'OutSecure': sOutSecure, 'OutAuth': bOutAuth ? '1' : '0', 'OutUsePhpMail': bOutPhpMail ? '1' : '0' }); }; /** * @param {?Function} fCallback * @param {?} oData */ RemoteAdminStorage.prototype.testContacts = function (fCallback, oData) { this.defaultRequest(fCallback, 'AdminContactsTest', oData); }; /** * @param {?Function} fCallback * @param {?} oData */ RemoteAdminStorage.prototype.saveNewAdminPassword = function (fCallback, oData) { this.defaultRequest(fCallback, 'AdminPasswordUpdate', oData); }; /** * @param {?Function} fCallback */ RemoteAdminStorage.prototype.adminPing = function (fCallback) { this.defaultRequest(fCallback, 'AdminPing'); }; module.exports = new RemoteAdminStorage(); }()); /***/ }, /* 18 */, /* 19 */ /*!*****************************!*\ !*** external "window.key" ***! \*****************************/ /***/ function(module, exports, __webpack_require__) { module.exports = window.key; /***/ }, /* 20 */ /*!*******************************!*\ !*** ./dev/Common/Plugins.js ***! \*******************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), Globals = __webpack_require__(/*! Common/Globals */ 7), Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @constructor */ function Plugins() { this.oSettings = __webpack_require__(/*! Storage/Settings */ 9); this.oSimpleHooks = {}; this.aUserViewModelsHooks = []; this.aAdminViewModelsHooks = []; } /** * @type {Object} */ Plugins.prototype.oSettings = {}; /** * @type {Array} */ Plugins.prototype.aUserViewModelsHooks = []; /** * @type {Array} */ Plugins.prototype.aAdminViewModelsHooks = []; /** * @type {Object} */ Plugins.prototype.oSimpleHooks = {}; /** * @param {string} sName * @param {Function} fCallback */ Plugins.prototype.addHook = function (sName, fCallback) { if (Utils.isFunc(fCallback)) { if (!Utils.isArray(this.oSimpleHooks[sName])) { this.oSimpleHooks[sName] = []; } this.oSimpleHooks[sName].push(fCallback); } }; /** * @param {string} sName * @param {Array=} aArguments */ Plugins.prototype.runHook = function (sName, aArguments) { if (Utils.isArray(this.oSimpleHooks[sName])) { aArguments = aArguments || []; _.each(this.oSimpleHooks[sName], function (fCallback) { fCallback.apply(null, aArguments); }); } }; /** * @param {string} sName * @return {?} */ Plugins.prototype.mainSettingsGet = function (sName) { return this.oSettings.settingsGet(sName); }; /** * @param {Function} fCallback * @param {string} sAction * @param {Object=} oParameters * @param {?number=} iTimeout */ Plugins.prototype.remoteRequest = function (fCallback, sAction, oParameters, iTimeout) { if (Globals.__APP__) { Globals.__APP__.remote().defaultRequest(fCallback, 'Plugin' + sAction, oParameters, iTimeout); } }; /** * @param {Function} SettingsViewModelClass * @param {string} sLabelName * @param {string} sTemplate * @param {string} sRoute */ Plugins.prototype.addSettingsViewModel = function (SettingsViewModelClass, sTemplate, sLabelName, sRoute) { this.aUserViewModelsHooks.push([SettingsViewModelClass, sTemplate, sLabelName, sRoute]); }; /** * @param {Function} SettingsViewModelClass * @param {string} sLabelName * @param {string} sTemplate * @param {string} sRoute */ Plugins.prototype.addSettingsViewModelForAdmin = function (SettingsViewModelClass, sTemplate, sLabelName, sRoute) { this.aAdminViewModelsHooks.push([SettingsViewModelClass, sTemplate, sLabelName, sRoute]); }; Plugins.prototype.runSettingsViewModelHooks = function (bAdmin) { _.each(bAdmin ? this.aAdminViewModelsHooks : this.aUserViewModelsHooks, function (aView) { __webpack_require__(/*! Knoin/Knoin */ 5).addSettingsViewModel(aView[0], aView[1], aView[2], aView[3]); }); }; /** * @param {string} sPluginSection * @param {string} sName * @return {?} */ Plugins.prototype.settingsGet = function (sPluginSection, sName) { var oPlugin = this.oSettings.settingsGet('Plugins'); oPlugin = oPlugin && !Utils.isUnd(oPlugin[sPluginSection]) ? oPlugin[sPluginSection] : null; return oPlugin ? (Utils.isUnd(oPlugin[sName]) ? null : oPlugin[sName]) : null; }; module.exports = new Plugins(); }()); /***/ }, /* 21 */, /* 22 */, /* 23 */, /* 24 */, /* 25 */ /*!****************************!*\ !*** ./dev/Model/Email.js ***! \****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @param {string=} sEmail * @param {string=} sName * @param {string=} sDkimStatus * @param {string=} sDkimValue * * @constructor */ function EmailModel(sEmail, sName, sDkimStatus, sDkimValue) { this.email = sEmail || ''; this.name = sName || ''; this.dkimStatus = sDkimStatus || 'none'; this.dkimValue = sDkimValue || ''; this.clearDuplicateName(); } /** * @static * @param {AjaxJsonEmail} oJsonEmail * @return {?EmailModel} */ EmailModel.newInstanceFromJson = function (oJsonEmail) { var oEmailModel = new EmailModel(); return oEmailModel.initByJson(oJsonEmail) ? oEmailModel : null; }; /** * @type {string} */ EmailModel.prototype.name = ''; /** * @type {string} */ EmailModel.prototype.email = ''; /** * @type {string} */ EmailModel.prototype.dkimStatus = 'none'; /** * @type {string} */ EmailModel.prototype.dkimValue = ''; EmailModel.prototype.clear = function () { this.email = ''; this.name = ''; this.dkimStatus = 'none'; this.dkimValue = ''; }; /** * @returns {boolean} */ EmailModel.prototype.validate = function () { return '' !== this.name || '' !== this.email; }; /** * @param {boolean} bWithoutName = false * @return {string} */ EmailModel.prototype.hash = function (bWithoutName) { return '#' + (bWithoutName ? '' : this.name) + '#' + this.email + '#'; }; EmailModel.prototype.clearDuplicateName = function () { if (this.name === this.email) { this.name = ''; } }; /** * @param {string} sQuery * @return {boolean} */ EmailModel.prototype.search = function (sQuery) { return -1 < (this.name + ' ' + this.email).toLowerCase().indexOf(sQuery.toLowerCase()); }; /** * @param {string} sString */ EmailModel.prototype.parse = function (sString) { this.clear(); sString = Utils.trim(sString); var mRegex = /(?:"([^"]+)")? ?[<]?(.*?@[^>,]+)>?,? ?/g, mMatch = mRegex.exec(sString) ; if (mMatch) { this.name = mMatch[1] || ''; this.email = mMatch[2] || ''; this.clearDuplicateName(); } else if ((/^[^@]+@[^@]+$/).test(sString)) { this.name = ''; this.email = sString; } }; /** * @param {AjaxJsonEmail} oJsonEmail * @return {boolean} */ EmailModel.prototype.initByJson = function (oJsonEmail) { var bResult = false; if (oJsonEmail && 'Object/Email' === oJsonEmail['@Object']) { this.name = Utils.trim(oJsonEmail.Name); this.email = Utils.trim(oJsonEmail.Email); this.dkimStatus = Utils.trim(oJsonEmail.DkimStatus || ''); this.dkimValue = Utils.trim(oJsonEmail.DkimValue || ''); bResult = '' !== this.email; this.clearDuplicateName(); } return bResult; }; /** * @param {boolean} bFriendlyView * @param {boolean=} bWrapWithLink = false * @param {boolean=} bEncodeHtml = false * @return {string} */ EmailModel.prototype.toLine = function (bFriendlyView, bWrapWithLink, bEncodeHtml) { var sResult = ''; if ('' !== this.email) { bWrapWithLink = Utils.isUnd(bWrapWithLink) ? false : !!bWrapWithLink; bEncodeHtml = Utils.isUnd(bEncodeHtml) ? false : !!bEncodeHtml; if (bFriendlyView && '' !== this.name) { sResult = bWrapWithLink ? '
') + '" target="_blank" tabindex="-1">' + Utils.encodeHtml(this.name) + '' : (bEncodeHtml ? Utils.encodeHtml(this.name) : this.name); } else { sResult = this.email; if ('' !== this.name) { if (bWrapWithLink) { sResult = Utils.encodeHtml('"' + this.name + '" <') + '') + '" target="_blank" tabindex="-1">' + Utils.encodeHtml(sResult) + '' + Utils.encodeHtml('>'); } else { sResult = '"' + this.name + '" <' + sResult + '>'; if (bEncodeHtml) { sResult = Utils.encodeHtml(sResult); } } } else if (bWrapWithLink) { sResult = '' + Utils.encodeHtml(this.email) + ''; } } } return sResult; }; /** * @param {string} $sEmailAddress * @return {boolean} */ EmailModel.prototype.mailsoParse = function ($sEmailAddress) { $sEmailAddress = Utils.trim($sEmailAddress); if ('' === $sEmailAddress) { return false; } var substr = function (str, start, len) { str += ''; var end = str.length; if (start < 0) { start += end; } end = typeof len === 'undefined' ? end : (len < 0 ? len + end : len + start); return start >= str.length || start < 0 || start > end ? false : str.slice(start, end); }, substr_replace = function (str, replace, start, length) { if (start < 0) { start = start + str.length; } length = length !== undefined ? length : str.length; if (length < 0) { length = length + str.length - start; } return str.slice(0, start) + replace.substr(0, length) + replace.slice(length) + str.slice(start + length); }, $sName = '', $sEmail = '', $sComment = '', $bInName = false, $bInAddress = false, $bInComment = false, $aRegs = null, $iStartIndex = 0, $iEndIndex = 0, $iCurrentIndex = 0 ; while ($iCurrentIndex < $sEmailAddress.length) { switch ($sEmailAddress.substr($iCurrentIndex, 1)) { case '"': if ((!$bInName) && (!$bInAddress) && (!$bInComment)) { $bInName = true; $iStartIndex = $iCurrentIndex; } else if ((!$bInAddress) && (!$bInComment)) { $iEndIndex = $iCurrentIndex; $sName = substr($sEmailAddress, $iStartIndex + 1, $iEndIndex - $iStartIndex - 1); $sEmailAddress = substr_replace($sEmailAddress, '', $iStartIndex, $iEndIndex - $iStartIndex + 1); $iEndIndex = 0; $iCurrentIndex = 0; $iStartIndex = 0; $bInName = false; } break; case '<': if ((!$bInName) && (!$bInAddress) && (!$bInComment)) { if ($iCurrentIndex > 0 && $sName.length === 0) { $sName = substr($sEmailAddress, 0, $iCurrentIndex); } $bInAddress = true; $iStartIndex = $iCurrentIndex; } break; case '>': if ($bInAddress) { $iEndIndex = $iCurrentIndex; $sEmail = substr($sEmailAddress, $iStartIndex + 1, $iEndIndex - $iStartIndex - 1); $sEmailAddress = substr_replace($sEmailAddress, '', $iStartIndex, $iEndIndex - $iStartIndex + 1); $iEndIndex = 0; $iCurrentIndex = 0; $iStartIndex = 0; $bInAddress = false; } break; case '(': if ((!$bInName) && (!$bInAddress) && (!$bInComment)) { $bInComment = true; $iStartIndex = $iCurrentIndex; } break; case ')': if ($bInComment) { $iEndIndex = $iCurrentIndex; $sComment = substr($sEmailAddress, $iStartIndex + 1, $iEndIndex - $iStartIndex - 1); $sEmailAddress = substr_replace($sEmailAddress, '', $iStartIndex, $iEndIndex - $iStartIndex + 1); $iEndIndex = 0; $iCurrentIndex = 0; $iStartIndex = 0; $bInComment = false; } break; case '\\': $iCurrentIndex++; break; } $iCurrentIndex++; } if ($sEmail.length === 0) { $aRegs = $sEmailAddress.match(/[^@\s]+@\S+/i); if ($aRegs && $aRegs[0]) { $sEmail = $aRegs[0]; } else { $sName = $sEmailAddress; } } if ($sEmail.length > 0 && $sName.length === 0 && $sComment.length === 0) { $sName = $sEmailAddress.replace($sEmail, ''); } $sEmail = Utils.trim($sEmail).replace(/^[<]+/, '').replace(/[>]+$/, ''); $sName = Utils.trim($sName).replace(/^["']+/, '').replace(/["']+$/, ''); $sComment = Utils.trim($sComment).replace(/^[(]+/, '').replace(/[)]+$/, ''); // Remove backslash $sName = $sName.replace(/\\\\(.)/g, '$1'); $sComment = $sComment.replace(/\\\\(.)/g, '$1'); this.name = $sName; this.email = $sEmail; this.clearDuplicateName(); return true; }; module.exports = EmailModel; }()); /***/ }, /* 26 */, /* 27 */, /* 28 */ /*!******************************!*\ !*** ./dev/Common/Events.js ***! \******************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), Utils = __webpack_require__(/*! Common/Utils */ 1), Plugins = __webpack_require__(/*! Common/Plugins */ 20) ; /** * @constructor */ function Events() { this.oSubs = {}; } Events.prototype.oSubs = {}; /** * @param {string} sName * @param {Function} fFunc * @param {Object=} oContext * @return {Events} */ Events.prototype.sub = function (sName, fFunc, oContext) { if (Utils.isObject(sName)) { oContext = fFunc || null; fFunc = null; _.each(sName, function (fSubFunc, sSubName) { this.sub(sSubName, fSubFunc, oContext); }, this); } else { if (Utils.isUnd(this.oSubs[sName])) { this.oSubs[sName] = []; } this.oSubs[sName].push([fFunc, oContext]); } return this; }; /** * @param {string} sName * @param {Array=} aArgs * @return {Events} */ Events.prototype.pub = function (sName, aArgs) { Plugins.runHook('rl-pub', [sName, aArgs]); if (!Utils.isUnd(this.oSubs[sName])) { _.each(this.oSubs[sName], function (aItem) { if (aItem[0]) { aItem[0].apply(aItem[1] || null, aArgs || []); } }); } return this; }; module.exports = new Events(); }()); /***/ }, /* 29 */ /*!***********************************!*\ !*** ./dev/Component/Abstract.js ***! \***********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @constructor */ function AbstractComponent() { this.disposable = []; } /** * @type {Array} */ AbstractComponent.prototype.disposable = []; AbstractComponent.prototype.dispose = function () { _.each(this.disposable, function (fFuncToDispose) { if (fFuncToDispose && fFuncToDispose.dispose) { fFuncToDispose.dispose(); } }); }; /** * @param {*} ClassObject * @param {string} sTemplateID * @return {Object} */ AbstractComponent.componentExportHelper = function (ClassObject, sTemplateID) { return { viewModel: { createViewModel: function(oParams, oCmponentInfo) { oParams = oParams || {}; oParams.element = null; if (oCmponentInfo.element) { oParams.element = $(oCmponentInfo.element); __webpack_require__(/*! Common/Translator */ 8).i18nToNode(oParams.element); if (!Utils.isUnd(oParams.inline) && ko.unwrap(oParams.inline)) { oParams.element.css('display', 'inline-block'); } } return new ClassObject(oParams); } }, template: { element: sTemplateID } }; }; module.exports = AbstractComponent; }()); /***/ }, /* 30 */, /* 31 */, /* 32 */ /*!********************************!*\ !*** ./dev/Stores/Language.js ***! \********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var ko = __webpack_require__(/*! ko */ 3), Utils = __webpack_require__(/*! Common/Utils */ 1), Settings = __webpack_require__(/*! Storage/Settings */ 9) ; /** * @constructor */ function LanguageStore() { this.languages = ko.observableArray([]); this.language = ko.observable('') .extend({'limitedList': this.languages}); } LanguageStore.prototype.populate = function () { var aLanguages = Settings.settingsGet('Languages'); this.languages(Utils.isArray(aLanguages) ? aLanguages : []); this.language(Settings.settingsGet('Language')); }; module.exports = new LanguageStore(); }()); /***/ }, /* 33 */ /*!********************************!*\ !*** external "window.moment" ***! \********************************/ /***/ function(module, exports, __webpack_require__) { module.exports = window.moment; /***/ }, /* 34 */ /*!****************************************!*\ !*** ./dev/Component/AbstractInput.js ***! \****************************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), Enums = __webpack_require__(/*! Common/Enums */ 4), Utils = __webpack_require__(/*! Common/Utils */ 1), AbstractComponent = __webpack_require__(/*! Component/Abstract */ 29) ; /** * @constructor * * @param {Object} oParams * * @extends AbstractComponent */ function AbstractInput(oParams) { AbstractComponent.call(this); this.value = oParams.value || ''; this.size = oParams.size || 0; this.label = oParams.label || ''; this.preLabel = oParams.preLabel || ''; this.enable = Utils.isUnd(oParams.enable) ? true : oParams.enable; this.trigger = oParams.trigger && oParams.trigger.subscribe ? oParams.trigger : null; this.placeholder = oParams.placeholder || ''; this.labeled = !Utils.isUnd(oParams.label); this.preLabeled = !Utils.isUnd(oParams.preLabel); this.triggered = !Utils.isUnd(oParams.trigger) && !!this.trigger; this.classForTrigger = ko.observable(''); this.className = ko.computed(function () { var iSize = ko.unwrap(this.size), sSuffixValue = this.trigger ? ' ' + Utils.trim('settings-saved-trigger-input ' + this.classForTrigger()) : '' ; return (0 < iSize ? 'span' + iSize : '') + sSuffixValue; }, this); if (!Utils.isUnd(oParams.width) && oParams.element) { oParams.element.find('input,select,textarea').css('width', oParams.width); } this.disposable.push(this.className); if (this.trigger) { this.setTriggerState(this.trigger()); this.disposable.push( this.trigger.subscribe(this.setTriggerState, this) ); } } AbstractInput.prototype.setTriggerState = function (nValue) { switch (Utils.pInt(nValue)) { case Enums.SaveSettingsStep.TrueResult: this.classForTrigger('success'); break; case Enums.SaveSettingsStep.FalseResult: this.classForTrigger('error'); break; default: this.classForTrigger(''); break; } }; _.extend(AbstractInput.prototype, AbstractComponent.prototype); AbstractInput.componentExportHelper = AbstractComponent.componentExportHelper; module.exports = AbstractInput; }()); /***/ }, /* 35 */ /*!*************************************!*\ !*** ./dev/Knoin/AbstractScreen.js ***! \*************************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), crossroads = __webpack_require__(/*! crossroads */ 41), Utils = __webpack_require__(/*! Common/Utils */ 1) ; /** * @param {string} sScreenName * @param {?=} aViewModels = [] * @constructor */ function AbstractScreen(sScreenName, aViewModels) { this.sScreenName = sScreenName; this.aViewModels = Utils.isArray(aViewModels) ? aViewModels : []; } /** * @type {Array} */ AbstractScreen.prototype.oCross = null; /** * @type {string} */ AbstractScreen.prototype.sScreenName = ''; /** * @type {Array} */ AbstractScreen.prototype.aViewModels = []; /** * @return {Array} */ AbstractScreen.prototype.viewModels = function () { return this.aViewModels; }; /** * @return {string} */ AbstractScreen.prototype.screenName = function () { return this.sScreenName; }; AbstractScreen.prototype.routes = function () { return null; }; /** * @return {?Object} */ AbstractScreen.prototype.__cross = function () { return this.oCross; }; AbstractScreen.prototype.__start = function () { var aRoutes = this.routes(), oRoute = null, fMatcher = null ; if (Utils.isNonEmptyArray(aRoutes)) { fMatcher = _.bind(this.onRoute || Utils.emptyFunction, this); oRoute = crossroads.create(); _.each(aRoutes, function (aItem) { oRoute.addRoute(aItem[0], fMatcher).rules = aItem[1]; }); this.oCross = oRoute; } }; module.exports = AbstractScreen; }()); /***/ }, /* 36 */ /*!******************************!*\ !*** ./dev/Stores/Social.js ***! \******************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var ko = __webpack_require__(/*! ko */ 3) ; /** * @constructor */ function SocialStore() { this.google = {}; this.twitter = {}; this.facebook = {}; this.dropbox = {}; // Google this.google.enabled = ko.observable(false); this.google.clientID = ko.observable(''); this.google.clientSecret = ko.observable(''); this.google.apiKey = ko.observable(''); this.google.loading = ko.observable(false); this.google.userName = ko.observable(''); this.google.loggined = ko.computed(function () { return '' !== this.google.userName(); }, this); this.google.capa = {}; this.google.capa.auth = ko.observable(false); this.google.capa.drive = ko.observable(false); this.google.capa.preview = ko.observable(false); this.google.require = {}; this.google.require.clientSettings = ko.computed(function () { return this.google.enabled() && (this.google.capa.auth() || this.google.capa.drive()); }, this); this.google.require.apiKeySettings = ko.computed(function () { return this.google.enabled() && this.google.capa.drive(); }, this); // Facebook this.facebook.enabled = ko.observable(false); this.facebook.appID = ko.observable(''); this.facebook.appSecret = ko.observable(''); this.facebook.loading = ko.observable(false); this.facebook.userName = ko.observable(''); this.facebook.supported = ko.observable(false); this.facebook.loggined = ko.computed(function () { return '' !== this.facebook.userName(); }, this); // Twitter this.twitter.enabled = ko.observable(false); this.twitter.consumerKey = ko.observable(''); this.twitter.consumerSecret = ko.observable(''); this.twitter.loading = ko.observable(false); this.twitter.userName = ko.observable(''); this.twitter.loggined = ko.computed(function () { return '' !== this.twitter.userName(); }, this); // Dropbox this.dropbox.enabled = ko.observable(false); this.dropbox.apiKey = ko.observable(''); } SocialStore.prototype.google = {}; SocialStore.prototype.twitter = {}; SocialStore.prototype.facebook = {}; SocialStore.prototype.dropbox = {}; SocialStore.prototype.populate = function () { var Settings = __webpack_require__(/*! Storage/Settings */ 9); this.google.enabled(!!Settings.settingsGet('AllowGoogleSocial')); this.google.clientID(Settings.settingsGet('GoogleClientID')); this.google.clientSecret(Settings.settingsGet('GoogleClientSecret')); this.google.apiKey(Settings.settingsGet('GoogleApiKey')); this.google.capa.auth(!!Settings.settingsGet('AllowGoogleSocialAuth')); this.google.capa.drive(!!Settings.settingsGet('AllowGoogleSocialDrive')); this.google.capa.preview(!!Settings.settingsGet('AllowGoogleSocialPreview')); this.facebook.enabled(!!Settings.settingsGet('AllowFacebookSocial')); this.facebook.appID(Settings.settingsGet('FacebookAppID')); this.facebook.appSecret(Settings.settingsGet('FacebookAppSecret')); this.facebook.supported(!!Settings.settingsGet('SupportedFacebookSocial')); this.twitter.enabled = ko.observable(!!Settings.settingsGet('AllowTwitterSocial')); this.twitter.consumerKey = ko.observable(Settings.settingsGet('TwitterConsumerKey')); this.twitter.consumerSecret = ko.observable(Settings.settingsGet('TwitterConsumerSecret')); this.dropbox.enabled(!!Settings.settingsGet('AllowDropboxSocial')); this.dropbox.apiKey(Settings.settingsGet('DropboxApiKey')); }; module.exports = new SocialStore(); }()); /***/ }, /* 37 */ /*!*********************************!*\ !*** ./dev/Stores/Admin/App.js ***! \*********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var ko = __webpack_require__(/*! ko */ 3), Settings = __webpack_require__(/*! Storage/Settings */ 9), AppStore = __webpack_require__(/*! Stores/App */ 65) ; /** * @constructor */ function AppAdminStore() { AppStore.call(this); this.determineUserLanguage = ko.observable(false); this.determineUserDomain = ko.observable(false); this.weakPassword = ko.observable(false); this.useLocalProxyForExternalImages = ko.observable(false); } AppAdminStore.prototype.populate = function() { AppStore.prototype.populate.call(this); this.determineUserLanguage(!!Settings.settingsGet('DetermineUserLanguage')); this.determineUserDomain(!!Settings.settingsGet('DetermineUserDomain')); this.weakPassword(!!Settings.settingsGet('WeakPassword')); this.useLocalProxyForExternalImages(!!Settings.settingsGet('UseLocalProxyForExternalImages')); }; module.exports = new AppAdminStore(); }()); /***/ }, /* 38 */ /*!******************************************!*\ !*** ./dev/Component/AbstracCheckbox.js ***! \******************************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), Utils = __webpack_require__(/*! Common/Utils */ 1), AbstractComponent = __webpack_require__(/*! Component/Abstract */ 29) ; /** * @constructor * * @param {Object} oParams * * @extends AbstractComponent */ function AbstracCheckbox(oParams) { AbstractComponent.call(this); this.value = oParams.value; if (Utils.isUnd(this.value) || !this.value.subscribe) { this.value = ko.observable(Utils.isUnd(this.value) ? false : !!this.value); } this.enable = oParams.enable; if (Utils.isUnd(this.enable) || !this.enable.subscribe) { this.enable = ko.observable(Utils.isUnd(this.enable) ? true : !!this.enable); } this.disable = oParams.disable; if (Utils.isUnd(this.disable) || !this.disable.subscribe) { this.disable = ko.observable(Utils.isUnd(this.disable) ? false : !!this.disable); } this.label = oParams.label || ''; this.inline = Utils.isUnd(oParams.inline) ? false : oParams.inline; this.readOnly = Utils.isUnd(oParams.readOnly) ? false : !!oParams.readOnly; this.inverted = Utils.isUnd(oParams.inverted) ? false : !!oParams.inverted; this.labeled = !Utils.isUnd(oParams.label); } _.extend(AbstracCheckbox.prototype, AbstractComponent.prototype); AbstracCheckbox.prototype.click = function() { if (!this.readOnly && this.enable() && !this.disable()) { this.value(!this.value()); } }; AbstracCheckbox.componentExportHelper = AbstractComponent.componentExportHelper; module.exports = AbstracCheckbox; }()); /***/ }, /* 39 */ /*!*****************************!*\ !*** ./dev/Stores/Theme.js ***! \*****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var ko = __webpack_require__(/*! ko */ 3), Utils = __webpack_require__(/*! Common/Utils */ 1), Settings = __webpack_require__(/*! Storage/Settings */ 9) ; /** * @constructor */ function ThemeStore() { this.themes = ko.observableArray([]); this.themeBackgroundName = ko.observable(''); this.themeBackgroundHash = ko.observable(''); this.theme = ko.observable('') .extend({'limitedList': this.themes}); } ThemeStore.prototype.populate = function () { var aThemes = Settings.settingsGet('Themes'); this.themes(Utils.isArray(aThemes) ? aThemes : []); this.theme(Settings.settingsGet('Theme')); this.themeBackgroundName(Settings.settingsGet('UserBackgroundName')); this.themeBackgroundHash(Settings.settingsGet('UserBackgroundHash')); }; module.exports = new ThemeStore(); }()); /***/ }, /* 40 */ /*!*******************************!*\ !*** ./dev/View/Popup/Ask.js ***! \*******************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), key = __webpack_require__(/*! key */ 19), Enums = __webpack_require__(/*! Common/Enums */ 4), Utils = __webpack_require__(/*! Common/Utils */ 1), Translator = __webpack_require__(/*! Common/Translator */ 8), kn = __webpack_require__(/*! Knoin/Knoin */ 5), AbstractView = __webpack_require__(/*! Knoin/AbstractView */ 10) ; /** * @constructor * @extends AbstractView */ function AskPopupView() { AbstractView.call(this, 'Popups', 'PopupsAsk'); this.askDesc = ko.observable(''); this.yesButton = ko.observable(''); this.noButton = ko.observable(''); this.yesFocus = ko.observable(false); this.noFocus = ko.observable(false); this.fYesAction = null; this.fNoAction = null; this.bFocusYesOnShow = true; this.bDisabeCloseOnEsc = true; this.sDefaultKeyScope = Enums.KeyState.PopupAsk; kn.constructorEnd(this); } kn.extendAsViewModel(['View/Popup/Ask', 'PopupsAskViewModel'], AskPopupView); _.extend(AskPopupView.prototype, AbstractView.prototype); AskPopupView.prototype.clearPopup = function () { this.askDesc(''); this.yesButton(Translator.i18n('POPUPS_ASK/BUTTON_YES')); this.noButton(Translator.i18n('POPUPS_ASK/BUTTON_NO')); this.yesFocus(false); this.noFocus(false); this.fYesAction = null; this.fNoAction = null; }; AskPopupView.prototype.yesClick = function () { this.cancelCommand(); if (Utils.isFunc(this.fYesAction)) { this.fYesAction.call(null); } }; AskPopupView.prototype.noClick = function () { this.cancelCommand(); if (Utils.isFunc(this.fNoAction)) { this.fNoAction.call(null); } }; /** * @param {string} sAskDesc * @param {Function=} fYesFunc * @param {Function=} fNoFunc * @param {string=} sYesButton * @param {string=} sNoButton * @param {boolean=} bFocusYesOnShow */ AskPopupView.prototype.onShow = function (sAskDesc, fYesFunc, fNoFunc, sYesButton, sNoButton, bFocusYesOnShow) { this.clearPopup(); this.fYesAction = fYesFunc || null; this.fNoAction = fNoFunc || null; this.askDesc(sAskDesc || ''); if (sYesButton) { this.yesButton(sYesButton); } if (sYesButton) { this.yesButton(sNoButton); } this.bFocusYesOnShow = Utils.isUnd(bFocusYesOnShow) ? true : !!bFocusYesOnShow; }; AskPopupView.prototype.onShowWithDelay = function () { if (this.bFocusYesOnShow) { this.yesFocus(true); } }; AskPopupView.prototype.onBuild = function () { key('tab, shift+tab, right, left', Enums.KeyState.PopupAsk, _.bind(function () { if (this.yesFocus()) { this.noFocus(true); } else { this.yesFocus(true); } return false; }, this)); key('esc', Enums.KeyState.PopupAsk, _.bind(function () { this.noClick(); return false; }, this)); }; module.exports = AskPopupView; }()); /***/ }, /* 41 */ /*!************************************!*\ !*** external "window.crossroads" ***! \************************************/ /***/ function(module, exports, __webpack_require__) { module.exports = window.crossroads; /***/ }, /* 42 */, /* 43 */ /*!**********************************!*\ !*** ./dev/Stores/Admin/Capa.js ***! \**********************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var ko = __webpack_require__(/*! ko */ 3), Enums = __webpack_require__(/*! Common/Enums */ 4), Settings = __webpack_require__(/*! Storage/Settings */ 9) ; /** * @constructor */ function CapaAdminStore() { this.additionalAccounts = ko.observable(false); this.gravatar = ko.observable(false); this.attachmentThumbnails = ko.observable(false); this.sieve = ko.observable(false); this.filters = ko.observable(false); this.themes = ko.observable(true); this.userBackground = ko.observable(false); this.openPGP = ko.observable(false); this.twoFactorAuth = ko.observable(false); this.templates = ko.observable(false); } CapaAdminStore.prototype.populate = function() { this.additionalAccounts(Settings.capa(Enums.Capa.AdditionalAccounts)); this.gravatar(Settings.capa(Enums.Capa.Gravatar)); this.attachmentThumbnails(Settings.capa(Enums.Capa.AttachmentThumbnails)); this.sieve(Settings.capa(Enums.Capa.Sieve)); this.filters(Settings.capa(Enums.Capa.Filters)); this.themes(Settings.capa(Enums.Capa.Themes)); this.userBackground(Settings.capa(Enums.Capa.UserBackground)); this.openPGP(Settings.capa(Enums.Capa.OpenPGP)); this.twoFactorAuth(Settings.capa(Enums.Capa.TwoFactor)); this.templates(Settings.capa(Enums.Capa.Templates)); }; module.exports = new CapaAdminStore(); }()); /***/ }, /* 44 */, /* 45 */, /* 46 */ /*!*************************************!*\ !*** ./dev/View/Popup/Languages.js ***! \*************************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var _ = __webpack_require__(/*! _ */ 2), ko = __webpack_require__(/*! ko */ 3), Utils = __webpack_require__(/*! Common/Utils */ 1), kn = __webpack_require__(/*! Knoin/Knoin */ 5), AbstractView = __webpack_require__(/*! Knoin/AbstractView */ 10) ; /** * @constructor * @extends AbstractView */ function LanguagesPopupView() { AbstractView.call(this, 'Popups', 'PopupsLanguages'); this.LanguageStore = __webpack_require__(/*! Stores/Language */ 32); this.exp = ko.observable(false); this.languages = ko.computed(function () { return _.map(this.LanguageStore.languages(), function (sLanguage) { return { 'key': sLanguage, 'selected': ko.observable(false), 'fullName': Utils.convertLangName(sLanguage) }; }); }, this); this.LanguageStore.language.subscribe(function () { this.resetMainLanguage(); }, this); kn.constructorEnd(this); } kn.extendAsViewModel(['View/Popup/Languages', 'PopupsLanguagesViewModel'], LanguagesPopupView); _.extend(LanguagesPopupView.prototype, AbstractView.prototype); LanguagesPopupView.prototype.languageEnName = function (sLanguage) { var sResult = Utils.convertLangName(sLanguage, true); return 'English' === sResult ? '' : sResult; }; LanguagesPopupView.prototype.resetMainLanguage = function () { var sCurrent = this.LanguageStore.language(); _.each(this.languages(), function (oItem) { oItem['selected'](oItem['key'] === sCurrent); }); }; LanguagesPopupView.prototype.onShow = function () { this.exp(true); this.resetMainLanguage(); }; LanguagesPopupView.prototype.onHide = function () { this.exp(false); }; LanguagesPopupView.prototype.changeLanguage = function (sLang) { this.LanguageStore.language(sLang); this.cancelCommand(); }; module.exports = LanguagesPopupView; }()); /***/ }, /* 47 */ /*!*****************************!*\ !*** ./dev/App/Abstract.js ***! \*****************************/ /***/ function(module, exports, __webpack_require__) { (function () { 'use strict'; var window = __webpack_require__(/*! window */ 11), _ = __webpack_require__(/*! _ */ 2), $ = __webpack_require__(/*! $ */ 12), Globals = __webpack_require__(/*! Common/Globals */ 7), Utils = __webpack_require__(/*! Common/Utils */ 1), Links = __webpack_require__(/*! Common/Links */ 13), Events = __webpack_require__(/*! Common/Events */ 28), Translator = __webpack_require__(/*! Common/Translator */ 8), Settings = __webpack_require__(/*! Storage/Settings */ 9), AbstractBoot = __webpack_require__(/*! Knoin/AbstractBoot */ 58) ; /** * @constructor * @param {RemoteStorage|AdminRemoteStorage} Remote * @extends AbstractBoot */ function AbstractApp(Remote) { AbstractBoot.call(this); this.isLocalAutocomplete = true; this.iframe = $('