Feature Wiki

Information about planned and released features

Tabs

Introducing Learning Sequence Object

1 Initial Problem

To implement Arrange and Replay Learning Resources a new container object to represent the learning sequence is required.

2 Conceptual Summary

The new container object contains the objects that are presented to the user as a sequence of learning objects. All objects implementing the General Kiosk-Mode may be contained in the Learning Sequence. An author of the learning sequence may arrange the objects to create the desired sequencing and may also add postconditions to the objects that prohibit progression to the next object until a condition is met.

When first visiting the object, the user sees an overview of the complete sequence and an additional textual description of the content. He may then start the sequence and will see the contents of the contained objects withing the learning sequence, displayed by the kiosk mode. While progressing through the object he always sees an overview of the steps in the overall sequence and his status within these steps.

If a user is a member of a learning sequence, the sequence is displayed in a "My Learning Sequences"-section on the personal desktop, similar to the "My Courses and Groups". The user may also add the item to her "Selected Items".

On subsequent visits, the user may "Continue" the learning sequence which leads her to the object in the learning sequence she last visited. If she has the according permission, the user may also "Unsubsribe" from the learning sequence, which removes her from the members list and also removes the object from "My Learning Sequences".

Internally the Learning Sequence uses Let Containers decide on Availability for Sub-Objects to control the availability of the objects on the path. The new Introducing Content Page Object can be used to create pages between two objecs on the path. The rules when an individual object in the path is completed are determindes by the standard learning progress.

For administrators the object has a settings page that allows to make standard ILIAS-settings, set the textual description for the starting page and supports an offline-mode of the object. Members are managed via a "Members"-tab, similar to the courses "Members"-tab. Two local roles "Member" and "Administrator", together with the according role templates, are provided. The material in the container is managed via a specialized view that allows to determine the order and postconditions of the content objects easily.

2.1 Which permissions should the container have?

The container should have the following permission:

  • Copy
  • Visible
  • Edit
  • Read
  • Edit Permissions
  • Manage Members
  • Subscribe - Allows the user to "Start" the object and thereby become a member on its own. Otherwise the user may only start the object if she was added as a member by some administrator.
  • Unsubscribe - Allows the user to remove herself from the object and thus remove it from the Personal Desktop and the Selected Items

2.2 What is a postcondition, how does it relate to a precondition and how is it configured?

A postcondition does restrict the progression of a user through the learning sequence. Thus, instead of saying "You may only visit this object if you did this" like a precondition, a postcondition says "you may only leave this object if you did this". Technically, the postconditions for the learning sequence are implemented via a tweak of the precondition-system as outlined in Let Containers decide on Availability for Sub-Objects. Practically a user may say "Learners may leave this object always/when completed/when completed or failed/when failed". This will then set an according precondition on all subsequent objects in the learning sequence.

2.3 Why is the new object a container?

We considered the possibility to use a non-container and only link the objects into the new object, similar to the way a session links it contents from the course. However, we discarded that possibility because it only allows little control over the objects that should be presented in the learning sequence. It would need to deal with another rbac-context, with deletion of the objects at another location, etc. This would also make it harder for administrators of the sequence to understand, where the contained materials live and how to deal with them.

2.4 Why do you introduce two local roles?

We considered the possibility to have a participant management without a local role, like e.g. the study programme has. This would imply that access to the objects contained in the learning sequence would need to be restricted by roles from other contexts, e.g. a course, group or category above the learning sequence object. However, we want the Learning Sequence Object to be able to work stand alone, without a course or group. In that case, a category would be required if e.g. special permissions for administrators should be granted and it is questionably how the access to the objects contained in the sequence should be restricted based on membership at all.

2.5 Which data is available about the learners?

Although there are many possibilities to visualize and display the progress of learners through the sequence, we want to stick with a simple model for the first implementation. Thus, the member view of the object should contain the following fields:

  • Lastname, Firstname
  • Login
  • Org-Unit
  • First Access (i.e. click on start)
  • Completed Steps (e.g. 4 of 10)
  • Last visited step (e.g. 3)
It should not be possible to export the data, neither do we want a "learning specific user agreement" at this point.

Also, the standard "Learning Progress"-Tab is presented, to the user as well as to the administrator.

2.6 Why don't you use the standard means of the repository to manage the objects inside the container?

