Скрипт для закрытия и архивации тем в Discourse

Вы администратор или только модератор? Если вы администратор, то, вероятно, можете создать компонент темы вместо того, чтобы полагаться на пользовательский скрипт.

Тем не менее, для сайтов, где вы не можете редактировать код, пользовательские скрипты остаются интересным решением для различных улучшений.

Я использую их на многих веб-сайтах.

На meta.discourse.org у меня есть скрипт, который добавляет сочетание клавиш Ctrl+Shift+k для оборачивания выделенного текста тегами <kbd> в редакторе :slight_smile:

// ==UserScript==
// @name         Сочетание клавиш <kbd> для meta.discourse.org
// @namespace    Скрипты Violentmonkey
// @version      1.0
// @description  Вставка тегов <kbd> в текстовые области на meta.discourse.org с помощью 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();
            }
        }
    });
})();

Кроме того, я не использую Tampermonkey, так как он имеет закрытый исходный код; я предпочитаю программное обеспечение с открытым исходным кодом. Есть несколько альтернатив (все они выглядят похоже, а скрипты совместимы между собой). Думаю, наиболее популярным является Violentmonkey.

1 лайк