Zum Inhalt springen

MediaWiki:Gadget-CodeHelper.js

Aus Home Wiki
Version vom 14. Februar 2026, 11:20 Uhr von Saya (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „// Gadget: CodeHelper // Fügt allen Codeblöcken Copy-Button + Platzhalterleiste hinzu (function () { 'use strict'; // Hilfsfunktion: Copy to Clipboard function copyToClipboard(text) { navigator.clipboard.writeText(text).then(() => { alert("✅ Code kopiert!"); }, () => { alert("❌ Kopieren fehlgeschlagen!"); }); } // Alle Codeblöcke auf der Seite const codeBlocks = document.quer…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// Gadget: CodeHelper
// Fügt allen Codeblöcken Copy-Button + Platzhalterleiste hinzu
(function () {
    'use strict';

    // Hilfsfunktion: Copy to Clipboard
    function copyToClipboard(text) {
        navigator.clipboard.writeText(text).then(() => {
            alert("✅ Code kopiert!");
        }, () => {
            alert("❌ Kopieren fehlgeschlagen!");
        });
    }

    // Alle Codeblöcke auf der Seite
    const codeBlocks = document.querySelectorAll('pre, code.syntaxhighlight');

    codeBlocks.forEach((block, index) => {
        // ID setzen, falls nicht vorhanden
        if (!block.id) block.id = `codehelper-block-${index}`;

        // Container für Leiste und Code
        const container = document.createElement('div');
        container.classList.add('codehelper-container');

        // Platzhalter-Leiste
        const toolbar = document.createElement('div');
        toolbar.classList.add('codehelper-toolbar');

        // Hier kannst du beliebige Variablen einfügen
        // Standard: {folder}
        const folderInput = document.createElement('input');
        folderInput.type = 'text';
        folderInput.placeholder = 'Ordner';
        folderInput.value = ''; // leer initial

        // Button zum Anwenden der Variablen
        const applyBtn = document.createElement('button');
        applyBtn.textContent = 'Variablen anwenden';
        applyBtn.addEventListener('click', () => {
            let code = block.textContent;
            // Platzhalter ersetzen
            code = code.replace(/\{\{folder\}\}/g, folderInput.value || 'wiki');
            block.textContent = code;
        });

        // Copy-Button
        const copyBtn = document.createElement('button');
        copyBtn.textContent = '📋 Kopieren';
        copyBtn.addEventListener('click', () => {
            copyToClipboard(block.textContent);
        });

        // Toolbar zusammenbauen
        toolbar.appendChild(folderInput);
        toolbar.appendChild(applyBtn);
        toolbar.appendChild(copyBtn);

        // Container zusammenbauen
        block.parentNode.insertBefore(container, block);
        container.appendChild(toolbar);
        container.appendChild(block);
    });

    // Optional: ein bisschen CSS für die Leiste
    const style = document.createElement('style');
    style.textContent = `
        .codehelper-container { margin-bottom: 1em; }
        .codehelper-toolbar {
            margin-bottom: 0.2em;
            display: flex;
            gap: 0.5em;
        }
        .codehelper-toolbar input {
            padding: 0.2em 0.4em;
            flex: 1;
        }
        .codehelper-toolbar button {
            padding: 0.2em 0.6em;
            cursor: pointer;
        }
    `;
    document.head.appendChild(style);

})();