The standard means of containers in repository allow to add, delete and order objects in a container. So at first, we considered the "Sorting"-subtab of a container as the view for creators to arrange the material for a learning sequence. This screen currently has no way to add the postconditions as required for our scenario. We then considered to add an extra screen to add these postconditions or add them via a modal. For the user experience of the object we consider these solutions to be a suboptimal and thus proposed one screen to allow for adding, deleteing, sorting and setting of postconditions for the objects. This has the clear advantage, that the creation of the learning sequence could be approached holistically instead of an "first add and arrange, then set postconditions" workflow. Also we consider many information on the standard repository ListGUI to be of less interest for creating a learning sequence and thus prefer a single and new creation screen. In the new creation screen, a user may add, insert, link and copy objects and also "adapt content" from other learning sequences. Moreover, she can sort the content and add postconditions. The detailed key/value-information, that is presented in the ListGUI, is made available via a modal. It also is possible to open the objects from that screen.

2.7 Is it allowed to change the sequence after a user started it?

Yes. Since the progress in the learning sequence is modelled via the standard learning progress and preconditions, changing the content of the learning sequence does not pose a special technical challenge. However, it might be strange for user that just are in the middle of the process to work on a learning sequence if the sequence suddenly changes its content. Thus, administrators need to confirm changes when there are users that already started the sequence.

2.8 How are the objects in the container treated w.r.t. the search, the navigation history, ...?

The objects in the learning sequence are not treated in any special way atm. That means, if users may visit these objects by other means of the system (like search, direct link, navigation history, ...) the objects are presented just as they would be in an ordinary container. Although it might be desireable to lead users to the learning sequence if they attempt to open an object inside it, we consider this a challenge that may be solved in a future iteration on the object. In the meantime, viewing an object through a learning sequence will use the kiosk mode and thus not create a navigational entry. The search will bring up objects in a learning sequence. The JF might consider if objects could be seen in a learning sequence, even if they are not visible to a user. Then the search could be circumvented by permission settings.

The objects in the learning sequence are not treated in any special way atm. That means, if users may visit these objects by other means of the system (like search, direct link, navigation history, ...) the objects are presented just as they would be in an ordinary container. Although it might be desireable to lead users to the learning sequence if they attempt to open an object inside it, we consider this a challenge that may be solved in a future iteration on the object. In the meantime, viewing an object through a learning sequence will use the kiosk mode and thus not create a navigational entry. The search will bring up objects in a learning sequence. The JF might consider if objects could be seen in a learning sequence, even if they are not visible to a user. Then the search could be circumvented by permission settings.

2.9 Why does the user need to start the object explicitely?

This has two functions: On the one hand we need a trigger that makes the user a member of the learning sequence if he may subscribe to it on his own. On the other hand, we want allow administrators to monitor progress of the learners through the object. An administrator could add a group of learners to the object and, after some time, then see how many learners already started the sequence.

2.10 Which objects can be part of a learning sequence?

The learning sequence object aims to organize learning resources, thus currently objects presenting content are targets for inclusion in the learning sequence. For the initial setup we aim to be able to include these objects:

  • ILIAS Learning Module
  • SCORM Learning Module
  • Test
  • Survey
  • Exercise
  • Content Page
We do not aim to include other containers.

3 User Interface Modifications

3.1 List of Affected Views

The new object needs the following views:

  • Info
  • Learner View of Content
  • Authors View of Content
  • Settings
  • Permissions

3.2 User Interface Details

3.2.1 Screen to manage content of a learning sequence

3.2.2 UI: Navigation / Workflow

3.2.3 Toolbar Variety

3.2.4 Learning Sequence not yet started (admin)

3.2.5 Learning Sequencenot yet started (learner)

3.2.6 Learning Sequence- Initial Content Page

3.2.7 Learning Sequence - suspend the sequence

3.2.8 Resume the sequence

3.2.9 Start Test

3.2.10 Test Running

3.2.11 Learning Module (Kiosk Mode)

3.2.12 Learning Module (Fallback Solution, no Kiosk Mode)

3.2.13 Finish Learning Sequence 

3.2.14 Learning Sequence- Review Page

3.3 New User Interface Concepts

The new object requires a new UI component to display the individual steps.

4 Technical Information

{The maintainer has to provide necessary technical information, e.g. dependencies on other ILIAS components, necessary modifications in general services/architecture, potential security or performance issues.}

5 Contact

6 Funding

If you are interest in funding this feature, please add your name and institution to this list.

7 Discussion

Killing, Alexander [alex], 18 July 2018: 2.8 "How are the objects in the container treated w.r.t. the search, the navigation history, ...? ... The objects in the learning sequence are not treated in any special way atm. That means, if users may visit these objects by other means of the system (like search, direct link, navigation history, ...) the objects are presented just as they would be in an ordinary container."

This problem exists for lots of places where permanent links are being used. E.g. in notifications.

