Flow/Hide spec

Sept 12, 2014: Here's a new spec for a revamp of the "Hide topic" function on Flow. Come talk with us about the pros & cons here: Hide - updated version spec. The related "Hide post" function spec coming soon.

Note: Wireframes are not mockups -- they express a rough approximation of the layout, so that it can be easily understood and discussed on a spec. That is not the actual font that we will use. :)

Use cases and rationale
The core use case for Hide is:


 * A bad-faith user posts a topic on a Flow board that's inappropriate, and shouldn't be on the board -- because it's spam, vandalism, abuse, off-topic, breaking the written or unwritten guidelines of the page.
 * Another user sees the bad topic, and removes it from the board, so that other readers and contributors don't see the offensive/inappropriate conversation when they visit the page.
 * The hidden topic needs to still be accessible through history and contributions, so that a user who's stopping vandalism can investigate what else the vandal has done on the wiki.
 * The person who started the conversation should be notified that their topic was hidden, so they can learn from their mistakes, or follow up if they don't understand why it was hidden.

We also have to consider the flip side of this situation, where the bad faith action is Hiding a good topic.


 * A bad-faith user decides to mess up a Flow board by Hiding worthwhile topics.
 * Another user needs a way to access the hidden topics, and restore them to the page.

Hiding a topic
There are four ways to hide a topic:
 * Board page -- Dropdown menu
 * Topic page -- Dropdown menu
 * Board history -- Hide appears next to "created new topic" items, Restore next to hidden items
 * Contributions -- Hide appears next to "created new topic" items, Restore next to hidden items

Board page

 * Dropdown menu -- choose Hide topic. Modal comes up, as current.
 * Type your reason in the modal, click Hide
 * Change is reflected in board history, contributions, recent changes, watchlist, notifications, as per below.

Confirmation and undo
For the Hider: Topic is replaced on the page with a box that says: "This topic has been removed. (Undo)". This only appears for the hider, and it will disappear on the next page refresh.

If the Hider clicks Undo in the box, the topic restores immediately, without the need for a modal dialog or typing a reason. The restored topic returns to the board page. Both actions (Hide and Restore) are reflected in the board history.



Hidden topic is off the page
When the topic is hidden: on the next page refresh, the hidden topic does not appear on the board page, for anyone. There is no trace of it.



Topic page

 * Dropdown menu -- choose Hide topic. Modal comes up, as current.
 * Type your reason in the modal, click Hide
 * Topic no longer appears on the board page.
 * Change is reflected in board history, contributions, recent changes, watchlist, notifications, as per below.
 * Unhide in dropdown menu opens the modal -- type a reason -- the Topic page goes back to normal.

Changes to the Topic page for a hidden topic
The hidden topic can still be viewed on the Topic page, which can be accessed through links in the board history, contributions and notifications.

The following elements are different on a Topic page for a hidden topic:


 * Two extra lines are added:
 * Flag icon - This topic was hidden by User name
 * Reason: Edit summary from modal


 * Reply links, Edit links and Entry field are removed


 * Topic is always uncollapsed, as usual on the Topic page.



Board and topic history
Hide option appears in the history for Create Topic items and Restored Topic items.


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) created the topic "Topic title" . . (+99) (hide)


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) restored the topic "Topic title" (Reason for restoring). . (0) (hide)

Restore option appears in the history for hidden Create Topic items and Hidden Topic items.


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) created the topic "Topic title" . . (+99) (restore)


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) hid the topic "Topic title" (Reason for hiding) . . (0) (restore)

Clicking on "hide" or "restore" from history opens the modal dialog for edit summary.

Completing the modal refreshes the history page. Reloaded page reflects the updated items.

Contributions
Hide option appears in contributions for Create Topic items and Restored Topic items.


 * 12:00, 01 January 2099 (diff|hist) . . (+99) . . Topic title on Talk:Board name (hide)


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) restored the topic "Topic title" (Reason for restoring). . (0) (hide)

Restore option appears in the history for hidden Create Topic items and Hidden Topic items.


 * 12:00, 01 January 2099 (diff|hist) . . (+99) . . Topic title on Talk:Board name (restore)


 * 12:00, 01 January 2099 . . (0) . . Username (talk|contribs|block) hid the topic "Topic title" (Reason for hiding). . (0) (restore)

