ผู้ใช้:Jutiphan/Scripts/editor/monobook.js
จากวิกิพีเดีย สารานุกรมเสรี
< ผู้ใช้:Jutiphan | Scripts | editor
หมายเหตุ: หลังจากบันทึกแล้ว, คุณต้องล้างแคชของเบราว์เซอร์เสียก่อน จึงจะเห็นการเปลี่ยนแปลง: Mozilla/Safari/Konqueror: กด Shift ค้าง แล้วกด Reload (หรือ Ctrl-Shift-R), IE: กด Ctrl-F5, Opera: กด F5
/* <pre><nowiki> */
// ========== ไม้ยมก จัดชิดตัวหน้า ==========
// สคริปต์นี้ จัดไม้ยมก จาก "ก ๆ ก" เป็น "กๆ ก"
function doConvertYamok() {
text = document.editform.wpTextbox1.value;
text = replace(text,' ๆ','ๆ');
text = replace(text,' ๆ','ๆ');
document.editform.wpTextbox1.value = text;
if(document.editform.wpSummary.value.length == 0) {
document.editform.wpSummary.value = "จัดชิดไม้ยมก";
document.editform.wpMinoredit.checked = true;
} else {
document.editform.wpSummary.value = document.editform.wpSummary.value + " +จัดชิดไม้ยมก";
}
}
// ========== เปลี่ยนเลขไทยเป็นเลขอารบิก ==========
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 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 WhatIsThaiYear() {
var what = getSelText();
var shortName = false;
var askMode = false;
var issueWarning = false;
var totalWarnings = 0;
var yr;
var pYr;
var txtArea = document.editform.wpTextbox1;
if (what == null || what.length == 0) {
what = getSelTextArea();
}
if (what != null && what.length > 0) {
what = what.replace(/ค\.ศ\. ?(\d{1,4})/g, "$1 AD");
/*if (what.search(/\[\[\d{1,4}\]\]/) != -1) {
shortName = true;
what = what.replace(/\[|\]/g, "");
}*/
}
if (what == null || what.length == 0) {
what = prompt("ระบุปี ค.ศ.:");
askMode = true;
}
if (what == null || what.length == 0) {
return;
}
if (askMode) {
if (isNaN(what)) {
return;
}
yr = parseInt(what) + 543;
pYr = parseInt(what) + 542;
if(yr <= 2483 && iScriptConfig.usePreciseConversion) {
alert("ค.ศ. " + what + " เท่ากับ พ.ศ. " + pYr + " สำหรับช่วงเดือนมกราคม - มีนาคม\nค.ศ. " + what + " เท่ากับ พ.ศ. " + yr + " สำหรับช่วงเดือนเมษายน - ธันวาคม");
} else if(yr <= 2483) {
alert("ค.ศ. " + what + " เท่ากับ พ.ศ. " + yr + "\n\nสคริปต์จัดให้คำนวณด้วยการ +543 เป็นค่าปริยายสำหรับทุกปีซึ่งอาจไม่แม่นยำ โดยคุณสามารถเปลี่ยนการคำนวณด้วยการปรับแต่ง ดูเพิ่มที่หน้าหลักสคริปต์จัดให้");
} else {
alert("ค.ศ. " + what + " เท่ากับ พ.ศ. " + yr);
}
return;
}
what = what.replace(/(January|February|March|April|May|June|July|August|September|October|November|December) (\d{1,2})/ig, "$2 $1");
what = what.replace(/January/ig, "มกราคม");
what = what.replace(/February/ig, "กุมภาพันธ์");
what = what.replace(/March/ig, "มีนาคม");
what = what.replace(/April/ig, "เมษายน");
what = what.replace(/May/ig, "พฤษภาคม");
what = what.replace(/June/ig, "มิถุนายน");
what = what.replace(/July/ig, "กรกฎาคม");
what = what.replace(/August/ig, "สิงหาคม");
what = what.replace(/September/ig, "กันยายน");
what = what.replace(/October/ig, "ตุลาคม");
what = what.replace(/November/ig, "พฤศจิกายน");
what = what.replace(/December/ig, "ธันวาคม");
//Fix gap lookahead
what = what.replace(/(\d{1,4}) AD/ig,"$1AD");
what = what.replace(/(\d{1,4}) BC/ig,"$1BC");
//Fix short BC, prevent conflict with just numbers
what = what.replace(/BC\|\d{1,4}/ig,"BC!");
//Remove comma
what = what.replace(/,/g, "");
var results = what.match(/(\d{3,4}(?!AD|BC|\d{1}))/ig);
if(results) {
for (var i = 0; i < results.length; i++) {
yr = parseInt(results[i]) + 543;
if(iScriptConfig.usePreciseConversion) {
if(yr <= 2483) {
issueWarning = true;
totalWarnings = totalWarnings + 1;
}
}
re = new RegExp(results[i] + "(?!AD|BC)", "ig");
what = what.replace(re, "พ.ศ. " + yr);
}
}
if(iScriptConfig.usePreciseConversion) {
var results = what.match(/(?:มกราคม|กุมภาพันธ์|มีนาคม) พ.ศ. (\d{1,4})(?!AD|BC|\d{1})/ig);
if(results) {
for (var i = 0; i < results.length; i++) {
yr = parseInt(results[i].match(/\d{1,4}/)[0]);
if(yr <= 2483) {
totalWarnings = totalWarnings - 1;
re = new RegExp("(มกราคม|กุมภาพันธ์|มีนาคม) พ.ศ. " + yr + "(?!AD|BC)", "ig");
yr = yr - 1;
what = what.replace(re, "$1 พ.ศ. " + yr);
}
}
}
var results = what.match(/(?:เมษายน|พฤษภาคม|มิถุนายน|กรกฎาคม|สิงหาคม|กันยายน|ตุลาคม|พฤศจิกายน|ธันวาคม) พ.ศ. (\d{1,4})(?!AD|BC|\d{1})/ig);
if(results) {
for (var i = 0; i < results.length; i++) {
yr = parseInt(results[i].match(/\d{1,4}/)[0]);
if(yr <= 2483) {
totalWarnings = totalWarnings - 1;
}
}
}
}
//!BC case handling (for short name)
results = what.match(/(\d{1,4})BC!/ig);
if(results) {
for (var i = 0; i < results.length; i++) {
if(iScriptConfig.usePreciseConversion) {
issueWarning = true;
}
yr = 544 - parseInt(results[i]);
re = new RegExp(results[i], "ig");
if(yr <= 0) {
yr = (yr-1)*-1;
what = what.replace(re, yr + " ปีก่อนพุทธศักราช|" + yr);
} else {
what = what.replace(re, "พ.ศ. " + yr);
}
}
}
//BC case handling
results = what.match(/(\d{1,4})BC/ig);
if(results) {
for (var i = 0; i < results.length; i++) {
if(iScriptConfig.usePreciseConversion) {
issueWarning = true;
}
yr = 544 - parseInt(results[i]);
re = new RegExp(results[i], "ig");
if(yr <= 0) {
yr = (yr-1)*-1;
what = what.replace(re, yr + " ปีก่อนพุทธศักราช");
} else {
what = what.replace(re, "พ.ศ. " + yr);
}
}
}
//AC case handling
results = what.match(/(\d{1,4})AD/ig);
if(results) {
for (var i = 0; i < results.length; i++) {
yr = parseInt(results[i]) + 543;
if(iScriptConfig.usePreciseConversion) {
if(yr <= 2483) {
issueWarning = true;
}
}
re = new RegExp(results[i], "ig");
what = what.replace(re, "พ.ศ. " + yr);
}
}
answer = what;
if (document.selection && !is_gecko) {
var theSelection = document.selection.createRange().text;
theSelection = theSelection.substring(0, theSelection.length - 1);
var range = document.selection.createRange();
range.text = answer;
range.select();
} else if (txtArea.selectionStart || txtArea.selectionStart == '0') {
var startPos = txtArea.selectionStart;
var endPos = txtArea.selectionEnd;
var scrollTop = txtArea.scrollTop;
txtArea.value = txtArea.value.substring(0, startPos) + answer + txtArea.value.substring(endPos, txtArea.value.length);
setCaretTo(txtArea, startPos + answer.length);
txtArea.scrollTop = scrollTop;
} else {
alert("การใช้งาน พ.ศ. อะไร มีปัญหาและไม่สามารถดำเนินการเสร็จสิ้นได้ กรุณาแจ้งที่ คุยกับผู้ใช้:Jutiphan");
}
if(issueWarning && totalWarnings > 0) {
alert("ในปีที่ได้เลือกให้แปลงนั้น มีบางปีที่ก่อนหน้า ค.ศ. 1941 ซึ่งสคริปต์จัดให้ได้แปลงด้วยการ +543 แต่สำหรับปีดังกล่าวหากเป็นช่วงมกราคม-มีนาคมอาจต้อง -1 เพื่อใช้ +542 แทนที่");
}
}
// ========== แทนที่คำส่วนแรก ==========
//Manual replace
function replacetxt() {
withw = '';
var what = getSelText();
if(what == null || what.length == 0) {
what = getSelTextArea();
}
if(what == null || what.length == 0) {
what = prompt("ระบุข้อความที่ต้องการจะแทนที่:" + "\n" + "(รองรับ Regex โดยให้ใส่ // นำหน้าและหลังสุด)");
}
if(what == null || what.length == 0) {
return;
}
what_GUI = what;
if(what.replace('//','').replace('//','') == what.split('//')[1]) {
what = what.split('//')[1]
replacetxtdone(what.split('//')[0],1,what);
} else {
what = what.replace(/\\/g,"\\\\");
what = what.replace(/\(/g,"\\(").replace(/\)/g,"\\)");
what = what.replace(/\{/g,"\\{").replace(/\}/g,"\\}");
what = what.replace(/\[/g,"\\[").replace(/\]/g,"\\]");
what = what.replace(/\|/g,"\\|");
what = what.replace(/\./g,"\\.");
what = what.replace(/\$/g,"\\$");
what = what.replace(/\+/g,"\\+");
what = what.replace(/\^/g,"\\^");
what = what.replace(/\?/g,"\\?");
what = what.replace(/\*/g,"\\*");
what = what.replace(/\//g,"\\/");
replacetxtdone(what,0,what_GUI);
}
}
// ========== แทนที่คำส่วนสอง ==========
function replacetxtdone(s,regexon,what_GUI) {
var original = document.editform.wpTextbox1.value;
if (s) {
if (regexon==1) {
var r = prompt('ระบุคำที่จะแทนที่ "' + what_GUI + '" (ให้ใช้ Regex)',what_GUI);
} else {
var r = prompt('ระบุคำที่จะแทนที่ "' + what_GUI + '"',what_GUI);
}
if(!r && r != '') {
alert('ยกเลิกการค้นหาและแทนที่ข้อความ');
return;
}
if(r == '') {
alert('ข้อความ "' + what + '" จะถูกลบทิ้งทั้งหมด');
}
var txt = document.editform.wpTextbox1;
if(regexon == 0) {
s = "([^:])" + s;
}
var rep = RegExp(s,"g");
if(regexon == 0) {
txt.value = txt.value.replace(rep,"$1"+r);
} else {
txt.value = txt.value.replace(rep,r);
}
form = document.getElementById('bodyContent');
l = form.getElementsByTagName('input');
for (i = 0; i < l.length; i++) {
if (l[i].name == 'wpMinoredit') {
l[i].value = '1'; l[i].checked=true;
}
}
if(document.editform.wpTextbox1.value == original) {
alert('ขออภัย ข้อความที่ระบุไม่เจอในบทความ');
return;
}
if(document.editform.wpSummary.value.length == 0) {
document.editform.wpSummary.value = 'แทนที่ "' + what_GUI + '" → "' + r + '"ด้วย[[WP:iScript|สคริปต์จัดให้]]';
} else {
var eIndex = document.editform.wpSummary.value.lastIndexOf("ด้วย[[WP:iScript|สคริปต์จัดให้]]");
if(eIndex != -1) {
var strTmp = document.editform.wpSummary.value;
document.editform.wpSummary.value = strTmp.substring(0,eIndex) + ' +แทนที่ "' + what_GUI + '" → "' + r + '"ด้วย[[WP:iScript|สคริปต์จัดให้]]';
} else {
document.editform.wpSummary.value += ' +แทนที่ "' + what_GUI + '" → "' + r + '" ด้วย[[WP:iScript|สคริปต์จัดให้]]';
}
}
}
}
addOnloadHook( function() {
var tooly = document.getElementById('toolbar');
if (tooly != null) {
var replaceButton = "<a href=\"javascript:replacetxt();\"><img src=\"http://upload.wikimedia.org/wikipedia/th/b/bc/Button_replace_th.png\" alt=\"แทนที่คำ\"></a>";
var porsorButton = "<a href=\"javascript:WhatIsThaiYear();\"><img src=\"http://upload.wikimedia.org/wikipedia/th/e/e2/Button_Porsor.png\" alt=\"พ.ศ. อะไร\"></a>";
tooly.innerHTML = tooly.innerHTML + replaceButton + porsorButton;
akeytt();
}
});
function addEditors() {
addTab("javascript:doConvertNumber()", "๒ ->2", "ca-tanum", "เปลี่ยนเลขไทยเป็นอารบิก", "");
addTab("javascript:doConvertToThaiNumber()", "2 ->๒", "ca-atnum", "เปลี่ยนเลขอารบิกเป็นไทย", "");
addTab("javascript:doConvertYamok()", "ๆ", "ca-yamok", "จัดชิดไม้ยมก");
}
if (document.title.indexOf("แก้ไข ") == 0) {
if (window.addEventListener) window.addEventListener("load", addEditors, false);
else if (window.attachEvent) window.attachEvent("onload", addEditors);
}
/* </nowiki></pre> */

