MediaWiki:Common.js:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ | /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ | ||
(function (mw) { | (function (mw) { | ||
function cleartext(){ | /*************多语言选择*************/ | ||
function cleartext() { | |||
for (var i = 1; i <= 6; i++) { | |||
var ti; | |||
eval("ti=t" + i + ";"); | |||
for (var j of ti) { | |||
ti.style.display = 'none'; | |||
} | |||
} | |||
} | |||
/*************编辑器注入*************/ | |||
var xdi8Letters = [ //希顶字母表 | |||
[ | |||
["!`", "b", "p", "m", "w", "j", "q", "x", "y", "n", "z", "D", "s", "r", "H", "N", "l", "d", "t", "g", "k", "h", "4", "5", "v", "F", "7", "B", "c", "f", "u", "a", "o", "e", "E", "A", "Y", "L", "6", "2", "T", "8", "3", "V", "1", "i"], | |||
["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] | |||
], | |||
[ | |||
["⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧"], | |||
["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] | |||
] | |||
]; | |||
function translatePua(str) {//翻译作pua | |||
for (let i of xdi8Letters) { | |||
for (let j of i[0]) { | |||
while (str != str.replace(j, i[1][i[0].indexOf(j)])) { | |||
str = str.replace(j, i[1][i[0].indexOf(j)]) | |||
} | |||
} | |||
} | |||
return str; | |||
} | |||
function injectBotton() {//注入希顶按钮 | |||
function findBotton() { | |||
if (document.getElementsByTagName("div")) { | |||
for (var childs of document.getElementsByTagName("div")) { | |||
var attrs = childs.attributes; | |||
if (attrs && (attrs["rel"] && attrs["rel"].value == "latin") && (attrs["class"] && attrs["class"].value != "toolbar section section-main")) { | |||
return childs; | |||
} | |||
} | |||
} | |||
return null; | |||
} | |||
if (findBotton()) { | |||
findBotton().setAttribute('class', ''); | |||
var xdi8Bottom = document.createElement('div'); | |||
xdi8Bottom.setAttribute('rel', 'xdi8'); | |||
xdi8Bottom.setAttribute('id', 'xdi8in'); | |||
xdi8Bottom.onclick = function () { //取自mediawiki内部脚本 | |||
var section; | |||
$(this).parent().parent().find('.page').hide(); | |||
$(this).parent().parent().find('.page-' + $(this).attr('rel')).show().trigger('loadPage'); | |||
$(this).siblings().removeClass('current'); | |||
$(this).addClass('current'); | |||
section = $(this).parent().parent().attr('rel'); | |||
$.cookie('wikiEditor-' + $(this).data('context').instance + '-booklet-' + section + '-page', $(this).attr('rel'), { | |||
expires: 30, | |||
path: '/' | |||
}); | |||
event.preventDefault(); | |||
} | |||
xdi8Bottom.innerText = "希顶字母"; | |||
findBotton().parentNode.insertBefore(xdi8Bottom, findBotton()); | |||
} | |||
} | |||
function insertText(obj, str) {//向texteara插入文本在当前光标处 | |||
if (document.selection) { | |||
var sel = document.selection.createRange(); | |||
sel.text = str; | |||
} | |||
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') { | |||
var startPos = obj.selectionStart, | |||
endPos = obj.selectionEnd, | |||
cursorPos = startPos, | |||
tmpStr = obj.value; | |||
obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length); | |||
cursorPos += str.length; | |||
obj.selectionStart = obj.selectionEnd = cursorPos; | |||
} | |||
else { | |||
obj.value += str; | |||
} | |||
} | } | ||
function injectList() {//注入希顶输入列表 | |||
function findList() { | |||
if (document.getElementsByTagName("div")) { | |||
for (var childs of document.getElementsByTagName("div")) { | |||
var attrs = childs.attributes; | |||
if (attrs && (attrs["rel"] && attrs["rel"].value == "latin") && (attrs["class"] && attrs["class"].value == "page page-latin page-characters")) { | |||
return childs; | |||
} | |||
} | |||
} | |||
return null; | |||
}; | |||
if (findList()) { | |||
findList().style = "display: none"; | |||
var xdi8List = document.createElement('div'); | |||
xdi8List.setAttribute('rel', 'xdi8'); | |||
xdi8List.setAttribute('class', 'page page-xdi8 page-characters'); | |||
var divin = document.createElement('div'); | |||
divin.setAttribute('dir', 'ltr'); | |||
for (var letter of xdi8Letters[0][1].concat(xdi8Letters[1][1])) {//内含物字母列表 | |||
var spanin = document.createElement("span") | |||
spanin.setAttribute('rel', letter); | |||
spanin.innerText = letter; | |||
spanin.style.fontFamily = "'XEGOEPUAall',-apple-system,'Helvetica Neue','Segoe UI',Helvetica,'Nimbus Sans L',Arial,'Liberation Sans','PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Source Han Sans SC','Microsoft YaHei','Wenquanyi Micro Hei','WenQuanYi Zen Hei','ST Heiti',SimHei,'WenQuanYi Zen Hei Sharp',sans-serif"; | |||
divin.appendChild(spanin); | |||
spanin.onclick = function () { insertText(wpTextbox1, $(this).attr('rel')); }; | |||
} | |||
xdi8List.appendChild(divin); | |||
findList().parentNode.insertBefore(xdi8List, findList()); | |||
} | } | ||
} | } | ||
function insertTextBothSide(obj, str1, str2) {//向texteara插入文本在当前光标两侧 | |||
if (document.selection) { | |||
var sel = document.selection.createRange(); | |||
sel.text = str1 + sel.text + str2; | |||
} | |||
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') { | |||
var startPos = obj.selectionStart, | |||
endPos = obj.selectionEnd, | |||
cursorPos = startPos, | |||
tmpStr = obj.value; | |||
obj.value = tmpStr.substring(0, startPos) + str1 + tmpStr.substring(startPos, endPos) + str2 + tmpStr.substring(endPos, tmpStr.length); | |||
cursorPos += str1.length; | |||
obj.selectionStart = obj.selectionEnd = cursorPos; | |||
} | |||
else { | |||
obj.value = str1 + obj.value + str2; | |||
} | } | ||
} | } | ||
document. | function insertTransPua(obj) {//向texteara文段翻译 | ||
if (document.selection) { | |||
var sel = document.selection.createRange(); | |||
sel.text = translatePua(sel.text); | |||
} | |||
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') { | |||
var startPos = obj.selectionStart, | |||
endPos = obj.selectionEnd, | |||
cursorPos = startPos, | |||
tmpStr = obj.value; | |||
obj.value = tmpStr.substring(0, startPos) + translatePua(tmpStr.substring(startPos, endPos)) + tmpStr.substring(endPos, tmpStr.length); | |||
cursorPos += translatePua(tmpStr.substring(startPos, endPos)).length - tmpStr.substring(startPos, endPos).length; | |||
obj.selectionStart = obj.selectionEnd = cursorPos; | |||
} | |||
else { | |||
obj.value = translatePua(obj.value); | |||
} | } | ||
} | } | ||
function findTransPua(obj) {//在texteara里寻找{{x}}翻译 | |||
function findX(str) { | |||
for (var indx = str.indexOf("{{x|"); indx >= 0; indx = str.indexOf("{{x|")) { | |||
var floor = 1; | |||
var nowin = indx; | |||
while (floor > 0) { | |||
var floorb = str.indexOf("}}", nowin); | |||
if (floorb >= 0) { | |||
floor--; | |||
nowin = floorb; | |||
} | |||
else { | |||
var floora = str.indexOf("{{", nowin); | |||
if (floora >= 0) { | |||
floor++; | |||
nowin = floora; | |||
} | |||
} | |||
} | |||
str = str.substring(0, indx) + translatePua(str.substring(indx + 4, nowin)) + str.substring(nowin + 2, str.length); | |||
} | |||
return str; | |||
} | } | ||
obj.value = findX(obj.value); | |||
} | } | ||
document. | function injectBelow() {//注入下面的按钮 | ||
function findBelow() {//寻找位置 | |||
if (document.getElementsByTagName("div")) { | |||
for (var childs of document.getElementsByTagName("div")) { | |||
var attrs = childs.attributes; | |||
if (attrs && attrs["class"] && attrs["class"].value == "editOptions") { | |||
return childs; | |||
} | |||
} | |||
} | |||
return null; | |||
}; | |||
if (findBelow()) { | |||
//希顶翻译块 | |||
var belowBottom3 = document.createElement('a'); | |||
belowBottom3.onclick = function () { insertTransPua(wpTextbox1); }; | |||
belowBottom3.innerText = "转换选中区域希顶为PUA"; | |||
belowBottom3.style.marginLeft = "1.4em"; | |||
findBelow().insertBefore(belowBottom3, findBelow().childNodes[0]); | |||
//希顶翻译全文 | |||
var belowBottom4 = document.createElement('a'); | |||
belowBottom4.onclick = function () { findTransPua(wpTextbox1); }; | |||
belowBottom4.innerText = "转换全文{{x|}}内希顶为PUA"; | |||
belowBottom4.style.marginLeft = "1.4em"; | |||
findBelow().insertBefore(belowBottom4, findBelow().childNodes[0]); | |||
//插入功能表 | |||
var funcLists = [ | |||
["[[", "]]"], | |||
["{{拼|", "}}"], | |||
["{{|", "}}"], | |||
["{{ruby|", "|}}"], | |||
["{{color|red|", "}}"], | |||
["{{国家声明}}", ""], | |||
["{{人物声明}}", ""], | |||
["{{Info|", "}}"], | |||
["{{x|", "}}"] | |||
] | |||
for (var funcList of funcLists) { | |||
var belowBottom2 = document.createElement('a'); | |||
belowBottom2.setAttribute('onclick', "insertTextBothSide(wpTextbox1,'" + funcList[0] + "','" + funcList[1] + "');");//需要固定量 | |||
belowBottom2.innerText = funcList[0] + (funcList[1] != "" ? "..." : "") + funcList[1]; | |||
belowBottom2.style.marginLeft = "1.4em"; | |||
findBelow().insertBefore(belowBottom2, findBelow().childNodes[0]); | |||
} | |||
var belowBottom = document.createElement('a'); | |||
belowBottom.href = "#xdi8in"; | |||
belowBottom.onclick = function () { | |||
document.getElementById("wikiEditor-section-characters").setAttribute('class', 'booklet section section-characters section-visible'); | |||
} | |||
belowBottom.innerText = "输入希顶字母"; | |||
findBelow().insertBefore(belowBottom, findBelow().childNodes[0]); | |||
} | } | ||
} | } | ||
document.getElementById(" | |||
//函数执行块,dom加载完备时执行 | |||
$(function () { | |||
//多语言选择 | |||
for (var i = 1; i <= 6; i++) { | |||
document.getElementById("b" + i).setAttribute('onclick', "cleartext(); for(var i = 0; i < t" + i + ".length; i++) { t" + i + "[i].style.display = 'block'; }"); | |||
} | } | ||
//编辑器注入 | |||
}); | injectBotton(); | ||
injectList(); | |||
injectBelow(); | |||
}); | |||
})(mediaWiki); | })(mediaWiki); |
2022年4月10日 (日) 16:02的版本
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
(function (mw) {
/*************多语言选择*************/
function cleartext() {
for (var i = 1; i <= 6; i++) {
var ti;
eval("ti=t" + i + ";");
for (var j of ti) {
ti.style.display = 'none';
}
}
}
/*************编辑器注入*************/
var xdi8Letters = [ //希顶字母表
[
["!`", "b", "p", "m", "w", "j", "q", "x", "y", "n", "z", "D", "s", "r", "H", "N", "l", "d", "t", "g", "k", "h", "4", "5", "v", "F", "7", "B", "c", "f", "u", "a", "o", "e", "E", "A", "Y", "L", "6", "2", "T", "8", "3", "V", "1", "i"],
["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
],
[
["⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧", "⇧"],
["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
]
];
function translatePua(str) {//翻译作pua
for (let i of xdi8Letters) {
for (let j of i[0]) {
while (str != str.replace(j, i[1][i[0].indexOf(j)])) {
str = str.replace(j, i[1][i[0].indexOf(j)])
}
}
}
return str;
}
function injectBotton() {//注入希顶按钮
function findBotton() {
if (document.getElementsByTagName("div")) {
for (var childs of document.getElementsByTagName("div")) {
var attrs = childs.attributes;
if (attrs && (attrs["rel"] && attrs["rel"].value == "latin") && (attrs["class"] && attrs["class"].value != "toolbar section section-main")) {
return childs;
}
}
}
return null;
}
if (findBotton()) {
findBotton().setAttribute('class', '');
var xdi8Bottom = document.createElement('div');
xdi8Bottom.setAttribute('rel', 'xdi8');
xdi8Bottom.setAttribute('id', 'xdi8in');
xdi8Bottom.onclick = function () { //取自mediawiki内部脚本
var section;
$(this).parent().parent().find('.page').hide();
$(this).parent().parent().find('.page-' + $(this).attr('rel')).show().trigger('loadPage');
$(this).siblings().removeClass('current');
$(this).addClass('current');
section = $(this).parent().parent().attr('rel');
$.cookie('wikiEditor-' + $(this).data('context').instance + '-booklet-' + section + '-page', $(this).attr('rel'), {
expires: 30,
path: '/'
});
event.preventDefault();
}
xdi8Bottom.innerText = "希顶字母";
findBotton().parentNode.insertBefore(xdi8Bottom, findBotton());
}
}
function insertText(obj, str) {//向texteara插入文本在当前光标处
if (document.selection) {
var sel = document.selection.createRange();
sel.text = str;
}
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
var startPos = obj.selectionStart,
endPos = obj.selectionEnd,
cursorPos = startPos,
tmpStr = obj.value;
obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
cursorPos += str.length;
obj.selectionStart = obj.selectionEnd = cursorPos;
}
else {
obj.value += str;
}
}
function injectList() {//注入希顶输入列表
function findList() {
if (document.getElementsByTagName("div")) {
for (var childs of document.getElementsByTagName("div")) {
var attrs = childs.attributes;
if (attrs && (attrs["rel"] && attrs["rel"].value == "latin") && (attrs["class"] && attrs["class"].value == "page page-latin page-characters")) {
return childs;
}
}
}
return null;
};
if (findList()) {
findList().style = "display: none";
var xdi8List = document.createElement('div');
xdi8List.setAttribute('rel', 'xdi8');
xdi8List.setAttribute('class', 'page page-xdi8 page-characters');
var divin = document.createElement('div');
divin.setAttribute('dir', 'ltr');
for (var letter of xdi8Letters[0][1].concat(xdi8Letters[1][1])) {//内含物字母列表
var spanin = document.createElement("span")
spanin.setAttribute('rel', letter);
spanin.innerText = letter;
spanin.style.fontFamily = "'XEGOEPUAall',-apple-system,'Helvetica Neue','Segoe UI',Helvetica,'Nimbus Sans L',Arial,'Liberation Sans','PingFang SC','Hiragino Sans GB','Noto Sans CJK SC','Source Han Sans SC','Microsoft YaHei','Wenquanyi Micro Hei','WenQuanYi Zen Hei','ST Heiti',SimHei,'WenQuanYi Zen Hei Sharp',sans-serif";
divin.appendChild(spanin);
spanin.onclick = function () { insertText(wpTextbox1, $(this).attr('rel')); };
}
xdi8List.appendChild(divin);
findList().parentNode.insertBefore(xdi8List, findList());
}
}
function insertTextBothSide(obj, str1, str2) {//向texteara插入文本在当前光标两侧
if (document.selection) {
var sel = document.selection.createRange();
sel.text = str1 + sel.text + str2;
}
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
var startPos = obj.selectionStart,
endPos = obj.selectionEnd,
cursorPos = startPos,
tmpStr = obj.value;
obj.value = tmpStr.substring(0, startPos) + str1 + tmpStr.substring(startPos, endPos) + str2 + tmpStr.substring(endPos, tmpStr.length);
cursorPos += str1.length;
obj.selectionStart = obj.selectionEnd = cursorPos;
}
else {
obj.value = str1 + obj.value + str2;
}
}
function insertTransPua(obj) {//向texteara文段翻译
if (document.selection) {
var sel = document.selection.createRange();
sel.text = translatePua(sel.text);
}
else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
var startPos = obj.selectionStart,
endPos = obj.selectionEnd,
cursorPos = startPos,
tmpStr = obj.value;
obj.value = tmpStr.substring(0, startPos) + translatePua(tmpStr.substring(startPos, endPos)) + tmpStr.substring(endPos, tmpStr.length);
cursorPos += translatePua(tmpStr.substring(startPos, endPos)).length - tmpStr.substring(startPos, endPos).length;
obj.selectionStart = obj.selectionEnd = cursorPos;
}
else {
obj.value = translatePua(obj.value);
}
}
function findTransPua(obj) {//在texteara里寻找{{x}}翻译
function findX(str) {
for (var indx = str.indexOf("{{x|"); indx >= 0; indx = str.indexOf("{{x|")) {
var floor = 1;
var nowin = indx;
while (floor > 0) {
var floorb = str.indexOf("}}", nowin);
if (floorb >= 0) {
floor--;
nowin = floorb;
}
else {
var floora = str.indexOf("{{", nowin);
if (floora >= 0) {
floor++;
nowin = floora;
}
}
}
str = str.substring(0, indx) + translatePua(str.substring(indx + 4, nowin)) + str.substring(nowin + 2, str.length);
}
return str;
}
obj.value = findX(obj.value);
}
function injectBelow() {//注入下面的按钮
function findBelow() {//寻找位置
if (document.getElementsByTagName("div")) {
for (var childs of document.getElementsByTagName("div")) {
var attrs = childs.attributes;
if (attrs && attrs["class"] && attrs["class"].value == "editOptions") {
return childs;
}
}
}
return null;
};
if (findBelow()) {
//希顶翻译块
var belowBottom3 = document.createElement('a');
belowBottom3.onclick = function () { insertTransPua(wpTextbox1); };
belowBottom3.innerText = "转换选中区域希顶为PUA";
belowBottom3.style.marginLeft = "1.4em";
findBelow().insertBefore(belowBottom3, findBelow().childNodes[0]);
//希顶翻译全文
var belowBottom4 = document.createElement('a');
belowBottom4.onclick = function () { findTransPua(wpTextbox1); };
belowBottom4.innerText = "转换全文{{x|}}内希顶为PUA";
belowBottom4.style.marginLeft = "1.4em";
findBelow().insertBefore(belowBottom4, findBelow().childNodes[0]);
//插入功能表
var funcLists = [
["[[", "]]"],
["{{拼|", "}}"],
["{{|", "}}"],
["{{ruby|", "|}}"],
["{{color|red|", "}}"],
["{{国家声明}}", ""],
["{{人物声明}}", ""],
["{{Info|", "}}"],
["{{x|", "}}"]
]
for (var funcList of funcLists) {
var belowBottom2 = document.createElement('a');
belowBottom2.setAttribute('onclick', "insertTextBothSide(wpTextbox1,'" + funcList[0] + "','" + funcList[1] + "');");//需要固定量
belowBottom2.innerText = funcList[0] + (funcList[1] != "" ? "..." : "") + funcList[1];
belowBottom2.style.marginLeft = "1.4em";
findBelow().insertBefore(belowBottom2, findBelow().childNodes[0]);
}
var belowBottom = document.createElement('a');
belowBottom.href = "#xdi8in";
belowBottom.onclick = function () {
document.getElementById("wikiEditor-section-characters").setAttribute('class', 'booklet section section-characters section-visible');
}
belowBottom.innerText = "输入希顶字母";
findBelow().insertBefore(belowBottom, findBelow().childNodes[0]);
}
}
//函数执行块,dom加载完备时执行
$(function () {
//多语言选择
for (var i = 1; i <= 6; i++) {
document.getElementById("b" + i).setAttribute('onclick', "cleartext(); for(var i = 0; i < t" + i + ".length; i++) { t" + i + "[i].style.display = 'block'; }");
}
//编辑器注入
injectBotton();
injectList();
injectBelow();
});
})(mediaWiki);