Extension:MassMessage/Page input list improvements
This was a project completed as part of Google Summer of Code 2014 to use JSON, instead of wikitext pages containing parser functions, to store MassMessage delivery lists, and to create a UI for managing them. It was worked on by wctaiwan under the mentorship of Legoktm and Prtksxna. This page contains the original plan for the project and some related links.
Synopsis
editCurrently, the extension reads the list of pages to which a message should be delivered from a wikitext page containing a list of parser functions in the following format:
{{#target:Project:Noticeboard|en.wikipedia.org}}
This is not user friendly, and also technically undesirable since there is no enforced structure for the pages. This project seeks to implement a ContentHandler-based backend to replace the current system, and to create a usable frontend for managing the lists stored using the new backend. The resulting product will make managing lists easier, and separate the implementation details of the extension (currently, the use of parser functions) from its use.
Deliverables
editThe minimum viable product consists of the following components:
- A JSON-based ContentHandler backend for storing destination lists
- Probably using the data structure at Extension:MassMessage/Spamlist_revamp
- An interface (probably a special page) for creating destination lists
- It should support cloning an existing list and constructing a list from a wikitext page using the parser functions.
- An interface for making bulk modifications to a destination list
- Similar to Special:EditWatchlist/raw: The list should be alphabetized, allow arbitrary additions and deletions and automatically remove duplicates on save.
- Modifying the current message delivery code to support the new backend
Beyond those, the project also includes implementing the following features:
- A JavaScript / jQuery-based frontend for manipulating the lists allowing efficient insertion and deletion
- A non-JavaScript-based fallback for the above
Optional deliverables include:
- An API for users to add / remove their own talk pages from a destination list
- Autocomplete when adding pages to a destination list
Mockups
editPlanned schedule
editWeek of | Task | Notes |
---|---|---|
(Prior to May 19) | Familiarise myself with MassMessage's codebase | |
May 19 | Investigate how to work with ContentHandler | |
May 26 | Write backend and tests for backend functions | |
June 2 | ||
June 9 | Work on functions and UI for list creation and bulk manipulation | |
June 16 | Modify MassMessage to work with new backend | Patchset |
June 23 | Write unit tests for message delivery using the new backend | Patchset |
June 30 | Work on new JavaScript UI for adding / removing items | |
July 7 | Work on non-JavaScript-based fallback UI | Patchset |
July 14 | Work on allowing users to add / remove their own talk pages from lists | Patchset |
July 21 | Fix bugs and make improvements based on code review (have the code merged and deployed) and update documentation | |
July 28 | ||
August 4 | Work on adding autocomplete to the JavaScript UI | Patchset |
August 11 | Wrap up any remaining work |
Progress reporting
editSee also
edit- Patches related to the project on Gerrit
- Source code on GitHub
- Extension:MassMessage/Spamlist revamp: Proposed improvements that led to this project
- Original proposal for the project
- Summary e-mail at the end of the project