MediaWiki:Gadget-morfeusz-linker-wikieditor.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 morfeusz,
notifyOpts = {
tag: 'ml-wikieditor-notify',
title: 'Linkowanie automatyczne'
},
MAX_ENCODED_LENGTH = 900;
mw.libs.MorfeuszAnalyzer = require( 'ext.gadget.morfeusz-analyzer' ).MorfeuszAnalyzer;
morfeusz = new mw.libs.MorfeuszAnalyzer();
mw.messages.set( {
'ml-wikieditor-title': 'Linkowanie automatyczne (Morfeusz SGJP)',
'ml-wikieditor-alt': 'Linkowanie automatyczne',
'ml-wikieditor-empty-warning': 'Zaznacz niepodlinkowany tekst w języku polskim i kliknij ponownie.',
'ml-wikieditor-invalid-input': 'Zaznaczony tekst już zawiera linki. Usuń podwójne nawiasy kwadratowe.',
'ml-wikieditor-invalid-length': 'Zaznaczony tekst jest zbyt długi.',
'ml-wikieditor-server-error': 'Błąd serwera, spróbuj ponownie.',
'ml-wikieditor-summary': '+[[WS:AUTOLINK|linkowanie automatyczne]]'
} );
function makeWikitext( items ) {
return items.reduce( function ( out, item ) {
if ( 'lemmas' in item ) {
return out + mw.libs.MorfeuszAnalyzer.makeWikilink( item.lemmas[ 0 ].lemma, item.form );
} else {
return out + item.form;
}
}, '' );
}
$( function () {
var request,
$wpTextbox = $( '#wpTextbox1' ),
$wpSummary = $( '#wpSummary' );
mw.libs.toolbarGadget.addButton( {
icon: '//upload.wikimedia.org/wikipedia/commons/9/97/Button_int_link.png',
title: mw.msg( 'ml-wikieditor-title' ),
alt: mw.msg( 'ml-wikieditor-alt' ),
id: 'ml-wikieditor',
onclick: function () {
var selection = $wpTextbox.textSelection( 'getSelection' );
if ( request && 'abort' in request ) {
request.abort();
}
if ( selection.trim() === '' ) {
mw.notify( mw.msg( 'ml-wikieditor-empty-warning' ), $.extend( { type: 'warn' }, notifyOpts ) );
} else if ( encodeURI( selection ).length > MAX_ENCODED_LENGTH ) {
mw.notify( mw.msg( 'ml-wikieditor-invalid-length' ), $.extend( { type: 'error' }, notifyOpts ) );
} else if ( selection.indexOf( '[[' ) !== -1 || selection.indexOf( ']]' ) !== -1 ) {
mw.notify( mw.msg( 'ml-wikieditor-invalid-input' ), $.extend( { type: 'error' }, notifyOpts ) );
} else {
request = morfeusz.analyze( selection );
request.done( function ( data ) {
var replacement = makeWikitext( data.items );
$wpTextbox.textSelection( 'replaceSelection', replacement );
if ( $wpSummary.val().indexOf( mw.msg( 'ml-wikieditor-summary' ) ) === -1 ) {
$wpSummary.val( (
$wpSummary.val().trim() + ' ' +
mw.msg( 'ml-wikieditor-summary' )
).trim() );
}
} ).fail( function () {
mw.notify( mw.msg( 'ml-wikieditor-server-error' ), $.extend( { type: 'error' }, notifyOpts ) );
} );
}
}
} );
} );