Behavior of the status helper

edit

Adding a new status update

edit
  • 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 ==

<section begin=$date/>$text<section end=$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.
Last update on: <section begin=latest />$date<section end=latest />
  • Once the page is saved, the pages where the status is transcluded (available through Special:WhatLinksHere/$activitypage/status&hidelinks=1&hideredirs=1) are purged to show the new status.

If the /status page doesn't exist yet

edit

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: <section begin=latest />$date<section end=latest />

Editing an existing status update

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

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

Pushing status updates to a feed

edit
  • ...

Template features needed

edit

In order to have inline edit/add links, it would be very helpful to have spans around content:

<span class="foo" data-bar="thing" data-baz="another thing">I am a thing!</span>

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

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