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

จาก วิกิซอร์ซ

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

  • ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
  • กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
  • อินเทอร์เน็ตเอกซ์พลอเรอร์ และ Edge: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
  • โอเปร่า: กด Ctrl-F5
// speedyPatrol.js
// 
// This is a user script which adds patrol button to new pages which need to be 
// patrolled on Special:RecentChanges. This script loads only once when the 
// special page is open. This means that this script is not compatible with 
// live updates and refreshing through "view new changes".
//
// Author: Bebiezaza (for Thai Wikisource)

// <nowiki>

"use strict";
(function($, mw) {
    if (mw.config.get('wgNamespaceNumber') !== -1 || mw.config.get('wgCanonicalSpecialPageName') !== "Recentchanges") return;
    
    var $unPatrolled = $('abbr.unpatrolled');
    $unPatrolled.each(function(index, element) {
        var titleElement = $(element).parent().find("span.mw-title");
        var title = titleElement.text();

        var api = new mw.Api();
        api.get({
            action: 'query',
            format: 'json',
            list: 'recentchanges',
            rcdir: 'newer',
            rcprop: 'ids',
            rctype: 'new',
            rctitle: title
        }).done(function(data) {
            var rcID = data.query.recentchanges[0].rcid;
            
            var patrolLink = document.createElement('a');
            patrolLink.style = "font-weight: bold";
            patrolLink.innerHTML = "<span style='color: black;'>[</span><span style='color: saddleBrown;'>mark as patrolled</span><span style='color: black;'>]</span>";

            var patrolSpan = document.createElement('span');
            patrolSpan.id = "patrol-" + rcID;
            patrolSpan.append(patrolLink);
            
            $(titleElement).prepend(" ");
            $(titleElement).prepend(patrolSpan);
            
            $(patrolLink).click(function() {
            	api.postWithToken('patrol', {
                    action: 'patrol',
                    rcid: rcID
                }).done(function() {
                    mw.notify(title + " has been marked as patrolled");
                    $(patrolSpan).remove();
                    $(element).remove();
                });
            });
        });
    });
})(jQuery, mediaWiki);

// </nowiki>