mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-06 16:07:03 +03:00
Small fixes and code refactoring
This commit is contained in:
parent
e6c712862d
commit
1a85330770
67 changed files with 413 additions and 181 deletions
|
|
@ -138,7 +138,17 @@
|
||||||
return sResult;
|
return sResult;
|
||||||
};
|
};
|
||||||
|
|
||||||
HtmlEditor.prototype.modeToggle = function (bPlain)
|
/**
|
||||||
|
* @param {boolean=} bWrapIsHtml = false
|
||||||
|
* @param {boolean=} bClearSignatureSigns = false
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
HtmlEditor.prototype.getDataWithHtmlMark = function (bWrapIsHtml, bClearSignatureSigns)
|
||||||
|
{
|
||||||
|
return (this.isHtml() ? ':HTML:' : '') + this.getData(bWrapIsHtml, bClearSignatureSigns);
|
||||||
|
};
|
||||||
|
|
||||||
|
HtmlEditor.prototype.modeToggle = function (bPlain, bResize)
|
||||||
{
|
{
|
||||||
if (this.editor)
|
if (this.editor)
|
||||||
{
|
{
|
||||||
|
|
@ -159,7 +169,22 @@
|
||||||
}
|
}
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
|
|
||||||
this.resize();
|
if (bResize)
|
||||||
|
{
|
||||||
|
this.resize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
HtmlEditor.prototype.setHtmlOrPlain = function (sText, bFocus)
|
||||||
|
{
|
||||||
|
if (':HTML:' === sText.substr(0, 6))
|
||||||
|
{
|
||||||
|
this.setHtml(sText.substr(6), bFocus);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.setPlain(sText, bFocus);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -205,7 +230,7 @@
|
||||||
|
|
||||||
HtmlEditor.prototype.init = function ()
|
HtmlEditor.prototype.init = function ()
|
||||||
{
|
{
|
||||||
if (this.$element && this.$element[0])
|
if (this.$element && this.$element[0] && !this.editor)
|
||||||
{
|
{
|
||||||
var
|
var
|
||||||
self = this,
|
self = this,
|
||||||
|
|
@ -332,6 +357,16 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
HtmlEditor.prototype.setReadOnly = function (bValue)
|
||||||
|
{
|
||||||
|
if (this.editor)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
this.editor.setReadOnly(!!bValue);
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
HtmlEditor.prototype.clear = function (bFocus)
|
HtmlEditor.prototype.clear = function (bFocus)
|
||||||
{
|
{
|
||||||
this.setHtml('', bFocus);
|
this.setHtml('', bFocus);
|
||||||
|
|
|
||||||
|
|
@ -548,6 +548,7 @@
|
||||||
*/
|
*/
|
||||||
Utils.delegateRun = function (oObject, sMethodName, aParameters, nDelay)
|
Utils.delegateRun = function (oObject, sMethodName, aParameters, nDelay)
|
||||||
{
|
{
|
||||||
|
// window.console.log('->' + sMethodName); // TODO
|
||||||
if (oObject && oObject[sMethodName])
|
if (oObject && oObject[sMethodName])
|
||||||
{
|
{
|
||||||
nDelay = Utils.pInt(nDelay);
|
nDelay = Utils.pInt(nDelay);
|
||||||
|
|
|
||||||
23
dev/External/ko.js
vendored
23
dev/External/ko.js
vendored
|
|
@ -656,9 +656,9 @@
|
||||||
fAllBindings = fAllBindingsAccessor(),
|
fAllBindings = fAllBindingsAccessor(),
|
||||||
fAutoCompleteSource = fAllBindings['autoCompleteSource'] || null,
|
fAutoCompleteSource = fAllBindings['autoCompleteSource'] || null,
|
||||||
fFocusCallback = function (bValue) {
|
fFocusCallback = function (bValue) {
|
||||||
if (fValue && fValue.focusTrigger)
|
if (fValue && fValue.focused)
|
||||||
{
|
{
|
||||||
fValue.focusTrigger(bValue);
|
fValue.focused(!!bValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
@ -693,14 +693,20 @@
|
||||||
fValue(oEvent.target.value);
|
fValue(oEvent.target.value);
|
||||||
}, this)
|
}, this)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (fValue && fValue.focused && fValue.focused.subscribe)
|
||||||
|
{
|
||||||
|
fValue.focused.subscribe(function (bValue) {
|
||||||
|
$oEl.inputosaurus(!!bValue ? 'focus' : 'blur');
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'update': function (oElement, fValueAccessor, fAllBindingsAccessor) {
|
'update': function (oElement, fValueAccessor) {
|
||||||
|
|
||||||
var
|
var
|
||||||
$oEl = $(oElement),
|
$oEl = $(oElement),
|
||||||
fAllValueFunc = fAllBindingsAccessor(),
|
fValue = fValueAccessor(),
|
||||||
fEmailsTagsFilter = fAllValueFunc['emailsTagsFilter'] || null,
|
sValue = ko.unwrap(fValue)
|
||||||
sValue = ko.unwrap(fValueAccessor())
|
|
||||||
;
|
;
|
||||||
|
|
||||||
if ($oEl.data('EmailsTagsValue') !== sValue)
|
if ($oEl.data('EmailsTagsValue') !== sValue)
|
||||||
|
|
@ -709,11 +715,6 @@
|
||||||
$oEl.data('EmailsTagsValue', sValue);
|
$oEl.data('EmailsTagsValue', sValue);
|
||||||
$oEl.inputosaurus('refresh');
|
$oEl.inputosaurus('refresh');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fEmailsTagsFilter && ko.unwrap(fEmailsTagsFilter))
|
|
||||||
{
|
|
||||||
$oEl.inputosaurus('focus');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -170,11 +170,20 @@
|
||||||
Globals.popupVisibilityNames.push(this.viewModelName);
|
Globals.popupVisibilityNames.push(this.viewModelName);
|
||||||
oViewModel.viewModelDom.css('z-index', 3000 + Globals.popupVisibilityNames().length + 10);
|
oViewModel.viewModelDom.css('z-index', 3000 + Globals.popupVisibilityNames().length + 10);
|
||||||
|
|
||||||
Utils.delegateRun(this, 'onFocus', [], 500);
|
// Utils.delegateRun(this, 'onShow'); // moved to showScreenPopup function (for parameters)
|
||||||
|
|
||||||
|
if (this.onShowTrigger)
|
||||||
|
{
|
||||||
|
this.onShowTrigger(!this.onShowTrigger());
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils.delegateRun(this, 'onShowWithDelay', [], 500);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Utils.delegateRun(this, 'onHide');
|
Utils.delegateRun(this, 'onHide');
|
||||||
|
Utils.delegateRun(this, 'onHideWithDelay', [], 500);
|
||||||
|
|
||||||
if (this.onHideTrigger)
|
if (this.onHideTrigger)
|
||||||
{
|
{
|
||||||
this.onHideTrigger(!this.onHideTrigger());
|
this.onHideTrigger(!this.onHideTrigger());
|
||||||
|
|
@ -251,11 +260,8 @@
|
||||||
if (ViewModelClassToShow.__vm && ViewModelClassToShow.__dom)
|
if (ViewModelClassToShow.__vm && ViewModelClassToShow.__dom)
|
||||||
{
|
{
|
||||||
ViewModelClassToShow.__vm.modalVisibility(true);
|
ViewModelClassToShow.__vm.modalVisibility(true);
|
||||||
|
|
||||||
Utils.delegateRun(ViewModelClassToShow.__vm, 'onShow', aParameters || []);
|
Utils.delegateRun(ViewModelClassToShow.__vm, 'onShow', aParameters || []);
|
||||||
if (ViewModelClassToShow.__vm.onShowTrigger)
|
|
||||||
{
|
|
||||||
ViewModelClassToShow.__vm.onShowTrigger(!ViewModelClassToShow.__vm.onShowTrigger());
|
|
||||||
}
|
|
||||||
|
|
||||||
_.each(ViewModelClassToShow.__names, function (sName) {
|
_.each(ViewModelClassToShow.__names, function (sName) {
|
||||||
Plugins.runHook('view-model-on-show', [sName, ViewModelClassToShow.__vm, aParameters || []]);
|
Plugins.runHook('view-model-on-show', [sName, ViewModelClassToShow.__vm, aParameters || []]);
|
||||||
|
|
@ -325,6 +331,7 @@
|
||||||
if (self.oCurrentScreen)
|
if (self.oCurrentScreen)
|
||||||
{
|
{
|
||||||
Utils.delegateRun(self.oCurrentScreen, 'onHide');
|
Utils.delegateRun(self.oCurrentScreen, 'onHide');
|
||||||
|
Utils.delegateRun(self.oCurrentScreen, 'onHideWithDelay', [], 500);
|
||||||
|
|
||||||
if (self.oCurrentScreen.onHideTrigger)
|
if (self.oCurrentScreen.onHideTrigger)
|
||||||
{
|
{
|
||||||
|
|
@ -340,7 +347,9 @@
|
||||||
{
|
{
|
||||||
ViewModelClass.__dom.hide();
|
ViewModelClass.__dom.hide();
|
||||||
ViewModelClass.__vm.viewModelVisibility(false);
|
ViewModelClass.__vm.viewModelVisibility(false);
|
||||||
|
|
||||||
Utils.delegateRun(ViewModelClass.__vm, 'onHide');
|
Utils.delegateRun(ViewModelClass.__vm, 'onHide');
|
||||||
|
Utils.delegateRun(ViewModelClass.__vm, 'onHideWithDelay', [], 500);
|
||||||
|
|
||||||
if (ViewModelClass.__vm.onHideTrigger)
|
if (ViewModelClass.__vm.onHideTrigger)
|
||||||
{
|
{
|
||||||
|
|
@ -382,7 +391,7 @@
|
||||||
ViewModelClass.__vm.onShowTrigger(!ViewModelClass.__vm.onShowTrigger());
|
ViewModelClass.__vm.onShowTrigger(!ViewModelClass.__vm.onShowTrigger());
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils.delegateRun(ViewModelClass.__vm, 'onFocus', [], 200);
|
Utils.delegateRun(ViewModelClass.__vm, 'onShowWithDelay', [], 200);
|
||||||
|
|
||||||
_.each(ViewModelClass.__names, function (sName) {
|
_.each(ViewModelClass.__names, function (sName) {
|
||||||
Plugins.runHook('view-model-on-show', [sName, ViewModelClass.__vm]);
|
Plugins.runHook('view-model-on-show', [sName, ViewModelClass.__vm]);
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@
|
||||||
{
|
{
|
||||||
self.oCurrentSubScreen.viewModelDom.show();
|
self.oCurrentSubScreen.viewModelDom.show();
|
||||||
Utils.delegateRun(self.oCurrentSubScreen, 'onShow');
|
Utils.delegateRun(self.oCurrentSubScreen, 'onShow');
|
||||||
Utils.delegateRun(self.oCurrentSubScreen, 'onFocus', [], 200);
|
Utils.delegateRun(self.oCurrentSubScreen, 'onShowWithDelay', [], 200);
|
||||||
|
|
||||||
_.each(self.menu(), function (oItem) {
|
_.each(self.menu(), function (oItem) {
|
||||||
oItem.selected(oSettingsScreen && oSettingsScreen.__rlSettingsData && oItem.route === oSettingsScreen.__rlSettingsData.Route);
|
oItem.selected(oSettingsScreen && oSettingsScreen.__rlSettingsData && oItem.route === oSettingsScreen.__rlSettingsData.Route);
|
||||||
|
|
|
||||||
|
|
@ -24,15 +24,60 @@
|
||||||
this.secreting = ko.observable(false);
|
this.secreting = ko.observable(false);
|
||||||
|
|
||||||
this.viewUser = ko.observable('');
|
this.viewUser = ko.observable('');
|
||||||
this.viewEnable = ko.observable(false);
|
|
||||||
this.viewEnable.subs = true;
|
|
||||||
this.twoFactorStatus = ko.observable(false);
|
this.twoFactorStatus = ko.observable(false);
|
||||||
|
|
||||||
|
this.twoFactorTested = ko.observable(false);
|
||||||
|
|
||||||
this.viewSecret = ko.observable('');
|
this.viewSecret = ko.observable('');
|
||||||
this.viewBackupCodes = ko.observable('');
|
this.viewBackupCodes = ko.observable('');
|
||||||
this.viewUrl = ko.observable('');
|
this.viewUrl = ko.observable('');
|
||||||
|
|
||||||
this.bFirst = true;
|
this.viewEnable_ = ko.observable(false);
|
||||||
|
|
||||||
|
this.viewEnable = ko.computed({
|
||||||
|
'owner': this,
|
||||||
|
'read': this.viewEnable_,
|
||||||
|
'write': function (bValue) {
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
bValue = !!bValue;
|
||||||
|
|
||||||
|
if (bValue && this.twoFactorTested())
|
||||||
|
{
|
||||||
|
this.viewEnable_(bValue);
|
||||||
|
|
||||||
|
Remote.enableTwoFactor(function (sResult, oData) {
|
||||||
|
if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result)
|
||||||
|
{
|
||||||
|
self.viewEnable_(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!bValue)
|
||||||
|
{
|
||||||
|
this.viewEnable_(bValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
Remote.enableTwoFactor(function (sResult, oData) {
|
||||||
|
if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result)
|
||||||
|
{
|
||||||
|
self.viewEnable_(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.viewTwoFactorEnableTooltip = ko.computed(function () {
|
||||||
|
Translator.trigger();
|
||||||
|
return this.twoFactorTested() || this.viewEnable_() ? '' :
|
||||||
|
Translator.i18n('SETTINGS_SECURITY/TWO_FACTOR_SECRET_TEST_BEFORE_DESC');
|
||||||
|
}, this);
|
||||||
|
|
||||||
this.viewTwoFactorStatus = ko.computed(function () {
|
this.viewTwoFactorStatus = ko.computed(function () {
|
||||||
Translator.trigger();
|
Translator.trigger();
|
||||||
|
|
@ -43,14 +88,18 @@
|
||||||
);
|
);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
this.twoFactorAllowedEnable = ko.computed(function () {
|
||||||
|
return this.viewEnable() || this.twoFactorTested();
|
||||||
|
}, this);
|
||||||
|
|
||||||
this.onResult = _.bind(this.onResult, this);
|
this.onResult = _.bind(this.onResult, this);
|
||||||
this.onSecretResult = _.bind(this.onSecretResult, this);
|
this.onShowSecretResult = _.bind(this.onShowSecretResult, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
SecurityUserSettings.prototype.showSecret = function ()
|
SecurityUserSettings.prototype.showSecret = function ()
|
||||||
{
|
{
|
||||||
this.secreting(true);
|
this.secreting(true);
|
||||||
Remote.showTwoFactorSecret(this.onSecretResult);
|
Remote.showTwoFactorSecret(this.onShowSecretResult);
|
||||||
};
|
};
|
||||||
|
|
||||||
SecurityUserSettings.prototype.hideSecret = function ()
|
SecurityUserSettings.prototype.hideSecret = function ()
|
||||||
|
|
@ -68,7 +117,7 @@
|
||||||
|
|
||||||
SecurityUserSettings.prototype.testTwoFactor = function ()
|
SecurityUserSettings.prototype.testTwoFactor = function ()
|
||||||
{
|
{
|
||||||
require('Knoin/Knoin').showScreenPopup(require('View/Popup/TwoFactorTest'));
|
require('Knoin/Knoin').showScreenPopup(require('View/Popup/TwoFactorTest'), [this.twoFactorTested]);
|
||||||
};
|
};
|
||||||
|
|
||||||
SecurityUserSettings.prototype.clearTwoFactor = function ()
|
SecurityUserSettings.prototype.clearTwoFactor = function ()
|
||||||
|
|
@ -77,6 +126,8 @@
|
||||||
this.viewBackupCodes('');
|
this.viewBackupCodes('');
|
||||||
this.viewUrl('');
|
this.viewUrl('');
|
||||||
|
|
||||||
|
this.twoFactorTested(false);
|
||||||
|
|
||||||
this.clearing(true);
|
this.clearing(true);
|
||||||
Remote.clearTwoFactor(this.onResult);
|
Remote.clearTwoFactor(this.onResult);
|
||||||
};
|
};
|
||||||
|
|
@ -96,8 +147,9 @@
|
||||||
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
|
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
|
||||||
{
|
{
|
||||||
this.viewUser(Utils.pString(oData.Result.User));
|
this.viewUser(Utils.pString(oData.Result.User));
|
||||||
this.viewEnable(!!oData.Result.Enable);
|
this.viewEnable_(!!oData.Result.Enable);
|
||||||
this.twoFactorStatus(!!oData.Result.IsSet);
|
this.twoFactorStatus(!!oData.Result.IsSet);
|
||||||
|
this.twoFactorTested(!!oData.Result.Tested);
|
||||||
|
|
||||||
this.viewSecret(Utils.pString(oData.Result.Secret));
|
this.viewSecret(Utils.pString(oData.Result.Secret));
|
||||||
this.viewBackupCodes(Utils.pString(oData.Result.BackupCodes).replace(/[\s]+/g, ' '));
|
this.viewBackupCodes(Utils.pString(oData.Result.BackupCodes).replace(/[\s]+/g, ' '));
|
||||||
|
|
@ -106,36 +158,17 @@
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.viewUser('');
|
this.viewUser('');
|
||||||
this.viewEnable(false);
|
this.viewEnable_(false);
|
||||||
this.twoFactorStatus(false);
|
this.twoFactorStatus(false);
|
||||||
|
this.twoFactorTested(false);
|
||||||
|
|
||||||
this.viewSecret('');
|
this.viewSecret('');
|
||||||
this.viewBackupCodes('');
|
this.viewBackupCodes('');
|
||||||
this.viewUrl('');
|
this.viewUrl('');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.bFirst)
|
|
||||||
{
|
|
||||||
this.bFirst = false;
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
this.viewEnable.subscribe(function (bValue) {
|
|
||||||
if (this.viewEnable.subs)
|
|
||||||
{
|
|
||||||
Remote.enableTwoFactor(function (sResult, oData) {
|
|
||||||
if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result)
|
|
||||||
{
|
|
||||||
self.viewEnable.subs = false;
|
|
||||||
self.viewEnable(false);
|
|
||||||
self.viewEnable.subs = true;
|
|
||||||
}
|
|
||||||
}, bValue);
|
|
||||||
}
|
|
||||||
}, this);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
SecurityUserSettings.prototype.onSecretResult = function (sResult, oData)
|
SecurityUserSettings.prototype.onShowSecretResult = function (sResult, oData)
|
||||||
{
|
{
|
||||||
this.secreting(false);
|
this.secreting(false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
this.buzz = null;
|
this.buzz = null;
|
||||||
|
|
||||||
this.enableSoundNotification = ko.observable(true);
|
this.enableSoundNotification = ko.observable(false);
|
||||||
this.soundNotificationIsSupported = ko.observable(false);
|
this.soundNotificationIsSupported = ko.observable(false);
|
||||||
|
|
||||||
this.allowDesktopNotification = ko.observable(false);
|
this.allowDesktopNotification = ko.observable(false);
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,8 @@ html.rl-started-trigger.no-mobile .b-login-content .loginFormWrapper {
|
||||||
&.csstransitions .modal.fade {
|
&.csstransitions .modal.fade {
|
||||||
|
|
||||||
.transition(all 200ms ease-out);
|
.transition(all 200ms ease-out);
|
||||||
transform: scale(0.95);
|
/*transform: scale(0.95);*/
|
||||||
|
transform: translateY(-20px);
|
||||||
|
|
||||||
&.in {
|
&.in {
|
||||||
transform: none;
|
transform: none;
|
||||||
|
|
|
||||||
|
|
@ -303,6 +303,10 @@ html.no-rgba .modal {
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal-backdrop {
|
||||||
|
.g-ui-user-select-none();
|
||||||
|
}
|
||||||
|
|
||||||
.modal.loginContent .modal-body, .modal.loginAdminContent .modal-body {
|
.modal.loginContent .modal-body, .modal.loginAdminContent .modal-body {
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,7 @@
|
||||||
margin-left: -2px;
|
margin-left: -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.white {
|
&.white, &.icon-white {
|
||||||
|
|
||||||
border-color: #fff;
|
border-color: #fff;
|
||||||
border-top-color: #999;
|
border-top-color: #999;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
var
|
var
|
||||||
_ = require('_'),
|
_ = require('_'),
|
||||||
|
|
||||||
|
Enums = require('Common/Enums'),
|
||||||
Globals = require('Common/Globals'),
|
Globals = require('Common/Globals'),
|
||||||
|
|
||||||
kn = require('Knoin/Knoin'),
|
kn = require('Knoin/Knoin'),
|
||||||
|
|
@ -37,6 +38,39 @@
|
||||||
return '#/' + sRoute;
|
return '#/' + sRoute;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MenuSettingsAdminView.prototype.onBuild = function (oDom)
|
||||||
|
{
|
||||||
|
key('up, down', _.throttle(function (event, handler) {
|
||||||
|
|
||||||
|
var
|
||||||
|
sH = '',
|
||||||
|
iIndex = -1,
|
||||||
|
bUp = handler && 'up' === handler.shortcut,
|
||||||
|
$items = $('.b-admin-menu .e-item', oDom)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (event && $items.length)
|
||||||
|
{
|
||||||
|
iIndex = $items.index($items.filter('.selected'));
|
||||||
|
if (bUp && iIndex > 0)
|
||||||
|
{
|
||||||
|
iIndex--;
|
||||||
|
}
|
||||||
|
else if (!bUp && iIndex < $items.length - 1)
|
||||||
|
{
|
||||||
|
iIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
sH = $items.eq(iIndex).attr('href');
|
||||||
|
if (sH)
|
||||||
|
{
|
||||||
|
kn.setHash(sH, false, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 200));
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = MenuSettingsAdminView;
|
module.exports = MenuSettingsAdminView;
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
AccountPopupView.prototype.onFocus = function ()
|
AccountPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.emailFocus(true);
|
this.emailFocus(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActivatePopupView.prototype.onFocus = function ()
|
ActivatePopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
if (!this.activateProcess())
|
if (!this.activateProcess())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@
|
||||||
this.clearPopup();
|
this.clearPopup();
|
||||||
};
|
};
|
||||||
|
|
||||||
AddOpenPgpKeyPopupView.prototype.onFocus = function ()
|
AddOpenPgpKeyPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.key.focus(true);
|
this.key.focus(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@
|
||||||
this.clearPopup();
|
this.clearPopup();
|
||||||
};
|
};
|
||||||
|
|
||||||
AdvancedSearchPopupView.prototype.onFocus = function ()
|
AdvancedSearchPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.fromFocus(true);
|
this.fromFocus(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
this.bFocusYesOnShow = Utils.isUnd(bFocusYesOnShow) ? true : !!bFocusYesOnShow;
|
this.bFocusYesOnShow = Utils.isUnd(bFocusYesOnShow) ? true : !!bFocusYesOnShow;
|
||||||
};
|
};
|
||||||
|
|
||||||
AskPopupView.prototype.onFocus = function ()
|
AskPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
if (this.bFocusYesOnShow)
|
if (this.bFocusYesOnShow)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,8 @@
|
||||||
this.bFromDraft = false;
|
this.bFromDraft = false;
|
||||||
this.sReferences = '';
|
this.sReferences = '';
|
||||||
|
|
||||||
|
this.sLastFocusedField = 'to';
|
||||||
|
|
||||||
this.resizerTrigger = _.bind(this.resizerTrigger, this);
|
this.resizerTrigger = _.bind(this.resizerTrigger, this);
|
||||||
|
|
||||||
this.allowContacts = !!AppStore.contactsIsAllowed();
|
this.allowContacts = !!AppStore.contactsIsAllowed();
|
||||||
|
|
@ -93,10 +95,28 @@
|
||||||
this.identitiesDropdownTrigger = ko.observable(false);
|
this.identitiesDropdownTrigger = ko.observable(false);
|
||||||
|
|
||||||
this.to = ko.observable('');
|
this.to = ko.observable('');
|
||||||
this.to.focusTrigger = ko.observable(false);
|
this.to.focused = ko.observable(false);
|
||||||
this.cc = ko.observable('');
|
this.cc = ko.observable('');
|
||||||
|
this.cc.focused = ko.observable(false);
|
||||||
this.bcc = ko.observable('');
|
this.bcc = ko.observable('');
|
||||||
|
this.bcc.focused = ko.observable(false);
|
||||||
this.replyTo = ko.observable('');
|
this.replyTo = ko.observable('');
|
||||||
|
this.replyTo.focused = ko.observable(false);
|
||||||
|
|
||||||
|
ko.computed(function () {
|
||||||
|
switch (true)
|
||||||
|
{
|
||||||
|
case this.to.focused():
|
||||||
|
this.sLastFocusedField = 'to';
|
||||||
|
break;
|
||||||
|
case this.cc.focused():
|
||||||
|
this.sLastFocusedField = 'cc';
|
||||||
|
break;
|
||||||
|
case this.bcc.focused():
|
||||||
|
this.sLastFocusedField = 'bcc';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}, this).extend({'notify': 'always'});
|
||||||
|
|
||||||
this.subject = ko.observable('');
|
this.subject = ko.observable('');
|
||||||
this.isHtml = ko.observable(false);
|
this.isHtml = ko.observable(false);
|
||||||
|
|
@ -411,8 +431,13 @@
|
||||||
{
|
{
|
||||||
this.skipCommand();
|
this.skipCommand();
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
window.console.log(this.sLastFocusedField);
|
||||||
|
|
||||||
_.delay(function () {
|
_.delay(function () {
|
||||||
kn.showScreenPopup(require('View/Popup/Contacts'), [true]);
|
kn.showScreenPopup(require('View/Popup/Contacts'),
|
||||||
|
[true, self.sLastFocusedField]);
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1233,11 +1258,11 @@
|
||||||
this.resizerTrigger();
|
this.resizerTrigger();
|
||||||
};
|
};
|
||||||
|
|
||||||
ComposePopupView.prototype.onFocus = function ()
|
ComposePopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
if ('' === this.to())
|
if ('' === this.to())
|
||||||
{
|
{
|
||||||
this.to.focusTrigger(!this.to.focusTrigger());
|
this.to.focused(true);
|
||||||
}
|
}
|
||||||
else if (this.oEditor)
|
else if (this.oEditor)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -198,12 +198,12 @@
|
||||||
}, this));
|
}, this));
|
||||||
};
|
};
|
||||||
|
|
||||||
ComposeOpenPgpPopupView.prototype.onHide = function ()
|
ComposeOpenPgpPopupView.prototype.onHideWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.clearPopup();
|
this.clearPopup();
|
||||||
};
|
};
|
||||||
|
|
||||||
ComposeOpenPgpPopupView.prototype.onFocus = function ()
|
ComposeOpenPgpPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
if (this.sign())
|
if (this.sign())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@
|
||||||
;
|
;
|
||||||
|
|
||||||
this.bBackToCompose = false;
|
this.bBackToCompose = false;
|
||||||
|
this.sLastComposeFocusedField = '';
|
||||||
|
|
||||||
this.allowContactsSync = Data.allowContactsSync;
|
this.allowContactsSync = Data.allowContactsSync;
|
||||||
this.enableContactsSync = Data.enableContactsSync;
|
this.enableContactsSync = Data.enableContactsSync;
|
||||||
|
|
@ -236,7 +237,15 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
this.newMessageCommand = Utils.createCommand(this, function () {
|
this.newMessageCommand = Utils.createCommand(this, function () {
|
||||||
var aC = this.contactsCheckedOrSelected(), aE = [];
|
var
|
||||||
|
aE = [],
|
||||||
|
aC = this.contactsCheckedOrSelected(),
|
||||||
|
aToEmails = null,
|
||||||
|
aCcEmails = null,
|
||||||
|
aBccEmails = null,
|
||||||
|
aReplyToEmails = null
|
||||||
|
;
|
||||||
|
|
||||||
if (Utils.isNonEmptyArray(aC))
|
if (Utils.isNonEmptyArray(aC))
|
||||||
{
|
{
|
||||||
aE = _.map(aC, function (oItem) {
|
aE = _.map(aC, function (oItem) {
|
||||||
|
|
@ -265,8 +274,25 @@
|
||||||
|
|
||||||
kn.hideScreenPopup(require('View/Popup/Contacts'));
|
kn.hideScreenPopup(require('View/Popup/Contacts'));
|
||||||
|
|
||||||
|
switch (self.sLastComposeFocusedField)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case 'to':
|
||||||
|
aToEmails = aE;
|
||||||
|
break;
|
||||||
|
case 'cc':
|
||||||
|
aCcEmails = aE;
|
||||||
|
break;
|
||||||
|
case 'bcc':
|
||||||
|
aBccEmails = aE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.sLastComposeFocusedField = '';
|
||||||
|
|
||||||
_.delay(function () {
|
_.delay(function () {
|
||||||
kn.showScreenPopup(require('View/Popup/Compose'), [Enums.ComposeType.Empty, null, aE]);
|
kn.showScreenPopup(require('View/Popup/Compose'),
|
||||||
|
[Enums.ComposeType.Empty, null, aToEmails, aCcEmails, aBccEmails]);
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -721,9 +747,10 @@
|
||||||
this.initUploader();
|
this.initUploader();
|
||||||
};
|
};
|
||||||
|
|
||||||
ContactsPopupView.prototype.onShow = function (bBackToCompose)
|
ContactsPopupView.prototype.onShow = function (bBackToCompose, sLastComposeFocusedField)
|
||||||
{
|
{
|
||||||
this.bBackToCompose = Utils.isUnd(bBackToCompose) ? false : !!bBackToCompose;
|
this.bBackToCompose = Utils.isUnd(bBackToCompose) ? false : !!bBackToCompose;
|
||||||
|
this.sLastComposeFocusedField = Utils.isUnd(sLastComposeFocusedField) ? '' : sLastComposeFocusedField;
|
||||||
|
|
||||||
kn.routeOff();
|
kn.routeOff();
|
||||||
this.reloadContactList(true);
|
this.reloadContactList(true);
|
||||||
|
|
@ -732,6 +759,7 @@
|
||||||
ContactsPopupView.prototype.onHide = function ()
|
ContactsPopupView.prototype.onHide = function ()
|
||||||
{
|
{
|
||||||
kn.routeOn();
|
kn.routeOn();
|
||||||
|
|
||||||
this.currentContact(null);
|
this.currentContact(null);
|
||||||
this.emptySelection(true);
|
this.emptySelection(true);
|
||||||
this.search('');
|
this.search('');
|
||||||
|
|
@ -740,6 +768,8 @@
|
||||||
Utils.delegateRunOnDestroy(this.contacts());
|
Utils.delegateRunOnDestroy(this.contacts());
|
||||||
this.contacts([]);
|
this.contacts([]);
|
||||||
|
|
||||||
|
this.sLastComposeFocusedField = '';
|
||||||
|
|
||||||
if (this.bBackToCompose)
|
if (this.bBackToCompose)
|
||||||
{
|
{
|
||||||
this.bBackToCompose = false;
|
this.bBackToCompose = false;
|
||||||
|
|
|
||||||
|
|
@ -410,7 +410,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
DomainPopupView.prototype.onFocus = function ()
|
DomainPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
if ('' === this.name())
|
if ('' === this.name())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -184,7 +184,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
FilterPopupView.prototype.onFocus = function ()
|
FilterPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
if (this.isNew() && this.filter())
|
if (this.isNew() && this.filter())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@
|
||||||
this.clearPopup();
|
this.clearPopup();
|
||||||
};
|
};
|
||||||
|
|
||||||
FolderCreateView.prototype.onFocus = function ()
|
FolderCreateView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.folderName.focused(true);
|
this.folderName.focused(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,31 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
IdentityPopupView.prototype.populateSignatureFromEditor = function ()
|
||||||
|
{
|
||||||
|
if (this.editor)
|
||||||
|
{
|
||||||
|
this.signature(this.editor.getDataWithHtmlMark());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
IdentityPopupView.prototype.editorSetSignature = function (sSignature)
|
||||||
|
{
|
||||||
|
if (!this.editor && this.signatureDom())
|
||||||
|
{
|
||||||
|
var self = this;
|
||||||
|
this.editor = new HtmlEditor(self.signatureDom(), function () {
|
||||||
|
self.populateSignatureFromEditor();
|
||||||
|
}, function () {
|
||||||
|
self.editor.setHtmlOrPlain(sSignature);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.editor.setHtmlOrPlain(sSignature);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {?IdentityModel} oIdentity
|
* @param {?IdentityModel} oIdentity
|
||||||
*/
|
*/
|
||||||
|
|
@ -189,60 +214,23 @@
|
||||||
{
|
{
|
||||||
this.id = Utils.fakeMd5();
|
this.id = Utils.fakeMd5();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.editorSetSignature(this.signature());
|
||||||
};
|
};
|
||||||
|
|
||||||
IdentityPopupView.prototype.onHide = function ()
|
IdentityPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.clearPopup();
|
|
||||||
};
|
|
||||||
|
|
||||||
IdentityPopupView.prototype.setSignature = function (sSignature)
|
|
||||||
{
|
|
||||||
if (this.editor)
|
|
||||||
{
|
|
||||||
if (':HTML:' === sSignature.substr(0, 6))
|
|
||||||
{
|
|
||||||
this.editor.setHtml(sSignature.substr(6), false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.editor.setPlain(sSignature, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
IdentityPopupView.prototype.populateSignatureFromEditor = function ()
|
|
||||||
{
|
|
||||||
if (this.editor)
|
|
||||||
{
|
|
||||||
this.signature(
|
|
||||||
(this.editor.isHtml() ? ':HTML:' : '') + this.editor.getData()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
IdentityPopupView.prototype.onFocus = function ()
|
|
||||||
{
|
|
||||||
if (!this.editor && this.signatureDom())
|
|
||||||
{
|
|
||||||
var self = this;
|
|
||||||
this.editor = new HtmlEditor(self.signatureDom(), function () {
|
|
||||||
self.populateSignatureFromEditor();
|
|
||||||
}, function () {
|
|
||||||
self.setSignature(self.signature());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.setSignature(this.signature());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.owner())
|
if (!this.owner())
|
||||||
{
|
{
|
||||||
this.email.focused(true);
|
this.email.focused(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
IdentityPopupView.prototype.onHideWithDelay = function ()
|
||||||
|
{
|
||||||
|
this.clearPopup();
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = IdentityPopupView;
|
module.exports = IdentityPopupView;
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
@ -104,7 +104,7 @@
|
||||||
this.clearPopup();
|
this.clearPopup();
|
||||||
};
|
};
|
||||||
|
|
||||||
NewOpenPgpKeyPopupView.prototype.onFocus = function ()
|
NewOpenPgpKeyPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.email.focus(true);
|
this.email.focus(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -115,22 +115,8 @@
|
||||||
|
|
||||||
if (this.editor)
|
if (this.editor)
|
||||||
{
|
{
|
||||||
this.setBody('');
|
this.editor.setPlain('', false);
|
||||||
}
|
this.editor.setReadOnly(true);
|
||||||
};
|
|
||||||
|
|
||||||
TemplatePopupView.prototype.setBody = function (sBody)
|
|
||||||
{
|
|
||||||
if (this.editor)
|
|
||||||
{
|
|
||||||
if (':HTML:' === sBody.substr(0, 6))
|
|
||||||
{
|
|
||||||
this.editor.setHtml(sBody.substr(6), false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.editor.setPlain(sBody, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -138,9 +124,7 @@
|
||||||
{
|
{
|
||||||
if (this.editor)
|
if (this.editor)
|
||||||
{
|
{
|
||||||
this.body(
|
this.body(this.editor.getDataWithHtmlMark());
|
||||||
(this.editor.isHtml() ? ':HTML:' : '') + this.editor.getData()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -152,12 +136,12 @@
|
||||||
this.editor = new HtmlEditor(self.signatureDom(), function () {
|
this.editor = new HtmlEditor(self.signatureDom(), function () {
|
||||||
self.populateBodyFromEditor();
|
self.populateBodyFromEditor();
|
||||||
}, function () {
|
}, function () {
|
||||||
self.setBody(sBody);
|
self.editor.setHtmlOrPlain(sBody);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.setBody(sBody);
|
this.editor.setHtmlOrPlain(sBody);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -212,7 +196,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TemplatePopupView.prototype.onFocus = function ()
|
TemplatePopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.name.focus(true);
|
this.name.focus(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@
|
||||||
this.code.focused = ko.observable(false);
|
this.code.focused = ko.observable(false);
|
||||||
this.code.status = ko.observable(null);
|
this.code.status = ko.observable(null);
|
||||||
|
|
||||||
|
this.koTestedTrigger = null;
|
||||||
|
|
||||||
this.testing = ko.observable(false);
|
this.testing = ko.observable(false);
|
||||||
|
|
||||||
// commands
|
// commands
|
||||||
|
|
@ -41,6 +43,11 @@
|
||||||
self.testing(false);
|
self.testing(false);
|
||||||
self.code.status(Enums.StorageResultType.Success === sResult && oData && oData.Result ? true : false);
|
self.code.status(Enums.StorageResultType.Success === sResult && oData && oData.Result ? true : false);
|
||||||
|
|
||||||
|
if (self.koTestedTrigger && self.code.status())
|
||||||
|
{
|
||||||
|
self.koTestedTrigger(true);
|
||||||
|
}
|
||||||
|
|
||||||
}, this.code());
|
}, this.code());
|
||||||
|
|
||||||
}, function () {
|
}, function () {
|
||||||
|
|
@ -59,14 +66,18 @@
|
||||||
this.code.focused(false);
|
this.code.focused(false);
|
||||||
this.code.status(null);
|
this.code.status(null);
|
||||||
this.testing(false);
|
this.testing(false);
|
||||||
|
|
||||||
|
this.koTestedTrigger = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
TwoFactorTestPopupView.prototype.onShow = function ()
|
TwoFactorTestPopupView.prototype.onShow = function (koTestedTrigger)
|
||||||
{
|
{
|
||||||
this.clearPopup();
|
this.clearPopup();
|
||||||
|
|
||||||
|
this.koTestedTrigger = koTestedTrigger;
|
||||||
};
|
};
|
||||||
|
|
||||||
TwoFactorTestPopupView.prototype.onFocus = function ()
|
TwoFactorTestPopupView.prototype.onShowWithDelay = function ()
|
||||||
{
|
{
|
||||||
this.code.focused(true);
|
this.code.focused(true);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -252,10 +252,19 @@
|
||||||
this.selector.scrollToTop();
|
this.selector.scrollToTop();
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
Data.messageListEndFolder.subscribe(function (sFolder) {
|
||||||
|
var oMessage = Data.message();
|
||||||
|
if (oMessage && sFolder && sFolder !== oMessage.folderFullNameRaw)
|
||||||
|
{
|
||||||
|
Data.message(null);
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
SettingsStore.layout.subscribe(function (mValue) {
|
SettingsStore.layout.subscribe(function (mValue) {
|
||||||
this.selector.autoSelect(Enums.Layout.NoPreview !== mValue);
|
this.selector.autoSelect(Enums.Layout.NoPreview !== mValue);
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
|
||||||
SettingsStore.layout.valueHasMutated();
|
SettingsStore.layout.valueHasMutated();
|
||||||
|
|
||||||
Events
|
Events
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@
|
||||||
|
|
||||||
var
|
var
|
||||||
_ = require('_'),
|
_ = require('_'),
|
||||||
|
key = require('key'),
|
||||||
|
|
||||||
|
Enums = require('Common/Enums'),
|
||||||
Globals = require('Common/Globals'),
|
Globals = require('Common/Globals'),
|
||||||
Links = require('Common/Links'),
|
Links = require('Common/Links'),
|
||||||
|
|
||||||
|
|
@ -35,6 +37,44 @@
|
||||||
kn.extendAsViewModel(['View/User/Settings/Menu', 'View/App/Settings/Menu', 'SettingsMenuViewModel'], MenuSettingsUserView);
|
kn.extendAsViewModel(['View/User/Settings/Menu', 'View/App/Settings/Menu', 'SettingsMenuViewModel'], MenuSettingsUserView);
|
||||||
_.extend(MenuSettingsUserView.prototype, AbstractView.prototype);
|
_.extend(MenuSettingsUserView.prototype, AbstractView.prototype);
|
||||||
|
|
||||||
|
MenuSettingsUserView.prototype.onBuild = function (oDom)
|
||||||
|
{
|
||||||
|
// var self = this;
|
||||||
|
// key('esc', Enums.KeyState.Settings, function () {
|
||||||
|
// self.backToMailBoxClick();
|
||||||
|
// });
|
||||||
|
|
||||||
|
key('up, down', Enums.KeyState.Settings, _.throttle(function (event, handler) {
|
||||||
|
|
||||||
|
var
|
||||||
|
sH = '',
|
||||||
|
iIndex = -1,
|
||||||
|
bUp = handler && 'up' === handler.shortcut,
|
||||||
|
$items = $('.b-settings-menu .e-item', oDom)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (event && $items.length)
|
||||||
|
{
|
||||||
|
iIndex = $items.index($items.filter('.selected'));
|
||||||
|
if (bUp && iIndex > 0)
|
||||||
|
{
|
||||||
|
iIndex--;
|
||||||
|
}
|
||||||
|
else if (!bUp && iIndex < $items.length - 1)
|
||||||
|
{
|
||||||
|
iIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
sH = $items.eq(iIndex).attr('href');
|
||||||
|
if (sH)
|
||||||
|
{
|
||||||
|
kn.setHash(sH, false, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 200));
|
||||||
|
};
|
||||||
|
|
||||||
MenuSettingsUserView.prototype.link = function (sRoute)
|
MenuSettingsUserView.prototype.link = function (sRoute)
|
||||||
{
|
{
|
||||||
return Links.settings(sRoute);
|
return Links.settings(sRoute);
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,7 @@
|
||||||
|
|
||||||
var
|
var
|
||||||
_ = require('_'),
|
_ = require('_'),
|
||||||
key = require('key'),
|
|
||||||
|
|
||||||
Enums = require('Common/Enums'),
|
|
||||||
Links = require('Common/Links'),
|
Links = require('Common/Links'),
|
||||||
|
|
||||||
Data = require('Storage/User/Data'),
|
Data = require('Storage/User/Data'),
|
||||||
|
|
@ -31,14 +29,6 @@
|
||||||
kn.extendAsViewModel(['View/User/Settings/Pane', 'View/App/Settings/Pane', 'SettingsPaneViewModel'], PaneSettingsUserView);
|
kn.extendAsViewModel(['View/User/Settings/Pane', 'View/App/Settings/Pane', 'SettingsPaneViewModel'], PaneSettingsUserView);
|
||||||
_.extend(PaneSettingsUserView.prototype, AbstractView.prototype);
|
_.extend(PaneSettingsUserView.prototype, AbstractView.prototype);
|
||||||
|
|
||||||
PaneSettingsUserView.prototype.onBuild = function ()
|
|
||||||
{
|
|
||||||
var self = this;
|
|
||||||
key('esc', Enums.KeyState.Settings, function () {
|
|
||||||
self.backToMailBoxClick();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
PaneSettingsUserView.prototype.onShow = function ()
|
PaneSettingsUserView.prototype.onShow = function ()
|
||||||
{
|
{
|
||||||
Data.message(null);
|
Data.message(null);
|
||||||
|
|
|
||||||
|
|
@ -420,6 +420,7 @@ gulp.task('ckeditor', ['ckeditor:copy-plugins'], function () {
|
||||||
return gulp.src('rainloop/v/' + cfg.devVersion + '/static/ckeditor/*.js')
|
return gulp.src('rainloop/v/' + cfg.devVersion + '/static/ckeditor/*.js')
|
||||||
.pipe(stripbom())
|
.pipe(stripbom())
|
||||||
// .pipe(replace("\u200B", "\\u200B"))
|
// .pipe(replace("\u200B", "\\u200B"))
|
||||||
|
.pipe(replace('console.log("Detecting changes using MutationObservers")', 'true'))
|
||||||
.pipe(header("\uFEFF")) // BOM
|
.pipe(header("\uFEFF")) // BOM
|
||||||
.pipe(gulp.dest('rainloop/v/' + cfg.devVersion + '/static/ckeditor'));
|
.pipe(gulp.dest('rainloop/v/' + cfg.devVersion + '/static/ckeditor'));
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "RainLoop",
|
"name": "RainLoop",
|
||||||
"title": "RainLoop Webmail",
|
"title": "RainLoop Webmail",
|
||||||
"version": "1.8.1",
|
"version": "1.8.1",
|
||||||
"release": "258",
|
"release": "259",
|
||||||
"description": "Simple, modern & fast web-based email client",
|
"description": "Simple, modern & fast web-based email client",
|
||||||
"homepage": "http://rainloop.net",
|
"homepage": "http://rainloop.net",
|
||||||
"main": "gulpfile.js",
|
"main": "gulpfile.js",
|
||||||
|
|
|
||||||
|
|
@ -1288,6 +1288,7 @@ class Actions
|
||||||
'AllowAppendMessage' => (bool) $oConfig->Get('labs', 'allow_message_append', false),
|
'AllowAppendMessage' => (bool) $oConfig->Get('labs', 'allow_message_append', false),
|
||||||
'MaterialDesign' => (bool) $oConfig->Get('labs', 'use_material_design', true),
|
'MaterialDesign' => (bool) $oConfig->Get('labs', 'use_material_design', true),
|
||||||
'PremType' => $this->PremType(),
|
'PremType' => $this->PremType(),
|
||||||
|
'Admin' => array(),
|
||||||
'Capa' => array(),
|
'Capa' => array(),
|
||||||
'Plugins' => array()
|
'Plugins' => array()
|
||||||
);
|
);
|
||||||
|
|
@ -6420,10 +6421,10 @@ class Actions
|
||||||
$aData = $this->getTwoFactorInfo($oAccount);
|
$aData = $this->getTwoFactorInfo($oAccount);
|
||||||
$sSecret = !empty($aData['Secret']) ? $aData['Secret'] : '';
|
$sSecret = !empty($aData['Secret']) ? $aData['Secret'] : '';
|
||||||
|
|
||||||
$this->Logger()->WriteDump(array(
|
// $this->Logger()->WriteDump(array(
|
||||||
$sCode, $sSecret, $aData,
|
// $sCode, $sSecret, $aData,
|
||||||
$this->TwoFactorAuthProvider()->VerifyCode($sSecret, $sCode)
|
// $this->TwoFactorAuthProvider()->VerifyCode($sSecret, $sCode)
|
||||||
));
|
// ));
|
||||||
|
|
||||||
\sleep(1);
|
\sleep(1);
|
||||||
return $this->DefaultResponse(__FUNCTION__,
|
return $this->DefaultResponse(__FUNCTION__,
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="span6 rl-desc">
|
<div class="span6 rl-desc">
|
||||||
<h1 style="margin-bottom: 0;">RainLoop</h1>
|
<h1 style="margin-bottom: 0;">RainLoop</h1>
|
||||||
<h4 style="margin-top: 0;"><span data-bind="text: version"></span></h4>
|
<h4 style="margin-top: 0;">
|
||||||
|
<span data-bind="text: version"></span>
|
||||||
|
<span data-bind="visible: 'stable' !== coreType()" style="padding-left: 3px; color: red; font-weight: normal">
|
||||||
|
(<span data-bind="text: coreType"></span> channel)
|
||||||
|
</span>
|
||||||
|
</h4>
|
||||||
<h4 style="color: #aaa; font-weight: normal;">Simple, modern & fast web-based email client</h4>
|
<h4 style="color: #aaa; font-weight: normal;">Simple, modern & fast web-based email client</h4>
|
||||||
<h5 style="font-weight: normal; margin-top: 40px;">
|
<h5 style="font-weight: normal; margin-top: 40px;">
|
||||||
<div data-bind="visible: 'error' === statusType()">
|
<div data-bind="visible: 'error' === statusType()">
|
||||||
|
|
@ -27,9 +32,6 @@
|
||||||
|
|
||||||
New
|
New
|
||||||
<b data-bind="text: coreRemoteVersion"></b>
|
<b data-bind="text: coreRemoteVersion"></b>
|
||||||
<span data-bind="visible: 'stable' !== coreType()" style="color:red">
|
|
||||||
(<span data-bind="text: coreType"></span>)
|
|
||||||
</span>
|
|
||||||
version is available.
|
version is available.
|
||||||
<span data-bind="visible: '' !== coreRemoteRelease()">
|
<span data-bind="visible: '' !== coreRemoteRelease()">
|
||||||
(<span data-bind="text: coreRemoteRelease"></span>)
|
(<span data-bind="text: coreRemoteRelease"></span>)
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="e-cell e-value">
|
<div class="e-cell e-value">
|
||||||
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to, emailsTagsFilter: to.focusTrigger, autoCompleteSource: emailsSource" />
|
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to, emailsTagsFocus: to.focused, autoCompleteSource: emailsSource" />
|
||||||
<span class="help-block error-desc" data-bind="visible: emptyToError">
|
<span class="help-block error-desc" data-bind="visible: emptyToError">
|
||||||
<span class="i18n" data-i18n-text="COMPOSE/EMPTY_TO_ERROR_DESC"></span>
|
<span class="i18n" data-i18n-text="COMPOSE/EMPTY_TO_ERROR_DESC"></span>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="popups">
|
<div class="popups">
|
||||||
<div class="modal hide b-identity-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
<div class="modal hide b-identity-content" data-bind="modal: modalVisibility">
|
||||||
<div>
|
<div>
|
||||||
<div class="modal-header">
|
<div class="modal-header g-ui-user-select-none">
|
||||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||||
<h3>
|
<h3>
|
||||||
<span data-bind="visible: !edit()" class="i18n" data-i18n-text="POPUPS_IDENTITY/TITLE_ADD_IDENTITY"></span>
|
<span data-bind="visible: !edit()" class="i18n" data-i18n-text="POPUPS_IDENTITY/TITLE_ADD_IDENTITY"></span>
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="form-horizontal">
|
<div class="form-horizontal g-ui-user-select-none">
|
||||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||||
<span data-bind="text: submitError"></span>
|
<span data-bind="text: submitError"></span>
|
||||||
|
|
@ -66,8 +66,10 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
</div>
|
||||||
<div class="control-group">
|
<hr />
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<div class="control-group g-ui-user-select-none">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<div data-bind="component: {
|
<div data-bind="component: {
|
||||||
name: 'Checkbox',
|
name: 'Checkbox',
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="popups">
|
<div class="popups">
|
||||||
<div class="modal hide b-template-add-content g-ui-user-select-none" data-bind="modal: modalVisibility">
|
<div class="modal hide b-template-add-content" data-bind="modal: modalVisibility">
|
||||||
<div>
|
<div>
|
||||||
<div class="modal-header">
|
<div class="modal-header g-ui-user-select-none">
|
||||||
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
<button type="button" class="close" data-bind="command: cancelCommand">×</button>
|
||||||
<h3>
|
<h3>
|
||||||
<span data-bind="visible: '' === id()" class="i18n" data-i18n-text="POPUPS_ADD_TEMPLATE/TITLE_ADD_TEMPLATE"></span>
|
<span data-bind="visible: '' === id()" class="i18n" data-i18n-text="POPUPS_ADD_TEMPLATE/TITLE_ADD_TEMPLATE"></span>
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="form-horizontal">
|
<div class="form-horizontal g-ui-user-select-none">
|
||||||
<div class="alert" data-bind="visible: '' !== submitError()">
|
<div class="alert" data-bind="visible: '' !== submitError()">
|
||||||
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
<button type="button" class="close" data-bind="click: function () { submitError('') }">×</button>
|
||||||
<span data-bind="text: submitError"></span>
|
<span data-bind="text: submitError"></span>
|
||||||
|
|
@ -22,7 +22,9 @@
|
||||||
data-bind="textInput: name, onEnter: addTemplateCommand, hasfocus: name.focus" />
|
data-bind="textInput: name, onEnter: addTemplateCommand, hasfocus: name.focus" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="form-horizontal">
|
||||||
<div class="control-group" data-bind="css: {'error': body.error}">
|
<div class="control-group" data-bind="css: {'error': body.error}">
|
||||||
<div class="e-template-place" data-bind="initDom: signatureDom"></div>
|
<div class="e-template-place" data-bind="initDom: signatureDom"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<div class="b-settings b-settins-right">
|
<div class="b-settings b-settins-right">
|
||||||
<div class="b-toolbar">
|
<div class="b-toolbar" style="padding-left: 0">
|
||||||
<div class="btn-toolbar">
|
<div class="btn-toolbar">
|
||||||
<a class="btn button-back" data-bind="click: backToMailBoxClick">
|
<a class="btn button-back" data-bind="click: backToMailBoxClick">
|
||||||
<i class="icon-left"></i>
|
<i class="icon-left"></i>
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,13 @@
|
||||||
<div class="legend">
|
<div class="legend">
|
||||||
<span class="i18n" data-i18n-text="SETTINGS_SECURITY/LEGEND_TWO_FACTOR_AUTH"></span>
|
<span class="i18n" data-i18n-text="SETTINGS_SECURITY/LEGEND_TWO_FACTOR_AUTH"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group" data-bind="visible: twoFactorStatus">
|
||||||
<div class="controls">
|
<div class="controls" style="display: inline-block" data-bind="tooltip: viewTwoFactorEnableTooltip">
|
||||||
<div data-bind="component: {
|
<div data-bind="component: {
|
||||||
name: 'Checkbox',
|
name: 'Checkbox',
|
||||||
params: {
|
params: {
|
||||||
label: 'SETTINGS_SECURITY/LABEL_ENABLE_TWO_FACTOR',
|
label: 'SETTINGS_SECURITY/LABEL_ENABLE_TWO_FACTOR',
|
||||||
|
enable: twoFactorAllowedEnable,
|
||||||
value: viewEnable
|
value: viewEnable
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
|
|
@ -29,8 +30,7 @@
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="SETTINGS_SECURITY/BUTTON_CLEAR"></span>
|
<span class="i18n" data-i18n-text="SETTINGS_SECURITY/BUTTON_CLEAR"></span>
|
||||||
</a>
|
</a>
|
||||||
<span data-bind="visible: twoFactorStatus"> </span>
|
<a class="btn" data-bind="click: createTwoFactor, visible: !twoFactorStatus()">
|
||||||
<a class="btn" data-bind="click: createTwoFactor">
|
|
||||||
<i class="icon-ok" data-bind="css: {'icon-ok': !processing(), 'icon-spinner animated': processing()}" ></i>
|
<i class="icon-ok" data-bind="css: {'icon-ok': !processing(), 'icon-spinner animated': processing()}" ></i>
|
||||||
|
|
||||||
<span class="i18n" data-i18n-text="SETTINGS_SECURITY/BUTTON_CREATE"></span>
|
<span class="i18n" data-i18n-text="SETTINGS_SECURITY/BUTTON_CREATE"></span>
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Общи"
|
LEGEND_GENERAL = "Общи"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Konfiguriert"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nicht konfiguriert"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nicht konfiguriert"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importieren Sie diese Informationen in Ihren Google Authenticator-Client (oder andere TOTP-Clienten) mit Hilfe des mitgelieferten QR-Code unten oder durch manuelle Eingabe des Codes."
|
TWO_FACTOR_SECRET_DESC = "Importieren Sie diese Informationen in Ihren Google Authenticator-Client (oder andere TOTP-Clienten) mit Hilfe des mitgelieferten QR-Code unten oder durch manuelle Eingabe des Codes."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Wenn Sie keine Codes via Google Authenticator erhalten können, können Sie Backup-Codes für die Anmeldung verwenden. Nachdem Sie einen Backup-Code verwendet haben, um sich anzumelden, wird dieser inaktiv."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Wenn Sie keine Codes via Google Authenticator erhalten können, können Sie Backup-Codes für die Anmeldung verwenden. Nachdem Sie einen Backup-Code verwendet haben, um sich anzumelden, wird dieser inaktiv."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Allgemein"
|
LEGEND_GENERAL = "Allgemein"
|
||||||
|
|
|
||||||
|
|
@ -435,13 +435,13 @@ LABEL_SIGNATURE = "Signature"
|
||||||
LABEL_ADD_SIGNATURE_TO_ALL = "Add your signature to all the outgoing messages"
|
LABEL_ADD_SIGNATURE_TO_ALL = "Add your signature to all the outgoing messages"
|
||||||
|
|
||||||
[SETTINGS_SECURITY]
|
[SETTINGS_SECURITY]
|
||||||
LEGEND_TWO_FACTOR_AUTH = "2-Step Verification"
|
LEGEND_TWO_FACTOR_AUTH = "2-Step Verification (TOTP)"
|
||||||
LABEL_ENABLE_TWO_FACTOR = "Enable 2-Step verification"
|
LABEL_ENABLE_TWO_FACTOR = "Enable 2-Step verification"
|
||||||
LABEL_TWO_FACTOR_USER = "User"
|
LABEL_TWO_FACTOR_USER = "User"
|
||||||
LABEL_TWO_FACTOR_STATUS = "Status"
|
LABEL_TWO_FACTOR_STATUS = "Status"
|
||||||
LABEL_TWO_FACTOR_SECRET = "Secret"
|
LABEL_TWO_FACTOR_SECRET = "Secret"
|
||||||
LABEL_TWO_FACTOR_BACKUP_CODES = "Backup codes"
|
LABEL_TWO_FACTOR_BACKUP_CODES = "Backup codes"
|
||||||
BUTTON_CREATE = "Create New Secret"
|
BUTTON_CREATE = "Create a secret"
|
||||||
BUTTON_CLEAR = "Clear"
|
BUTTON_CLEAR = "Clear"
|
||||||
BUTTON_TEST = "Test"
|
BUTTON_TEST = "Test"
|
||||||
BUTTON_SHOW_SECRET = "Show Secret"
|
BUTTON_SHOW_SECRET = "Show Secret"
|
||||||
|
|
@ -449,7 +449,8 @@ BUTTON_HIDE_SECRET = "Hide Secret"
|
||||||
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator (or other TOTP client), you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "General"
|
LEGEND_GENERAL = "General"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configurado"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "No configurado"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "No configurado"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importar esta información en su cliente Google Authenticator (u otro cliente TOTP) utilizando el código QR se indica debajo o introduciendo el código manualmente."
|
TWO_FACTOR_SECRET_DESC = "Importar esta información en su cliente Google Authenticator (u otro cliente TOTP) utilizando el código QR se indica debajo o introduciendo el código manualmente."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Si usted no puede recibir los códigos a través de Google Authenticator, puede utilizar códigos de copia de seguridad para firmar pulg Después de que usted ha utilizado un código de copia de seguridad para iniciar sesión, se convertirá en inactiva."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Si usted no puede recibir los códigos a través de Google Authenticator, puede utilizar códigos de copia de seguridad para firmar pulg Después de que usted ha utilizado un código de copia de seguridad para iniciar sesión, se convertirá en inactiva."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "General"
|
LEGEND_GENERAL = "General"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configurer"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Non configuré"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Non configuré"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importez ces informations dans votre client Google Authenticator (ou un autre client TOTP) en utilisant le code QR fourni ci-dessous ou en entrant les valeurs manuellement."
|
TWO_FACTOR_SECRET_DESC = "Importez ces informations dans votre client Google Authenticator (ou un autre client TOTP) en utilisant le code QR fourni ci-dessous ou en entrant les valeurs manuellement."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Si vous ne pouvez pas recevoir les codes par Google Authenticator, vous pouvez utiliser les codes de sauvegarde pour vous connecter. Après avoir fait cela, il deviendra inactif."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Si vous ne pouvez pas recevoir les codes par Google Authenticator, vous pouvez utiliser les codes de sauvegarde pour vous connecter. Après avoir fait cela, il deviendra inactif."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Général"
|
LEGEND_GENERAL = "Général"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "General"
|
LEGEND_GENERAL = "General"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Almennt"
|
LEGEND_GENERAL = "Almennt"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configurato"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Non configurato"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Non configurato"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importa questo codice nel tuo client di Google Authenticator (o un altro client TOTP) usando il codice QR presente sotto o inserendo il codice manualmente."
|
TWO_FACTOR_SECRET_DESC = "Importa questo codice nel tuo client di Google Authenticator (o un altro client TOTP) usando il codice QR presente sotto o inserendo il codice manualmente."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Se non puoi ricevere codici da Google Authenticator, puoi usare i codici di riserva per entrare. Dopo aver usato un codice di riserva per entrare, esso si disattiverà."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Se non puoi ricevere codici da Google Authenticator, puoi usare i codici di riserva per entrare. Dopo aver usato un codice di riserva per entrare, esso si disattiverà."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Generali"
|
LEGEND_GENERAL = "Generali"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "全般"
|
LEGEND_GENERAL = "全般"
|
||||||
|
|
|
||||||
|
|
@ -447,6 +447,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "일반"
|
LEGEND_GENERAL = "일반"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Sukonfiguruota"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nesukonfiguruota"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nesukonfiguruota"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importuoti šią informaciją į Google autentifikavimo klientą naudojant žemiau pateiktą QR kodą arba įveskite kodą rankiniu būdu."
|
TWO_FACTOR_SECRET_DESC = "Importuoti šią informaciją į Google autentifikavimo klientą naudojant žemiau pateiktą QR kodą arba įveskite kodą rankiniu būdu."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Jei negaunate kodo per Google autentifikavimo klientą, galite nautotis savo sukurta atsargine kodų kopija. Kai panaudosite atsarginę kopiją prisijungimui, ji taps neaktyvi."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Jei negaunate kodo per Google autentifikavimo klientą, galite nautotis savo sukurta atsargine kodų kopija. Kai panaudosite atsarginę kopiją prisijungimui, ji taps neaktyvi."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Pagrindiniai"
|
LEGEND_GENERAL = "Pagrindiniai"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Vispārējie"
|
LEGEND_GENERAL = "Vispārējie"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Geconfigureerd"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Niet geconfigureerd"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Niet geconfigureerd"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importeer deze informatie in uw Google Authenticator-client (of andere TOTP-client) door gebruik te maken van de QR code hier beneden of door de code handmatig in te voeren."
|
TWO_FACTOR_SECRET_DESC = "Importeer deze informatie in uw Google Authenticator-client (of andere TOTP-client) door gebruik te maken van de QR code hier beneden of door de code handmatig in te voeren."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Als u geen codes ontvangt via de Google Authenticator kan je de backup codes gebruiken om in te loggen. Na gebruik van de backup code wordt deze inactief."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Als u geen codes ontvangt via de Google Authenticator kan je de backup codes gebruiken om in te loggen. Na gebruik van de backup code wordt deze inactief."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Algemeen"
|
LEGEND_GENERAL = "Algemeen"
|
||||||
|
|
|
||||||
|
|
@ -449,6 +449,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Konfigurert"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Ikke konfigurert"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Ikke konfigurert"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importer denne informasjonen til din Google Authenticator klient (eller andre klienter) ved å bruke QR-koden under, eller ved å skrive inn koden manuelt."
|
TWO_FACTOR_SECRET_DESC = "Importer denne informasjonen til din Google Authenticator klient (eller andre klienter) ved å bruke QR-koden under, eller ved å skrive inn koden manuelt."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Om du ikke mottar koder fra Google Authenticator, kan du brukeyou can use backupkodene for å logge inn. Disse kodene vil bli deaktivert etter bruk."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Om du ikke mottar koder fra Google Authenticator, kan du brukeyou can use backupkodene for å logge inn. Disse kodene vil bli deaktivert etter bruk."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Generelt"
|
LEGEND_GENERAL = "Generelt"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Skonfigurowane"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nie skonfigurowane"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Nie skonfigurowane"
|
||||||
TWO_FACTOR_SECRET_DESC = "Zaimportuj te informacje do swojego klienta usługi Google Authenticator (lub innego klienta TOTP), używając poniższego kodu QR lub wpisując kod ręcznie."
|
TWO_FACTOR_SECRET_DESC = "Zaimportuj te informacje do swojego klienta usługi Google Authenticator (lub innego klienta TOTP), używając poniższego kodu QR lub wpisując kod ręcznie."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Jeżeli nie możesz otrzymać kodu poprzez apikację Google Authenticator, możesz użyć kodów zapasowych. Po zużyciu kodów, opcja ta będzie nieaktywna."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Jeżeli nie możesz otrzymać kodu poprzez apikację Google Authenticator, możesz użyć kodów zapasowych. Po zużyciu kodów, opcja ta będzie nieaktywna."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Ogólne"
|
LEGEND_GENERAL = "Ogólne"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configurado"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Não configurado"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Não configurado"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importe este código no seu cliente Google Authenticator (ou outro cliente TOTP) usando o QR code abaixo ou informando o código manualmente."
|
TWO_FACTOR_SECRET_DESC = "Importe este código no seu cliente Google Authenticator (ou outro cliente TOTP) usando o QR code abaixo ou informando o código manualmente."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Se você não puder receber os códigos via Google Authenticator, você pode usar esses códigos de backup para acessar sua conta. Depois de você usar um código de backup, ele se expira."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Se você não puder receber os códigos via Google Authenticator, você pode usar esses códigos de backup para acessar sua conta. Depois de você usar um código de backup, ele se expira."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Geral"
|
LEGEND_GENERAL = "Geral"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Geral"
|
LEGEND_GENERAL = "Geral"
|
||||||
|
|
|
||||||
|
|
@ -449,6 +449,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Setări de bază"
|
LEGEND_GENERAL = "Setări de bază"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Настроен"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Не настроен"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Не настроен"
|
||||||
TWO_FACTOR_SECRET_DESC = "Используйте эту информацию для настройки Google Authenticator клиента (или другого TOTP клиента) с помощью прилагаемого QR-кода, или вручную."
|
TWO_FACTOR_SECRET_DESC = "Используйте эту информацию для настройки Google Authenticator клиента (или другого TOTP клиента) с помощью прилагаемого QR-кода, или вручную."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Если вы не можете получить коды через Google Authenticator, вы можете использовать резервные коды, чтобы войти. После того как вы использовали резервный код для входа в систему, он становится неактивным."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Если вы не можете получить коды через Google Authenticator, вы можете использовать резервные коды, чтобы войти. После того как вы использовали резервный код для входа в систему, он становится неактивным."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Основные Настройки"
|
LEGEND_GENERAL = "Основные Настройки"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Všeobecné"
|
LEGEND_GENERAL = "Všeobecné"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Konfigurerad"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Inte konfigurarad"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Inte konfigurarad"
|
||||||
TWO_FACTOR_SECRET_DESC = "Importera denna information till din Google Authenticator klient (eller annan TOTP klient) med denna QR kod eller manuellt med koden här nedan."
|
TWO_FACTOR_SECRET_DESC = "Importera denna information till din Google Authenticator klient (eller annan TOTP klient) med denna QR kod eller manuellt med koden här nedan."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Om du inte kan ta emot koderna med Google Authenticator, så använd backupkoderna för att logga in. När du använt backupkoderna för att logga in så blir dom inaktiva."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Om du inte kan ta emot koderna med Google Authenticator, så använd backupkoderna för att logga in. När du använt backupkoderna för att logga in så blir dom inaktiva."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Allmänt"
|
LEGEND_GENERAL = "Allmänt"
|
||||||
|
|
|
||||||
|
|
@ -448,6 +448,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Yapılandırılmış"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Yapılandırılmamış"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Yapılandırılmamış"
|
||||||
TWO_FACTOR_SECRET_DESC = "Aşağıda sunulan QR kodu kullanarak Google Şifrematik istemcisi (veya başka TOTP istemci) içine veya elle kod girerek bu bilgi aktarın."
|
TWO_FACTOR_SECRET_DESC = "Aşağıda sunulan QR kodu kullanarak Google Şifrematik istemcisi (veya başka TOTP istemci) içine veya elle kod girerek bu bilgi aktarın."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Google Şifrematik'te aracılığıyla kodları alamıyorsa Eğer oturum için bir yedek kod kullandım sonra, bunu pasif olacaktır, oturum yedekleme kodlarını kullanabilirsiniz."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Google Şifrematik'te aracılığıyla kodları alamıyorsa Eğer oturum için bir yedek kod kullandım sonra, bunu pasif olacaktır, oturum yedekleme kodlarını kullanabilirsiniz."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Genel"
|
LEGEND_GENERAL = "Genel"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Налаштований"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Не налаштований"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Не налаштований"
|
||||||
TWO_FACTOR_SECRET_DESC = "Використовуйте цю інформацію для налаштування Google Authenticator клиенту (чи іншого TOTP клиенту) за допомогою прикладеного QR-коду, чи вручну."
|
TWO_FACTOR_SECRET_DESC = "Використовуйте цю інформацію для налаштування Google Authenticator клиенту (чи іншого TOTP клиенту) за допомогою прикладеного QR-коду, чи вручну."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "Якщо Ви не можете отримати коди через Google Authenticator, ви можете використовувати резервні коди, щоб увійти. Після того як Ви використали резервний код для входу в систему, він стає неактивним."
|
TWO_FACTOR_BACKUP_CODES_DESC = "Якщо Ви не можете отримати коди через Google Authenticator, ви можете використовувати резервні коди, щоб увійти. Після того як Ви використали резервний код для входу в систему, він стає неактивним."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "Основні Налаштування"
|
LEGEND_GENERAL = "Основні Налаштування"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "一般设置"
|
LEGEND_GENERAL = "一般设置"
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
|
||||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
|
||||||
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
|
||||||
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After you’ve used a backup code to sign in, it will become inactive."
|
||||||
|
TWO_FACTOR_SECRET_TEST_BEFORE_DESC = "You can't change this setting before test."
|
||||||
|
|
||||||
[SETTINGS_GENERAL]
|
[SETTINGS_GENERAL]
|
||||||
LEGEND_GENERAL = "一般設置"
|
LEGEND_GENERAL = "一般設置"
|
||||||
|
|
|
||||||
2
rainloop/v/0.0.0/static/ckeditor/ckeditor.js
vendored
2
rainloop/v/0.0.0/static/ckeditor/ckeditor.js
vendored
|
|
@ -875,7 +875,7 @@ b),e="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,j="",i=e==C
|
||||||
"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var d=function(c){var a=this._,b=a.menu;a.state!==CKEDITOR.TRISTATE_DISABLED&&(a.on&&b?b.hide():(a.previousState=a.state,b||(b=a.menu=new CKEDITOR.menu(c,{panel:{className:"cke_menu_panel",attributes:{"aria-label":c.lang.common.options}}}),b.onHide=CKEDITOR.tools.bind(function(){var b=this.command?c.getCommand(this.command).modes:this.modes;this.setState(!b||b[c.mode]?a.previousState:CKEDITOR.TRISTATE_DISABLED);a.on=0},this),
|
"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var d=function(c){var a=this._,b=a.menu;a.state!==CKEDITOR.TRISTATE_DISABLED&&(a.on&&b?b.hide():(a.previousState=a.state,b||(b=a.menu=new CKEDITOR.menu(c,{panel:{className:"cke_menu_panel",attributes:{"aria-label":c.lang.common.options}}}),b.onHide=CKEDITOR.tools.bind(function(){var b=this.command?c.getCommand(this.command).modes:this.modes;this.setState(!b||b[c.mode]?a.previousState:CKEDITOR.TRISTATE_DISABLED);a.on=0},this),
|
||||||
this.onMenu&&b.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),a.on=1,setTimeout(function(){b.show(CKEDITOR.document.getById(a.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){delete c.panel;this.base(c);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(c){return new CKEDITOR.ui.menuButton(c)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});
|
this.onMenu&&b.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),a.on=1,setTimeout(function(){b.show(CKEDITOR.document.getById(a.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){delete c.panel;this.base(c);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(c){return new CKEDITOR.ui.menuButton(c)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});
|
||||||
CKEDITOR.UI_MENUBUTTON="menubutton";CKEDITOR.plugins.add("onchange",{init:function(a){function b(){a.readOnly||d||(d=setTimeout(function(){d=0;a.fire("change")},a.config.minimumChangeMilliseconds||100))}var d,g=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,f;a.on("destroy",function(){d&&clearTimeout(d);d=null});a.on("saveSnapshot",function(a){(!a.data||!a.data.contentOnly)&&b()});var e=a.getCommand("undo");e&&e.on("afterUndo",b);(e=a.getCommand("redo"))&&e.on("afterRedo",b);a.on("afterCommandExec",
|
CKEDITOR.UI_MENUBUTTON="menubutton";CKEDITOR.plugins.add("onchange",{init:function(a){function b(){a.readOnly||d||(d=setTimeout(function(){d=0;a.fire("change")},a.config.minimumChangeMilliseconds||100))}var d,g=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,f;a.on("destroy",function(){d&&clearTimeout(d);d=null});a.on("saveSnapshot",function(a){(!a.data||!a.data.contentOnly)&&b()});var e=a.getCommand("undo");e&&e.on("afterUndo",b);(e=a.getCommand("redo"))&&e.on("afterRedo",b);a.on("afterCommandExec",
|
||||||
function(a){"source"!=a.data.name&&!1!==a.data.command.canUndo&&b()});g&&(f=new g(function(){b()}),window.console&&window.console.log&&console.log("Detecting changes using MutationObservers"));a.on("contentDom",function(){if(f)var c=setInterval(function(){if(typeof a.document==="object"){f.observe(a.document.getBody().$,{attributes:true,childList:true,characterData:true});clearInterval(c)}},100);a.document.on("keydown",function(a){if(!a.data.$.ctrlKey&&!a.data.$.metaKey){a=a.data.$.keyCode;(a==8||
|
function(a){"source"!=a.data.name&&!1!==a.data.command.canUndo&&b()});g&&(f=new g(function(){b()}),window.console&&window.console.log&&true);a.on("contentDom",function(){if(f)var c=setInterval(function(){if(typeof a.document==="object"){f.observe(a.document.getBody().$,{attributes:true,childList:true,characterData:true});clearInterval(c)}},100);a.document.on("keydown",function(a){if(!a.data.$.ctrlKey&&!a.data.$.metaKey){a=a.data.$.keyCode;(a==8||
|
||||||
a==13||a==32||a>=46&&a<=90||a>=96&&a<=111||a>=186&&a<=222||a==229)&&b()}});a.document.on("drop",b);a.document.getBody().on("drop",b)});a.on("mode",function(){if(a.mode=="source"){var c=a.textarea||a._.editable;c.on("keydown",function(a){!a.data.$.ctrlKey&&!a.data.$.metaKey&&b()});c.on("drop",b);c.on("input",b);if(CKEDITOR.env.ie){c.on("cut",b);c.on("paste",b)}}})}});CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}});
|
a==13||a==32||a>=46&&a<=90||a>=96&&a<=111||a>=186&&a<=222||a==229)&&b()}});a.document.on("drop",b);a.document.getBody().on("drop",b)});a.on("mode",function(){if(a.mode=="source"){var c=a.textarea||a._.editable;c.on("keydown",function(a){!a.data.$.ctrlKey&&!a.data.$.metaKey&&b()});c.on("drop",b);c.on("input",b);if(CKEDITOR.env.ie){c.on("cut",b);c.on("paste",b)}}})}});CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}});
|
||||||
CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(),l=k.createIterator(),m=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);
|
CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(),l=k.createIterator(),m=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);
|
||||||
var j=c.createBookmark(),b=j.startNode,d=j.endNode,i=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};i(b);if(d){i(d);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(m)}else i=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!("img"==b.getName()&&b.data("cke-realelement"))&&f(a,b)&&(h.test(b.getName())?
|
var j=c.createBookmark(),b=j.startNode,d=j.endNode,i=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};i(b);if(d){i(d);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(m)}else i=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!("img"==b.getName()&&b.data("cke-realelement"))&&f(a,b)&&(h.test(b.getName())?
|
||||||
|
|
|
||||||
|
|
@ -867,7 +867,7 @@ b),e="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,j="",i=e==C
|
||||||
"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var d=function(c){var a=this._,b=a.menu;a.state!==CKEDITOR.TRISTATE_DISABLED&&(a.on&&b?b.hide():(a.previousState=a.state,b||(b=a.menu=new CKEDITOR.menu(c,{panel:{className:"cke_menu_panel",attributes:{"aria-label":c.lang.common.options}}}),b.onHide=CKEDITOR.tools.bind(function(){var b=this.command?c.getCommand(this.command).modes:this.modes;this.setState(!b||b[c.mode]?a.previousState:CKEDITOR.TRISTATE_DISABLED);a.on=0},this),
|
"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("menubutton",{requires:"button,menu",onLoad:function(){var d=function(c){var a=this._,b=a.menu;a.state!==CKEDITOR.TRISTATE_DISABLED&&(a.on&&b?b.hide():(a.previousState=a.state,b||(b=a.menu=new CKEDITOR.menu(c,{panel:{className:"cke_menu_panel",attributes:{"aria-label":c.lang.common.options}}}),b.onHide=CKEDITOR.tools.bind(function(){var b=this.command?c.getCommand(this.command).modes:this.modes;this.setState(!b||b[c.mode]?a.previousState:CKEDITOR.TRISTATE_DISABLED);a.on=0},this),
|
||||||
this.onMenu&&b.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),a.on=1,setTimeout(function(){b.show(CKEDITOR.document.getById(a.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){delete c.panel;this.base(c);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(c){return new CKEDITOR.ui.menuButton(c)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});
|
this.onMenu&&b.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),a.on=1,setTimeout(function(){b.show(CKEDITOR.document.getById(a.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){delete c.panel;this.base(c);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(c){return new CKEDITOR.ui.menuButton(c)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});
|
||||||
CKEDITOR.UI_MENUBUTTON="menubutton";CKEDITOR.plugins.add("onchange",{init:function(a){function b(){a.readOnly||d||(d=setTimeout(function(){d=0;a.fire("change")},a.config.minimumChangeMilliseconds||100))}var d,g=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,f;a.on("destroy",function(){d&&clearTimeout(d);d=null});a.on("saveSnapshot",function(a){(!a.data||!a.data.contentOnly)&&b()});var e=a.getCommand("undo");e&&e.on("afterUndo",b);(e=a.getCommand("redo"))&&e.on("afterRedo",b);a.on("afterCommandExec",
|
CKEDITOR.UI_MENUBUTTON="menubutton";CKEDITOR.plugins.add("onchange",{init:function(a){function b(){a.readOnly||d||(d=setTimeout(function(){d=0;a.fire("change")},a.config.minimumChangeMilliseconds||100))}var d,g=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,f;a.on("destroy",function(){d&&clearTimeout(d);d=null});a.on("saveSnapshot",function(a){(!a.data||!a.data.contentOnly)&&b()});var e=a.getCommand("undo");e&&e.on("afterUndo",b);(e=a.getCommand("redo"))&&e.on("afterRedo",b);a.on("afterCommandExec",
|
||||||
function(a){"source"!=a.data.name&&!1!==a.data.command.canUndo&&b()});g&&(f=new g(function(){b()}),window.console&&window.console.log&&console.log("Detecting changes using MutationObservers"));a.on("contentDom",function(){if(f)var c=setInterval(function(){if(typeof a.document==="object"){f.observe(a.document.getBody().$,{attributes:true,childList:true,characterData:true});clearInterval(c)}},100);a.document.on("keydown",function(a){if(!a.data.$.ctrlKey&&!a.data.$.metaKey){a=a.data.$.keyCode;(a==8||
|
function(a){"source"!=a.data.name&&!1!==a.data.command.canUndo&&b()});g&&(f=new g(function(){b()}),window.console&&window.console.log&&true);a.on("contentDom",function(){if(f)var c=setInterval(function(){if(typeof a.document==="object"){f.observe(a.document.getBody().$,{attributes:true,childList:true,characterData:true});clearInterval(c)}},100);a.document.on("keydown",function(a){if(!a.data.$.ctrlKey&&!a.data.$.metaKey){a=a.data.$.keyCode;(a==8||
|
||||||
a==13||a==32||a>=46&&a<=90||a>=96&&a<=111||a>=186&&a<=222||a==229)&&b()}});a.document.on("drop",b);a.document.getBody().on("drop",b)});a.on("mode",function(){if(a.mode=="source"){var c=a.textarea||a._.editable;c.on("keydown",function(a){!a.data.$.ctrlKey&&!a.data.$.metaKey&&b()});c.on("drop",b);c.on("input",b);if(CKEDITOR.env.ie){c.on("cut",b);c.on("paste",b)}}})}});CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}});
|
a==13||a==32||a>=46&&a<=90||a>=96&&a<=111||a>=186&&a<=222||a==229)&&b()}});a.document.on("drop",b);a.document.getBody().on("drop",b)});a.on("mode",function(){if(a.mode=="source"){var c=a.textarea||a._.editable;c.on("keydown",function(a){!a.data.$.ctrlKey&&!a.data.$.metaKey&&b()});c.on("drop",b);c.on("input",b);if(CKEDITOR.env.ie){c.on("cut",b);c.on("paste",b)}}})}});CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}});
|
||||||
CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(),l=k.createIterator(),m=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);
|
CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(),l=k.createIterator(),m=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);
|
||||||
var j=c.createBookmark(),b=j.startNode,d=j.endNode,i=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};i(b);if(d){i(d);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(m)}else i=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!("img"==b.getName()&&b.data("cke-realelement"))&&f(a,b)&&(h.test(b.getName())?
|
var j=c.createBookmark(),b=j.startNode,d=j.endNode,i=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};i(b);if(d){i(d);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(m)}else i=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!("img"==b.getName()&&b.data("cke-realelement"))&&f(a,b)&&(h.test(b.getName())?
|
||||||
|
|
|
||||||
4
vendors/inputosaurus/inputosaurus.js
vendored
4
vendors/inputosaurus/inputosaurus.js
vendored
|
|
@ -600,6 +600,10 @@
|
||||||
this.elements.input.focus();
|
this.elements.input.focus();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
blur : function () {
|
||||||
|
this.elements.input.blur();
|
||||||
|
},
|
||||||
|
|
||||||
_focus : function(ev) {
|
_focus : function(ev) {
|
||||||
var
|
var
|
||||||
widget = (ev && ev.data.widget) || this,
|
widget = (ev && ev.data.widget) || this,
|
||||||
|
|
|
||||||
2
vendors/inputosaurus/inputosaurus.min.js
vendored
2
vendors/inputosaurus/inputosaurus.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue