Because with speed changing the time also changes for Flash playback,
a different way to calculate the current time is needed than for HTML5
playback. I have added conditions for Flash and HTML5 video, and put
old method of calculating time for Flash.
I have tested it on the YouTube video ZwkTiUPN0mg. Both HTML5 mode and
Flash mode have proper video-captions syncing with this fix. NOTE: to view
YouTube video in Flash mode you either have to use an old browser (ex. Firefox
version 18) or hard code in source that state.currentPlayerMode = 'flash' (in
function _setPlayerMode(), file 01_initialize.js).
Also clarifies the contraction of location.course_id by throwing an exception for lcoations that are not of category course.
Add test for course_id method.
Features coming down the pipe will want to be able to:
* Refer to enrollments before they are actually activated (approval step).
* See what courses a user used to be enrolled in for when they re-enroll in
the same course, or a different run of that course.
* Have different "modes" of enrolling in a course, representing things like
honor certificate enrollment, auditing (no certs), etc.
This change adds an is_active flag and mode (with default being "honor").
The commit is only as large as it is because many parts of the codebase were
manipulating enrollments by adding and removing CourseEnrollment objects
directly. It was necessary to create classmethods on CourseEnrollment to
encapsulate this functionality and then port everything over to using them.
The migration to add columns has been tested on a prod replica, and seems to be
fine for running on a live system with single digit millions of rows of
enrollments.
So that instructors have easy access to the mapping from anonymized
IDs (a simple MD5 hash of the user ID that's used when integrating
with third-party services like Qualtrics) to user IDs, we have a
simple Django management command to generate a CSV mapping. To run,
use the following:
rake django-admin[anonymized_id_mapping,<system>,<env>,<course_id>]
And, of course, substitute the appropriate values for <system>, <env>,
and <course_id>. (E.g., lms, dev, and MITx/6.002x/Circuits)
Change the `MathJax.Hub.Queue(initializeRequest)` to a simpler function call
(`initializeRequest.call(this)`). This was failing to give a proper context
to initializeRequest, and `this.value` was turning up as `undefined`.
Also add a fallback if we need to display some code before MathJax finishes
its original typesetting.
I was stubbing out `Queue` in my specs, so the tests had to be changed around
a little.