I think this can be solved, if the kiosk mode would be implemented differently:

  • I think that we will need a top Screen or View UI component in the future that sits on top of the whole layout. This component would manage its sub components like the main menu and main content area.
  • A general UI service could use a Strategy class or something similar that decides on the configuration of this Screen UI (e.g. show the main menu) component with a set of rules and services that register for triggering these different configurations. E.g. the LTI service triggers not to show the main menu (aka kiosk mode). The LTI service could continue to do so on session based data. This part of the service would also be responsible to define means for conflicts between different modifications (I can imagine that these might arise if members view, LTI and learning path act together).
  • A learning sequence service could register similarly for the modification of the top view/screen component. But it would not use a session based approach to do so. Instead it would examine the current position in the repository tree. A simple and already respected rule (each learning sequence object provider needs to ensure to use the ref_id request parameter) would enable the service to do so. The service could check if the current object provides the learning sequence interface, then check the current path and trigger the modification of the top screen UI element to not show the main menu.
This way we separate a lot of concerns
  • Top UI Layout
  • Decentralized way to modify the top UI layout
  • Way the modifications are triggered (session based like LTI or repo-tree like in the learning sequences)
  • Learning sequences could also add specialized controls, if needed and add them to the top layout (if it provides a slot for them). This separates kiosk view needs from learning path control needs.
It also has other advantages
  • The LTI and learning sequence requirements could be met both.
  • The tree based logic would not necessarily require the learning sequnce path provider objects to migrate all their navigation controls (especially not request resulting in other views of the same object)
  • If needed the learning sequence service could ask provider components to not provide links outside of the current object.
  • Navigation history, notifications, search would of a learning path would all lead back to the same kiosk mode like view the learner experienced before.
These are my thoughts based on my current understanding. I am not 100% sure if this works and meets everybodies needs, but personally I would feel more comfortable with this approach.

