Feature Wiki

Information about planned and released features

Tabs

Consuming LTI in Repository – Basic

This page has been divided into two to suggest a basic implementation for 5.4 (this page) and extended features for 6.0, see "Consuming LTI in Repository – Extension".

1 Initial Problem

External content that supports LTI can only be integrated by using the plugin 'ExternalContent'. There is no generic LTI support for consuming LTI compliant content / applications in ILIAS yet. We consider this capability as a key feature for ILIAS and would like to introduce it to the core.

2 Conceptual Summary

The ExternalContent plugin with LTI support should be migrated to a native service of ILIAS and extended by features that are not yet available in the plugin. See the plugin documentation as a reference for existing functionality.
See also the guideline for repository objects: Basic Features of an ILIAS Repository Object.

A : Migration of existing functionality in plugin

  1. Definition of new types of external contents or services : The actual contents are created as repository objects based on the defined types. Administration of 'Repository Object Types' is supported.
    • Definition of configuration fields on type and object level: This is important for large installations with many authors. Configuration fields for a selected object type can be defined once globally and blocked on local level (Matterhorn scenario). For other object types it could be possible to configure basic settings locally (Youtube media object scenario).
  2. Built-in type models to choose from when a new type is created.  LTI 1.0 and 1.1 are supported as type models. Types could be:
    • Matterhorn / OpenCast
    • H5P
    • Big Blue Button
    • and many more applications that have been added in recent years

B : Extension of existing functionality

  1. Availability of different repository object types instead of one common "External Content" object. This allows a different handling of content types in object blocks and the "Add New" menu, as well as additional permissions for selected types.
  2. Type related internationalisation of the configuration screens. Instead of having different types for different languages, a type should provide its own language files and react on the user language. (needs conceptual discussion)
  3. Automatic role matching based on given Edit Settings permission of a user (course admin ILIAS gets write permissions in LTI object)

supplement 2019

The additions include the points proposed at the Jour Fixe on 15 Oct 2018 and take into account the fact that a surprising number of LTI providers have lately been created. As a result, the menu entries should be limited to 'Add New Item' and the selection process should be optimized after clicking on 'Add New Item'. In this context the entry Tile View to select LTI-Providers was created.

3 User Interface Modifications

3.1 List of Affected Views

Administration » LTI
Administration » LTI » Settings : new
Administration » LTI » Consuming : new
Administration » LTI » Consuming » Pre-defined LTI Provider
Administration » LTI » Consuming » User-defined LTI Provider
Administration » LTI » Consuming » Usage
Administration » Repository » Repository Object Types : filled dynamically by defined consumer types

Permission screen: provide create and object related permission settings for new defined consumer types

3.2 User Interface Details

3.2.1 Administration

New Tabs for Providing / Consuming

Tab 'Consumers' in ILIAS 5.3 / 5.4 would change to tab 'Providing'. New is tab 'Consuming'. German translations for 'Providing' could be 'bereitstellen', for 'Consuming' 'nutzen'.

LTI-Provider - Basic Settings

User could only create objects with LTI-Provider set by them if Administrators allow this! Administrators could see, which LTI-Providers are created by Users. The Administrator should have the posibility to contact the Users who had created LTI-Providers. Administrators could make available the LTI-Providers crated by specific users to all.

Administrators can define LTI providers on the basis of templates (planned for the start: Opencast, BigBlueButton, H5P) or freely.
Administrators can supplement LTI providers also by uploading an XML document (cartridge_basic_lti_link see www.imsglobal.org/specs/lti/xml) and editing the entries. The specifications for title, description, launch_url, link to icon and type (communication, content, assessment ...) are mandatory. Example: for britannica.

Note: The field for Title is the the title/name for the Repository Object Type.
New: Because this might be confusing and would not be necessary in the proposed re-design for 'Add New Item', a deletion of 'Internal Typname' would also be considered.

