Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

the block’s pool should contain the exact set of blocks specified in the OLX using the block content defined by the OLX, regardless of:

  • whether children of this library_content block were added to, removed from, or edited in the destination course before import;

  • whether this library_content block existed at all in the destination course before import;

  • whether blocks were added to, removed from, or edited in the source library at any version;

  • whether the source library exists at all on the destination instance

    User stories

    Start here, and then read the cells left-to-right:

    As a course author using a Libraries component in their course…

    Works in…

    V1?

    V2?

    if no Source Library is chosen…

    then the user will see a message telling them to choose a library, and clicking it will bring them to the block’s settings editor.

    if I choose a Source Library…

    if the Source Library does not exist on the system…

    TBD

    if the Source Library exists on the system, but the specific Version does not exist…

    TBD

    if I change the Source Library…

    then the Children will be re-included (see below).

    if a new Version of the Source Library is available…

    …then my library_content block will give me the option of updating to the latest library version.

    if I select to update to the latest Source Library Version….

    then it will will silence the update prompt until the next Source Library Version is available.

    then Children will be re-included (see below).

    if I import OLX into the course…

    then for each imported Libraries component

    the component’s Children should contain the exact set of blocks specified in the OLX and should use the the block content defined by the OLX, regardless of whether:

    • the Children of this Libraries component were added to, removed from, or edited in the destination course before import;

    • this Libraries component existed at all in the destination course before import;

    • components were added to, removed from, or edited in the Source Library at any version;

    • the Source Library exists at all on the destination instance.

    if the OLX contains a library default settings document for this Source Library…

    (Later feature; not applicable to the initial V2 launch!)

    then for each Child component, it should…

    • get its default settings from the document, and

    • get its setting overrides from OLX of the Libraries component.

    ..if the OLX does not contain a library default settings document for the Source Library…

    (Test this one--it will be the case for all OLX imports in the initial V2 launch.)

    then if the Source Library exists on the instance…

    then for each Child component, it should…

    • get its default settings from the Source Library, and

    • get its setting overrides from OLX of the Libraries component.

    then if the Source Library is missing from the instance…

    then for each Child component, it should…

    • get its default settings from the platform-defined XBlock defaults (which are likely to seem wrong to the course author!), and

    • get its setting overrides from OLX of the Libraries component.

    …if the source library exists on the destination instance with the right version…

    TBD

    …if the source library exists on the destination instance but the right version doesn’t…

    TBD

    …if the source library does not exist on the destination instance…

    TBD

    when the Children are re-included…

    then the updated Children will be visible in the Libraries component detail page, by clicking “View”.

    then the unit editor containing the Libraries component will indicate that the block has unpublished changes.

    then no learner’s Selection will be changed until the unit containing the Libraries component is published.

    and if I have edited the content of any of the existing Children…

    then my content edits will be overwritten.

    and if I have overridden the settings of any of the existing Children…

    then my setting overrides will be preserved.

    and if any of the existing Children no longer exist in the current Version of the Source Library…

    then they will be removed.

    and if any of the existing Children no longer meet the criteria to be included (e.g., they no longer meet the Problem Type filter)…

    then they will be removed.

    and if this version of the Source Library contains new components…

    and if we are I am using Randomized Mode…

    then the new components will be included as Children.

    and if we are I am using using Static Mode…

    then the new blocks will not be included as Children, but they will be visible the next time the component picker is opened.

    if I am in using Static mode…

    then I cannot see the Problem Type or Count fields.

    and I change the Mode to Randomized…

    then the Children will be re-included, such that the entire library (filtered by Problem Type) is included.

    if I am in using Randomized mode…

    and I change the Problem Type…

    then the Children will be re-included, such that the entire library (filtered by Problem Type) is included.

    and I change the Count…

    …then the Children will not be re-included, as it is unecessary.

    and I change the Mode to Static…

    then the the library component picker dialog will be shown, starting with the entire library included…

    …and, based on the what the author picks, the the Children will be re-included.

    and I make any of the above changes (Problem Type, Count, or Mode)…

    …then the unit will not indicate that it has unpublished changes.

    …then the changes will not impact learners until published.

    if I change the Mode or Count settings…

    then the set of included Children will not be affected.

    then the unit editor containing the Libraries component will indicate that the block has unpublished changes.

    then no learner’s Selection will be changed until the block is published.

    if I publish a Libraries component in Static mode after either of the following have changed:

    • Mode

    • The list of included children (not included their contents or settings)…

    ...then the unit editor will no longer indicate that the unit has unpublished changes.

    …then for each learner, next time they load the Libraries component…

    …the the learner’s Selection will equal the Children, both in content and ordering.

    if I publish a Libraries component in Static mode after either of the following have changed:

    • Mode

    • Count

    • The list of included children (not included their contents or settings)…

    ...then the unit editor will no longer indicate that the unit has unpublished changes.

    …then for each learner, next time they load the Libraries component…

    …if Count equals -1…

    …then the learner’s Selection will equal the set of included Children, but in a random order.

    …if Count is greater than the number of included Children…

    if Count is greater than zero and less than the number of included Children…

    then the learner’s Selection be will a subset of the included Children of size Count, in a random order.

    and if the learner has an existing Selection containing components which still exist in the included Children…

    then those previously-selected components should remain in the Selection, unless it would make the Selection larger than Count, in which case the appropriate number of them should be randomly removed.

    if course content is imported from OLX…

    then for each imported library_content block…

    .

    …if the OLX contains a library default settings document…

    …then blocks in the pool should calculate settings from the defaults from the document plus overrides from library_content in the OLX.

    ..then if the OLX has no library defaults document…

    …then if the source library exists on the instance, then library_content block’s pool should calculate settings as the defaults from the source library’s blocks plus overrides from the OLX.

    …then if the source library is missing from the instance, then the library_content block’s pool should calculate settings as the platform-defined XBlock defaults plus overrides from the OLX.

    …if the source library exists on the destination instance with the right version…

    TBD

    …if the source library exists on the destination instance but the right version doesn’t…

    TBD

    …if the source library does not exist on the destination instance…

    TBD

    TBD