All Projects → mit-teaching-systems-lab → discourse-edx-lti

mit-teaching-systems-lab / discourse-edx-lti

Licence: MIT license
Discourse plugin for using Discourse as a discussion forum in EdX courses

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to discourse-edx-lti

stanford-algorithms-specialization
Problem Set and Programming Assignment Solutions to Stanford University's Algorithms Specialization on Coursera & edX
Stars: ✭ 43 (+126.32%)
Mutual labels:  edx
discourse-affiliate
No description or website provided.
Stars: ✭ 24 (+26.32%)
Mutual labels:  discourse-plugin
discourse-subscriptions
A Discourse plugin that allows payments and subscription management via Stripe.
Stars: ✭ 24 (+26.32%)
Mutual labels:  discourse-plugin
Robotics Coursework
🤖 Places where you can learn robotics (and stuff like that) online 🤖
Stars: ✭ 1,810 (+9426.32%)
Mutual labels:  edx
discourse-steam-login
Allows user authentication with discourse via the Steam user API
Stars: ✭ 45 (+136.84%)
Mutual labels:  discourse-plugin
edx-app-android
The Open edX mobile app for Android!
Stars: ✭ 282 (+1384.21%)
Mutual labels:  edx
colabs
This repository holds the Google Colabs for the EdX TinyML Specialization
Stars: ✭ 73 (+284.21%)
Mutual labels:  edx-course
github badges
DEPRECATED: GitHub Badges plugin
Stars: ✭ 16 (-15.79%)
Mutual labels:  discourse-plugin
discourse-translator
No description or website provided.
Stars: ✭ 48 (+152.63%)
Mutual labels:  discourse-plugin
discourse-docs
No description or website provided.
Stars: ✭ 21 (+10.53%)
Mutual labels:  discourse-plugin
Edx Dl
A simple tool to download video lectures from edx.org (and other openedx sites)
Stars: ✭ 1,769 (+9210.53%)
Mutual labels:  edx
auth-backends
Custom authentication backends and views for edX services
Stars: ✭ 20 (+5.26%)
Mutual labels:  edx
discourse-question-answer
Discourse Question Answer Plugin
Stars: ✭ 44 (+131.58%)
Mutual labels:  discourse-plugin
micromasters
Portal for learners and course teams to access MITx Micromasters® programs
Stars: ✭ 27 (+42.11%)
Mutual labels:  edx
configuration
A collection of edx configuration scripts and utilities that edx.org uses to deploy openedx.
Stars: ✭ 814 (+4184.21%)
Mutual labels:  edx
edX-6.00.2x-Introduction-to-Computational-Thinking-and-Data-Science
MIT edX 6.00.2x Introduction to Computational Thinking and Data Science problem sets code
Stars: ✭ 62 (+226.32%)
Mutual labels:  edx-course
edx-app-ios
The Open edX mobile app for iOS!
Stars: ✭ 216 (+1036.84%)
Mutual labels:  edx
discourse-telegram-notifications
A plugin for Discourse which allows users to receive their notifications by telegram message
Stars: ✭ 20 (+5.26%)
Mutual labels:  discourse-plugin
discourse-calendar
Adds the ability to create a dynamic calendar in the first post of a topic.
Stars: ✭ 45 (+136.84%)
Mutual labels:  discourse-plugin
discourse-signatures
A Discourse Plugin to show user signatures below posts
Stars: ✭ 16 (-15.79%)
Mutual labels:  discourse-plugin

discourse-edx-lti

This is a Discourse plugin for using Discourse as a discussion forum in EdX courses.

It adds a Discourse AuthProvider that handles LTI authentication from EdX. This allows one-click navigation from an EdX course into the discussion forum. The login dialog also allows users to bounce back to the course, and Discourse admin users can sign in directly.

Alternately, you may be interested in a similar project using WordPress as a discussion forum for EdX courses.

Where has this been used?

Learner user experience

1. Learner signs into EdX

login

2. Within EdX course, learner launches Discourse with LTI

login

3. The learner is authenticated with their EdX username

login

4. The Discourse instance is private

login

5. Login button links back to EdX course or allows admin login

login

Course author user experience

1. In Studio's Advanced Settings, enable LTI and add LTI passport (see EdX docs)

login

2. Add a new LTI widget

login

3. Set the LTI URL to /auth/lti/callback always

login

4. Set the LTI Custom Parameters to include ["url=/page-to-link-to"]

Note that this may be handled differently on edX versus an Open edX instance. See #22 for more. login

5. Set the LTI Launch Target to open in a new window

login

Setup

Initial setup for new course forums

Install and setup this plugin

  • The intent is that the site is private, and learners can only gain access by signing in through EdX and launching the site through LTI. Admin users sign into Discourse directly.
  • To do this, the plugin sets some admin site settings related to users and login, which you can see in config/settings.yml. You can edit these in the Discourse Admin UI, but note that the interactions between these settings in different parts of the product are complex, and we don't recommend changing these defaults.
  • Install this repository as a Discourse plugin (instructions)
  • Rebuild container
  • Test! Logout from your admin user, and click the Login button. You should see a Login with EdX button at the top of the Login dialog box (which won't work yet).

Discourse plugin setup

  • Pick an id for the forum site, generate a consumer key and secret
  • In Discourse, visit Admin -> Plugins -> discourse-edx-lti
  • Set the LTI consumer key and secret, and the EdX course URL that has the LTI button to the forums.

EdX course setup

  • In EdX Studio, visit Settings > Advanced settings
  • Add "lti" and "lti_consumer" to Advanced Module List
  • Add the forum site's id, consumer key and consumer secret to LTI Passports
  • In Studio, add an LTI Consumer. Set the LTI id, and set the LTI URL to /auth/lti/callback on the Discourse forum domain. We typically set the LTI Launch Target to "New Window".
  • For the LTI Consumer, make sure to set "Request users' username" and "Request user's email" to true. You may need to reach out to someone at EdX to enable this for your course.

Configure your Discourse forums

Local development

You can develop with Vagrant (see Discourse docs). As you develop, clear the ERB cache, copy this repository to the plugins folder and restart Rails to see changes.

Example:

rm -rf tmp/cache && \
rm -rf ./plugins/discourse-edx-lti/ && \
rsync -av --exclude .git \
  ~/github/mit-teaching-systems-lab/discourse-edx-lti \
  ./plugins/ && \
vagrant ssh -c 'cd /vagrant && bundle exec rails s -b 0.0.0.0'

The plugin-third-party.js.erb file is what ultimately injects the JavaScript needed to show the new login button in the UI. In development mode, this file will be cached and won't updated if you are rebuilding the plugin on each change. You can touch it manually or just clear the ERB cache on each change (like above). See https://meta.discourse.org/t/tmp-cache-needs-to-be-manually-cleared-when-developing-plugins/17109 or sstephenson/sprockets#563 for other alternatives.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].