ผู้ใช้:Patsagorn Y./js/revert.js
หมายเหตุ: หลังเผยแพร่ คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง
- ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
- กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
- ไมโครซอฟท์ เอดจ์: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
/*
<pre><nowiki> */
// ==============================================================
// สคริปต์จัดให้: revert module
// Taken from Wikipedia:WikiProject User scripts/Scripts/Twinkle
// [[User:AzaToth/twinklefluff.js]]
//
// Modified by Jutiphan Mongkolsuthree
// Certain functions are copyrighted by respective copyright holders
//
// Created: 25/2/2007
// Replaced: none
//
// Copied from [[ผู้ใช้:Jutiphan/iScript/revert.js]]
// For human-readable version
// 17-05-20
==============================================================
var Twinkle = {};
window.Twinkle = Twinkle;
Twinkle.initCallbacks = [];
Twinkle.addInitCallback = function twinkleAddInitCallback(a) {
Twinkle.initCallbacks.push(a)
};
Twinkle.defaultConfig = {};
Twinkle.defaultConfig.twinkle = {
summaryAd: "ด้วย[[WP:iScript|สจห.]]",
deletionSummaryAd: " ([[WP:iScript|สจห.]])",
protectionSummaryAd: " ([[WP:iScript|สจห.]])",
userTalkPageMode: iScriptConfig.userTalkPageMode,
dialogLargeFont: false,
openTalkPage: ["agf", "norm", "vand"],
openTalkPageOnAutoRevert: false,
markRevertedPagesAsMinor: ["vand"],
watchRevertedPages: ["agf", "norm", "vand", "torev"],
offerReasonOnNormalRevert: true,
confirmOnFluff: false,
showRollbackLinks: ["diff", "others"],
notifyUserOnDeli: true,
deliWatchPage: "default",
deliWatchUser: "default",
watchProdPages: true,
prodReasonDefault: "",
logProdPages: false,
prodLogPageName: "PROD log",
speedySelectionStyle: "buttonClick",
speedyPromptOnG7: false,
watchSpeedyPages: ["g3", "g5", "g10", "g11", "g12"],
markSpeedyPagesAsPatrolled: true,
notifyUserOnSpeedyDeletionNomination: ["db", "g1", "g2", "g3", "g4", "g6", "g10", "g11", "g12", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "f1", "f2", "f3", "f7", "f9", "f10", "u3", "t2", "t3", "p1", "p2"],
welcomeUserOnSpeedyDeletionNotification: ["db", "g1", "g2", "g3", "g4", "g6", "g10", "g11", "g12", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "f1", "f2", "f3", "f7", "f9", "f10", "u3", "t2", "t3", "p1", "p2"],
promptForSpeedyDeletionSummary: ["db", "g1", "g2", "g3", "g4", "g6", "g7", "g8", "g10", "g11", "g12", "a1", "a2", "a3", "a5", "a7", "a9", "a10", "f2", "f4", "f7", "f8", "f10", "t2", "t3", "p1", "p2"],
openUserTalkPageOnSpeedyDelete: ["db", "g1", "g2", "g3", "g4", "g5", "g10", "g11", "g12", "a1", "a3", "a7", "a9", "a10", "f3", "f7", "f9", "u3", "t2", "p1"],
deleteTalkPageOnDelete: false,
deleteRedirectsOnDelete: true,
deleteSysopDefaultToTag: false,
speedyWindowHeight: 500,
speedyWindowWidth: 800,
logSpeedyNominations: false,
speedyLogPageName: "CSD log",
noLogOnSpeedyNomination: ["u1"],
unlinkNamespaces: ["0", "100"],
defaultWarningGroup: "1",
showSharedIPNotice: true,
watchWarnings: true,
blankTalkpageOnIndefBlock: false,
xfdWatchDiscussion: "default",
xfdWatchList: "no",
xfdWatchPage: "default",
xfdWatchUser: "default",
revertMaxRevisions: 50,
batchdeleteChunks: 50,
batchDeleteMinCutOff: 5,
batchMax: 5000,
batchProtectChunks: 50,
batchProtectMinCutOff: 5,
batchundeleteChunks: 50,
batchUndeleteMinCutOff: 5,
deliChunks: 500,
deliMax: 5000,
proddeleteChunks: 50
};
if (mw.config.get("skin") === "vector") {
Twinkle.defaultConfig.twinkle.portletArea = "right-navigation";
Twinkle.defaultConfig.twinkle.portletId = "p-twinkle";
Twinkle.defaultConfig.twinkle.portletName = "TW";
Twinkle.defaultConfig.twinkle.portletType = "menu";
Twinkle.defaultConfig.twinkle.portletNext = "p-search"
} else {
Twinkle.defaultConfig.twinkle.portletArea = null;
Twinkle.defaultConfig.twinkle.portletId = "p-cactions";
Twinkle.defaultConfig.twinkle.portletName = null;
Twinkle.defaultConfig.twinkle.portletType = null;
Twinkle.defaultConfig.twinkle.portletNext = null
}
Twinkle.getPref = function twinkleGetPref(a) {
var b;
if (typeof Twinkle.prefs === "object" && typeof Twinkle.prefs.twinkle === "object") {
b = Twinkle.prefs.twinkle[a]
} else if (typeof window.TwinkleConfig === "object") {
b = window.TwinkleConfig[a]
}
if (b === undefined) {
return Twinkle.defaultConfig.twinkle[a]
}
return b
};
Twinkle.getFriendlyPref = function twinkleGetFriendlyPref(a) {
var b;
if (typeof Twinkle.prefs === "object" && typeof Twinkle.prefs.friendly === "object") {
b = Twinkle.prefs.friendly[a]
} else if (typeof window.FriendlyConfig === "object") {
b = window.FriendlyConfig[a]
}
if (b === undefined) {
return Twinkle.defaultConfig.friendly[a]
}
return b
};
function twAddPortlet(b, c, d, e, f) {
var g = document.getElementById(b);
if (!g) {
return null
}
var h = document.getElementById(c);
if (h) {
if (h.parentNode && h.parentNode === g) {
return h
}
return null
}
var i;
if (f) {
i = document.getElementById(f)
}
e = (skin === "vector" && e === "menu" && (b === "left-navigation" || b === "right-navigation")) ? "menu" : "";
var j;
var k;
switch (skin) {
case "vector":
if (b !== "portal" && b !== "left-navigation" && b !== "right-navigation") {
b = "mw-panel"
}
j = (b === "mw-panel") ? "portal" : (e === "menu" ? "vectorMenu extraMenu" : "vectorTabs extraMenu");
k = (b === "mw-panel") ? "body" : (e === "menu" ? "menu" : "");
break;
case "modern":
if (b !== "mw_portlets" && b !== "mw_contentwrapper") {
b = "mw_portlets"
}
j = "portlet";
k = "pBody";
break;
default:
b = "column-one";
j = "portlet";
k = "pBody";
break
}
var l = document.createElement("div");
l.className = j + " emptyPortlet";
l.id = c;
if (e === "menu") {
l.style.backgroundImage = 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAQCAMAAAAlM38UAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9QTFRFsbGxmpqa3d3deXl58/n79CzHcQAAAAV0Uk5T/////wD7tg5TAAAAMklEQVR42mJgwQoYBkqYiZEZAhiZUFRDxWGicEPA4nBRhNlAcYQokpVMDEwD6kuAAAMAyGMFQVv5ldcAAAAASUVORK5CYII=")';
l.style.backgroundPosition = "right 60%"
}
if (i && i.parentNode === g) {
g.insertBefore(l, i)
} else {
g.appendChild(l)
}
var m = document.createElement("h3");
if (e === "menu") {
var n = document.createElement("span");
n.appendChild(document.createTextNode(d));
m.appendChild(n);
var a = document.createElement("a");
a.href = "#";
n = document.createElement("span");
n.appendChild(document.createTextNode(d));
a.appendChild(n);
m.appendChild(a)
} else {
m.appendChild(document.createTextNode(d))
}
l.appendChild(m);
var o = document.createElement("div");
o.className = k;
l.appendChild(o);
var p = document.createElement("ul");
o.appendChild(p);
return l
}
function twAddPortletLink(b, c, d, e) {
if (Twinkle.getPref("portletArea") !== null) {
twAddPortlet(Twinkle.getPref("portletArea"), Twinkle.getPref("portletId"), Twinkle.getPref("portletName"), Twinkle.getPref("portletType"), Twinkle.getPref("portletNext"))
}
var f = mw.util.addPortletLink(Twinkle.getPref("portletId"), typeof b === "string" ? b : "#", c, d, e);
if ($.isFunction(b)) {
$(f).click(function(a) {
b();
a.preventDefault()
})
}
return f
}
var twinkleUserAuthorized = Morebits.userIsInGroup("autoconfirmed") || Morebits.userIsInGroup("confirmed");
Twinkle.fluff = {
auto: function() {
if (parseInt(Morebits.queryString.get('oldid'), 10) !== mw.config.get('wgCurRevisionId')) {
alert("ขออภัย ไม่สามารถย้อนกลับได้ หน้ามีการปรับเปลี่ยนระหว่างดำเนินการย้อนกลับ");
return
}
var a = $("#mw-diff-ntitle2").find("a.mw-userlink").text();
Twinkle.fluff.revert(Morebits.queryString.get('iScriptRevert'), a, true)
},
normal: function() {
var f = function(a, b) {
var c = document.createElement('span');
c.style.color = a;
c.appendChild(document.createTextNode(b));
return c
};
if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgCanonicalSpecialPageName') === "Contributions") {
username = decodeURIComponent(/wiki\/Special:Log\/(.+)$/.exec($('#contentSub').find('a[title^="Special:Log"]').last().attr("href").replace(/_/g, "%20"))[1]);
if (Twinkle.getPref('showRollbackLinks').indexOf('contribs') !== -1 || (mw.config.get('wgUserName') !== username && Twinkle.getPref('showRollbackLinks').indexOf('others') !== -1) || (mw.config.get('wgUserName') === username && Twinkle.getPref('showRollbackLinks').indexOf('mine') !== -1)) {
var g = $("#bodyContent").find("ul li:has(span.mw-uctop)");
var h = document.createElement('strong');
var i = document.createElement('a');
i.appendChild(f('Black', '['));
i.appendChild(f('SteelBlue', 'ย้อน'));
i.appendChild(f('Black', ']'));
h.appendChild(i);
var j = document.createElement('strong');
var k = document.createElement('a');
k.appendChild(f('Black', '['));
k.appendChild(f('Red', 'ย้อนก่อกวน'));
k.appendChild(f('Black', ']'));
j.appendChild(k);
g.each(function(a, b) {
var c = $(b).children("a:eq(1)").attr("href");
b.appendChild(document.createTextNode(' '));
var d = h.cloneNode(true);
d.firstChild.setAttribute('href', c + '&' + Morebits.queryString.create({
'iScriptRevert': 'norm'
}));
b.appendChild(d);
b.appendChild(document.createTextNode(' '));
d = j.cloneNode(true);
d.firstChild.setAttribute('href', c + '&' + Morebits.queryString.create({
'iScriptRevert': 'vand'
}));
b.appendChild(d)
})
}
} else {
if (mw.config.get('wgCanonicalSpecialPageName') === "Undelete") {
return
}
var l = document.getElementById('bodyContent');
var m = $("div.firstrevisionheader").length;
if (m) {
return
}
var n, ntitle;
try {
var o = document.getElementById('mw-diff-otitle1');
var p = document.getElementById('mw-diff-ntitle1');
if (!o || !p) {
return
}
n = o.parentNode;
ntitle = p.parentNode
} catch (e) {
return
}
var q = $("#mw-diff-otitle1").find("strong a").attr("href");
var r = new Morebits.queryString(q.split('?', 2)[1]);
var s = r.get('oldid');
var t = document.createElement('div');
t.setAttribute('id', 'tw-revert-to-orevision');
t.style.fontWeight = 'bold';
var u = t.appendChild(document.createElement('a'));
u.href = "#";
$(u).click(function() {
Twinkle.fluff.revertToRevision(s)
});
u.appendChild(f('Black', '['));
u.appendChild(f('SaddleBrown', 'ย้อนกลับมาเป็นรุ่นนี้'));
u.appendChild(f('Black', ']'));
n.insertBefore(t, n.firstChild);
if (document.getElementById('differences-nextlink')) {
curVersion = false;
var v = $("#mw-diff-ntitle1").find("strong a").attr("href");
r = new Morebits.queryString(v.split('?', 2)[1]);
var w = r.get('oldid');
t = document.createElement('div');
t.setAttribute('id', 'tw-revert-to-nrevision');
t.style.fontWeight = 'bold';
u = t.appendChild(document.createElement('a'));
u.href = "#";
$(u).click(function() {
Twinkle.fluff.revertToRevision(w)
});
u.appendChild(f('Black', '['));
u.appendChild(f('SaddleBrown', 'ย้อนกลับมาเป็นรุ่นนี้'));
u.appendChild(f('Black', ']'));
ntitle.insertBefore(t, ntitle.firstChild);
return
}
if (Twinkle.getPref('showRollbackLinks').indexOf('diff') !== -1) {
var x = $("#mw-diff-ntitle2").find("a").first().text();
var y = document.createElement('div');
y.setAttribute('id', 'tw-revert');
var z = document.createElement('strong');
var A = document.createElement('strong');
var B = document.createElement('strong');
var C = document.createElement('a');
var D = document.createElement('a');
var E = document.createElement('a');
C.href = "#";
D.href = "#";
E.href = "#";
$(C).click(function() {
Twinkle.fluff.revert('agf', x)
});
$(D).click(function() {
Twinkle.fluff.revert('vand', x)
});
$(E).click(function() {
Twinkle.fluff.revert('norm', x)
});
C.appendChild(f('Black', '['));
C.appendChild(f('DarkOliveGreen', 'ย้อนเจตนาดี'));
C.appendChild(f('Black', ']'));
D.appendChild(f('Black', '['));
D.appendChild(f('Red', 'ย้อนก่อกวน'));
D.appendChild(f('Black', ']'));
E.appendChild(f('Black', '['));
E.appendChild(f('SteelBlue', 'ย้อน'));
E.appendChild(f('Black', ']'));
z.appendChild(C);
A.appendChild(D);
B.appendChild(E);
y.appendChild(z);
y.appendChild(document.createTextNode(' || '));
y.appendChild(B);
y.appendChild(document.createTextNode(' || '));
y.appendChild(A);
ntitle.insertBefore(y, ntitle.firstChild)
}
}
}
};
Twinkle.fluff.revert = function revertPage(a, b, c, d, e) {
var f = e || mw.config.get('wgPageName');
var g = d || mw.config.get('wgCurRevisionId');
Morebits.status.init(document.getElementById('bodyContent'));
var h = {
type: a,
user: b,
pagename: f,
revid: g,
autoRevert: !!c
};
var i = {
'action': 'query',
'prop': ['info', 'revisions'],
'titles': f,
'rvlimit': 50,
'rvprop': ['ids', 'timestamp', 'user', 'comment'],
'intoken': 'edit'
};
var j = new Morebits.wiki.api('กำลังดึงข้อมูลรุ่นก่อนหน้านี้...', i, Twinkle.fluff.callbacks.main);
j.params = h;
j.post()
};
Twinkle.fluff.revertToRevision = function revertToRevision(a) {
Morebits.status.init(document.getElementById('bodyContent'));
var b = {
'action': 'query',
'prop': ['info', 'revisions'],
'titles': mw.config.get('wgPageName'),
'rvlimit': 1,
'rvstartid': a,
'rvprop': ['ids', 'timestamp', 'user', 'comment'],
'intoken': 'edit',
'format': 'xml'
};
var c = new Morebits.wiki.api('กำลังดึงข้อมูลรุ่นก่อนหน้านี้...', b, Twinkle.fluff.callbacks.toRevision.main);
c.params = {
rev: a
};
c.post()
};
Twinkle.fluff.userIpLink = function(a) {
return (Morebits.isIPAddress(a) ? "[[Special:Contributions/" : "[[User:") + a + "|" + a + "]]"
};
Twinkle.fluff.callbacks = {
toRevision: {
main: function(a) {
var b = a.responseXML;
var c = parseInt($(b).find('page').attr('lastrevid'), 10);
var d = $(b).find('page').attr('touched');
var e = $(b).find('page').attr('starttimestamp');
var f = $(b).find('page').attr('edittoken');
var g = $(b).find('rev').attr('revid');
var h = $(b).find('rev').attr('user');
if (g !== a.params.rev) {
a.statitem.error('พบข้อผิดพลาด รุ่นที่ดึงข้อมูลมา ไม่ตรงกับรุ่นที่ต้องการ ยกเลิกการย้อน');
return
}
var i = prompt("กรุณาระบุสาเหตุที่ต้องการย้อนการแก้ไข: ", "");
if (i === null) {
a.statelem.error('ยกเลิกโดยผู้ใช้');
return
}
var j = "ย้อนกลับไปรุ่นที่ " + g + " โดย " + h + (i ? ": " + i : '') + "" + Twinkle.getPref('summaryAd');
var k = {
'action': 'edit',
'title': mw.config.get('wgPageName'),
'summary': j,
'token': f,
'undo': c,
'undoafter': g,
'basetimestamp': d,
'starttimestamp': e,
'watchlist': Twinkle.getPref('watchRevertedPages').indexOf(a.params.type) !== -1 ? 'watch' : undefined,
'minor': Twinkle.getPref('markRevertedPagesAsMinor').indexOf(a.params.type) !== -1 ? true : undefined
};
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
Morebits.wiki.actionCompleted.notice = "ดำเนินการย้อนเรียบร้อยแล้ว";
var l = new Morebits.wiki.api('กำลังบันทึกข้อมูล...', k, null, a.statelem);
l.params = a.params;
l.post()
},
complete: function(a) {}
},
main: function(a) {
var b = a.responseXML;
var c = parseInt($(b).find('page').attr('lastrevid'), 10);
var d = $(b).find('page').attr('touched');
var e = $(b).find('page').attr('starttimestamp');
var f = $(b).find('page').attr('edittoken');
var g = $(b).find('rev').attr('user');
var h = $(b).find('rev');
if (h.length < 1) {
a.statelem.error('ขออภัย ไม่มีรุ่นก่อนหน้านี้ให้ย้อนกลับได้ จึงไม่สามารถดำเนินการได้ ยกเลิกการย้อน');
return
}
var j = h[0];
if (c < a.params.revid) {
Morebits.status.error('Error', ['ขออภัย เนื่องจากว่ารุ่น ', Morebits.htmlNode('strong', c), ' ที่ต้องการย้อนนั้นไม่ใช่รุ่นล่าสุด ซึ่งอาจถูกลบไปแล้ว หรือมีปัญหาเชื่อมต่อวิกิพีเดีย กรุณาตรวจสอบและลองใหม่อีกครั้ง ยกเลิกการย้อน']);
return
}
var k = 1;
if (a.params.revid !== c) {
Morebits.status.warn('Warning', ['โปรดทราบ: รุ่นล่าสุดที่ ', Morebits.htmlNode('strong', c), ' ไม่เหมือนกับรุ่นปัจจุบันที่ ', Morebits.htmlNode('strong', a.params.revid)]);
if (g === a.params.user) {
switch (a.params.type) {
case 'vand':
Morebits.status.info('Info', ['Latest revision was made by ', Morebits.htmlNode('strong', a.params.user), '. As we assume vandalism, we continue to revert']);
break;
case 'agf':
Morebits.status.warn('Warning', ['Latest revision was made by ', Morebits.htmlNode('strong', a.params.user), '. As we assume good faith, we stop reverting, as the problem might have been fixed.']);
return;
default:
Morebits.status.warn('Notice', ['Latest revision was made by ', Morebits.htmlNode('strong', a.params.user), ', but we will stop reverting anyway.']);
return
}
} else if (a.params.type === 'vand' && Twinkle.fluff.whiteList.indexOf(j.getAttribute('user')) !== -1 && h.length > 1 && h[1].getAttribute('pageId') === a.params.revid) {
Morebits.status.info('Info', ['การแก้ไขล่าสุดเป็นของ ', Morebits.htmlNode('strong', g), ' ซึ่งเป็นบอตที่ได้รับการอนุมัติ ซึ่งการแก้ไขก่อนหน้านั้นเป็นผู้ก่อกวนที่ต้องการย้อน ดังนั้นดำเนินการย้อนไปรุ่นก่อนหน้าที่บอตแก้ไข']);
k = 2
} else {
Morebits.status.error('Error', ['การแก้ไขล่าสุดเป็นของ ', Morebits.htmlNode('strong', g), ' ดังนั้นจึงอาจถูกย้อนการก่อกวนไปเรียบร้อยแล้ว หยุดดำเนินการย้อนกลับ']);
return
}
}
if (Twinkle.fluff.whiteList.indexOf(a.params.user) !== -1) {
switch (a.params.type) {
case 'vand':
Morebits.status.info('Info', ['คุณได้เลือกให้ย้อนการก่อกวนของ ', Morebits.htmlNode('strong', a.params.user), ' ซึ่งเป็นบอตที่ได้รับการอนุมัติ โดยเราเชื่อว่าคุณต้องการย้อนกลับการแก้ไขของผู้ใช้ก่อนหน้านี้แทน']);
k = 2;
vandal = h[1].getAttribute('user');
a.params.user = h[1].getAttribute('user');
break;
case 'agf':
Morebits.status.warn('Notice', ['คุณได้เลือกย้อนเจตนาดีของ ', Morebits.htmlNode('strong', a.params.user), ' ซึ่งเป็นบอตที่ได้รับการอนุมัติและมีเจตนาดีโดยเสมอ หากพบว่าการแก้ไขบอตไม่ถูกต้อง และต้องการย้อนกลับ ให้เลือกการย้อนปกติแทน']);
return;
case 'norm':
default:
var l = confirm('การแก้ไขล่าสุดเป็นของ ' + a.params.user + ' ซึ่งเป็นบอตที่ได้รับการอนุมัติ คุณต้องการย้อนการแก้ไขของผู้ใช้ก่อนหน้านี้ (OK) หรือการแก้ไขของบอต (Cancel)');
if (l) {
Morebits.status.info('Info', ['ตามที่คุณยืนยัน เราจะทำการย้อนการแก้ไขไปรุ่นก่อนการแก้ไขของ ', Morebits.htmlNode('strong', a.params.user), '']);
k = 2;
a.params.user = h[1].getAttribute('user')
} else {
Morebits.status.warn('Notice', ['คุณได้ยืนยันย้อนการแก้ไขของ ', Morebits.htmlNode('strong', a.params.user), ' ซึ่งเป็นบอตที่ได้รับการอนุมัติ แต่คุณยืนยันจึงดำเนินการต่อ'])
}
break
}
}
var m = false;
var n = 0;
for (var i = k; i < h.length; ++i) {
++n;
if (h[i].getAttribute('user') !== a.params.user) {
m = i;
break
}
}
if (!m) {
a.statelem.error(['ขออภัย ไม่พบเจอรุ่นที่จะย้อนกลับ หยุดดำเนินการ อาจเป็นเพราะว่า ', Morebits.htmlNode('strong', a.params.user), ' เป็นผู้แก้ไขหน้านี้แต่เพียงผู้เดียว หรือได้แก้ไขติดต่อกันมากกว่า ' + Twinkle.getPref('revertMaxRevisions') + ' ครั้ง']);
return
}
if (!n) {
Morebits.status.error('Error', "ไม่พบเจอรุ่นที่จะย้อนกลับ หยุดการดำเนินการ ซึ่งอาจเป็นเพราะว่าการแก้ไขได้ถูกย้อนกลับไปแล้ว แต่รหัสรุ่นยังเหมือนเดิม");
return
}
var o = h[m];
var p = false;
if (a.params.type !== 'vand' && n > 1) {
if (!confirm(a.params.user + ' ได้ทำการแก้ไขทั้งหมด ' + n + ' ครั้งติดต่อกัน คุณแน่ใจว่าต้องการย้อนการแก้ไขดังกล่าวทั้งหมด?')) {
Morebits.status.info('Notice', 'ยกเลิกการย้อนกลับตามความต้องการของผู้ใช้');
return
}
p = true
}
a.params.count = n;
a.params.goodid = o.getAttribute('revid');
a.params.gooduser = o.getAttribute('user');
a.statelem.status([' พบเจอรุ่นที่ ', Morebits.htmlNode('strong', a.params.goodid), ' ซึ่งเป็น ', Morebits.htmlNode('strong', n), ' การแก้ไขที่แล้วโดย ', Morebits.htmlNode('strong', a.params.gooduser)]);
var q, extra_summary, userstr, gooduserstr;
switch (a.params.type) {
case 'agf':
extra_summary = prompt("กรุณาระบุสาเหตุที่ย้อนการแก้ไข (เว้นว่างหากไม่ระบุ):", "");
if (extra_summary === null) {
a.statelem.error('ยกเลิกการย้อนกลับโดยผู้ใช้');
return
}
p = true;
userstr = a.params.user;
q = "ย้อนการแก้ไข[[WP:AGF|เจตนาดี]]ของ [[Special:Contributions/" + userstr + "|" + userstr + "]] ([[User talk:" + userstr + "|พูดคุย]])" + Twinkle.fluff.formatSummaryPostfix(extra_summary) + Twinkle.getPref('summaryAd');
break;
case 'vand':
userstr = a.params.user;
gooduserstr = a.params.gooduser;
q = "ย้อน[[WP:VAND|การก่อกวน]] " + a.params.count + (a.params.count > 1 ? ' ครั้ง' : ' ครั้ง') + "ของ [[Special:Contributions/" + userstr + "|" + userstr + "]] ([[User talk:" + userstr + "|พูดคุย]]) ไปยังรุ่นโดย " + gooduserstr + "." + Twinkle.getPref('summaryAd');
break;
case 'norm':
default:
if (Twinkle.getPref('offerReasonOnNormalRevert')) {
extra_summary = prompt("กรุณาระบุสาเหตุที่ย้อนการแก้ไข (เว้นว่างหากไม่ระบุ):", "");
if (extra_summary === null) {
a.statelem.error('ยกเลิกการย้อนกลับโดยผู้ใช้');
return
}
p = true
}
userstr = a.params.user;
q = "ย้อน " + a.params.count + (a.params.count > 1 ? ' การแก้ไข' : ' การแก้ไข') + "ของ [[Special:Contributions/" + userstr + "|" + userstr + "]] ([[User talk:" + userstr + "|พูดคุย]])" + Twinkle.fluff.formatSummaryPostfix(extra_summary) + Twinkle.getPref('summaryAd');
break
}
if (Twinkle.getPref('confirmOnFluff') && !p && !confirm("Reverting page: are you sure?")) {
a.statelem.error('Aborted by user.');
return
}
var r;
if ((!a.params.autoRevert || Twinkle.getPref('openTalkPageOnAutoRevert')) && Twinkle.getPref('openTalkPage').indexOf(a.params.type) !== -1 && mw.config.get('wgUserName') !== a.params.user) {
Morebits.status.info('Info', ['กำลังเปิดหน้าพูดคุยกับผู้ใช้ของ ', Morebits.htmlNode('strong', a.params.user)]);
r = {
'title': 'User talk:' + a.params.user,
'action': 'edit',
'preview': 'yes',
'vanarticle': a.params.pagename.replace(/_/g, ' '),
'vanarticlerevid': a.params.revid,
'vanarticlegoodrevid': a.params.goodid,
'type': a.params.type,
'count': a.params.count
};
WarnUser(a.params.user, a.params.pagename.replace(/_/g, ' '), "Vandal")
}
r = {
'action': 'edit',
'title': a.params.pagename,
'summary': q,
'token': f,
'undo': c,
'undoafter': a.params.goodid,
'basetimestamp': d,
'starttimestamp': e,
'watchlist': Twinkle.getPref('watchRevertedPages').indexOf(a.params.type) !== -1 ? 'watch' : undefined,
'minor': Twinkle.getPref('markRevertedPagesAsMinor').indexOf(a.params.type) !== -1 ? true : undefined
};
Morebits.wiki.actionCompleted.redirect = a.params.pagename;
Morebits.wiki.actionCompleted.notice = "ดำเนินการย้อนเรียบร้อยแล้ว";
var s = new Morebits.wiki.api('กำลังบันทีกข้อมูลการแก้ไข...', r, Twinkle.fluff.callbacks.complete, a.statelem);
s.params = a.params;
s.post()
},
complete: function(a) {
a.statelem.info("done")
}
};
Twinkle.fluff.formatSummaryPostfix = function(a) {
if (a) {
a = ': ' + Morebits.string.toUpperCaseFirstChar(a);
if (a.search(/[.?!;]$/) === -1) {
a = a + '.'
}
return a
} else {
return '.'
}
};
Twinkle.fluff.init = function twinklefluffinit() {
if (twinkleUserAuthorized) {
Twinkle.fluff.whiteList = ['BotKung', 'TBot', 'JBot', 'NongBot', 'Chobot', 'Escarbot', 'Idioma-bot', 'Nullzerobot', 'Robbot', 'RoboDick', 'SieBot', 'Thijs!bot', 'TuvicBot', 'VolkovBot', 'YurikBot', 'Zwobot'];
if (Morebits.queryString.exists('iScriptRevert')) {
Twinkle.fluff.auto()
} else {
Twinkle.fluff.normal()
}
}
};
$(document).ready(function() {
Twinkle.fluff.init()
});
/*</nowiki></pre> */