Skip to content

Copy tags when using content from a V2 Library in a Course #177

Closed

Description

@yusuf-musleh

"As a content author, when I import library content into a Course, I expect the tags to be copied over as well"

"As a content author, when I import library content into a course, I can add my own tags to that content."

Acceptance Criteria

For this discovery ticket, plan and estimate the implementation of the following:

  1. Tags that are added to a piece of content in a library stay with the content when it's imported to a course.
  2. Tags that were added from a library cannot be deleted from the course.
  3. Users can add new tags to library content when it is being used in a course, but those new tags don't sync back to the Library version of the content.
  4. When the piece of content is refreshed to use the latest version from the library, its tags will be refreshed as well (tags that were added to the library version get added to the course version; tags that were removed from the library version get removed from the course version; tags that were added to the content within the course are preserved unchanged).

This only applies to v2 Libraries ("Libraries Relaunch") based on Learning Core / Blockstore - not modulestore.

Implementation will be done in #193

Older Notes

This issue was split off from #165 since it is large enough and a lot of different cases that need to be thought through.

Related Slack thread: https://openedx.slack.com/archives/C03T0RZEASG/p1705345057688579

Main point to address:
If a problem is tagged "easy" in the library, and the tag comes with it when it's used in a course, can authors add additional tags? change or delete those tags from the library? And if so, do we need to keep their changes even after we "update" the content to a newer version (with updated tags) from the library?

i.e.:

  1. Do the tags of the library in the course need to be kept in sync with the changes to tags in the library itself.
  2. Can tags be added/updated/deleted from the library that is inside the course if they originated from the library itself?

Notes:

