User:JPxG/SPS

From Wikipedia, the free encyclopedia
Signpost Publishing Script
DescriptionAutomates Signpost publication steps
Author(s)Evad37
Version2.4.2
Updated7 August 2023 (history)
Skin support
  • Vector
  • Monobook
  • Modern
  • Cologne Blue
  • Timeless
  • MinervaNeue
Source

Signpost Publishing Script (source) – automates the many, many steps in publishing the Signpost, as described at Wikipedia:Wikipedia Signpost/Newsroom/Resources#Publication. Forked from User:Evad37/SPS.js.

Installation[edit]

Add the line {{subst:lusc|User:Evad37/SPS.js}} to Special:MyPage/common.js.

But note that this script will only work for users specified in the source code. Evad37, or any interface administrator, can add (or remove) approved users – generally, this should only be the editor(s)-in-chief and the publication manager(s).

Also, this script assumes users have the following permissions - please request them if you do not already have them.

  • Page mover (or administrator) on English Wikipedia
    • This ensures redirects are not left behind when moving pages during publication.
  • Template editor (or administrator) on English Wikipedia
  • Mass message sender (or administrator) on English Wikipedia
    • This allows posting the Signpost on the talkpages of English Wikipedia subscribers.
  • Mass message sender (or administrator) on Meta
    • This allows posting the Signpost on the talkpages of subscribers on other projects.

Usage[edit]

On the Wikipedia:Wikipedia Signpost/Newsroom or Wikipedia:Wikipedia Signpost/Newsroom/Coordination page you'll get a "Publish next edition" link, in the "More" dropdown (Vector skin) or on a tab (Monobook skin) at the top of the page.

Before starting make sure that all the articles are ready to go, are subpages of Wikipedia:Wikipedia_Signpost/Next_issue/ (so the script can find them), and have a completed {{Signpost draft}} template (so the script can grab the title and blurb). If the {{Wikipedia:Wikipedia Signpost/Templates/RSS description|1=}} template is missing or blank, the script will use "[title]: [blurb]" for the RSS description. If the {{Wikipedia:Signpost/Template:Signpost-article-comments-end|||}} template is missing or does not have a previous issue date specified, the script will attempt to find the previous issue and fill it in.

Once you click on the "Publish next edition" link, you'll get a few interface screens where you:

  • choose to get started with publishing for real, or do a "dry run" simulation where no edits/moves are made
  • select which pages are to be published
  • adjust the order (as used for the main Signpost page, single page edition, etc), and adjust the titles & blurbs if needed

Then, if everything goes right, you can just click the "Publish" button to do all the on-wiki publishing tasks (i.e. everything apart from announcing on the email list, Twitter, and Facebook).

Screenshots[edit]

Initial screen.


Select articles to publish. Only the ticked articles will be published; the unticked articles will not be touched.


Adjust the order of sections by clicking drag-and-dropping with the mouse.


Publication progress screen. The current task is highlighted in blue. Some tasks take longer than others.


Simulated (dry-run) publication completed. The main page and the mass message can be previewed, and their wikitext shown, by clicking on the buttons.


Internal documentation[edit]

The following is an explanation of the internal structure of the script, how it works, and how it can be modified. It is intended for maintenance, upgrades and bugfixes: if you are just using the script, ignore this section.


Here is a summary of what each major block of code in the Signpost publishing script does:

  • Dependencies and initial checks:
    • Loads required modules like the API and extra utilities
    • Checks if the user is on the Signpost Newsroom page, and if not, exits
    • Checks if the user is an approved publisher, and if not, exits
    • Sets up script version, API config, and clears caches
  • Styles:
    • Adds CSS styles for the dialog interface
  • Utility functions:
    • Caching functions to store/retrieve data in localStorage
    • Timeout and promise reflection helpers
    • getFullUrl to build URLs
    • approxPageSize to estimate page size
    • removeHtmlComments to strip comments from wikitext
  • Overlay dialog:
    • Classes to implement overlay dialog windows with preview toggle
  • Main dialog:
    • Classes to build the multi-panel main dialog interface
    • Functions to initialize panels, set their content, process state on navigation
    • Helper functions to get data from panels
    • Process actions when buttons are clicked
    • Publishing steps implementation
    • Task status tracking
  • API wrappers:
    • FakeApi class that logs edits instead of making them, for dry run mode
    • Preview helpers
  • Pre-publishing tasks:
    • Get article titles, previous issue dates, and article info
  • Publishing tasks:
    • Functions to execute the steps of the publishing process, like creating pages, editing articles, moving them, mass messaging, etc.
  • Portlet link
    • Adds a "Publish next edition" link to open the dialog