Clicking on "hide" or "restore" from contributions opens the modal dialog for edit summary.

Completing the modal refreshes the contributions page. Reloaded page reflects the updated items.

Other functions
I think these other functions are unchanged by the new Hide system. Please let me know if I've forgotten to take something into account.


 * Watchlist
 * Recent changes
 * Echo notifications
 * Email notifications

Hiding a comment
There are three ways to hide a comment:


 * Board/Topic page: Dropdown menu
 * Board history: Hide appears next to items about comments, Restore next to hidden items
 * Contributions: Hide appears next to items about comments, Restore next to hidden items

Board and Topic page

 * Dropdown menu on the individual comment -- choose Hide. Modal comes up, as current.
 * Type your reason in the modal, click Hide
 * Hidden comment is replaced with confirmation/undo notice.
 * Change is reflected in board history, contributions, recent changes, watchlist, notifications as per below.



Confirmation and undo
For the Hider: Post is replaced on the page with a notice that says: "This comment has been removed. (Undo)" The confirmation notice will disappear on page refresh, and is replaced by the regular hidden notice (see below).

The entire original comment is removed from the page -- the user name, message, Reply links, time stamp, and dropdown menu.

If the Hider clicks Undo in the confirmation notice, the comment restores immediately, without the need for a modal dialog. The comment appears on the page as normal. Restore action is reflected in the board and topic history, with the edit summary (undo hide).

No-JS: Don't show the confirmation box. Hiding a comment refreshes the page, and the hidden comment does not appear on the refreshed page.



Hidden comment is off the board and the topic page
When the comment is hidden, there's a notice in its place:

This comment was hidden by User name (with timeago for when the comment was hidden).

User name is a link to the user page of the user who hid the comment.

There is no other trace of the hidden comment. The message is not collapsed, and the text is not clickable (except the user name link).

Not displayed: the user name of the person who wrote the hidden comment, the dropdown menu, the reply links, and the timestamp for the original comment.

The hidden comment is only accessible through links in history and contributions.



NOTE: There is one place where the hidden comment will be accessible through this collapsed, clickable interface -- the "hidden comment" topic page, described below.

Seeing the hidden comment
The hidden comment is not accessible from the board page or from the regular topic page. To see a hidden comment, you have to click through a link from either history or contributions.

The link to the "hidden comment" topic page is included in log items about the hidden comment. The link leads to a URL with the form Topic:UUID#flow-post-PostUUID. This URL shows a Topic page, with the hidden comment highlighted with a green bar. (See the screenshots below.) The default state when you open this page is that the hidden comment is collapsed and hidden; the user needs to click on that toggle to see the hidden message.

NOTE: The functionality described in this subheading already exists in Flow. However -- in the new system, this will be the only place where a user will have the old-style collapsed & clickable hidden messsage.





Hidden comments with diffs
If a comment has been edited and then hidden, the other way to see the hidden comment is to click on the (prev) link in topic history, board history and contributions, and go to the diff page. This already works as desired.



Board and topic history
Hide option appears in the history for Post Comment and Restore Comment items.


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) commented on "Topic title" . . (+99) (hide)


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) restored a comment on "Topic title" (Reason from modal). . (0) (hide)

Restore option appears in the history for hidden comment items.


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) hid a comment on "Topic title" (Reason from modal). . (0) (restore)

Clicking on "hide" or "restore" from contributions opens the modal dialog for edit summary.

Completing the modal refreshes the contributions page. Reloaded page reflects the updated items.

Contributions
Hide option appears in contributions for Comment items and Restored Comment items.


 * 12:00, 01 January 2099 (diff|hist) . . (+99) . . Topic title on Talk:Board name (hide)


 * (cur|prev|topic) 12:00, 01 January 2099 . . Username (talk|contribs|block) restored the topic "Topic title" (Reason for restoring). . (0) (hide)

Restore option appears in the history for hidden comment items.


 * 12:00, 01 January 2099 . . (0) . . Username (talk|contribs|block) hid a comment on "Topic title" (Reason for hiding). . (0) (restore)

Clicking on "hide" or "restore" from contributions opens the modal dialog for edit summary.

Completing the modal refreshes the contributions page. Reloaded page reflects the updated items.