MediaWiki:Gadget-Arcanum-autofill-page.js

From The Coppermind
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.
// 2018-08-22 auto-generate Cite:Arcanum pages for wob ref template

mw.hook('wikipage.editform').add(function Arcanum_autofill() {
  // determine if this page is editing a Cite: Arcanum page
  const edit_box = document.querySelector('#editform textarea');
  // check that there is an edit box
  if (!edit_box || mw.config.get('wgCanonicalNamespace') !== 'Cite') return -1;
  // check that it's a page creation
  if (mw.config.get('wgArticleId') != 0) return -2;
  // check that it's an Arcanum page
  const page_name = mw.config.get('wgPageName');
  if (!page_name.startsWith('Cite:Arcanum-')) return -3;
  console.warn('gadget:', 'Arcanum-autofill-page')
  // work out the api url
  const entry = page_name.split('-')[1];
  const url = 'https://wob.coppermind.net/api/entry/'+ entry +'/';
  // start fetching from Arcanum
  fetch(url)
    .then(function fetch_to_json(resp) { return resp.json() })
    .then(function add_arcanum_entry_info_to_page(json) {
  if (!json || !json.event) { return; }
  // the arcanum-entry-info tag
  const tag = '<'+'arcanum-entry-info date="'+ (json.date || json.event_date) +'" event="'+ json.event +'">'+ json.event_name +'<'+'/arcanum-entry-info>';
  // the rest of the page
  const page = tag +"<noinclude>\n\n== Users ==\n\{\{Special:WhatLinksHere/\{\{FULLPAGENAME}}|}}\n[[cate"+"gory: generated citations]]\n";
  // only fill in the edit box if it is currently blank
  if (edit_box.value == '') {
    edit_box.value = page;
    console.warn('gadget:', 'Arcanum-autofill-page', 'filled')
    wpSummary.value = 'imported from ['+'[wob: '+ entry +']]'
    // preview the page
    document.querySelector('[name="wpPreview"]').click()
  }
    })
})