MediaWiki:Gadget-nkjp-lookup.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)
- Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5.
- Opera: Naciśnij klawisze Ctrl+F5.
var messages = {
'toolbar-nkjp-tooltip': 'Wygeneruj szablon NKJP',
'toolbar-nkjp-example': 'http://nkjp.uni.lodz.pl/ParagraphMetadata?pid=e8f388f43c5a921039efd59b53dddc70&match_start=228&match_end=235&wynik=1',
'toolbar-nkjp-dialog-title': 'Generowanie szablonu NKJP',
'toolbar-nkjp-dialog-input': 'Adres wystąpienia w korpusie (<a href="$1" target="_blank" class="nkjp-example-link">przykład</a>):',
'toolbar-nkjp-dialog-result': 'Wynik:',
'toolbar-nkjp-dialog-more': 'Zobacz też:',
'toolbar-nkjp-dialog-more-template': '<a href="//pbbot.toolforge.org/nkjp-generator" target="_blank">stronę narzędzia w witrynie Tool Labs</a>',
'toolbar-nkjp-dialog-more-tools': '<a href="' + mw.util.getUrl( 'Szablon:NKJP' ) + '" target="_blank">dokumentację szablonu</a>',
'toolbar-nkjp-dialog-button-query': 'Wyślij zapytanie',
'toolbar-nkjp-dialog-button-report': 'Zgłoś błąd',
'toolbar-nkjp-dialog-placeholder': 'Wpisz adres w powyższym polu i kliknij na „$1” lub wciśnij klawisz „Enter”.',
'toolbar-nkjp-dialog-fetching': 'Oczekiwanie na odpowiedź...',
'toolbar-nkjp-error': 'Błąd: $1'
},
modules = [
'jquery.ui',
'jquery.textSelection'
],
REPORT_LINK = mw.util.getUrl( 'Dyskusja wikipedysty:Peter Bowman', {
action: 'edit',
section: 'new',
preloadtitle: 'nkjp-generator.js',
nosummary: ''
} ),
gui = {
launched: false
},
currentRequest = null;
function makeRequest( address ) {
return $.ajax( {
url: '//pbbot.toolforge.org/nkjp-generator',
data: {
address: address,
format: 'json'
}
} );
}
function queryButtonHandler( evt ) {
var address = $.trim( gui.$input.val() );
if ( currentRequest ) {
currentRequest.abort();
}
if ( !address ) {
return;
}
gui.$result.empty().append( $( '<p>' ).text( mw.msg( 'toolbar-nkjp-dialog-fetching' ) ) );
currentRequest = makeRequest( address ).done( function ( data ) {
var $ul, $textarea;
gui.$result.empty();
if ( data.status !== 200 ) {
$( '<p>' )
.text( mw.msg( 'toolbar-nkjp-error', data.error ) )
.appendTo( gui.$result );
if ( data.backtrace.length ) {
$ul = $( '<ul>' );
$.each( data.backtrace, function ( i, el ) {
$( '<li>' ).text( el ).appendTo( $ul );
} );
$ul.appendTo( gui.$result );
}
} else {
$textarea = $( '<textarea>' )
.attr( 'rows', 3 )
.prop( 'readonly', true )
.val( data.output )
.appendTo( gui.$result );
$textarea.textSelection( 'setSelection', {
start: 0,
end: data.output.length
} ).focus();
}
} ).fail( function ( jqXHR, textStatus, errorThrown ) {
var $content = $( '<p>' ).text( mw.msg( 'toolbar-nkjp-error', errorThrown ) );
gui.$result.empty().append( $content );
} );
}
function resetResults() {
var msg = mw.msg( 'toolbar-nkjp-dialog-placeholder', mw.msg( 'toolbar-nkjp-dialog-button-query' ) );
gui.$input.val( '' );
gui.$result.empty().append( $( '<i>' ).text( msg ) );
}
$( function () {
var buttonIcon = '//upload.wikimedia.org/wikipedia/commons/3/39/Bouton_site_en.png',
waitIcon = '//upload.wikimedia.org/wikipedia/commons/3/30/Wait.gif';
mw.messages.set( messages );
gui.$dialog = $( '<div>' ).append(
$( '<p>' ).html( mw.msg( 'toolbar-nkjp-dialog-input', mw.msg( 'toolbar-nkjp-example' ) ) ),
gui.$input = $( '<input>' ).attr( 'size', 80 ),
$( '<p>' ).text( mw.msg( 'toolbar-nkjp-dialog-result' ) ),
gui.$result = $( '<div>' ),
$( '<p>' ).text( mw.msg( 'toolbar-nkjp-dialog-more' ) ),
$( '<ul>' ).append(
$( '<li>' ).html( mw.msg( 'toolbar-nkjp-dialog-more-template' ) ),
$( '<li>' ).html( mw.msg( 'toolbar-nkjp-dialog-more-tools' ) )
)
);
resetResults();
mw.libs.toolbarGadget.addButton( {
title: mw.msg( 'toolbar-nkjp-tooltip' ),
alt: 'NKJP',
id: 'mw-editbutton-nkjp',
icon: buttonIcon,
onclick: function () {
var $button;
if ( !gui.launched ) {
$button = $( '#mw-editbutton-nkjp' ).attr( 'src', waitIcon );
mw.loader.using( modules ).done( function () {
gui.$dialog.dialog( {
title: mw.msg( 'toolbar-nkjp-dialog-title' ),
modal: true,
draggable: false,
resizable: false,
width: 750,
buttons: [
{
text: mw.msg( 'toolbar-nkjp-dialog-button-query' ),
click: queryButtonHandler
},
{
text: mw.msg( 'toolbar-nkjp-dialog-button-report' ),
click: function ( evt ) {
open( REPORT_LINK, '_blank' );
}
}
],
beforeClose: function ( evt ) {
if ( currentRequest ) {
currentRequest.abort();
}
resetResults();
}
} );
gui.launched = true;
$button.attr( 'src', buttonIcon );
gui.$input.focus();
} );
} else {
gui.$dialog.dialog( 'open' );
gui.$input.focus();
}
}
} );
gui.$input.on( 'keypress', function ( evt ) {
if ( evt.keyCode === 13 ) { // Enter
gui.$dialog.dialog( 'option', 'buttons' )[ 0 ].click();
}
} );
gui.$dialog.on( 'click', '.nkjp-example-link', function ( evt ) {
var keyPress = $.Event( 'keypress' );
keyPress.keyCode = 13;
gui.$input.val( $( this ).attr( 'href' ) ).trigger( keyPress );
return false;
} );
} );