Script de usuario para cerrar y archivar temas en Discourse

¿Eres administrador o solo moderador? Si eres administrador, probablemente podrías crear un componente de tema en lugar de depender de un script de usuario.

Dicho esto, para sitios en los que no puedes editar el código, los scripts de usuario siguen siendo una solución interesante para varias mejoras.

Los uso para muchos sitios web.

En meta.discourse.org, tengo uno que agrega un atajo de Ctrl+Shift+k para rodear mi texto seleccionado con etiquetas <kbd> dentro del compositor :slight_smile:

// ==UserScript==
// @name         Atajo de <kbd> para meta.discourse.org
// @namespace    Violentmonkey Scripts
// @version      1.0
// @description  Inserta etiquetas <kbd> en textareas en meta.discourse.org con Ctrl + Shift + k
// @author       chatGPT
// @match        https://meta.discourse.org/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    document.addEventListener('keydown', function(event) {
        if (event.ctrlKey && event.shiftKey && event.key === 'K') {
            const activeElement = document.activeElement;
            if (activeElement.tagName === 'TEXTAREA' && activeElement.classList.contains('ember-text-area')) {
                const start = activeElement.selectionStart;
                const end = activeElement.selectionEnd;
                const text = activeElement.value;
                const insertText = '<kbd>';
                const closeText = '</kbd>';

                const selectedText = text.slice(start, end);
                activeElement.value = text.slice(0, start) + insertText + selectedText + closeText + text.slice(end);

                const cursorPosition = end === start
                    ? start + insertText.length
                    : start + insertText.length + selectedText.length + closeText.length;

                activeElement.selectionStart = activeElement.selectionEnd = cursorPosition;

                event.preventDefault();
            }
        }
    });
})();

Además, no uso Tampermonkey ya que es de código cerrado, prefiero usar software de código abierto, y hay varios contendientes (todos se ven iguales y los scripts son compatibles entre sí). Creo que el más utilizado es Violentmonkey.

1 me gusta