Fix signature adding

This commit is contained in:
RainLoop Team 2016-08-31 00:31:51 +03:00
parent b8e0303fc4
commit 6b1fd1239f
3 changed files with 37 additions and 14 deletions

View file

@ -58,10 +58,23 @@ class HtmlEditor
return this.editor ? 'wysiwyg' === this.editor.mode : false;
}
/**
* @returns {void}
*/
clearCachedSignature() {
if (this.editor)
{
this.editor.execCommand('insertSignature', {
clearCache: true
});
}
}
/**
* @param {string} signature
* @param {bool} html
* @param {bool} insertBefore
* @returns {void}
*/
setSignature(signature, html, insertBefore) {
if (this.editor)
@ -163,6 +176,8 @@ class HtmlEditor
setHtml(html, focus) {
if (this.editor && this.__inited)
{
this.clearCachedSignature();
this.modeToggle(true);
html = html.replace(/<p[^>]*><\/p>/ig, '');
@ -193,6 +208,8 @@ class HtmlEditor
setPlain(plain, focus) {
if (this.editor && this.__inited)
{
this.clearCachedSignature();
this.modeToggle(false);
if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain)
{

View file

@ -869,13 +869,13 @@ class ComposePopupView extends AbstractViewNext
return signature;
}
setSignatureFromIdentity(oIdentity) {
if (oIdentity)
setSignatureFromIdentity(identity) {
if (identity)
{
this.editor((editor) => {
let
isHtml = false,
signature = oIdentity.signature();
signature = identity.signature();
if ('' !== signature)
{
@ -886,7 +886,7 @@ class ComposePopupView extends AbstractViewNext
}
}
editor.setSignature(this.converSignature(signature), isHtml, !!oIdentity.signatureInsertBefore());
editor.setSignature(this.converSignature(signature), isHtml, !!identity.signatureInsertBefore());
});
}
}

View file

@ -32,14 +32,14 @@
editor.__previos_signature_is_html = false;
}
skipInsert = true;
skipInsert = false;
if (isHtml)
{
var clearSig = clearHtmlLine(editor.__previos_signature);
text = text.replace(/<signature>([\s\S]*)<\/signature>/igm, function(all){
var c = clearSig === clearHtmlLine(all);
if (c) {
skipInsert = false;
if (!c) {
skipInsert = true;
}
return c ? '' : all;
});
@ -51,9 +51,9 @@
.replace('' + editor.__previos_signature, '')
.replace('' + editor.__previos_signature, '');
if (textLen > text.length)
if (textLen === text.length)
{
skipInsert = false;
skipInsert = true;
}
}
}
@ -81,15 +81,21 @@
CKEDITOR.plugins.add('signature', {
init: function(editor) {
editor.addCommand('insertSignature', {
modes: { wysiwyg: 1, plain: 1 },
exec: function (editor, cfg)
modes: {wysiwyg: 1, plain: 1},
exec: function(editor, cfg) {
if (cfg && cfg.clearCache)
{
editor.__previos_signature = undefined;
editor.__previos_signature_is_html = undefined;
return true;
}
var
bIsHtml = false,
bInsertBefore = false,
sSignature = '',
sResultSignature = ''
;
sResultSignature = '';
if (cfg)
{