Feature Wiki
Tabs
Learning Sequence
Page Overview
[Hide]1 General
Maintainer and Tester
LearningSequence
Belongs to: Learning Sequence
- Authority to Sign off on Conceptual Changes: katrin.grosskopf
- Authority to Sign off on Code Changes: keven.clausen, katrin.grosskopf, jeanine.auerbach, dkippKPG
- Authority to Curate Test Cases: jeanine.auerbach
- Authority to (De-)Assign Authorities: katrin.grosskopf
- Assignee for Issues: katrin.grosskopf
- Assignee for Security Reports: keven.clausen
Additional
Roadmap
Component Revision
The condition types are contributed via the component bootstrap (ConditionType, ConditionTypes) and
exposed as $DIC[ConditionTypes::class] for the legacy environment. The repositories for boundaries, item path,
visits and the condition services are provided by ilLSDI. The following steps are still open:
Conditions without service location
AbstractCondition retrieves the whole ILIAS\DI\Container via global $DIC in its constructor, stores it in
$this->dic and reads from the database as soon as an id is given. All concrete conditions depend on it
(database, user, ctrl, refinery, language, UI factory). Conditions are instantiated by ConditionFactory with
new $class(), so nothing can be injected; only the factory itself is passed via setConditionFactory().
- Separate the persistence of a condition (generic
lso_conditionsrow and payload tables) from the condition itself and move it into repositories. - Let
ConditionTypecreate the condition instead ofConditionFactoryinstantiating the class name, so the dependencies of a condition can be wired where it is contributed. - Never read from the database in a constructor.
- Remove the
ReflectionClass::newInstanceWithoutConstructor()/ReflectionPropertyworkarounds in the tests once the dependencies can be injected.
Legacy proxies for other components
The conditions and the learning map evaluate the learning progress via ilLPStatus::_lookupStatus() /
_hasUserCompleted() and resolve objects via ilObject::_lookup*(), ilObjectFactory and ilLink.
- Introduce narrow interfaces for the learning progress and object lookups used by the Learning Sequence and
implement them as legacy proxies (see the proxy pattern in
components/ILIAS/Component/docs/component-bootstrap-migration.md). - Reuse
LSLearnerItem::getLearningProgressStatus()where the learner items are already at hand.
Remaining global $DIC
Still located via global $DIC, among others:
ilObjLearningSequenceConditionsGUI,ilObjLearningSequenceConditionConfigurationGUI,ilLearningSequenceConditionsRetrieval(database, refinery, language, ctrl, template, query, tabs, toolbar); the condition types, the condition factory and the condition handler are already passed inilObjLearningSequence::renderLearningMap()(UI factory, renderer, template)ilLSPlayer(access check for the rating)- the classes which already existed before the adaptive mode (
ilObjLearningSequenceGUI, members, importer, exporter, app event listener, ...)
Since ilCtrl is not yet part of the component bootstrap, the GUI classes need the legacy environment for now;
their dependencies should nevertheless be passed in by the creating class instead of being located inside.
Constants
ILIAS_HTTP_PATH is used in AbstractCondition, ilObjLearningSequenceConditionsGUI, the XML writer and
ilLSLocalDI. It should be replaced by the URI builder / static URL service.
Conditions
Relation to the Conditions component
The adaptive mode introduces an own condition framework (lso_conditions, lso_condition_types, lso_c_*),
while the linear mode still uses the post conditions (post_conditions) and ilConditionHandler for the
operators. The relation to the Conditions component should be clarified and documented, ideally both modes use
one condition system.
Database schema of the conditions
ilLearningSequenceConditionsSyncedObjective creates lso_condition_types, lso_conditions and the payload
tables from AbstractCondition::migrate() instead of ilDatabaseUpdateSteps. Changes to existing columns can
therefore not be expressed.
- Create the generic tables with regular database update steps.
- Define how payload tables of contributed condition types are created and updated in a versioned way.
- Add indices on
lso_conditions.lso_ref_id/obj_ref_idand a unique index onlso_condition_types.condition_name. - The setup never removes condition types or payload tables which are not contributed anymore. Conditions of such a type are skipped where they are evaluated and can be deleted in the conditions table, but their payload rows stay. Removing or renaming a condition type needs a deliberate, versioned update step.
Duplicated code
- The linear and the adaptive content management are parallel class hierarchies (
LSOSequentialContent/LSOAdaptiveContent, tables, filters);getSpecificActions()differs in its signature and is not part ofLSOContentController. LSOContentDeletion.phpcontains a trait and the classLSOTableActionHandler.- The navigation situations (
end,straight,branch,deadend,blocked) are compared as strings inilLSPlayeralthoughLSOLearningMapPositiondefines constants; an enum would be preferable.
User Interface
- The learning map (
tpl.lso_learning_map.html,lso_learning_map.js,lso_learning_map.css) is a custom component outside of the UI framework and outside of the SCSS/Delos pipeline. It should be proposed as UI component or at least use the Delos variables. lso_player.cssoverrides the rendering of UI cards (.il-card) for the choice page.- The choice page, the dead end page and the map modal are assembled from
legacy()->content()fragments. lso_learning_map.jsshould follow the JS guidelines (ES6 module, bundled via rollup, JSDoc, tests). The layered graph layout is implemented from scratch; a library (e.g. dagre or elk) should be evaluated.
Data and Privacy
lso_item_boundaries,lso_item_pathandlso_item_visitsare not removed when a learning sequence is deleted.lso_item_pathandlso_item_visitsare not removed when a user account is deleted.PRIVACY.mddoes not yet describe the visit log (lso_item_visits) and the learner path (lso_item_path).
ilLearningSequenceFilesystem
- parent class is deprecated
- method 'deleteFile' doesn't exists anymore
- make use of the new filesystem
2 Projects
The following projects are planned or have been realised for this component:
NEW Projects
Ongoing Projects
- …
Projects On-Hold
- …
Completed Projects
3 Suggested Features
In the following list you can add a request for a new feature or pick-up an already suggested feature about that should be decided again. The lists below show existing suggestions and scheduled features of this component.
Ready for Jour fixe
Already suggested
- Adaptive Learning Paths: Visualization - Integration
- Adaptive Learning Paths: Visualization - Interaction & Navigation
- Adaptive Learning Paths: Visualization - Library Selection
- Arrange and Replay Learning Resources
- Better configuration options for Learning Sequences on the Dashboard
- Enforcing Guideline for Top Actions
- Implement Kiosk-Mode for Survey
- Introduce Competence Management for Learning Sequences
- Learning Sequence: Improved Handling of LSO in Dashboard
- LTI Learning Sequence
- Optimize Navigation in Learning Sequences
4 Accepted Features
The following features have been accepted for trunk but are not yet scheduled for a specific ILIAS version.
- …
5 Scheduled Features
The following features have already been scheduled / published in ILIAS 12:
- Adaptive Learning Paths: Extention of Object Conditions – Input & Output Conditions
- Adaptive Learning Paths: Input Conditions
- Adaptive Learning Paths: Learning Map
- Adaptive Learning Paths: Misconfiguration Badge for Adaptive Learning Sequences
- Adaptive Learning Paths: Output Conditions
- Adaptive Learning Paths: Player Redesign
- Adaptive Learning Paths: Sequence Mode and Adaptive Mode
- Anchor-Links for all Container Objects
- Learning Sequence: Streamlining of Permission Handling
- LOM metadata for Learning Sequences
- Rating Box for Learning Sequence Player
- Removal of Download Multiple Objects in Learning Sequence Object
The following features have already been scheduled / published in ILIAS 11:
- …
The following features have been scheduled / published in ILIAS 10:
- …
The following features have already been developed and published in ILIAS 9:
- Global Dashboard Settings of Presentation and Sortation for all Dashboard Sections
- Implement General Kiosk Mode for Files
- Learning Sequence: Improve Handling of Learning Progress Settings of Sub-Objects
- Learning Sequence: Improve Usability of Objects without Kiosk-Mode (slightly)
- Learning Sequence: Make Completion more Visible
The following features have already been developed and published in ILIAS 8:
The following features have already been developed and published in ILIAS 7:
The following features have already been developed and published in ILIAS 6:
The following features have already been developed and published in ILIAS 5.4:
Feature has been introduced with ILIAS 5.4
Last edited: 25. Aug 2026, 17:40, Clausen, Keven [keven.clausen]