Diferencia entre revisiones de «MediaWiki:Gadget-show-quality-on-cats.js»
Ir a la navegación
Ir a la búsqueda
m (oops) |
m (maybe break things) |
||
Línea 32: | Línea 32: | ||
} |
} |
||
const api = new mw.Api({ parameters: query, }) |
|||
// page => [cat,...] |
|||
console.debug(response) |
|||
⚫ | |||
⚫ | |||
console.warn('gadget:', 'show-quality-on-cats', 'missing results', response) |
|||
function paginate(resp) { |
|||
⚫ | |||
⚫ | |||
if (!categories[page.title]) |
|||
categories[page.title] = [] |
|||
⚫ | |||
page.categories.forEach(function each_cat(row) { |
|||
⚫ | |||
categories[page.title].push(cat) |
|||
}) |
|||
⚫ | |||
⚫ | |||
return categories |
|||
} |
|||
console.debug('continuing:', resp.continue) |
|||
// TODO: this doesn't work |
|||
return api.get(resp.continue).then(paginate) |
|||
} |
} |
||
api.get().then(paginate).then(function all_results(all) { |
|||
⚫ | |||
⚫ | |||
console.debug('article-qualities:', all) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
document.querySelectorAll('#mw-pages a').forEach(function each_link(el) { |
document.querySelectorAll('#mw-pages a').forEach(function each_link(el) { |
||
const title = el.getAttribute('title') |
const title = el.getAttribute('title') |
||
const cat = all[title] |
const cat = all[title][0] |
||
if (!cat) return |
if (!cat) return |
||
const icon = String.fromCodePoint.apply(null, icons[cat]) |
const icon = String.fromCodePoint.apply(null, icons[cat]) |
||
const li = el.parentElement |
const li = el.parentElement |
||
//-li.append(icon) |
|||
li.classList.add('quality') |
li.classList.add('quality') |
||
li.classList.add(css_class[cat]) |
li.classList.add(css_class[cat]) |
Revisión del 17:40 14 ago 2019
mw.hook('wikipage.content').add(function hook_handler() { const icons = { 'Stubs': [0x25D4], 'Partially complete articles': [0x25D2], 'Articles nearing completion': [0x25D5], 'Complete articles': [0x26AB, 0xFE0E], } const css_class = { 'Stubs': 'quality-stub', 'Partially complete articles': 'quality-part', 'Articles nearing completion': 'quality-good', 'Complete articles': 'quality-done', } // only on categories if (mw.config.get('wgCanonicalNamespace') != 'Category') return // not on quality cats (pointless) if (Object.keys(icons).includes(mw.config.get('wgTitle'))) return console.warn('gadget:', 'show-quality-markers') const query = { prop: "categories", indexpageids: true, cllimit: "max", clcategories: Object.keys(icons).map(function(cat) { return 'Category:'+ cat }), generator: "categorymembers", gcmtitle: mw.config.get('wgPageName'), gcmlimit: "max", gcmtype: "page", } const api = new mw.Api({ parameters: query, }) // page => [cat,...] const categories = {} function paginate(resp) { resp.query.pageids.forEach(function each_pageid(id) { const page = resp.query.pages[id] if (!categories[page.title]) categories[page.title] = [] if (!page.categories) return page.categories.forEach(function each_cat(row) { const cat = row.title.replace('Category:','') categories[page.title].push(cat) }) }) if (!resp.continue) { return categories } console.debug('continuing:', resp.continue) // TODO: this doesn't work return api.get(resp.continue).then(paginate) } api.get().then(paginate).then(function all_results(all) { console.debug('article-qualities:', all) document.querySelectorAll('#mw-pages a').forEach(function each_link(el) { const title = el.getAttribute('title') const cat = all[title][0] if (!cat) return const icon = String.fromCodePoint.apply(null, icons[cat]) const li = el.parentElement li.classList.add('quality') li.classList.add(css_class[cat]) }) mw.hook('quality-on-cats').fire() }) // end of API query }) // end of MW hook