Diferencia entre revisiones de «MediaWiki:Gadget-show-quality-on-cats.js»

m
sin resumen de edición
m (oops)
m
 
(No se muestran 19 ediciones intermedias de otro usuario)
mw.hook('wikipage.content').add(function hook_handler() {
 
const iconscats = {
stub: 'Stubs': [0x25D4],
part: 'Partially complete articles': [0x25D2],
good: 'Articles nearing completion': [0x25D5],
done: 'Complete articles': [0x26AB, 0xFE0E],
best: 'Exemplary articles',
warn: 'Articles in need of attention',
const css_class = {
meta: 'Meta',
'Stubs': 'quality-stub',
'Partially complete articles': 'quality-part',
'Articles nearing completion': 'quality-good',
'Complete articles': 'quality-done',
}
// SEE: [[MediaWiki:Gadget-quality.css]] for icons and colors
 
const css_class = Object.fromEntries(Object.entries(cats).map(function map_cats_to_classes(kv) { return [kv[1],'quality-' + kv[0]]; }))
 
// only on categories
if (mw.config.get('wgCanonicalNamespace') != 'Category') return
// not on quality cats (pointless)
//if (Object.keysvalues(iconscats).includes(mw.config.get('wgTitle'))) return
// TODO: only ignore
 
// add specials for keepers
if (mw.config.get('wgUserGroups').includes('sysop')) {
document.querySelector('#mw-pages').classList.add('keeper-highlight-good')
 
console.warn('gadget:', 'show-quality-markers')
indexpageids: true,
cllimit: "max",
clcategories: Object.keysvalues(iconscats).filter(function (cat) { return cat != mw.config.get('wgTitle') }).map(function(cat) { return 'Category:'+ cat }),
generator: "categorymembers",
gcmtitle: mw.config.get('wgPageName'),
}
 
;(const api = new mw.Api).get({ parameters: query).then(function, query_response(response}) {
 
// page => [cat,...]
console.debug(response)
const css_classcategories = {}
if (response.continue) {
 
console.warn('gadget:', 'show-quality-on-cats', 'missing results', response)
function paginate(resp) {
response resp.query.pageids.forEach(function each_pageid(id) {
const page = responseresp.query.pages[id]
if (!categories[page.title])
categories[page.title] = []
if (!page.categories) return
page.categories.forEach(function each_cat(row) {
all[page.title] const cat = page.categories[0]row.title.replace('Category:','')
categories[page.title].push(cat)
})
})
if (response!resp.continue) {
return categories
}
console.debug('continuing:', resp.continue)
return api.get(resp.continue).then(paginate)
}
 
api.get().then(paginate).then(function all_results(all) {
const all = {}
 
response.query.pageids.forEach(function each_pageid(id) {
console.debug('article-qualities:', all)
const page = response.query.pages[id]
if (!page.categories) return
all[page.title] = page.categories[0].title.replace('Category:','')
})
 
document.querySelectorAll('#mw-pages a').forEach(function each_link(el) {
const title = el.getAttribute('title')
all[title].forEach(function each_quality_cat(cat) {
const cat = all[title]
const li = el.parentElement
if (!css_class[cat]) return
const icon = String.fromCodePoint.apply(null, icons[cat])
li.classList.add('quality')
const li = el.parentElement
li.classList.add(css_class[cat])
//-li.append(icon)
})
li.classList.add('quality')
})
li.classList.add(css_class[cat])
 
document.querySelectorAll('.quality-meta').forEach(function clean_meta(el) {
el.classList.remove('quality')
})
 
 
}) // end of API query
 
 
}) // end of MW hook