Usuario:Superzerocool/vector.js

De Wikipedia, la enciclopedia libre

Nota: Después de guardar, debes refrescar la caché de tu navegador para ver los cambios. Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar. Firefox: mientras presionas Mayús pulsas el botón Actualizar, (o presiona Ctrl-Shift-R). Los usuarios de Google Chrome y Safari pueden simplemente pulsar el botón Recargar. Para más detalles e instrucciones acerca de otros exploradores, véase Ayuda:Cómo limpiar la caché.

(function ($, mw) {
    'use strict';

    var user = mw.config.get('wgUserName'),
        sLink = 'Mantención con script (v. 0.2) ',
        url = mw.config.get('wgScriptPath') + '/api.php',
        page = mw.config.get('wgPageName'),
        ticket = null,
        edittoken = null,
        content = null,
        timestamp = null,
        motivoBorrado = ['[[WP:BR#A4|No enciclopédico]]', '[[WP:BR#G1|Vandalismo]]', '[[WP:BR#G3|Promocional o conflicto de intereses]]', '[[WP:BR#G4|Pruebas de edición]]'],
        mantenimiento = [
            ['{'+'sra|{' + '{subst:CURRENTDAY}' + '}|{' + '{subst:CURRENTMONTH}}}}', 'Sin relevancia enciclopédica'],
            ['{'+'{referencias|t={' + '{subst:CURRENTTIMESTAMP}' + '}}}', 'Referencias'],
            ['{'+'{complejo}}', 'Complejo'],
            ['{'+'{copyedit}}', 'Ortografía y gramática'],
            ['{'+'{wikificar|t={' + '{subst:CURRENTTIMESTAMP}' + '}}}', 'Wikificar'],
            ['{'+'{no neutralidad}}', 'No es neutral'],
            ['{' + '{subst:contextualizar}}', 'Contextualizar'],
            ['{' + '{subst:fuente primaria}}', 'Fuente primaria'],
            ['{' + '{subst:promocional}}', 'Promocional'],
            ['{' + '{subst:autotrad}}', 'Traducción automática'],
            ['{'+'{mal traducido}}', 'Mal traducido']
        ];

    if (!user) {
        return;
    }

    function _prompt(text, pg, borrado) {
        var type = 'errorbox',
            title = borrado ? 'Borrado rápido' : 'Mantenimiento',
            $ticket = $('<select>'),
            $option = $('<option>');
        if (borrado) {
            $.each(motivoBorrado, function (i, e) {
                var $opt = $option.clone();
                $opt.text(e);
                $ticket.append($opt);
            });
        } else {
            $.each(mantenimiento, function (i, e) {
                var $opt = $option.clone();
                $opt.text(e[1]).val(e[0]);
                $ticket.append($opt);
            });
        }
        if (!text) {
            title = 'Debe indicar un motivo';
            text = 'Debe indicar un motivo.';
        } else {
            type = '';
        }
        text = $('<label>').attr({
            'for': 'OTRSdialog',
            'class': type
        }).text(text);
        $('<div>').append([text, $ticket]).dialog({
            width: 400,
            dialogClass: "wikiEditor-toolbar-dialog",
            resizable: false,
            modal: true,
            title: title,
            close: function () {
                $(this).dialog("destroy");
                $(this).remove();
            },
            buttons: [{
                text: "OK",
                click: function () {
                    ticket = $ticket ? $.trim($ticket.val()) : '';
                    $(this).dialog("close");
                    if (ticket) {
                        // Check if ticket is valid
                        _getPage(pg);
                    }
                }
            }]
        });
    }

    function _addTemplate(template) {
        var text = content;
        content = template + "\n" + text;
        _savePage(sLink);
    }

    window.delete_page = function delete_page() {
        _addTemplate('{'+'{d|' + ticket + '}}');
    };

    window.mantenimiento = function mantenimiento() {
        _addTemplate(ticket);
    };

    function _savePage(summary) {
        var params = {
            action: 'edit',
            summary: summary,
            watchlist: 'preferences',
            title: page,
            token: edittoken,
            text: content,
            format: 'json'
        };
        $.ajax({
            url: url,
            cache: false,
            dataType: 'json',
            data: params,
            basetimestamp: timestamp,
            type: 'POST',
            success: function () {
                window.location.reload();
            }
        });
    }

    function _getPage(pg) {
        $.getJSON(url, {
            action: "query",
            format: "json",
            prop: "info|revisions",
            intoken: "edit",
            rvprop: "content|timestamp",
            titles: page
        }, function (r) {
            var pages = r.query.pages;
            for (var id in pages) {
                if (pages.hasOwnProperty(id)) {
                    pages = pages[id];
                    edittoken = pages.edittoken;
                    content = pages.revisions[0]['*'];
                    timestamp = pages.revisions[0].timestamp;
                    return pg();
                }
            }
        });
    }

    window.dialogBR = function dialogBR(pg) {
        _prompt('Indique el motivo de borrado:', pg, true);
    };

    window.dialogMant = function dialogMant(pg) {
        _prompt('Indique la acción de mantenimiento a hacer:', pg, false);
    };

    mw.loader.using(['mediawiki.util', 'jquery.ui'], function () {
        mw.util.addPortletLink('p-tb', 'javascript:{dialogBR(delete_page);void(0)}', 'Borrado rápido');
        mw.util.addPortletLink('p-tb', 'javascript:{dialogMant(mantenimiento);void(0)}', 'Mantenimiento');
    });
}(jQuery, mediaWiki));

$(function(){ 
    var $el = $('#n-randompage').clone();
    var $el2 = $('#n-newpages').clone();
    $el.find('a').attr('href', '/wiki/Especial:Aleatorio_en_categor%C3%ADa/Wikipedia:Wikificar').text('Wikificar').attr('accesskey', '').attr('title', 'Ayuda a Wikipedia wikificando!')
    $('#n-randompage').before($el);
    
    $el2.find('a').attr('href', '/wiki/Categoría:Wikipedia:Borrar_(definitivo)').text('Borrar definitivo').attr('accesskey', '').attr('title', 'Categoría de borrado')
    $('#n-newpages').before($el2);
});