Killing, Alexander [alex], 27 July 2018:

  • I think 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7 and 2.9 are all feasible decisions. I hope Services/Membership is ready to serve this, since it still seems to have a number of grp/crs dependencies.
  • The current mockup of the manage screen contains course objects. Will the learning sequence allow to add container objects? I think this would add another level of complexity.
  • Up to now it is not possible to give feedback on the learners views and how they will use the kiosk mode, how the workflow ui component will be used (see https://github.com/ILIAS-eLearning/ILIAS/pull/1093#issuecomment-398059878) and how subcomponents need to be visually adopted to fit the needs of the learning sequence. It would be great to have mockups on the learners views, since they would help maintainers of the subcomponents to calculate the effort needed to support this.

Klees, Richard [rklees], 09 August 2018:

The current mockup of the manage screen contains course objects. Will the learning sequence allow to add container objects? I think this would add another level of complexity.

No, we don't plan on having courses in the learning sequence, it just so happens there were some in the container we used as base for the mockup. In general, we want to have content objects in the learning sequence and not objects that rather organize other content objects. I will add an according entry in the concept.

Killing, Alexander [alex], 13 Aug 2018: Thanks for the first Mock-Ups. Will there be mockups for survey and exercise available, too? Should the details of the behaviour of the supported subobjects be discussed on this page or should these discussion be on separate FW pages?
E.g. for learning module there are some open questions:

  • Toolbar: Use of primary buttons unclear
  • Toolbar: LM "Show/Hide Tree" (should use tree icon in standard mode https://www.ilias.de/docu/goto_docu_wiki_wpage_5178_1357.html)
  • Toolbar: Should buttons be used to open a view (e.g. Print View)
  • LM: LM Menu completely in toolbar or only print view button? (should be main tabs in standard mode, see https://www.ilias.de/docu/goto_docu_wiki_wpage_5255_1357.html should be tabs)
  • LM: Print view button opens new view in separate window or stays in Kiosk mode screen?
  • LM: How will layout setting in LM affect the view in the Learning Sequence (e.g. "Full Screen", "Three Window" view)?
  • LM: How will service settings in LM affect the view in the Learning Sequence (e.g. comments, rating, ...)?
  • LM: How will menus settings in LM affect the view in the Learning Sequence (e.g. ToC, Download Screen, Custom entries)?
There might be similar questions related to survey / exercises.

I think the mockups also support the idea of the separation of a "basic kiosk mode" (which is needed by LTI and basically disables the main menu) from the the requirements of a "sequence player" like outlined on this page (see results of the "VC Meeting 20 July 2018" as comment on this page: https://www.ilias.de/docu/goto_docu_wiki_wpage_5237_1357.html). This would allow LTI to still reuse existing standard views and support the full feature set of subobjects (like it already does).

Kunkel, Matthias [mkunkel], 13 AUG 2018 : Three questions from my side:

  • I assume that in the future also other object types can become part of a learning sequence, incl. plugins. Can any repository plugin object that implements the Kiosk mode automatically be used in a learning sequence object? Or does it need a kind of authorisation by this object type?
  • How does one become member of a learning sequence? Just by clicking the „Start Learning Sequence“ button (3.2.5)? Or is there a distinct „Join“ screen like known from courses?
  • And what will be the content presented on the 'Info' page of a LSO and can this page be deactivated (like we now started to do for several object types)?

Tödt, Alexandra [atoedt]

  • How does the Learning Sequence Object reflect the Export Guideline?
  • Could the Tabs Learning Prograess and Members be switched to comply with the Tabs Guideline?

JourFixe, ILIAS [jourfixe], 13 AUG 2018 : We highly appreciate this feature request and schedule it for 5.4 with the following changes:

  1. The support of learning sequences by the several components (e.g. Learning Module, Test, ...) has to be discussed and decided in separate feature requests because component-specific questions need to be tackled.
  2. The views used in the LSO are not identical to the default views of components and are implemented by supporting the current Kiosk mode proposal. We accept that users can enter the embedded objects of an LSO by other ways, e.g. search or notification and that the standard view will be presented in this case.
  3. Opening or closing the explorer in an ILIAS LM is done by the explorer button of the LM (not by buttons as in proposal above)
  4. We would like to have the UI Workflow element always at the right side - even in the LSO itself.
  5. The guideline Basic Features of an ILIAS Repository Object needs to be supported.
  6. Besides the two mentioned local roles and templates also a non-member template needs to be implemented.
  7. In the administration of the object the label "members" should be used instead of "participants" to reflect on the different underlying concept. User become member of an LSO by starting it the first time (no Join button).
  8. Richard will have a look at the navigation history service to check if this approach can be re-used for the LSO purposes, if it can be extended or if really a different implementation is needed.
We need to pick-up the discussion about the future of the Kiosk mode and how it is used in LSO and LTI in the near future. Richard will organise a workshop to discuss the conceptual issues. We do not expect that LTI is using the current Kiosk mode but consider it as a different tier.

JourFixe, ILIAS [jourfixe], 07 JAN 2019 : We decided that there is no need for breaking inheritance and to introduce a non-member template for the LSO because there shouldn't be introduced a totally new permission setting but only added additional permissions similar to the blog or forum.

8 Implementation

Implement an overview for a learning sequence with a curriculum and the possibility to start the sequence or to unsubscribe.
Implement a player with back and next buttons to navigate between objects. Also its possible to see the actual state in the curriculum and start objects from here.
Here you can manage the learning sequence content. its possible to sort the objects and to set them online or offline. You also can directly jump to the objects via the action menu.
In the learning sequence settings tab you have the followoing options: * title * description * online * setting time period * enable/disable meber gallery * add text for intro * add image for intro * add text for extro * add image for extro
Add MemeberGui with additionally fields. See Screenshot for field names.

{The maintainer has to give a description of the final implementation and add screenshots if possible.}

Test Cases

Test cases completed at 2018-10-26 by Klees, Richard [rklees]

  • C24769: Lernsequenz anlegen
  • C24770: Lernsequenz löschen
  • C24771: Lernsequenz kopieren
  • C24801: Info-Seite aufrufen
  • C24772: Einstellungen aufrufen
  • C24773: Titel und Beschreibung ändern
  • C24774: Bearbeitung der Einstellungen abbrechen
  • C24784: Abstract Text hinterlegen
  • C24785: Abstract Bild hinterlegen
  • C24786: Abstract Bild entfernen
  • C24787: Extro Text hinterlegen
  • C24788: Extro Bild hinterlegen
  • C24775: Content sortieren
  • C24776: Content löschen
  • C24777: Content anlegen
  • C24803: Content Einstellungen bearbeiten
  • C24804: Content anzeigen
  • C24806: Content Übersicht
  • C24779: Mitglieder hinzufügen
  • C24780: Mitglieder entfernen
  • C24781: Mitglieder suchen und hinzufügen
  • C24782: Mail an Mitglieder versenden - ausgewählte Benutzer
  • C24783: Mail an Mitglieder versenden - nach lokalen Rollen
  • C24808: Bestimmung des Lernfortschritts einstellen
  • C24910: Lernsequenz einsehen
  • C24911: Lernsequenz starten
  • C24912: Lernsequenz Inhalt wechseln über Schaltfläche
  • C24913: Lernsequenz Inhalt wechseln über Lernwegempfehlung
  • C24915: Lernsequenz unterbrechen
  • C24914: Lernsequenz wieder aufnehmen
  • C24917: Inhalt einer Lernsequenz starten
  • C24919: Lernfortschritt einer Lernsequenz einsehen

Approval

Approved at 2018-10-25 by Glaubitz, Marko [mglaubitz].

Last edited: 9. Jan 2019, 09:37, Kunkel, Matthias [mkunkel]