Package: configurable-lti-consumer-xblock
Configurable LTI Consumer XBlockThis XBlock is built on top ofedX LTI consumer
Xblockto ease its configuration by Instructors.Here are a few examples of what this module brings to Open edX:Pre-configure LTI services that can be added in one-click from theAdvancedcomponent button,Enforced configuration for some LTI Services by targetting a launch url pattern,Enforced default configuration for all LTI Services for better control, security or ergonomy,Platform-level LTI credentials configuration available to all courses.
courses.InstallationThis package can be installed withpip:$pipinstallconfigurable_lti_consumer-xblockEdx'slti_consumer-xblockis
required as an extra dependency if you are willing to install or test this
XBlock as a standalone package. You can install it separately withpip:$pipinstallgit+https://github.com/edx/xblock-lti-consumer@v1.1.8#egg=lti-consumer-xblockIf you plan to install it in a base Open edX installation, this dependency will
already be available, and thus you don't need to execute the above command.Getting startedFirst things first, if you plan to work on the project itself, you will need to
clone this repository:$ git clone git@github.com:openfun/xblock-configurable-lti-consumer.gitOnce the project has been cloned on your machine, you will need to build a
customedx-platform docker imagethat
includes the configurable LTI consumer XBlock and setup a development environment that
includes all required services up and running (more on this later):$cdxblock-configurable-lti-consumer
$makebootstrapIf everything went well, you should now be able to access the following services:Open edX LMS:http://localhost:8072Open edX CMS:http://localhost:8082with the following credentials:email: admin@example.com
password: adminConfiguration examplesA typical LTI configuration looks like this:LTI_XBLOCK_CONFIGURATIONS=[{"display_name":"Marsha Video","oauth_consumer_key":"InsecureOauthConsumerKey","shared_secret":"InsecureSharedSecret","is_launch_url_regex":True,"automatic_resizing":True,"inline_ratio":0.5625,"hidden_fields":["lti_id","description","launch_target","custom_parameters","button_text","modal_height","modal_width","has_score","weight","hide_launch","accept_grades_past_due","ask_to_send_username","ask_to_send_email",],"defaults":{"custom_parameters":[],"ask_to_send_username":True,"weight":0,"modal_height":400,"ask_to_send_email":True,"accept_grades_past_due":False,"button_text":"button","has_score":False,"hide_launch":False,"launch_target":"iframe","modal_width":80,"launch_url":"https://marsha\.education/lti/videos/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}","lti_id":"marsha",},},{"pattern":".*ltiapps\.net.*","hidden_fields":["launch_target"],"defaults":{"launch_target":"modal"},},{"display_name":"LTI consumer","pattern":".*","hidden_fields":["ask_to_send_username","ask_to_send_email"],"automatic_resizing":False,"defaults":{"ask_to_send_email":True,"launch_target":"new_window","ask_to_send_username":True,},},]This configuration does several things:it adds a "Marsha Video" link behind theAdvancedcomponent button in the Studio to add a
video in one click. The video is automatically added to theMarshainstance pointed by the launch url,it forces all LTI consumer XBlocks that are pointing toltiapps.netto use a modal,it proposes all other LTI consumer XBlocks to open in a new window as a default and forces
to ask before sending the user's username and email.The order of each configuration in this list is important because we will use, for a given
XBlock, the first configuration pattern that matches its launch url.If you wish to encrypt theoauth_consumer_keyandshared_secretcredentials and keep the
other settings visible, you can declare one of them or both in a separate settingLTI_XBLOCK_SECRETS, using thelti_idas mapping key:LTI_XBLOCK_SECRETS={"marsha":{"oauth_consumer_key":"InsecureOauthConsumerKey","shared_secret":"InsecureSharedSecret",}}Note that the workbench included in the present repository is running this configuration
(seeconfig/settings.yml.dist) on the official France Université NumériqueOpen edX extended Docker image.Integration to Open edX StudioFor now, this project requires a small fork ofedx/edx-platformif you want to add, for some of your configurations, preconfigured options in theAdvancedcomponent button of the Studio.In our opinion, this small fork is worth applying because:it will save you from installing many XBlocks and helps keep your Open edX installation manageable,it allows you to automatically add a specific link for each LTI service you want to offer to your
instructors. They don't need to activate LTI and provide the credentials for each course... they
don't need to provide the launch url of the service for each XBlock they add...Foropen-release/hawthorn.1, the patch to apply is available here:https://gist.github.com/sampaccoud/f15083325cec4f14a53bfb78fb4b4e42Developer guideOnce the project has been bootstrapped (see "Getting started" section), to start
working on the project, use:$ make devYou can stop running servicesvia:$ make stopIf for any reason, you need to drop databases and start with fresh ones, use thedowntarget:$ make downLicenseThis work is released under the AGPL 3.0 License (seeLICENSE).