MediaWiki:Common.js
НАРОЧИТО: По съхранѥнии можєши обити своѥго съмотрила съхранъ да видѣлъ би мѣнꙑ
- Mozilla ли Firefox ли Safari' ли жьмꙑи Shift а мꙑшиѭ жьми Reload или жьми Ctrl-F5 ꙗко жє Ctrl-R (⌘-R вън Apple Mac)
- Google Chrome: ли жьмꙑи Ctrl-Shift-R (⌘-Shift-R въ Mac)
- Internet Explorer ли жьмꙑи Ctrl а мꙑшиѭ жьми Refresh или жьми Ctrl-F5
- Опєрꙑ польꙃєватєльмъ можєть бꙑти ноужда пльнѣ поничьжити ихъ съмотрила съхранъ въ Tools → Preferences (Opera → Preferences вън Apple Mac) ⁙
/**
* WikiMiniAtlas is a popup click and drag world map.
* See [[meta:WikiMiniAtlas]] for more information.
* Maintainers: [[w:User:Dschwen]]
*/
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
/**
* Interwiki links to featured articles
*
* Highlights interwiki links to featured articles (or
* equivalents) by changing the bullet before the interwiki
* link into a star.
*
* Maintainers: [[User:R. Koot]]
*/
function LinkFA(){
if ( document.getElementById( 'p-lang' ) ) {
var InterwikiLinks = document.getElementById( 'p-lang' ).getElementsByTagName( 'li' );
for ( var i = 0; i < InterwikiLinks.length; i++ ) {
if ( document.getElementById( InterwikiLinks[i].className + '-fa' ) && InterwikiLinks[i].className.indexOf( 'badge-featuredarticle' ) === -1 ) {
InterwikiLinks[i].className += ' FA';
InterwikiLinks[i].title = 'This is a featured article in another language.';
}
}
}
}
$( LinkFA );
/**
* Collapsible tables
*
* Allows tables to be collapsed, showing only the header. See
* [[Wikipedia:NavFrame]].
*
* Maintainers: [[User:R. Koot]]
*/
var autoCollapse = 2;
var collapseCaption = "hide";
var expandCaption = "show";
function collapseTable( tableIndex ){
var Button = document.getElementById( "collapseButton" + tableIndex );
var Table = document.getElementById( "collapsibleTable" + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
if ( Button.firstChild.data == collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = "none";
}
Button.firstChild.data = expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons(){
var tableIndex = 0;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName( "table" );
for ( var i = 0; i < Tables.length; i++ ) {
if ( $(Tables[i]).hasClass( "collapsible" ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
if (!HeaderRow) continue;
var Header = HeaderRow.getElementsByTagName( "th" )[0];
if (!Header) continue;
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
var Button = document.createElement( "span" );
var ButtonLink = document.createElement( "a" );
var ButtonText = document.createTextNode( collapseCaption );
Button.style.styleFloat = "right";
Button.style.cssFloat = "right";
Button.style.fontWeight = "normal";
Button.style.textAlign = "right";
Button.style.width = "6em";
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( "[" ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( "]" ) );
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( $(NavigationBoxes[i]).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass( "autocollapse" ) ) ) {
collapseTable( i );
}
else if ( $(NavigationBoxes[i]).hasClass( "innercollapse" ) ) {
element = NavigationBoxes[i];
while (element.parentNode) {
var element = element.parentNode;
if ( $(element).hasClass( "outercollapse" ) ) {
collapseTable ( i );
break;
} else if (element.getAttribute("id") == "bodyContent" ) break;
}
}
}
}
$( createCollapseButtons );
/** Dynamic Navigation Bars (experimental)
*
* Description: See [[Wikipedia:NavFrame]].
* Maintainers: UNMAINTAINED
*/
// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar){
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (var NavChild = NavFrame.firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
if ( $(NavChild).hasClass( 'NavPic' ) ) {
NavChild.style.display = 'none';
}
if ( $(NavChild).hasClass( 'NavContent') ) {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (var NavChild = NavFrame.firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
if ($(NavChild).hasClass( 'NavPic')) {
NavChild.style.display = 'block';
}
if ($(NavChild).hasClass( 'NavContent')) {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton(){
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName("div");
for (var i = 0; NavFrame = divs[i]; i++) {
// if found a navigation bar
if ($(NavFrame).hasClass( "NavFrame")) {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var isCollapsed = $(NavFrame).hasClass( "collapsed" );
/*
* Check if any children are already hidden. This loop is here for backwards compatibility:
* the old way of making NavFrames start out collapsed was to manually add style="display:none"
* to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
* the content visible without JavaScript support), the new recommended way is to add the class
* "collapsed" to the NavFrame itself, just like with collapsible tables.
*/
for (var NavChild = NavFrame.firstChild; NavChild !== null && !isCollapsed; NavChild = NavChild.nextSibling) {
if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
if ( NavChild.style.display == 'none' ) {
isCollapsed = true;
}
}
}
if (isCollapsed) {
for (var NavChild = NavFrame.firstChild; NavChild !== null; NavChild = NavChild.nextSibling) {
if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
NavChild.style.display = 'none';
}
}
}
var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(var j=0; j < NavFrame.childNodes.length; j++) {
if ($(NavFrame.childNodes[j]).hasClass( "NavHead")) {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
}
$( createNavigationBarToggleButton );
/** Main Page layout fixes
*
* Description: Adds an additional link to the complete list of languages available.
* Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
*/
function mainPageAppendCompleteListLink() {
mw.loader.using(['mediawiki.util']).then(function () {
mw.util.addPortletLink( 'p-lang', 'Project:Каталогъ',
'пль́нъ ката́логъ', 'interwiki-completelist', 'пльнъ каталогъ' );
});
}
if ( mw.config.get('wgIsMainPage') || ( mw.config.get('wgTitle') == 'Википєдїꙗ' && mw.config.get('wgNamespaceNumber') == 100 ) ) {
$( mainPageAppendCompleteListLink );
}
/** "Technical restrictions" title fix *
*
* Description: For pages that have something like Template:Wrongtitle, replace
* the title, but only if it is cut-and-pasteable as a valid
* wikilink. For instance, "NZR WB class" can be changed to
* "NZR W<sup>B</sup> class", but [[C#]] is not an equivalent wikilink,
* so [[C Sharp]] doesn't have its main title changed.
*
* The function looks for a banner like this:
* <div id="RealTitleBanner"> ... <span id="RealTitle">title</span> ... </div>
* An element with id=DisableRealTitle disables the function.
* Maintainers: Remember_the_dot
*/
if (mw.config.get('wgIsArticle')) //prevents the "Editing " prefix from disappearing during preview
{
$(function() {
var realTitle = document.getElementById("RealTitle");
if (realTitle) {
//normalizes a title or a namespace name (but not both)
//trims leading and trailing underscores and converts (possibly multiple) spaces and underscores to single underscores
var normalizeTitle = function(title) {
return title.replace(/^_+/, "").replace(/_+$/, "").replace(/[\s_]+/g, "_");
};
if (realTitle.textContent) //everyone but IE
{
realTitleText = realTitle.textContent;
} else //IE
{
realTitleText = realTitle.innerText;
}
var normalizedRealTitle;
var normalizedPageTitle;
var indexOfColon = realTitleText.indexOf(":");
var normalizedNamespaceName = normalizeTitle(realTitleText.substring(0, indexOfColon)).toLowerCase();
//make namespace prefix lowercase and uppercase the first letter of the title
if (indexOfColon == -1 || mw.config.get('wgCanonicalNamespace').toLowerCase() != normalizedNamespaceName) //no namespace prefix - either no colon or a nonsensical namespace prefix (for example, "Foo" in "Foo: The Story of My Life")
{
normalizedRealTitle = normalizeTitle(realTitleText);
normalizedRealTitle = normalizedRealTitle.charAt(0).toUpperCase() + normalizedRealTitle.substring(1);
normalizedPageTitle = mw.config.get('wgPageName').charAt(0).toUpperCase() + mw.config.get('wgPageName').substring(1);
}
else //using a namespace prefix
{
var normalizedRealPageTitle = normalizeTitle(realTitleText.substring(indexOfColon + 1));
normalizedRealTitle = normalizedNamespaceName;
if (normalizedNamespaceName !== '') //namespace 0 is a special case where the leading colon should never be shown
{
normalizedRealTitle += ':';
}
normalizedRealTitle += normalizedRealPageTitle.charAt(0).toUpperCase() + normalizedRealPageTitle.substring(1);
normalizedPageTitle = mw.config.get('wgPageName').substring(0, mw.config.get('wgPageName').indexOf(':') + 1).toLowerCase() + mw.config.get('wgPageName').substring(mw.config.get('wgPageName').indexOf(':') + 1);
}
if (normalizedRealTitle == normalizedPageTitle) //normalized titles match, so we can do full replacement
{
var h1 = document.getElementsByTagName('h1')[0];
//remove all child nodes, including text
while (h1.firstChild) {
h1.removeChild(h1.firstChild);
}
//populate with nodes of real title
while (realTitle.firstChild) //the children are moved to a new parent element
{
h1.appendChild(realTitle.firstChild);
}
//delete the real title banner since the problem is solved
var realTitleBanner = document.getElementById('RealTitleBanner');
realTitleBanner.parentNode.removeChild(realTitleBanner);
}
//no matter what, correct the page title
document.title = realTitleText + ' - Wikipedia, the free encyclopedia';
}
});
}
/** Disambig editintro
*
* Description: Adds an editintro on disambiguation pages. Original code
* located at [[User:RockMFR/disambigeditintro.js]].
*
* Maintainers: [[User:RockMFR]], [[User:Quiddity]]
*/
if (mw.config.get('wgNamespaceNumber') === 0) {
$(document).ready(function(){
if (!document.getElementById('disambig')) return;
var el = document.getElementById('ca-edit');
if (el) el = el.getElementsByTagName('a')[0];
if (el) el.href += '&editintro=Template:Disambig_editintro';
});
}
window.addWikifButton = function(){
var toolbar = document.getElementById('toolbar');
var textbox = document.getElementById('wpTextbox1');
if (!textbox || !toolbar) return;
var i = document.createElement('img');
i.src = '//upload.wikimedia.org/wikisource/ru/d/d1/Button-wikifikator.png';
i.alt = i.title = 'Викификаторъ';
i.onclick = Wikify;
i.style.cursor = 'pointer';
toolbar.appendChild(i);
};
if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit'){
$.getScript( mw.config.get('wgServer') + '/w/index.php?title=MediaWiki:Wikificator.js&action=raw&ctype=text/javascript',
function(){
$(addWikifButton);
}
);
}
if (mw.config.get('wgAction')=='edit' || mw.config.get('wgAction')=='submit') {
mw.loader.load( '//de.wiktionary.org/w/index.php?title=MediaWiki:If-search.js&action=raw&ctype=text/javascript' );
}