MediaWiki:Gadget-MobileCategories.js:修订间差异
跳到导航
跳到搜索
imported>=海豚= 小 (导入1个版本) |
imported>=海豚= 无编辑摘要 |
||
第1行: | 第1行: | ||
// 引自[[wikipedia:mediawiki:gadget-MobileCategories.js]] | |||
$(function() { | |||
if ( mw.config.get('skin') == 'vector' || | |||
!["view","submit"].includes(mw.config.get('wgAction')) ) { | |||
window.MobileCategoriesComplete = true; | |||
return; | |||
} | |||
var showhiddencats = mw.user.options.get('showhiddencats'), | |||
api = new mw.Api(), | |||
apiRequest = api.get( {action:'query', titles: mw.config.get('wgPageName'), prop: 'categories', clprop: 'hidden', cllimit: 50, formatversion: 2 } ), | |||
apiRequest2 = api.loadMessagesIfMissing( [ 'pagecategories', 'colon-separator' ] ); | |||
$.when( apiRequest, apiRequest2 ).done( function( data ) { | |||
var categories = [], | |||
hiddenCats = [], | |||
response1Data = data[0], | |||
response2Data = data[1], | |||
allCats = response1Data.query.pages[0].categories || []; | |||
if ( allCats.length === 0 ) { | |||
window.MobileCategoriesComplete = true; | |||
return; | |||
} | |||
mw.config.set('wgCategories', allCats.map(function(ele) { return ele.title.slice(9); })); | |||
api.get({ action:'parse', text:JSON.stringify(allCats), contentmodel:'wikitext', variant:mw.config.get('wgUserVariant'), formatversion:2, prop:'text' }) | |||
.then(function(data2) { | |||
const allCatsVar = data2.parse.text.match(/<p>(.*)\n<\/p>/)[1], | |||
contentCats = JSON.parse(allCatsVar); | |||
function categoryHtmlGenerator(element, index, array) { | |||
if ( !element.hidden ) { | |||
categories.push( $('<li>').append( | |||
$( '<a>' ).attr( 'href', mw.util.getUrl( element.title ) ) | |||
.attr( 'title', element.title ) | |||
.append( document.createTextNode( contentCats[index].title.substring(9) ) ) | |||
).get( 0 ) | |||
); | |||
} | |||
else if (showhiddencats) { | |||
hiddenCats.push( $('<li>').append( | |||
$( '<a>' ).attr( 'href', mw.util.getUrl( element.title ) ) | |||
.attr( 'title', element.title ) | |||
.append( document.createTextNode( contentCats[index].title.substring(9) ) ) | |||
).get( 0 ) | |||
); | |||
} | |||
} | |||
allCats.forEach( categoryHtmlGenerator ); | |||
if ( categories.length === 0 && hiddenCats.length === 0 ) { | |||
window.MobileCategoriesComplete = true; | |||
return; | |||
} | |||
var normalCatlinks, hiddenCatlinks; | |||
if (categories.length) { | |||
normalCatlinks = $( '<div>' ) | |||
.attr( 'id', 'mw-normal-catlinks' ) | |||
.addClass('mw-normal-catlinks') | |||
.append( $( '<ul>' ).append( categories ) ) | |||
.prepend( '<a href="/zh/Special:Categories" title="Special:页面分类">' + mw.message( 'pagecategories' ).escaped() + '</a>' + mw.message( 'colon-separator' ).escaped() ); | |||
} | |||
if (hiddenCats.length) { | |||
hiddenCatlinks = $( '<div>' ) | |||
.attr( 'id', 'mw-hidden-catlinks' ) | |||
.addClass(['mw-hidden-catlinks', 'mw-hidden-cats-user-shown']) | |||
.append( $( '<ul>' ).append( hiddenCats ) ) | |||
.prepend( wgULS("隐藏分类", "隱藏分類") + mw.message( 'colon-separator' ).escaped() ); | |||
} | |||
var catlinks = $( '<div>' ) | |||
.addClass( 'catlinks' ) | |||
.attr( 'id', 'catlinks' ) | |||
.data( 'mw', 'interface' ); | |||
if (normalCatlinks) { catlinks.append(normalCatlinks); } | |||
if (hiddenCatlinks) { catlinks.append(hiddenCatlinks); } | |||
$('.printfooter').after(catlinks); | |||
window.MobileCategoriesComplete = true; | |||
mw.hook( 'wikipage.categories' ).fire(catlinks); | |||
}); | |||
} ); | |||
} ); | } ); |
2021年5月9日 (日) 17:18的版本
// 引自[[wikipedia:mediawiki:gadget-MobileCategories.js]]
$(function() {
if ( mw.config.get('skin') == 'vector' ||
!["view","submit"].includes(mw.config.get('wgAction')) ) {
window.MobileCategoriesComplete = true;
return;
}
var showhiddencats = mw.user.options.get('showhiddencats'),
api = new mw.Api(),
apiRequest = api.get( {action:'query', titles: mw.config.get('wgPageName'), prop: 'categories', clprop: 'hidden', cllimit: 50, formatversion: 2 } ),
apiRequest2 = api.loadMessagesIfMissing( [ 'pagecategories', 'colon-separator' ] );
$.when( apiRequest, apiRequest2 ).done( function( data ) {
var categories = [],
hiddenCats = [],
response1Data = data[0],
response2Data = data[1],
allCats = response1Data.query.pages[0].categories || [];
if ( allCats.length === 0 ) {
window.MobileCategoriesComplete = true;
return;
}
mw.config.set('wgCategories', allCats.map(function(ele) { return ele.title.slice(9); }));
api.get({ action:'parse', text:JSON.stringify(allCats), contentmodel:'wikitext', variant:mw.config.get('wgUserVariant'), formatversion:2, prop:'text' })
.then(function(data2) {
const allCatsVar = data2.parse.text.match(/<p>(.*)\n<\/p>/)[1],
contentCats = JSON.parse(allCatsVar);
function categoryHtmlGenerator(element, index, array) {
if ( !element.hidden ) {
categories.push( $('<li>').append(
$( '<a>' ).attr( 'href', mw.util.getUrl( element.title ) )
.attr( 'title', element.title )
.append( document.createTextNode( contentCats[index].title.substring(9) ) )
).get( 0 )
);
}
else if (showhiddencats) {
hiddenCats.push( $('<li>').append(
$( '<a>' ).attr( 'href', mw.util.getUrl( element.title ) )
.attr( 'title', element.title )
.append( document.createTextNode( contentCats[index].title.substring(9) ) )
).get( 0 )
);
}
}
allCats.forEach( categoryHtmlGenerator );
if ( categories.length === 0 && hiddenCats.length === 0 ) {
window.MobileCategoriesComplete = true;
return;
}
var normalCatlinks, hiddenCatlinks;
if (categories.length) {
normalCatlinks = $( '<div>' )
.attr( 'id', 'mw-normal-catlinks' )
.addClass('mw-normal-catlinks')
.append( $( '<ul>' ).append( categories ) )
.prepend( '<a href="/zh/Special:Categories" title="Special:页面分类">' + mw.message( 'pagecategories' ).escaped() + '</a>' + mw.message( 'colon-separator' ).escaped() );
}
if (hiddenCats.length) {
hiddenCatlinks = $( '<div>' )
.attr( 'id', 'mw-hidden-catlinks' )
.addClass(['mw-hidden-catlinks', 'mw-hidden-cats-user-shown'])
.append( $( '<ul>' ).append( hiddenCats ) )
.prepend( wgULS("隐藏分类", "隱藏分類") + mw.message( 'colon-separator' ).escaped() );
}
var catlinks = $( '<div>' )
.addClass( 'catlinks' )
.attr( 'id', 'catlinks' )
.data( 'mw', 'interface' );
if (normalCatlinks) { catlinks.append(normalCatlinks); }
if (hiddenCatlinks) { catlinks.append(hiddenCatlinks); }
$('.printfooter').after(catlinks);
window.MobileCategoriesComplete = true;
mw.hook( 'wikipage.categories' ).fire(catlinks);
});
} );
} );