Versions Compared

Key

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

...

In the background, the Source Library is pinned to a particular Version. When a new version of the Source Library is published, the course author will be presented with the option of updating to it.

When the Source Library, its Version, or the Mode changes, the Children may need to be re-included into the Libraries component. This will erase any content customizations the course author has made to the individual Children, but will preserve any settings overrides they have made to them.

...

source library…if I change the pool, mode, or max_count… selection …if max_count greater than the size of the pool or is equal to selection the entire pool but its order will be random compared to other learners.…if max_count is from 1 to the size of the library, inclusive…

User stories

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

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

Works in…

V1?

V2?

if no source library 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 Source Library does not exist on the system…

TBD

if the source library Source Library exists on the system, but the specific version does not exist…

TBD

if I change the Source Library…

then the

TBD

Children will be re-included.

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 am in 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 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.

when the Children are re-included…

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

then the unit editor containing the library_content block will 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 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 change to the pool, mode, or max_count…after the Children have been re-included, the Mode has changed, or the Count has changed…

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

…then for each learner…

…if the block is in “include” Static mode…

then the learner’s selection Selection will equal the pool and its order will be the sameChildren, both in content and ordering.

…if the block is in “random” or “random-include” mode…

Randomized mode…

…and if Count equals -1…

…then the learner’s

Selection will contain

all included Children, in a random order.

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

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

then the learner’s selection will contain random set of max_count blocks from the pool in random order, different from other usersSelection be will a subset of the included Children of size Count, in a random order.

and if max_count is equal to 0…Count is zero…

…then the learner’s selection will be empty.

...and if the learner has an existing selection and I removed a block from the pool which was in the that selection… …then it Selection which contains components that are no longer included Children…

…then those components will be removed from their selection Selection and their selection will be shuffled.

…and if the learner has an existing selection and max_count Count is unchanged and max_count Count >= 0…

…then (TODO describe how blocks are kept if they can be)

…if the learner has an existing selection and the pool is unchanged and max_count is unchanged and max_count >= 0…

then the learner’s selection will not change and it will not be shuffled.

…if the learner has an existing selection and the pool is unchanged and max_count is unchanged and max_count >= 0…

…if the block is in “random-include” mode…

…then the learner’s selection only contain blocks from the pool.

…then TBD

…then for each learnerwith an existing selection…

...if I removed a block from the pool which was in the learner’s selection…

…then it will be removed from their selection.

if their selection does not satisfy max_count

…then it will be randomly filled with new blocks from the pool as needed.

if their selection does not need to change…

…then it does not change.

if their selection changes at all…

…then it is shuffled.

..

if I kept a block in the pool which was in their selection…

…then it should remain in their selection.

…TBD

if a user loads a courseware unit with my library_content block…

and if they do not have one already,

then a selection is established for them based on the library_content block’s configuration.

…TBD

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 the content of the blocks in the pool will be updated with the content from the latest library version.

and if I have edited the content of any of the blocks in the pool…

then my content edits will be overwritten.

and if I have overridden the settings of any of the blocks in the pool…

then my setting overrides will be preserved.

and if any blocks in the pool have been deleted from the latest library version…

then they will be deleted from the pool as well.

and if any new blocks have been added to the latest version of the source library…

and if the library_content block is in “random” mode…

then the new blocks will be added to the pool.

and if the library_content block is in “include” mode…

then the new blocks will not be added to the pool but they will be visible in the block selection dialog.

and if the library_content block is in “random-include” mode…

and if the block is in “random” mode…

and if max_count is -1

then any new blocks in the library will be added to every learners' selection.

and if max_count is greater than the number of items in the library…

and if max_count is less than the number of blocks in the library…

then if the block is in “random” mode and max_count is greater than the number of items in the library…

if I do something that adds blocks to the pool…

and if the block is in “random” mode…

TBD

…if I do something that removes blocks from the pool…

TBD

if course content is imported from OLX…

then for each imported library_content block…

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.

…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