Warning.png

Поддержка Wiki прекращена, она доступна в режиме архива. Информация в ней устарела и может быть неактуальной.

Изменения

Перейти к: навигация, поиск

MediaWiki:Common.js

2530 байтов добавлено, 14:55, 29 января 2017
Нет описания правки
'use strict';
/* Variables for interface text used throughout the script, for ease of translating */
var i18n = {
// Collapsible elements and page loader
hideText: 'скрыть',
showText: 'показать',
// Page loader
loadErrorTitle: 'Возникла ошибка при загрузке содержимого',
// File upload
defaultLicense: 'Лицензия'
};
 
/**
* Instead of cluttering up the global scope with
* variables, they should instead be set as a
* property of this global variable
*
* E.g: Instead of
* myVar = 'blah';
* use
* mcw.myVar = 'blah';
*/
var mcw = window.mcw = {};
 
mw.loader.using( 'mediawiki.user', function() {
if ( mw.user.options.get( 'showtoolbar' ) && !mw.user.options.get( 'usebetatoolbar' ) ) {
mw.loader.using( 'mediawiki.legacy.wikibits', function() {
importScript( 'MediaWiki:Toolbar.js' );
} );
}
} );
 
/* Добавляет кнопки вставки часто используемых описаний правки */
if (wgAction == 'edit' || wgAction == 'submit') {
mw.loader.load( '/index.php?title=MediaWiki:AddSumButton.js&action=raw&ctype=text/javascript' );
}
 
/* Скрывает вкладку "Править вики-текст", если ей не хватает места в навигации */
var collapsibleEdit = document.getElementById("ca-edit");
if(collapsibleEdit) {
collapsibleEdit.className += collapsibleEdit.className ? ' collapsible' : 'collapsible';
}
/* Добавляет кнопку "Вверх" слева */
var footerId = document.getElementById("footer");
var scrollTopId = document.createElement("span");
scrollTopId.setAttribute("id","scroll-top");
scrollTopId.setAttribute("title","Наверх");
footerId.appendChild(scrollTopId);
function scrollTop(){
$(window).scroll(function(e) {
if($(window).scrollTop()>0)
$("#scroll-top").fadeIn(300);
else
$("#scroll-top").fadeOut(300);
});
};
$(function(){
$("#scroll-top").click(function(e) {
$('body,html').animate({scrollTop:0},300);
});
scrollTop();
})
 
 
/* Keep track of delegated events on dynamic content */
mcw.events = {};
 
/* GA */
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
 
