2734
правки
Изменения
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
( function() {
'use strict';
/**
var mcw = window.mcw = {};
/* Variables for interface text used throughout the script, for ease of translating */
mcw.i18n = {
// Collapsible tables and page loader
hideText: 'скрыть',
showText: 'показать',
// Page loader
loadErrorTitle: 'Возникла ошибка при загрузке содержимого',
// File upload
defaultLicense: 'Лицензия'
};
/* Keep track of delegated events on dynamic content */
}
if (wgAction == 'edit' || wgAction == 'submit') {
importScript( 'MediaWiki:AddSumButton.js' );
}
/* Fired whenever wiki content is added. (#mw-content-text, live preview, load page, etc.) */
mw.hook( 'wikipage.content' ).add( function( $wikipageContent content ) {
/**
* 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.tables
*
* * Add the class "collapsed" to the element to make it start out collapsedBased on http://www. * * Add either "collapsetoggle-left" or "collapsetoggle-inline" to the element to choose the collapse * toggle alignment (defaults to right)mediawiki. * * 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 buttonorg/wiki/Manual:Collapsible_tables#Common. * If the custom toggle contains an element with the "jslink" class, only that will be clickablejs_script_.28before_1.18.29
*/
( function() {
var $collapsibles tables = $wikipageContentcontent.find( 'table.collapsible' ); if ( !$collapsiblestables || !$tables.length ) { returnfalse;
}
var $toggleTemplate buttonText = $( '<spanclass="collapsible-button">[<span class="jslink">' )+ mcw.addClass( 'collapsetoggle' )i18n.append( '[', $( hideText + '</span>' ).addClass( 'jslink' ), ']</span> '; ); $collapsiblestables.each( function() { var $collapsible table = $( this ), $header, $collapseButton, firstWidth, secondWidth; // This table is already collapsible if ( $collapsibletable.data( 'made-collapsible' ) ) {
return true;
}
// If there No header or the table body is no content area, add itempty if ( !$collapsibleheader.is( 'table' ) && length || !$childrentable.filterfind( '.collapsible-contenttr:not(tr:first)' ).length html() { if ( $collapsible.istrim( 'tr' ) .length ) { $children.addClass( 'collapsible-content' ); } else { $collapsible.wrapInner( '<div class="collapsible-content">' )return true; }
}
}
// Create Find max button size, and insert the toggle button if there is no custom oneset its min-width to it if ( !$toggle || !collapseButton = $toggletable.find( '.length collapsible-button' ) { var $toggleContainer; if ( firstWidth = $collapsiblecollapseButton.iswidth( 'table' ) ) {; var $rows = $childrencollapseButton.filterfind( 'thead> .jslink' ).childrentext(mcw.i18n.showText ); if ( !$rows.length ) { $rows secondWidth = $children.filter( 'tbody' ).first()collapseButton.childrenwidth(); if ( firstWidth !$rows.length = secondWidth ) { $rows = $children.filter if ( 'tr' firstWidth < secondWidth ); } }{ $toggleContainer = $rowscollapseButton.first().children().lastcss('min-width', secondWidth );
} else {
$toggleContainer = $childrencollapseButton.first(); if ( $toggleContainer.hasClasscss( 'collapsiblemin-contentwidth' ) ) { $toggleContainer = $collapsible; } } $toggle = $toggleTemplate.clone(); if ( $collapsible.hasClass( 'collapsetoggle-inline' ) || $collapsible.hasClass( 'collapse-button-none' ) ) { $toggleContainer.append( $toggle ); } else { $toggleContainer.prepend( $toggle , firstWidth );
}
}
// Set the text back to hide if it's not collapsed to begin with
if ( !$table.hasClass( 'collapsed' ) ) {
$collapseButton.find( '> .jslink' ).text( mcw.i18n.hideText );
}
// Find max toggle size, and set its min-width to itStop table sorting activating when clicking the link var hideWidth = $togglee.widthstopPropagation(); $toggleLink.text( showText ); var showWidth = $toggle.width(); if ( hideWidth !== showWidth ) { $toggle.css( 'min-width', hideWidth > showWidth ? hideWidth : showWidth ); }
}
} );
}() );
*/
( function() {
var $loadPage = $wikipageContentcontent.find( '.load-page' );
if ( !$loadPage.length ) {
return;
mw.loader.load( 'jquery.spinner' );
// Add the button
$headingbutton.appendinsertAfter( $button this );
// Move the edit button to the right spot
$contentContainerbody.find( '.mw-editsection, .mw-editsection-like' ).insertAfter( $button );
// Find max button width, and set its min-width to it
if ( hideWidth firstWidth !== showWidth secondWidth ) { if ( firstWidth > secondWidth ) { $button.css( 'min-width', hideWidth > showWidth ? hideWidth : showWidth firstWidth ); } else { $button.css( 'min-width', secondWidth ); }
}
} );
if ( mcw.events.loadPage ) {
return;
}
$( '#mw-content-text' ).on( 'click', '.load-page-button > .jslink', function() {
var $button = $( this ).parent(),
$body = $button.closest( '.load-page' ),
$contentContainer = $body.find( '.load-page-content' );
// Just in-case the spinner module is still not ready yet
mw.loader.using( 'jquery.spinner', function() {
} );
action: 'parse',
prop: 'text' }; if ( template ) { requestData.page = page; } else {, requestData.title = : mw.config.get( 'wgPageName' );, requestData.text = : '{' + '{:' + $body.data( 'page ' ) + '}}'; } new mw.Api().get( requestData ).done( function( data ) { var $contentContainer.html = ( data.parse.text['*']; $contentContainer.html( html ).removeClass( 'noscript' ); // Resolve self-links if ( template ) { var curPage = '/' + mw.config.get( 'wgPageName' ); $contentContainer.find( 'a' ).each( function() { var $link = $( this ); if ( $link.attr( 'href' ) === curPage ) { $link.replaceWith( $( '<strong>' ).addClass( 'selflink' ).append( $link.contents() ) ); } } ); html = $contentContainer.html(); } $body.data( 'pageloader-content', html );
// Fire content hook on the new content, running all this stuff again and more :)
mw.hook( 'wikipage.content' ).fire( $contentContainer );
} ).fail( function( _, error ) {
var errorText = '';
}
mw.notify( errorText, { title: mcw.i18n.loadErrorTitle, autoHide: false } ); } ); } ); } );}() ); /** * 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 );
} );
} else {
}
} );
} );
$( this ).find( '.paused' ).removeClass( 'paused' ).addClass( 'animated' );
}
}, '.grid-generic, .grid-Crafting_Table, .grid-Furnace, .grid-Brewing_Stand, .mcui' );
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
if ( $( '#wpLicense' ).val() === '' ) {
$( '#wpLicense' ).val( mcw.i18n.defaultLicense );
}
}, '.minetip, .grid > .item, .invslot-item' );
}() );
} );