mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Code refactoring (Q -> Promise)
This commit is contained in:
parent
7e4479d655
commit
1323a9ce52
10 changed files with 164 additions and 139 deletions
|
|
@ -409,7 +409,7 @@ class AppUser extends AbstractApp
|
||||||
{
|
{
|
||||||
callback(!!value);
|
callback(!!value);
|
||||||
}
|
}
|
||||||
}).fail(() => {
|
}).catch(() => {
|
||||||
if (callback)
|
if (callback)
|
||||||
{
|
{
|
||||||
_.delay(() => callback(false), 1);
|
_.delay(() => callback(false), 1);
|
||||||
|
|
@ -423,7 +423,7 @@ class AppUser extends AbstractApp
|
||||||
.abort('Folders')
|
.abort('Folders')
|
||||||
.fastResolve(true)
|
.fastResolve(true)
|
||||||
.then(() => promise)
|
.then(() => promise)
|
||||||
.fail((errorCode) => {
|
.catch((errorCode) => {
|
||||||
FolderStore.folderList.error(Translator.getNotification(errorCode, '', errorDefCode));
|
FolderStore.folderList.error(Translator.getNotification(errorCode, '', errorDefCode));
|
||||||
}).fin(() => {
|
}).fin(() => {
|
||||||
Promises.foldersReloadWithTimeout(FolderStore.foldersLoading);
|
Promises.foldersReloadWithTimeout(FolderStore.foldersLoading);
|
||||||
|
|
@ -453,14 +453,18 @@ class AppUser extends AbstractApp
|
||||||
: (oItem.users && oItem.users[0] ? oItem.users[0].userId.userid : '')
|
: (oItem.users && oItem.users[0] ? oItem.users[0].userId.userid : '')
|
||||||
;
|
;
|
||||||
|
|
||||||
if (oItem.users) {
|
if (oItem.users)
|
||||||
|
{
|
||||||
_.each(oItem.users, (item) => {
|
_.each(oItem.users, (item) => {
|
||||||
oEmail.clear();
|
if (item.userId)
|
||||||
oEmail.mailsoParse(item.userId.userid);
|
|
||||||
if (oEmail.validate())
|
|
||||||
{
|
{
|
||||||
aEmails.push(oEmail.email);
|
oEmail.clear();
|
||||||
aUsers.push(item.userId.userid);
|
oEmail.mailsoParse(item.userId.userid);
|
||||||
|
if (oEmail.validate())
|
||||||
|
{
|
||||||
|
aEmails.push(oEmail.email);
|
||||||
|
aUsers.push(item.userId.userid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
var
|
var
|
||||||
$ = require('$'),
|
$ = require('$'),
|
||||||
_ = require('_'),
|
_ = require('_'),
|
||||||
Q = require('Q'),
|
Promise = require('Promise'),
|
||||||
|
|
||||||
Consts = require('Common/Consts'),
|
Consts = require('Common/Consts'),
|
||||||
Enums = require('Common/Enums'),
|
Enums = require('Common/Enums'),
|
||||||
|
|
@ -58,151 +58,151 @@
|
||||||
|
|
||||||
AbstractAjaxPromises.prototype.ajaxRequest = function (sAction, bPost, iTimeOut, oParameters, sAdditionalGetString, fTrigger)
|
AbstractAjaxPromises.prototype.ajaxRequest = function (sAction, bPost, iTimeOut, oParameters, sAdditionalGetString, fTrigger)
|
||||||
{
|
{
|
||||||
var
|
var self = this;
|
||||||
oH = null,
|
return new Promise(function(resolve, reject) {
|
||||||
self = this,
|
|
||||||
iStart = Utils.microtime(),
|
|
||||||
oDeferred = Q.defer()
|
|
||||||
;
|
|
||||||
|
|
||||||
iTimeOut = Utils.isNormal(iTimeOut) ? iTimeOut : Consts.DEFAULT_AJAX_TIMEOUT;
|
var
|
||||||
sAdditionalGetString = Utils.isUnd(sAdditionalGetString) ? '' : Utils.pString(sAdditionalGetString);
|
oH = null,
|
||||||
|
iStart = Utils.microtime()
|
||||||
|
;
|
||||||
|
|
||||||
if (bPost)
|
iTimeOut = Utils.isNormal(iTimeOut) ? iTimeOut : Consts.DEFAULT_AJAX_TIMEOUT;
|
||||||
{
|
sAdditionalGetString = Utils.isUnd(sAdditionalGetString) ? '' : Utils.pString(sAdditionalGetString);
|
||||||
oParameters['XToken'] = Settings.appSettingsGet('token');
|
|
||||||
}
|
|
||||||
|
|
||||||
Plugins.runHook('ajax-default-request', [sAction, oParameters, sAdditionalGetString]);
|
if (bPost)
|
||||||
|
|
||||||
this.setTrigger(fTrigger, true);
|
|
||||||
|
|
||||||
oH = $.ajax({
|
|
||||||
'type': bPost ? 'POST' : 'GET',
|
|
||||||
'url': Links.ajax(sAdditionalGetString),
|
|
||||||
'async': true,
|
|
||||||
'dataType': 'json',
|
|
||||||
'data': bPost ? (oParameters || {}) : {},
|
|
||||||
'timeout': iTimeOut,
|
|
||||||
'global': true
|
|
||||||
}).always(function (oData, sTextStatus) {
|
|
||||||
|
|
||||||
var bCached = false, oErrorData = null, sType = Enums.StorageResultType.Error;
|
|
||||||
if (oData && oData['Time'])
|
|
||||||
{
|
{
|
||||||
bCached = Utils.pInt(oData['Time']) > Utils.microtime() - iStart;
|
oParameters['XToken'] = Settings.appSettingsGet('token');
|
||||||
}
|
}
|
||||||
|
|
||||||
// backward capability
|
Plugins.runHook('ajax-default-request', [sAction, oParameters, sAdditionalGetString]);
|
||||||
switch (true)
|
|
||||||
{
|
|
||||||
case 'success' === sTextStatus && oData && oData.Result && sAction === oData.Action:
|
|
||||||
sType = Enums.StorageResultType.Success;
|
|
||||||
break;
|
|
||||||
case 'abort' === sTextStatus && (!oData || !oData.__aborted__):
|
|
||||||
sType = Enums.StorageResultType.Abort;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Plugins.runHook('ajax-default-response', [sAction,
|
self.setTrigger(fTrigger, true);
|
||||||
Enums.StorageResultType.Success === sType ? oData : null, sType, bCached, oParameters]);
|
|
||||||
|
|
||||||
if ('success' === sTextStatus)
|
oH = $.ajax({
|
||||||
{
|
'type': bPost ? 'POST' : 'GET',
|
||||||
if (oData && oData.Result && sAction === oData.Action)
|
'url': Links.ajax(sAdditionalGetString),
|
||||||
|
'async': true,
|
||||||
|
'dataType': 'json',
|
||||||
|
'data': bPost ? (oParameters || {}) : {},
|
||||||
|
'timeout': iTimeOut,
|
||||||
|
'global': true
|
||||||
|
}).always(function (oData, sTextStatus) {
|
||||||
|
|
||||||
|
var bCached = false, oErrorData = null, sType = Enums.StorageResultType.Error;
|
||||||
|
if (oData && oData['Time'])
|
||||||
{
|
{
|
||||||
oData.__cached__ = bCached;
|
bCached = Utils.pInt(oData['Time']) > Utils.microtime() - iStart;
|
||||||
oDeferred.resolve(oData);
|
|
||||||
}
|
}
|
||||||
else if (oData && oData.Action)
|
|
||||||
|
// backward capability
|
||||||
|
switch (true)
|
||||||
|
{
|
||||||
|
case 'success' === sTextStatus && oData && oData.Result && sAction === oData.Action:
|
||||||
|
sType = Enums.StorageResultType.Success;
|
||||||
|
break;
|
||||||
|
case 'abort' === sTextStatus && (!oData || !oData.__aborted__):
|
||||||
|
sType = Enums.StorageResultType.Abort;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugins.runHook('ajax-default-response', [sAction,
|
||||||
|
Enums.StorageResultType.Success === sType ? oData : null, sType, bCached, oParameters]);
|
||||||
|
|
||||||
|
if ('success' === sTextStatus)
|
||||||
|
{
|
||||||
|
if (oData && oData.Result && sAction === oData.Action)
|
||||||
|
{
|
||||||
|
oData.__cached__ = bCached;
|
||||||
|
resolve(oData);
|
||||||
|
}
|
||||||
|
else if (oData && oData.Action)
|
||||||
|
{
|
||||||
|
oErrorData = oData;
|
||||||
|
reject(oData.ErrorCode ? oData.ErrorCode : Enums.Notification.AjaxFalse);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oErrorData = oData;
|
||||||
|
reject(Enums.Notification.AjaxParse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ('timeout' === sTextStatus)
|
||||||
{
|
{
|
||||||
oErrorData = oData;
|
oErrorData = oData;
|
||||||
oDeferred.reject(oData.ErrorCode ? oData.ErrorCode : Enums.Notification.AjaxFalse);
|
reject(Enums.Notification.AjaxTimeout);
|
||||||
|
}
|
||||||
|
else if ('abort' === sTextStatus)
|
||||||
|
{
|
||||||
|
if (!oData || !oData.__aborted__)
|
||||||
|
{
|
||||||
|
reject(Enums.Notification.AjaxAbort);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
oErrorData = oData;
|
oErrorData = oData;
|
||||||
oDeferred.reject(Enums.Notification.AjaxParse);
|
reject(Enums.Notification.AjaxParse);
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ('timeout' === sTextStatus)
|
|
||||||
{
|
|
||||||
oErrorData = oData;
|
|
||||||
oDeferred.reject(Enums.Notification.AjaxTimeout);
|
|
||||||
}
|
|
||||||
else if ('abort' === sTextStatus)
|
|
||||||
{
|
|
||||||
if (!oData || !oData.__aborted__)
|
|
||||||
{
|
|
||||||
oDeferred.reject(Enums.Notification.AjaxAbort);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
oErrorData = oData;
|
|
||||||
oDeferred.reject(Enums.Notification.AjaxParse);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.oRequests[sAction])
|
|
||||||
{
|
|
||||||
self.oRequests[sAction] = null;
|
|
||||||
delete self.oRequests[sAction];
|
|
||||||
}
|
|
||||||
|
|
||||||
self.setTrigger(fTrigger, false);
|
|
||||||
|
|
||||||
if (oErrorData)
|
|
||||||
{
|
|
||||||
if (-1 < Utils.inArray(oErrorData.ErrorCode, [
|
|
||||||
Enums.Notification.AuthError, Enums.Notification.AccessError,
|
|
||||||
Enums.Notification.ConnectionError, Enums.Notification.DomainNotAllowed, Enums.Notification.AccountNotAllowed,
|
|
||||||
Enums.Notification.MailServerError, Enums.Notification.UnknownNotification, Enums.Notification.UnknownError
|
|
||||||
]))
|
|
||||||
{
|
|
||||||
Globals.iAjaxErrorCount++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Enums.Notification.InvalidToken === oErrorData.ErrorCode)
|
if (self.oRequests[sAction])
|
||||||
{
|
{
|
||||||
Globals.iTokenErrorCount++;
|
self.oRequests[sAction] = null;
|
||||||
|
delete self.oRequests[sAction];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Consts.TOKEN_ERROR_LIMIT < Globals.iTokenErrorCount)
|
self.setTrigger(fTrigger, false);
|
||||||
|
|
||||||
|
if (oErrorData)
|
||||||
{
|
{
|
||||||
if (Globals.__APP__ && Globals.__APP__.loginAndLogoutReload)
|
if (-1 < Utils.inArray(oErrorData.ErrorCode, [
|
||||||
|
Enums.Notification.AuthError, Enums.Notification.AccessError,
|
||||||
|
Enums.Notification.ConnectionError, Enums.Notification.DomainNotAllowed, Enums.Notification.AccountNotAllowed,
|
||||||
|
Enums.Notification.MailServerError, Enums.Notification.UnknownNotification, Enums.Notification.UnknownError
|
||||||
|
]))
|
||||||
{
|
{
|
||||||
Globals.__APP__.loginAndLogoutReload(false, true);
|
Globals.iAjaxErrorCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Enums.Notification.InvalidToken === oErrorData.ErrorCode)
|
||||||
|
{
|
||||||
|
Globals.iTokenErrorCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Consts.TOKEN_ERROR_LIMIT < Globals.iTokenErrorCount)
|
||||||
|
{
|
||||||
|
if (Globals.__APP__ && Globals.__APP__.loginAndLogoutReload)
|
||||||
|
{
|
||||||
|
Globals.__APP__.loginAndLogoutReload(false, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oErrorData.ClearAuth || oErrorData.Logout || Consts.AJAX_ERROR_LIMIT < Globals.iAjaxErrorCount)
|
||||||
|
{
|
||||||
|
if (Globals.__APP__ && Globals.__APP__.clearClientSideToken)
|
||||||
|
{
|
||||||
|
Globals.__APP__.clearClientSideToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Globals.__APP__ && !oErrorData.ClearAuth && Globals.__APP__.loginAndLogoutReload)
|
||||||
|
{
|
||||||
|
Globals.__APP__.loginAndLogoutReload(false, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oErrorData.ClearAuth || oErrorData.Logout || Consts.AJAX_ERROR_LIMIT < Globals.iAjaxErrorCount)
|
});
|
||||||
|
|
||||||
|
if (oH)
|
||||||
|
{
|
||||||
|
if (self.oRequests[sAction])
|
||||||
{
|
{
|
||||||
if (Globals.__APP__ && Globals.__APP__.clearClientSideToken)
|
self.oRequests[sAction] = null;
|
||||||
{
|
delete self.oRequests[sAction];
|
||||||
Globals.__APP__.clearClientSideToken();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Globals.__APP__ && !oErrorData.ClearAuth && Globals.__APP__.loginAndLogoutReload)
|
|
||||||
{
|
|
||||||
Globals.__APP__.loginAndLogoutReload(false, true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
self.oRequests[sAction] = oH;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (oH)
|
|
||||||
{
|
|
||||||
if (this.oRequests[sAction])
|
|
||||||
{
|
|
||||||
this.oRequests[sAction] = null;
|
|
||||||
delete this.oRequests[sAction];
|
|
||||||
}
|
|
||||||
|
|
||||||
this.oRequests[sAction] = oH;
|
|
||||||
}
|
|
||||||
|
|
||||||
return oDeferred.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractAjaxPromises.prototype.getRequest = function (sAction, fTrigger, sAdditionalGetString, iTimeOut)
|
AbstractAjaxPromises.prototype.getRequest = function (sAction, fTrigger, sAdditionalGetString, iTimeOut)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
var
|
var
|
||||||
_ = require('_'),
|
_ = require('_'),
|
||||||
Q = require('Q'),
|
Promise = require('Promise'),
|
||||||
|
|
||||||
Utils = require('Common/Utils')
|
Utils = require('Common/Utils')
|
||||||
;
|
;
|
||||||
|
|
@ -26,16 +26,12 @@
|
||||||
|
|
||||||
AbstractBasicPromises.prototype.fastResolve = function (mData)
|
AbstractBasicPromises.prototype.fastResolve = function (mData)
|
||||||
{
|
{
|
||||||
var oDeferred = Q.defer();
|
return Promise.resolve(mData);
|
||||||
oDeferred.resolve(mData);
|
|
||||||
return oDeferred.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractBasicPromises.prototype.fastReject = function (mData)
|
AbstractBasicPromises.prototype.fastReject = function (mData)
|
||||||
{
|
{
|
||||||
var oDeferred = Q.defer();
|
return Promise.reject(mData);
|
||||||
oDeferred.reject(mData);
|
|
||||||
return oDeferred.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractBasicPromises.prototype.setTrigger = function (mTrigger, bValue)
|
AbstractBasicPromises.prototype.setTrigger = function (mTrigger, bValue)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
kn = require('Knoin/Knoin'),
|
kn = require('Knoin/Knoin'),
|
||||||
|
|
||||||
Translator = require('Common/Translator'),
|
Translator = require('Common/Translator'),
|
||||||
|
Settings = require('Storage/Settings'),
|
||||||
|
|
||||||
Utils = require('Common/Utils')
|
Utils = require('Common/Utils')
|
||||||
;
|
;
|
||||||
|
|
@ -237,6 +238,23 @@
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PgpUserStore.prototype.findKeyExternal = function (sEmail, fCallback)
|
||||||
|
{
|
||||||
|
if (this.openpgp.HKP && Settings.appSettingsGet('openpgpPublicKeyServer'))
|
||||||
|
{
|
||||||
|
var oHkp = new this.openpgp.HKP(Settings.appSettingsGet('openpgpPublicKeyServer').replace(/\/$/, ''));
|
||||||
|
oHkp.lookup({query: sEmail}).then(function(sKey) {
|
||||||
|
fCallback(sKey);
|
||||||
|
}, function() {
|
||||||
|
fCallback(null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fCallback(null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
PgpUserStore.prototype.verifyMessage = function (oMessage, fCallback)
|
PgpUserStore.prototype.verifyMessage = function (oMessage, fCallback)
|
||||||
{
|
{
|
||||||
var oValid = null, aResult = [], aPublicKeys = [], aSigningKeyIds = [];
|
var oValid = null, aResult = [], aPublicKeys = [], aSigningKeyIds = [];
|
||||||
|
|
@ -245,6 +263,10 @@
|
||||||
aSigningKeyIds = oMessage.getSigningKeyIds();
|
aSigningKeyIds = oMessage.getSigningKeyIds();
|
||||||
if (aSigningKeyIds && 0 < aSigningKeyIds.length)
|
if (aSigningKeyIds && 0 < aSigningKeyIds.length)
|
||||||
{
|
{
|
||||||
|
// this.findKeyExternal('support@rainloop.net', function(key) {
|
||||||
|
// console.log(key);
|
||||||
|
// });
|
||||||
|
|
||||||
aPublicKeys = this.findPublicKeysBySigningKeyIds(aSigningKeyIds);
|
aPublicKeys = this.findPublicKeysBySigningKeyIds(aSigningKeyIds);
|
||||||
if (aPublicKeys && 0 < aPublicKeys.length)
|
if (aPublicKeys && 0 < aPublicKeys.length)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1078,7 +1078,7 @@
|
||||||
{
|
{
|
||||||
self.downloadAsZipError(true);
|
self.downloadAsZipError(true);
|
||||||
}
|
}
|
||||||
}).fail(function () {
|
}).catch(function () {
|
||||||
self.downloadAsZipError(true);
|
self.downloadAsZipError(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -1102,7 +1102,7 @@
|
||||||
{
|
{
|
||||||
self.saveToOwnCloudError(true);
|
self.saveToOwnCloudError(true);
|
||||||
}
|
}
|
||||||
}).fail(function () {
|
}).catch(function () {
|
||||||
self.saveToOwnCloudError(true);
|
self.saveToOwnCloudError(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -1159,7 +1159,7 @@
|
||||||
self.saveToDropboxError(true);
|
self.saveToDropboxError(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).fail(function () {
|
}).catch(function () {
|
||||||
self.saveToDropboxError(true);
|
self.saveToDropboxError(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,6 @@ cfg.paths.js = {
|
||||||
'vendors/knockout-sortable/knockout-sortable.min.js',
|
'vendors/knockout-sortable/knockout-sortable.min.js',
|
||||||
'vendors/ssm/ssm.min.js',
|
'vendors/ssm/ssm.min.js',
|
||||||
'vendors/jua/jua.min.js',
|
'vendors/jua/jua.min.js',
|
||||||
'vendors/Q/q.min.js',
|
|
||||||
'vendors/opentip/opentip-jquery.min.js',
|
'vendors/opentip/opentip-jquery.min.js',
|
||||||
'vendors/Autolinker/Autolinker.min.js',
|
'vendors/Autolinker/Autolinker.min.js',
|
||||||
'vendors/lightGallery/dist/js/lightgallery.min.js',
|
'vendors/lightGallery/dist/js/lightgallery.min.js',
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "RainLoop",
|
"name": "RainLoop",
|
||||||
"title": "RainLoop Webmail",
|
"title": "RainLoop Webmail",
|
||||||
"version": "1.10.1",
|
"version": "1.10.1",
|
||||||
"release": "117",
|
"release": "118",
|
||||||
"ownCloudPackageVersion": "4.17",
|
"ownCloudPackageVersion": "4.17",
|
||||||
"description": "Simple, modern & fast web-based email client",
|
"description": "Simple, modern & fast web-based email client",
|
||||||
"homepage": "http://rainloop.net",
|
"homepage": "http://rainloop.net",
|
||||||
|
|
|
||||||
|
|
@ -1478,7 +1478,8 @@ class Actions
|
||||||
'languages' => $this->GetLanguages(false),
|
'languages' => $this->GetLanguages(false),
|
||||||
'languagesAdmin' => $this->GetLanguages(true),
|
'languagesAdmin' => $this->GetLanguages(true),
|
||||||
'attachmentsActions' => $aAttachmentsActions,
|
'attachmentsActions' => $aAttachmentsActions,
|
||||||
'rsaPublicKey' => $sRsaPublicKey
|
'rsaPublicKey' => $sRsaPublicKey,
|
||||||
|
'openpgpPublicKeyServer' => $oConfig->Get('security', 'openpgp_public_key_server', '')
|
||||||
), $bAdmin ? array(
|
), $bAdmin ? array(
|
||||||
'adminPath' => \strtolower($oConfig->Get('security', 'admin_panel_key', 'admin')),
|
'adminPath' => \strtolower($oConfig->Get('security', 'admin_panel_key', 'admin')),
|
||||||
'allowAdminPanel' => (bool) $oConfig->Get('security', 'allow_admin_panel', true),
|
'allowAdminPanel' => (bool) $oConfig->Get('security', 'allow_admin_panel', true),
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,10 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
|
|
||||||
'custom_server_signature' => array('RainLoop'),
|
'custom_server_signature' => array('RainLoop'),
|
||||||
'x_frame_options_header' => array(''),
|
'x_frame_options_header' => array(''),
|
||||||
|
|
||||||
'openpgp' => array(false),
|
'openpgp' => array(false),
|
||||||
|
'openpgp_public_key_server' => array(''),
|
||||||
|
|
||||||
'use_rsa_encryption' => array(false),
|
'use_rsa_encryption' => array(false),
|
||||||
'admin_login' => array('admin', 'Login and password for web admin panel'),
|
'admin_login' => array('admin', 'Login and password for web admin panel'),
|
||||||
'admin_password' => array('12345'),
|
'admin_password' => array('12345'),
|
||||||
|
|
@ -357,7 +360,7 @@ Enables caching in the system'),
|
||||||
|
|
||||||
'index' => array('v1', 'Additional caching key. If changed, cache is purged'),
|
'index' => array('v1', 'Additional caching key. If changed, cache is purged'),
|
||||||
|
|
||||||
'fast_cache_driver' => array('files', 'Can be: files, APC, memcache, redis'),
|
'fast_cache_driver' => array('files', 'Can be: files, APC, memcache, redis (beta)'),
|
||||||
'fast_cache_index' => array('v1', 'Additional caching key. If changed, fast cache is purged'),
|
'fast_cache_index' => array('v1', 'Additional caching key. If changed, fast cache is purged'),
|
||||||
|
|
||||||
'http' => array(true, 'Browser-level cache. If enabled, caching is maintainted without using files'),
|
'http' => array(true, 'Browser-level cache. If enabled, caching is maintainted without using files'),
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ module.exports = {
|
||||||
'ssm': 'window.ssm',
|
'ssm': 'window.ssm',
|
||||||
'key': 'window.key',
|
'key': 'window.key',
|
||||||
'_': 'window._',
|
'_': 'window._',
|
||||||
'Q': 'window.Q',
|
'Promise': 'window.Promise',
|
||||||
'$': 'window.jQuery'
|
'$': 'window.jQuery'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue