Versions Compared

Key

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

...

  1. Create a new Django app, where all Python, mako and underscore templates, and JavaScript will live (note that there is an open story to allow sass files to also live in this app)
    • Our current best practice it so put new features into the platform directory openedx/features


    • Run the following code in an lms-shell (run "make lms-shell" in devstack)

      Code Block
      root@lms:/edx/app/edxapp/edx-platform# mkdir ./openedx/features/[Your App Name]
      root@lms:/edx/app/edxapp/edx-platform# ./manage.py lms startapp [Your App Name] ./openedx/features/[Your App Name]


  2. Create your Python view code, urls.py file, and unit tests
  3. If you have JavaScript and underscore templates:
    • Put your JavaScript files inside of a static directory, namespaced by the name of your app (for instance, teams/static/teams/js). 
    • As a best practice, use RequireJS and Backbone for your JavaScript
    • Use Underscore to handle client-side templates and load them using RequireJS Text (example).
    • Put your underscore templates inside the same namespaced static directory (for instance, teams/static/teams/templates). 
    • Put your Jasmine unit tests inside a spec directory within the JS directory (for instance, teams/static/teams/js/spec).
    • To enable the Jasmine unit tests as part of running LMS unit tests:
      • Add the names of your specs to lms/static/js/spec/main.js.
      • Add to src_paths, spec_paths, and fixture_paths in lms/static/karma_lms.conf.js (example).
      • Create a symbolic link in lms/static to the location of your static directory so that unit tests can find the appropriate files (example).
    • For more details, see How to add a new page to LMS or Studio
  4. Add the name of your app to OPTIONAL_APPS in lms/envs/common.py
  5. Add your urls to lms/urls.py, most likely behind a feature flag or configuration setting
    • Be sure to have a urls.py within your Django app, and then include it from the platform's urls.py
  6. Write bok choy acceptance tests in common/test/acceptance to verify that your plugin is working.

...