From a technical perspective, several simple options exist:

  1. Don't bring the tags with the content into the course;
  2. Bring the tags one time but let authors change them - future changes to the content's tags in the library won't propagate into the course;
  3. bring the tags from the library into the course and keep them in sync but don't let authors change/add tags in the course; or
  4. Change the UX so that in the course we display the "library tags" separately (and read-only) from the tags that the content has in the course. (So when you bring something into the course, it has no tags but the UI displays something like "Tagged in the library with: Tag 1, Tag 2". You can't edit those, but you can add tags normally like you can with any other component in the course.)
  5. Many other options exist, but they would be more work to implement than these "simple" options. Still a possibility though.

Activity

  1. changed the title [-][Tagging] Discovery: Copying tags when Importing from a V2 Library into a Course[/-] [+][Tagging] Discovery: Copying tags when using content from a V2 Library in a Course[/+] on Jan 17, 2024
  2. bradenmacdonald commented on Jan 17, 2024

    @bradenmacdonald
    Contributor

    This is blocked until we get some product input from users.

  3. jmakowski1123 commented on Jan 31, 2024

    @jmakowski1123

    What would it take to implement:

    1. Tags that are added to a piece of content in a library stay with the content when it's imported to a course.
    2. New tags can be added to Library content from the course. These tags don't automatically sync with the Library version of the content, but library authors are given the option to accept or deny course tags from the Library. [This could be de-scoped if needed for the MVP, I think.]
    3. Tags that were added from a library cannot be deleted from the course.
  4. bradenmacdonald commented on Jan 31, 2024

    @bradenmacdonald
    Contributor

    @jmakowski1123 1 and 3 are relatively easy. For 2, I think it would take quite a bit of work - changes both on the backend and all the required UX. I'd probably recommend de-scoping it at first until we get user feedback.

  5. jmakowski1123 commented on Feb 2, 2024

    @jmakowski1123

    Got it. What if 2 was limited to "Users can add new tags to library content when it is being used in a course, but those new tags don't sync back to the Library version of the content." Would that be an easier lift? Then the behavior for tags would follow the exact same pattern as the current behavior for changing Library content when it's being used in a course, ie changes can be made locally in the course but don't sync back to the Library.

  6. bradenmacdonald commented on Feb 7, 2024

    @bradenmacdonald
    Contributor

    @jmakowski1123 Yep, I think that's going to be a lot easier to implement.

  7. bradenmacdonald commented on Feb 7, 2024

    @bradenmacdonald
    Contributor

    @jmakowski1123 Let us know if you'd like to proceed with estimating & planning that ?

  8. jmakowski1123 commented on Feb 7, 2024

    @jmakowski1123

    Yes please!

  9. bradenmacdonald commented on Feb 8, 2024

    @bradenmacdonald
    Contributor

    @jmakowski1123 I added a fourth criteria as well - hope it makes sense. Let me know if you want any changes.

    When the piece of content is refreshed to use the latest version from the library, its tags will be refreshed as well (tags that were added to the library version get added to the course version; tags that were removed from the library version get removed from the course version; tags that were added to the content within the course are preserved unchanged).

  10. 10 remaining items

  11. changed the title [-][Tagging] Discovery: Copying tags when using content from a V2 Library in a Course[/-] [+]Copy tags when using content from a V2 Library in a Course[/+] on Oct 31, 2024
  12. ChrisChV commented on Nov 18, 2024

    @ChrisChV

    @jmakowski1123 @lizc577 @sdaitzman @marcotuts friendly reminder that this is ready for AC testing on the sandbox

  13. jmakowski1123 commented on Jan 7, 2025

    @jmakowski1123

    This is working as the AC tests are written. What would it take to either 1) make tags part of the draft-publish cycle 2) autosync tag changes in libraries to any place where the block is being reused. ?

    Also, what is the reason the page has to be refreshed in order to see any updated tag counts?

  14. bradenmacdonald commented on Jan 7, 2025

    @bradenmacdonald
    Contributor

    @jmakowski1123 Within a library, making tags part of the draft-publish cycle would be quite a big project. But if we're talking about using library content in courses, I think they are already kind of done like that, because the tags get synced whenever the content is synced (after publish -> sync into course). However, if you add a tag, publish the library component, then add another tag, when you go into the course you'll see an update is available but if you press sync it will pull in both new tags even though you only published after adding one tag.

    1. Isn't that the opposite of what you're asking for in 1? You want the tags to sync to the places where it's used, even if the author doesn't accept/sync the latest content changes? Or only if/when the author syncs the content changes?

    Also, what is the reason the page has to be refreshed in order to see any updated tag counts?

    Hmm, @ChrisChV now that the unit page is in the MFE, can we avoid the need to refresh? Or is the tag count still using the old UI?

  15. jmakowski1123 commented on Jan 9, 2025

    @jmakowski1123

    @jmakowski1123 Within a library, making tags part of the draft-publish cycle would be quite a big project. But if we're talking about using library content in courses, I think they are already kind of done like that, because the tags get synced whenever the content is synced (after publish -> sync into course). However, if you add a tag, publish the library component, then add another tag, when you go into the course you'll see an update is available but if you press sync it will pull in both new tags even though you only published after adding one tag.

    1. Isn't that the opposite of what you're asking for in 1? You want the tags to sync to the places where it's used, even if the author doesn't accept/sync the latest content changes? Or only if/when the author syncs the content changes?

    When I add a new tag to Library content in the library, I don't have the option to re-publish because the tags aren't part of the publish cycle. They are added to the library content immediately. But they will only sync to the course if there have been other changes made to that content that require publishing first. What would it look like to have the tags auto-sync to course content, regardless of whether there are other published changes or not? Or (?) to require a sync workflow when new tags are added.

  16. ChrisChV commented on Jan 9, 2025

    @ChrisChV

    Hmm, @ChrisChV now that the unit page is in the MFE, can we avoid the need to refresh? Or is the tag count still using the old UI?

    @bradenmacdonald I have tested this using the new unit page in the MFE and there is no need to refresh to show the new count.

  17. bradenmacdonald commented on Jan 10, 2025

    @bradenmacdonald
    Contributor

    @jmakowski1123

    What would it look like to have the tags auto-sync to course content, regardless of whether there are other published changes or not?

    That would be doable once we get the upstream-downstream tracking in place (i.e. Epic 8). There might be a slight delay in some cases but otherwise it could work exactly as you're describing. Just let us know if that's what you'd like instead of the current sync workflow. The other option is that after you change the tags, we "pretend" that you also changed the content so that the publish button is enabled and you can publish the component, and then sync those changes (just updated tags) into your courses manually.

  18. jmakowski1123 commented on Jan 10, 2025

    @jmakowski1123

    That would be doable once we get the upstream-downstream tracking in place (i.e. Epic 8). There might be a slight delay in some cases but otherwise it could work exactly as you're describing. Just let us know if that's what you'd like instead of the current sync workflow. The other option is that after you change the tags, we "pretend" that you also changed the content so that the publish button is enabled and you can publish the component, and then sync those changes (just updated tags) into your courses manually.

    openedx/frontend-app-authoring#1583

  19. bradenmacdonald commented on Apr 29, 2025

    @bradenmacdonald
    Contributor

    Since we have openedx/frontend-app-authoring#1583 for that remaining change, can we close this out?

  20. jmakowski1123 commented on Apr 29, 2025

    @jmakowski1123

    I added 1583 to the bug list

  21. moved this from Ready for AC testing to Done in Libraries Overhaulon Apr 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions