MediaWiki:Gadget-Mokosz.js
Z Nonsensopedii, polskiej encyklopedii humoru
Uwaga: aby zobaczyć zmiany po zapisaniu, 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: Przytrzymaj Ctrl jednocześnie klikając Odśwież lub naciśnij klawisze Ctrl+F5
- Konqueror: Kliknij polecenie Odśwież lub naciśnij klawisz F5
- Opera: Wyczyść pamięć podręczną w Narzędzia → Preferencje
//<nowiki>
var SearchWindow = {};
$( function () {
function SearchProcessDialog( config ) {
SearchProcessDialog.super.call( this, config );
}
OO.inheritClass( SearchProcessDialog, OO.ui.ProcessDialog );
SearchProcessDialog.static.name = "SearchProcessDialog";
SearchProcessDialog.static.size = "medium";
SearchProcessDialog.static.title = "Szukaj zobaczteżów na podstawie lokalizacji";
SearchProcessDialog.static.actions =
[
{ action: "continue", label: "Szukaj", flags: ["progressive", "primary"] },
{ action: "cancel", label: "Anuluj", flags: "safe" },
];
var checkbox = new OO.ui.CheckboxInputWidget({ value: "enabled" });
SearchProcessDialog.prototype.initialize = function ()
{
SearchProcessDialog.super.prototype.initialize.apply( this, arguments );
this.panel = new OO.ui.PanelLayout
({
padded: true,
expanded: false
});
this.content = new OO.ui.FieldsetLayout();
this.radioSelect = new OO.ui.RadioSelectWidget( {
items: [
new OO.ui.RadioOptionWidget( {
data: 'all',
label: '(wszystko)'
} ),
new OO.ui.RadioOptionWidget( {
data: 'cities',
label: 'Miejscowości'
} )
],
} );
this.radioSelect.selectItemByData( 'all' );
this.radioSelectField = new OO.ui.FieldLayout(this.radioSelect);
this.minResultsInput = new OO.ui.NumberInputWidget( {
min: 1,
max: 30,
step: 1,
input: { value: 5 }
} );
this.minResultsField = new OO.ui.FieldLayout(this.minResultsInput,
{ label: 'Minimalna liczba wyników:', align: 'top' } );
this.content.addItems([
// this.radioSelectField, // tymczasowo, na razie nie ma po co
this.minResultsField
]);
this.panel.$element.append(this.content.$element);
this.$body.append( this.panel.$element );
};
SearchProcessDialog.prototype.getActionProcess = function(action)
{
var dialog = this;
if (action == "continue")
{
return new OO.ui.Process ( function()
{
window.location.assign( mw.util.getUrl(
mw.config.get('wgPageName'),
{
action: 'edit',
mokoszMin: dialog.minResultsInput.getValue(),
mokoszMode: dialog.radioSelect.findSelectedItem().getData()
}
) );
});
}
else if (action == "cancel")
{
return new OO.ui.Process ( function()
{
dialog.close();
});
}
}
SearchProcessDialog.prototype.getSetupProcess = function(data)
{
return SearchProcessDialog.super.prototype.getSetupProcess.call(this, data)
.next(function()
{
this.content.setLabel("Szukaj zobaczteżów w pobliżu artykułu " +
mw.config.get('wgPageName').replace(/_/g, ' ') + ":"
);
}, this);
};
var dialog = new SearchProcessDialog();
function doSearch() {
var wikitext = '{{#invoke:Znajdź w pobliżu|findToHtml|' +
mw.config.get( 'wgPageName' ) +
'|min=' + mw.util.getParamValue('mokoszMin') + '|[[:+]]'; // na razie hardkodujemy główną
switch (mw.util.getParamValue('mokoszMode')) {
case 'cities':
wikitext += '|[[SIMC::+]]';
break;
}
wikitext += '}}';
var api = new mw.Api();
api.get( {
action: 'parse',
prop: 'text|modules',
text: wikitext
} ).done( function( data ) {
console.debug(data);
var $content = $( data.parse.text['*'] );
$( '#mw-content-text' ).before( $content );
mw.loader.load( data.parse.modules );
mw.hook( 'wikipage.content' ).fire( $content );
} );
}
var SearchWindowManager = new OO.ui.WindowManager();
$(document.body).append(SearchWindowManager.$element);
SearchWindowManager.addWindows([dialog]);
var isSearch = (mw.util.getParamValue('mokoszMin') !== null);
if (mw.config.get('wgNamespaceNumber') === 0 &&
mw.config.get('wgIsProbablyEditable') &&
( mw.config.get('wgCoordinates') || isSearch )
) {
var link = $( '<a title="Uruchom narzędzie do sugerowania zobaczteżów na podstawie geolokalizacji" rel="nofollow">Utwórz zobaczteże na podstawie lokalizacji</a>' );
link.click( function() { SearchWindowManager.openWindow( dialog ); } );
var listItem = $( '<li id="t-suggestnearby"></li>' ).append( link );
if ( mw.config.get('skin') == "vector" )
{
$( '#p-tb > .vector-menu-content > ul' ).append( listItem );
} else if ( mw.config.get('skin') == "timeless" )
{
$( '#p-tb > .mw-portlet-body > ul' ).append( listItem );
}
if ( isSearch ) {
doSearch();
}
}
} );
//</nowiki>