openedx / openedx/frontend-app-authoring

Library: Bulk Publish Confirmation Step

Open
#2,798 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
17
Forks
218
Avg merge
9d 20h
Merged PRs (30d)
20

Description

Image

Figma link - shows full happy path flow.

Spec

Currently, pressing "Publish All" in a content library instantly publishes all content. This will add a staged approach to allow users to choose which objects to publish deliberately, emphasizing higher-level and lower-risk levels of publishing. This ticket may be broken down into sub-issues if helpful.

Important: bulk publish confirmations have a pending product call relating to #2779. If/when library sidebars include improvements made to outline/unit-level sidebars and avoid duplication, this ticket may need to be updated / restructured.

  1. Users clicking "Publish" at a library level see a new Bulk Publish view, pictured above.
  2. Objects are grouped at the top-level within each tab (see more detail below).
  3. Objects can be viewed in detail in the sidebar / transiently selected by clicking the card anywhere except the "Select" button.
  4. Clicking the "Select" button checks the box and adds the item to the publish set.
  5. The publish confirmation sidebar shows the set of objects added to the publish set through direct selection (not descendants).
  6. The publish confirmation sidebar also shows direct or indirect course references to the objects selected.
  7. The transient selection object details sub-view within the sidebar does not allow editing any properties.
  8. On click, the publish button shows a loader, navigates back to the library browse view, and then displays a toast message about the publish status.

Grouping Logic

The groups are defined as:

  1. My Contributions: shows objects that have only been changed by the user since they were last published, grouped to the highest level.
  2. Shared Drafts: shows objects that have been changed by the user and/or other users since they were last published, grouped to the highest level (including changes from other users).
  3. All drafts: shows all edited objects, grouped to the highest level.

E.g. for a U1 that Braden renamed, that contains separate components, C1 edited since publish by Eddie and C2 edited since publish by Sam (with no other changed library objects):

  • For Braden, U1 would appear under Shared Drafts and All Drafts, but not My Contributions. No other items would appear on any tab.
    • If, at this point, Eddie published C1 and Sam Published C2, then U1 would then show under My Contributions for Braden (since it does not include anyone else’s contributions anymore).
  • For Eddie, C1 would appear under My Contributions. U1 would appear under Shared Drafts and All Drafts.
  • For Sam, C2 would appear under My Contributions. U1 would appear under Shared Drafts and All Drafts.

In Scope

  1. Publish confirmation flow

Not in Scope

  1. Sidebar improvements from libraries (may need to restructure this ticket depending on product delivery timeline).
  2. Course reference implementation itself: falls under #2801

Related Issues

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the Figma happy path and related issues #2779, #2799, and #2801 before defining the work; the issue names no source files or tests. Confirm the pending product decision and break the publish confirmation flow into implementable pieces, with completion covering the grouping, selection/sidebar, publish navigation, and status toast behavior described in the spec.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.