MediaWiki:Gadget-tag-complete-button.js

From The Coppermind
Revision as of 17:38, 3 August 2019 by Fbstj (talk | contribs) (try this)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Note: After saving, 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: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
mw.hook('wikipage.content').add(function () {

// find the {{complete}} template
const notice = document.querySelector('.quality-complete')
if (!notice) return;

const button = document.createElement('button')
button.textContent = 'Mark as Reviewed'
button.onclick = mark_article_as_complete

// find the message to replace with a button
notice.querySelector('.unsigned').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 (revision) {

return {
  // find {{complete}} and replace with {{complete|~x4}}
  text: revision.content.replace( '{{complete}}', '{{complete|[[User:Fbstj|Joe ST]] ([[User talk:Fbstj|talk]]) 11:39, 2 August 2019 (UTC)}}' ),
  summary: 'mark as complete',
 }

}).catch(console.warn).then(function (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 the user that it worked
    mw.notify('Article marked as complete?')
    console.warn('gadget:', 'tag-complete-button', 'tagged')
  })
})

}