Чтобы избавиться от лишних цитат при цитировании оверквотинга
EcuaMobi написал
скрипт по работе с цитатами.
После установки скрипт добавляет три кнопки-ссылки:
1.
Full text - возвращает на место весь оверквотинг (всё как было);
2.
Latest quote - удаляет из оверквотинга все цитаты, кроме последней;
3.
~snip~ - удаляет весь оверквотинг и в последней цитате меняет весь текст на ~snip~ (вырезано).
Важно: все действия с цитатами с помощью этих кнопок нужно производить
до того как вы начнёте набирать свой комментарий. Иначе вы потеряете всё, что вы написали.
Установка скрипта не составляет труда. У вас должно быть установлено расширение для браузера: Tampermonkey для Chrome, Greasemonkey для Firefox, или Violentmonkey для Opera.
Можно установить скрипт по этой ссылке
https://openuserjs.org/scripts/EcuaMobi/Quote_plusИсходный код скрипта
https://openuserjs.org/scripts/EcuaMobi/Quote_plus/source// ==UserScript==
// @name Quote plus
// @namespace ecuamobi
// @author EcuaMobi
// @include https://bitcointalk.org/index.php?action=post;quote=*
// @require https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js
// @version 1.0
// @license MIT
// @grant none
// ==/UserScript==
(() => {
var full_text = document.forms.postmodify.message.value;
var regex = /\[quote author/gi,
result, indices = [];
// Find second [quote]
var i = 0;
var start2 = 0;
var end2 = 0;
while ((result = regex.exec(full_text))) {
i++;
if (2 == i) {
start2 = result.index;
break;
}
}
regex = /\[\/quote\]/gi, result, indices = [];
var last = 0;
while ((result = regex.exec(full_text))) {
if (last > 0) {
end2 = last + 8;
}
last = result.index;
}
// Are there several quotes?
if (start2 == 0 || end2 == 0) {
// Abort
return;
}
// Get text to use for every option
var latest_quote = full_text.substr(0, start2).trim() + '\n' + full_text.substr(end2).trim() + '\n';
var snip_quote = full_text.substr(0, start2).trim() + '~snip~[/quote]\n';
full_text = full_text.trim() + '\n';
// By default use the latest quote. REPLACE THIS BY snip_quote OR REMOVE IF DESIRED
document.forms.postmodify.message.value = latest_quote;
// Add buttons to manually use full text, latest quote or snip
const $links = $("
Full text | Latest quote | ~snip~");
$links.insertAfter($("#postMoreOptions"));
$("#full_text").click((e) => {
e.preventDefault();
document.forms.postmodify.message.value = full_text;
});
$("#latest_quote").click((e) => {
e.preventDefault();
document.forms.postmodify.message.value = latest_quote;
});
$("#snip_quote").click((e) => {
e.preventDefault();
document.forms.postmodify.message.value = snip_quote;
});
})();
Примечания и ограничения:
- скрипт не будет работать, если нет вложенных цитат;
- скрипт учитывает только цитаты вида "[ quote author=username link=...". Обычный тег [ quote] не учитывается;
- скрипт может не работать, если вложенные цитаты находятся не в начале поста или цитаты смешаны с ответами на эти цитаты;
- вы должны проверять с помощью "Preview" как отработал скрипт, в противном случае вы можете вернуть всё как и было, нажав на кнопку "Full text".
Так как
EcuaMobi продолжит работу над развитием скрипта, комментарии и пожелания по работе скрипта в топике автора приветствуются.