Script utilisateur pour fermer et archiver un sujet sur Discourse

Êtes-vous un administrateur ou seulement un modérateur ? Si vous êtes administrateur, vous pourriez probablement créer un composant de thème au lieu de vous fier à un script utilisateur.

Cela dit, pour les sites sur lesquels vous ne pouvez pas modifier le code, les scripts utilisateur restent une solution intéressante pour diverses améliorations.

Je les utilise pour de nombreux sites Web.

Sur meta.discourse.org, j’en ai un qui ajoute un raccourci Ctrl+Shift+k pour entourer mon texte sélectionné avec des balises ` dans l’éditeur :slight_smile:

// ==UserScript==
// @name         Raccourci <kbd> pour meta.discourse.org
// @namespace    Violentmonkey Scripts
// @version      1.0
// @description  Insère des balises <kbd> dans les zones de texte sur meta.discourse.org avec 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();
            }
        }
    });
})();

De plus, je n’utilise pas Tampermonkey car il est propriétaire, je préfère utiliser des logiciels open source, et il existe plusieurs concurrents (ils se ressemblent tous et les scripts sont compatibles entre eux). Je pense que le plus utilisé est Violentmonkey.

1 « J'aime »