MediaWiki:Gadget-references.js: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
obnizam maxage do 8 godzin (bylo 12) |
zapamietaj stan zwiniecia/rozwiniecia pomiedzy zaladowaniami strony (Specjalna:Diff/7454770) |
||
Linia 26: | Linia 26: | ||
}, |
}, |
||
$wpTextbox = null, |
$wpTextbox = null, |
||
storageAutostartKey = 'ext.gadget.references.autostart', |
|||
storageSelectionKey = 'ext.gadget.references.selection'; |
|||
referencesGadget.fetchLanguages = function () { |
referencesGadget.fetchLanguages = function () { |
||
Linia 67: | Linia 68: | ||
onclick: referencesGadget.showPanel |
onclick: referencesGadget.showPanel |
||
} ); |
} ); |
||
if ( Number( mw.storage.get( storageAutostartKey ) ) ) { |
|||
referencesGadget.showPanel(); |
|||
} |
|||
}; |
}; |
||
Linia 104: | Linia 109: | ||
if ( referencesGadget.gui.$panel ) { |
if ( referencesGadget.gui.$panel ) { |
||
referencesGadget.gui.$panel.toggle(); |
referencesGadget.gui.$panel.toggle(); |
||
mw.storage.set( storageAutostartKey, Number( referencesGadget.gui.$panel.is( ':visible' ) ) ); |
|||
return; |
return; |
||
} |
} |
||
Linia 115: | Linia 121: | ||
.on( 'change', referencesGadget.changeLanguage ); |
.on( 'change', referencesGadget.changeLanguage ); |
||
selected = mw.storage.get( |
selected = mw.storage.get( storageSelectionKey ); |
||
$.each( referencesGadget.categories, function ( i, obj ) { |
$.each( referencesGadget.categories, function ( i, obj ) { |
||
Linia 139: | Linia 145: | ||
cmtitle = option.value; |
cmtitle = option.value; |
||
mw.storage.set( |
mw.storage.set( storageSelectionKey, cmtitle ); |
||
if ( referencesGadget.templates[ cmtitle ] ) { |
if ( referencesGadget.templates[ cmtitle ] ) { |
Wersja z 17:26, 29 paź 2020
/*
* @author: [[:pl:User:Beau]], [[:pl:User:Peter Bowman]]
*/
var referencesGadget = mw.libs.referencesGadget = {
version: 14,
categories: [],
templates: {},
gui: {},
api: null
},
config = mw.config.get( [
'wgNamespaceIds',
'wgAction'
] ),
modules = [
'ext.gadget.lib-toolbar',
'ext.gadget.style-summary-buttons',
'mediawiki.storage',
'mediawiki.api',
'jquery.textSelection'
],
cacheOpts = {
maxage: 28800,
smaxage: 600
},
$wpTextbox = null,
storageAutostartKey = 'ext.gadget.references.autostart',
storageSelectionKey = 'ext.gadget.references.selection';
referencesGadget.fetchLanguages = function () {
referencesGadget.api.get( $.extend( {
formatversion: 2,
list: 'categorymembers',
cmlimit: 'max',
cmnamespace: config.wgNamespaceIds.category,
cmtitle: 'Kategoria:Szablony źródeł'
}, cacheOpts ) )
.done( referencesGadget.gotLanguages );
};
referencesGadget.gotLanguages = function ( response ) {
$.each( response.query.categorymembers, function ( i, obj ) {
var matches;
if ( obj.ns === config.wgNamespaceIds.category ) {
matches = obj.title.match( /\((.+?)\)$/ );
if ( matches ) {
referencesGadget.categories.push( {
title: matches[ 1 ],
name: obj.title
} );
}
}
} );
// sortuj nazwy
referencesGadget.categories.sort( function ( a, b ) {
return a.title.localeCompare( b.title, 'pl' );
} );
mw.libs.toolbarGadget.addButton( {
icon: '//upload.wikimedia.org/wikipedia/commons/b/bf/Button_easy_cite_pl.png',
title: mw.format( 'Wstawianie źródeł (wersja $1)', referencesGadget.version ),
alt: 'Wstaw źródło',
id: 'referencesGadgetButton',
onclick: referencesGadget.showPanel
} );
if ( Number( mw.storage.get( storageAutostartKey ) ) ) {
referencesGadget.showPanel();
}
};
referencesGadget.fetchTemplates = function ( cmtitle ) {
referencesGadget.api.get( $.extend( {
formatversion: 2,
list: 'categorymembers',
cmlimit: 'max',
cmnamespace: config.wgNamespaceIds.template,
cmtitle: cmtitle,
requestid: cmtitle
}, cacheOpts ) )
.done( referencesGadget.gotTemplates );
};
referencesGadget.gotTemplates = function ( response ) {
var templates = [];
$.each( response.query.categorymembers, function ( i, obj ) {
if ( obj.ns === config.wgNamespaceIds.template ) {
templates.push( obj.title.replace( /^Szablon:/, '' ) );
}
} );
// sortuj
templates.sort( function ( a, b ) {
return a.localeCompare( b, 'pl' );
} );
referencesGadget.templates[ response.requestid ] = templates;
referencesGadget.updateTemplateSelector( templates );
};
referencesGadget.showPanel = function () {
var selected;
if ( referencesGadget.gui.$panel ) {
referencesGadget.gui.$panel.toggle();
mw.storage.set( storageAutostartKey, Number( referencesGadget.gui.$panel.is( ':visible' ) ) );
return;
}
referencesGadget.gui.$panel = $( '<div>' )
.addClass( 'references-panel' )
.append( 'Język: ' );
referencesGadget.gui.$select = $( '<select>' )
.appendTo( referencesGadget.gui.$panel )
.on( 'change', referencesGadget.changeLanguage );
selected = mw.storage.get( storageSelectionKey );
$.each( referencesGadget.categories, function ( i, obj ) {
$( '<option>' )
.val( obj.name )
.prop( 'selected', obj.name === selected )
.append( obj.title )
.appendTo( referencesGadget.gui.$select );
} );
referencesGadget.gui.$links = $( '<div>' )
.addClass( 'userSummaryButtons' )
.appendTo( referencesGadget.gui.$panel )
.on( 'click', 'a', referencesGadget.insertTemplate );
referencesGadget.gui.$panel.insertBefore( '#wpTextbox1' );
referencesGadget.changeLanguage.call( referencesGadget.gui.$select.get( 0 ) );
};
referencesGadget.changeLanguage = function () {
var option = this.options[ this.selectedIndex ],
cmtitle = option.value;
mw.storage.set( storageSelectionKey, cmtitle );
if ( referencesGadget.templates[ cmtitle ] ) {
referencesGadget.updateTemplateSelector( referencesGadget.templates[ cmtitle ] );
} else {
referencesGadget.fetchTemplates( cmtitle );
}
};
referencesGadget.updateTemplateSelector = function ( list ) {
referencesGadget.gui.$links.empty();
$.each( list, function ( i, title ) {
$( '<a>' )
.attr( 'title', title )
.append( title )
.appendTo( referencesGadget.gui.$links )
.after( ' ' );
} );
};
referencesGadget.insertTemplate = function () {
var content = this.title;
if (
window.customReferencesArgs &&
typeof customReferencesArgs[ this.title ] === 'string'
) {
content += customReferencesArgs[ this.title ];
}
$wpTextbox.textSelection( 'encapsulateSelection', {
pre: '<ref>{' + '{' + content,
post: '}}</ref>'
} );
};
if ( [ 'edit', 'submit' ].indexOf( config.wgAction ) !== -1 ) {
$.when(
mw.loader.using( modules ),
$.ready
).done( function () {
$wpTextbox = $( '#wpTextbox1' );
referencesGadget.api = new mw.Api();
referencesGadget.fetchLanguages();
} );
}