{{{#!rst Direct subscription mock-ups ============================ Developing top-part of the mock-ups that relate to describing subscriptions and allow doing something regarding your non-structural subscriptions. https://dev.launchpad.net/LEP/BetterBugSubscriptionsAndNotifications/Testing/EditingRound2 "Control the email you receive about bug #XXXX" "Control the email your team receives about bug #XXXX" Subscription types ------------------ * Assignee ["You receive emails about this bug because you are assigned to work on it."] [Actions: mute, omit comments, or only see when bug closes.] * Direct/indirect * Directly subscribed ["You receive emails about this bug because you are directly subscribed to it." ...describe level...] [Actions: mute, change subscription level, or unsubscribe] * Directly subscribed as the reporter [use previous "directly subscribed" copy plus "This subscription was created when you reported the bug."] * Directly subscribed as the bug reporter on a private bug [use "directly subscribed" copy plus "This subscription may have been created because the bug was private and you are the bug supervisor."] * Subscribed from duplicate (primary looking at secondary or vice versa) * Directly subscribed ["You receive emails about this bug because you are a direct subscriber to all events on bug #23456, which is marked as a duplicate of this bug, #12345"] [Actions: mute duplicate, change subscription level of duplicate, unsubscribe from duplicate, mute this bug, omit comments from this bug, or only see when this bug closes] * Indirectly through team subscribed to a duplicate as team member ["You receive emails about this bug because you are a member of the team _$TEAM_. That team is a direct subscriber to all events on bug #23456, which is marked as a duplicate of this bug, #12345"] [Actions: mute this bug, omit comments from this bug, or only see when this bug closes] * Indirectly through team subscribed to a duplicate as team admin ["You receive emails about this bug because you are a member and administrator of the team _$TEAM_. That team is a direct subscriber to all events on bug #23456, which is marked as a duplicate of this bug, #12345"] [Actions: mute duplicate, change subscription level of duplicate, unsubscribe from duplicate, mute this bug, omit comments from this bug, or only see when this bug closes] * Indirectly through team as team member ["You receive emails about this bug because you are a member of the team _$TEAM_. That team is directly subscribed to it."] [Actions: mute for yourself, omit comments for yourself, or only see when bug closes yourself.] * Indirectly through team as team admin ["You receive emails about this bug because you are a member and administrator of the team _$TEAM_. That team is directly subscribed to it."] [Actions: mute for yourself, omit comments yourself, only see when bug closes yourself, mute for team, change subscription level for team, or unsubscribe for team.] * If the team subscribed is the bug reporter on a private bug [use the appropriate copy above plus "This subscription may have been created because the bug was private and the team is the bug supervisor."] * Structural/supervisor * Structural ["You might receive emails about this bug because you subscribe to one or more groups of bugs like this one."] [Actions: Mute, omit comments, only show closing, "View your subscriptions that may send you email about this bug" and work there] * Benji on it, though we need to handle the description * Supervisor: NOTE THAT THE BUG SUPERVISOR GETS A STRUCTURAL SUBSCRIPTION, AND DIRECT SUBSCRIPTIONS TO PRIVATE BUGS, SO THEY CAN BE MANAGED SEPARATELY. * No bug supervisor, you are the product owner ["You receive emails about this bug because you are the owner of ["the Mozilla Firefox project"], which has no bug supervisor."] [Actions: mute, omit comments, only show closing, "Set the bug supervisor of the Mozilla Firefox project."] * No bug supervisor, your team is the product owner and you are team admin ["You receive emails about this bug because you are the owner of ["the Mozilla Firefox project"], which has no bug supervisor."] [Actions: mute, omit comments, only show closing, "Set the bug supervisor of the Mozilla Firefox project."] * No bug supervisor, your team is the product owner and you are team member ["You receive emails about this bug because you are the owner of ["the Mozilla Firefox project"], which has no bug supervisor."] [Actions: mute, omit comments, only show closing] Overlaps ~~~~~~~~ Note that any of the following can overlap. There can be multiple overlaps. ("[*]" indicates that you may have multiple within the given category). * [*] (1 per task) assigned * direct subscription [as reporter or not] * [*] duplicate subscription * [*] team subscription [as admin or not] * [*] team duplicate subscription [as admin or not] * [*] structural subscription * [*] team structural subscription * [*] (1 per task) product owner with no bug supervisor We divide overlaps into two cases. * Overlaps with a direct subscription. These override everything else, so concentrate on them. Show normal direct subscription stuff as above except omit normal display of unsubscribe action, then "You can also _unsubscribe from bug #XXXX_. However, if you do so, there are other reasons you might still get emails about this bug. _View the other reasons that Launchpad may send you email about this bug._"] * Overlaps with no direct subscriptions. ["You receive emails about this bug for more than one reason."] [Actions: mute, omit comments, only show closing, "Click here to see all the reasons you get mail about this bug, and what your other options are."] In both cases, when showing the other reasons, these are the available options: * Assignee: no options * Subscribed from duplicate: give options on duplicate * Subscribed via team: give team options if team admin * Subscribed from duplicate via team: give options on duplicate, if team admin * Structural (self and team): (handled in that separate code) * Supervisor: set the bug supervisor for self and team admin Potential actions ----------------- * Mute — always present * ACTION: "Mute all email from bug #XXX" * DESCRIPTION: "You will receive no further email about the bug, but it will still show in the _list of your subscribed bugs_." * Change direct subscription level — directly, directly as reporter * ACTION: Change your subscription to bug #XXXX * DESCRIPTION: Change which events will trigger an email. * Add a a direct subscription level to override the subscription level — not directly. NOTE THESE ARE THE SAME OPTIONS AS ABOVE RIGHT NOW, AND MREVELL HAS NOT REVIEWED. * ACTION: Change your subscription to bug #XXXX * DESCRIPTION: Change which events will trigger an email. * Unsubscribe from the bug — directly subscribed, directly as reporter * WARNING: IF THIS IS A PRIVATE BUG, YOU ARE TAKING AWAY THE PRIVILEGES TO SEE THE BUG. * ACTION: Unsubscribe from bug #XXX * DESCRIPTION: You will no longer receive email about this bug. It will still show in the list of bugs you've reported. * Unsubscribe team from the bug — indirectly through team as team admin * ACTION: Unsubscribe $TEAM from bug #XXX * DESCRIPTION: This team will no longer receive email about this bug. This will not affect individual subscriptions made by team members. * Unsubscribe from duplicate — subscribed from duplicate * ACTION: Unsubscribe from bug #XXXX * DESCRIPTION: You subscribed to a bug that was later marked as a duplicate of another bug. You will receive no further email about this bug but you'll still receive email about the other bug. * Unsubscribe team from the duplicate — admin of a team subscribed to the duplicate * ACTION: Unsubscribe $TEAM from bug #XXXX * DESCRIPTION: You subscribed this team to a bug that was later marked as a duplicate of another bug. The team will receive no further email about this bug but will still receive email about the other bug. * Change team subscription level — indirectly through team as team admin * ACTION: Change $TEAM's subscription to bug #XXXX * DESCRIPTION: Change which events will trigger an email to this team. * Set the bug supervisor — no bug supervisor, you are the product owner * ACTION: Set $PROJECT's bug supervisor * DESCRIPTION: Choose an individual or team who will manage bug reports for this project. Nice-to-have Actions -------------------- * Disable all Launchpad bug notifications * Opt out of team subscription Rejected Actions ---------------- * Leave the team — indirectly through team as team member * ACTION IS OF QUESTIONABLE VALUE * ACTION: Leave $TEAM to unsubscribe from bug #XXXX * DESCRIPTION: By leaving this team, you'll no longer receive any bug mail related to it or have any of the privileges associated with this team. * Leave the team — member of a team subscribed to the duplicate * ACTION IS OF QUESTIONABLE VALUE * ACTION: Leave $TEAM to unsubscribe from bug #XXXX * DESCRIPTION: By leaving this team, you'll no longer receive any bug mail related to it or have any of the privileges associated with this team. * Change the bug supervisor — you are a bug supervisor, you are the product owner * ACTION IS OF QUESTIONABLE VALUE: Limit this to when you are directly (instead of through the team) the bug supervisor? Do not have this action? * ACTIONS: Chose another bug supervisor for $PROJECT * DESCRIPTION: You are currently this project's bug supervisor. Choose another person or team to take over from you. * Leave the supervisor team — you are member of a team that is the bug supervisor * ACTION IS OF QUESTIONABLE VALUE * ACTION: Leave $TEAM * DESCRIPTION: By leaving this team, you'll no longer be one of the project's bug supervisors or have any of the privileges associated with this team. * Stop being the supervisor — you are the bug supervisor, you are not the product owner * ACTION: Resign your role as $PROJECT's bug supervisor * DESCRIPTION: You'll no longer receive email related to the bug supervisor role and the project will not have a bug supervisor. Plan of attack -------------- 1. Start providing all the properties on the view that allow one to determine what type of description/action will be needed 2. Implement description 3. Implement actions }}}