a8n: Allow creating campaigns as "drafts"
Created by: mrnugget
This is part of RFC 36.
Here is the description of what creating a campaign as draft includes:
- A campaign can be created as a "draft".
- A draft campaign can be "marked as ready", which will cause all of its changesets to be pushed/created to the code host and will permanently transition it to non-draft status.
- A non-draft campaign can't be transitioned back to a draft campaign.
- A draft campaign shows previews of the diffs, changesets, and participants of the campaign in the normal campaign management UI (not just in the "create campaign" screen).
- Any individual changeset in a draft campaign can be pushed/created on the code host by clicking the changeset's "Create" button in the campaign's list of changesets.
- This means a draft can contain both preview and non-preview changesets.
- Customer note: This allows customers to gradually roll out a campaign, which is desirable to iron out problems with a smaller group before pinging hundreds/thousands of teammates.
Note: This has nothing to do with creating pull requests as "drafts" on GitHub.