Integrating open edX with your Website
Open edX Conference 2018
Juan Montoya
Felipe Montoya
about eduNEXT
- Conference sponsors
- Open source contributors
- Open edX solutions providers for 4+ years
- Open edX as Service
- +1800 sites in 25 countries
- 15 languages
Integrating open edX with your Website
www.yourdomain.com
CONTENT MANAGEMENT SYSTEM
openedx.yourdomain.com
LMS
Who does it?
Why would you?
- Flexibility.
- Simplicity - Faster publishing.
- Different development cycle, team or provider.
- Existing web content platform.
- Other functionality needed, blog, discussions, community, portfolios.
- Integrating courses from different platforms.
- Friendly URLs
- SEO
- Web content Authoring
- Content hierarchy
- Editing rights management
- Role based access to content
Some things CMS do better:
-
Seamless UX
-
Data consistency - accuracy
-
High performance
-
Simple management
-
Code Maintainability - long term
-
Your choice of technology
-
Flexibility
How to get it right?
-
Extending open edX to perform CMS functions?
How to go about it?
- Integrating open edX with an existing CMS
How far can I go?
Session Awareness
User Menu
Redirections
Enrollment Awareness
Access the list of courses
- Search
- Sort
- Filter:
by availability
by organization
by subject
by language
by level
by program
by tags
by course instructor
by score
Sync Authentication
External Registration
External Enrollment
Access course updates, important dates
Access learner's enrollments, grades, certificates
Access the profile
instructor
user
other user
Access courseware components
Diving in
Sharing cookies
Session Awareness
User Menu
Redirections
"SESSION_COOKIE_DOMAIN": ".yourdomain.com"
On the settings:
"SESSION_COOKIE_DOMAIN": "*"
From:
To:
https://
Its 2018, encrypt already
- edx-user-info:
- edxloggedin: true|false
- sessionid:
- openedx-language-preference: fr-CA
What you get
{
"username": "FelipeMontoya",
"version": 1,
"enrollmentStatusHash": "ed68ba6c8fdf0dd84b230773f8c07c90",
"header_urls": {
"learner_profile": "https://openedx.yourdomain.com/u/FelipeMontoya",
"resume_block": "https://openedx.yourdomain.com/courses/course-v1:BerkeleyX+Data8.1x+1T2018/jump_to/block-v1:BerkeleyX+Data8.1x+1T2018+type@html+block@4a4936bfd5344d3cbf8efbaac66f6d3d",
"logout": "https://openedx.yourdomain.com/logout",
"account_settings": "https://openedx.yourdomain.com/account/settings"
}
}
"1|iY2JlMTA0MmZjZmM0YzM0|hCvYuvywId4E|ImRiY2JlMTANmYmZmMzBhNzBlODFhYzVmOTIzMTExMTYi:1fO51c:0ExrOk9MMlPlLGBjN381iJaQWHw"
All that for what?
Basic http redirection
- /
- /courses
- /honor
- /about
- /faq
- /tos
- /privacy
- /moar_statics
Redirections
Nginx
/edx/app/nginx/sites-available/lms
location /tos$ {
return 301 https://www.yourdomain.com/tos;
}
Application
lms/djangoapps/static_template_view/views.py
@ensure_csrf_cookie
@cache_if_anonymous()
def render(request, template):
"""
This view function renders the template sent without ...
"""
mktg_redirects = microsite.get_value('MKTG_REDIRECTS', {})
if mktg_redirects.get(template, False):
return redirect(mktg_redirects.get(template, '/'))
Enrollment Awareness
Next step
APIs
Diving Deeper
"ENABLE_MKTG_SITE": true,
Configuration
"MKTG_URLS": {
"ROOT": "https://www.yourdomain.com/",
"ABOUT": "about",
"HONOR": "honor",
"HOW_IT_WORKS": "about",
"COURSES": "our-courses",
"PRIVACY": "https://somethingelse.entirely.com/privacy/",
"TOS": "tos",
"BLOG": "",
"CONTACT": "",
"DONATE": "",
"FAQ": "",
"PRESS": "",
"SCHOOLS": "",
"WHAT_IS_VERIFIED_CERT": ""
},
Now what?
Collateral damage
Wordpress plugin
by
How to use
Search for edunext-openedx-integrator at the wp plugin registry
What do you get?
Session awareness
User Menu integration
Enrollment button logic
Use wordpress style shortcodes
Security: CSRF
Cross Site Request Forgery
/edx/app/nginx/sites-available/lms
add_header 'Access-Control-Allow-Origin' 'https://www.yourdomain.com';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'OPTIONS';
Even deeper
Access the list of courses
No go
It's deprecated
Course catalogue
Discovery service
sudo su discovery -s /bin/bash
cd
source venvs/discovery/bin/activate
source discovery_env
cd discovery/
./manage.py refresh_course_metadata
Index keeping
What is it?
Elasticsearch
Haystack
Oauth
DRF
Access to consolidated course and program metadata
-
Marketing page (drupal, WP, something else)
-
Webview (used for mobile apps course discovery)
-
Ecommerce
-
Mobile apps
What is it for?
Dreamland
The closest thing is a fork for now
APIs
Enrollment Administration API
User creation and management API
External Registration
External Enrollment
Use cases
Sync Authentication
Access course updates, important dates
Access learner's enrollments, grades, certificates
Access the profile
instructor
user
other user
Access courseware components
Integrating open edX with your Website
Open edX Conference 2018
Juan Montoya
Felipe Montoya
Thank you !
Integrating open edX with your Website or CMS
By Juan Camilo Montoya
Integrating open edX with your Website or CMS
- 3,917