MediaWiki:Gadget-random book.js

Chú ý: Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.

  • Firefox / Safari: Nhấn giữ phím Shift trong khi nhấn Tải lại (Reload), hoặc nhấn tổ hợp Ctrl-F5 hay Ctrl-R (⌘R trên Mac)
  • Google Chrome: Nhấn tổ hợp Ctrl-Shift-R (⇧⌘R trên Mac)
  • Internet Explorer / Edge: Nhấn giữ phím Ctrl trong khi nhấn Làm tươi (Refresh), hoặc nhấn tổ hợp Ctrl-F5
  • Opera: Nhấn tổ hợp Ctrl-F5.
/**
 * Thay chức năng Trang ngẫu nhiên ở thanh bên bằng Sách ngẫu nhiên.
 * 
 * Chức năng này lấy một trang ngẫu nhiên từ API của MediaWiki, chặt đuôi tên
 * trang, và chuyển hướng đến kết quả. Phương pháp này không phải ngẫu nhiên hẳn:
 * một cuốn sách có rất nhiều trang sẽ xuất hiện nhiều hơn. Ngoài ra, công cụ này
 * có thể chở bạn đến một trang không tồn tại nếu trang ngẫu nhiên từ API có dấu
 * "/" trong tên.
 */

$(function () {
    mw.loader.using("mediawiki.api", function () {
        $("#n-randompage a")
            .text("Sách ngẫu nhiên")
            .attr("title", function () {
                return $(this).attr("title").replace(/\btrang\b/g, "sách");
            })
            .click(function (evt) {
                // Lấy một trang ngẫu nhiên từ API.
                var api = new mw.Api();
                api.get({
                    action: "query",
                    list: "random",
                    rnnamespace: "0|104|106",   // (Chính), Trẻ em, Nấu ăn
                    rnlimit: 1,
                    redirects: true
                }).done(function (result) {
                    var page = result.query.random[0];
                    var pageTitle = page.title;
                    
                    // Kiểm tra trang có nằm trong sách hay không.
                    var bookTitle = pageTitle.replace(/\/.*/, "");
                    api.get({
                        action: "query",
                        prop: "info",
                        redirects: true,
                        titles: bookTitle
                    }).done(function (result) {
                        if (result.query.pages["-1"]) {
                            // Chuyển hướng đến trang mồ côi.
                            window.location = mw.util.getUrl(pageTitle);
                        }
                        // Chuyển hướng đến sách.
                        window.location = mw.util.getUrl(bookTitle);
                   	}).fail(function(code, result) {
                        // Chuyển hướng đến trang sách cho đại.
                        window.location = mw.util.getUrl(pageTitle);
                    });
                }).fail(function(code, result) {
                    // Sử dụng chức năng mặc định để lấy trang ngẫu nhiên.
                    window.location = mw.util.getUrl("Special:Random");
                });
                
                // Tắt chức năng mặc định.
                evt.preventDefault();
            });
    });
});