FIX: Quoting posts (#9378)

Fixes to the quote feature. Most important changes listed below:

* FIX: Correctly attribute quotes when using Reply button
* FIX: Correctly attribute quotes when using replyAsNewTopic
* FIX: Allow quoting a quote
* FIX: Correctly mark quotes as "full"
* FIX: Don't try to create a quote if it's empty
* DEV: Remove an obsolete method `loadQuote`
  It isn't used in core anymore, the only use in core has been removed over 4 years ago in 3251bcb. It's not used in any plugins in all-the-plugins and all references to it on GitHub are from outdated forks (https://github.com/search?q=%22Post.loadQuote%22&type=Code)
This commit is contained in:
Jarek Radosz
2020-04-08 16:28:23 +02:00
committed by GitHub
parent 8e1bdc9458
commit ae1a391377
11 changed files with 153 additions and 106 deletions

View File

@@ -328,15 +328,19 @@ QUnit.test("View Hidden Replies", async assert => {
assert.equal(find(".gap").length, 0, "it hides gap");
});
QUnit.test("Quoting a quote keeps the original poster name", async assert => {
await visit("/t/internationalization-localization/280");
function selectText(selector) {
const range = document.createRange();
const node = document.querySelector(selector);
range.selectNodeContents(node);
const selection = window.getSelection();
const range = document.createRange();
range.selectNodeContents($("#post_5 blockquote")[0]);
selection.removeAllRanges();
selection.addRange(range);
}
QUnit.test("Quoting a quote keeps the original poster name", async assert => {
await visit("/t/internationalization-localization/280");
selectText("#post_5 blockquote");
await click(".quote-button");
assert.ok(
@@ -346,6 +350,52 @@ QUnit.test("Quoting a quote keeps the original poster name", async assert => {
);
});
QUnit.test(
"Quoting a quote with the Reply button keeps the original poster name",
async assert => {
await visit("/t/internationalization-localization/280");
selectText("#post_5 blockquote");
await click(".reply");
assert.ok(
find(".d-editor-input")
.val()
.indexOf('quote="codinghorror said, post:3, topic:280"') !== -1
);
}
);
QUnit.test(
"Quoting a quote with replyAsNewTopic keeps the original poster name",
async assert => {
await visit("/t/internationalization-localization/280");
selectText("#post_5 blockquote");
await keyEvent(document, "keypress", "j".charCodeAt(0));
await keyEvent(document, "keypress", "t".charCodeAt(0));
assert.ok(
find(".d-editor-input")
.val()
.indexOf('quote="codinghorror said, post:3, topic:280"') !== -1
);
}
);
QUnit.test(
"Quoting by selecting text can mark the quote as full",
async assert => {
await visit("/t/internationalization-localization/280");
selectText("#post_5 .cooked");
await click(".quote-button");
assert.ok(
find(".d-editor-input")
.val()
.indexOf('quote="pekka, post:5, topic:280, full:true"') !== -1
);
}
);
acceptance("Topic + Post Bookmarks with Reminders", {
loggedIn: true,
settings: {