MediaWiki:Inciskin/JS/Inciclopedia:Verificar solicitud.js

De Inciclopedia
Ir a la navegación Ir a la búsqueda

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
  • Opera: Presiona Ctrl+F5.
function alreadyApproved(ticket, wikitext) {
    return wikitext.includes("#" + ticket + "#");
}

function setData() {
    const urlparams = new URLSearchParams(window.location.search);
    const ticket = urlparams.get("ticket");
    const request = urlparams.get("request");
    const forUser = urlparams.get("user");
    if (ticket && request && forUser && ticket.length > 0 && request.length > 0 && forUser.length > 0) {
        if (!mw.config.values['wgUserName'] || mw.config.values['wgUserName'].toLowerCase() !== forUser.toLowerCase()) {
            $("#notDialog").html("Para aprobar esta solicitud, debes <a href='https://inciclopedia.org/wiki/Especial:Entrar'>iniciar sesión</a> con la cuenta <b>" + forUser + "</b>.");
            return;
        }
        $.getJSON({
            url: "https://inciclopedia.org/w/api.php?action=query&prop=revisions&titles=Usuario:" + encodeURIComponent(mw.config.values['wgUserName'] + "/Solicitudes.js") + "&rvprop=content&formatversion=2&format=json"
        }).done(function (data) {
            if (data["query"] && data["query"]["pages"] && data["query"]["pages"][0] && data["query"]["pages"][0]["revisions"] && data["query"]["pages"][0]["revisions"][0] && alreadyApproved(ticket, data["query"]["pages"][0]["revisions"][0]["content"])) {
                $("#notDialog").html("Esta solicitud ya fue aprobada. No debes hacer nada más. Si no has recibido respuesta con respuesto a tu solicitud pasadas 72 horas, <a href='https://inciclopedia.atlassian.net/servicedesk/customer/portal/1/" + ticket + "'>avísanos a través de la misma solicitud</a>.");
                return;
            } else {
                $("#ticket").html("<a href='https://inciclopedia.atlassian.net/servicedesk/customer/portal/1/" + ticket + "'>" + ticket + "</a>");
                $("#request").html("<b>" + request + "</b>");
                $("#notDialog").hide();
                $("#dialog").show();
                $("#confirmRequest").click(approveRequest.bind(this, ticket));
                $("#cancelRequest").click(rejectRequest);
            }
        });
    }
}

function approveRequest(ticket) {
    if (window.isSaving) {
        return;
    }
    window.isSaving = true;
    $("#dialog").hide();
    $("#notDialog").show();
    $("#notDialog").html("Espera un momento, estamos procesando tu solicitud.");
    $.getJSON({
        url: "https://inciclopedia.org/w/api.php?action=query&meta=tokens&format=json"
    }).done(function (data) {
        csrfToken = data["query"]["tokens"]["csrftoken"];
        query = "https://inciclopedia.org/w/api.php"
        console.log("POST a " + query);
        $.post(query, {
            "action": "edit",
            "title": "Usuario:" + mw.config.values['wgUserName'] + "/Solicitudes.js",
            "token": csrfToken,
            "minor": true,
            "summary": "Aprobando solicitud " + ticket,
            "appendtext": "\n#" + ticket + "#\n",
            "format": "json"
        }, function(data) {
            if (data && data["edit"] && data["edit"]["result"] == "Success") {
                $("#notDialog").html("Has aprobado la solicitud. En las próximas horas nuestro equipo de soporte procesará tu petición y se pondrá en contacto contigo.");
            } else {
                $("#notDialog").html("Parece que hubo un error. Por favor recarga la página.");
            }
            window.isSaving = false;
        })
    });
}

function rejectRequest() {
    $("#dialog").hide();
    $("#notDialog").html("Has cancelado esta operación. Si cambias de opinión solo debes volver a entrar en esta página.");
    $("#notDialog").show();
}

setData();