mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-02 14:07:04 +03:00
Fixed strange characters in plain text mode (Firefox) (Closes #462)
This commit is contained in:
parent
2a90664574
commit
e3064b10aa
24 changed files with 206 additions and 159 deletions
|
|
@ -1,10 +1,18 @@
|
|||
|
||||
rl_signature_replacer = function (editor, sText, sSignature, bHtml, bInsertBefore)
|
||||
{
|
||||
if (!bHtml)
|
||||
{
|
||||
sText = sText
|
||||
.replace(/\u200C\u200C/g, '\u0002\u0002')
|
||||
.replace(/\u200D\u200D/g, '\u0003\u0003')
|
||||
;
|
||||
}
|
||||
|
||||
var
|
||||
sTextWithoutSignature = sText
|
||||
.replace(/\u0002\u0002[\s\S]*\u0003\u0003/gm, '')
|
||||
.replace(/\u0004\u0004[\s\S]*\u0005\u0005/gm, ''),
|
||||
.replace(/\u0002\u0002[\s\S]*\u0002\u0002/gm, '')
|
||||
.replace(/\u0003\u0003[\s\S]*\u0003\u0003/gm, ''),
|
||||
bEmptyText = '' === $.trim(sTextWithoutSignature),
|
||||
sNewLine = (bHtml ? '<br />' : "\n")
|
||||
;
|
||||
|
|
@ -16,23 +24,31 @@ rl_signature_replacer = function (editor, sText, sSignature, bHtml, bInsertBefor
|
|||
|
||||
if (!/\u0002\u0002/gm.test(sText))
|
||||
{
|
||||
sText = "\u0002\u0002\u0003\u0003" + sText;
|
||||
sText = "\u0002\u0002\u0002\u0002" + sText;
|
||||
}
|
||||
|
||||
if (!/\u0004\u0004/gm.test(sText))
|
||||
if (!/\u0003\u0003/gm.test(sText))
|
||||
{
|
||||
sText = sText + "\u0004\u0004\u0005\u0005";
|
||||
sText = sText + "\u0003\u0003\u0003\u0003";
|
||||
}
|
||||
|
||||
if (bInsertBefore)
|
||||
{
|
||||
sText = sText.replace(/\u0002\u0002[\s\S]*\u0003\u0003/gm, "\u0002\u0002" + sSignature + sNewLine + "\u0003\u0003");
|
||||
sText = sText.replace(/\u0004\u0004[\s\S]*\u0005\u0005/gm, "\u0004\u0004\u0005\u0005");
|
||||
sText = sText.replace(/\u0002\u0002[\s\S]*\u0002\u0002/gm, "\u0002\u0002" + sSignature + (bEmptyText ? '' : sNewLine) + "\u0002\u0002");
|
||||
sText = sText.replace(/\u0003\u0003[\s\S]*\u0003\u0003/gm, "\u0003\u0003\u0003\u0003");
|
||||
}
|
||||
else
|
||||
{
|
||||
sText = sText.replace(/\u0002\u0002[\s\S]*\u0003\u0003/gm, "\u0002\u0002\u0003\u0003");
|
||||
sText = sText.replace(/\u0004\u0004[\s\S]*\u0005\u0005/gm, "\u0004\u0004" + (bEmptyText ? '' : sNewLine) + sSignature + "\u0005\u0005");
|
||||
sText = sText.replace(/\u0002\u0002[\s\S]*\u0002\u0002/gm, "\u0002\u0002\u0002\u0002");
|
||||
sText = sText.replace(/\u0003\u0003[\s\S]*\u0003\u0003/gm, "\u0003\u0003" + (bEmptyText ? '' : sNewLine) + sSignature + "\u0003\u0003");
|
||||
}
|
||||
|
||||
if (!bHtml)
|
||||
{
|
||||
sText = sText
|
||||
.replace(/\u0002\u0002/g, '\u200C\u200C')
|
||||
.replace(/\u0003\u0003/g, '\u200D\u200D')
|
||||
;
|
||||
}
|
||||
|
||||
return sText;
|
||||
|
|
@ -42,40 +58,58 @@ CKEDITOR.plugins.add('signature', {
|
|||
init: function(editor) {
|
||||
editor.addCommand('insertSignature', {
|
||||
modes: { wysiwyg: 1, plain: 1 },
|
||||
exec: function (editor, cfg) {
|
||||
exec: function (editor, cfg)
|
||||
{
|
||||
|
||||
var
|
||||
bIsHtml = false,
|
||||
bInsertBefore = false,
|
||||
sSignature = ''
|
||||
sSignature = '',
|
||||
sResultSignature = ''
|
||||
;
|
||||
|
||||
if (cfg) {
|
||||
if (cfg)
|
||||
{
|
||||
bIsHtml = undefined === cfg.isHtml ? false : !!cfg.isHtml;
|
||||
bInsertBefore = undefined === cfg.insertBefore ? false : !!cfg.insertBefore;
|
||||
sSignature = undefined === cfg.signature ? '' : cfg.signature;
|
||||
}
|
||||
|
||||
try {
|
||||
if ('plain' === editor.mode && editor.__plain && editor.__plainUtils) {
|
||||
if (bIsHtml && editor.__plainUtils.htmlToPlain) {
|
||||
sSignature = editor.__plainUtils.htmlToPlain(sSignature);
|
||||
sResultSignature = sSignature;
|
||||
|
||||
try
|
||||
{
|
||||
if ('plain' === editor.mode && editor.__plain && editor.__plainUtils)
|
||||
{
|
||||
if (editor.__plainUtils && editor.__plainUtils.htmlToPlain)
|
||||
{
|
||||
if (bIsHtml)
|
||||
{
|
||||
sResultSignature = editor.__plainUtils.htmlToPlain(sResultSignature);
|
||||
}
|
||||
}
|
||||
|
||||
editor.__plain.setRawData(
|
||||
rl_signature_replacer(editor,
|
||||
editor.__plain.getRawData(), sSignature, false, bInsertBefore));
|
||||
editor.__plain.getRawData(), sResultSignature, false, bInsertBefore));
|
||||
|
||||
} else {
|
||||
if (!bIsHtml && editor.__plainUtils && editor.__plainUtils.plainToHtml) {
|
||||
sSignature = editor.__plainUtils.plainToHtml(sSignature);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (editor.__plainUtils && editor.__plainUtils.plainToHtml)
|
||||
{
|
||||
if (!bIsHtml)
|
||||
{
|
||||
sResultSignature = editor.__plainUtils.plainToHtml(sResultSignature);
|
||||
}
|
||||
}
|
||||
|
||||
editor.setData(
|
||||
rl_signature_replacer(editor,
|
||||
editor.getData(), sSignature, true, bInsertBefore));
|
||||
editor.getData(), sResultSignature, true, bInsertBefore));
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
catch (e) {}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue