Story 1: Admin can prevent a user or IP from editing one or more specific pages
- On Special:Block, add a section under the username/IP input box for Type
- The options should be two radio buttons with labels and help description text.
- The top radio button, which should be selected by default' should read Site-wide block. When a block is saved with this selected, the block should behave exactly as it does today.
- The second radio button should read Partial block. When selected, a TagMultiselectWidget OOUI element should allow for admins to type up to 10 pages from which the user should be blocked from editing.
- Page blocks can only be set for existing pages.
- Validation should occur in the input field or via error message when the "block this user" button is pushed — whichever is simpler
- Pages can be from any namespace, the user must type in the namespace and colon (e.g. Template:Foobar)
- If a page is moved, the user should still be blocked from editing (e.g. block by page ID, not page name)
- Only one block per user (like it is today) — to update the block, admins will need to modify the block.
- Page blocks can only be set for existing pages.
Story 2: The block is logged and visible on wiki
- Block logs
- Should display everywhere the current block displays: user page, Special:Contributions, Special:Block, and Special:Log
- Log should include TIMESTAMP Admin-who-blocked (t|c|b) blocked BadApples (t|c) from editing the page(s) Foobar with an expiration time of N (reason) (unblock | change block)
Story 3: When the user attempts to edit the page, they should be notified.
- When a user attempts to edit an applicable page, they should see a new type of block warning message which include information on their block
- reason
- expiration
- blocking admin
- Modeled off of MediaWiki:Blockedtext, information that they are only blocked from that page, but can edit the rest of the wiki. (copy tbd)
- Should appear:
- For all supported editors on desktop web
- For all supported editors on mobile web
- API edits should also return an appropriate error message