MediaWiki:Common.js
Cache: Sau khi lưu biểu mẫu này, phải xóa bộ nhớ đệm (cache) của trình duyệt để những thay đổi hiện ra:
Firefox, Chrome, Safari, Opera — Shift Internet Explorer — Ctrl Konqueror —
Nếu bạn viết mã JavaScript, chú ý đọc hướng dẫn để tránh mâu thuẫn với mã mặc định của mạng.
//<source lang="javascript">
/**
* Giữ mã nguồn ở MediaWiki:Common.js một cách tối thiểu vì nó sẽ được tải
* vô điều kiện cho mọi thành viên ở tất cả các trang wiki. Nếu có thể hãy tạo
* công cụ (gadget) và để nó kích hoạt mặc định thay vì đặt ở đây (vì công cụ
* là các mô đun ResourceLoader tối ưu hóa tối đa với khả năng ghi các phần phụ
* thuộc).
*
* Vì Common.js không phải là công cụ, không có chỗ để khai báo phần phụ thuộc
* cho nó, do đó ta phải tải chậm với mw.loader.using khi cần và thực hiện toàn
* bộ trong lần gọi lại lần nữa. Trong phần lớn trường hợp các phần phụ thuộc
* này sẽ được tải trước khi tải mã ở đây.
*/
/* global mw, $, importStylesheet, importScript */
/* jshint curly:false, strict:false, eqnull:true, browser:true */
mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'jquery.client'] ).done( function () {
/* Đầu hàm gọi lại mw.loader.using() */
/* Nhúng và chuyên biệt các script chung; xem http://wikisource.org/wiki/Wikisource:Shared_Scripts */
// $.getScript('//wikisource.org/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript', function () {
// mw.loader.load('//vi.wikisource.org/w/index.php?title=MediaWiki:DisplayFooter.js&action=raw&ctype=text/javascript');
// mw.loader.load('//vi.wikisource.org/w/index.php?title=MediaWiki:PageNumbers.js&action=raw&ctype=text/javascript');
mw.loader.load('//vi.wikisource.org/w/index.php?title=MediaWiki:IndexForm.js&action=raw&ctype=text/javascript');
// mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Dictionary.js&action=raw&ctype=text/javascript');
mw.loader.load('//vi.wikisource.org/w/index.php?title=MediaWiki:InterWikiTransclusion.js&action=raw&ctype=text/javascript');
// });
self.proofreadpage_add_container = true;
// Mouse wheel zoom should work now for most browsers.
// If it does not work for you, set this to true in your javascript.
self.proofreadpage_disable_wheelzoom = false;
if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) {
// Mã chỉ dành riêng cho trang sửa đổi
importScript("MediaWiki:Edit.js");
}
/**
* Kiểm tra một phân tử HTML có lớp nào đó hay không
*
* @deprecated: Hãy dùng $(element).hasClass() thay thế.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Hãy dùng jQuery.hasClass() thay thế' );
/**
* Thêm mũi tên vào thanh bên để so sánh trên hiện tại với trang liên kết liên ngôn ngữ
* Phỏng theo [[OldWikisource:MediaWiki:DoubleWiki.js]]
*/
function BilingualLink() {
// iterate over links
$('#p-lang li:not(.uls-p-lang-dummy)').each(function (idx, elt) {
if ($(this).hasClass('uls-p-lang-dummy')) return;
// create new URL
var bilang = $(this).find('a').attr('href').match(/\/\/([^\.]+)\.wikisource/)[1];
// add link
$(this).append(mw.html.element("a", {
href: mw.util.getUrl(mw.config.get('wgPageName'), {match: bilang}),
title: "So sánh trang này với bản " + bilang + "."
}, " ⇔"));
});
}
$(BilingualLink);
/** Bảng ẩn/hiện *********************************************************
*
* Chức năng: Cho phép bản mẫu có thể ẩn đi lại, chỉ hiện tiêu đề. Xem
* [[w:en:Wikipedia:NavFrame]].
* Người bảo trì:
*/
var autoCollapse = 2;
var collapseCaption = "ẩn";
var expandCaption = "hiện";
window.collapseTable = function (tableIndex, fast) {
var toggleLink = $("#collapseButton" + tableIndex);
var table = $("#collapsibleTable" + tableIndex);
if ( !table.length || !toggleLink.length ) {
return false;
}
var rows = table.find("tr");
var slidingOptions = {
duration: fast ? 0 : undefined
};
if (toggleLink.text() === collapseCaption) {
rows.slice(1).fadeOut(slidingOptions);
toggleLink.text(expandCaption);
}
else {
if (rows.first().is(":hidden")) {
rows.slice(1).fadeOut(slidingOptions);
}
else {
rows.slice(1).fadeIn(slidingOptions);
}
toggleLink.text(collapseCaption);
}
};
function createCollapseButtons() {
/* chỉ thêm nút nếu có hàng đầu để ấy */
var tables = $("table.collapsible:has(tr th)");
tables.each(function (i, table) {
$(table).attr("id", "collapsibleTable" + i);
var header = $(table).find("tr th").first();
header.addClass("collapsible-header");
var toggleLink = $(mw.html.element("a", {
id: "collapseButton" + i,
href: "#"
}));
toggleLink.css("color", header.css("color"));
toggleLink.append(collapseCaption);
header.click(function (evt) {
var target = $(evt.target);
if (target.is(toggleLink) || !(target.is("a") || target.parents("a").length)) {
window.collapseTable(i);
evt.preventDefault();
}
});
var toggleButton = $(mw.html.element("span", {
"class": "collapseButton" // kiểu mẫu được định rõ trong Common.css
}));
toggleButton.append("[");
toggleButton.append(toggleLink);
toggleButton.append("]");
header.prepend(toggleButton);
});
tables.each(function (i, table) {
if ($(table).hasClass("collapsed") ||
(tables.length >= autoCollapse && $(table).hasClass("autocollapse")) ||
$(table).hasClass("innercollapse") && table.parents(".outercollapse").length) {
window.collapseTable(i, true /* fast */);
}
});
}
mw.hook("wikipage.content").add(createCollapseButtons);
/** Thanh Chuyển hướng Động ****************************************************
*
* Chức năng: Xem [[w:en:Wikipedia:NavFrame]].
* Người bảo trì:
*/
/**
* Thêm nút hiện/ẩn vào thanh chuyển hướng.
*/
function createNavigationBarToggleButton() {
// thiết lập các từ trong ngôn ngữ của chúng ta
var hideText = "[" + collapseCaption + "]";
var showText = "[" + expandCaption + "]";
$("div.NavFrame").each(function (i, frame) {
var isCollapsed = $(this).hasClass("collapsed");
$(mw.html.element("a", {
"class": "NavToggle",
href: "#"
}, isCollapsed ? showText : hideText)).appendTo($(this).find(".NavHead"));
$(this).find(".NavContent").makeCollapsible({
collapsed: isCollapsed,
$customTogglers: $(this).find(".NavHead, .NavToggle")
}).on("beforeExpand.mw-collapsible", function (evt) {
$(this).parents(".NavFrame").find(".NavToggle").text(hideText);
}).on("beforeCollapse.mw-collapsible", function (evt) {
$(this).parents(".NavFrame").find(".NavToggle").text(showText);
});
});
}
mw.hook("wikipage.content").add(function () {
mw.loader.using("jquery.makeCollapsible", createNavigationBarToggleButton);
});
/**
* Xây dựng các hộp thẻ.
*
* Phỏng theo mô hình Tabber (http://www.barelyfitz.com/projects/tabber/). Dựa trên jQuery UI.
*/
mw.hook("wikipage.content").add(function () {
if (!$(".tabber").length) return;
mw.loader.using("jquery.ui", function () {
$(".tabber").each(function (tabberIdx) {
// jQuery cần có danh sách liên kết ở đầu hộp gốc, các liên kết phải
// chỉ đến các thẻ.
var ul = $("<ul></ul>");
var activeTabIdx = 0;
$(this).find(".tabbertab").each(function (tabIdx) {
var tabId = $(this).attr("id") ||
"tabber_" + tabberIdx + "_" + tabIdx;
$(this).attr("id", tabId);
// Tạo liên kết đến thẻ.
var tabTitle = $(this).attr("title") ||
$(this).find("h1, h2, h3, h4, h5, h6").first()
.find(".mw-headline").text();
$("<a href='#" + tabId + "'></a>").text(tabTitle)
.appendTo($("<li></li>").appendTo(ul));
// Tìm ra thẻ mặc định.
if ($(this).hasClass("tabbertabdefault")) activeTabIdx = tabIdx;
});
// Thêm danh sách vào hộp gốc và biến đổi hộp thành hộp thẻ.
$(this).prepend(ul).tabs({active: activeTabIdx});
});
});
});
/**
* Cố định liên kết "Tải lên tập tin".
*/
mw.hook("wikipage.content").add(function() {
$("#t-upload a").attr("href", mw.util.getUrl("Commons:Special:UploadWizard/vi"));
});
/**
* Icons on the top right of the article.
* See also CSS
*
* @source https://www.mediawiki.org/wiki/Snippets/Top_icons
* @author Krinkle
* @version 6
*/
mw.hook( 'wikipage.content' ).add( function ( $content ) {
$content.find( '.Top_icon_raw' )
.removeClass( 'Top_icon_raw' )
.addClass( 'Top_icon_dynamic' )
.prependTo( '#firstHeading' );
} );
/*
* Chức năng: Ở lại máy chủ an toàn càng nhiều càng tốt
* Người bảo trì: [[w:en:User:TheDJ]]
*/
if ( document.location && document.location.protocol && document.location.protocol === 'https:' ) {
/* Các máy chủ an toàn mới */
importScript( 'MediaWiki:Common.js/secure new.js' );
}
/**
* Gắn bảng giới thiệu vào đầu [[Trợ giúp:Chỗ thử]].
*/
mw.hook("wikipage.content").add(function () {
if (mw.config.get("wgPageName") != "Trợ_giúp:Chỗ_thử" ||
mw.config.get("wgAction") != "view" || $("#sandbox-intro").length) {
return;
}
var purgeLink = mw.html.element("a", {
href: mw.util.getUrl("Trợ_giúp:Chỗ_thử", {
action: "edit",
oldid: "56587",
summary: "Tẩy trống chỗ thử",
minor: "yes"
})
}, "xóa định kỳ");
var editText = mw.html.element("b", {
"style": "white-space: nowrap;"
}, $("#ca-ve-edit").text());
var intro = $(mw.html.element("div", {
"class": "plainlinks toccolours",
id: "sandbox-intro"
}, new mw.html.Raw("Đây là trang bạn có thể thử thoải mái cách soạn bài " +
"trong Wikisource. Nội dung ở đây sẽ bị " + purgeLink +
". Để bắt đầu sửa đổi trang này, hãy nhấn chuột vào thẻ " +
editText + " ở trên.")));
$("#mw-content-text").wrapInner("<div class='sandbox'></div>").prepend(intro);
});
/**
* Envelope subNotes found in main navigation header derivatives
* Namespace coverage: Main (ns-0), Translation (ns-114)
* See also _____
*
* Ver 0.10, 2015-01-31
*/
jQuery( document ).ready( function ( $ ) {
var nsSubNotes = [ 0, 114 ];
if ( $.inArray( mw.config.get( 'wgNamespaceNumber' ), nsSubNotes ) !== -1 ) {
$( 'div.subNote' ).insertBefore( $( 'div#ws-data' ) );
}
} );
/**
* Envelope hatNotes & similar into main navigation header container
* Namespace coverage: Main (ns-0), Translation (ns-114)
* See also _____
*
* Ver 0.30, 2015-12-31
*/
jQuery( document ).ready( function ( $ ) {
var nsHatNotes = [ 0, 114 ];
if ( $.inArray( mw.config.get( 'wgNamespaceNumber' ), nsHatNotes ) !== -1 ) {
$( 'div.similar' ).prependTo( $( 'div#headerContainer' ) );
$( 'table.ambox' ).prependTo( $( 'div#headerContainer' ) );
}
} );
/* Kết hàm gọi lại mw.loader.using() */
} );
/* ĐỪNG THÊM MÃ DƯỚI DÒNG NÀY */