MediaWiki:Gadget-SeparateSpecialCategories.js: Porovnání verzí

+ umožnění odfiltrování speciálních typů kategorií na Special:WantedCategories; optimalizace kódu; refaktorizace
(Separace speciálních typů kategorií)
 
(+ umožnění odfiltrování speciálních typů kategorií na Special:WantedCategories; optimalizace kódu; refaktorizace)
* @details
* Oddělí speciální typy kategorií do vlastních boxů pod hlavním kategorizačním boxem.
* Na Special:WantedCategories umožní odfiltrování speciálních typů kategorií.
*
* @remark
var
var categoryTypes = [
||i,
categoryTypes,
categoryPrefixes,
rgxCategoryPrefixes;
var categoryTypes = [
{
boxIdid: 'mwg-MaintenanceCats',
prefix: 'Údržba:',
infoPage: new mw.Title( 'Project:Údržba' ),
treatAsExisting: false
}, {
boxIdid: 'mwg-MonitoringCats',
prefix: 'Monitoring:',
infoPage: new mw.Title( 'Project:Monitoring' ),
var prefixescategoryPrefixes = categoryTypes[0].prefix;
for ( var i = 1; i < categoryTypes.length; i++ ) {
prefixescategoryPrefixes += '|' + categoryTypes[i].prefix;
}
var rgxPrefixesrgxCategoryPrefixes = new RegExp( '^(' + prefixescategoryPrefixes + ')' );
if (
||(
!mw.config.get( 'wgIsArticle' )
||
|| mw.config.get( 'wgIsRedirect' )
|| ( mw.config.get( 'wgNamespaceNumber' ) === 14 && rgxCategoryPrefixes.test( mw.config.get( 'wgTitle' ) ) )
||
|| !$.grep( mw.config.get( 'wgCategories' ), function ( item ) { return rgxPrefixesrgxCategoryPrefixes.test( item ); } ).length
) {
&& !( mw.config.get( 'wgNamespaceNumber' ) === -1 && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Wantedcategories' )
) {
return;
}
function makeClickHandler( title ) {
return function () {
$( 'body.mw-special-Wantedcategories div.mw-spcontent ol li a[title^="' + title + '"]' )
.parent()
.toggle( $( this ).prop( 'checked' ) )
;
};
}
$( document ).ready( function () {
var categoryPrefix;
elementId,
categoryPrefix,
categoryFullPrefix;
for ( var i = 0; i < categoryTypes.length; i++ ) {
categoryPrefixelementId = mw.config.get( 'wgFormattedNamespaces' )['14'] + ':mwg-' + categoryTypes[i].prefixid;
categoryPrefix = categoryTypes[i].prefix;
categoryFullPrefix = mw.config.get( 'wgFormattedNamespaces' )[14] + ':' + categoryPrefix;
if (
if ( $( '#catlinks ul a[title^="' + categoryPrefix + '"]' ).length ) {
mw.config.get( 'wgNamespaceNumber' ) === -1
&& mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Wantedcategories'
&& $( 'div.mw-spcontent ol.special a[title^="' + categoryFullPrefix + '"]' ).length
) {
$( 'body.mw-special-Wantedcategories div.mw-spcontent ol' ).before(
$( '<input>' )
.attr({
id: elementId,
type: 'checkbox',
checked: 'checked'
})
.click(
makeClickHandler( categoryFullPrefix )
)
.after(
$( '<label>' )
.attr({
'for': elementId
})
.text( categoryPrefix )
)
);
} else if ( $( '#catlinks ul a[title^="' + categoryPrefixcategoryFullPrefix + '"]' ).length ) {
$( '<div>' )
.attr({
'class': 'catlinks mwg-specialcatlinks',
'id': categoryTypes[i].boxIdelementId
})
.html( '<a href="' + categoryTypes[i].infoPage.getUrl() + '" title="' + mw.html.escape( categoryTypes[i].infoPage.getPrefixedText() ) + '">' + categoryTypes[i].infoText + '</a>: <ul></ul>' )
.append(
$( '#catlinks ul li' )
.has( 'a[title^="' + categoryPrefixcategoryFullPrefix + '"]' )
.each( function () {
$( this )
.find( '> a' )
.each( function () {
if ( categoryTypes[i].removePrefix ) {
$( this ).text( $( this ).text().replace( categoryTypes[i].prefix, '' ) );
}
if ( categoryTypes[i].treatAsExisting ) {
$( this )
.removeClass( 'new' )
16 389

editací