Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • New configuration settings were added to lms/envs/common.py
  • New course settings were added to InheritanceMixin in common/lib/xmodule/xmodule/modulestore/inheritance.py
  • The core HTML component was updated to render notes inline
  • The AnnotatorJS library was added as a vendor library to common/static/js/vendor
  • A new LMS "Notes" tab was added to common/lib/xmodule/xmodule/tabs.py
    • The URL for the new tab was added to lms/urls.py
    • Mako templates for the new tab were added to lms/templates
    • CSS for the new tab was added to lms/static/sass
    • The JavaScript Backbone views were added to lms/static/js
  • Tests were written for all the new UI
    • Jasmine tests were added to lms/static/js/spec
    • Jasmine HTML fixtures were added to lms/static/js/fixtures
    • Bok Choy tests were added to common/tests/acceptance

5. Proctored Exams

Proctored exams were implemented as a standalone Python library along with some fairly substantial integration into edx-platform

Some notes:

6. Student Data Tab

Here is an upcoming use case from Braden MacDonald:

...

Here are the various types of UX changes that were seen in the relevant features. Note that the "Mobile Support" column describes whether such a change will automatically be supported by mobile, or whether it will require additional changes to the mobile app.

UX ChangeDescriptionExamplesMobile SupportCohorted CoursewareORA 2Student NotesCCX
CCX
Proctored Exams
Feature FlagAllow the feature to be enabled or disabledENABLED_EDXNOTES flag(tick)(error)(error)(tick)(tick)(tick)
ServiceIntroduce a new service that other parts of the platform can consume

edX Notes Service

edX Submissions Service

(tick) (but clients need to be updated)(error)(tick)(tick)(error)(tick)
REST APIIntroduce new REST APIs that allow new data models to be consumed by other parts of the platformUser API, edX Notes Service API(tick) (but clients need to be updated)(tick)(tick)(tick)(tick)(tick)
Core behavior changeChange how core parts of the platform functionCohorted content, CCX due dates(tick)(tick)(error)(error)(tick)(tick)
New course roleIntroduce a new role for users within a courseCCX coach(error)(error)(error)(error)(tick)(error)
New group typeIntroduce a new kind of grouping of usersCohorts, Content Groups(error)(tick)(error)(error)(error)(error)
New LMS pageAdd a new page to the top level of the LMSLearner profile page(error)
(error)(error)(error)(error)(error)
New Studio pageAdd a new page to the top level of Studio"Group Configurations" pageN/A(tick)(error)(error)(error)(error)
Update Studio course settings viewUpdate the "Settings" view to allow editing of new featuresCourse Licenses(error)(error)(error)(error)(error)(error)
Courseware componentAdd a new component type that an author can add to their course"Peer Assessment" component(tick) (with some caveats)(error)(tick)(error)(error)(error)
LMS tab

There are two different classes of tabs: those that are shown per role, and those that are shown when a feature is enabled.

Note: these are currently shown as tabs in the web version of the LMS, but this concept should be generalized to work for mobile and future non-tab implementations.

"Notes" tab, "CCX" tab(error)(error)(error)(tick)(tick)(error)
Instructor admin componentAdd a new component that instructors can use to administer their course in the LMS"Cohorts" tab(error)
(tick)(error)(error)(tick)(tick)
Instructor reportsAdd a new report that instructors can download"Download Profile Information"(error)
(tick)(error)(error)(error)(error)
Course feature flagAllow the feature to be enabled per course (by author or instructor)"Enable Student Notes", "Enable Cohorts"(error)(tick)(error)(tick)(tick)(tick)
Studio advanced settingAdd a new setting that authors can use to configure aspects of their course"Student Notes Visibility"N/A(error)(error)(tick)(error)(tick)
Studio authoring viewAdd a new view to allow authors to visually configure aspects of an xblock"Edit Visibility", ORA 2 settingsN/A(tick)(tick)(error)(error)(tick)
Studio typeIntroducing a new type requires providing an editor component"Language" pickerN/A(error)(error)(error)(error)(error)

Here are the types of implementation changes that had to be made to introduce the above features:

ChangeDescriptionUpdate RequiredMobile SupportCohorted CoursewareORA 2Student NotesCCXProctored Exams
Configuration SettingsAllow the feature to be enabled or disabledUpdate lms/envs/common.py (or cms)Not picked up by mobile today(tick)(error)(tick)(tick)(tick)
URLsMost features require new LMS and/or Studio URLsUpdate lms/urls.py (or cms)Not picked up by mobile today(tick)(error)(tick)(tick)(tick)
Django modelsAdd new persisted data models, or update existing onesAdd models to your Django app, or update existing ones in the platform(tick)(tick)(tick)(tick)(tick)(tick)
Modulestore logicChanges needed in core modulestore logicUpdate xmodule/modulestore(tick)(tick)(error)(error)(error)(error)
Courseware componentAdd a new component type that an author can add to their course.

Implement an xblock (some caveats that still require xmodule).

Update the Studio configuration to allow the user to create such a component.

(tick) (with some caveats)(error)(tick)(error)(error)(error)
Course-scoped fieldsAdd a new field that can be set per-course.Add fields to xmodule/course_module.py and sometimes xmodule/modulestore/inheritance.py(tick)(tick)(error)(tick)(error)(tick)
User partition schemeProvide a new way to partition users into groups/teams/cohorts etcProvide a plug-in of type openedx.user_partition.scheme(tick)(tick)(error)(error)(error)(error)
ImagesImages need to get into the pipeline to end up served through the CDNAdd new images to lms/static/images (or cms)(tick)(error)(error)(error)(error)(error)
CSSIntroduce new styling for custom componentsAdd new SASS files to lms/static/sass (or cms)(tick) (for web views)(tick)(question) (see ORA section below)(tick)(tick)(tick)
Mako TemplateInclude new HTML templates to be returned when serving a new pageAdd new templates to lms/templates (or cms)(tick)(tick)(error)(tick)(tick)(tick)
Third-party JS librariesAdd new libraries needed by the new JS UI, e.g. AnnotatorJS

Add the files to common/static/js/vendor

Add the new dependencies to RequireJS and the Jasmine tests

(tick)(error)(error)(tick)(error)(error)
JavaScriptAdd new custom JS code to support more dynamic browser interactionsAdd new JS files to lms/static/js (or cms). Add new dependencies to(tick)(tick)(question)(tick)(tick)(error)
Unit TestsAdd new Python or Jasmine code to test your new feature

Add new tests to your Django app

Update paver to know about the new directories to run the tests, for coverage etc

(error)(tick)(tick)(tick)(tick)(tick)
Integration TestsAdd new Bok Choy tests that verify your feature works when running inside the platform

Add new tests to common/test/acceptance

Note: ORA 2 has Bok Choy tests in its own repo, but no easy way to run them

(error)(tick)(question)(tick)(tick)(tick)

See Also

...