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
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:

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
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

 * [//upload.wikimedia.org/wikipedia/mediawiki/e/ec/MassMessage_list_creation_mockup.png Mockup screenshot for list creation UI]
 * Rough interactive prototype of how the frontend UI might work

Progress reporting

 * /Progress reports