ผู้ใช้:Bebiezaza/iScript/iScript.js

จากวิกิพีเดีย สารานุกรมเสรี

หมายเหตุ: หลังเผยแพร่ คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง

  • ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
  • กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
  • อินเทอร์เน็ตเอกซ์พลอเรอร์ และ Edge: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
  • โอเปร่า: กด Ctrl-F5
// ==============================================================
// สคริปต์จัดให้: initialization & API module
//
// Copyright (C) 2006-2022, Jutiphan Mongkolsuthree
// 2021-2022, Bebiezaza
//
// Created: 08/12/2011
// Rewritten: 20/10/2021
// Replaced: none
// ========================================================
/* <pre><nowiki> */

iScriptConfig.Init = function() {
    // also config backend
    if (iScriptConfig.Edition == Editions.Wikipedia) {
        iScriptConfig.wikiName = "วิกิพีเดียภาษาไทย";
        iScriptConfig.Tagline = "ด้วย[[WP:iScript|สจห.]]";
        iScriptConfig.pageLink = "WP:iScript";
        iScriptConfig.pageName = "วิกิพีเดีย:สคริปต์จัดให้"
    } else if (iScriptConfig.Edition == Editions.Wikisource) {
        iScriptConfig.wikiName = "วิกิซอร์ซ";
        iScriptConfig.Tagline = "ด้วย[[WS:iScript|สจห.]]";
        iScriptConfig.pageLink = "WS:iScript";
        iScriptConfig.pageName = "วิกิซอร์ซ:สคริปต์จัดให้";
    } else if (iScriptConfig.Edition == Editions.Uncyclopedia) {
        iScriptConfig.wikiName = "ไร้สาระนุกรม";
        iScriptConfig.Tagline = "ด้วย[[UN:iScript|สจห.]]";
        iScriptConfig.pageLink = "UN:iScript";
        iScriptConfig.pageName = "ไร้สาระนุกรม:สคริปต์จัดให้"
    } else if (iScriptConfig.Edition == Editions.Wikibooks) {
        iScriptConfig.wikiName = "วิกิตำรา";
        iScriptConfig.Tagline = "ด้วย[[WB:iScript|สจห.]]";
        iScriptConfig.pageLink = "WB:iScript";
        iScriptConfig.pageName = "วิกิตำรา:สคริปต์จัดให้"
    }
};

function checkVersion() {
    if ((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3 || mw.config.get('wgPageName').indexOf(iScriptConfig.pageName) != -1)) {
        var versionBox, size;
        if (versionBox = document.getElementById("iScriptStatus")) {
            size = 0;
        } else if (versionBox = document.getElementById("iScriptStatus-small")) {
            size = 1;
        }

        if (versionBox) {
            var displayVersion = document.getElementById("iScriptVersion").innerHTML;
            var boxNew = createElement('span', "", {
                'class': "iScript-version"
            });
            if (size == 1) boxNew.classList.add("iScript-version-small");
            versionBox.firstChild.remove();
            if (iScriptVersion == displayVersion) {
                var imgLink = "<img src='//upload.wikimedia.org/wikipedia/commons/thumb/3/34/Crystal_Clear_app_clean.png/20px-Crystal_Clear_app_clean.png' width='20' height='20'/>";
                boxNew.classList.add("iScript-version-latest");
                boxNew.innerHTML = imgLink + " คุณกำลังใช้สคริปต์จัดให้รุ่นล่าสุด";
                versionBox.appendChild(boxNew);
            } else {
                var imgLink = "<img src='//upload.wikimedia.org/wikipedia/commons/thumb/d/dc/Nuvola_apps_important_yellow.svg/25px-Nuvola_apps_important_yellow.svg.png' width='25' height='21'/>";
                boxNew.classList.add("iScript-version-old");
                boxNew.innerHTML = imgLink + " คุณกำลังใช้สคริปต์จัดให้รุ่น " + iScriptVersion + "<br><a href='javascript:performUpdate();'>อัปเดตไปรุ่นล่าสุด</a>";
                versionBox.appendChild(boxNew);
            }
        }
    }
}

function performUpdate() {
    var a = document.getElementById('iScriptStatus');
    if (!a) a = document.getElementById('iScriptStatus-small');
    a = a.firstChild;
    a.innerHTML = "กำลังอัปเดตไปรุ่นล่าสุด...";
    location.reload(true); // reload with cache cleared; firefox
    location.reload(); // somehow chrome also works if written like this?
}

