Usuário:BraunOBruno/Traduzido.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.
javascript:(function(){
    function copyToClipboard(text){
        const textarea = document.createElement('textarea');
        textarea.value = text;
        document.body.appendChild(textarea);
        textarea.select();
        document.execCommand('copy');
        document.body.removeChild(textarea);
    }

    function getLastRevisionCode(lang, title, callback){
        const url = `https://${lang}.wiki.x.io/w/api.php?action=query&prop=revisions&titles=${title}&rvlimit=1&rvprop=ids&format=json&origin=*`;
        fetch(url)
        .then(response => response.json())
        .then(data => {
            const pages = data.query.pages;
            const pageId = Object.keys(pages)[0];
            const revisionId = pages[pageId].revisions[0].revid;
            callback(revisionId, pages[pageId].title);
        })
        .catch(error => console.error('Erro ao obter o código da última revisão:', error));
    }

    function getCurrentDate(){
        const date = new Date();
        const day = date.getDate();
        const monthNames = ["janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"];
        const month = monthNames[date.getMonth()];
        const year = date.getFullYear();
        return `${day} de ${month} de ${year}`;
    }

    function createPopup(callback){
        const popup = document.createElement('div');
        popup.style.position = 'fixed';
        popup.style.top = '50%';
        popup.style.left = '50%';
        popup.style.transform = 'translate(-50%, -50%)';
        popup.style.padding = '20px';
        popup.style.backgroundColor = '#fff';
        popup.style.border = '1px solid #000';
        popup.style.zIndex = '10000';

        const label = document.createElement('label');
        label.textContent = 'Selecione o valor para |fontes = : ';
        popup.appendChild(label);

        const select = document.createElement('select');
        const options = ['', 'SEM', 'NV', 'V', 'NT'];
        options.forEach(option => {
            const opt = document.createElement('option');
            opt.value = option;
            opt.textContent = option === '' ? 'Em branco' : option;
            if (option === 'NV') opt.selected = true;
            select.appendChild(opt);
        });
        popup.appendChild(select);

        const button = document.createElement('button');
        button.textContent = 'Copiar';
        button.onclick = function(){
            const selectedValue = select.value;
            document.body.removeChild(popup);
            callback(selectedValue);
        };
        popup.appendChild(button);

        const cancelButton = document.createElement('button');
        cancelButton.textContent = 'Cancelar';
        cancelButton.onclick = function(){
            document.body.removeChild(popup);
        };
        popup.appendChild(cancelButton);

        document.addEventListener('keydown', function(event){
            if (event.key === 'Escape') {
                document.body.removeChild(popup);
            }
        });

        document.body.appendChild(popup);
    }

    const lang = window.location.hostname.split('.')[0];
    let title = window.location.pathname.split('/wiki/')[1];
    if(!title){
        alert('Não foi possível obter o título da página.');
        return;
    }

    createPopup(function(selectedFontesValue){
        getLastRevisionCode(lang, title, function(revisionId, fullTitle){
            const titUrl = fullTitle.replaceAll(' ', '_');
            const currentDate = getCurrentDate();
            const url = `https://${lang}.wiki.x.io/w/index.php?title=${titUrl}&oldid=${revisionId}`;
            const oldIdText = `[${url} ${revisionId}]`;
            const text = `{{PD}}\n{{Traduzido\n|texto  = ${lang}:${fullTitle}\n|oldid original = ${oldIdText}\n|data   = ${currentDate}\n|fontes = ${selectedFontesValue}\n}}`;
            copyToClipboard(text);
        });
    });
})();