ผู้ใช้:Bebiezaza/iScript/modules/mainTabs.js
< ผู้ใช้:Bebiezaza | iScript
หมายเหตุ: หลังเผยแพร่ คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง
- ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
- กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
- อินเทอร์เน็ตเอกซ์พลอเรอร์ และ Edge: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
- โอเปร่า: กด Ctrl-F5
// ========================================================
// สคริปต์จัดให้: mainTabs module
//
// Copyright (C) 2006-2022, Jutiphan Mongkolsuthree
// 2021-2023, Bebiezaza
// Certain functions are copyrighted by their
// respective copyright holders
//
// Created: 07/01/2007
// Rewritten: 23/10/2021
// Replaced: lastdiff, cleanup, advert
// ========================================================
/* <pre><nowiki> */
/*
****************************************
*** Edit section 0
****************************************
* Mode of invocation: Tab on pages ("0") with edit permission where this sub-module is active
* Active on: Existing non-special pages where page content model is of wikitext
*/
function editSection0() {
if (mw.config.get('wgNamespaceNumber') < 0 || mw.config.get('wgPageContentModel') !== "wikitext" || mw.config.get('wgArticleId') === 0) return;
var editTab, url;
if (!(editTab = document.getElementById('ca-edit'))) return;
if (!(url = editTab.getElementsByTagName('a')[0].href)) return;
addTab(url + "§ion=0", "0", "ca-edit-0", "แก้ไขย่อหน้าแรกสุด", editTab.nextSibling, true);
if (window.location.href.indexOf("§ion=0") !== -1) {
// if (["vector", "vector-2022"].indexOf(mw.config.get('skin')) === -1) editTab.classList.remove("selected");
document.getElementById("ca-edit-0").classList.add("selected");
}
}
/*
****************************************
*** Latest difference
****************************************
* Mode of invocation: Tab on non-diff and diff pages ("ล่าสุด")
* Active on: Existing non-special pages
*/
function lastDiff() {
if (mw.config.get('wgNamespaceNumber') >= 0 && mw.config.get('wgArticleId') !== 0) {
addTab(mw.util.getUrl(mw.config.get('wgPageName'), {diff: 'cur', oldid: 'prev'}), "ล่าสุด", "ca-ldff", "ดูความแตกต่างล่าสุด", document.getElementById('ca-history').nextSibling, true);
}
}
/* notify */
function addTemplate(template, desc, addTime, yearType) {
var pageName = mw.config.get("wgPageName");
var content = iScriptAPI.getPageContent(pageName);
var summary = "";
if (content == "") return mw.notify($('<span style="color: red">ไม่พบบทความที่เลือก ซึ่งอาจถูกลบโดยผู้ดูแลระบบไปแล้ว</span>'));
else if (content.indexOf("{{" + template) >= 0) return mw.notify($('<span style="color: red">ขออภัย บทความนี้ได้ถูก' + desc + 'ไปแล้ว</span>'));
// yearType true = CE, false = BE
var jsDate = new Date();
if (addTime) template += "|date={{subst:CURRENTMONTHNAME}} " + (yearType ? jsDate.getFullYear() : jsDate.getFullYear() + 543);
if (template == "เก็บกวาด") {
content = content.replace(/{{ต้องการหมวดหมู่}}\n?/g, "");
content = content.replace(/{{ต้องการวิกิลิงก์}}\n?/g, "");
}
content = "{{" + template + "}}\n" + content;
summary = desc + iScriptConfig.Tagline;
// push source
mw.notify('กำลังบันทึกไปที่หน้า ' + pageName + ' กรุณารอสักครู่...');
iScriptAPI.editPage(pageName, content, summary, true, true);
}
/* notifyFiles */
function addFileTemplate(template, desc, talkAction) {
var pageName = mw.config.get("wgPageName");
var content = iScriptAPI.getPageContent(pageName);
var summary = "";
if (content == "") return mw.notify($('<span style="color: red">ไม่พบไฟล์ที่เลือก ซึ่งอาจถูกลบโดยผู้ดูแลระบบไปแล้ว</span>'));
else if (content.indexOf("{{" + template) != -1) return mw.notify($('<span style="color: red">ขออภัย ไฟล์นี้ได้ถูก' + desc + 'ไปแล้ว</span>'));
if (iScriptConfig.autoNotifyUploader || confirm('เพื่อเป็นมารยาทที่ดี คุณต้องการจะแจ้งผู้ใช้ที่อัปโหลดภาพนี้หรือไม่?') == true) {
var uploader = selectUploader(pageName);
if (uploader = "null") return mw.notify($('<span style="color: red">ยกเลิกการ' + desc + 'แล้ว เพื่อความปลอดภัย</span>'));
openInNewWindow(mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/index.php?title=User_talk:" + uploader + "&action=edit&iScriptAction=" + talkAction + "&target=" + pageName);
}
content = "{{" + template + "|{{subst:LOCALDAY2}}/{{subst:LOCALMONTH}}/" + getBEYear() + "}}\n" + content;
summary = desc + iScriptConfig.Tagline;
// push source
mw.notify('กำลังบันทึกไปที่หน้า ' + pageName + ' กรุณารอสักครู่...');
iScriptAPI.editPage(pageName, content, summary, false, true);
}
/* speedyAFD */
function addAFDRequest() {
var pageName = mw.config.get("wgPageName");
var content = iScriptAPI.getPageContent(pageName);
var summary = "";
if (mw.config.get('wgArticleId') === 0) return mw.notify($('<span style="color: red">ไม่พบบทความที่เลือก ซึ่งอาจถูกลบโดยผู้ดูแลระบบไปแล้ว</span>'));
else if (content.indexOf("{{ลบ") != -1) return mw.notify($('<span style="color: red">บทความนี้ได้ถูกแจ้งลบไปก่อนหน้านี้แล้ว ยกเลิกการแจ้งลบเพื่อป้องกันการแจ้งซ้ำ</span>'));
var reason = prompt("กรุณาระบุสาเหตุที่แจ้งลบ:", "");
if (reason == "" || reason == null) return mw.notify($('<span style="color: red">ยกเลิกการแจ้งลบแล้ว</span>'));
if (mw.config.get('wgNamespaceNumber') == 6 && (iScriptConfig.autoNotifyUploader || confirm('เพื่อเป็นมารยาทที่ดี คุณต้องการจะแจ้งผู้ใช้ที่อัปโหลดภาพนี้หรือไม่?') == true)) {
var uploader = selectUploader(pageName);
if (uploader = "null") return mw.notify($('<span style="color: red">ยกเลิกการแจ้งลบแล้ว เพื่อความปลอดภัย</span>'));
openInNewWindow(mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/index.php?title=User_talk:" + uploader + "&action=edit&iScriptAction=warnIFD&target=" + pageName);
}
if (mw.config.get('wgNamespaceNumber') == 10) {
content = "<noinclude>{{ลบ|" + reason + "}}</noinclude>" + content;
} else if (mw.config.get('wgTitle').indexOf("js") == mw.config.get('wgTitle').length - 2 || mw.config.get('wgTitle').indexOf("css") == mw.config.get('wgTitle').length - 3) {
content = "/* {{ลบ|" + reason + "}} */\n\n" + content;
} else {
content = "{{ลบ|" + reason + "}}\n\n" + content;
}
summary = "แจ้งลบ" + iScriptConfig.Tagline + ": " + reason;
// push source
mw.notify('กำลังแจ้งลบบทความ กรุณารอสักครู่...');
iScriptAPI.editPage(pageName, content, summary, false, true);
}
/* projectMenu */
// build button
function populateWPMenu() {
if (iScriptConfig.wikiProjectTabs == "none") return;
var config = iScriptConfig.wikiProjectTabs.replace(/ /g, "").split(",");
if (config == "all") {
Wikiprojects.sort(dynamicSort("name"));
for (var i in Wikiprojects) {
addWPMenu("↑วิกิ" + Wikiprojects[i].name, "ca-WP" + Wikiprojects[i].link, "แจ้งอยู่ใน" + Wikiprojects[i].project_name, "javascript:addWPBanner('" + Wikiprojects[i].template + "', '" + Wikiprojects[i].project_name + "', '" + Wikiprojects[i].link + "')");
}
} else if (config == "recent") {
for (var i = 0; i <= 9; i++) {
addWPMenu("↑วิกิ" + Wikiprojects[i].name, "ca-WP" + Wikiprojects[i].link, "แจ้งอยู่ใน" + Wikiprojects[i].project_name, "javascript:addWPBanner('" + Wikiprojects[i].template + "', '" + Wikiprojects[i].project_name + "', '" + Wikiprojects[i].link + "')");
}
} else {
for (var j in config) {
for (var i in Wikiprojects) {
if (config[j].toLowerCase() == Wikiprojects[i].link.toLowerCase()) {
addWPMenu("↑วิกิ" + Wikiprojects[i].name, "ca-WP" + Wikiprojects[i].link, "แจ้งอยู่ใน" + Wikiprojects[i].project_name, "javascript:addWPBanner('" + Wikiprojects[i].template + "', '" + Wikiprojects[i].project_name + "', '" + Wikiprojects[i].link + "')");
break;
}
}
}
}
}
// execute
function addWPBanner(template, projectName, link) {
var pagePrefix = "พูดคุย:";
if (mw.config.get("wgNamespaceNumber") > 2) {
pagePrefix = mw.config.get("wgPageName").substr(0, mw.config.get("wgPageName").indexOf(":") + 1);
if (mw.config.get("wgNamespaceNumber") % 2 == 0) {
if (pagePrefix.indexOf("ผู้ใช้") != -1) {
pagePrefix = "คุยกับ" + pagePrefix;
} else {
pagePrefix = "คุยเรื่อง" + pagePrefix;
}
}
}
var pageName = pagePrefix + mw.config.get("wgTitle");
var content = iScriptAPI.getPageContent(pageName);
var contentTemplate = content.indexOf("{{" + template);
var summary = "";
var level;
// prompt
if (mw.config.get('wgNamespaceNumber') == 14 || mw.config.get('wgNamespaceNumber') == 15) {
level = "หมวดหมู่";
} else {
level = prompt("กรุณาระบุระดับของบทความนี้: คัดสรร คุณภาพ ดี พอใช้ โครง รายชื่อ (เว้นว่างและคลิก OK หากจะไม่ระบุ)", "");
if (level == undefined) return;
}
if (level.length == 0) {
if (content.indexOf("{{" + template) >= 0) return mw.notify($('<span style="color: red">ขออภัย บทความนี้ได้ถูกแจ้งอยู่ใน' + projectName + 'ไปแล้ว</span>'));
content = "{{" + template + "}}\n" + content;
summary = "แจ้งอยู่ใน[[WP:" + link + "|" + template + "]]" + iScriptConfig.Tagline;
} else {
if (contentTemplate >= 0) {
var searcher = new RegExp("\\{\\{" + template + "(\\}\\}|\\|ระดับ=(.*?)\\}\\})", "ig");
var currentLevel = searcher.exec(content)[2];
content = content.replace(searcher, "{{" + template + "|ระดับ=" + level + "}}");
if (currentLevel == undefined) summary = "เปลี่ยนระดับ" + template + iScriptConfig.Tagline + ": ไม่ได้ระบุ → " + level;
else summary = "เปลี่ยนระดับ" + template + iScriptConfig.Tagline + ": " + currentLevel + " → " + level;
} else {
if (level.indexOf("คัดสรร") != -1 || level.indexOf("คุณภาพ") != -1) {
content = content.replace(/((\{\{เป็นบทความ(คุณภาพ|คัดสรร)(\|.*?)?\}\}\r?\n)+)/ig, "$1{{" + template + "|ระดับ=" + level + "}}\n");
content = content.replace(/((\{\{(GA|FA)(\|.*?)?\}\}\r?\n)+)/ig, "$1{{" + template + "|ระดับ=" + level + "}}\n");
} else content = "{{" + template + "|ระดับ=" + level + "}}\n" + content;
summary = "แจ้งอยู่ใน[[WP:" + link + "|" + projectName + "]]" + iScriptConfig.Tagline + ": " + level;
}
}
// push source
mw.notify('กำลังบันทึกไปที่หน้า ' + pageName + ' กรุณารอสักครู่...');
iScriptAPI.editPageWithCreate(pageName, content, summary, true, false);
}
$(document).ready(function() {
editSection0();
lastDiff();
if (mw.config.get('wgAction') == "view" && document.getElementById('ca-edit') != null && mw.config.get('wgNamespaceNumber') >= 0 && mw.config.get('wgArticleId') !== 0) {
if (mw.config.get('wgNamespaceNumber') == 0) {
addMenu("★เก็บกวาด", "ca-scleanup", "เก็บกวาดทันใจ", "growth", mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + mw.config.get('wgPageName') + "&action=edit&iScriptAction=speedyCleanup");
}
if (iScriptConfig.Edition == Editions.Wikipedia) {
if (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgTitle') == "ทดลองเขียน") {
addMenu("↑ปรับภาษา", "ca-improveLang", "แจ้งควรปรับการใช้ภาษา", "growth", "javascript:addTemplate('แก้ภาษา', 'แจ้งควรปรับการใช้ภาษา', false)");
addMenu("↑ต้องการเก็บกวาด", "ca-needCleanup", "แจ้งต้องการเก็บกวาด", "style", "javascript:addTemplate('เก็บกวาด', 'แจ้งต้องการเก็บกวาด', false)");
addMenu("↑ตรวจลิขสิทธิ์", "ca-nCopyvioCheck", "แจ้งต้องการตรวจลิขสิทธิ์", "content", "javascript:addTemplate('ตรวจลิขสิทธิ์', 'แจ้งต้องการตรวจลิขสิทธิ์', false)");
addMenu("↑โฆษณา", "ca-advert", "แจ้งโฆษณา", "content", "javascript:addTemplate('โฆษณา', 'แจ้งโฆษณา', false)");
addMenu("↑ต้องการอ้างอิง", "ca-ref", "แจ้งต้องการอ้างอิง", "content", "javascript:addTemplate('ต้องการอ้างอิง', 'แจ้งต้องการอ้างอิง', true)");
addMenu("↑คุณเป็นใคร", "ca-Who", "แจ้งว่าคุณเป็นใคร", "content", "javascript:addTemplate('ใคร', 'แจ้งคุณเป็นใคร', true)");
addMenu("↑เรซูเม", "ca-resume", "แจ้งเรซูเม", "content", "javascript:addTemplate('เรซูเม', 'แจ้งอ่านเหมือนเรซูเม', true)");
addMenu("↑ไม่เป็นกลาง", "ca-POV", "แจ้งไม่เป็นกลาง", "content", "javascript:addTemplate('ไม่เป็นกลาง', 'แจ้งไม่เป็นกลาง', false)");
addMenu("↑ไม่สำคัญ", "ca-importance", "แจ้งขาดความสำคัญ", "content", "javascript:addTemplate('ขาดความสำคัญ', 'แจ้งขาดความสำคัญ', true)");
addMenu("↑ไม่เป็นสารานุกรม", "ca-Unencyclopedic", "แจ้งไม่เป็นสารานุกรม", "content", "javascript:addTemplate('ไม่เป็นสารานุกรม', 'แจ้งไม่เป็นสารานุกรม', true, true)");
} else if (mw.config.get('wgNamespaceNumber') == 6) {
addMenu("↑สถานะลิขสิทธิ์ผิด", "ca-invalidLicense", "แจ้งสัญญาอนุญาตไม่ถูกต้อง", "content", "javascript:addFileTemplate('ภาพที่อาจจะละเมิดลิขสิทธิ์', 'แจ้งต้องการตรวจสอบสัญญาอนุญาต', 'warnInvalidImageLicense')");
addMenu("↑ไม่มีแหล่งที่มา", "ca-noSource", "แจ้งไม่มีแหล่งที่มา", "content", "javascript:addFileTemplate('ไม่มีแหล่งที่มา', 'แจ้งไม่มีแหล่งที่มาภาพ', 'warnNoSource')");
addMenu("↑ไม่ได้ระบุลิขสิทธิ์", "ca-noLicense", "แจ้งไม่ได้ระบุสัญญาอนุญาต", "content", "javascript:addFileTemplate('ไม่ได้ระบุ', 'แจ้งไม่ได้ระบุสัญญาอนุญาต', 'warnNoImageLicense')");
}
} else if (iScriptConfig.Edition == Editions.Uncyclopedia) {
if (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgTitle') == "ทดลองเขียน") {
addMenu("↑ไม่เป็นไร้สาระนุกรม", "ca-NonUnencyclopedic", "แจ้งไม่เป็นไร้สาระนุกรม", "content", "javascript:addTemplate('ไม่เป็นไร้สาระนุกรม', 'แจ้งไม่เป็นไร้สาระนุกรม', false)");
addMenu("↑ไม่ใช่เรื่องจริง", "ca-TrueStory", "แจ้งว่าไม่ใช่เรื่องจริง", "content", "javascript:addTemplate('ไม่ใช่เรื่องจริง', 'แจ้งไม่ใช่เรื่องจริง', false)");
}
}
addMenu("↑ลบ", "ca-sd", "แจ้งลบ", "serious", "javascript:addAFDRequest()");
}
// yes, this if-else argument is very long and probably needs refactor to this whole js document
// TL;DR this is usable in non-special namespace where the action is view on content namespace or view+edit on talk namespace.
// On content namespace: exists, being main, template, or WP:SANDBOX
// On talk namespace: exists or not, being main, template, or WP:SANDBOX
// Only on Wikipedia
if (iScriptConfig.Edition == Editions.Wikipedia && ([0, 1, 14, 15].indexOf(mw.config.get('wgNamespaceNumber')) !== -1 || mw.config.get('wgTitle') == "ทดลองเขียน")) {
if (mw.config.get('wgNamespaceNumber') % 2 === 0 && mw.config.get('wgArticleId') !== 0 && !mw.config.get('wgIsMainPage')) {
if (["view"].indexOf(mw.config.get('wgAction')) !== -1) {
populateWPMenu();
}
} else if (mw.config.get('wgNamespaceNumber') % 2 === 1) {
if (["view", "edit"].indexOf(mw.config.get('wgAction')) !== -1) {
populateWPMenu();
}
}
}
if (mw.config.get('wgAction') == "edit" && document.URL.indexOf("&iScriptAction=") != -1) {
if (document.URL.lastIndexOf("&iScriptAction=speedyCleanup") != -1) {
doCleanupTag(1);
document.editform.submit();
return;
}
}
});
/* </nowiki></pre> */