Usuário:BraunOBruno/CopSec.js

Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
mw.loader.load( 'https://pt.wiki.x.io/w/index.php?title=User:BraunOBruno/CopSec.css&action=raw&ctype=text/css', 'text/css' );

$(document).ready(function() {
    // Função para normalizar o nome da seção para ser usado no link
    function normalizeSectionName(sectionName) {
        return sectionName.trim().replace(/\s+/g, '_');
    }

    // Pegar o título da página
    var pageTitle = mw.config.get('wgPageName').replace(/_/g, ' ');

    // Iterar sobre todos os cabeçalhos de seção dentro do corpo do artigo
    $('.mw-parser-output h1, .mw-parser-output h2, .mw-parser-output h3, .mw-parser-output h4, .mw-parser-output h5, .mw-parser-output h6').each(function() {
        var header = $(this);
        var sectionId = header.attr('id');

        // Apenas prosseguir se o cabeçalho tiver um ID
        if (sectionId) {
            // Criar o botão "copiar seção" com a classe copy-section-btn
            var copyButton = $('<a>')
                .text('copiar seção')
                .attr('href', '#')
                .addClass('copy-section-btn')
                .click(function(event) {
                    event.preventDefault(); // Previne o comportamento padrão do link
                    var sectionLink = `[[${pageTitle}#${sectionId.replace(/_/g, ' ')}]]`;
                    navigator.clipboard.writeText(sectionLink).then(function() {
                        // alert('Link da seção copiado: ' + sectionLink);
                    }, function(err) {
                        console.error('Erro ao copiar o texto: ', err);
                    });
                });

            // Adicionar o botão ao lado do cabeçalho
            header.append(copyButton);
        }
    });
});