diff --git a/dev/Settings/User/OpenPgp.js b/dev/Settings/User/OpenPgp.js
index d37164d33..e834c022a 100644
--- a/dev/Settings/User/OpenPgp.js
+++ b/dev/Settings/User/OpenPgp.js
@@ -2,10 +2,14 @@
import _ from '_';
import ko from 'ko';
-import {delegateRunOnDestroy} from 'Common/Utils';
+import {delegateRunOnDestroy, boolToAjax} from 'Common/Utils';
+import {Magics} from 'Common/Enums';
import {bIsHttps} from 'Common/Globals';
import PgpStore from 'Stores/User/Pgp';
+import SettingsStore from 'Stores/User/Settings';
+
+import Remote from 'Remote/User/Ajax';
import {getApp} from 'Helper/Apps/User';
@@ -20,6 +24,8 @@ class OpenPgpUserSettings
this.openPgpKeyForDeletion = ko.observable(null).deleteAccessHelper();
+ this.allowDraftAutosave = SettingsStore.allowDraftAutosave;
+
this.isHttps = bIsHttps;
}
@@ -66,6 +72,16 @@ class OpenPgpUserSettings
}
}
}
+
+ onBuild() {
+ _.delay(() => {
+
+ this.allowDraftAutosave.subscribe(
+ Remote.saveSettingsHelper('AllowDraftAutosave', boolToAjax)
+ );
+
+ }, Magics.Time50ms);
+ }
}
export {OpenPgpUserSettings, OpenPgpUserSettings as default};
diff --git a/dev/Stores/User/Settings.js b/dev/Stores/User/Settings.js
index cd968610c..aa2e0a908 100644
--- a/dev/Stores/User/Settings.js
+++ b/dev/Stores/User/Settings.js
@@ -30,6 +30,7 @@ class SettingsUserStore
this.showImages = ko.observable(false);
this.useCheckboxesInList = ko.observable(true);
+ this.allowDraftAutosave = ko.observable(true);
this.useThreads = ko.observable(false);
this.replySameFolder = ko.observable(false);
@@ -61,6 +62,7 @@ class SettingsUserStore
this.showImages(!!Settings.settingsGet('ShowImages'));
this.useCheckboxesInList(!!Settings.settingsGet('UseCheckboxesInList'));
+ this.allowDraftAutosave(!!Settings.settingsGet('AllowDraftAutosave'));
this.useThreads(!!Settings.settingsGet('UseThreads'));
this.replySameFolder(!!Settings.settingsGet('ReplySameFolder'));
diff --git a/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js
index ee8193fe2..632e5ceea 100644
--- a/dev/View/Popup/Compose.js
+++ b/dev/View/Popup/Compose.js
@@ -314,8 +314,8 @@ class ComposePopupView extends AbstractViewNext
this.saveMessageResponse = _.bind(this.saveMessageResponse, this);
Events.sub('interval.2m', () => {
- if (this.modalVisibility() && !FolderStore.draftFolderNotEnabled() && !this.isEmptyForm(false) &&
- !this.saving() && !this.sending() && !this.savedError())
+ if (this.modalVisibility() && !FolderStore.draftFolderNotEnabled() && SettingsStore.allowDraftAutosave() &&
+ !this.isEmptyForm(false) && !this.saving() && !this.sending() && !this.savedError())
{
this.saveCommand();
}
@@ -519,7 +519,7 @@ class ComposePopupView extends AbstractViewNext
this.bSkipNextHide = true;
if (this.modalVisibility() && !this.saving() && !this.sending() &&
- !FolderStore.draftFolderNotEnabled())
+ !FolderStore.draftFolderNotEnabled() && SettingsStore.allowDraftAutosave())
{
this.saveCommand();
}
@@ -563,8 +563,8 @@ class ComposePopupView extends AbstractViewNext
}
autosaveFunction() {
- if (this.modalVisibility() && !FolderStore.draftFolderNotEnabled() && !this.isEmptyForm(false) &&
- !this.saving() && !this.sending() && !this.savedError())
+ if (this.modalVisibility() && !FolderStore.draftFolderNotEnabled() && SettingsStore.allowDraftAutosave() &&
+ !this.isEmptyForm(false) && !this.saving() && !this.sending() && !this.savedError())
{
this.saveCommand();
}
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
index 62b4ab89a..b6aaa4ffc 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
@@ -1834,6 +1834,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
$aResult['UseCheckboxesInList'] = (bool) $oConfig->Get('defaults', 'view_use_checkboxes', true);
$aResult['AutoLogout'] = (int) $oConfig->Get('defaults', 'autologout', 30);
$aResult['UseThreads'] = (bool) $oConfig->Get('defaults', 'mail_use_threads', false);
+ $aResult['AllowDraftAutosave'] = (bool) $oConfig->Get('defaults', 'allow_draft_autosave', true);
$aResult['ReplySameFolder'] = (bool) $oConfig->Get('defaults', 'mail_reply_same_folder', false);
$aResult['ContactsAutosave'] = (bool) $oConfig->Get('defaults', 'contacts_autosave', true);
$aResult['EnableTwoFactor'] = false;
@@ -1876,6 +1877,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
$aResult['SoundNotification'] = (bool) $oSettings->GetConf('SoundNotification', $aResult['SoundNotification']);
$aResult['DesktopNotifications'] = (bool) $oSettings->GetConf('DesktopNotifications', $aResult['DesktopNotifications']);
$aResult['UseCheckboxesInList'] = (bool) $oSettings->GetConf('UseCheckboxesInList', $aResult['UseCheckboxesInList']);
+ $aResult['AllowDraftAutosave'] = (bool) $oSettings->GetConf('AllowDraftAutosave', $aResult['AllowDraftAutosave']);
$aResult['AutoLogout'] = (int) $oSettings->GetConf('AutoLogout', $aResult['AutoLogout']);
$aResult['Layout'] = (int) $oSettings->GetConf('Layout', $aResult['Layout']);
@@ -5016,6 +5018,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
$this->setSettingsFromParams($oSettings, 'DesktopNotifications', 'bool');
$this->setSettingsFromParams($oSettings, 'SoundNotification', 'bool');
$this->setSettingsFromParams($oSettings, 'UseCheckboxesInList', 'bool');
+ $this->setSettingsFromParams($oSettings, 'AllowDraftAutosave', 'bool');
$this->setSettingsFromParams($oSettings, 'AutoLogout', 'int');
$this->setSettingsFromParams($oSettings, 'EnableTwoFactor', 'bool');
diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
index 5777a8270..736eec2f2 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Config/Application.php
@@ -281,6 +281,7 @@ Values:
'show_images' => array(false),
'contacts_autosave' => array(true),
'mail_use_threads' => array(false),
+ 'allow_draft_autosave' => array(true),
'mail_reply_same_folder' => array(false)
),
diff --git a/rainloop/v/0.0.0/app/localization/webmail/_source.en.yml b/rainloop/v/0.0.0/app/localization/webmail/_source.en.yml
index ca827eaef..962ab8b24 100644
--- a/rainloop/v/0.0.0/app/localization/webmail/_source.en.yml
+++ b/rainloop/v/0.0.0/app/localization/webmail/_source.en.yml
@@ -581,6 +581,7 @@ en:
TITLE_PUBLIC: "Public"
DELETING_ASK: "Are you sure?"
GENERATE_ONLY_HTTPS: "HTTPS only"
+ LABEL_ALLOW_DRAFT_AUTOSAVE: "Automatically save draft"
SHORTCUTS_HELP:
LEGEND_SHORTCUTS_HELP: "Keyboard shortcuts help"
TAB_MAILBOX: "Mailbox"
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html b/rainloop/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html
index 71a71b3b8..9d6fb1957 100644
--- a/rainloop/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html
+++ b/rainloop/v/0.0.0/app/templates/Views/User/SettingsOpenPGP.html
@@ -19,6 +19,17 @@
+