Technical communications/Status helper


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


  • 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