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('