ga('create', 'UA-81726277-2', 'auto');
ga('send', 'pageview');
/* Fired whenever wiki content is added. (#mw-content-text, live preview, load page, etc.) */
mw.hook( 'wikipage.content' ).add( function( $wikipageContent ) {
 
/**
* Collapsible elements
*
* Add the "collapsible" class to an element and the child element with class "collapsible-content"
* (or everything but the header row if a table) will be hidden when the element is collapsed.
*
* * Add the class "collapsed" to the element to make it start out collapsed.
* * Add either "collapsetoggle-left" or "collapsetoggle-inline" to the element to choose the collapse
* toggle alignment (defaults to right).
* * Add an ID in the format of "collapsible-<x>" to the element to make any element with the class
* "collapsetoggle-custom" and a matching class in the format of "collapsible-<x>-toggle" control
* the collapsing instead of the standard button.
* If the custom toggle contains an element with the "jslink" class, only that will be clickable.
*/
( function() {
var $collapsibles = $wikipageContent.find( '.collapsible' );
if ( !$collapsibles.length ) {
return;
}
var $toggleTemplate = $( '<span>' ).addClass( 'collapsetoggle' ).append(
'[', $( '<span>' ).addClass( 'jslink' ), ']'
);
$collapsibles.each( function() {
var $collapsible = $( this );
if ( $collapsible.data( 'made-collapsible' ) ) {
return true;
}
var $children = $collapsible.children();
var showText = $collapsible.data( 'expandtext' ) || i18n.showText;
var hideText = $collapsible.data( 'collapsetext' ) || i18n.hideText;
// If there is no content area, add it
if ( !$collapsible.is( 'table' ) && !$children.filter( '.collapsible-content' ).length ) {
if ( $collapsible.is( 'tr' ) ) {
$children.addClass( 'collapsible-content' );
} else {
$collapsible.wrapInner( '<div class="collapsible-content">' );
}
}
var $toggle;
var id = $collapsible.attr( 'id' );
if ( id && id.match( /^collapsible-./ ) ) {
$toggle = $( $wikipageContent[0].getElementsByClassName( id + '-toggle' ) )
.filter( '.collapsetoggle-custom' ).css( 'visibility', 'visible' );
}
// Create and insert the toggle button if there is no custom one
if ( !$toggle || !$toggle.length ) {
var $toggleContainer;
if ( $collapsible.is( 'table' ) ) {
var $rows = $children.filter( 'thead' ).children();
if ( !$rows.length ) {
$rows = $children.filter( 'tbody' ).first().children();
if ( !$rows.length ) {
$rows = $children.filter( 'tr' );
}
}
$toggleContainer = $rows.first().children().last();
} else {
$toggleContainer = $children.first();
if ( $toggleContainer.hasClass( 'collapsible-content' ) ) {
$toggleContainer = $collapsible;
}
}
$toggle = $toggleTemplate.clone();
if ( $collapsible.hasClass( 'collapsetoggle-inline' ) || $collapsible.hasClass( 'collapse-button-none' ) ) {
$toggleContainer.append( $toggle );
} else {
$toggleContainer.prepend( $toggle );
}
}
var $toggleLink = $toggle.find( '.jslink' );
if ( !$toggleLink.length ) {
$toggleLink = $toggle;
}
$toggleLink.attr( 'tabindex', 0 ).text( hideText );
// Find max toggle size, and set its min-width to it
var hideWidth = $toggle.width();
$toggleLink.text( showText );
var showWidth = $toggle.width();
if ( hideWidth !== showWidth ) {
$toggle.css( 'min-width', hideWidth > showWidth ? hideWidth : showWidth );
}
// Set the text back to hide if it's not collapsed to begin with
if ( !$collapsible.hasClass( 'collapsed' ) ) {
$toggleLink.text( hideText );
}
$toggleLink.on( 'click keydown', function( e ) {
// Only trigger on enter press
if ( e.keyCode && e.keyCode !== 13 ) {
return;
}
// Don't toggle when clicking buttons or links inside the toggle
var $target = $( e.target );
if ( $target.is( 'button' ) || $target.is( 'a' ) ) {
return;
}
$collapsible.toggleClass( 'collapsed' );
if ( $collapsible.hasClass( 'collapsed' ) ) {
$toggleLink.text( showText );
} else {
$toggleLink.text( hideText );
}
// Stop table sorting activating when clicking the link
e.stopPropagation();
} );
$collapsible.data( 'made-collapsible', true );
} );
}() );
 
 
/**
* Element animator
*
* Will cycle the active class on any child elements
* within an element with the animated class.
*/
( function() {
if ( !mcw.animate ) {
mcw.animate = setInterval( function() {
$( '.animated' ).each( function() {
var $elem = $( this );
var $current = $elem.children( '.active' );
var $next = $current.nextAll( ':not(.skip):first' );
// Loop back to the start
if ( !$next.length ) {
$next = $elem.children( ':not(.skip):first' );
}
$current.removeClass( 'active' );
$next.addClass( 'active' );
} );
}, 2000 );
}
}() );
 
/**
} );
}() );
 
 
/**
* Collapsible details for [[Template:History2]]
*
* Allows version history to be split up into snapshots
*/
/*if ( $( '.history2' ).find( 'pre' ).length ) {
var histExpandText = 'View snapshot history', histCollapseText = 'Hide snapshot history';
 
$( '.history2 th:first' ).append( '<span class="toggleHistDetails">[<span class="jslink">' + histExpandText + '</span>]</span>' );
 
var histLink = $( '.toggleHistDetails .jslink' );
histLink.click( function() {
if ( $( '.history2 .details' ).length ) {
$( '.history2 .overview' ).toggle();
$( '.history2 .details' ).toggle();
} else {
$( '.history2 tr' ).each( function() {
if ( !$( this ).find( 'pre' ).length || !$( this ).find( 'th' ).length ) {
return true;
}
var header = $( this ), row = header, text = header.find( '> td' ).html() + '</td></tr>',
rowspan = header.find( '> th' ).prop( 'rowspan' );
row.addClass( 'overview' );
if ( rowspan > 1 ) {
for ( var i = 1; i < rowspan; i++ ) {
row = row.next();
if ( !row.length ) {
break;
}
row.addClass( 'overview' );
text += '\n<tr><td>' + row.find( '> td' ).html() + '</td></tr>';
}
}
var versions = text.split( '<pre>' ), data = [];
rowspan = 0;
$.each( versions, function() {
var parts = this.split( '</' + 'pre>' ), version = parts[0].replace( /\n/g, '' ), text = parts[1];
if ( !version || !text ) {
return true;
}
text = text.replace( /<tr>/g, '<tr class="details">' );
if ( text.slice( text.lastIndexOf( '</tr>' ) ).indexOf( '<td>' ) > -1 ) {
text = text.slice( 0, text.lastIndexOf( '</tr>' ) );
}
if ( text.slice( text.lastIndexOf( '<td>' ) ).indexOf( '</td>' ) < 0 ) {
text += '</td></tr>';
}
if ( version.match( /\d\dw\d\d\w/ ) ) {
version = '<a title="Version history/Development versions" href="/' + 'Version_history/Development_versions#' + version + '">' + version + '</a>';
} else {
version = '<a title="Version history" href="/' + 'Version_history#' + version + '">' + version + '</a>';
}
var rows;
if ( text.match( /<td>/g ) ) {
rows = text.match( /<td>/g ).length + 1;
} else {
rows = 1;
}
rowspan += rows;
data.push( '<th rowspan="' + rows + '">' + version + '</th><td>' + text );
} );
var html = '<tr class="details"><th rowspan="' + rowspan + '">' + header.find( '> th' ).html() + '</th>' + data.join( '<tr class="details">' );
$( '<table>' + html + '</table>' ).find( 'td > ol' ).each( function() {
var text = $( this ).html();
html = html.split( '<ol>' + text + '</ol>' ).join( '<ul>' + text + '</ul>' );
} );
row.after( html );
} );
$( '.history2 .overview' ).hide();
}
if ( histLink.text() === histExpandText) {
histLink.text( histCollapseText );
} else {
histLink.text( histExpandText );
}
} );
}*/
 
/**
* Issue tracker loader
*/
/**if ( $( '#issue-list' ).length ) {
var page = $( '#issue-list' ).data( 'name' ) || mw.config.get( 'wgPageName' ),
amount = $( '#issue-list' ).data( 'num' ) || 20;
if ( $.isArray( page ) ) {
page = page.join( '" OR summary ~ "' );
}
var jql = encodeURIComponent( 'project in (MC, MCPE) AND resolution = Unresolved AND ( summary ~ "' + page + '" )' );
$.ajax(
'https://mojang.atlassian.net/rest/api/latest/search?maxResults=' + amount + '&fields=summary&jql=' + jql
).done( function( search ) {
if ( !search.issues.length ) {
$( '#issue-list' ).text( 'No issues were found.' );
return false;
}
 
var compIssues = [], pocketIssues = [];
$.each( search.issues, function() {
if ( this.key.indexOf( 'MCPE' ) < 0 ) {
compIssues.push( '<li>[<a href="https://mojang.atlassian.net/browse/' + this.key + '">' + this.key + '</a>] - ' + this.fields.summary + '</li>' );
} else {
pocketIssues.push( '<li>[<a href="https://mojang.atlassian.net/browse/' + this.key + '">' + this.key + '</a>] - ' + this.fields.summary + '</li>' );
}
} );
var html = '';
if ( compIssues.length ) {
html = '<p><b>Computer:</b></p><ul>' + compIssues.join( '\n' ) + '</ul>';
}
if ( pocketIssues.length ) {
html += '\n<p><b>Pocket Edition:</b></p><ul>' + pocketIssues.join( '\n' ) + '</ul>';
}
if ( search.total > amount ) {
var extra = search.total - amount;
html += '\n<p><a href="https://mojang.atlassian.net/issues/?jql=' + jql + '">View ' + extra + ' more result';
if ( extra > 1 ) {
html += 's';
}
html += '</a></p>';
}
 
$( '#issue-list' ).html( html );
} );
}
*/
} );
}
/* mw.loader.using( 'mediawiki.legacyspecial.upload', function() {
var change = setInterval( function() {
if ( licenseSelectorCheck ) {
}
}, 500 );
} );*/
}

Навигация