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.

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

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