MediaWiki:Gadget-tag-complete-button.js
From WikiMSK
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (โ-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (โ-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
mw.hook('wikipage.content').add(function tag_complete_button() {
// only show button on latest revision of page
if (mw.config.get('wgCurRevisionId') != mw.config.get('wgRevisionId')) return;
// find the {{t|complete}} template
const notice = document.querySelector('.quality-complete')
if (!notice) return;
// don't show button on edit
const editor = document.querySelector('.mw-editform')
if (editor) return;
// TODO: instead add a button that saves and marks as complete
const button = document.createElement('button')
button.textContent = 'Mark as Reviewed'
button.onclick = mark_article_as_complete
// find the message to replace with a button
const place_for_button = notice.querySelector('.unsigned')
if (!place_for_button) return
place_for_button.replaceWith(button)
console.warn('gadget:', 'tag-complete-button')
})
function mark_article_as_complete(ev) {
const api = new mw.Api
const page_name = mw.config.get('wgPageName')
console.warn('gadget:', 'tag-complete-button', 'button pressed')
// try to edit the article
return api.edit(page_name, function try_signing_article(revision) {
return {
// find {{t|complete}} and replace with {{t|complete|~x4}}
text: revision.content.replace( '{'+'{complete}}', '{'+'{complete|~~'+'~~}}' ),
summary: 'mark as complete',
}
}).catch(console.warn).then(function try_tagging_revision(revision) {
console.debug('gadget:', 'tag-complete-button', 'revision:', revision)
if (revision.nochange === true) return
console.warn('gadget:', 'tag-complete-button', 'tagging')
// tag the revision
return api.postWithToken('csrf', {
action: 'tag',
revid: revision.newrevid,
add: 'completed',
reason: 'from tag-complete-button gadget',
}).catch(console.warn).then(function show_result_of_complet_button_press() {
// show the user that it worked
mw.notify('Article marked as complete?')
console.warn('gadget:', 'tag-complete-button', 'tagged')
// TODO: replace button with signature/reload button section
})
})
}