From 762a6657fe1d95cdc51bd42b1fd7312ccce49e23 Mon Sep 17 00:00:00 2001 From: muhammad-ammar Date: Tue, 19 Apr 2016 18:34:46 +0500 Subject: [PATCH] LMS fixes required to upgrade BackboneJS --- cms/static/coffee/src/views/tabs.coffee | 8 ++++---- .../js/views/video/transcripts/file_uploader.js | 4 ++-- .../js/views/video/transcripts/message_manager.js | 4 +++- .../views/video/transcripts/metadata_videolist.js | 3 ++- cms/static/karma_cms.conf.js | 2 +- cms/static/karma_cms_squire.conf.js | 2 +- .../lib/xmodule/xmodule/js/karma_xmodule.conf.js | 2 +- common/static/karma_common.conf.js | 2 +- common/static/karma_common_requirejs.conf.js | 2 +- .../teams/static/teams/js/collections/base.js | 2 ++ .../teams/static/teams/js/collections/my_teams.js | 1 + .../teams/static/teams/js/collections/team.js | 1 + .../static/teams/js/collections/team_membership.js | 1 + .../teams/static/teams/js/collections/topic.js | 1 + .../static/teams/js/views/edit_team_members.js | 1 + .../teams/static/teams/js/views/topic_teams.js | 1 + .../teams/static/teams/js/views/topics.js | 1 + .../certificate_invalidation_collection.js | 6 +++++- .../collections/certificate_whitelist.js | 1 + .../models/certificate_invalidation.js | 4 ++-- .../views/certificate_invalidation_view.js | 14 +++++++++----- lms/static/js/edxnotes/collections/notes.js | 1 + lms/static/js/edxnotes/views/note_group.js | 6 ++++-- lms/static/js/edxnotes/views/note_item.js | 1 + lms/static/js/edxnotes/views/tab_panel.js | 3 ++- .../js/edxnotes/views/tabs/search_results.js | 1 + lms/static/js/edxnotes/views/tabs/tags.js | 1 + .../certificates_invalidation_spec.js | 6 ++++-- lms/static/js/spec/search/search_spec.js | 9 +++++++++ .../views/account_settings_fields.js | 2 ++ .../student_account/views/account_settings_view.js | 3 ++- lms/static/js/student_profile/views/badge_view.js | 1 + .../student_profile/views/learner_profile_view.js | 3 ++- .../js/student_profile/views/section_two_tab.js | 3 +++ .../js/student_profile/views/share_modal_view.js | 3 +++ lms/static/js/views/fields.js | 5 +++++ lms/static/js/views/image_field.js | 1 + lms/static/karma_lms.conf.js | 2 +- 38 files changed, 85 insertions(+), 29 deletions(-) diff --git a/cms/static/coffee/src/views/tabs.coffee b/cms/static/coffee/src/views/tabs.coffee index 2a854504b4..9d00bd425a 100644 --- a/cms/static/coffee/src/views/tabs.coffee +++ b/cms/static/coffee/src/views/tabs.coffee @@ -1,9 +1,9 @@ -define ["jquery", "jquery.ui", "backbone", "common/js/components/views/feedback_prompt", +define ["underscore", "jquery", "jquery.ui", "backbone", "common/js/components/views/feedback_prompt", "common/js/components/views/feedback_notification", "coffee/src/views/module_edit", "js/models/module_info", "js/utils/module"], -($, ui, Backbone, PromptView, NotificationView, ModuleEditView, ModuleModel, ModuleUtils) -> +(_, $, ui, Backbone, PromptView, NotificationView, ModuleEditView, ModuleModel, ModuleUtils) -> class TabsEdit extends Backbone.View - initialize: => + initialize: (options) => @$('.component').each((idx, element) => model = new ModuleModel({ id: $(element).data('locator') @@ -15,7 +15,7 @@ define ["jquery", "jquery.ui", "backbone", "common/js/components/views/feedback_ model: model ) ) - + @options = _.extend({}, options) @options.mast.find('.new-tab').on('click', @addNewTab) $('.add-pages .new-tab').on('click', @addNewTab) $('.toggle-checkbox').on('click', @toggleVisibilityOfTab) diff --git a/cms/static/js/views/video/transcripts/file_uploader.js b/cms/static/js/views/video/transcripts/file_uploader.js index 41f69dd3b7..13f95dc039 100644 --- a/cms/static/js/views/video/transcripts/file_uploader.js +++ b/cms/static/js/views/video/transcripts/file_uploader.js @@ -17,11 +17,11 @@ function($, Backbone, _, Utils) { uploadTpl: '#file-upload', - initialize: function () { + initialize: function (options) { _.bindAll(this, 'changeHandler', 'clickHandler', 'xhrResetProgressBar', 'xhrProgressHandler', 'xhrCompleteHandler' ); - + this.options = _.extend({}, options); this.file = false; this.render(); }, diff --git a/cms/static/js/views/video/transcripts/message_manager.js b/cms/static/js/views/video/transcripts/message_manager.js index d405b713e2..3f27f79b57 100644 --- a/cms/static/js/views/video/transcripts/message_manager.js +++ b/cms/static/js/views/video/transcripts/message_manager.js @@ -28,11 +28,13 @@ function($, Backbone, _, Utils, FileUploader, gettext) { choose: '#transcripts-choose' }, - initialize: function () { + initialize: function (options) { _.bindAll(this, 'importHandler', 'replaceHandler', 'chooseHandler', 'useExistingHandler', 'showError', 'hideError' ); + this.options = _.extend({}, options); + this.component_locator = this.$el.closest('[data-locator]').data('locator'); this.fileUploader = new FileUploader({ diff --git a/cms/static/js/views/video/transcripts/metadata_videolist.js b/cms/static/js/views/video/transcripts/metadata_videolist.js index 2cf79aa511..bfa51808d8 100644 --- a/cms/static/js/views/video/transcripts/metadata_videolist.js +++ b/cms/static/js/views/video/transcripts/metadata_videolist.js @@ -25,9 +25,10 @@ function($, Backbone, _, AbstractEditor, Utils, MessageManager) { 'youtube': 'http://youtube.com/' }, - initialize: function () { + initialize: function (options) { // Initialize MessageManager that is responsible for // status messages and errors. + this.options = _.extend({}, options); var Messenger = this.options.MessageManager || MessageManager; this.messenger = new Messenger({ diff --git a/cms/static/karma_cms.conf.js b/cms/static/karma_cms.conf.js index 8be90301eb..f86da7cc51 100644 --- a/cms/static/karma_cms.conf.js +++ b/cms/static/karma_cms.conf.js @@ -35,7 +35,7 @@ var libraryFiles = [ {pattern: 'xmodule_js/common_static/js/vendor/jquery.simulate.js', included: false}, {pattern: 'xmodule_js/common_static/common/js/vendor/underscore.js', included: false}, {pattern: 'xmodule_js/common_static/common/js/vendor/underscore.string.js', included: false}, - {pattern: 'xmodule_js/common_static/js/vendor/backbone-min.js', included: false}, + {pattern: 'xmodule_js/common_static/common/js/vendor/backbone-min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/backbone-associations-min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/backbone.paginator.min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/backbone-relational.min.js', included: false}, diff --git a/cms/static/karma_cms_squire.conf.js b/cms/static/karma_cms_squire.conf.js index 7ac88b65a2..7e23b748a9 100644 --- a/cms/static/karma_cms_squire.conf.js +++ b/cms/static/karma_cms_squire.conf.js @@ -35,7 +35,7 @@ var libraryFiles = [ {pattern: 'xmodule_js/common_static/js/vendor/jquery.cookie.js', included: false}, {pattern: 'xmodule_js/common_static/common/js/vendor/underscore.js', included: false}, {pattern: 'xmodule_js/common_static/common/js/vendor/underscore.string.js', included: false}, - {pattern: 'xmodule_js/common_static/js/vendor/backbone-min.js', included: false}, + {pattern: 'xmodule_js/common_static/common/js/vendor/backbone-min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/backbone-associations-min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/backbone.paginator.min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/timepicker/jquery.timepicker.js', included: false}, diff --git a/common/lib/xmodule/xmodule/js/karma_xmodule.conf.js b/common/lib/xmodule/xmodule/js/karma_xmodule.conf.js index c183cdeb68..5ec46545ce 100644 --- a/common/lib/xmodule/xmodule/js/karma_xmodule.conf.js +++ b/common/lib/xmodule/xmodule/js/karma_xmodule.conf.js @@ -45,7 +45,7 @@ var libraryFiles = [ {pattern: 'common_static/js/vendor/jquery.cookie.js', included: true}, {pattern: 'common_static/js/vendor/json2.js', included: true}, {pattern: 'common_static/common/js/vendor/underscore.js', included: true}, - {pattern: 'common_static/js/vendor/backbone-min.js', included: true}, + {pattern: 'common_static/common/js/vendor/backbone-min.js', included: true}, {pattern: 'common_static/js/vendor/jquery.leanModal.js', included: true}, {pattern: 'common_static/js/vendor/CodeMirror/codemirror.js', included: true}, {pattern: 'common_static/js/vendor/tinymce/js/tinymce/jquery.tinymce.min.js', included: true}, diff --git a/common/static/karma_common.conf.js b/common/static/karma_common.conf.js index 543240c4f6..259ee5e640 100644 --- a/common/static/karma_common.conf.js +++ b/common/static/karma_common.conf.js @@ -39,7 +39,7 @@ var libraryFiles = [ {pattern: 'js/vendor/mustache.js', included: true}, {pattern: 'common/js/vendor/underscore.js', included: true}, {pattern: 'common/js/vendor/underscore.string.js', included: true}, - {pattern: 'js/vendor/backbone-min.js', included: true}, + {pattern: 'common/js/vendor/backbone-min.js', included: true}, {pattern: 'js/vendor/jquery.timeago.js', included: true}, {pattern: 'js/vendor/URI.min.js', included: true}, {pattern: 'coffee/src/ajax_prefix.js', included: true}, diff --git a/common/static/karma_common_requirejs.conf.js b/common/static/karma_common_requirejs.conf.js index 149cb21ed4..60255e52c8 100644 --- a/common/static/karma_common_requirejs.conf.js +++ b/common/static/karma_common_requirejs.conf.js @@ -37,7 +37,7 @@ var libraryFiles = [ {pattern: 'js/vendor/jquery.truncate.js', included: false}, {pattern: 'common/js/vendor/underscore.js', included: false}, {pattern: 'common/js/vendor/underscore.string.js', included: false}, - {pattern: 'js/vendor/backbone-min.js', included: false}, + {pattern: 'common/js/vendor/backbone-min.js', included: false}, {pattern: 'js/vendor/backbone.paginator.min.js', included: false}, {pattern: 'js/vendor/jquery.timeago.js', included: false}, {pattern: 'js/vendor/URI.min.js', included: false}, diff --git a/lms/djangoapps/teams/static/teams/js/collections/base.js b/lms/djangoapps/teams/static/teams/js/collections/base.js index 9a11592a3b..60837499a4 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/base.js +++ b/lms/djangoapps/teams/static/teams/js/collections/base.js @@ -4,6 +4,8 @@ function(PagingCollection) { var BaseCollection = PagingCollection.extend({ initialize: function(options) { + this.url = options.url; + PagingCollection.prototype.initialize.call(this); this.course_id = options.course_id; diff --git a/lms/djangoapps/teams/static/teams/js/collections/my_teams.js b/lms/djangoapps/teams/static/teams/js/collections/my_teams.js index 1d7f5d297b..6833fc229f 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/my_teams.js +++ b/lms/djangoapps/teams/static/teams/js/collections/my_teams.js @@ -3,6 +3,7 @@ define(['teams/js/collections/team'], function (TeamCollection) { var MyTeamsCollection = TeamCollection.extend({ initialize: function (teams, options) { + this.url = options.url; TeamCollection.prototype.initialize.call(this, teams, options); delete this.server_api.topic_id; this.server_api = _.extend(this.server_api, { diff --git a/lms/djangoapps/teams/static/teams/js/collections/team.js b/lms/djangoapps/teams/static/teams/js/collections/team.js index c770a7baa4..70e3a673b8 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/team.js +++ b/lms/djangoapps/teams/static/teams/js/collections/team.js @@ -6,6 +6,7 @@ sortField: 'last_activity_at', initialize: function(teams, options) { + this.url = options.url; var self = this; BaseCollection.prototype.initialize.call(this, options); diff --git a/lms/djangoapps/teams/static/teams/js/collections/team_membership.js b/lms/djangoapps/teams/static/teams/js/collections/team_membership.js index 3a057707e1..f9d5317bc5 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/team_membership.js +++ b/lms/djangoapps/teams/static/teams/js/collections/team_membership.js @@ -4,6 +4,7 @@ function(BaseCollection, TeamMembershipModel) { var TeamMembershipCollection = BaseCollection.extend({ initialize: function(team_memberships, options) { + this.url = options.url; var self = this; BaseCollection.prototype.initialize.call(this, options); diff --git a/lms/djangoapps/teams/static/teams/js/collections/topic.js b/lms/djangoapps/teams/static/teams/js/collections/topic.js index bcb46e5556..2b3bf8b50a 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/topic.js +++ b/lms/djangoapps/teams/static/teams/js/collections/topic.js @@ -4,6 +4,7 @@ function(_, gettext, BaseCollection, TopicModel) { var TopicCollection = BaseCollection.extend({ initialize: function(topics, options) { + var self = this; BaseCollection.prototype.initialize.call(this, options); diff --git a/lms/djangoapps/teams/static/teams/js/views/edit_team_members.js b/lms/djangoapps/teams/static/teams/js/views/edit_team_members.js index 7525ed6ee1..66e4d2fb5d 100644 --- a/lms/djangoapps/teams/static/teams/js/views/edit_team_members.js +++ b/lms/djangoapps/teams/static/teams/js/views/edit_team_members.js @@ -22,6 +22,7 @@ }, initialize: function(options) { + this.options = _.extend({}, options); // The URL ends with team_id,request_username. We want to replace // the last occurrence of team_id with the actual team_id, and remove request_username // as the actual user to be removed from the team will be added on before calling DELETE. diff --git a/lms/djangoapps/teams/static/teams/js/views/topic_teams.js b/lms/djangoapps/teams/static/teams/js/views/topic_teams.js index 316685a6c2..53521b2fb6 100644 --- a/lms/djangoapps/teams/static/teams/js/views/topic_teams.js +++ b/lms/djangoapps/teams/static/teams/js/views/topic_teams.js @@ -15,6 +15,7 @@ }, initialize: function(options) { + this.options = _.extend({}, options); this.showSortControls = options.showSortControls; this.context = options.context; this.myTeamsCollection = options.myTeamsCollection; diff --git a/lms/djangoapps/teams/static/teams/js/views/topics.js b/lms/djangoapps/teams/static/teams/js/views/topics.js index 895d6194d4..e317f6c18a 100644 --- a/lms/djangoapps/teams/static/teams/js/views/topics.js +++ b/lms/djangoapps/teams/static/teams/js/views/topics.js @@ -16,6 +16,7 @@ }, initialize: function (options) { + this.options = _.extend({}, options); this.itemViewClass = TopicCardView.extend({ router: options.router, srInfo: this.srInfo diff --git a/lms/static/js/certificates/collections/certificate_invalidation_collection.js b/lms/static/js/certificates/collections/certificate_invalidation_collection.js index ddfaca25eb..97d3a056bf 100644 --- a/lms/static/js/certificates/collections/certificate_invalidation_collection.js +++ b/lms/static/js/certificates/collections/certificate_invalidation_collection.js @@ -9,7 +9,11 @@ function(Backbone, CertificateInvalidation) { return Backbone.Collection.extend({ - model: CertificateInvalidation + model: CertificateInvalidation, + + initialize: function(models, options) { + this.url = options.url; + } }); } ); diff --git a/lms/static/js/certificates/collections/certificate_whitelist.js b/lms/static/js/certificates/collections/certificate_whitelist.js index 0604582561..ed2dc79246 100644 --- a/lms/static/js/certificates/collections/certificate_whitelist.js +++ b/lms/static/js/certificates/collections/certificate_whitelist.js @@ -15,6 +15,7 @@ model: CertificateExceptionModel, initialize: function(attrs, options){ + this.url = options.url; this.generate_certificates_url = options.generate_certificates_url; }, diff --git a/lms/static/js/certificates/models/certificate_invalidation.js b/lms/static/js/certificates/models/certificate_invalidation.js index a58dad859e..9a35fc169d 100644 --- a/lms/static/js/certificates/models/certificate_invalidation.js +++ b/lms/static/js/certificates/models/certificate_invalidation.js @@ -19,8 +19,8 @@ notes: '' }, - url: function() { - return this.get('url'); + initialize: function (attributes, options) { + this.url = options.url; }, validate: function(attrs) { diff --git a/lms/static/js/certificates/views/certificate_invalidation_view.js b/lms/static/js/certificates/views/certificate_invalidation_view.js index 4edc3004f6..c5b45766d4 100644 --- a/lms/static/js/certificates/views/certificate_invalidation_view.js +++ b/lms/static/js/certificates/views/certificate_invalidation_view.js @@ -35,11 +35,15 @@ var notes = this.$("#certificate-invalidation-notes").val(); var message = ""; - var certificate_invalidation = new CertificateInvalidationModel({ - url: this.collection.url, - user: user, - notes: notes - }); + var certificate_invalidation = new CertificateInvalidationModel( + { + user: user, + notes: notes + }, + { + url: this.collection.url + } + ); if (this.collection.findWhere({user: user})) { message = gettext("Certificate of <%= user %> has already been invalidated. Please check your spelling and retry."); // jshint ignore:line diff --git a/lms/static/js/edxnotes/collections/notes.js b/lms/static/js/edxnotes/collections/notes.js index c6e5fadaa3..74af95a0f9 100644 --- a/lms/static/js/edxnotes/collections/notes.js +++ b/lms/static/js/edxnotes/collections/notes.js @@ -9,6 +9,7 @@ define([ initialize: function(models, options) { PagingCollection.prototype.initialize.call(this); + this.url = options.url; this.perPage = options.perPage; this.server_api = _.pick(this.server_api, "page", "page_size"); if (options.text) { diff --git a/lms/static/js/edxnotes/views/note_group.js b/lms/static/js/edxnotes/views/note_group.js index 5e31c01180..227ecb9413 100644 --- a/lms/static/js/edxnotes/views/note_group.js +++ b/lms/static/js/edxnotes/views/note_group.js @@ -11,7 +11,8 @@ define([ return 'note-section-' + _.uniqueId(); }, - initialize: function () { + initialize: function (options) { + this.options = _.extend({}, options); this.template = _.template(this.options.template); this.className = this.options.className; }, @@ -37,8 +38,9 @@ define([ }, template: _.template('

<%- chapterName %>

'), - initialize: function () { + initialize: function (options) { this.children = []; + this.options = _.extend({}, options); }, render: function () { diff --git a/lms/static/js/edxnotes/views/note_item.js b/lms/static/js/edxnotes/views/note_item.js index 1f5fd27709..aa308dc4e2 100644 --- a/lms/static/js/edxnotes/views/note_item.js +++ b/lms/static/js/edxnotes/views/note_item.js @@ -17,6 +17,7 @@ define([ }, initialize: function (options) { + this.options = _.extend({}, options); this.template = templateUtils.loadTemplate('note-item'); this.logger = NotesLogger.getLogger('note_item', options.debug); this.listenTo(this.model, 'change:is_expanded', this.render); diff --git a/lms/static/js/edxnotes/views/tab_panel.js b/lms/static/js/edxnotes/views/tab_panel.js index c27eb442c6..3f5d6d030d 100644 --- a/lms/static/js/edxnotes/views/tab_panel.js +++ b/lms/static/js/edxnotes/views/tab_panel.js @@ -12,8 +12,9 @@ function (gettext, _, Backbone, NoteItemView, PagingHeaderView, PagingFooterView 'tabindex': -1 }, - initialize: function () { + initialize: function (options) { this.children = []; + this.options = _.extend({}, options); if (this.options.createHeaderFooter) { this.pagingHeaderView = new PagingHeaderView({collection: this.collection}); this.pagingFooterView = new PagingFooterView({collection: this.collection, hideWhenOnePage: true}); diff --git a/lms/static/js/edxnotes/views/tabs/search_results.js b/lms/static/js/edxnotes/views/tabs/search_results.js index 6a35ff2b20..fa776928fd 100644 --- a/lms/static/js/edxnotes/views/tabs/search_results.js +++ b/lms/static/js/edxnotes/views/tabs/search_results.js @@ -52,6 +52,7 @@ define([ }, initialize: function (options) { + this.options = _.extend({}, options); _.bindAll(this, 'onBeforeSearchStart', 'onSearch', 'onSearchError'); TabView.prototype.initialize.call(this, options); this.searchResults = null; diff --git a/lms/static/js/edxnotes/views/tabs/tags.js b/lms/static/js/edxnotes/views/tabs/tags.js index 90f68d4ef7..fb3dab6565 100644 --- a/lms/static/js/edxnotes/views/tabs/tags.js +++ b/lms/static/js/edxnotes/views/tabs/tags.js @@ -24,6 +24,7 @@ define([ }, initialize: function (options) { + this.options = _.extend({}, options); TabView.prototype.initialize.call(this, options); _.bindAll(this, 'scrollToTag'); this.options.scrollToTag = this.scrollToTag; diff --git a/lms/static/js/spec/instructor_dashboard/certificates_invalidation_spec.js b/lms/static/js/spec/instructor_dashboard/certificates_invalidation_spec.js index e7c3a3d539..0e6cda9116 100644 --- a/lms/static/js/spec/instructor_dashboard/certificates_invalidation_spec.js +++ b/lms/static/js/spec/instructor_dashboard/certificates_invalidation_spec.js @@ -29,7 +29,7 @@ define([ beforeEach(function() { - certificate_invalidation = new CertificateInvalidationModel({user: 'test_user'}); + certificate_invalidation = new CertificateInvalidationModel({user: 'test_user'}, {url: 'test/url/'}); certificate_invalidation.set({ notes: "Test notes" }); @@ -174,7 +174,9 @@ define([ it("verifies view is rendered on add/remove to collection", function() { var user = 'test3', notes = 'test3 notes', - model = new CertificateInvalidationModel({user: user, notes: notes}); + model = new CertificateInvalidationModel( + {user: user, notes: notes}, {url: certificate_invalidation_url} + ); // Add another model in collection and verify it is rendered view.collection.add(model); diff --git a/lms/static/js/spec/search/search_spec.js b/lms/static/js/spec/search/search_spec.js index 7e18043dc0..819329b6e4 100644 --- a/lms/static/js/spec/search/search_spec.js +++ b/lms/static/js/spec/search/search_spec.js @@ -654,6 +654,7 @@ define([ function navigatesToSearch () { var requests = AjaxHelpers.requests(this); + Backbone.history.start(); Backbone.history.loadUrl('search/query'); expect(requests[0].requestBody).toContain('search_string=query'); } @@ -687,6 +688,10 @@ define([ this.$searchResults = $('.courseware-results'); }); + afterEach(function (){ + Backbone.history.stop(); + }); + it('shows loading message on search', showsLoadingMessage); it('performs search', performsSearch); it('shows an error message', showsErrorMessage); @@ -715,6 +720,10 @@ define([ this.$searchResults = $('#dashboard-search-results'); }); + afterEach(function (){ + Backbone.history.stop(); + }); + it('shows loading message on search', showsLoadingMessage); it('performs search', performsSearch); it('shows an error message', showsErrorMessage); diff --git a/lms/static/js/student_account/views/account_settings_fields.js b/lms/static/js/student_account/views/account_settings_fields.js index af90b9b912..179ab3991e 100644 --- a/lms/static/js/student_account/views/account_settings_fields.js +++ b/lms/static/js/student_account/views/account_settings_fields.js @@ -49,6 +49,7 @@ AccountSettingsFieldViews.PasswordFieldView = FieldViews.LinkFieldView.extend({ initialize: function (options) { + this.options = _.extend({}, options); this._super(options); _.bindAll(this, 'resetPassword'); }, @@ -111,6 +112,7 @@ AccountSettingsFieldViews.AuthFieldView = FieldViews.LinkFieldView.extend({ initialize: function (options) { + this.options = _.extend({}, options); this._super(options); _.bindAll(this, 'redirect_to', 'disconnect', 'successMessage', 'inProgressMessage'); }, diff --git a/lms/static/js/student_account/views/account_settings_view.js b/lms/static/js/student_account/views/account_settings_view.js index f3710d5f04..2cae445b68 100644 --- a/lms/static/js/student_account/views/account_settings_view.js +++ b/lms/static/js/student_account/views/account_settings_view.js @@ -6,7 +6,8 @@ var AccountSettingsView = Backbone.View.extend({ - initialize: function () { + initialize: function (options) { + this.options = _.extend({}, options); _.bindAll(this, 'render', 'renderFields', 'showLoadingError'); }, diff --git a/lms/static/js/student_profile/views/badge_view.js b/lms/static/js/student_profile/views/badge_view.js index 8133ba9c2c..5e3d4d0313 100644 --- a/lms/static/js/student_profile/views/badge_view.js +++ b/lms/static/js/student_profile/views/badge_view.js @@ -7,6 +7,7 @@ var BadgeView = Backbone.View.extend({ initialize: function(options) { + this.options = _.extend({}, options); this.context = _.extend(this.options.model.toJSON(), { 'created': new Moment(this.options.model.toJSON().created), 'ownProfile': options.ownProfile, diff --git a/lms/static/js/student_profile/views/learner_profile_view.js b/lms/static/js/student_profile/views/learner_profile_view.js index d5680d9b7b..79f34a6b52 100644 --- a/lms/static/js/student_profile/views/learner_profile_view.js +++ b/lms/static/js/student_profile/views/learner_profile_view.js @@ -9,7 +9,8 @@ var LearnerProfileView = Backbone.View.extend({ - initialize: function () { + initialize: function (options) { + this.options = _.extend({}, options); _.bindAll(this, 'showFullProfile', 'render', 'renderFields', 'showLoadingError'); this.listenTo(this.options.preferencesModel, "change:" + 'account_privacy', this.render); var Router = Backbone.Router.extend({ diff --git a/lms/static/js/student_profile/views/section_two_tab.js b/lms/static/js/student_profile/views/section_two_tab.js index 8986811b35..46c832e068 100644 --- a/lms/static/js/student_profile/views/section_two_tab.js +++ b/lms/static/js/student_profile/views/section_two_tab.js @@ -9,6 +9,9 @@ 'class': 'wrapper-profile-section-two' }, template: _.template(sectionTwoTemplate), + initialize: function (options) { + this.options = _.extend({}, options); + }, render: function () { var self = this; var showFullProfile = this.options.showFullProfile(); diff --git a/lms/static/js/student_profile/views/share_modal_view.js b/lms/static/js/student_profile/views/share_modal_view.js index 81220fe3a5..00d7235b05 100644 --- a/lms/static/js/student_profile/views/share_modal_view.js +++ b/lms/static/js/student_profile/views/share_modal_view.js @@ -17,6 +17,9 @@ 'focus .focusguard-start': 'focusGuardStart', 'focus .focusguard-end': 'focusGuardEnd' }, + initialize: function (options) { + this.options = _.extend({}, options); + }, focusGuardStart: function () { // Should only be selected directly if shift-tabbing from the start, so grab last item. this.$el.find("a").last().focus(); diff --git a/lms/static/js/views/fields.js b/lms/static/js/views/fields.js index e6dc15d98e..baff798dbf 100644 --- a/lms/static/js/views/fields.js +++ b/lms/static/js/views/fields.js @@ -46,6 +46,11 @@ 'success': gettext('Your changes have been saved.') }, + constructor: function(options) { + this.options = _.extend({}, options); + Backbone.View.apply(this, arguments); + }, + initialize: function () { this.template = _.template(this.fieldTemplate || ''); diff --git a/lms/static/js/views/image_field.js b/lms/static/js/views/image_field.js index 5a7282fb98..f47050accc 100644 --- a/lms/static/js/views/image_field.js +++ b/lms/static/js/views/image_field.js @@ -38,6 +38,7 @@ }, initialize: function (options) { + this.options = _.extend({}, options); this._super(options); _.bindAll(this, 'render', 'imageChangeSucceeded', 'imageChangeFailed', 'fileSelected', 'watchForPageUnload', 'onBeforeUnload'); diff --git a/lms/static/karma_lms.conf.js b/lms/static/karma_lms.conf.js index 6da66ac7e2..24196bb83e 100644 --- a/lms/static/karma_lms.conf.js +++ b/lms/static/karma_lms.conf.js @@ -61,7 +61,7 @@ var libraryFiles = [ {pattern: 'xmodule_js/common_static/js/src/**/*.js', included: false}, {pattern: 'xmodule_js/common_static/common/js/vendor/underscore.js', included: false}, {pattern: 'xmodule_js/common_static/common/js/vendor/underscore.string.js', included: false}, - {pattern: 'xmodule_js/common_static/js/vendor/backbone-min.js', included: false}, + {pattern: 'xmodule_js/common_static/common/js/vendor/backbone-min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/backbone.paginator.min.js', included: false}, {pattern: 'xmodule_js/common_static/js/vendor/edxnotes/annotator-full.min.js', included: false}, {pattern: 'xmodule_js/common_static/js/test/i18n.js', included: false},