iScriptAPI = {
    getPageContent: function(pageName) {
        var content;
        $.ajax({
            url: mw.util.wikiScript('api'),
            dataType: 'json',
            async: false,
            data: {
                format: 'json',
                action: 'query',
                prop: 'revisions',
                indexpageids: true,
                titles: pageName,
                rvprop: 'content',
                rvslots: 'main'
            },
            success: function(data) {
                var id = data.query.pageids[0];
                if (id == -1) {
                    content = "";
                } else {
                    content = data.query.pages[id].revisions[0].slots.main['*'];
                }
            }
        });
        return content;
    },

    getUploaders: function(pageName) {
        var uploaders = [];
        $.ajax({
            url: mw.util.wikiScript('api'),
            dataType: 'json',
            async: false,
            data: {
                format: 'json',
                action: "query",
                prop: "imageinfo",
                indexpageids: true,
                titles: pageName,
                iilimit: "500"
            },
            success: function(data) {
                var id = data.query.pageids[0];
                if (id == -1) {
                    uploaders = "";
                } else {
                    for (var count in data.query.pages[id].imageinfo) {
                        uploaders.push(data.query.pages[id].imageinfo[count].user);
                    }
                }
            }
        });
        return uploaders;
    },

    editPage: function(pageName, editedText, summary, isMinor, willReload) {
        var api = new mw.Api();
        api.postWithEditToken({
            action: "edit",
            title: pageName,
            summary: summary,
            text: editedText,
            minor: isMinor,
            nocreate: true
        }).done(function(a, b) {
            mw.log("Saved successfully");
            if (willReload) {
                mw.notify($("<span style='color: darkgreen'>การแก้ไขเรียบร้อย กำลังรีโหลดหน้าใหม่...</span>"));
                location.reload();
            } else {
                mw.notify($("<span style='color: darkgreen'>การแก้ไขเรียบร้อย</span>"));
            }
        }).fail(function(a, b) {
            if (a === "http") {
                mw.log("HTTP error: " + b.textStatus);
                mw.notify($("<span style='color: red'>ขออภัย พบเจอปัญหาทำให้ไม่สามารถบันทึกได้: " + b.textStatus + " กรุณาลองใหม่อีกครั้ง</span>"));
            } else if (a === "ok-but-empty") {
                mw.log("Got an empty response from the server");
                mw.notify($("<span style='color: red'>ขออภัย พบเจอปัญหาทำให้ไม่สามารถทำเรื่องได้ กรุณาลองใหม่อีกครั้ง</span>"));
            } else {
                mw.log("API error: " + a);
                mw.notify($("<span style='color: red'>ขออภัย พบเจอปัญหาทำให้ไม่สามารถบันทึกได้: " + a + " กรุณาลองใหม่อีกครั้ง</span>"));
            }
        });
    },

    editPageWithCreate: function(pageName, editedText, summary, isMinor, willReload) {
        var api = new mw.Api();
        api.postWithEditToken({
            action: "edit",
            title: pageName,
            summary: summary,
            text: editedText,
            minor: isMinor
        }).done(function(a, b) {
            mw.log("Saved successfully");
            if (willReload) {
                mw.notify($("<span style='color: darkgreen'>การแก้ไขเรียบร้อย กำลังรีโหลดหน้าใหม่...</span>"));
                location.reload();
            } else {
                mw.notify($("<span style='color: darkgreen'>การแก้ไขเรียบร้อย</span>"));
            }
        }).fail(function(a, b) {
            if (a === "http") {
                mw.log("HTTP error: " + b.textStatus);
                mw.notify($("<span style='color: red'>ขออภัย พบเจอปัญหาทำให้ไม่สามารถบันทึกได้: " + b.textStatus + " กรุณาลองใหม่อีกครั้ง</span>"));
            } else if (a === "ok-but-empty") {
                mw.log("Got an empty response from the server");
                mw.notify($("<span style='color: red'>ขออภัย พบเจอปัญหาทำให้ไม่สามารถทำเรื่องได้ กรุณาลองใหม่อีกครั้ง</span>"));
            } else {
                mw.log("API error: " + a);
                mw.notify($("<span style='color: red'>ขออภัย พบเจอปัญหาทำให้ไม่สามารถบันทึกได้: " + a + " กรุณาลองใหม่อีกครั้ง</span>"));
            }
        });
    }
};

$(document).ready(function() {
    iScriptConfig.Init();
    checkVersion();
});
/* </nowiki></pre> */