MediaWiki:Gadget-spriteEditLoader.js: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
Created page with "( function() { 'use strict'; /** * Add an edit button which loads the sprite editor * * If spriteaction=edit is in the URL, the editor will be loaded * immediately, otherw..." |
d 4 wersje: Importowanie gadżetów z minecraft.gamepedia.com |
||
| (Nie pokazano 3 wersji utworzonych przez jednego użytkownika) | |||
| Linia 1: | Linia 1: | ||
( function() { | $( function() { | ||
'use strict'; | 'use strict'; | ||
/** | /** | ||
* Add an edit button which loads the sprite editor | * Add an edit button which loads the sprite editor | ||
| Linia 6: | Linia 7: | ||
* If spriteaction=edit is in the URL, the editor will be loaded | * If spriteaction=edit is in the URL, the editor will be loaded | ||
* immediately, otherwise it will wait for the button to be clicked. | * immediately, otherwise it will wait for the button to be clicked. | ||
*/ | */ | ||
if ( !$( '#spritedoc' ).length ) { | var editPage = $( '#sprite-editor-message' ).data( 'page' ) || null; | ||
if ( !$( '#spritedoc' ).length && !editPage ) { | |||
return; | return; | ||
} | } | ||
| Linia 18: | Linia 18: | ||
} | } | ||
var $spriteEditLink = $( '<a>' ).text( 'Edit sprite' ).attr( 'href', | var $spriteEditLink = $( '<a>' ).text( 'Edit sprite' ).attr( 'href', | ||
mw.util.getUrl( | mw.util.getUrl( editPage, { spriteaction: 'edit' } ) | ||
); | ); | ||
var $spriteEditTab = $( '<li>' ).attr( 'id', 'ca-spriteedit' ).append( | var $spriteEditTab = $( '<li>' ).attr( 'id', 'ca-spriteedit' ).append( | ||
| Linia 24: | Linia 24: | ||
); | ); | ||
$spriteEditTab.insertAfter( $editTab ); | $spriteEditTab.insertAfter( $editTab ); | ||
// Page to sprite edit is not here, so no need to bind events | |||
if ( editPage ) { | |||
return; | |||
} | |||
var loadSpriteEditor = function() { | var loadSpriteEditor = function() { | ||
$spriteEditTab.add( '#ca-view' ).toggleClass( 'selected' ); | $spriteEditTab.add( '#ca-view' ).toggleClass( 'selected' ); | ||
mw.loader. | return mw.loader.using( 'ext.gadget.spriteEdit' ); | ||
}; | }; | ||
if ( location.search.match( 'spriteaction=edit' ) ) { | if ( location.search.match( '[?&]spriteaction=edit' ) ) { | ||
loadSpriteEditor(); | loadSpriteEditor(); | ||
} | return; | ||
} | |||
var $win = $( window ); | |||
$spriteEditLink.one( 'click.spriteEditLoader', function( e ) { | |||
// Initially add the history so it is not delayed waiting | |||
// for the editor to load. The editor will handle it from now. | |||
history.pushState( {}, '', this.href ); | |||
loadSpriteEditor().then( function() { | |||
$win.off( '.spriteEditLoader' ); | $win.off( '.spriteEditLoader' ); | ||
} ); | } ); | ||
e.preventDefault(); | |||
} ); | |||
// If the page is reloaded while the editor isn't loaded, navigating | |||
// back to the editor won't work, so an initial navigation check is | |||
// necessary to load the editor, where it will then monitor navigation | |||
$win.on( 'popstate.spriteEditLoader', function() { | |||
if ( | |||
location.search.match( '[?&]spriteaction=edit' ) && | |||
!$( 'html' ).hasClass( 'spriteedit-loaded' ) | |||
) { | |||
loadSpriteEditor().then( function() { | |||
$win.off( '.spriteEditLoader' ); | |||
} ); | } ); | ||
} | } | ||
} | } ); | ||
} | } ); | ||
Aktualna wersja na dzień 14:30, 5 wrz 2020
$( function() {
'use strict';
/**
* Add an edit button which loads the sprite editor
*
* If spriteaction=edit is in the URL, the editor will be loaded
* immediately, otherwise it will wait for the button to be clicked.
*/
var editPage = $( '#sprite-editor-message' ).data( 'page' ) || null;
if ( !$( '#spritedoc' ).length && !editPage ) {
return;
}
var $editTab = $( '#ca-edit' );
if ( !$editTab.length ) {
$editTab = $( '#ca-viewsource' );
}
var $spriteEditLink = $( '<a>' ).text( 'Edit sprite' ).attr( 'href',
mw.util.getUrl( editPage, { spriteaction: 'edit' } )
);
var $spriteEditTab = $( '<li>' ).attr( 'id', 'ca-spriteedit' ).append(
$( '<span>' ).append( $spriteEditLink )
);
$spriteEditTab.insertAfter( $editTab );
// Page to sprite edit is not here, so no need to bind events
if ( editPage ) {
return;
}
var loadSpriteEditor = function() {
$spriteEditTab.add( '#ca-view' ).toggleClass( 'selected' );
return mw.loader.using( 'ext.gadget.spriteEdit' );
};
if ( location.search.match( '[?&]spriteaction=edit' ) ) {
loadSpriteEditor();
return;
}
var $win = $( window );
$spriteEditLink.one( 'click.spriteEditLoader', function( e ) {
// Initially add the history so it is not delayed waiting
// for the editor to load. The editor will handle it from now.
history.pushState( {}, '', this.href );
loadSpriteEditor().then( function() {
$win.off( '.spriteEditLoader' );
} );
e.preventDefault();
} );
// If the page is reloaded while the editor isn't loaded, navigating
// back to the editor won't work, so an initial navigation check is
// necessary to load the editor, where it will then monitor navigation
$win.on( 'popstate.spriteEditLoader', function() {
if (
location.search.match( '[?&]spriteaction=edit' ) &&
!$( 'html' ).hasClass( 'spriteedit-loaded' )
) {
loadSpriteEditor().then( function() {
$win.off( '.spriteEditLoader' );
} );
}
} );
} );