Extension:MassMessage/Page input list improvements

From mediawiki.org

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[edit]

Currently, 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[edit]

The 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[edit]

Planned schedule[edit]

Week 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[edit]

See also[edit]