Note: For predefined LTI-Provider additional settings to customize the LTI consumer may be provided (e.g. https://docs.opencast.org/develop/admin/modules/ltimodule/).

LTI-Provider - Icon

Only for predefined LTI-Provider a specific icon is necessary (link could be imported e.g. by xml-file). For additional objects with LTI-Provider set by user, the LTI-standard-icon is used.

LTI-Provider - Type

To filter easier at 'Add New Item' settings to categorize as Organisation, Communication, Content, Assessment, Feedback and Evaluation or other are helpful.
For LTI-Providers created by users for themselve, the category is always 'own'.

LTI-Provider - Basic Outcome Service

A checkbox "Basic Outcome Service is availabe and can be used" is provided to indicate, that Basic Outcome Service can be used for the LTI-Provider. If activated 3 options appear as default settings for this LTI-Provider:

  • A dropdown selection (with values 0.1, 0.2 ... 0.9, 1) allows to set the requirement level for status passed. Default is 0.8.
  • A checkbox is used to specify the status if the requirement level was not passed. This could be failed or incomplete.
  • A checkbox is used to avoid unnecessary requests if status was passed by the user before.

A completed Learning Progress should result in a Certificate being issued for the respective user. Therefore the the certificate editor has to be integrated similar to other repository objects.

LTI-Provider - Settings for Data Privacy

LTI-Provider - Role settings

e.g. in schools, one would like to avoid that e-mail addresses of students are transmitted to LTI providers. Instead, one could use a pseudonymized mail address consisting of user ID, URL and ILIAS-client.

For teachers as course administrators, the transmission of e-mail addresses would often be beneficial as e.g. Edit rights at the LTI provider can be linked to the role course administrator. Therefore an additional checkbox is helpful for 'Email of (Course- / Group -) - Administrator'.

3.2.2 Add New Item

In the next screenshot new LTI-Providers are grouped to Communication (Virtual Classroom) and  to content (Lehrveranstaltungs-Aufzeichnung, Interaktiver H5P-Inhalt.

The options to add new items are only available if the settings for availability is set to 'Neue erzeugbar' /'New producible'!

Additional App

The example eduappcenter.com/ shows that LTI providers are available in large numbers. So that the creation of new items is still possible (only a limited number can be displayedon the screen) and remains clear, a new item could be created with the link 'zusätzliche App' / 'additional App'.
I would avoid the term "external app" as in Canvas, because users would not think of an app as external if it is hosted by the own institution. Confidence in an app labeled "external" may be lower for users.
The link can be found by clicking on 'Add new item' under 'Content'.

Table of LTI-Providers / Additional Apps

After clicking on "Additional App", the selection of the LTI provider takes place via a selection list if the Tile View to select LTI-Providers is not yet available.

After clicking onto 'Additional App' a screen with a table of LTI providers appear.

First LTI providers created by the user are displayed. And if it is allowed a button 'Add own App' is displayed.

Then other LTI-Providers are following.
The labels for the table of LTI provider should be : Type |  Title | Outcome Service | external | Creation | Description (short).

Type is used to categorize as Organisation, Communication, Content, Assessment, Feedback and Evaluation or other.
Outcome Service and 'external' can have the values yes or no.

Sort options are:

  • Alphabetical
  • frequency of use
  • Latest
Filter options are:
  • Type (organisation, communication, content, assessment, feedback and evaluation, other)
  • Outcome Service available
  • external (App hosted in own organization)
If a user clicks on an item of the table the settings screen appears. First the app is offline.

Important: In container objects never appears an object 'Additional App'! Only the object with specific LTI provider property (including the specific icon) appears.
Example: BigBlueButton icon followed by the title the user gave to the object after 'Add New Item'.
It might be usefull to display e.g.: "uses the Communication-App BigBlueButton".

Add own App

If it is allowed for a user to add objects with self defined LTI Provider, the same same settings would be available like in the external content plugin with one exception: settings for privacy could be added like in the screenshot above (e.g. to avoid sending e-mails).

Use of predefined Apps

The settings for 'Add Own App' are not necessary for predefined/preconfigured providers (see above). There it should be as simple as possible!
Minimum is a field for title and the support "Online / Offline" as basic feature and set to offline when created.

3.3 New User Interface Concepts

No new interface concepts

4 Technical Information

A first implementation of LTI consumer support won't allow the export of LTI repository objects due to open conceptual questions.

5 Contact

6 Funding

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

7 Discussion

JF 7 Jul 2014: We support this improvement in general and schedule it for 4.5. Please contact the Repository maintainers Alex and Stefan, and provide technical details especially about the part the provides additional repository object types.

Schmid, Fabian [fschmid], July 11, 2014: Consider to implement a general sub-types mechanism in ILIAS for all Object-Types. Maybe a sub-types-implementation could replace didactic templates and setting-templates, too.

Kunkel, Matthias [mkunkel], September 28, 2015: Implementation suggested for ILIAS 5.2 and set on JF agenda.

Neumann, Fred [fneumann] September 29, 2015:
The main ExternalContent code was written before the LTI support was integrated. So the plugin has a wider focus regarding configuration and adaptability than needed by LTI. An alternative to the migration and extension of the whole plugin could be a pure, LTI focused Tool Consumer object that is ready for certification by IMS. Basic functionality (e.g. a sub types mechanism or the OAuth authentification) should be implemented as services that can be used by the new core module and the plugin. Users wo need the best standard compliance will use the core module, while others who want to experiment or adapt things can use the plugin.

Kunkel, Matthias [mkunkel], 05 OCT 2018 : Page name has been changed from "ExternalContent (LTI) Migration and Extension" to "Consuming LTI in Repository – Basic" due to separation of feature request. The discussion above is related to the original version of the feature request.

JourFixe, ILIAS [jourfixe], 15 OCT 2018 : We highly appreciate this suggestion and schedule this feature for 5.4 with the following changes / modifications:

  • Export of LTI objects should not be supported as long as no sound export concept is available (unlike required in guideline for repository objects).
  • The labels for the table of LTI provider should be : Type | ID | Title | Creation
  • The label "Verfügbarkeit" is already reserved. Please use "Erzeugen" / "Creation" instead.
  • Single LTI objects should support "Online / Offline" as basic feature and set to offline when created.
  • An additional tab and view for available LTI ressources is needed (out of which authors can select existing LTI objects when creating a new LTI ressource.

Klees, Richard [rklees], 2019-07-01: The library the LTI-feature is based on has been discontinued in the meantime. When introducing LTI Authentication, we already decided to fork the library to our own organisation to be able to maintain it ourselfs because we already saw this problem arising. Now it seems as if even our fork of the library is unmaintained, even if there are known issues with the library. I'm thus hesitant to introduce new LTI-functionality now, if even the currently existing functionality seems to lack proper maintenance. How are the maintainers plans to address this issue?

JourFixe, ILIAS [jourfixe], 01 JUL 2019 : We highly appreciate this suggestion and schedule the feature for 6.0. The problem of the unmaintained library mentioned by Richard has no effect on this feature as it only affects ILIAS as LTI provider.

8 Implementation

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

Test Cases

Test cases completed on 2019-12-06 by Kohnle, Uwe [ukohnle]

Section: LTI-Consumer-Objekte nutzen in einer Kategorie

  • 32041: Ressource ohne Lernfortschritt wird in neuem Fenster gestartet
  • 32042: Ressource wird ohne Lernfortschritt im content-Fenster gestartet
  • 32043: Ressource wird ohne Lernfortschritt im eigenen Fenster gestartet
  • 32044: Ressource mit Lernfortschritt / externe Ressource bestimmt status
  • 32046: Ressource mit Lernfortschritt / mastery score bestimmt Lernfortschritt
  • 32047: Ressource mit Lernfortschritt und Zertifikat
  • 32048: Zertifikat wird im Personal Workspace abgelegt
  • 32049: Ressource mit Lernfortschritt als Vorbedingung für Zugang zum Kurs
  • 32050: Ressource mit CustomProvider-Einstellungen und Benutzerbild
Section: Kursmitglied nutzt LTI-Consumer-Objekte im Kurs
  • 32051: Lernfortschritt des Kurs ist bearbeitet wenn LTI-Consumer-Objekt als Ressource ist bearbeitet
  • 32052: Member-Sichtbarkeit bei Aufruf eines externen Kurses
Section: Kursadministrator nutzt LTI-Consumer-Objekte im Kurs
  • 32053: Kursadministrator kann Lernfortschritt der Kursmitglieder einsehen beim LTI-Consumer-Objekt und beim Kurs
  • 32055: Kursadministrator hat beim Aufruf der Ressource erweiterte Rechte
  • 32056: Kursadministrator hat einfache Nutzerrechte bei vorgegebener Member-Rolle
Subsection: Kursadministrator legt LTI-Consumer-Objekt auf Basis globaler Provider-Einstellungen an
  • 32057: Kursadministrator legt LTI-Consumer-Objekt auf Basis globaler Provider-Einstellungen an
  • 32060: Benutzer kann Spalten und Zeilen bestimmen
  • 32061: Benutzer kann sortieren
  • 32062: Benutzer kann filtern
  • 32065: Benutzer legt LTI-Consumer-Objekt auf Basis eines Providers ohne vordefiniertem Key/Secret an
Section: Benutzer mit erweiterten Rechten legt LTI-Consumer-Objekt mit eigenen Provider-Settings an
  • 32074: Fall 1: Provider-Settings existieren noch nicht und werden erstmalig angelegt
  • 32075: Fall 2: eigene Provider-Settings existieren bereits. Einstellungen werden bearbeitet und Schlagwörter werden ergänzt
  • 32076: Fall 3: Benutzer legt neues LTI-Consumer-Objekt auf Basis selbst definierter Provider-Einstellungen an und prüft Metadaten
  • 32063: Benutzer legt LTI-Consumer-Objekt auf Basis eines Providers an, der keinen Outcome-Service unterstützt
  • 32064: Benutzer legt LTI-Consumer-Objekt auf Basis eines Providers an, der Outcome-Service unterstützt
Section: Administration von Provider-Settings für LTI-Consumer-Objekte
  • 32077: Provider-Settings von Benutzern werden bearbeitet
  • 32078: Provider-Settings von Benutzern werden für alle bereit gestellt
  • 32079: Provider-Einstellungen werden gelöscht

Approval

Approved at 26 Nov 2019 by Bakker, Onno [onnobakker].

Last edited: 8. Dec 2019, 18:07, Kohnle, Uwe [ukohnle]