MediaWiki:Common.js
Bước tới điều hướng
Bước tới tìm kiếm
Chú ý: Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.
- Firefox / Safari: Nhấn giữ phím Shift trong khi nhấn Tải lại (Reload), hoặc nhấn tổ hợp Ctrl-F5 hay Ctrl-R (⌘R trên Mac)
- Google Chrome: Nhấn tổ hợp Ctrl-Shift-R (⇧⌘R trên Mac)
- Internet Explorer / Edge: Nhấn giữ phím Ctrl trong khi nhấn Làm tươi (Refresh), hoặc nhấn tổ hợp Ctrl-F5
- Opera: Nhấn tổ hợp Ctrl-F5.
/* Extra editor
*/
// if(!document.getElementById('font1')) {
// var link = document.createElement('link');
// link.id = 'fon1';
// link.rel = 'stylesheet';
// link.href = 'https://fonts.googleapis.com/css?family=Andika|Pattaya';
// document.head.appendChild(link);
// }
function insertAtCursor(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
}
//MOZILLA and others
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
}
}
var button = [
{
't': 'ruby',
'l': 'Chữ kanji, vd 神: <input class="eeinput" type="text" data-value="1"><br>Phiên ngữ, vd スペルカード: <input class="eeinput" type="text" data-value="2">',
'd': 'Dùng tạo chữ tiếng Nhật có phiên âm trên đầu',
'f': function(){
var format = '{{ruby-ja|##1##|##2##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'title (typo)',
'l': 'Nội dung gốc: <input class="eeinput" type="text" data-value="1"><br>Nội dung bổ nghĩa (hiện ra khi đưa chuột vào): <input class="eeinput" type="text" data-value="2">',
'd': 'Dùng tạo câu có phần bổ nghĩa khi đưa chuột vào',
'f': function(){
var format = '{{H:title|##1##|##2##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'nihongo',
'l': 'Nội dung: <input class="eeinput" type="text" data-value="1"><br>Chữ Nhật, vd 神: <input class="eeinput" type="text" data-value="2"><br>Phiên âm Nhật, vd kami: <input class="eeinput" type="text" data-value="3"><br>Phiên âm Hán Việt, nghĩa của từ, vd "Thần", trong "thần linh": <input class="eeinput" type="text" data-value="4">',
'd': 'Dùng tạo chữ tiếng Nhật',
'f': function(){
var format = '{{nihongo|##1##|##2##|##3##|##4##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'lang',
'l': 'Dùng ghi chữ tiếng nước ngoài<br>Từ khóa: <input class="eeinput" type="text" data-value="1"><br>Ngôn ngữ (mặc định ja): <input class="eeinput" type="text" data-value="2">',
'd': 'Dùng cho các trang có tên trùng với tên của trang điều hướng',
'f': function(){
var format = '{{lang|##2##|##1##}}', input = $('.eeinput'), inputl = input.length;
if(input.eq(1).val().length === 0) format = format.replace('##2##','ja');
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'citation require',
'l': 'Tên yêu cầu, mặc định "Cần dẫn nguồn": <input class="eeinput" type="text" data-value="1"><br>Lý do yêu cầu, ví dụ Khi nào: <input class="eeinput" type="text" data-value="2">',
'd': 'Tạo chú thích',
'f': function(){
var format = '{{citation needed|name = ##1##|reason = ##2##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'cite web',
'l': 'Đường dẫn, vd http://www.gensokyovn.net: <input class="eeinput" type="text" data-value="1"><br>Tiêu đề trang, vd The Truth about Shoutoku: <input class="eeinput" type="text" data-value="2"><br>Tác giả, vd Laura Robert: <input class="eeinput" type="text" data-value="3"><br>Trích dẫn, vd Trích dẫn: <input class="eeinput" type="text" data-value="4"><br>Ngày đăng, vd 20/8/2011: <input class="eeinput" type="text" data-value="5"><br>Ngày lấy bài viết, vd 22/6/2016: <input class="eeinput" type="text" data-value="6"><br>Ngôn ngữ, vd Tiếng Nhật: <input class="eeinput" type="text" data-value="7"><br>Lưu trữ: <input class="eeinput" type="text" data-value="8"> vào lúc <input class="eeinput" type="text" data-value="9">',
'd': 'Thêm liên kết ngoài',
'f': function(){
var format = '{{cite web|url = ##1##|title = ##2##|author = ##3##|date = ##5##|accessdate = ##6##|language = ##7##|quote = ##4##|archiveurl = ##8##|archivedate = ##9##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'ref',
'l': 'Tên của chú thích: <input class="eeinput" type="text" data-value="1"><br>Nội dung chú thích: <textarea rows="5" class="eeinput" style="width: 300px!important" data-value="2"></textarea>',
'd': 'Tạo chú thích',
'f': function(){
var format = '<ref name="##1##">##2##</ref>', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'media',
'l': 'Tên file, vd Mamizou_Summon.jpg: <input class="eeinput" type="text" data-value="1"><br>Vị trí, mặc định bên phải: <input class="eeinput" type="checkbox" value="left" data-value="2"> Trái<br>Độ dài ảnh, ví dụ 100px: <input class="eeinput" type="text" data-value="3"><br>(*Để so sánh, khung nhập ở trên dài 220px*)<br>Chú thích ảnh: <input class="eeinput" type="text" data-value="4">',
'd': 'Dùng chèn ảnh vào bài',
'f': function(){
var format = '[[File:##1##|thumb|###x###|##3##|##4##]]', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
if(input.eq(1).prop('checked') === true) format = format.replace('###x###', 'left');
else format.replace('###x###', 'right');
return format;
}
},{
't': 'title',
'l': 'Số lượng danh hiệu: <input class="eeinput" type="text" data-value="1">',
'd': 'Thêm bảng danh hiệu',
'f': function(){
var format = '{{hidden begin|Danh hiệu}}\n{{info card\n|##1##\n}}\n{{hidden end}}';
var inputl = parseInt($('.eeinput').eq(0).val());
var insert = '';
for(var i = 1; i <= inputl; i++) insert += '\n{{title\n | jap = /* Tiếng nhật ' + i + ' */\n | eng = /* Tiếng Anh ' + i + ' */\n | vie = /* Tiếng Việt ' + i + ' */\n | app = /* Xuất hiện ' + i + ' */\n}}';
format = format.replace('##1##', insert);
return format;
}
},{
't': 'music',
'l': 'Số lượng nhạc nền: <input class="eeinput" type="text" data-value="1">',
'd': 'Thêm bảng nhạc nền',
'f': function(){
var format = '{{hidden begin|Nhạc nền}}\n{{music card\n|##1##\n}}\n{{hidden end}}';
var inputl = parseInt($('.eeinput').eq(0).val());
var insert = '';
for(var i = 1; i <= inputl; i++) insert += '\n{{music\n | jap = /* Tiếng nhật ' + i + ' */\n | eng = /* Tiếng Anh ' + i + ' */\n | app = /* Xuất hiện ' + i + ' */\n}}';
format = format.replace('##1##', insert);
return format;
}
},{
't': 'appearance',
'l': 'Số lượt xuất hiện trong game: <input class="eeinput" type="text" data-value="1"><br>Số lượt xuất hiện trong ấn phẩm: <input class="eeinput" type="text" data-value="2"><br>Số lượt xuất hiện trong CD: <input class="eeinput" type="text" data-value="3"><br>Số lượt xuất hiện khác: <input class="eeinput" type="text" data-value="4">',
'd': 'Thêm liên kết ngoài',
'f': function(){
var format = '{{hidden pink|Xuất hiện}}\n##1##{{hidden end}}', input = $('.eeinput');
var inputl, insert = '', insert2 = '';
var j;
inputl = parseInt(input.eq(0).val());
if(isNaN(inputl) === false && inputl !== 0) insert2 = '<center>\'\'\'Game\'\'\'</center>\n{{appearance card\n|##1##\n}}\n';
for(var i = 1; i <= inputl; i++) insert += '\n{{appearance\n | app = /* Tác phẩm ' + i + ' */\n | role = /* Vai trò ' + i + ' */\n}}';
insert2 = insert2.replace('##1##', insert);
insert = '';
inputl = parseInt(input.eq(1).val());
if(isNaN(inputl) === false && inputl !== 0) insert2 += '<center>\'\'\'Ấn phẩm\'\'\'</center>\n{{appearance card\n|##1##\n}}\n';
for(i = 1; i <= inputl; i++) insert += '\n{{appearance\n | app = /* Tác phẩm ' + i + ' */\n | role = /* Vai trò ' + i + ' */\n}}';
insert2 = insert2.replace('##1##', insert);
insert = '';
inputl = parseInt(input.eq(2).val());
if(isNaN(inputl) === false && inputl !== 0) insert2 += '<center>\'\'\'CD\'\'\'</center>\n{{appearance card\n|##1##\n}}\n';
for(i = 1; i <= inputl; i++) insert += '\n{{appearance\n | app = /* Tác phẩm ' + i + ' */\n | role = /* Vai trò ' + i + ' */\n}}';
insert2 = insert2.replace('##1##', insert);
insert = '';
inputl = parseInt(input.eq(3).val());
if(isNaN(inputl) === false && inputl !== 0) insert2 += '<center>\'\'\'Khác\'\'\'</center>\n{{appearance card\n|##1##\n}}\n';
for(i = 1; i <= inputl; i++) insert += '\n{{appearance\n | app = /* Tác phẩm ' + i + ' */\n | role = /* Vai trò ' + i + ' */\n}}';
insert2 = insert2.replace('##1##', insert);
format = format.replace('##1##', insert2);
return format;
}
},{
't': 'story',
'l': 'Tên của cốt truyện, vd [[Ten Desires]]: <input class="eeinput" style="width: 300px!important" type="text" data-value="1"><br>',
'd': 'Dùng tạo mục chứa cốt truyện',
'f': function(){
var format = '{{hidden gray|##1##}}\n/* Nội dung cốt truyện */\n{{hidden end}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'skill',
'l': 'Họ tên nhân vật: <input class="eeinput" style="width: 300px!important" type="text" data-value="1"><br>',
'd': 'Dùng tạo mục chứa các đòn đánh',
'f': function(){
var format = '{{hidden begin\n| title = Các đòn đánh\n| fluid = true \n| titlestyle = background: #ebce47; text-align:center\n| bodystyle = border: 2px solid #ebce47;\n| titleclass = spoiler-skill\n| bodyclass = spoiler-skill\n}}\n{{#lsth:##1##/Đòn đánh|Danh sách}}\n{{hidden end}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'spell',
'l': 'Họ tên nhân vật: <input class="eeinput" style="width: 300px!important" type="text" data-value="1"><br>',
'd': 'Dùng tạo mục chứa các spell card',
'f': function(){
var format = '{{hidden blue|Spell card}}\n{{#lsth:##1##/Spell card|Danh sách}}\n{{hidden end}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'profile',
'l': 'Tên của cốt truyện, vd [[Urban Legend in Limbo]] - Trang web chính thức: <input class="eeinput" style="width: 300px!important" type="text" data-value="1"><br>',
'd': 'Dùng tạo mục chứa các thông tin cá nhân của nhân vật',
'f': function(){
var format = '{{hidden green|##1##}}\nNội dung bên trong\n{{hidden end}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'fandom',
'l': 'Tên nhân vật, ví dụ Koishi: <input class="eeinput" type="text" data-value="1"><br>',
'd': 'Dùng tạo mục chứa thông tin fandom',
'f': function(){
var format = '{{hidden teal|##1## trong fandom}}\n/* Nội dung */\n{{hidden end}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'sprite',
'l': 'Tên file, vd Mamizou_Summon.jpg: <input class="eeinput" type="text" data-value="1"><br>Chú thích sprite: <input class="eeinput" type="text" data-value="2">',
'd': 'Dùng chèn sprite',
'f': function(){
var format = '{{Sprite\n | file = [[File:##1##]]\n | desc = ##2##\n}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'track',
'l': 'Số thứ tự, vd 01: <input class="eeinput" type="text" data-value="1"><br>Tên tiếng Nhật: <input class="eeinput" type="text" data-value="2"><br>Tên tiếng Anh: <input class="eeinput" type="text" data-value="3"><br>Tên tiếng Việt: <input class="eeinput" type="text" data-value="4"><br>Độ dài, vd 03:23: <input class="eeinput" type="text" data-value="5"><br>Lời dịch, vd Lời dịch:Border of Life: <input class="eeinput" type="text" data-value="6">',
'd': 'Dùng tạo thông tin nhạc',
'f': function(){
var format = '{{track\n|order = ##1##\n|name-org = ##2##\n|name-eng = ##3##\n|name-vie = ##4##\n|length = ##5##\n|lyric = ##6##\n}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'H:title',
'l': 'Phần câu: <input class="eeinput" type="text" data-value="1"><br>Phần chú thích (hiện ra khi lia chuột vào): <input class="eeinput" type="text" data-value="2">',
'd': 'Dùng tạo câu có phần chú thích đơn giản (hiện chú thích khi đưa chuột vào)',
'f': function(){
var format = '{{H:title|##1##|##2##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'dual',
'l': 'Ước tính số đoạn: <input class="eeinput" type="text" data-value="1">',
'd': 'Bảng dịch song ngữ',
'f': function(){
var format = '';
var inputl = parseInt($('.eeinput').eq(0).val());
var insert = '';
for(var i = 1; i <= inputl; i++) insert += '\n{{profile\n | jap = /* Tiếng nhật ' + i + ' */\n | vie = /* Tiếng Việt ' + i + ' */\n}}';
format = format.replace('##1##', insert);
return format;
}
},{
't': 'other use',
'l': 'Phải đặt template này ngay đầu bài wiki<br>Từ khóa: <input class="eeinput" type="text" data-value="1">',
'd': 'Dùng cho các trang có tên trùng với tên của trang điều hướng',
'f': function(){
var format = '{{other use|##1##}}', input = $('.eeinput'), inputl = input.length;
for(var i = 1; i <= inputl; i++) format = format.replace('##' + i + '##', input.eq(i-1).val());
return format;
}
},{
't': 'confuse',
'l': 'Phải đặt template này ngay đầu bài wiki<br>Template này không cần thông số',
'd': 'Cảnh báo sử dụng từ ngữ khác biệt với bản gốc, ví dụ divine spirit vs hồn thiêng',
'f': function(){
var format = '{{language confuse}}';
return format;
}
},{
't': 'dual control',
'l': 'Phải đặt template này ngay đầu bài wiki<br>Template này không cần thông số',
'd': 'Bảng điều khiển song ngữ',
'f': function(){
var format = '{{dual control box}}';
return format;
}
}
];
var latest;
$(function(){
$('.editOptions').before('<div class="extraeditOptions"><table class="eetable"><tr><td rowspan="2" class="eecell1"><button type="button" class="eeexecute">Tạo!</button><div class="eebuttonlist"></div></td><td><div class="eedesc" class="eecell2"></div></td></tr><tr><td><div class="eeinterface"></div></td></tr></table></div>');
var a = $('.extraeditOptions'), e = $('.eebuttonlist'), r = $('.eeinterface'), d = $('.eedesc');
var buttonl = button.length;
var target;
for(var i = 0; i < buttonl; i++) {
target = button[i];
e.append('<button class="eebutton" type="button" value="' + i + '">' + target.t + '</button> ');
}
var but = $('.eebutton'), butl = but.length;
$('.eeexecute').on('click',function(){
var t = $('#wpTextbox1')[0];
var target = button[latest];
insertAtCursor(t,target.f());
t.focus();
});
for(i = 0; i < butl; i++) {
but.eq(i).on('click',function(){
var a = $(this);
var alias = parseInt(a.val());
var target = button[alias];
r.html(target.l);
d.html(target.d);
latest = alias;
});
}
});
function navigatorBoxCreate() {
var content = '<div class="mobile_box navigator_box" style="display: none"><center><b>Bảng định hướng</b><br>'
+ '<small><i>Bấm vào các ô để mở trang định hướng tương ứng</i></small></center>';
var appGroup = $('.gridTable__wrapper--appearance');
for(var i = 0; i < appGroup.length; i++){
var appItem = appGroup.eq(i);
var label = appItem.prev('center').text();
var colorset;
switch(label) {
case 'Game' : colorset = '#f1abdc'; break;
case 'Ấn phẩm' : colorset = '#87ceeb'; break;
case 'CD' : colorset = '#ebce87'; break;
case 'Khác' : colorset = '#b9d379'; break;
case 'Game (PC-98)' : colorset = '#ffbbec'; break;
case 'Ấn phẩm (PC-98)' : colorset = '#97defb'; break;
case 'CD (PC-98)' : colorset = '#fbde97'; break;
case 'Khác (PC-98)' : colorset = '#e9e389'; break;
}
var subContent = '<div class="navigator__category--label">' + label + '</div><div class="navigator__category--wrapper">';
var itemGroup = appItem.find('.navigation--box');
for(var j = 0; j < itemGroup.length; j++)
subContent += '<div class="navigator__category--item" style="background-color: ' + colorset + '">' + itemGroup.eq(j).html() + '</div>';
subContent += '</div>';
if(itemGroup.length > 0)
content += subContent;
}
content += '</div>';
if(appGroup.length > 0)
$('#mw-content-text').append(content);
};
function tabContentCreate () {
var group1 = $('.tab_content_container'), group1l = group1.length;
for(var i = 0; i < group1l; i++){
var group = group1.eq(i);
var container = group.find('.tab_content_button_container').eq(0);
var default_div = group.find('.tab_content_default').eq(0);
var width = default_div.attr('data-width');
var group2 = group.find('.tab_content_button'), group2l = group2.length;
for(var j = 0; j < group2l; j++){
group2.eq(j).appendTo(container);
}
var group2 = group.find('.tab_content_button'), group2l = group2.length;
for(var j = 0; j < group2l; j++){
group2.eq(j).css('width', width);
group2.eq(j).on('click', function(){
var a = $(this);
var key = a.attr('data-index');
var tab = a.parents('.tab_content_container').find('.tab_content_content[data-index="' + key + '"]');
a.parents('.tab_content_container').find('.tab_content_content').css('display', 'none');
a.parents('.tab_content_button_container').find('.tab_content_button').css({
'cursor' : 'pointer',
'background-color' : '#eee',
'box-shadow' : '0 0 3px 0 #000'
});
tab.css('display', 'block');
a.css({
'cursor' : 'default',
'background-color' : '#fff',
'box-shadow' : '0 0 2px 0 #000 inset, 0 0 2px 0 #000 inset'
})
});
}
var default_value = default_div.attr('data-value');
if(default_value === '0'){
group.find('.tab_content_button').eq(0).trigger('click');
} else {
group.find('.tab_content_button[data-index="' + default_value + '"]').eq(0).trigger('click');
}
}
}
function sort(items, index, direction){
var sampleCollector = {
key: [],
content: {}
};
for(var i = 0; i < items.length; i++){
var item = items.eq(i);
var sample = item.find('[data-index="' + index + '"]').eq(0);
sampleCollector.key.push(sample.text() + i);
sampleCollector.content[sample.text() + i] = item.html();
}
if(direction === 'down') sampleCollector.key.sort(function(a, b){return a.localeCompare(b)});
else sampleCollector.key.sort(function(a, b){return b.localeCompare(a)});
for(var i = 0; i < items.length; i++){
items.eq(i).html(sampleCollector.content[sampleCollector.key[i]]);
}
}
function sorterInterface(target, index, direction){
var items = target.children();
var selectedItems = $([]);
for(var i = 0; i < items.length; i++){
var item = items.eq(i);
if(item.hasClass('row--avoidSort')) {
sort(selectedItems, index, direction);
selectedItems = $([]);
} else {
selectedItems = selectedItems.add(item);
}
}
if(selectedItems.length !== 0){
sort(selectedItems, index, direction);
selectedItems = $([]);
}
}
$(function() {
//Custom
//Format
var group2 = $('.antitoc'), group2l = group2.length;
for(var i = 0; i < group2l; i++) {
$('center > b').wrap('<div class="info_table_format"></div>');
}
//Dual control box
$('.dualControl__button.button1').on('click',function(event, force){
if($(this).attr('data-status') === 'off'){
$('.dualControl__button[data-status="on"]').trigger('click', ['force']);
$(this).attr('data-status', 'on').css({
'border-color': '#ff1a1a',
'cursor': 'auto',
'font-weight': 'bold'
});
var containerGroup = $('.profile__card--wrapper');
for(var cnt = 0; cnt < containerGroup.length; cnt++) {
const target = containerGroup.eq(cnt)
if(target.hasClass('extraLeft')) target.css('grid-template-columns', '1fr 8fr');
else target.css('grid-template-columns', '1fr');
}
var group = $('.profile__card--cell');
for(var cnt = 0; cnt < group.length; cnt++) {
const target = group.eq(cnt)
if(target.hasClass('main--right')) target.removeClass('forceVisible').css('display', 'none')
else target.addClass('forceVisible')
}
} else if(force === 'force') {
$(this).attr('data-status', 'off').css({
'border-color': '#ffcbcb',
'cursor': 'pointer',
'font-weight': 'normal'
});
}
});
$('.dualControl__button.button2').on('click',function(event, force){
if($(this).attr('data-status') === 'off'){
$('.dualControl__button[data-status="on"]').trigger('click', ['force']);
$(this).attr('data-status', 'on').css({
'border-color': '#df9f00',
'cursor': 'auto',
'font-weight': 'bold'
});
var containerGroup = $('.profile__card--wrapper');
for(var cnt = 0; cnt < containerGroup.length; cnt++) {
const target = containerGroup.eq(cnt)
if(target.hasClass('extraLeft')) target.css('grid-template-columns', '1fr 4fr 4fr');
else target.css('grid-template-columns', '1fr 1fr');
}
var group = $('.profile__card--cell');
for(var cnt = 0; cnt < group.length; cnt++) {
const target = group.eq(cnt)
if(target.hasClass('main--left')) target.addClass('forceVisible')
else target.css('display', 'block')
}
} else if(force === 'force') {
$(this).attr('data-status', 'off').css({
'border-color': '#fff6cb',
'cursor': 'pointer',
'font-weight': 'normal'
});
}
});
$('.dualControl__button.button3').on('click',function(event, force){
if($(this).attr('data-status') === 'off'){
$('.dualControl__button[data-status="on"]').trigger('click', ['force']);
$(this).attr('data-status', 'on').css({
'border-color': '#1a1aff',
'cursor': 'auto',
'font-weight': 'bold'
});
var containerGroup = $('.profile__card--wrapper');
for(var cnt = 0; cnt < containerGroup.length; cnt++) {
const target = containerGroup.eq(cnt)
if(target.hasClass('extraLeft')) target.css('grid-template-columns', '1fr 8fr');
else target.css('grid-template-columns', '1fr');
}
var group = $('.profile__card--cell');
for(var cnt = 0; cnt < group.length; cnt++) {
const target = group.eq(cnt)
if(target.hasClass('main--left')) target.removeClass('forceVisible').css('display', 'none')
else target.addClass('forceVisible')
}
} else if(force === 'force') {
$(this).attr('data-status', 'off').css({
'border-color': '#cbcbff',
'cursor': 'pointer',
'font-weight': 'normal'
});
}
});
navigatorBoxCreate();
$(".showExtra").click(function() {
$(this).closest("table").find(".extraRow").fadeIn("slow");$(this).closest("tr").remove();
});
filterTable();
//Tab
tabContentCreate();
//Remove execcssive br tag in box
$('.infobox_outer > p > br').remove();
//Sortable
var sorters = $('.cell--sorter');
for(var i = 0; i < sorters.length; i++){
var sorter = sorters.eq(i);
sorter.on('click', function(){
var t = $(this);
var target = t.parents('.sortable');
var sorters = target.find('.cell--sorter');
for(var i = 0; i < sorters.length; i++){
sorters.eq(i).removeClass('cell--sorterUp').removeClass('cell--sorterDown');
}
var direction = t.attr('data-direction');
if(direction === undefined || direction === 'up'){
t.attr('data-direction', 'down');
t.addClass('cell--sorterUp');
} else if(direction === 'down'){
t.attr('data-direction', 'up');
t.addClass('cell--sorterDown');
}
var index = t.attr('data-index');
direction = t.attr('data-direction');
if(target === undefined || direction === undefined || index === undefined) return;
else {
sorterInterface(target, index, direction);
}
});
}
});
/* Import more specific scripts if necessary */
function customizeWikiEditorToolbar() {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'group': 'insert',
'tools': {
'lang-ja': {
label: 'Designate text fragment as written in Japanese',
type: 'button',
icon: '/images/7/79/WikiEd-lang-ja.png',
action: {
type: 'encapsulate',
options: {
pre: "{{lang|ja|",
post: "}}",
peri: "\u6771\u65b9"
}
}
}
}
} );
}
mw.loader.using('mediawiki.action.edit', function () {
/* add button for {{lang|ja|}} to editor toolbar */
/* check for WikiEditor first, then fall back on default */
if ( mw.user.options.get('usebetatoolbar') ) {
mw.loader.using( 'ext.wikiEditor.toolbar', function () {
$(document).ready( customizeWikiEditorToolbar );
});
} else {
mw.toolbar.addButton(
"/images/d/da/Lang_ja.png", // imageFile
"Designate text fragment as written in Japanese", // speedTip
"{{lang|ja|", // tagOpen
"}}", // tagClose
"\u6771\u65b9" // sample text
);
}
});
(function(){
var config = {
song_info_url: mw.config.get('wgScript') + "?title=Touhou_Wiki:SongSource.json&action=raw&ctype=application/json",
source_regexp: /^\s*source:\s*(.*)/,
original_title_regexp: /^\s*original title:\s*(.*)/,
tracks_heading_regexp: /^\s*Tracks\s*$/,
categories: ["Arrangement CDs", "Official CDs"],
};
jQuery.ajax({
url: mw.config.get('wgScript') + '?title=MediaWiki:SongSource.js&action=raw&ctype=text/javascript',
dataType: "script",
cache: "true",
success: function() {
initSongSource(config);
},
});
})();
importScript("MediaWiki:ToggleAll.js");
if ($(window).width() < 1025){
$("#mp-WorksColumns .mp-image").addClass("mp-smaller-image");
$("#mp-News .mp-image").addClass("mp-smaller-image");
}
$(window).resize(function(){
if ($(this).width() < 1025){
$("#mp-WorksColumns .mp-image").addClass("mp-smaller-image");
$("#mp-News .mp-image").addClass("mp-smaller-image");
} else {
$("#mp-WorksColumns .mp-image").removeClass("mp-smaller-image");
$("#mp-News .mp-image").removeClass("mp-smaller-image");
}
});
// check JSON pages for syntax validity before saving
// note that it's "weak" check, just for the convenience
// and it can be easily circumvented
if (/\.json$/.test(wgTitle)) {
// if there's no edit form, nothing bad will happen
$("#editform").submit(function(evt) {
var data = $(this).find("#wpTextbox1").val();
if (data !== undefined) {
try {
$.parseJSON(data);
} catch (e) {
if (!window.confirm("The JSON data appears invalid. Are you sure you want to proceed?")) {
evt.preventDefault();
}
}
}
});
}
/* Sitenotice autoscroll */
function AutoScroll(obj){
$(obj).find("ul:first").animate({
marginTop:"-25px"
},500,function(){
$(this).css({marginTop:"0px"}).find("li:first").appendTo(this);
});
}
$(document).ready(function(){
setInterval('AutoScroll("#scrollDiv")',5000);
});
// Filter Table Functions
function filterTable(){
$("table.filterable").each(function(){
var i=0;
var cols;
$(this).find("tr:first-child th, tr:first-child td").each(function(){
if (!$(this).hasClass("unfilterable")){
cols=[];
$(this).closest("table").find("tr td:nth-child("+(i+1)+")").each(function(){
cols.push($(this).text());
});
cols = arrayUnique(cols);
l=0;
for (j=0; j<cols.length; j++){
t=charLength(cols[j]);
if (l<t) l=t;
}
$(this).css("position","relative");
$(this).html('<a href="javascript:void(0)" class="showFilterMenu">'+$(this).html()+'▼</a>');
$(this).append($('<div class="filterMenu hidden" style="position: absolute; top: '+$(this).height()+35+'px; left: 0; width: '+(50+l*7)+'px; text-align: left; padding: 5px; border: 1px #333333 solid; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; background: inherit; z-index: 1"></div>'));
for (j=0; j<cols.length; j++){
$(this).find(".filterMenu").append('<div><input type="checkbox" value="'+cols[j]+'" col="'+(i+1)+'" class="filterOption" checked>'+cols[j]+'</div>');
}
}
i++;
});
$(this).find("tr:nth-child(n+1)").attr("condition", 0);
});
$(".showFilterMenu").click(function(){
if ($(this).parent().find(".filterMenu:visible").length){
$(".filterMenu").slideUp(150);
}else{
$(".filterMenu").slideUp(150);
$(this).parent().find(".filterMenu").slideDown(150);
}
});
$(document).mouseup(function(e){
var container = $(".filterMenu");
if (!container.is(e.target) && container.has(e.target).length === 0){
container.slideUp(150);
}
});
$(".filterOption").click(function(){
col=$(this).attr("col");
val=$(this).val();
if ($(this).is(":checked")) chg=1; else chg=-1;
$(this).closest("table").find("tr:nth-child(n+1)").each(function(){
if ($(this).find("td:nth-child("+col+")").text()==val){
var cond=$(this).attr("condition");
cond=Number(cond)+chg;
$(this).attr("condition", cond);
if (cond===0) $(this).show();
else $(this).hide();
}
});
});
}
function arrayUnique(a) {
return a.reduce(function(p, c) {
if (p.indexOf(c) < 0) p.push(c);
return p;
}, []);
}
function charLength(s){
return s.length+(encodeURI(s).split(/%..|./).length-1-s.length)/2;
}