He escrito un user script que ayuda a eliminar las citas ("quotes") múltiples al responder a alguien. Es molestoso dejar varias citas anidadas (
ejemplo), por lo que generalmente es necesario eliminar manualmente las citas anteriores. Este script lo hace automáticamente.
Por ejemplo, al hacer click en "quote" aquí:
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FwpYLZyZ.png&t=665&c=vrW_s4UwO_jOJA)
el script elimina la cita más antigua y deja solo la última:
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FKbSeanY.png&t=665&c=cvDvb4aIyVOL0g)
además, muestra 3 enlaces:
"Full text" vuelve a mostrar el texto completo:
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FrqYOJ14.png&t=665&c=qZSnSNfyj9OtFA)
"Latest quote" deja solo la cita más reciente (opción por emisión). Mientras que "~snip~" deja la última cita pero elimina su contenido:
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FgdFchbV.png&t=665&c=kex9BUfBIdDUmg)
Estos botones
reemplazan el contenido, por lo que deben ser usados antes de escribir nada para no perder el trabajo realizado.
Cómo instalar:
Demo:
Esta captura gif fue tomada en un teléfono Android. Funciona igual que en un computador.
Código fuente para revisión y edición:
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 = $("<span style='margin-left:35%'><a id='full_text' href='#'>Full text</a> | <a id='latest_quote' href='#'>Latest quote</a> | <a id='snip_quote' href='#'>~snip~</a></span>");
$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;
});
})();
Notas y limitaciones:
- El script no se activará si no hay citas anidadas
- Solo se activa con citas normales de la forma [ quote author=username link=.... No con citas simples (sin author o link)
- Podría comportarse de forma extraña si la cita no está al inicio, o si hay varias citas mezcladas con respuestas a esas citas. Aún estoy trabajando en eso
- Siempre revisa si el script funcionó correctamente, y haz clic en "Full text" de no ser así
Seguiré mejorando este script. Agradezco que publiquen sus comentarios en este thread (en español), o
aquí, en inglés, que seguramente será actualizado más frecuentemente.