User:JPxG/SPS
Description | Automates Signpost publication steps |
---|---|
Author(s) | Evad37 |
Version | 2.4.2 |
Updated | 7 August 2023 (history) |
Skins |
|
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
- Required to edit Wikipedia:Wikipedia Signpost/Templates/Issue, as of October 2021.
- 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