Technical communications/Status helper

Adding a new status update

 * Users can add a new status update by clicking a link.
 * When clicking the link, a set of information and controls are shown in a modal overlay:
 * the name of the activity to which the user is adding a status update, with a link to it;
 * the date to use for the status update, prefilled with the current date from the server;
 * a checkbox to decide if the status is a monthly summary to use in the monthly report;
 * a free-form text field for the actual update;
 * a preview button;
 * a publish button.
 * Users can preview their status update in the overlay before publishing it.
 * This adds an item to the overlay: the preview.
 * If the user is adding a status update while on a monthly report page, the "monthly summary" checkbox is already checked.
 * When the "monthly summary" checkbox is checked, the date used is "YYYY-MM-monthly" instead of "YYYY-MM-DD".
 * When saving the page, the information entered is formatted with the following template before being posted to the page:

$date
$text

Last update on: $date
 * When saving the page, the "latest" field at the top of the /status subpage is changed to the status' date, if it's more recent.
 * Once the page is saved, the pages where the status is transcluded (available through ) are purged to show the new status.

If the /status page doesn't exist yet
The interface presented to the user is the same, and the behavior is similar, except the first line of the page needs to be added before the update: Last update on: $date

Editing an existing status update

 * Users can edit an existing status update by clicking a link.
 * When clicking the link, a set of information and controls are shown in a modal overlay, identical to those displayed for a new update, but with more fields prefilled:
 * the date is the date of the existing update instead of the current date;
 * the free-form text field contains the existing text;
 * the preview shows the existing status.

Handling conflicts

 * If the date used for a new update conflicts with an existing update (same date, or existing monthly summary):
 * Display a heads-up;
 * Display the existing status in the preview area;
 * Offer to:
 * replace the existing status (the new status overwrites the existing status);
 * amend the existing status (the free-form text field is reloaded with the existing status; this is the same as canceling and opening the existing status for editing);
 * cancel (the existing status remains).

Template features needed
In order to have inline edit/add links, it would be very helpful to have spans around content: I am a thing!

For purposes of this example, the following data will be used:
 * example project name: "Example project"
 * example project page: "Project/Example"
 * example project status page "Project/Example/status"
 * example department: "Generic Engineering"

Here is the list of span attributes we need


 * Around the text of the status updates :
 * class="mw-statushelper-entry"
 * data-statuspage="Project/Example/status"
 * data-entrydate="2012-06-02"
 * Around the "add" link:
 * class="mw-statushelper-addlink"
 * data-statuspage="Project/Example/status"
 * Around the "edit" link:
 * class="mw-statushelper-editlink"
 * data-statuspage="Project/Example/status"
 * data-entrydate="2012-06-02"
 * On each entry on the department page (used for constructing an accurate list of projects)
 * class="mw-statushelper-project"
 * data-projpage="Example/Project"
 * data-projname="Example project"
 * data-statuspage="Project/Example/status"
 * data-projdept="Generic Engineering"
 * To determine if the project is backburnered or complete: see if it's in a collapsed table

Someday

 * Ability for users to specify their followed activities (à la watchlist)
 * Followed activities can be accessed through a dedicated page, where users ca add new status updates
 * If a user is defined as a member of the activity's team, the activity is automatically added to the user's list of followed activities