diff --git a/plugins/hide_blockquote/hide_blockquote.js b/plugins/hide_blockquote/hide_blockquote.js index ebc885a8d64..b7856711f5c 100644 --- a/plugins/hide_blockquote/hide_blockquote.js +++ b/plugins/hide_blockquote/hide_blockquote.js @@ -17,57 +17,64 @@ if (window.rcmail) { rcmail.addEventListener('init', function () { - hide_blockquote(); - }); -} + var limit = rcmail.env.blockquote_limit; -function hide_blockquote() { - var limit = rcmail.env.blockquote_limit; + if (limit <= 0) { + return; + } - if (limit <= 0) { - return; - } + $('.framed-message-part').each(function (_id, iframe) { + $(iframe).on('load', function () { + $(iframe.contentDocument).find('.message-part div.pre > blockquote').each(function (_id, elem) { + hide_blockquote(elem, limit); + }); + window.dispatchEvent(new Event('resize')); + }); + }); + }); +} - $('div.message-part div.pre > blockquote', $('#messagebody')).each(function () { - var res, text, div, link, q = $(this); +function hide_blockquote(elem, limit) { + var res, text, div, link, q = $(elem); - // Add new-line character before each blockquote - // This fixes counting lines of text, it also prevents - // from merging lines from different quoting level - $('blockquote').before(document.createTextNode('\n')); + // Add new-line character before each blockquote + // This fixes counting lines of text, it also prevents + // from merging lines from different quoting level + $('blockquote').before(document.createTextNode('\n')); - text = q.text().trim(); - res = text.split(/\n/); + text = q.text().trim(); + res = text.split(/\n/); - if (res.length <= limit) { - // there can be also a block with very long wrapped line - // assume line height = 15px - if (q.height() <= limit * 15) { - return; - } + if (res.length <= limit) { + // there can be also a block with very long wrapped line + // assume line height = 15px + if (q.height() <= limit * 15) { + return; } + } - div = $('
') - .css({ 'white-space': 'nowrap', overflow: 'hidden', position: 'relative' }) - .text(res[0]); + div = $('
') + .css({ 'white-space': 'nowrap', overflow: 'hidden', position: 'relative' }) + .text(res[0]); - link = $('') - .css({ position: 'absolute', 'z-Index': 2 }) - .text(rcmail.get_label('hide_blockquote.show')) - .data('parent', div) - .click(function () { - var t = $(this), parent = t.data('parent'), visible = parent.is(':visible'); + link = $('') + .css({ position: 'absolute', 'z-Index': 2 }) + .text(rcmail.get_label('hide_blockquote.show')) + .data('parent', div) + .click(function () { + var t = $(this), parent = t.data('parent'), visible = parent.is(':visible'); - t.text(rcmail.get_label(visible ? 'hide' : 'show', 'hide_blockquote')) - .detach().appendTo(visible ? q : parent).toggleClass('collapsed'); + t.text(rcmail.get_label(visible ? 'hide' : 'show', 'hide_blockquote')) + .detach().appendTo(visible ? q : parent).toggleClass('collapsed'); - parent[visible ? 'hide' : 'show'](); - q[visible ? 'show' : 'hide'](); - }); + parent[visible ? 'hide' : 'show'](); + q[visible ? 'show' : 'hide'](); - link.appendTo(div); + window.dispatchEvent(new Event('resize')); + }); - // Modify blockquote - q.hide().css({ position: 'relative' }).before(div); - }); + link.appendTo(div); + + // Modify blockquote + q.hide().css({ position: 'relative' }).before(div); } diff --git a/skins/elastic/styles/styles.less b/skins/elastic/styles/styles.less index 4932783d575..e4b4ab28fe7 100644 --- a/skins/elastic/styles/styles.less +++ b/skins/elastic/styles/styles.less @@ -368,7 +368,7 @@ body.task-error-login #layout { span.blockquote-link { top: 0; cursor: pointer; - right: .5rem; + right: 4.5rem; min-width: 4rem; padding: .2rem .25rem .2rem .5rem; font-size: 90%; @@ -396,7 +396,8 @@ body.task-error-login #layout { &.blockquote-header { text-overflow: ellipsis !important; - padding-right: 5rem !important; + padding-right: 4.5rem !important; + min-height: 3ex; } } }