This adds ability to refresh the list of uploaded videos without refreshing the whole page.
Added a refresh button that when clicked:
- fetches a fresh list of uploaded files from the server
- updates `PreviousVideoUploadListView`
- removes the successfully completed uploads from `ActiveVideoUploadListView`
- retains the ongoing or failed uploads in `ActiveVideoUploadListView` so that they can be monitored/retried
The view can also be refreshed without user action, but I felt it may be less surprising to have a button instead.
MA-333 update: auto-refresh list, fix test failure
Changes:
1. Refresh of file list triggered by upload completion. Refresh button retained and label changed to "Refresh List".
2. Added `aria-live="polite"` to `.active-video-upload-list` and `.assets-table`.
3. Removed unused parameter `evt`.
4. Added self to the `AUTHORS` file.
MA-333 update: added tests
MA-333 update: removed refresh button
MA-333 update: address review comments of @mushtaqak
MA-333 update: simplify nested `_each`
MA-333 update: rename viewRefresh to isViewRefresh
MA-333 update: doc string for `clearSuccesful`
MA-333 update: fix accessibility
MA-333 update: update only successfully uploaded videos
MA-333 update: use window.SR feature to notify screen readers that video upload was successful (@pomegranited)
TNL-4906 Subsections now use radio buttons, to allow for "hide after due" as a
visibility option. Also, all tabs have been consolidated to "Basic" and
"Advanced", and visibility options have moved there.
Documentation links are updated to assist course authors with the new
visibility options. Tests have also been updated, and the changes suggested
in TNL-4951 are included.
If the first date the user selects is invalid it is not set on the
model. This is because jQuery datepicker's getDate returns the
current date when an invalid value is put in the field and the
model's initial value is also the current date. So always update
the date.
TNL-4366
Changes in studio to allow the hide_after_due setting to be utilized.
Includes:
-python changes to contentstore, where the data is stored.
-refactoring of timed-examination-preference-editor.underscore, to add this
setting and make the editor more accessible.
-javascript changes to link the new setting to the correct data model.
-sass updates to fix a11y issues on the editor modal.
-addition of post-due visibility information to course outline in studio.
-new tests: python, js, acceptance, and a11y
TNL-4115. Previously, course updates (which are intended to be posted with
dates, for sorting in the LMS) could be authored in studio with a valid
date, nothing, or a random string as the "date" for the update. As there
is no validation for this in studio, everything succeeded with no warning.
However, the LMS has problems parsing some of these values, and barfs when
loaded by learners.
The fix does two big things:
- gracefully handles invalid dates in LMS. These updates are now treated as
having a date of today, for sorting purposes.
- turns on validation in studio. Now, it is not only impossible to enter
invalid dates in studio, but notifications will draw the course author's
eye if any invalid updates were previously saved.
Test additions for this commit:
Adds:
- unit test for LMS parsing
- Jasmine test to confirm invalid dates cannot be set by the user
-also adds event to setAndValidate instead of using a global object
- fix for lettuce test
-It is no longer valid to enter the string "January 1, 2013" as this test
had been doing. Keyed-in entries must use MM/DD/YY format.
- adaptation asides to be imported from the XML
- updating SplitMongo to handle XBlockAsides (CRUD operations)
- updating Studio to handle XBlockAsides handler calls
- updating xblock/core.js to properly init XBlockAsides JavaScript
Make base.html Mako template safe by default by:
1. Add page-level default of html escaping
2. Fix escaping of all variables in base.html
3. Fix escaping of all dependent underscore templates
Also includes additional best practices for certificates and
textbooks JavaScript/Underscore in order to complete that work.
TNL-3425
The function initializeXBlock() expects a DOM element, and is passed one in most
cases. However, when adding a new XBlock component in Studio, the function is
passed a jQuery object, which ends up being forwarded to the actual
initialisation function of the XBlock.