diff --git a/dev/App/User.js b/dev/App/User.js
index 84bd1bfd3..8820acd3b 100644
--- a/dev/App/User.js
+++ b/dev/App/User.js
@@ -675,8 +675,8 @@
bCheck = false,
sUid = '',
aList = [],
- bUnreadCountChange = false,
- oFlags = null
+ oFlags = null,
+ bUnreadCountChange = false
;
if (oFolder)
diff --git a/dev/Common/Globals.js b/dev/Common/Globals.js
index a0ce66728..5391f5744 100644
--- a/dev/Common/Globals.js
+++ b/dev/Common/Globals.js
@@ -254,7 +254,7 @@
sTagName = sTagName.toUpperCase();
return !(sTagName === 'INPUT' || sTagName === 'SELECT' || sTagName === 'TEXTAREA' ||
- (oElement && sTagName === 'DIV' && 'editorHtmlArea' === oElement.className && oElement.contentEditable)
+ (oElement && sTagName === 'DIV' && ('editorHtmlArea' === oElement.className || 'true' === '' + oElement.contentEditable))
);
}
diff --git a/dev/Common/HtmlEditor.js b/dev/Common/HtmlEditor.js
index 9b0fefa30..b79f45209 100644
--- a/dev/Common/HtmlEditor.js
+++ b/dev/Common/HtmlEditor.js
@@ -269,8 +269,6 @@
window.CKEDITOR.env.isCompatible = true;
}
- window.CKEDITOR.dtd.$removeEmpty['p'] = 1;
-
self.editor = window.CKEDITOR.appendTo(self.$element[0], oConfig);
self.editor.on('key', function(oEvent) {
@@ -307,9 +305,6 @@
self.editor.removeMenuItem('paste');
}
- self.editor.setKeystroke(window.CKEDITOR.CTRL + 65 /* A */, 'selectAll');
-
-
self.__resizable = true;
self.__inited = true;
diff --git a/dev/Common/Utils.js b/dev/Common/Utils.js
index 7acdd5797..7eb657b86 100644
--- a/dev/Common/Utils.js
+++ b/dev/Common/Utils.js
@@ -534,14 +534,14 @@
oEvent.preventDefault();
return;
}
-
- if (oSender && oSender.tagName && oSender.tagName.match(/INPUT|TEXTAREA/i))
+ else if (iKey === Enums.EventKeyCode.A)
{
- return;
- }
+ if (oSender && ('true' === '' + oSender.contentEditable ||
+ (oSender.tagName && oSender.tagName.match(/INPUT|TEXTAREA/i))))
+ {
+ return;
+ }
- if (iKey === Enums.EventKeyCode.A)
- {
if (window.getSelection)
{
window.getSelection().removeAllRanges();
diff --git a/dev/Component/AbstracCheckbox.js b/dev/Component/AbstracCheckbox.js
index 8101ab3bd..de4696b92 100644
--- a/dev/Component/AbstracCheckbox.js
+++ b/dev/Component/AbstracCheckbox.js
@@ -53,14 +53,8 @@
_.extend(AbstracCheckbox.prototype, AbstractComponent.prototype);
- AbstracCheckbox.prototype.click = function() {
- if (!this.readOnly && this.enable() && !this.disable())
- {
- this.value(!this.value());
- }
- };
-
- AbstracCheckbox.prototype.keypress = function() {
+ AbstracCheckbox.prototype.click = function()
+ {
if (!this.readOnly && this.enable() && !this.disable())
{
this.value(!this.value());
diff --git a/dev/External/ko.js b/dev/External/ko.js
index 0c83c3d8b..131b5a8de 100644
--- a/dev/External/ko.js
+++ b/dev/External/ko.js
@@ -315,18 +315,6 @@
}
};
- ko.bindingHandlers.keypress = {
- 'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) {
- $(oElement).on('keypress.koKeyPress', function (oEvent) {
- fValueAccessor().call(oViewModel, oEvent);
- });
-
- ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () {
- $(oElement).off('keypress.koKeyPress');
- });
- }
- };
-
ko.bindingHandlers.onEnter = {
'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) {
$(oElement).on('keypress.koOnEnter', function (oEvent) {
@@ -343,6 +331,21 @@
}
};
+ ko.bindingHandlers.onSpace = {
+ 'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) {
+ $(oElement).on('keyup.koOnSpace', function (oEvent) {
+ if (oEvent && 32 === window.parseInt(oEvent.keyCode, 10))
+ {
+ fValueAccessor().call(oViewModel, oEvent);
+ }
+ });
+
+ ko.utils.domNodeDisposal.addDisposeCallback(oElement, function () {
+ $(oElement).off('keyup.koOnSpace');
+ });
+ }
+ };
+
ko.bindingHandlers.onTab = {
'init': function (oElement, fValueAccessor, fAllBindingsAccessor, oViewModel) {
$(oElement).on('keydown.koOnTab', function (oEvent) {
diff --git a/dev/Promises/User/Populator.js b/dev/Promises/User/Populator.js
index 324271935..87a41bcf9 100644
--- a/dev/Promises/User/Populator.js
+++ b/dev/Promises/User/Populator.js
@@ -90,6 +90,15 @@
if (oCacheFolder)
{
+ if (!FolderStore.displaySpecSetting())
+ {
+ oCacheFolder.checkable(true);
+ }
+ else
+ {
+ oCacheFolder.checkable(!!oFolder.Checkable);
+ }
+
oCacheFolder.collapsed(!self.isFolderExpanded(oCacheFolder.fullNameHash));
if (oFolder.Extended)
@@ -131,6 +140,14 @@
if (oData && 'Collection/FolderCollection' === oData['@Object'] &&
oData['@Collection'] && Utils.isArray(oData['@Collection']))
{
+ var
+ iLimit = Utils.pInt(Settings.settingsGet('FolderSpecLimit')),
+ iC = Utils.pInt(oData['CountRec'])
+ ;
+
+ iLimit = 100 < iLimit ? 100 : (10 > iLimit ? 10 : iLimit);
+
+ FolderStore.displaySpecSetting(0 >= iC || iLimit < iC);
FolderStore.folderList(this.folderResponseParseRec(
Utils.isUnd(oData.Namespace) ? '' : oData.Namespace, oData['@Collection']));
}
diff --git a/dev/Screen/User/Settings.js b/dev/Screen/User/Settings.js
index cb0ee5722..a6533c761 100644
--- a/dev/Screen/User/Settings.js
+++ b/dev/Screen/User/Settings.js
@@ -72,10 +72,10 @@
'SettingsSecurity', 'SETTINGS_LABELS/LABEL_SECURITY_NAME', 'security');
}
- if (AccountStore.isRootAccount() &&
+ if (AccountStore.isRootAccount() && (
(Settings.settingsGet('AllowGoogleSocial') && Settings.settingsGet('AllowGoogleSocialAuth')) ||
Settings.settingsGet('AllowFacebookSocial') ||
- Settings.settingsGet('AllowTwitterSocial'))
+ Settings.settingsGet('AllowTwitterSocial')))
{
kn.addSettingsViewModel(require('Settings/User/Social'),
'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
diff --git a/dev/Settings/User/Folders.js b/dev/Settings/User/Folders.js
index 576d43719..9d826f69b 100644
--- a/dev/Settings/User/Folders.js
+++ b/dev/Settings/User/Folders.js
@@ -26,6 +26,7 @@
*/
function FoldersUserSettings()
{
+ this.displaySpecSetting = FolderStore.displaySpecSetting;
this.folderList = FolderStore.folderList;
this.folderListHelp = ko.observable('').extend({'throttle': 100});
diff --git a/dev/Stores/User/Folder.js b/dev/Stores/User/Folder.js
index 68b87d794..57081f7b1 100644
--- a/dev/Stores/User/Folder.js
+++ b/dev/Stores/User/Folder.js
@@ -19,6 +19,8 @@
*/
function FolderUserStore()
{
+ this.displaySpecSetting = ko.observable(true);
+
this.sentFolder = ko.observable('');
this.draftFolder = ko.observable('');
this.spamFolder = ko.observable('');
diff --git a/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js
index 184f011aa..c464e3162 100644
--- a/dev/View/Popup/Compose.js
+++ b/dev/View/Popup/Compose.js
@@ -1207,7 +1207,8 @@
});
sText = '
' + sReplyTitle + ':' +
- '
' + Utils.trim(sText) + '
';
+ '' + Utils.trim(sText) + '
';
+// '' + Utils.trim(sText) + '
';
break;
@@ -1223,6 +1224,7 @@
'
' + Translator.i18n('COMPOSE/FORWARD_MESSAGE_TOP_SUBJECT') + ': ' + Utils.encodeHtml(sSubject) +
'
' + Utils.trim(sText) + '
';
break;
+
case Enums.ComposeType.ForwardAsAttachment:
sText = '';
break;
diff --git a/dev/bootstrap.js b/dev/bootstrap.js
index e039ce7cc..b15af81a6 100644
--- a/dev/bootstrap.js
+++ b/dev/bootstrap.js
@@ -23,7 +23,6 @@
Globals.$win
.keydown(Utils.kill_CtrlA_CtrlS)
- .keyup(Utils.kill_CtrlA_CtrlS)
.unload(function () {
Globals.bUnload = true;
})
diff --git a/gulpfile.js b/gulpfile.js
index ed4d16f10..dc22784a1 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -4,8 +4,8 @@
var
pkg = require('./package.json'),
head = {
- cc: '/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */',
- agpl: '/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL 3 */'
+ rainloop: '/* RainLoop Webmail (c) RainLoop Team | Licensed under RainLoop Software License */',
+ agpl: '/* RainLoop Webmail (c) RainLoop Team | Licensed under AGPL v3 */'
},
cfg = {
devVersion: '0.0.0',
@@ -46,7 +46,7 @@ var
function getHead()
{
- return !cfg.community ? head.cc : head.agpl;
+ return !cfg.community ? head.rainloop : head.agpl;
}
function regOtherMinTask(sName, sPath, sInc, sOut, sHeader)
@@ -454,7 +454,6 @@ gulp.task('ckeditor:copy-plugins', ['ckeditor:copy'], function() {
gulp.task('ckeditor', ['ckeditor:copy-plugins'], function () {
return gulp.src('rainloop/v/' + cfg.devVersion + '/static/ckeditor/*.js')
.pipe(stripbom())
-// .pipe(replace("\u200B", "\\u200B"))
.pipe(replace('console.log("Detecting changes using MutationObservers")', 'true'))
.pipe(header("\uFEFF")) // BOM
.pipe(gulp.dest('rainloop/v/' + cfg.devVersion + '/static/ckeditor'));
@@ -565,7 +564,7 @@ gulp.task('rainloop:owncloud:setup', ['rainloop:owncloud:copy',
fs.writeFileSync(dist + 'rainloop/appinfo/info.xml',
fs.readFileSync(dist + 'rainloop/appinfo/info.xml', 'utf8')
.replace('0.0', '' + versionFull + '')
- .replace('', '' + (cfg.community ? 'AGPLv3' : 'CC BY-NC-SA 3.0') + '')
+ .replace('', '' + (cfg.community ? 'AGPLv3' : 'RainLoop Software License') + '')
);
fs.writeFileSync(dist + 'rainloop/appinfo/version', versionFull);
@@ -574,7 +573,7 @@ gulp.task('rainloop:owncloud:setup', ['rainloop:owncloud:copy',
cfg.destPath = cfg.releasesPath + '/owncloud/' + versionFull + '/';
cfg.cleanPath = dist;
cfg.zipSrcPath = dist;
- cfg.zipFile = 'rainloop-owncloud-app-' + (cfg.community ? '' : 'cc-') + versionFull + '.zip';
+ cfg.zipFile = 'rainloop-owncloud-app-' + (cfg.community ? '' : 'standard-') + versionFull + '.zip';
cfg.md5File = cfg.zipFile;
});
diff --git a/package.json b/package.json
index c178dcc67..d64f347e5 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "RainLoop",
"title": "RainLoop Webmail",
- "version": "1.9.0",
- "release": "327",
+ "version": "1.9.1",
+ "release": "329",
"description": "Simple, modern & fast web-based email client",
"homepage": "http://rainloop.net",
"main": "gulpfile.js",
@@ -19,6 +19,10 @@
{
"type": "AGPL 3.0",
"ulr": "http://www.gnu.org/licenses/agpl-3.0.html"
+ },
+ {
+ "type": "RainLoop Software License",
+ "ulr": "http://www.rainloop.net/licensing/"
}
],
"bugs": {
@@ -36,7 +40,7 @@
"plugins"
],
"readmeFilename": "README.md",
- "ownCloudPackageVersion": "4.0",
+ "ownCloudPackageVersion": "4.1",
"engines": {
"node": ">= 0.10.0"
},
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/FolderCollection.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/FolderCollection.php
index 25303c8b6..4cb652e61 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/FolderCollection.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/FolderCollection.php
@@ -20,7 +20,7 @@ class FolderCollection extends \MailSo\Base\Collection
/**
* @var string
*/
- private $sNamespace;
+ public $Namespace;
/**
* @var string
@@ -49,7 +49,7 @@ class FolderCollection extends \MailSo\Base\Collection
{
parent::__construct();
- $this->sNamespace = '';
+ $this->Namespace = '';
$this->FoldersHash = '';
$this->SystemFolders = array();
$this->IsThreadsSupported = false;
@@ -96,12 +96,30 @@ class FolderCollection extends \MailSo\Base\Collection
return $mResult;
}
+ /**
+ * @return int
+ */
+ public function CountRec()
+ {
+ $iResult = $this->Count();
+ foreach ($this->aItems as /* @var $oFolder \MailSo\Mail\Folder */ $oFolder)
+ {
+ if ($oFolder)
+ {
+ $oSub = $oFolder->SubFolders();
+ $iResult += $oSub ? $oSub->CountRec() : 0;
+ }
+ }
+
+ return $iResult;
+ }
+
/**
* @return string
*/
public function GetNamespace()
{
- return $this->sNamespace;
+ return $this->Namespace;
}
/**
@@ -110,7 +128,7 @@ class FolderCollection extends \MailSo\Base\Collection
public function FindDelimiter()
{
$sDelimiter = '/';
-
+
$oFolder = $this->GetByFullNameRaw('INBOX');
if (!$oFolder)
{
@@ -132,7 +150,7 @@ class FolderCollection extends \MailSo\Base\Collection
*/
public function SetNamespace($sNamespace)
{
- $this->sNamespace = $sNamespace;
+ $this->Namespace = $sNamespace;
return $this;
}
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php
index 5b3ae9727..d8ad6896e 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php
@@ -1373,7 +1373,11 @@ class MailClient
$sCriteriasResult = \trim($sCriteriasResult);
if ('' === $sCriteriasResult)
{
- $sCriteriasResult = 'ALL';
+ $sCriteriasResult = 'NOT DELETED'; // ALL
+ }
+ else
+ {
+ $sCriteriasResult .= ' NOT DELETED';
}
return $sCriteriasResult;
diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php
index 5e1b8ad68..ee03c6720 100644
--- a/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php
+++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mime/Email.php
@@ -201,6 +201,8 @@ class Email
}
$sEmail = \trim(\trim($sEmail), '<>');
+ $sEmail = \rtrim(\trim($sEmail), '.');
+ $sEmail = \trim($sEmail);
$sName = \trim(\trim($sName), '"');
$sName = \trim($sName, '\'');
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 1f6bad09c..d94d21e3f 100644
--- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
+++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php
@@ -1353,6 +1353,7 @@ class Actions
'UseImapSubscribe' => (bool) $oConfig->Get('labs', 'use_imap_list_subscribe', true),
'AllowAppendMessage' => (bool) $oConfig->Get('labs', 'allow_message_append', false),
'MaterialDesign' => (bool) $oConfig->Get('labs', 'use_material_design', true),
+ 'FolderSpecLimit' => (int) $oConfig->Get('labs', 'folders_spec_limit', 50),
'Community' => true,
'PremType' => false,
'Admin' => array(),
@@ -9496,6 +9497,7 @@ class Actions
'FoldersHash' => isset($mResponse->FoldersHash) ? $mResponse->FoldersHash : '',
'IsThreadsSupported' => $mResponse->IsThreadsSupported,
'Optimized' => $mResponse->Optimized,
+ 'CountRec' => $mResponse->CountRec(),
'SystemFolders' => isset($mResponse->SystemFolders) && \is_array($mResponse->SystemFolders) ?
$mResponse->SystemFolders : array()
));
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 2e40f6f89..347783eb3 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
@@ -304,6 +304,7 @@ Enables caching in the system'),
'smtp_show_server_errors' => array(false),
'sieve_allow_raw_script' => array(false),
'sieve_utf8_folder_name' => array(true),
+ 'folders_spec_limit' => array(50),
'owncloud_save_folder' => array('Attachments'),
'curl_proxy' => array(''),
'curl_proxy_auth' => array(''),
diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsGeneral.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsGeneral.html
index 4733f7774..912df665c 100644
--- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsGeneral.html
+++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsGeneral.html
@@ -15,7 +15,7 @@
-
+
-
+
diff --git a/rainloop/v/0.0.0/app/templates/Views/Components/Checkbox.html b/rainloop/v/0.0.0/app/templates/Views/Components/Checkbox.html
index bd64793f3..d710e0f50 100644
--- a/rainloop/v/0.0.0/app/templates/Views/Components/Checkbox.html
+++ b/rainloop/v/0.0.0/app/templates/Views/Components/Checkbox.html
@@ -1,4 +1,4 @@
-
+
+
-
+
{{INCLUDE/BottomFooter/PLACE}}
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html b/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html
index a32889f01..4c80e0f55 100644
--- a/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html
+++ b/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html
@@ -25,7 +25,7 @@
-
+ |
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolders.html b/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolders.html
index e83c412aa..c4cd885cf 100644
--- a/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolders.html
+++ b/rainloop/v/0.0.0/app/templates/Views/User/SettingsFolders.html
@@ -32,7 +32,7 @@
-
+
|
diff --git a/rainloop/v/0.0.0/app/templates/Views/User/SettingsGeneral.html b/rainloop/v/0.0.0/app/templates/Views/User/SettingsGeneral.html
index 0bae61a34..9f96a05b4 100644
--- a/rainloop/v/0.0.0/app/templates/Views/User/SettingsGeneral.html
+++ b/rainloop/v/0.0.0/app/templates/Views/User/SettingsGeneral.html
@@ -12,7 +12,7 @@
-
+
-
+
diff --git a/rainloop/v/0.0.0/static/ckeditor/plugins/signature/plugin.js b/rainloop/v/0.0.0/static/ckeditor/plugins/signature/plugin.js
index 4a2669004..31ff05e1d 100644
--- a/rainloop/v/0.0.0/static/ckeditor/plugins/signature/plugin.js
+++ b/rainloop/v/0.0.0/static/ckeditor/plugins/signature/plugin.js
@@ -9,13 +9,26 @@ rl_signature_replacer = function (editor, sText, sSignature, bHtml, bInsertBefor
;
}
- sText = sText.replace(/\u0002([\s\S]*)\u0002/gm, '');
-
var
- bEmptyText = '' === $.trim(sText),
+ sP = '~~~~@~~~~',
+ bEmptyText = false,
sNewLine = (bHtml ? '
' : "\n")
;
+ sText = sText.replace(/\u0002([\s\S]*)\u0002/gm, sP + '$1' + sP);
+
+ if (editor.__previos_signature)
+ {
+ sText = sText
+ .replace(sP + editor.__previos_signature + sP, '')
+ .replace(sP + editor.__previos_signature + sP, '')
+ .replace(sP + editor.__previos_signature + sP, '')
+ ;
+ }
+
+ sText = sText.replace(sP, '').replace(sP, '').replace(sP, '').replace(sP, '');
+
+ bEmptyText = '' === $.trim(sText);
if (!bEmptyText && bHtml)
{
bEmptyText = '' !== $.trim(editor.__plainUtils.htmlToPlain(sText));
@@ -24,10 +37,12 @@ rl_signature_replacer = function (editor, sText, sSignature, bHtml, bInsertBefor
if (bInsertBefore)
{
sText = "\u0002" + sSignature + (bEmptyText ? '' : sNewLine) + "\u0002" + sText;
+ editor.__previos_signature = sSignature + (bEmptyText ? '' : sNewLine);
}
else
{
sText = sText + "\u0002" + (bEmptyText ? '' : sNewLine) + sSignature + "\u0002";
+ editor.__previos_signature = (bEmptyText ? '' : sNewLine) + sSignature;
}
if (!bHtml)
diff --git a/vendors/ckeditor-plugins/signature/plugin.js b/vendors/ckeditor-plugins/signature/plugin.js
index 4a2669004..31ff05e1d 100644
--- a/vendors/ckeditor-plugins/signature/plugin.js
+++ b/vendors/ckeditor-plugins/signature/plugin.js
@@ -9,13 +9,26 @@ rl_signature_replacer = function (editor, sText, sSignature, bHtml, bInsertBefor
;
}
- sText = sText.replace(/\u0002([\s\S]*)\u0002/gm, '');
-
var
- bEmptyText = '' === $.trim(sText),
+ sP = '~~~~@~~~~',
+ bEmptyText = false,
sNewLine = (bHtml ? '
' : "\n")
;
+ sText = sText.replace(/\u0002([\s\S]*)\u0002/gm, sP + '$1' + sP);
+
+ if (editor.__previos_signature)
+ {
+ sText = sText
+ .replace(sP + editor.__previos_signature + sP, '')
+ .replace(sP + editor.__previos_signature + sP, '')
+ .replace(sP + editor.__previos_signature + sP, '')
+ ;
+ }
+
+ sText = sText.replace(sP, '').replace(sP, '').replace(sP, '').replace(sP, '');
+
+ bEmptyText = '' === $.trim(sText);
if (!bEmptyText && bHtml)
{
bEmptyText = '' !== $.trim(editor.__plainUtils.htmlToPlain(sText));
@@ -24,10 +37,12 @@ rl_signature_replacer = function (editor, sText, sSignature, bHtml, bInsertBefor
if (bInsertBefore)
{
sText = "\u0002" + sSignature + (bEmptyText ? '' : sNewLine) + "\u0002" + sText;
+ editor.__previos_signature = sSignature + (bEmptyText ? '' : sNewLine);
}
else
{
sText = sText + "\u0002" + (bEmptyText ? '' : sNewLine) + sSignature + "\u0002";
+ editor.__previos_signature = (bEmptyText ? '' : sNewLine) + sSignature;
}
if (!bHtml)