Skip to content

Playlists #125

@mikedawson

Description

@mikedawson

Jenkins Status

As a teacher I want to be able to re-use template assignment schemes of works playlists so that I can easily find appropriate assignments

Prototype draft

User flows:

  • Teacher or admin can create a new playlist or edit an existing playlist
  • Any user can get a link for a playlist
  • Teacher or admin can add a playlist from a link
  • Teacher or admin can add/remove/reorder sections to playlist
  • Teacher or admin can add/remove/reorder items in a section (can add lessons or link to another playlist)

Behaviour notes:

  • When in pick mode Single tap selects, long press triggers multi-select mode
  • Playlist sharing options are:
    • Who can view: Anyone with the link, anyone in my school, teachers and admins in my school, admins in my school
    • Who can edit: Teachers and admins in my school, admins in my school
  • Assignment list screen: for students, the score displayed is the average of completed activities that have a score
  • When moving items between sections in edit playlist:
    • The user can only move items from one section to another section if the type matches (eg playlist items to other playlist sections, learning items to other learning item sections)
    • The move popup will only display if there is another suitable section to move an item to
    • The dialog showing sections to move an item to will only show suitable sections, and will not the section the item is already in.
    • If a user clicks the assign button at the top of the playlist (quick action button) then the new assignment should be pre-populated with all learning items, not any playlists. Playlists on their own cannot be assignment tasks.
    • The assign button should only be visible if there are assignable learning items (items, not playlists).
  • Playlist filter chips: My playlists - those the user
  • Playlist edit: reordering : sections can be reordered as a whole section. When moving the section, all its items move with it. Items within a section can be reordered within the section. They cannot be dragged/dropped to other sections.
  • Playlist detail: the assign button should be visible when there are learning items or learning item sections (publications in the OpdsFeed).

Implementation notes:

  • Start from the branch dev-playlist-datastore
  • The playlist edit, detail, etc must use the OpdsFeed model class directly.
  • My playlists: should be those playlists that are created by the user. The OpdsFeed/OpdsFeedMetadata class has an author field.
  • The owner of the Playlist (OpdsFeed) should be identified using a link relationship e.g.
{
metadata: ..
links: [
 {
   rel: "https://respect.ustadmobile.com/ns/owner",
   href: "https://school.example.org/user/username"
 }
]
}
  • Same approach should be taken for the list of grades and subjects. @mikedawson to specify.
  • A playlist section is based on an OpdsFeed group (links to other playlists are a navigation section, links to learning items directly is a publication section). See Example 2 in OPDS group spec
  • The Playlist screen (e.g. "English week 1" as per prototype) should be based on the current LearningUnitList screen.
  • All screen and viewmodel names should be using the word Playlist e.g. PlaylistDetail PlaylistEdit. The data model will continue to use the terms from the Opds specification.
  • The PlaylistEdit screen UiState must have the OpdsFeed object on it's on UiState. Previous data models (previously called curriculum mapping ) should be removed.
  • PlaylistEdit: Must use nested reordering e.g. One Reorderable list (top layer) for the sections. Each section has its own reorderable.
  • Share playlist: the link to share should be using the existing respect_link format (as done with invites). The HTML that comes back from this link should include a link tag that goes to the actual OPDS (@mikedawson to add further docs).

Metadata

Metadata

Labels

CSuggestionP1High priority issuePrototypeReadyHas clear and unambigous prototype sufficient for end-to-end test development and software itself.ReadyForPrototypeHas a user story and list of tasks that user should be able to complete.

Type

No type
No fields configured for issues without a type.

Projects

Status
In Review

Relationships

None yet

Development

No branches or pull requests

Issue actions