MediaWiki:Gadget-edit-form-api.js
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
- Opera: Naciśnij klawisze Ctrl+F5.
var EApi = {
localApi: new mw.Api(),
foreignApis: {},
waiting: false
},
EConstants = require( './edit-form-constants.js' ),
EPrinter = require( './edit-form-printer.js' ),
EStr = require( './edit-form-strings.js' ),
EUi = require( './edit-form-ui.js' ),
EUtil = require( './edit-form-util.js' );
EApi.handleRequest = function ( mode, handler ) {
if ( EApi.waiting ) {
$.alerts.alert( EStr.WAITING_FOR_API );
} else {
EApi.prepare( mode );
EApi.waiting = true;
handler().done( function () {
EApi.waiting = false;
} );
}
};
EApi.process = function ( options, callback ) {
options = Array.isArray( options ) ? options : [ options ];
var requests = $.map( options, function ( opts ) {
var query = $.extend( true, {
meta: 'siteinfo',
formatversion: 2
}, opts.data || opts );
if ( opts.external ) {
var url = EUtil.getUrlApi( opts.external.lang, opts.external.project );
if ( !EApi.foreignApis[ url ] ) {
EApi.foreignApis[ url ] = new mw.ForeignApi( url, {
anonymous: true
} );
}
return EApi.foreignApis[ url ].get( query );
} else {
return EApi.localApi.get( query );
}
} );
return $.when.apply( null, requests ).done( callback );
};
EApi.prepare = function ( mode ) {
var idpart = EConstants.API_ID[ mode ],
elem = $( '#ed_' + EUtil.getActiveLangId() + '_extra_' + idpart );
elem
.removeClass( 'apidone apierror' )
.addClass( 'apistarted' );
if ( elem.data( 'orig_html' ) ) {
elem.html( elem.data( 'orig_html' ) );
}
};
EApi.display = function ( mode, res, subs, error ) {
var idpart = EConstants.API_ID[ mode ],
elem = $( '#ed_' + EUtil.getActiveLangId() + '_extra_' + idpart );
if ( error === undefined ) {
elem.addClass( 'apidone' ).removeClass( 'apistarted apierror' );
if ( res !== undefined ) {
EUi.showResult( EPrinter.resultToHTML( mode, res ), idpart );
}
} else {
elem
.addClass( 'apierror' )
.removeClass( 'apistarted apidone' )
.data( 'orig_html', elem.html() )
.html( error );
}
if ( subs !== undefined ) {
EUtil.focusArea(
subs,
EUi.isDefaultText( EUtil.getActiveLangId(), subs, 1 )
);
}
};
module.exports = EApi;