วิกิพีเดีย:สคริปต์ผู้ใช้
จากวิกิพีเดีย สารานุกรมเสรี
สคริปต์ผู้ใช้ (user scripts) เป็นโค้ดภาษาจาวาสคริปต์ ที่ใช้ในการตกแต่ง เปลี่ยนแปลง หรือเพิ่มเติมความสามารถ รูปแบบวิกิพีเดียสำหรับผู้ใช้ดังกล่าว โดยปกติจะใส่ในหน้า monobook.js ของผู้ใช้ ซึ่งความสามารถส่วนนี้สำหรับผู้ที่เป็นสมาชิกวิกิพีเดียเท่านั้น.
สารบัญ |
[แก้] การใส่สคริปต์ผู้ใช้
โดยให้ใส่โค้ดจาวาสคริปต์ที่ต้องการที่หน้า:
ผู้ใช้:ชื่อผู้ใช้/monobook.js
โดยเปลี่ยนคำว่า "ชื่อผู้ใช้" เป็นชื่อผู้ใช้ของคุณเอง ไปหน้า Monobook.js ของคุณ
[แก้] ตัวอย่างความสามารถเพิ่มเมนูด้านบน
ตัวอย่างความสามารถที่นิยมคือ การเพิ่มเมนูด้านบน เหมือนดังรูปแสดง (หรืออาจจะเพิ่มด้านซ้ายมือ) วิธีใช้โดยการนำฟังก์ชันของจาวาสคริปต์ ไปใส่ไว้ในหน้าผู้ใช้
[แก้] ตัวอย่างสคริปต์ จากผู้ใช้งานคนอื่น
- ผู้ใช้:AkiAkira/monobook.js
- ผู้ใช้:Manop/monobook.js
- ผู้ใช้:Posterweb/monobook.js
- ผู้ใช้:Jutiphan/monobook.js
[แก้] สคริปต์จัดให้
ดูบทความหลักที่สคริปต์ผู้ใช้จัดให้
สคริปต์จัดให้ เป็นรูปแบบสคริปต์ผู้ใช้ที่ผู้ใช้สามารถสมัครใช้สคริปต์ที่จัดมาให้แล้ว โดยเจ้าของสคริปต์สามารถอัปเดตปรับปรุงรุ่นใหม่ได้ โดยผู้สมัครไม่จำเป็นที่จะต้องคัดลอกโค้ดใหม่ เพียงแค่รีเฟรชแคชหน้า monobook.js ของตัวเองก็จะได้รับรุ่นใหม่ ปัจจุบันนี้สคริปต์จัดให้ได้มีแบบรวมเข้าชุดสำหรับหน่วยเก็บกวาดเฉพาะกิจ โดยได้รวมความสามารถหลักไว้ที่เดียว ทำให้สะดวกในการติดตั้งและบริหารจัดการ
[แก้] สคริปต์ ที่นำไปใช้ได้
สคริปต์จะแบ่งเป็น 2 แบบ คือ สคริปต์เครื่องมือ กับสคริปต์เฉพาะทาง โดยการใช้งานของสคริปต์เฉพาะทางอาจ จำเป็น ที่จะต้องใช้ สคริปต์ เครื่องมือตัวใดตัวหนึ่ง ในการช่วยแสดงผล โดยวิธีการนำไปใช้ สามารถเลือกสคริปต์ที่ต้ัองการไปใส่ไว้ในหน้าสคริปต์ ของตัวเองตามความเหมาะสม สำหรับสคริปต์ เครื่องมือ สามารถใส่ครั้งเดียว และสามารถเรียกใช้ได้มากกว่าหนึ่งครั้ง
สำคัญ: ทุกครั้งที่มีการเปลี่ยนแปลงหน้า Monobook.js ของคุณ ให้ทำการ Refresh หน้านั้นหลังจากบันทึกเพื่อเห็นการเปลี่ยนแปลง ขั้นตอนการ Refresh:
- ใน IE กด Ctrl-F5
- ใน Mozilla/Safari/Konqueror กด Shift ค้าง แล้วกด Reload (หรือ Ctrl-Shift-R)
- ใน Opera กด F5
[แก้] สคริปต์เครื่องมือ
[แก้] เพิ่มแท็บด้านบน
/* */
function addTab(url, name, id, title, key){
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
addlilink(tabs, url, name, id, title, key);
}
/* */
[แก้] เพิ่มเมนู เครื่องมือ ด้านซ้าย
/* */
function addlilink(tabs, url, name, id, title, key){
var na = document.createElement('a');
na.href = url;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
if(id) li.id = id;
li.appendChild(na);
tabs.appendChild(li);
na.accesskey = key;
var pref = 'alt-';
if(((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1)) || navigator.userAgent.toLowerCase().indexOf( 'mac' ) != -1 ) pref = 'control-';
if(clientPC.indexOf('opera')!=-1) pref = 'shift-esc-';
if(key && title) na.title = title + ' [' + pref + key + ']';
else if(title) na.title = title;
else if(key) na.title = '[' + pref + key + ']';
return li;
}
/* */
[แก้] อ่านชื่อของหน้านั้น
/* */
function getPname() {
return wgPageName.replace(/_/g, ' ');
}
/* */
[แก้] สคริปต์เฉพาะทาง
[แก้] ใส่ข้อความต้องการความช่วยเหลือ
ใส่ข้อความต้องการความช่วยเหลือ ที่ส่วนบนของบทความ และทำการเซฟบทความทันที
/* */
// ========== Quick Wikify ==========
function doQwikify() {
document.editform.wpTextbox1.value = "{{ช่วยดูหน่อย}}\n\n" + document.editform.wpTextbox1.value;
document.editform.wpSummary.value = "ช่วยดูหน่อย";
document.editform.wpMinoredit.checked = true;
document.editform.submit();
}
function addQwikify() {
addTab("javascript:doQwikify()", "ช่วย", "ca-wikify", "แจ้งว่าช่วยดูหน่อย", "");
akeytt();
}
if (document.title.indexOf("แก้ไข ") == 0) {
if (window.addEventListener) window.addEventListener("load", addQwikify, false);
else if (window.attachEvent) window.attachEvent("onload", addQwikify);
}
/* */
[แก้] แจ้งโฆษณา
ใส่กล่องข้อความแจ้งโฆษณา ที่ส่วนบนของบทความ และทำการเซฟบทความทันที
/* </nowiki> */
// ========== แจ้งโฆษณา ==========
addOnloadHook(function() {
//check if called from deletion request
if(document.getElementById('ca-nstab-special')) {
return;
}
if (document.title.indexOf("แก้ไข") != -1) {
if (document.URL.lastIndexOf("&fakeaction=advert") == -1)
return;
document.editform.wpTextbox1.value = "{{โฆษณา}}\n\n" + document.editform.wpTextbox1.value;
document.editform.wpSummary.value = "แจ้งโฆษณา";
document.editform.submit();
return;
}
addTab("javascript:doAdvert()", "แจ้งโฆษณา", "ca-advert", "คำสั่งแจ้งโฆษณา", "");
});
function doAdvert() {
//edit page
var title = document.title.substr(0, document.title.lastIndexOf(' - วิกิพีเดีย'));
location.assign("/w/index.php?title=" + title + "&action=edit&fakeaction=advert");
}
/* </nowiki> */
[แก้] แจ้งลบ
ใส่กล่องข้อความแจ้งลบ ที่ส่วนบนของบทความ และทำการเซฟบทความทันที
/* */
// ========== แจ้งลบ ==========
addOnloadHook(function() {
//check if called from deletion request
if(document.getElementById('ca-nstab-special')) {
return;
}
if (document.title.indexOf("แก้ไข") != -1) {
if (document.URL.lastIndexOf("&fakeaction=speedydel") == -1)
return;
document.editform.wpTextbox1.value = "{{ลบ}}\n\n" + document.editform.wpTextbox1.value;
document.editform.wpSummary.value = "แจ้งลบ";
document.editform.submit();
return;
}
addTab("javascript:doQsd()", "แจ้งลบ", "ca-sd", "คำสั่งแจ้งลบ", "");
});
function doQsd() {
//edit page
var title = document.title.substr(0, document.title.lastIndexOf(' - วิกิพีเดีย'));
location.assign("/w/index.php?title=" + title + "&action=edit&fakeaction=speedydel");
}
/* */
[แก้] แจ้งละเมิดลิขสิทธิ์
ใส่กล่องข้อความแจ้งละเมิดลิขสิทธิ์พร้อมเติมวันที่ในเวลาไทยให้โดยอัตโนมัติ ที่ส่วนบนของบทความ
// ========== แจ้งละเมิดลิขสิทธิ์ (รุ่นใส่เวลาไทย) ==========
function doCopyViolation() {
var currentDay = new Date();
var thaiDate = new Date(currentDay.getTime() + 25200000); //7*1000*60*60
var month = thaiDate.getUTCMonth()+1;
var year = thaiDate.getUTCFullYear()+543;
document.editform.wpTextbox1.value = "{{ละเมิดลิขสิทธิ์ | url= | วันที่=" + thaiDate.getUTCDate()
+ "/" + month + "/" + year + " | หมายเหตุ= }}"
document.editform.wpSummary.value = "แจ้งละเมิดลิขสิทธิ์ ";
}
function addCopyViolation() {
addTab("javascript:doCopyViolation()", "ละเมิด", "ca-vio", "แจ้งละเมิดลิขสิทธิ์", "");
akeytt();
}
if (document.title.indexOf("แก้ไข ") == 0) {
if (window.addEventListener) window.addEventListener("load", addCopyViolation, false);
else if (window.attachEvent) window.attachEvent("onload", addCopyViolation);
}
[แก้] เก็บกวาดนโยบายเก่า
/* </nowiki> */
// ========== เก็บกวาดนโยบายเก่า ==========
// สคริปต์นี้ เปลี่ยนคำสั่งเก่า เช่น Category, Image, และข้อความเก่า
function doCleanupTag() {
text = document.editform.wpTextbox1.value;
text = replace(text,'[[Category:','[[หมวดหมู่:');
text = replace(text,'[[category:','[[หมวดหมู่:');
text = replace(text,'[[Image:','[[ภาพ:');
text = replace(text,'[[image:','[[ภาพ:');
text = replace(text,'แหล่งอ้างอิง','อ้างอิง');
text = replace(text,'หนังสืออ้างอิง','อ้างอิง');
text = replace(text,'เอกสารอ้างอิง','อ้างอิง');
text = replace(text,'แหล่งข้อมูลอ้างอิง','อ้างอิง');
text = replace(text,'หัวข้ออื่นที่เกี่ยวข้อง','ดูเพิ่ม');
text = replace(text,'ดูเพิ่มที่','ดูเพิ่ม');
text = replace(text,'เว็บไซต์อื่น','แหล่งข้อมูลอื่น');
text = replace(text,'เว็บไซต์ภายนอก','แหล่งข้อมูลอื่น');
text = replace(text,'โยงภายนอก','แหล่งข้อมูลอื่น');
text = replace(text,'ลิงก์ภายนอก','แหล่งข้อมูลอื่น');
text = replace(text,'ลิงค์ภายนอก','แหล่งข้อมูลอื่น');
text = replace(text,'Link ภายนอก','แหล่งข้อมูลอื่น');
text = replace(text,'ข้อมูลภายนอก','แหล่งข้อมูลอื่น');
text = replace(text,'*[','* [');
document.editform.wpTextbox1.value = text;
document.editform.wpSummary.value = "แก้ไข +เก็บกวาด";
}
function addCleanupTag() {
addTab("javascript:doCleanupTag()", "เก็บกวาด", "ca-taclt", "เก็บกวาด", "");
}
if (document.title.indexOf("แก้ไข ") == 0) {
if (window.addEventListener) window.addEventListener("load", addCleanupTag, false);
else if (window.attachEvent) window.attachEvent("onload", addCleanupTag);
}
/* </nowiki> */
[แก้] สลับเปลี่ยนระหว่างตัวเลขอารบิกกับเลขไทย
/* */
// ========== Replace string ==========
// Javascript from http://www.irt.org/script/242.htm
function replace(string,text,by) {
// Replaces text with by in string
var strLength = string.length, txtLength = text.length;
if ((strLength == 0) || (txtLength == 0)) return string;
var i = string.indexOf(text);
if ((!i) && (text != string.substring(0,txtLength))) return string;
if (i == -1) return string;
var newstr = string.substring(0,i) + by;
if (i+txtLength < strLength)
newstr += replace(string.substring(i+txtLength,strLength),text,by);
return newstr;
}
// ========== Thai to Arabic Numbers ==========
// This script converts all Thai numbers (๑ ๒ ๓) to Arabic numbers (1 2 3)
function doConvertNumber() {
text = document.editform.wpTextbox1.value;
text = replace(text,'๑','1');
text = replace(text,'๒','2');
text = replace(text,'๓','3');
text = replace(text,'๔','4');
text = replace(text,'๕','5');
text = replace(text,'๖','6');
text = replace(text,'๗','7');
text = replace(text,'๘','8');
text = replace(text,'๙','9');
text = replace(text,'๐','0');
document.editform.wpTextbox1.value = text;
document.editform.wpSummary.value = "เปลี่ยนเลขไทยเป็นอารบิก";
}
function addConvertNumber() {
addTab("javascript:doConvertNumber()", "๒ ->2", "ca-tanum", "เปลี่ยนเลขไทยเป็นอารบิก", "");
akeytt();
}
if (document.title.indexOf("แก้ไข ") == 0) {
if (window.addEventListener) window.addEventListener("load", addConvertNumber, false);
else if (window.attachEvent) window.attachEvent("onload", addConvertNumber);
}
// ========== Arabic to Thai Numbers ==========
// This script converts all Arabic numbers (1 2 3) to Thai numbers (๑ ๒ ๓)
function doConvertToThaiNumber() {
text = document.editform.wpTextbox1.value;
text = replace(text,'1','๑');
text = replace(text,'2','๒');
text = replace(text,'3','๓');
text = replace(text,'4','๔');
text = replace(text,'5','๕');
text = replace(text,'6','๖');
text = replace(text,'7','๗');
text = replace(text,'8','๘');
text = replace(text,'9','๙');
text = replace(text,'0','๐');
document.editform.wpTextbox1.value = text;
document.editform.wpSummary.value = "เปลี่ยนเลขอารบิกเป็นไทย";
}
function addConvertToThaiNumber() {
addTab("javascript:doConvertToThaiNumber()", "2 ->๒", "ca-atnum", "เปลี่ยนเลขอารบิกเป็นไทย", "");
akeytt();
}
if (document.title.indexOf("แก้ไข ") == 0) {
if (window.addEventListener) window.addEventListener("load", addConvertToThaiNumber, false);
else if (window.attachEvent) window.attachEvent("onload", addConvertToThaiNumber);
}
/* */
[แก้] แก้ย่อหน้าแรกสุด (ย่อหน้าสรุป)
/* */
// ========== Edit Section 0 ==========
function addEditSection0() {
ta['ca-edit-0'] = ['', 'Edit the zeroth section of this page'];
if (!document.getElementById) return;
x = document.getElementById('ca-edit');
if(!x) return;
y = document.createElement('LI');
y.id = 'ca-edit-0';
if (x.className == 'selected') {
if (/&action=edit§ion=0$/.test(window.location.href)) {
x.className = 'istalk';
y.className = 'selected';
} else {
x.className = 'selected istalk';
}
} else if (x.className == 'selected istalk') {
if (/&action=edit§ion=0$/.test(window.location.href)) {
x.className = 'istalk';
y.className = 'selected istalk';
} else {
y.className = 'istalk';
}
} else {
y.className = x.className;
x.className = 'istalk';
}
z = document.createElement('A');
if (x.children) {
z.href = x.children[0].href + '§ion=0';
z.appendChild(document.createTextNode('0'));
y.appendChild(z);
document.getElementById('p-cactions').children[1].insertBefore(y,x.nextSibling);
} else {
z.href = x.childNodes[0].href + '§ion=0';
z.appendChild(document.createTextNode('0'));
y.appendChild(z);
document.getElementById('p-cactions').childNodes[3].insertBefore(y,x.nextSibling);
}
}
if (document.title.indexOf("Editing ") == -1) {
if (window.addEventListener) window.addEventListener("load", addEditSection0, false);
else if (window.attachEvent) window.attachEvent("onload", addEditSection0);
}
/* */
[แก้] ดูความแตกต่างล่าสุด
/* */
// ========== ดูความแตกต่างล่าสุด (Last diff) ==========
function doLastDiff() {
var nurl="http://th.wikipedia.org/w/index.php?title=" + getPname() + "&diff=cur&oldid=prev";
document.location=nurl;
}
function addLastDiff() {
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
var l=addlilink(tabs, "javascript:doLastDiff()", 'ล่าสุด', '');
l.lastChild.title="ดูความแตกต่างล่าสุด";
}
if (document.title.indexOf("แก้ไข") == -1) {
if(wgCanonicalNamespace.indexOf("Special") == -1) {
if (window.addEventListener) window.addEventListener("load", addLastDiff, false);
else if (window.attachEvent) window.attachEvent("onload", addLastDiff);
}
}
/* */

