diff --git a/.eslintrc.json b/.eslintrc.json
index 9cc8eb1a57..7c3b44d431 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -49,7 +49,6 @@
"import/no-dynamic-require": "off",
"import/no-unresolved": "off",
"max-len": "off",
- "newline-per-chained-call": "off",
"no-console": "off",
"no-lonely-if": "off",
"no-param-reassign": "off",
@@ -69,11 +68,9 @@
"prefer-arrow-callback": "off",
"prefer-destructuring": "off",
"prefer-rest-params": "off",
- "prefer-template": "off",
"radix": "off",
"react/jsx-indent-props": ["error", 4],
"react/prop-types": "off",
- "semi": "off",
"vars-on-top": "off"
}
}
diff --git a/cms/static/cms/js/require-config.js b/cms/static/cms/js/require-config.js
index db784c45cb..94dc59d8c0 100644
--- a/cms/static/cms/js/require-config.js
+++ b/cms/static/cms/js/require-config.js
@@ -28,7 +28,7 @@
define(name, [], function() { return globalValue; });
}
} else {
- console.error('Expected library to be included on page, but not found on window object: ' + name);
+ console.error(`Expected library to be included on page, but not found on window object: ${name}`);
}
};
diff --git a/cms/static/cms/js/spec/main.js b/cms/static/cms/js/spec/main.js
index 46a20ac517..07abfd1469 100644
--- a/cms/static/cms/js/spec/main.js
+++ b/cms/static/cms/js/spec/main.js
@@ -286,7 +286,7 @@
i = 0;
while (i < testFiles.length) {
- testFiles[i] = '/base/' + testFiles[i] + '.js';
+ testFiles[i] = `/base/${testFiles[i]}.js`;
i++;
}
diff --git a/cms/static/cms/js/spec/main_squire.js b/cms/static/cms/js/spec/main_squire.js
index 8feb056922..6dcc64718a 100644
--- a/cms/static/cms/js/spec/main_squire.js
+++ b/cms/static/cms/js/spec/main_squire.js
@@ -199,7 +199,7 @@
i = 0;
while (i < testFiles.length) {
- testFiles[i] = '/base/' + testFiles[i] + '.js';
+ testFiles[i] = `/base/${testFiles[i]}.js`;
i++;
}
diff --git a/cms/static/cms/js/spec/main_webpack.js b/cms/static/cms/js/spec/main_webpack.js
index 020b4d313f..801fb68b50 100644
--- a/cms/static/cms/js/spec/main_webpack.js
+++ b/cms/static/cms/js/spec/main_webpack.js
@@ -12,6 +12,7 @@ import _ from 'underscore';
import str from 'underscore.string';
import HtmlUtils from 'edx-ui-toolkit/js/utils/html-utils';
import StringUtils from 'edx-ui-toolkit/js/utils/string-utils';
+
window._ = _;
window._.str = str;
window.edx = window.edx || {};
diff --git a/cms/static/js/certificates/models/certificate.js b/cms/static/js/certificates/models/certificate.js
index 8ca59d7b09..769c343d64 100644
--- a/cms/static/js/certificates/models/certificate.js
+++ b/cms/static/js/certificates/models/certificate.js
@@ -67,7 +67,7 @@ function(_, Backbone, BackboneRelational, BackboneAssociations, gettext, CoffeeS
// If no url is defined for the signatories child collection we'll need to create that here as well
if (!this.isNew() && !this.get('signatories').url) {
- this.get('signatories').url = this.collection.url + '/' + this.get('id') + '/signatories';
+ this.get('signatories').url = `${this.collection.url}/${this.get('id')}/signatories`;
}
},
diff --git a/cms/static/js/certificates/spec/custom_matchers.js b/cms/static/js/certificates/spec/custom_matchers.js
index 18062476b8..32e19dec6a 100644
--- a/cms/static/js/certificates/spec/custom_matchers.js
+++ b/cms/static/js/certificates/spec/custom_matchers.js
@@ -2,8 +2,8 @@
// http://tobyho.com/2012/01/30/write-a-jasmine-matcher/
define(['jquery'], function($) { // eslint-disable-line no-unused-vars
-
-'use strict';
+
+ 'use strict';
return function() {
jasmine.addMatchers({
diff --git a/cms/static/js/certificates/spec/views/certificate_details_spec.js b/cms/static/js/certificates/spec/views/certificate_details_spec.js
index b803bd0cbe..12754bcd3b 100644
--- a/cms/static/js/certificates/spec/views/certificate_details_spec.js
+++ b/cms/static/js/certificates/spec/views/certificate_details_spec.js
@@ -97,7 +97,7 @@ function(_, Course, CertificatesCollection, CertificateModel, CertificateDetails
}, this.newModelOptions);
this.collection = new CertificatesCollection([this.model], {
- certificateUrl: '/certificates/' + window.course.id
+ certificateUrl: `/certificates/${window.course.id}`
});
this.model.set('id', 0);
this.view = new CertificateDetailsView({
@@ -121,7 +121,7 @@ function(_, Course, CertificatesCollection, CertificateModel, CertificateDetails
describe('The Certificate Details view', function() {
it('should parse a JSON string collection into a Backbone model collection', function() {
var course_title = 'Test certificate course title override 2';
- var CERTIFICATE_JSON = '[{"course_title": "' + course_title + '", "signatories":"[]"}]';
+ var CERTIFICATE_JSON = `[{"course_title": "${course_title}", "signatories":"[]"}]`;
this.collection.parse(CERTIFICATE_JSON);
var model = this.collection.at(1);
expect(model.get('course_title')).toEqual(course_title);
diff --git a/cms/static/js/certificates/spec/views/certificate_editor_spec.js b/cms/static/js/certificates/spec/views/certificate_editor_spec.js
index 64ef492c82..12c85c6d5c 100644
--- a/cms/static/js/certificates/spec/views/certificate_editor_spec.js
+++ b/cms/static/js/certificates/spec/views/certificate_editor_spec.js
@@ -111,7 +111,7 @@ function(_, Course, CertificateModel, SignatoryModel, CertificatesCollection, Ce
}, this.newModelOptions);
this.collection = new CertificatesCollection([this.model], {
- certificateUrl: '/certificates/' + window.course.id
+ certificateUrl: `/certificates/${window.course.id}`
});
this.model.set('id', 0);
this.view = new CertificateEditorView({
@@ -220,8 +220,8 @@ function(_, Course, CertificateModel, SignatoryModel, CertificatesCollection, Ce
// now delete anyone of the signatory, Add signatory should be enabled.
var signatory = this.model.get('signatories').at(0);
- var text = 'Delete "' + signatory.get('name') + '" from the list of signatories?';
- clickDeleteItem(this, text, SELECTORS.signatoryDeleteButton + ':first');
+ var text = `Delete "${signatory.get('name')}" from the list of signatories?`;
+ clickDeleteItem(this, text, `${SELECTORS.signatoryDeleteButton}:first`);
expect(this.view.$(SELECTORS.addSignatoryButton)).not.toHaveClass('disableClick');
}
);
@@ -273,8 +273,8 @@ function(_, Course, CertificateModel, SignatoryModel, CertificatesCollection, Ce
var signatory_url = '/certificates/signatory';
signatory.url = signatory_url;
spyOn(signatory, 'isNew').and.returnValue(false);
- var text = 'Delete "' + signatory.get('name') + '" from the list of signatories?';
- clickDeleteItem(this, text, SELECTORS.signatoryDeleteButton + ':first', signatory_url);
+ var text = `Delete "${signatory.get('name')}" from the list of signatories?`;
+ clickDeleteItem(this, text, `${SELECTORS.signatoryDeleteButton}:first`, signatory_url);
expect(this.model.get('signatories').length).toEqual(total_signatories - 1);
});
@@ -287,8 +287,8 @@ function(_, Course, CertificateModel, SignatoryModel, CertificatesCollection, Ce
var total_signatories = this.model.get('signatories').length;
var signatory_url = '/certificates/signatory';
signatory.url = signatory_url;
- var text = 'Delete "' + signatory.get('name') + '" from the list of signatories?';
- showConfirmPromptAndClickCancel(this.view, SELECTORS.signatoryDeleteButton + ':first', text);
+ var text = `Delete "${signatory.get('name')}" from the list of signatories?`;
+ showConfirmPromptAndClickCancel(this.view, `${SELECTORS.signatoryDeleteButton}:first`, text);
expect(this.model.get('signatories').length).toEqual(total_signatories);
});
diff --git a/cms/static/js/certificates/spec/views/certificate_preview_spec.js b/cms/static/js/certificates/spec/views/certificate_preview_spec.js
index 741c7c5996..16a70b9ab7 100644
--- a/cms/static/js/certificates/spec/views/certificate_preview_spec.js
+++ b/cms/static/js/certificates/spec/views/certificate_preview_spec.js
@@ -43,7 +43,7 @@ function(_, $, Course, CertificatePreview, TemplateHelpers, ViewHelpers, AjaxHel
el: $('.preview-certificate'),
course_modes: ['test1', 'test2', 'test3'],
certificate_web_view_url: '/users/1/courses/orgX/009/2016?preview=test1',
- certificate_activation_handler_url: '/certificates/activation/' + window.course.id,
+ certificate_activation_handler_url: `/certificates/activation/${window.course.id}`,
is_active: true
});
appendSetFixtures(this.view.render().el);
@@ -64,16 +64,16 @@ function(_, $, Course, CertificatePreview, TemplateHelpers, ViewHelpers, AjaxHel
it('course mode selection updating the link successfully', function() {
selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test1');
- expect(this.view.$(SELECTORS.preview_certificate).attr('href')).
- toEqual('/users/1/courses/orgX/009/2016?preview=test1');
+ expect(this.view.$(SELECTORS.preview_certificate).attr('href'))
+ .toEqual('/users/1/courses/orgX/009/2016?preview=test1');
selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test2');
- expect(this.view.$(SELECTORS.preview_certificate).attr('href')).
- toEqual('/users/1/courses/orgX/009/2016?preview=test2');
+ expect(this.view.$(SELECTORS.preview_certificate).attr('href'))
+ .toEqual('/users/1/courses/orgX/009/2016?preview=test2');
selectDropDownByText(this.view.$(SELECTORS.course_modes), 'test3');
- expect(this.view.$(SELECTORS.preview_certificate).attr('href')).
- toEqual('/users/1/courses/orgX/009/2016?preview=test3');
+ expect(this.view.$(SELECTORS.preview_certificate).attr('href'))
+ .toEqual('/users/1/courses/orgX/009/2016?preview=test3');
});
it('toggle certificate activation event works fine', function() {
@@ -87,7 +87,7 @@ function(_, $, Course, CertificatePreview, TemplateHelpers, ViewHelpers, AjaxHel
var requests = AjaxHelpers.requests(this),
notificationSpy = ViewHelpers.createNotificationSpy();
this.view.$(SELECTORS.activate_certificate).click();
- AjaxHelpers.expectJsonRequest(requests, 'POST', '/certificates/activation/' + window.course.id, {
+ AjaxHelpers.expectJsonRequest(requests, 'POST', `/certificates/activation/${window.course.id}`, {
is_active: false
});
ViewHelpers.verifyNotificationShowing(notificationSpy, /Deactivating/);
@@ -98,7 +98,7 @@ function(_, $, Course, CertificatePreview, TemplateHelpers, ViewHelpers, AjaxHel
notificationSpy = ViewHelpers.createNotificationSpy();
this.view.is_active = false;
this.view.$(SELECTORS.activate_certificate).click();
- AjaxHelpers.expectJsonRequest(requests, 'POST', '/certificates/activation/' + window.course.id, {
+ AjaxHelpers.expectJsonRequest(requests, 'POST', `/certificates/activation/${window.course.id}`, {
is_active: true
});
ViewHelpers.verifyNotificationShowing(notificationSpy, /Activating/);
diff --git a/cms/static/js/certificates/spec/views/certificates_list_spec.js b/cms/static/js/certificates/spec/views/certificates_list_spec.js
index fec1829611..ff07936e99 100644
--- a/cms/static/js/certificates/spec/views/certificates_list_spec.js
+++ b/cms/static/js/certificates/spec/views/certificates_list_spec.js
@@ -54,7 +54,7 @@ function(_, Course, CertificatesCollection, CertificateModel, CertificateDetails
}, {add: true});
this.collection = new CertificatesCollection([], {
- certificateUrl: '/certificates/' + window.course.id
+ certificateUrl: `/certificates/${window.course.id}`
});
this.model.set('id', 0);
this.view = new CertificatesListView({
diff --git a/cms/static/js/certificates/views/certificate_editor.js b/cms/static/js/certificates/views/certificate_editor.js
index e81da1b2b4..6a04fd6f4a 100644
--- a/cms/static/js/certificates/views/certificate_editor.js
+++ b/cms/static/js/certificates/views/certificate_editor.js
@@ -39,7 +39,7 @@ function($, _, Backbone, gettext,
'collection-edit',
'certificates',
'certificate-edit',
- 'certificate-edit-' + index
+ `certificate-edit-${index}`
].join(' ');
},
diff --git a/cms/static/js/certificates/views/certificate_preview.js b/cms/static/js/certificates/views/certificate_preview.js
index 741d4d9669..b834ca9a04 100644
--- a/cms/static/js/certificates/views/certificate_preview.js
+++ b/cms/static/js/certificates/views/certificate_preview.js
@@ -63,7 +63,7 @@ function(_, gettext, BaseView, ViewUtils, NotificationView, certificateWebPrevie
courseModeChanged: function(event) {
$('.preview-certificate-link').attr('href', function(index, value) {
return value.replace(/preview=([^&]+)/, function() {
- return 'preview=' + event.target.options[event.target.selectedIndex].text;
+ return `preview=${event.target.options[event.target.selectedIndex].text}`;
});
});
},
diff --git a/cms/static/js/certificates/views/signatory_details.js b/cms/static/js/certificates/views/signatory_details.js
index 6caf73dd55..7a41d20417 100644
--- a/cms/static/js/certificates/views/signatory_details.js
+++ b/cms/static/js/certificates/views/signatory_details.js
@@ -32,7 +32,7 @@ function($, _, str, Backbone, gettext, TemplateUtils, ViewUtils, BaseView, Signa
var index = this.model.collection.indexOf(this.model);
return [
'signatory-details',
- 'signatory-details-view-' + index
+ `signatory-details-view-${index}`
].join(' ');
},
diff --git a/cms/static/js/certificates/views/signatory_editor.js b/cms/static/js/certificates/views/signatory_editor.js
index e0dd135733..57a218fe30 100644
--- a/cms/static/js/certificates/views/signatory_editor.js
+++ b/cms/static/js/certificates/views/signatory_editor.js
@@ -35,7 +35,7 @@ function($, _, Backbone, gettext,
var index = this.getModelIndex(this.model);
return [
'signatory-edit',
- 'signatory-edit-view-' + index
+ `signatory-edit-view-${index}`
].join(' ');
},
@@ -194,7 +194,7 @@ function($, _, Backbone, gettext,
* @param string modelAttribute - the attribute of the signatory model e.g. name, title.
*/
toggleValidationErrorMessage: function(modelAttribute) {
- var selector = 'div.add-signatory-' + modelAttribute;
+ var selector = `div.add-signatory-${modelAttribute}`;
var errorMessage;
if (!this.model.isValid() && _.has(this.model.validationError, modelAttribute)) {
// Show the error message if it is not exist before.
@@ -206,7 +206,7 @@ function($, _, Backbone, gettext,
} else {
// Remove the error message.
$(selector).removeClass('error');
- $(selector + '>span.message-error').remove();
+ $(`${selector}>span.message-error`).remove();
}
}
diff --git a/cms/static/js/factories/container.js b/cms/static/js/factories/container.js
index cfca298851..892eb61960 100644
--- a/cms/static/js/factories/container.js
+++ b/cms/static/js/factories/container.js
@@ -23,4 +23,4 @@ export default function ContainerFactory(componentTemplates, XBlockInfoJson, act
});
};
-export {ContainerFactory}
+export {ContainerFactory};
diff --git a/cms/static/js/factories/context_course.js b/cms/static/js/factories/context_course.js
index 475e5a6282..24745295ec 100644
--- a/cms/static/js/factories/context_course.js
+++ b/cms/static/js/factories/context_course.js
@@ -1,3 +1,3 @@
import * as ContextCourse from 'js/models/course';
-export {ContextCourse}
+export {ContextCourse};
diff --git a/cms/static/js/factories/edit_tabs.js b/cms/static/js/factories/edit_tabs.js
index 51688bf6a1..5ec459e520 100644
--- a/cms/static/js/factories/edit_tabs.js
+++ b/cms/static/js/factories/edit_tabs.js
@@ -23,4 +23,4 @@ export default function EditTabsFactory(courseLocation, explicitUrl) {
});
};
-export {EditTabsFactory}
+export {EditTabsFactory};
diff --git a/cms/static/js/factories/library.js b/cms/static/js/factories/library.js
index 7f8d458502..0e72bdb4b4 100644
--- a/cms/static/js/factories/library.js
+++ b/cms/static/js/factories/library.js
@@ -26,4 +26,4 @@ export default function LibraryFactory(componentTemplates, XBlockInfoJson, optio
});
};
-export {LibraryFactory}
+export {LibraryFactory};
diff --git a/cms/static/js/factories/settings.js b/cms/static/js/factories/settings.js
index b170731397..90854f6a92 100644
--- a/cms/static/js/factories/settings.js
+++ b/cms/static/js/factories/settings.js
@@ -8,7 +8,7 @@ define([
// highlighting labels when fields are focused in
$('form :input')
.focus(function() {
- $('label[for="' + this.id + '"]').addClass('is-focused');
+ $(`label[for="${this.id}"]`).addClass('is-focused');
})
.blur(function() {
$('label').removeClass('is-focused');
@@ -16,9 +16,9 @@ define([
// Toggle collapsibles when trigger is clicked
$('.collapsible .collapsible-trigger').click(function() {
- const contentId = this.id.replace('-trigger', '-content')
- $(`#${contentId}`).toggleClass('collapsed')
- })
+ const contentId = this.id.replace('-trigger', '-content');
+ $(`#${contentId}`).toggleClass('collapsed');
+ });
model = new CourseDetailsModel();
model.urlRoot = detailsUrl;
diff --git a/cms/static/js/factories/settings_advanced.js b/cms/static/js/factories/settings_advanced.js
index 4ddc2305d6..bdbc3ce92b 100644
--- a/cms/static/js/factories/settings_advanced.js
+++ b/cms/static/js/factories/settings_advanced.js
@@ -8,7 +8,7 @@ define([
$('form :input')
.focus(function() {
- $('label[for="' + this.id + '"]').addClass('is-focused');
+ $(`label[for="${this.id}"]`).addClass('is-focused');
})
.blur(function() {
$('label').removeClass('is-focused');
diff --git a/cms/static/js/factories/settings_graders.js b/cms/static/js/factories/settings_graders.js
index dc75029e0f..8a02defbe4 100644
--- a/cms/static/js/factories/settings_graders.js
+++ b/cms/static/js/factories/settings_graders.js
@@ -8,7 +8,7 @@ define([
$('form :input')
.focus(function() {
- $('label[for="' + this.id + '"]').addClass('is-focused');
+ $(`label[for="${this.id}"]`).addClass('is-focused');
})
.blur(function() {
$('label').removeClass('is-focused');
diff --git a/cms/static/js/factories/textbooks.js b/cms/static/js/factories/textbooks.js
index 01950f867f..a257b36886 100644
--- a/cms/static/js/factories/textbooks.js
+++ b/cms/static/js/factories/textbooks.js
@@ -21,4 +21,4 @@ export default function TextbooksFactory(textbooksJson) {
});
};
-export {TextbooksFactory}
+export {TextbooksFactory};
diff --git a/cms/static/js/factories/xblock_validation.js b/cms/static/js/factories/xblock_validation.js
index 0411dc9150..03bee7547c 100644
--- a/cms/static/js/factories/xblock_validation.js
+++ b/cms/static/js/factories/xblock_validation.js
@@ -18,4 +18,4 @@ export default function XBlockValidationFactory(validationMessages, hasEditingUr
}
};
-export {XBlockValidationFactory}
+export {XBlockValidationFactory};
diff --git a/cms/static/js/features/import/factories/import.js b/cms/static/js/features/import/factories/import.js
index 6b81540dbe..39a29ec934 100644
--- a/cms/static/js/features/import/factories/import.js
+++ b/cms/static/js/features/import/factories/import.js
@@ -17,10 +17,10 @@ define([
$submitBtn = $('.submit-button'),
$chooseBtn = $('.view-import .choose-file-button'),
defaults = [
- gettext('There was an error during the upload process.') + '\n',
- gettext('There was an error while unpacking the file.') + '\n',
- gettext('There was an error while verifying the file you submitted.') + '\n',
- dbError + '\n'
+ `${gettext('There was an error during the upload process.')}\n`,
+ `${gettext('There was an error while unpacking the file.')}\n`,
+ `${gettext('There was an error while verifying the file you submitted.')}\n`,
+ `${dbError}\n`
],
unloading = false,
previousImport = Import.storedImport(),
@@ -116,7 +116,7 @@ define([
Import.reset();
onComplete();
- alert(gettext('Your import has failed.') + '\n\n' + errMsg); // eslint-disable-line max-len, no-alert
+ alert(`${gettext('Your import has failed.')}\n\n${errMsg}`); // eslint-disable-line max-len, no-alert
}
}
});
@@ -130,7 +130,7 @@ define([
progressall: function(e, data) {
var percentInt = data.loaded / data.total * 100,
- percentVal = parseInt(percentInt, 10) + '%',
+ percentVal = `${parseInt(percentInt, 10)}%`,
doneAt;
// Firefox makes ProgressEvent.loaded equal ProgressEvent.total only
// after receiving a response from the server (see Mozilla bug 637002),
diff --git a/cms/static/js/features/import/views/import.js b/cms/static/js/features/import/views/import.js
index e34965a092..42b36b133c 100644
--- a/cms/static/js/features/import/views/import.js
+++ b/cms/static/js/features/import/views/import.js
@@ -151,7 +151,7 @@ define(
$dom.successStage
.find('.item-progresspoint-success-date')
- .text('(' + date + ' at ' + time + ' UTC)');
+ .text(`(${date} at ${time} UTC)`);
break;
diff --git a/cms/static/js/index.js b/cms/static/js/index.js
index b27f0e0c0d..38a496afd9 100644
--- a/cms/static/js/index.js
+++ b/cms/static/js/index.js
@@ -89,13 +89,13 @@ function(domReady, $, _, CancelOnEscape, CreateCourseUtilsFactory, CreateLibrary
var makeCancelHandler = function(addType) {
return function(e) {
e.preventDefault();
- $('.new-' + addType + '-button').removeClass('is-disabled').attr('aria-disabled', false);
- $('.wrapper-create-' + addType).removeClass('is-shown');
+ $(`.new-${addType}-button`).removeClass('is-disabled').attr('aria-disabled', false);
+ $(`.wrapper-create-${addType}`).removeClass('is-shown');
// Clear out existing fields and errors
- $('#create-' + addType + '-form input[type=text]').val('');
- $('#' + addType + '_creation_error').html('');
- $('.create-' + addType + ' .wrap-error').removeClass('is-shown');
- $('.new-' + addType + '-save').off('click');
+ $(`#create-${addType}-form input[type=text]`).val('');
+ $(`#${addType}_creation_error`).html('');
+ $(`.create-${addType} .wrap-error`).removeClass('is-shown');
+ $(`.new-${addType}-save`).off('click');
};
};
diff --git a/cms/static/js/maintenance/force_publish_course.js b/cms/static/js/maintenance/force_publish_course.js
index 642b5bea4f..817efcb083 100644
--- a/cms/static/js/maintenance/force_publish_course.js
+++ b/cms/static/js/maintenance/force_publish_course.js
@@ -22,7 +22,7 @@ function($, _, gettext, ViewUtils, StringUtils, HtmlUtils) {
showError = function(containerElSelector, error) {
var errorWrapperElSelector, errorHtml;
- errorWrapperElSelector = containerElSelector + ' .wrapper-error';
+ errorWrapperElSelector = `${containerElSelector} .wrapper-error`;
errorHtml = HtmlUtils.joinHtml(
HtmlUtils.HTML('
'),
error,
diff --git a/cms/static/js/models/assignment_grade.js b/cms/static/js/models/assignment_grade.js
index 86db8d3a13..5ab85f2329 100644
--- a/cms/static/js/models/assignment_grade.js
+++ b/cms/static/js/models/assignment_grade.js
@@ -8,7 +8,7 @@ define(['backbone', 'underscore'], function(Backbone, _) {
urlRoot: '/xblock/',
url: function() {
// add ?fields=graderType to the request url (only needed for fetch, but innocuous for others)
- return Backbone.Model.prototype.url.apply(this) + '?' + $.param({fields: 'graderType'});
+ return `${Backbone.Model.prototype.url.apply(this)}?${$.param({fields: 'graderType'})}`;
}
});
return AssignmentGrade;
diff --git a/cms/static/js/models/custom_sync_xblock_info.js b/cms/static/js/models/custom_sync_xblock_info.js
index 8e9569d5fd..b96d1cbace 100644
--- a/cms/static/js/models/custom_sync_xblock_info.js
+++ b/cms/static/js/models/custom_sync_xblock_info.js
@@ -2,7 +2,7 @@ define(['js/models/xblock_info'],
function(XBlockInfo) {
var CustomSyncXBlockInfo = XBlockInfo.extend({
sync: function(method, model, options) {
- options.url = (this.urlRoots[method] || this.urlRoot) + '/' + this.get('id');
+ options.url = `${this.urlRoots[method] || this.urlRoot}/${this.get('id')}`;
return XBlockInfo.prototype.sync.call(this, method, model, options);
}
});
diff --git a/cms/static/js/models/group.js b/cms/static/js/models/group.js
index b61a27f467..335b3a72ba 100644
--- a/cms/static/js/models/group.js
+++ b/cms/static/js/models/group.js
@@ -15,7 +15,7 @@ define([
},
url: function() {
var parentModel = this.collection.parents[0];
- return parentModel.urlRoot + '/' + encodeURIComponent(parentModel.id) + '/' + encodeURIComponent(this.id);
+ return `${parentModel.urlRoot}/${encodeURIComponent(parentModel.id)}/${encodeURIComponent(this.id)}`;
},
reset: function() {
diff --git a/cms/static/js/models/license.js b/cms/static/js/models/license.js
index e60c174e2a..f9fbb4550a 100644
--- a/cms/static/js/models/license.js
+++ b/cms/static/js/models/license.js
@@ -31,13 +31,13 @@ define(['backbone', 'underscore'], function(Backbone, _) {
if (_.isBoolean(value)) {
return value ? key : null;
} else {
- return key + '=' + value;
+ return `${key}=${value}`;
}
});
// filter out nulls
optionStrings = _.filter(optionStrings, _.identity);
// build license string and return
- return type + ': ' + optionStrings.join(' ');
+ return `${type}: ${optionStrings.join(' ')}`;
},
setFromString: function(string, options) {
diff --git a/cms/static/js/models/location.js b/cms/static/js/models/location.js
index 75b4ecb633..011dbef309 100644
--- a/cms/static/js/models/location.js
+++ b/cms/static/js/models/location.js
@@ -9,11 +9,11 @@ define(['backbone', 'underscore'], function(Backbone, _) {
},
toUrl: function(overrides) {
return;
- (overrides && overrides.tag ? overrides.tag : this.get('tag')) + '://'
- + (overrides && overrides.org ? overrides.org : this.get('org')) + '/'
- + (overrides && overrides.course ? overrides.course : this.get('course')) + '/'
- + (overrides && overrides.category ? overrides.category : this.get('category')) + '/'
- + (overrides && overrides.name ? overrides.name : this.get('name')) + '/';
+ `${overrides && overrides.tag ? overrides.tag : this.get('tag')}://${
+ overrides && overrides.org ? overrides.org : this.get('org')}/${
+ overrides && overrides.course ? overrides.course : this.get('course')}/${
+ overrides && overrides.category ? overrides.category : this.get('category')}/${
+ overrides && overrides.name ? overrides.name : this.get('name')}/`;
},
_tagPattern: /[^:]+/g,
_fieldPattern: new RegExp('[^/]+', 'g'),
diff --git a/cms/static/js/models/settings/course_details.js b/cms/static/js/models/settings/course_details.js
index 302f214fd6..83235601b9 100644
--- a/cms/static/js/models/settings/course_details.js
+++ b/cms/static/js/models/settings/course_details.js
@@ -153,7 +153,7 @@ function(Backbone, _, gettext, ValidationHelpers, DateUtils, StringUtils) {
},
videosourceSample: function() {
- if (this.has('intro_video')) { return '//www.youtube.com/embed/' + this.get('intro_video'); } else { return ''; }
+ if (this.has('intro_video')) { return `//www.youtube.com/embed/${this.get('intro_video')}`; } else { return ''; }
},
// Whether or not the course pacing can be toggled. If the course
diff --git a/cms/static/js/models/settings/course_grading_policy.js b/cms/static/js/models/settings/course_grading_policy.js
index 498815cf13..4ed105c7ee 100644
--- a/cms/static/js/models/settings/course_grading_policy.js
+++ b/cms/static/js/models/settings/course_grading_policy.js
@@ -10,7 +10,7 @@ define(['backbone', 'js/models/location', 'js/collections/course_grader', 'edx-u
grace_period: null, // either null or { hours: n, minutes: m, ...}
minimum_grade_credit: null, // either null or percentage
assignment_count_info: [], // Object with keys mapping assignment type names to a list of
- //assignment display names
+ // assignment display names
},
parse: function(attributes) {
if (attributes.graders) {
diff --git a/cms/static/js/models/uploads.js b/cms/static/js/models/uploads.js
index 6e3879e1f3..e2d26b2ab3 100644
--- a/cms/static/js/models/uploads.js
+++ b/cms/static/js/models/uploads.js
@@ -42,7 +42,7 @@ define(['backbone', 'underscore', 'gettext'], function(Backbone, _, gettext) {
var attrs = this.attributes,
getRegExp = function(formats) {
// Creates regular expression like: /(?:.+)\.(jpg|png|gif)$/i
- return RegExp(('(?:.+)\\.(' + formats.join('|') + ')$'), 'i');
+ return RegExp((`(?:.+)\\.(${formats.join('|')})$`), 'i');
};
return (attrs.mimeTypes.length === 0 && attrs.fileFormats.length === 0)
@@ -57,7 +57,7 @@ define(['backbone', 'underscore', 'gettext'], function(Backbone, _, gettext) {
if (attrs.mimeTypes.concat(attrs.fileFormats).length === 1) {
return {
fileTypes: this.fileTypes()[0],
- fileExtensions: '.' + this.fileTypes()[0].toLowerCase()
+ fileExtensions: `.${this.fileTypes()[0].toLowerCase()}`
};
}
var or = gettext('or');
@@ -73,7 +73,7 @@ define(['backbone', 'underscore', 'gettext'], function(Backbone, _, gettext) {
fileExtensions: formatTypes(
_.map(this.fileTypes(),
function(type) {
- return '.' + type.toLowerCase();
+ return `.${type.toLowerCase()}`;
})
)
};
diff --git a/cms/static/js/models/xblock_info.js b/cms/static/js/models/xblock_info.js
index ea64061e9d..8447478f96 100644
--- a/cms/static/js/models/xblock_info.js
+++ b/cms/static/js/models/xblock_info.js
@@ -251,7 +251,7 @@ define(
helpers = {};
_.each(categories, function(item) {
- helpers['is' + str.titleize(item)] = function() {
+ helpers[`is${str.titleize(item)}`] = function() {
return this.get('category') === item;
};
}, this);
diff --git a/cms/static/js/sock.js b/cms/static/js/sock.js
index 43c41ba254..1512ec51bc 100644
--- a/cms/static/js/sock.js
+++ b/cms/static/js/sock.js
@@ -4,7 +4,7 @@ import 'jquery.smoothScroll';
'use strict';
-var toggleSock = function (e) {
+var toggleSock = function(e) {
e.preventDefault();
var $btnShowSockLabel = $(this).find('.copy-show');
@@ -33,9 +33,9 @@ var toggleSock = function (e) {
});
};
-domReady(function () {
+domReady(function() {
// toggling footer additional support
$('.cta-show-sock').bind('click', toggleSock);
});
-export {toggleSock}
+export {toggleSock};
diff --git a/cms/static/js/spec/utils/handle_iframe_binding_spec.js b/cms/static/js/spec/utils/handle_iframe_binding_spec.js
index 9cf632161a..3f652d2c6a 100644
--- a/cms/static/js/spec/utils/handle_iframe_binding_spec.js
+++ b/cms/static/js/spec/utils/handle_iframe_binding_spec.js
@@ -12,7 +12,7 @@ define(
doc.body.innerHTML = iframe_html;
var verify_no_modification = function(src) {
- iframe_html = '
';
+ iframe_html = `
`;
doc.body.innerHTML = iframe_html;
IframeBinding.iframeBinding(doc);
diff --git a/cms/static/js/spec/video/file_uploader_editor_spec.js b/cms/static/js/spec/video/file_uploader_editor_spec.js
index 145b262a3c..552c59cb67 100644
--- a/cms/static/js/spec/video/file_uploader_editor_spec.js
+++ b/cms/static/js/spec/video/file_uploader_editor_spec.js
@@ -50,7 +50,7 @@ define(
return {
pass: passed,
- message: 'Expected ' + actual + (passed ? '' : ' not') + ' to equal ' + expected
+ message: `Expected ${actual}${passed ? '' : ' not'} to equal ${expected}`
};
}
};
@@ -69,7 +69,7 @@ define(
return {
pass: passed,
- message: 'Expected ' + actual + (passed ? '' : ' not') + ' to equal ' + expected
+ message: `Expected ${actual}${passed ? '' : ' not'} to equal ${expected}`
};
}
};
diff --git a/cms/static/js/spec/video/transcripts/editor_spec.js b/cms/static/js/spec/video/transcripts/editor_spec.js
index def29d5040..050bdbd240 100644
--- a/cms/static/js/spec/video/transcripts/editor_spec.js
+++ b/cms/static/js/spec/video/transcripts/editor_spec.js
@@ -181,7 +181,7 @@ define(
});
$.each(metadataDict, function(index, val) {
- it('toModels with argument as ' + index, function() {
+ it(`toModels with argument as ${index}`, function() {
expect(transcripts.toModels(val)).toEqual(models);
});
});
diff --git a/cms/static/js/spec/video/transcripts/file_uploader_spec.js b/cms/static/js/spec/video/transcripts/file_uploader_spec.js
index 03de571d11..4373b478f7 100644
--- a/cms/static/js/spec/video/transcripts/file_uploader_spec.js
+++ b/cms/static/js/spec/video/transcripts/file_uploader_spec.js
@@ -81,7 +81,7 @@ define(
var elList = ['$form', '$input', '$progress'],
validFileExtensions = ['srt', 'sjson'],
result = $.map(validFileExtensions, function(item, index) {
- return '.' + item;
+ return `.${item}`;
}).join(', ');
view.validFileExtensions = validFileExtensions;
@@ -169,7 +169,7 @@ define(
};
$.each(data, function(fileType, fileInfo) {
- it(fileType + ' file type', function() {
+ it(`${fileType} file type`, function() {
var result = view.checkExtValidity(fileInfo);
expect(result).toBe(fileInfo.isValid);
@@ -190,8 +190,8 @@ define(
spyOn($.fn, 'width').and.callThrough();
view.xhrProgressHandler(null, null, null, percent);
- expect(view.$progress.width).toHaveBeenCalledWith(percent + '%');
- expect(view.$progress.html()).toBe(percent + '%');
+ expect(view.$progress.width).toHaveBeenCalledWith(`${percent}%`);
+ expect(view.$progress.html()).toBe(`${percent}%`);
});
describe('xhrCompleteHandler', function() {
diff --git a/cms/static/js/spec/video/transcripts/utils_spec.js b/cms/static/js/spec/video/transcripts/utils_spec.js
index 13f948bbbd..923f9b4427 100644
--- a/cms/static/js/spec/video/transcripts/utils_spec.js
+++ b/cms/static/js/spec/video/transcripts/utils_spec.js
@@ -104,7 +104,7 @@ define(
];
$.each(wrongArgumentLists, function(index, element) {
- it(element.argName + ' argument(s) is/are absent', function() {
+ it(`${element.argName} argument(s) is/are absent`, function() {
var result = Utils.getField.apply(this, element.list);
expect(result).toBeUndefined();
@@ -221,7 +221,7 @@ define(
it('Method: getYoutubeLink', function() {
var videoId = 'video_id',
result = Utils.getYoutubeLink(videoId),
- expectedResult = 'http://youtu.be/' + videoId;
+ expectedResult = `http://youtu.be/${videoId}`;
expect(result).toBe(expectedResult);
});
@@ -263,7 +263,7 @@ define(
describe('Wrong arguments ', function() {
it('youtube videoId is wrong', function() {
var videoId = 'wrong_id',
- link = 'http://youtu.be/' + videoId,
+ link = `http://youtu.be/${videoId}`,
result = Utils.parseLink(link);
expect(result).toEqual({mode: 'incorrect'});
diff --git a/cms/static/js/spec/video/translations_editor_spec.js b/cms/static/js/spec/video/translations_editor_spec.js
index 50f96d6885..59d8dc0637 100644
--- a/cms/static/js/spec/video/translations_editor_spec.js
+++ b/cms/static/js/spec/video/translations_editor_spec.js
@@ -65,7 +65,7 @@ define(
return {
pass: passed,
- message: 'Expected ' + actual + (passed ? '' : ' not') + ' to equal ' + expected
+ message: `Expected ${actual}${passed ? '' : ' not'} to equal ${expected}`
};
}
};
@@ -83,7 +83,7 @@ define(
return {
pass: passed,
- message: 'Expected ' + actual + (passed ? '' : ' not') + ' to equal ' + expected
+ message: `Expected ${actual}${passed ? '' : ' not'} to equal ${expected}`
};
}
};
diff --git a/cms/static/js/spec/views/active_video_upload_list_spec.js b/cms/static/js/spec/views/active_video_upload_list_spec.js
index 0ae632868c..c340202688 100644
--- a/cms/static/js/spec/views/active_video_upload_list_spec.js
+++ b/cms/static/js/spec/views/active_video_upload_list_spec.js
@@ -117,7 +117,7 @@ define(
});
makeUploadUrl = function(fileName) {
- return 'http://www.example.com/test_url/' + fileName;
+ return `http://www.example.com/test_url/${fileName}`;
};
getSentRequests = function() {
@@ -222,7 +222,7 @@ define(
fileInfo
]
},
- S3Url = 'http://s3.aws.com/upload/videos/' + fileInfo.name,
+ S3Url = `http://s3.aws.com/upload/videos/${fileInfo.name}`,
requests;
// this is required so that we can use AjaxHelpers ajax mock utils instead of jasmine mock-ajax.js
@@ -356,7 +356,7 @@ define(
{desc: 'smaller than', additionalBytes: -1}
],
function(caseInfo) {
- it(caseInfo.desc + 'max file size', function() {
+ it(`${caseInfo.desc}max file size`, function() {
var maxFileSizeInBytes = this.view.getMaxFileSizeInBytes(),
fileSize = maxFileSizeInBytes + caseInfo.additionalBytes,
fileToUpload = {
@@ -374,7 +374,7 @@ define(
verifyUploadViewInfo(
uploadView,
'Your file could not be uploaded',
- 'file.mp4 exceeds maximum size of ' + videoUploadMaxFileSizeInGB + ' GB.'
+ `file.mp4 exceeds maximum size of ${videoUploadMaxFileSizeInGB} GB.`
);
verifyA11YMessage(
StringUtils.interpolate(
@@ -415,10 +415,10 @@ define(
function(caseInfo) {
var fileNames = _.map(
_.range(caseInfo.numFiles),
- function(i) { return 'test' + i + '.mp4'; }
+ function(i) { return `test${i}.mp4`; }
);
- describe('on selection of ' + caseInfo.desc, function() {
+ describe(`on selection of ${caseInfo.desc}`, function() {
beforeEach(function() {
// The files property cannot be set on a file input for
// security reasons, so we must mock the access mechanism
@@ -512,7 +512,7 @@ define(
var refreshDescription = isViewRefresh ? ' (refreshed)' : ' (not refreshed)';
var subCases = [
{
- desc: 'completion' + refreshDescription,
+ desc: `completion${refreshDescription}`,
responseStatus: 204,
statusText: ActiveVideoUpload.STATUS_COMPLETED,
progressValue: 1,
@@ -521,7 +521,7 @@ define(
isViewRefresh: isViewRefresh
},
{
- desc: 'failure' + refreshDescription,
+ desc: `failure${refreshDescription}`,
responseStatus: 500,
statusText: ActiveVideoUpload.STATUS_FAILED,
progressValue: 0,
@@ -533,7 +533,7 @@ define(
_.each(subCases,
function(subCaseInfo) {
- describe('and upload ' + subCaseInfo.desc, function() {
+ describe(`and upload ${subCaseInfo.desc}`, function() {
var refreshSpy = null;
beforeEach(function() {
diff --git a/cms/static/js/spec/views/assets_spec.js b/cms/static/js/spec/views/assets_spec.js
index e2105df2d7..9d45936714 100644
--- a/cms/static/js/spec/views/assets_spec.js
+++ b/cms/static/js/spec/views/assets_spec.js
@@ -276,7 +276,7 @@ function($, AjaxHelpers, URI, AssetsView, AssetCollection, ViewHelpers) {
expect(assetsView).toBeDefined();
var requests = AjaxHelpers.requests(this);
$.each(assetsView.pagingView.filterableColumns, function(columnID, columnData) {
- var $typeColumn = $('#' + columnID);
+ var $typeColumn = $(`#${columnID}`);
assetsView.pagingView.setPage(1);
respondWithMockAssets(requests);
var assetsNumber = assetsView.collection.length;
@@ -292,7 +292,7 @@ function($, AjaxHelpers, URI, AssetsView, AssetCollection, ViewHelpers) {
expect(assetsView).toBeDefined();
setup.call(this, mockExampleAssetsResponse);
$.each(assetsView.pagingView.filterableColumns, function(columnID, columnData) {
- var $typeColumn = $('#' + columnID);
+ var $typeColumn = $(`#${columnID}`);
expect($typeColumn).toBeVisible();
var assetsNumber = $('#asset-table-body .type-col').length;
assetsView.openFilterColumn($typeColumn);
@@ -327,7 +327,7 @@ function($, AjaxHelpers, URI, AssetsView, AssetCollection, ViewHelpers) {
$.each(assetsView.pagingView.filterableColumns, function(columnID, columnData) {
assetsView.pagingView.setPage(1);
respondWithMockAssets(requests);
- var $typeColumn = $('#' + columnID);
+ var $typeColumn = $(`#${columnID}`);
expect($typeColumn).toBeVisible();
var assetsNumber = assetsView.collection.length;
$typeColumn.trigger('click');
diff --git a/cms/static/js/spec/views/container_spec.js b/cms/static/js/spec/views/container_spec.js
index f963353cc3..eadff855b5 100644
--- a/cms/static/js/spec/views/container_spec.js
+++ b/cms/static/js/spec/views/container_spec.js
@@ -15,7 +15,7 @@ describe('Container View', () => {
verifyRequest, verifyNumReorderCalls, respondToRequest, notificationSpy,
rootLocator = 'locator-container',
- containerTestUrl = '/xblock/' + rootLocator,
+ containerTestUrl = `/xblock/${rootLocator}`,
groupAUrl = '/xblock/locator-group-A',
groupA = 'locator-group-A',
@@ -34,7 +34,7 @@ describe('Container View', () => {
beforeEach(() => {
EditHelpers.installMockXBlock();
EditHelpers.installViewTemplates();
- appendSetFixtures('
');
+ appendSetFixtures(`
`);
notificationSpy = EditHelpers.createNotificationSpy();
model = new XBlockInfo({
id: rootLocator,
@@ -80,7 +80,7 @@ describe('Container View', () => {
};
getComponent = function(locator) {
- return containerView.$('.studio-xblock-wrapper[data-locator="' + locator + '"]');
+ return containerView.$(`.studio-xblock-wrapper[data-locator="${locator}"]`);
};
getDragHandle = function(locator) {
diff --git a/cms/static/js/spec/views/course_video_settings_spec.js b/cms/static/js/spec/views/course_video_settings_spec.js
index 3a2123d0fe..d4d2940867 100644
--- a/cms/static/js/spec/views/course_video_settings_spec.js
+++ b/cms/static/js/spec/views/course_video_settings_spec.js
@@ -150,10 +150,10 @@ define(
verifyMessage = function(state, message) {
var icon = state === 'error' ? 'fa-info-circle' : 'fa-check-circle';
- expect($courseVideoSettingsEl.find('.course-video-settings-message-wrapper.' + state).html()).toEqual(
+ expect($courseVideoSettingsEl.find(`.course-video-settings-message-wrapper.${state}`).html()).toEqual(
'
'
- + ''
- + '' + message + ''
+ + ``
+ + `${message}`
+ '
'
);
};
@@ -163,7 +163,7 @@ define(
// Check None provider is selected.
expect($transcriptProvidersListEl.find('input[type=radio]:checked').val()).toEqual(selectedProvider.value); // eslint-disable-line max-len
_.each(providers, function(provider, key) {
- $transcriptProvidersListEl.find('label[for=transcript-provider-' + key + ']').val(provider.displayName); // eslint-disable-line max-len
+ $transcriptProvidersListEl.find(`label[for=transcript-provider-${key}]`).val(provider.displayName); // eslint-disable-line max-len
});
};
@@ -219,15 +219,15 @@ define(
};
verifyOrganizationCredentialField = function(fieldName, label) {
- var elementSelector = courseVideoSettingsView.selectedProvider + '-' + fieldName;
+ var elementSelector = `${courseVideoSettingsView.selectedProvider}-${fieldName}`;
// Verify that correct label is shown.
expect(
- $courseVideoSettingsEl.find('.' + elementSelector + '-wrapper label .title').html()
+ $courseVideoSettingsEl.find(`.${elementSelector}-wrapper label .title`).html()
).toEqual(label);
// Verify that credential field is shown.
expect(
- $courseVideoSettingsEl.find('.' + elementSelector + '-wrapper .' + elementSelector)
+ $courseVideoSettingsEl.find(`.${elementSelector}-wrapper .${elementSelector}`)
).toExist();
};
@@ -235,7 +235,7 @@ define(
// Verify that success message is shown.
verifyMessage(
'success',
- transcriptionPlans[courseVideoSettingsView.selectedProvider].display_name + ' credentials saved'
+ `${transcriptionPlans[courseVideoSettingsView.selectedProvider].display_name} credentials saved`
);
// Also verify that transcript credential state is updated.
@@ -253,7 +253,7 @@ define(
if ($courseVideoSettingsEl.find('.selected-transcript-provider').length) {
$courseVideoSettingsEl.find('.selected-transcript-provider .action-change-provider').click();
}
- $courseVideoSettingsEl.find('#transcript-provider-' + selectedProvider).click();
+ $courseVideoSettingsEl.find(`#transcript-provider-${selectedProvider}`).click();
};
resetProvider = function() {
@@ -279,7 +279,7 @@ define(
// Provide organization credentials.
_.each(fieldValues, function(key) {
- $courseVideoSettingsEl.find('.' + courseVideoSettingsView.selectedProvider + '-' + key).val(key);
+ $courseVideoSettingsEl.find(`.${courseVideoSettingsView.selectedProvider}-${key}`).val(key);
});
// Click save organization credentials button to save credentials.
$courseVideoSettingsEl.find('.action-update-org-credentials').click();
@@ -714,8 +714,8 @@ define(
expect($courseVideoSettingsEl.find('.transcription-account-details.warning')).toExist();
// Verify message
expect($courseVideoSettingsEl.find('.transcription-account-details').html()).toEqual(
- '
This action updates the ' + courseVideoSettingsView.selectedProvider
- + ' information for your entire organization.'
+ `
This action updates the ${courseVideoSettingsView.selectedProvider
+ } information for your entire organization.`
);
});
@@ -740,12 +740,12 @@ define(
$courseVideoSettingsEl.find('.action-update-org-credentials').click();
verifyPreferanceErrorState(
- $courseVideoSettingsEl.find('.' + courseVideoSettingsView.selectedProvider + '-api-key-wrapper'),
+ $courseVideoSettingsEl.find(`.${courseVideoSettingsView.selectedProvider}-api-key-wrapper`),
true
);
verifyPreferanceErrorState(
- $courseVideoSettingsEl.find('.' + courseVideoSettingsView.selectedProvider + '-api-secret-wrapper'),
+ $courseVideoSettingsEl.find(`.${courseVideoSettingsView.selectedProvider}-api-secret-wrapper`),
true
);
});
diff --git a/cms/static/js/spec/views/group_configuration_spec.js b/cms/static/js/spec/views/group_configuration_spec.js
index d197c64d10..b6f44f0fc3 100644
--- a/cms/static/js/spec/views/group_configuration_spec.js
+++ b/cms/static/js/spec/views/group_configuration_spec.js
@@ -675,9 +675,9 @@ define([
verifyEditingGroup, respondToSave, expectGroupsVisible, correctValidationError;
scopedGroupSelector = function(groupIndex, additionalSelectors) {
- var groupSelector = '.partition-groups-list-item-' + groupIndex;
+ var groupSelector = `.partition-groups-list-item-${groupIndex}`;
if (additionalSelectors) {
- return groupSelector + ' ' + additionalSelectors;
+ return `${groupSelector} ${additionalSelectors}`;
} else {
return groupSelector;
}
@@ -860,7 +860,7 @@ define([
var requests = AjaxHelpers.requests(this),
newGroupName = 'New Group Name',
view = renderView();
- editNewGroup(view, {newName: ' ' + newGroupName + ' ', save: true});
+ editNewGroup(view, {newName: ` ${newGroupName} `, save: true});
respondToSave(requests, view);
expect(view.collection.at(0).get('name')).toBe(newGroupName);
});
diff --git a/cms/static/js/spec/views/modals/move_xblock_modal_spec.js b/cms/static/js/spec/views/modals/move_xblock_modal_spec.js
index 747fd7875b..6728923316 100644
--- a/cms/static/js/spec/views/modals/move_xblock_modal_spec.js
+++ b/cms/static/js/spec/views/modals/move_xblock_modal_spec.js
@@ -48,7 +48,7 @@ function($, _, AjaxHelpers, TemplateHelpers, ViewHelpers, MoveXBlockModal, XBloc
showModal();
expect(
modal.$el.find('.modal-header .title').contents().get(0).nodeValue.trim()
- ).toEqual('Move: ' + DISPLAY_NAME);
+ ).toEqual(`Move: ${DISPLAY_NAME}`);
expect(
modal.$el.find('.modal-sr-title').text().trim()
).toEqual('Choose a location to move your component to');
diff --git a/cms/static/js/spec/views/module_edit_spec.js b/cms/static/js/spec/views/module_edit_spec.js
index c46cb2b873..68ef8daeff 100644
--- a/cms/static/js/spec/views/module_edit_spec.js
+++ b/cms/static/js/spec/views/module_edit_spec.js
@@ -64,7 +64,7 @@ describe('ModuleEdit', function() {
});
});
describe('render', function() {
- beforeEach(function () {
+ beforeEach(function() {
edit_helpers.installEditTemplates(true);
spyOn(this.moduleEdit, 'loadDisplay');
spyOn(this.moduleEdit, 'delegateEvents');
@@ -124,7 +124,7 @@ describe('ModuleEdit', function() {
});
it('loads the module preview via ajax on the view element', function() {
expect($.ajax).toHaveBeenCalledWith({
- url: '/xblock/' + this.moduleEdit.model.id + '/student_view',
+ url: `/xblock/${this.moduleEdit.model.id}/student_view`,
type: 'GET',
cache: false,
headers: {
@@ -133,7 +133,7 @@ describe('ModuleEdit', function() {
success: jasmine.any(Function)
});
expect($.ajax).not.toHaveBeenCalledWith({
- url: '/xblock/' + this.moduleEdit.model.id + '/studio_view',
+ url: `/xblock/${this.moduleEdit.model.id}/studio_view`,
type: 'GET',
headers: {
Accept: 'application/json'
@@ -146,7 +146,7 @@ describe('ModuleEdit', function() {
it('loads the editing view via ajax on demand', function() {
var mockXBlockEditorHtml;
expect($.ajax).not.toHaveBeenCalledWith({
- url: '/xblock/' + this.moduleEdit.model.id + '/studio_view',
+ url: `/xblock/${this.moduleEdit.model.id}/studio_view`,
type: 'GET',
cache: false,
headers: {
@@ -201,7 +201,7 @@ describe('ModuleEdit', function() {
]
});
expect($.ajax).toHaveBeenCalledWith({
- url: '/xblock/' + this.moduleEdit.model.id + '/studio_view',
+ url: `/xblock/${this.moduleEdit.model.id}/studio_view`,
type: 'GET',
cache: false,
headers: {
diff --git a/cms/static/js/spec/views/move_xblock_spec.js b/cms/static/js/spec/views/move_xblock_spec.js
index fa1eaba99b..666833ff5b 100644
--- a/cms/static/js/spec/views/move_xblock_spec.js
+++ b/cms/static/js/spec/views/move_xblock_spec.js
@@ -144,8 +144,8 @@ describe('MoveXBlock', function() {
createChildXBlockInfo = function(category, outlineOptions, xblockIndex) {
var childInfo = {
category: categoryMap[category],
- display_name: category + '_display_name_' + xblockIndex,
- id: category + '_ID_' + xblockIndex
+ display_name: `${category}_display_name_${xblockIndex}`,
+ id: `${category}_ID_${xblockIndex}`
};
return createXBlockInfo(parentChildMap[category], outlineOptions, childInfo);
};
@@ -236,11 +236,11 @@ describe('MoveXBlock', function() {
*/
verifyListViewInfo = function(category, expectedXBlocksCount, hasCurrentLocation) {
var displayedInfo = getDisplayedInfo();
- expect(displayedInfo.categoryText).toEqual(modal.moveXBlockListView.categoriesText[category] + ':');
+ expect(displayedInfo.categoryText).toEqual(`${modal.moveXBlockListView.categoriesText[category]}:`);
expect(displayedInfo.xblockCount).toEqual(expectedXBlocksCount);
expect(displayedInfo.xblockDisplayNames).toEqual(
_.map(_.range(expectedXBlocksCount), function(xblockIndex) {
- return category + '_display_name_' + xblockIndex;
+ return `${category}_display_name_${xblockIndex}`;
})
);
if (category === 'component') {
@@ -276,7 +276,7 @@ describe('MoveXBlock', function() {
expect(displayedBreadcrumbs).toEqual(
_.map(visitedCategories, function(visitedCategory) {
return visitedCategory === 'course'
- ? 'Course Outline' : visitedCategory + '_display_name_' + xblockIndex;
+ ? 'Course Outline' : `${visitedCategory}_display_name_${xblockIndex}`;
})
);
};
@@ -288,7 +288,7 @@ describe('MoveXBlock', function() {
*/
clickForwardButton = function(buttonIndex) {
buttonIndex = buttonIndex || 0; // eslint-disable-line no-param-reassign
- modal.moveXBlockListView.$el.find('[data-item-index="' + buttonIndex + '"] button').click();
+ modal.moveXBlockListView.$el.find(`[data-item-index="${buttonIndex}"] button`).click();
};
/**
@@ -429,7 +429,7 @@ describe('MoveXBlock', function() {
});
modal.$el.find('.modal-actions .action-move').click();
sendMoveXBlockRequest(requests, sourceLocator);
- AjaxHelpers.expectJsonRequest(requests, 'GET', '/xblock/' + sourceParentLocator);
+ AjaxHelpers.expectJsonRequest(requests, 'GET', `/xblock/${sourceParentLocator}`);
AjaxHelpers.respondWithJson(requests, sourceParentXBlockInfo);
expect(getMovedAlertNotification().html().length).not.toEqual(0);
verifyConfirmationFeedbackTitleText(sourceDisplayName);
diff --git a/cms/static/js/spec/views/paged_container_spec.js b/cms/static/js/spec/views/paged_container_spec.js
index ad9c5891ab..37083e6418 100644
--- a/cms/static/js/spec/views/paged_container_spec.js
+++ b/cms/static/js/spec/views/paged_container_spec.js
@@ -19,9 +19,9 @@ function($, _, AjaxHelpers, URI, XBlockInfo, PagedContainer, PagingHeader, Pagin
};
var options = _.extend(default_options, override_options);
return '
'
- + ''
- + htmlResponseTpl(options)
- + ''
+ + `${
+ htmlResponseTpl(options)
+ }`
+ '
';
}
@@ -506,7 +506,7 @@ function($, _, AjaxHelpers, URI, XBlockInfo, PagedContainer, PagingHeader, Pagin
defaultUrl = '/preview/xblock/handler/trigger_previews';
testSendsAjax = function(show_previews) {
- it('should send ' + (!show_previews) + ' when showChildrenPreviews was ' + show_previews, function() {
+ it(`should send ${!show_previews} when showChildrenPreviews was ${show_previews}`, function() {
var requests = AjaxHelpers.requests(this);
pagingContainer.collection.showChildrenPreviews = show_previews;
pagingContainer.togglePreviews();
diff --git a/cms/static/js/spec/views/pages/container_spec.js b/cms/static/js/spec/views/pages/container_spec.js
index 642d092de4..7907060687 100644
--- a/cms/static/js/spec/views/pages/container_spec.js
+++ b/cms/static/js/spec/views/pages/container_spec.js
@@ -15,7 +15,7 @@ import Course from 'js/models/course';
import 'jquery.simulate';
function parameterized_suite(label, globalPageOptions) {
- describe(label + ' ContainerPage', function() {
+ describe(`${label} ContainerPage`, function() {
var getContainerPage, renderContainerPage, handleContainerPageRefresh, expectComponents,
respondWithHtml, model, containerPage, requests, initialDisplayName,
mockContainerPage = readFixtures('templates/mock/mock-container-page.underscore'),
@@ -344,12 +344,12 @@ function parameterized_suite(label, globalPageOptions) {
allComponentsInGroup = _.map(
_.range(NUM_COMPONENTS_PER_GROUP),
function(index) {
- return 'locator-component-' + GROUP_TO_TEST + (index + 1);
+ return `locator-component-${GROUP_TO_TEST}${index + 1}`;
}
);
getGroupElement = function() {
- return containerPage.$("[data-locator='locator-group-" + GROUP_TO_TEST + "']");
+ return containerPage.$(`[data-locator='locator-group-${GROUP_TO_TEST}']`);
};
describe('Deleting an xblock', function() {
@@ -377,7 +377,7 @@ function parameterized_suite(label, globalPageOptions) {
// first request to delete the component
AjaxHelpers.expectJsonRequest(requests, 'DELETE',
- '/xblock/locator-component-' + GROUP_TO_TEST + (componentIndex + 1),
+ `/xblock/locator-component-${GROUP_TO_TEST}${componentIndex + 1}`,
null);
AjaxHelpers.respondWithNoContent(requests);
@@ -489,8 +489,8 @@ function parameterized_suite(label, globalPageOptions) {
// verify content of request
AjaxHelpers.expectJsonRequest(requests, 'POST', '/xblock/', {
- duplicate_source_locator: 'locator-component-' + GROUP_TO_TEST + (componentIndex + 1),
- parent_locator: 'locator-group-' + GROUP_TO_TEST
+ duplicate_source_locator: `locator-component-${GROUP_TO_TEST}${componentIndex + 1}`,
+ parent_locator: `locator-group-${GROUP_TO_TEST}`
});
// send the response
@@ -568,7 +568,7 @@ function parameterized_suite(label, globalPageOptions) {
});
var updatePreviewButtonTest = function(show_previews, expected_text) {
- it('can set preview button to "' + expected_text + '"', function() {
+ it(`can set preview button to "${expected_text}"`, function() {
containerPage = getContainerPage();
containerPage.updatePreviewButton(show_previews);
expect(getButtonText(containerPage)).toBe(expected_text);
diff --git a/cms/static/js/spec/views/pages/container_subviews_spec.js b/cms/static/js/spec/views/pages/container_subviews_spec.js
index d3860e8530..cde0b42d81 100644
--- a/cms/static/js/spec/views/pages/container_subviews_spec.js
+++ b/cms/static/js/spec/views/pages/container_subviews_spec.js
@@ -343,15 +343,15 @@ describe('Container Subviews', function() {
it('renders the last published date and user when there are no changes', function() {
renderContainerPage(this, mockContainerXBlockHtml);
fetch({published_on: 'Jul 01, 2014 at 12:45 UTC', published_by: 'amako'});
- expect(containerPage.$(lastDraftCss).text()).
- toContain('Last published Jul 01, 2014 at 12:45 UTC by amako');
+ expect(containerPage.$(lastDraftCss).text())
+ .toContain('Last published Jul 01, 2014 at 12:45 UTC by amako');
});
it('renders the last saved date and user when there are changes', function() {
renderContainerPage(this, mockContainerXBlockHtml);
fetch({has_changes: true, edited_on: 'Jul 02, 2014 at 14:20 UTC', edited_by: 'joe'});
- expect(containerPage.$(lastDraftCss).text()).
- toContain('Draft saved on Jul 02, 2014 at 14:20 UTC by joe');
+ expect(containerPage.$(lastDraftCss).text())
+ .toContain('Draft saved on Jul 02, 2014 at 14:20 UTC by joe');
});
describe('Release Date', function() {
@@ -596,8 +596,8 @@ describe('Container Subviews', function() {
fetch({
published: true, published_on: 'Jul 01, 2014 at 12:45 UTC', published_by: 'amako'
});
- expect(containerPage.$(lastPublishCss).text()).
- toContain('Last published Jul 01, 2014 at 12:45 UTC by amako');
+ expect(containerPage.$(lastPublishCss).text())
+ .toContain('Last published Jul 01, 2014 at 12:45 UTC by amako');
});
it('renders correctly when the block is published without publish info', function() {
diff --git a/cms/static/js/spec/views/pages/course_outline_spec.js b/cms/static/js/spec/views/pages/course_outline_spec.js
index 327e5ec21d..8855554e61 100644
--- a/cms/static/js/spec/views/pages/course_outline_spec.js
+++ b/cms/static/js/spec/views/pages/course_outline_spec.js
@@ -160,11 +160,11 @@ describe('CourseOutlinePage', function() {
};
getItemsOfType = function(type) {
- return outlinePage.$('.outline-' + type);
+ return outlinePage.$(`.outline-${type}`);
};
getItemHeaders = function(type) {
- return getItemsOfType(type).find('> .' + type + '-header');
+ return getItemsOfType(type).find(`> .${type}-header`);
};
verifyItemsExpanded = function(type, isExpanded) {
@@ -210,7 +210,7 @@ describe('CourseOutlinePage', function() {
setSelfPacedCustomPLS = function() {
setSelfPaced();
course.set('is_custom_relative_dates_active', true);
- }
+ };
createCourseOutlinePage = function(test, courseJSON, createOnly) {
requests = AjaxHelpers.requests(test);
@@ -247,7 +247,7 @@ describe('CourseOutlinePage', function() {
createCourseOutlinePageAndShowUnit(this, mockCourseJSON);
getItemHeaders(type).find('.publish-button').click();
$('.wrapper-modal-window .action-publish').click();
- AjaxHelpers.expectJsonRequest(requests, 'POST', '/xblock/mock-' + type, {
+ AjaxHelpers.expectJsonRequest(requests, 'POST', `/xblock/mock-${type}`, {
publish: 'make_public'
});
expect(requests[0].requestHeaders['X-HTTP-Method-Override']).toBe('PATCH');
@@ -688,7 +688,7 @@ describe('CourseOutlinePage', function() {
var highlights = [],
i;
for (i = 0; i < numberOfHighlights; i++) {
- highlights.push('Highlight' + (i + 1));
+ highlights.push(`Highlight${i + 1}`);
}
return highlights;
};
@@ -1073,7 +1073,7 @@ describe('CourseOutlinePage', function() {
};
setContentVisibility = function(visibility) {
- $('input[name=content-visibility][value=' + visibility + ']').prop('checked', true);
+ $(`input[name=content-visibility][value=${visibility}]`).prop('checked', true);
};
selectDisableSpecialExams = function() {
@@ -1122,7 +1122,7 @@ describe('CourseOutlinePage', function() {
};
expectShowCorrectness = function(showCorrectness) {
- expect($('input[name=show-correctness][value=' + showCorrectness + ']').is(':checked')).toBe(true);
+ expect($(`input[name=show-correctness][value=${showCorrectness}]`).is(':checked')).toBe(true);
};
getMockNoPrereqOrExamsCourseJSON = function() {
@@ -1440,7 +1440,7 @@ describe('CourseOutlinePage', function() {
$('.wrapper-modal-window .action-save').click();
});
- it('can select the onboarding exam when a course supports onboarding', function () {
+ it('can select the onboarding exam when a course supports onboarding', function() {
var mockCourseWithSpecialExamJSON = createMockCourseJSON({}, [
createMockSectionJSON({
has_changes: true,
@@ -2090,12 +2090,12 @@ describe('CourseOutlinePage', function() {
var setShowCorrectness;
setShowCorrectness = function(showCorrectness) {
- $('input[name=show-correctness][value=' + showCorrectness + ']').click();
+ $(`input[name=show-correctness][value=${showCorrectness}]`).click();
};
describe('Show correctness set by subsection metadata.', function() {
$.each(['always', 'never', 'past_due'], function(index, showCorrectness) {
- it('show_correctness="' + showCorrectness + '"', function() {
+ it(`show_correctness="${showCorrectness}"`, function() {
var mockCourseJSONCorrectness = createMockCourseJSON({}, [
createMockSectionJSON({}, [
createMockSubsectionJSON({show_correctness: showCorrectness}, [])
@@ -2124,7 +2124,7 @@ describe('CourseOutlinePage', function() {
});
$.each(['never', 'past_due'], function(index, showCorrectness) {
- it('show_correctness="' + showCorrectness + '" updates settings, republishes', function() {
+ it(`show_correctness="${showCorrectness}" updates settings, republishes`, function() {
var expectedSettings = $.extend(true, {}, defaultModalSettings, {publish: 'republish'});
expectedSettings.metadata.show_correctness = showCorrectness;
@@ -2173,7 +2173,7 @@ describe('CourseOutlinePage', function() {
expect($modalWindow.find('.outline-subsection')).not.toExist();
});
- describe('Self Paced with Custom Personalized Learner Schedules (PLS)', function () {
+ describe('Self Paced with Custom Personalized Learner Schedules (PLS)', function() {
beforeEach(function() {
var mockCourseJSON = createMockCourseJSON({}, [
createMockSectionJSON({}, [
@@ -2192,7 +2192,7 @@ describe('CourseOutlinePage', function() {
selectRelativeWeeksSubsection = function(weeks) {
$('#due_in').val(weeks).trigger('keyup');
- }
+ };
mockCustomPacingServerValuesJson = createMockSectionJSON({
release_date: 'Jan 01, 2970 at 05:00 UTC'
@@ -2217,7 +2217,7 @@ describe('CourseOutlinePage', function() {
])
]);
- it('can show correct editors for self_paced course with custom pacing', function (){
+ it('can show correct editors for self_paced course with custom pacing', function() {
outlinePage.$('.outline-subsection .configure-button').click();
expect($('.edit-settings-release').length).toBe(0);
// Due date input exists for custom pacing self paced courses
@@ -2286,7 +2286,7 @@ describe('CourseOutlinePage', function() {
$('#grading_type').val('notgraded').trigger('change');
$('#due_in').val('').trigger('change');
expect($('#relative_date_input').css('display')).toBe('none');
- })
+ });
it('shows validation error on relative date', function() {
outlinePage.$('.outline-subsection .configure-button').click();
@@ -2353,7 +2353,7 @@ describe('CourseOutlinePage', function() {
'Contains staff only content'
);
});
- })
+ });
});
// Note: most tests for units can be found in Bok Choy
@@ -2452,7 +2452,7 @@ describe('CourseOutlinePage', function() {
expect(messages).toContainText('Contains staff only content');
});
- describe('discussion settings', function () {
+ describe('discussion settings', function() {
it('hides discussion settings if unit level discussions are disabled', function() {
getUnitStatus({}, {unit_level_discussions: false});
outlinePage.$('.outline-unit .configure-button').click();
diff --git a/cms/static/js/spec/views/pages/library_users_spec.js b/cms/static/js/spec/views/pages/library_users_spec.js
index 4d8f8463eb..14aa3d75bf 100644
--- a/cms/static/js/spec/views/pages/library_users_spec.js
+++ b/cms/static/js/spec/views/pages/library_users_spec.js
@@ -10,8 +10,8 @@ function($, AjaxHelpers, ViewHelpers, ManageUsersFactory, ViewUtils) {
var team_member_fixture = readFixtures('team-member.underscore');
function setRole(email, role) {
- var $user_li = $('li.user-item[data-email="' + email + '"]');
- var $role_action = $('li.action-role a.make-' + role, $user_li);
+ var $user_li = $(`li.user-item[data-email="${email}"]`);
+ var $role_action = $(`li.action-role a.make-${role}`, $user_li);
expect($role_action).toBeVisible();
$role_action.click();
}
@@ -110,7 +110,7 @@ function($, AjaxHelpers, ViewHelpers, ManageUsersFactory, ViewUtils) {
var promptSpy = ViewHelpers.createPromptSpy();
var reloadSpy = spyOn(ViewUtils, 'reload');
var email = 'honor@example.com';
- $('.user-item[data-email="' + email + '"] .action-delete .delete').click();
+ $(`.user-item[data-email="${email}"] .action-delete .delete`).click();
ViewHelpers.verifyPromptShowing(promptSpy, 'Are you sure?');
ViewHelpers.confirmPrompt(promptSpy);
ViewHelpers.verifyPromptHidden(promptSpy);
diff --git a/cms/static/js/spec/views/paging_spec.js b/cms/static/js/spec/views/paging_spec.js
index f01edf9fed..1d7c5a2ed4 100644
--- a/cms/static/js/spec/views/paging_spec.js
+++ b/cms/static/js/spec/views/paging_spec.js
@@ -10,7 +10,7 @@ function($, URI, AjaxHelpers, PagingCollection, PagingView, PagingHeader) {
'use strict';
var createPageableItem = function(index) {
- var id = 'item_' + index;
+ var id = `item_${index}`;
return {
id: id,
display_name: id,
diff --git a/cms/static/js/spec/views/previous_video_upload_list_spec.js b/cms/static/js/spec/views/previous_video_upload_list_spec.js
index 01a0dd1ca7..88576f2421 100644
--- a/cms/static/js/spec/views/previous_video_upload_list_spec.js
+++ b/cms/static/js/spec/views/previous_video_upload_list_spec.js
@@ -20,7 +20,7 @@ define(
_.range(numModels),
function(num, index) {
return new Backbone.Model(
- _.extend({}, modelData, {edx_video_id: 'dummy_id_' + index})
+ _.extend({}, modelData, {edx_video_id: `dummy_id_${index}`})
);
}
)
@@ -66,7 +66,7 @@ define(
if (confirmRemove) {
// click on Remove button on confirmation popup
$('.action-primary').click();
- AjaxHelpers.expectJsonRequest(requests, 'DELETE', videoHandlerUrl + '/dummy_id_0');
+ AjaxHelpers.expectJsonRequest(requests, 'DELETE', `${videoHandlerUrl}/dummy_id_0`);
AjaxHelpers.respondWithNoContent(requests);
numVideos -= 1;
firstVideoId = 'dummy_id_1';
diff --git a/cms/static/js/spec/views/video_thumbnail_spec.js b/cms/static/js/spec/views/video_thumbnail_spec.js
index 31e0ea1e3f..cf1a2fc6f0 100644
--- a/cms/static/js/spec/views/video_thumbnail_spec.js
+++ b/cms/static/js/spec/views/video_thumbnail_spec.js
@@ -49,7 +49,7 @@ define(
},
collection = new Backbone.Collection(_.map(_.range(numVideos), function(num, index) {
return new Backbone.Model(
- _.extend({}, defaultData, {edx_video_id: 'dummy_id_' + index}, modelData)
+ _.extend({}, defaultData, {edx_video_id: `dummy_id_${index}`}, modelData)
);
}));
videoListView = new PreviousVideoUploadListView({
@@ -192,7 +192,7 @@ define(
AjaxHelpers.expectRequest(
requests,
'POST',
- IMAGE_UPLOAD_URL + '/dummy_id_' + videoViewIndex,
+ `${IMAGE_UPLOAD_URL}/dummy_id_${videoViewIndex}`,
new FormData()
);
@@ -221,7 +221,7 @@ define(
it('calls readMessage with correct message', function() {
var errorMessage = 'Image upload failed. This image file type is not supported. Supported file '
- + 'types are ' + videoThumbnailView.getVideoImageSupportedFileFormats().humanize + '.',
+ + `types are ${videoThumbnailView.getVideoImageSupportedFileFormats().humanize}.`,
successData = {
files: [createFakeImageFile()],
submit: function() {}
@@ -270,8 +270,8 @@ define(
// Verify error message
expect($videoListEl.find('.thumbnail-error-wrapper').find('.action-text').html()
.trim()).toEqual(
- 'Image upload failed. The selected image must be larger than '
- + videoThumbnailView.getVideoImageMinSize().humanize + '.'
+ `Image upload failed. The selected image must be larger than ${
+ videoThumbnailView.getVideoImageMinSize().humanize}.`
);
});
@@ -285,8 +285,8 @@ define(
// Verify error message
expect($videoListEl.find('.thumbnail-error-wrapper').find('.action-text').html()
.trim()).toEqual(
- 'Image upload failed. The selected image must be smaller than '
- + videoThumbnailView.getVideoImageMaxSize().humanize + '.'
+ `Image upload failed. The selected image must be smaller than ${
+ videoThumbnailView.getVideoImageMaxSize().humanize}.`
);
});
@@ -322,8 +322,8 @@ define(
// Verify error message
expect($videoListEl.find('.thumbnail-error-wrapper').find('.action-text').html()
.trim()).toEqual(
- 'Image upload failed. This image file type is not supported. Supported file types are '
- + videoThumbnailView.getVideoImageSupportedFileFormats().humanize + '.'
+ `Image upload failed. This image file type is not supported. Supported file types are ${
+ videoThumbnailView.getVideoImageSupportedFileFormats().humanize}.`
);
});
diff --git a/cms/static/js/spec/views/video_transcripts_spec.js b/cms/static/js/spec/views/video_transcripts_spec.js
index c485d1bec9..c0e684d23a 100644
--- a/cms/static/js/spec/views/video_transcripts_spec.js
+++ b/cms/static/js/spec/views/video_transcripts_spec.js
@@ -61,7 +61,7 @@ define(
expect(downloadTranscriptActionEl.html().trim(), 'Download');
expect(
downloadTranscriptActionEl.attr('href'),
- TRANSCRIPT_DOWNLOAD_URL + '?edx_video_id=' + edxVideoID + '&language_code=' + transcriptLanguage
+ `${TRANSCRIPT_DOWNLOAD_URL}?edx_video_id=${edxVideoID}&language_code=${transcriptLanguage}`
);
expect(uploadTranscriptActionEl.html().trim(), 'Replace');
@@ -143,7 +143,7 @@ define(
videoTranscriptsView.$el.find('.video-transcripts-wrapper').hasClass('hidden')
).toEqual(true);
expect(videoTranscriptsView.$el.find('.toggle-show-transcripts-button-text').html().trim()).toEqual(
- 'Show transcripts (' + transcripts.length + ')'
+ `Show transcripts (${transcripts.length})`
);
});
@@ -155,7 +155,7 @@ define(
// Verify initial button text
expect(videoTranscriptsView.$el.find('.toggle-show-transcripts-button-text').html().trim()).toEqual(
- 'Show transcripts (' + transcripts.length + ')'
+ `Show transcripts (${transcripts.length})`
);
videoTranscriptsView.$el.find('.toggle-show-transcripts-button').click();
@@ -166,7 +166,7 @@ define(
// Verify button text is changed.
expect(videoTranscriptsView.$el.find('.toggle-show-transcripts-button-text').html().trim()).toEqual(
- 'Hide transcripts (' + transcripts.length + ')'
+ `Hide transcripts (${transcripts.length})`
);
});
@@ -176,7 +176,7 @@ define(
// Verify button text.
expect(videoTranscriptsView.$el.find('.toggle-show-transcripts-button-text').html().trim()).toEqual(
- 'Hide transcripts (' + transcripts.length + ')'
+ `Hide transcripts (${transcripts.length})`
);
// Verify transcript container is not hidden
@@ -188,7 +188,7 @@ define(
// Verify button text is changed.
expect(videoTranscriptsView.$el.find('.toggle-show-transcripts-button-text').html().trim()).toEqual(
- 'Show transcripts (' + transcripts.length + ')'
+ `Show transcripts (${transcripts.length})`
);
// Verify transcript container is hidden
@@ -216,10 +216,10 @@ define(
);
_.each(transcripts, function(languageCode) {
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
// Verify correct transcript title is set.
expect($transcriptEl.find('.transcript-title').html()).toEqual(
- 'Video client title n_' + languageCode + '.' + TRANSCRIPT_DOWNLOAD_FILE_FORMAT
+ `Video client title n_${languageCode}.${TRANSCRIPT_DOWNLOAD_FILE_FORMAT}`
);
// Verify transcript is rendered with correct info.
verifyTranscriptStateInfo($transcriptEl, languageCode);
@@ -230,11 +230,11 @@ define(
var languageCode = 'en',
newLanguageCode = 'ar',
requests = AjaxHelpers.requests(this),
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
// Verify correct transcript title is set.
expect($transcriptEl.find('.transcript-title').html()).toEqual(
- 'Video client title n_' + languageCode + '.' + TRANSCRIPT_DOWNLOAD_FILE_FORMAT
+ `Video client title n_${languageCode}.${TRANSCRIPT_DOWNLOAD_FILE_FORMAT}`
);
// Select a language
@@ -257,7 +257,7 @@ define(
// Verify correct transcript title is set.
expect($transcriptEl.find('.transcript-title').html()).toEqual(
- 'Video client title n_' + newLanguageCode + '.' + TRANSCRIPT_DOWNLOAD_FILE_FORMAT
+ `Video client title n_${newLanguageCode}.${TRANSCRIPT_DOWNLOAD_FILE_FORMAT}`
);
verifyMessage($transcriptEl, 'uploaded');
@@ -269,11 +269,11 @@ define(
it('can delete transcript', function() {
var languageCode = 'en',
requests = AjaxHelpers.requests(this),
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
// Verify correct transcript title is set.
expect($transcriptEl.find('.transcript-title').html()).toEqual(
- 'Video client title n_' + languageCode + '.' + TRANSCRIPT_DOWNLOAD_FILE_FORMAT
+ `Video client title n_${languageCode}.${TRANSCRIPT_DOWNLOAD_FILE_FORMAT}`
);
$transcriptEl.find('.delete-transcript-button').click();
@@ -285,7 +285,7 @@ define(
AjaxHelpers.expectRequest(
requests,
'DELETE',
- TRANSCRIPT_DELETE_URL + '/' + edxVideoID + '/' + languageCode
+ `${TRANSCRIPT_DELETE_URL}/${edxVideoID}/${languageCode}`
);
// Send successful delete response
@@ -293,7 +293,7 @@ define(
// Verify English transcript is not present.
expect(videoTranscriptsView.$el.find(
- '.video-transcript-content[data-language-code="' + languageCode + '"]'
+ `.video-transcript-content[data-language-code="${languageCode}"]`
)).not.toExist();
// Verify transcripts view is rendered with transcript deleted for English.
@@ -305,11 +305,11 @@ define(
it('should show error message when deleting a transcript in case of server error', function() {
var languageCode = 'en',
requests = AjaxHelpers.requests(this),
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
// Verify correct transcript title is set.
expect($transcriptEl.find('.transcript-title').html()).toEqual(
- 'Video client title n_' + languageCode + '.' + TRANSCRIPT_DOWNLOAD_FILE_FORMAT
+ `Video client title n_${languageCode}.${TRANSCRIPT_DOWNLOAD_FILE_FORMAT}`
);
$transcriptEl.find('.delete-transcript-button').click();
@@ -331,7 +331,7 @@ define(
AjaxHelpers.expectRequest(
requests,
'DELETE',
- TRANSCRIPT_DELETE_URL + '/' + edxVideoID + '/' + languageCode
+ `${TRANSCRIPT_DELETE_URL}/${edxVideoID}/${languageCode}`
);
AjaxHelpers.respondWithError(requests, 500);
@@ -343,7 +343,7 @@ define(
// Verify English transcript container is not removed.
expect(videoTranscriptsView.$el.find(
- '.video-transcript-content[data-language-code="' + languageCode + '"]'
+ `.video-transcript-content[data-language-code="${languageCode}"]`
)).toExist();
// Verify transcripts count is correct.
@@ -356,7 +356,7 @@ define(
var languageCode = 'en',
requests = AjaxHelpers.requests(this),
errorMessage = 'Transcript failed error message',
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
$transcriptEl.find('.upload-transcript-button').click();
@@ -382,7 +382,7 @@ define(
it('should show error message in case of server error', function() {
var languageCode = 'en',
requests = AjaxHelpers.requests(this),
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
$transcriptEl.find('.upload-transcript-button').click();
@@ -407,8 +407,8 @@ define(
it('should show error message in case of unsupported transcript file format', function() {
var languageCode = 'en',
transcriptFileName = 'unsupported-transcript-file-format.txt',
- errorMessage = 'This file type is not supported. Supported file type is ' + TRANSCRIPT_DOWNLOAD_FILE_FORMAT + '.', // eslint-disable-line max-len
- $transcriptEl = videoTranscriptsView.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ errorMessage = `This file type is not supported. Supported file type is ${TRANSCRIPT_DOWNLOAD_FILE_FORMAT}.`, // eslint-disable-line max-len
+ $transcriptEl = videoTranscriptsView.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
$transcriptEl.find('.upload-transcript-button').click();
diff --git a/cms/static/js/spec/views/xblock_string_field_editor_spec.js b/cms/static/js/spec/views/xblock_string_field_editor_spec.js
index 9121b0e334..80fd01fb36 100644
--- a/cms/static/js/spec/views/xblock_string_field_editor_spec.js
+++ b/cms/static/js/spec/views/xblock_string_field_editor_spec.js
@@ -36,7 +36,7 @@ describe('XBlockStringFieldEditorView', function() {
'
'
+ ''
+ '
'
);
@@ -149,11 +149,11 @@ describe('XBlockStringFieldEditorView', function() {
});
it('renders open angle bracket in input field', function() {
- expectInputMatchesModelDisplayName(updatedDisplayName + '<');
+ expectInputMatchesModelDisplayName(`${updatedDisplayName}<`);
});
it('renders close angle bracket in input field', function() {
- expectInputMatchesModelDisplayName('>' + updatedDisplayName);
+ expectInputMatchesModelDisplayName(`>${updatedDisplayName}`);
});
});
});
diff --git a/cms/static/js/spec/views/xblock_validation_spec.js b/cms/static/js/spec/views/xblock_validation_spec.js
index 577f16eeb6..16473b9deb 100644
--- a/cms/static/js/spec/views/xblock_validation_spec.js
+++ b/cms/static/js/spec/views/xblock_validation_spec.js
@@ -110,8 +110,8 @@ define(['jquery', 'js/models/xblock_validation', 'js/views/xblock_validation', '
it('renders action info', function() {
expect(view.$('a.edit-button .action-button-text').text()).toContain('Summary Action');
- expect(view.$('a.notification-action-button .action-button-text').text()).
- toContain('First Message Action');
+ expect(view.$('a.notification-action-button .action-button-text').text())
+ .toContain('First Message Action');
expect(view.$('a.notification-action-button').data('notification-action')).toBe('fix-up');
});
diff --git a/cms/static/js/spec_helpers/edit_helpers.js b/cms/static/js/spec_helpers/edit_helpers.js
index 217a067e87..0fa81b1e5a 100644
--- a/cms/static/js/spec_helpers/edit_helpers.js
+++ b/cms/static/js/spec_helpers/edit_helpers.js
@@ -138,4 +138,4 @@ export {
installEditTemplates,
showEditModal,
verifyXBlockRequest,
-}
+};
diff --git a/cms/static/js/spec_helpers/modal_helpers.js b/cms/static/js/spec_helpers/modal_helpers.js
index 3b6c154cb3..50996957f5 100644
--- a/cms/static/js/spec_helpers/modal_helpers.js
+++ b/cms/static/js/spec_helpers/modal_helpers.js
@@ -46,7 +46,7 @@ define(['jquery', 'common/js/spec_helpers/template_helpers', 'common/js/spec_hel
pressModalButton = function(selector, modal) {
var modalElement, button;
modalElement = getModalElement(modal);
- button = modalElement.find(selector + ':visible');
+ button = modalElement.find(`${selector}:visible`);
expect(button.length).toBe(1);
button.click();
};
diff --git a/cms/static/js/utils/date_utils.js b/cms/static/js/utils/date_utils.js
index a335adb01b..00f2e06def 100644
--- a/cms/static/js/utils/date_utils.js
+++ b/cms/static/js/utils/date_utils.js
@@ -77,10 +77,10 @@ define(['jquery', 'date', 'js/utils/change_on_enter', 'jquery.ui', 'jquery.timep
var currentDate;
if (typeof index !== 'undefined' && view.hasOwnProperty('collection')) {
cacheModel = view.collection.models[index];
- div = view.$el.find('#' + view.collectionSelector(cacheModel.cid));
+ div = view.$el.find(`#${view.collectionSelector(cacheModel.cid)}`);
} else {
cacheModel = view.model;
- div = view.$el.find('#' + view.fieldToSelectorMap[fieldName]);
+ div = view.$el.find(`#${view.fieldToSelectorMap[fieldName]}`);
}
datefield = $(div).find('input.date');
timefield = $(div).find('input.time');
diff --git a/cms/static/js/utils/drag_and_drop.js b/cms/static/js/utils/drag_and_drop.js
index 88c1301999..00aa1afa3b 100644
--- a/cms/static/js/utils/drag_and_drop.js
+++ b/cms/static/js/utils/drag_and_drop.js
@@ -212,7 +212,7 @@ function($, ui, _, gettext, Draggabilly, ModuleUtils, NotificationView) {
// Mark the new destination
if (destinationEle && this.pointerInBounds(pointer, $ele)) {
$ele.addClass(this.validDropClass);
- destinationEle.addClass('drop-target drop-target-' + destinationInfo.attachMethod);
+ destinationEle.addClass(`drop-target drop-target-${destinationInfo.attachMethod}`);
this.dragState.attachMethod = destinationInfo.attachMethod;
this.dragState.dropDestination = destinationEle;
} else {
diff --git a/cms/static/js/utils/handle_iframe_binding.js b/cms/static/js/utils/handle_iframe_binding.js
index b4527afd85..c708093209 100644
--- a/cms/static/js/utils/handle_iframe_binding.js
+++ b/cms/static/js/utils/handle_iframe_binding.js
@@ -26,7 +26,7 @@ define(['jquery'], function($) {
if (getQString[1].search('wmode=transparent') === -1) {
var oldString = getQString[1];
var newString = getQString[0];
- $(this).attr('src', newString + '?' + wmode + '&' + oldString);
+ $(this).attr('src', `${newString}?${wmode}&${oldString}`);
}
// eslint-disable-next-line brace-style
}
@@ -34,7 +34,7 @@ define(['jquery'], function($) {
// removed we execute this code. To avoid throwing an error when setting the
// attr, check that the source doesn't start with the value specified by TinyMCE ('javascript:""').
else if (ifr_source.lastIndexOf('javascript:', 0) !== 0) {
- $(this).attr('src', ifr_source + '?' + wmode);
+ $(this).attr('src', `${ifr_source}?${wmode}`);
}
}
} else {
diff --git a/cms/static/js/utils/module.js b/cms/static/js/utils/module.js
index 3d965748c5..f6fdcc1475 100644
--- a/cms/static/js/utils/module.js
+++ b/cms/static/js/utils/module.js
@@ -12,9 +12,9 @@ define(['underscore'], function(_) {
var getUpdateUrl = function(locator) {
if (_.isUndefined(locator)) {
- return urlRoot + '/';
+ return `${urlRoot}/`;
} else {
- return urlRoot + '/' + locator;
+ return `${urlRoot}/${locator}`;
}
};
return {
diff --git a/cms/static/js/utils/templates.js b/cms/static/js/utils/templates.js
index 578fd76ea4..58d66fd0b9 100644
--- a/cms/static/js/utils/templates.js
+++ b/cms/static/js/utils/templates.js
@@ -5,10 +5,10 @@ define(['jquery', 'underscore'], function($, _) {
* @returns The loaded template.
*/
var loadTemplate = function(name) {
- var templateSelector = '#' + name + '-tpl',
+ var templateSelector = `#${name}-tpl`,
templateText = $(templateSelector).text();
if (!templateText) {
- console.error('Failed to load ' + name + ' template');
+ console.error(`Failed to load ${name} template`);
}
return _.template(templateText);
};
diff --git a/cms/static/js/views/abstract_editor.js b/cms/static/js/views/abstract_editor.js
index 30ce785806..59ca555c29 100644
--- a/cms/static/js/views/abstract_editor.js
+++ b/cms/static/js/views/abstract_editor.js
@@ -6,7 +6,7 @@ define(['js/views/baseview', 'underscore'], function(BaseView, _) {
var self = this;
var templateName = _.result(this, 'templateName');
// Backbone model cid is only unique within the collection.
- this.uniqueId = _.uniqueId(templateName + '_');
+ this.uniqueId = _.uniqueId(`${templateName}_`);
this.template = this.loadTemplate(templateName);
// xss-lint: disable=javascript-jquery-html
this.$el.html(this.template({model: this.model, uniqueId: this.uniqueId}));
@@ -87,10 +87,10 @@ define(['js/views/baseview', 'underscore'], function(BaseView, _) {
* @returns The loaded template.
*/
loadTemplate: function(name) {
- var templateSelector = '#' + name,
+ var templateSelector = `#${name}`,
templateText = $(templateSelector).text();
if (!templateText) {
- console.error('Failed to load ' + name + ' template');
+ console.error(`Failed to load ${name} template`);
}
return _.template(templateText);
}
diff --git a/cms/static/js/views/assets.js b/cms/static/js/views/assets.js
index 5aaccda82f..f262821a02 100644
--- a/cms/static/js/views/assets.js
+++ b/cms/static/js/views/assets.js
@@ -203,7 +203,7 @@ function($, _, gettext, HtmlUtils, BaseView, AssetModel, PagingView, AssetView,
if (self.maxFileSizeRedirectUrl) {
var instructions = gettext('Please follow the instructions here to upload a file elsewhere and link to it: {maxFileSizeRedirectUrl}')
.replace('{maxFileSizeRedirectUrl}', self.maxFileSizeRedirectUrl);
- error = error + ' ' + instructions;
+ error = `${error} ${instructions}`;
}
self.largeFileErrorMsg = new NotificationView.Error({
@@ -262,7 +262,7 @@ function($, _, gettext, HtmlUtils, BaseView, AssetModel, PagingView, AssetView,
},
showUploadFeedback: function(event, percentComplete) {
- var percentVal = percentComplete + '%',
+ var percentVal = `${percentComplete}%`,
$progressFill = $('.upload-modal .progress-fill');
$progressFill.width(percentVal);
@@ -319,7 +319,7 @@ function($, _, gettext, HtmlUtils, BaseView, AssetModel, PagingView, AssetView,
this.pagingView.filterableColumns['js-asset-type-col'].displayName = assettypeLabel;
this.pagingView.selectFilter('js-asset-type-col');
this.closeFilterPopup(this.$el.find(
- '.column-filter-link[data-assetfilter="' + assettype + '"]'));
+ `.column-filter-link[data-assetfilter="${assettype}"]`));
},
closeFilterPopup: function(element) {
diff --git a/cms/static/js/views/components/add_xblock.js b/cms/static/js/views/components/add_xblock.js
index 5f49111669..9b2b0fdf25 100644
--- a/cms/static/js/views/components/add_xblock.js
+++ b/cms/static/js/views/components/add_xblock.js
@@ -46,8 +46,8 @@ function($, _, gettext, BaseView, ViewUtils, AddXBlockButton, AddXBlockMenu, Htm
event.stopPropagation();
type = $(event.currentTarget).data('type');
this.$('.new-component').slideUp(250);
- this.$('.new-component-' + type).slideDown(250);
- this.$('.new-component-' + type + ' div').focus();
+ this.$(`.new-component-${type}`).slideDown(250);
+ this.$(`.new-component-${type} div`).focus();
},
closeNewComponent: function(event) {
@@ -57,7 +57,7 @@ function($, _, gettext, BaseView, ViewUtils, AddXBlockButton, AddXBlockMenu, Htm
type = $(event.currentTarget).data('type');
this.$('.new-component').slideDown(250);
this.$('.new-component-templates').slideUp(250);
- this.$('ul.new-component-type li button[data-type=' + type + ']').focus();
+ this.$(`ul.new-component-type li button[data-type=${type}]`).focus();
},
createNewComponent: function(event) {
diff --git a/cms/static/js/views/components/add_xblock_menu.js b/cms/static/js/views/components/add_xblock_menu.js
index e3945e42de..d61d9d7df9 100644
--- a/cms/static/js/views/components/add_xblock_menu.js
+++ b/cms/static/js/views/components/add_xblock_menu.js
@@ -2,7 +2,7 @@ define(['jquery', 'js/views/baseview', 'edx-ui-toolkit/js/utils/html-utils'],
function($, BaseView, HtmlUtils) {
return BaseView.extend({
className: function() {
- return 'new-component-templates new-component-' + this.model.type;
+ return `new-component-templates new-component-${this.model.type}`;
},
initialize: function() {
BaseView.prototype.initialize.call(this);
diff --git a/cms/static/js/views/course_info_update.js b/cms/static/js/views/course_info_update.js
index 6468a0f4f9..daf9aa354b 100644
--- a/cms/static/js/views/course_info_update.js
+++ b/cms/static/js/views/course_info_update.js
@@ -72,7 +72,7 @@ function(CodeMirror, ModalUtils, DateUtils, HtmlUtils, CourseInfoHelper, Validat
},
collectionSelector: function(uid) {
- return 'course-update-list li[name=' + uid + ']';
+ return `course-update-list li[name=${uid}]`;
},
setAndValidate: function(attr, value, event) {
@@ -96,13 +96,13 @@ function(CodeMirror, ModalUtils, DateUtils, HtmlUtils, CourseInfoHelper, Validat
handleValidationError: function(model, error) {
var self = this,
- $validationElement = this.$el.find('#course-update-list li[name="' + model.cid + '"]');
+ $validationElement = this.$el.find(`#course-update-list li[name="${model.cid}"]`);
$validationElement.find('.message-error').remove();
Object.keys(error).forEach(function(field) {
if (error.hasOwnProperty(field)) {
HtmlUtils.append(
- $validationElement.find('#update-date-' + model.cid).parent(),
+ $validationElement.find(`#update-date-${model.cid}`).parent(),
self.errorTemplate({message: error[field]})
);
HtmlUtils.append(
@@ -116,7 +116,7 @@ function(CodeMirror, ModalUtils, DateUtils, HtmlUtils, CourseInfoHelper, Validat
},
validateModel: function(model) {
- var $validationElement = this.$el.find('#course-update-list li[name="' + model.cid + '"]');
+ var $validationElement = this.$el.find(`#course-update-list li[name="${model.cid}"]`);
if (model.isValid()) {
$validationElement.find('.message-error').remove();
$validationElement.find('.save-button').removeClass('is-disabled');
diff --git a/cms/static/js/views/course_video_settings.js b/cms/static/js/views/course_video_settings.js
index 4fe5586e12..81e6e96a56 100644
--- a/cms/static/js/views/course_video_settings.js
+++ b/cms/static/js/views/course_video_settings.js
@@ -612,7 +612,7 @@ function($, Backbone, _, gettext, moment, ViewUtils, HtmlUtils, StringUtils, Tra
var $OrganizationApiSecretWrapperEl,
$OrganizationUsernameWrapperEl,
isValid = true,
- $OrganizationApiKeyWrapperEl = this.$el.find('.' + this.selectedProvider + '-api-key-wrapper');
+ $OrganizationApiKeyWrapperEl = this.$el.find(`.${this.selectedProvider}-api-key-wrapper`);
// Explicit None selected case.
if (this.selectedProvider === '') {
@@ -627,7 +627,7 @@ function($, Backbone, _, gettext, moment, ViewUtils, HtmlUtils, StringUtils, Tra
}
if (this.selectedProvider === THREE_PLAY_MEDIA) {
- $OrganizationApiSecretWrapperEl = this.$el.find('.' + this.selectedProvider + '-api-secret-wrapper');
+ $OrganizationApiSecretWrapperEl = this.$el.find(`.${this.selectedProvider}-api-secret-wrapper`);
if ($OrganizationApiSecretWrapperEl.find('input').val() === '') {
isValid = false;
this.addErrorState($OrganizationApiSecretWrapperEl);
@@ -635,7 +635,7 @@ function($, Backbone, _, gettext, moment, ViewUtils, HtmlUtils, StringUtils, Tra
this.clearPreferenceErrorState($OrganizationApiSecretWrapperEl);
}
} else {
- $OrganizationUsernameWrapperEl = this.$el.find('.' + this.selectedProvider + '-username-wrapper');
+ $OrganizationUsernameWrapperEl = this.$el.find(`.${this.selectedProvider}-username-wrapper`);
if ($OrganizationUsernameWrapperEl.find('input').val() === '') {
isValid = false;
this.addErrorState($OrganizationUsernameWrapperEl);
@@ -688,15 +688,15 @@ function($, Backbone, _, gettext, moment, ViewUtils, HtmlUtils, StringUtils, Tra
var self = this,
username,
apiSecret,
- apiKey = this.$el.find('.' + this.selectedProvider + '-api-key').val();
+ apiKey = this.$el.find(`.${this.selectedProvider}-api-key`).val();
// First clear response status if present already
this.clearResponseStatus();
if (this.selectedProvider === THREE_PLAY_MEDIA) {
- apiSecret = this.$el.find('.' + this.selectedProvider + '-api-secret').val();
+ apiSecret = this.$el.find(`.${this.selectedProvider}-api-secret`).val();
} else {
- username = this.$el.find('.' + this.selectedProvider + '-username').val();
+ username = this.$el.find(`.${this.selectedProvider}-username`).val();
}
$.postJSON(self.transcriptCredentialsHandlerUrl, {
diff --git a/cms/static/js/views/course_video_sharing_enable.js b/cms/static/js/views/course_video_sharing_enable.js
index 964bfc44d1..e8a0d057c5 100644
--- a/cms/static/js/views/course_video_sharing_enable.js
+++ b/cms/static/js/views/course_video_sharing_enable.js
@@ -1,55 +1,56 @@
define([
- "jquery",
- "underscore",
- "backbone",
- "js/views/utils/xblock_utils",
- "js/utils/templates",
- "js/views/modals/course_outline_modals",
- "edx-ui-toolkit/js/utils/html-utils",
-], function ($, _, Backbone, XBlockViewUtils, TemplateUtils, CourseOutlineModalsFactory, HtmlUtils) {
- "use strict";
- var CourseVideoSharingEnableView = Backbone.View.extend({
- events: {
- "change #video-sharing-configuration-options": "handleVideoSharingConfigurationChange",
- },
+ 'jquery',
+ 'underscore',
+ 'backbone',
+ 'js/views/utils/xblock_utils',
+ 'js/utils/templates',
+ 'js/views/modals/course_outline_modals',
+ 'edx-ui-toolkit/js/utils/html-utils',
+], function($, _, Backbone, XBlockViewUtils, TemplateUtils, CourseOutlineModalsFactory, HtmlUtils) {
+ 'use strict';
- initialize: function () {
- this.template = TemplateUtils.loadTemplate("course-video-sharing-enable");
- },
-
- getRequestData: function (value) {
- return {
- metadata: {
- 'video_sharing_options': value,
+ var CourseVideoSharingEnableView = Backbone.View.extend({
+ events: {
+ 'change #video-sharing-configuration-options': 'handleVideoSharingConfigurationChange',
},
- };
- },
- handleVideoSharingConfigurationChange: function (event) {
- if (event.type === "change") {
- event.preventDefault();
- this.updateVideoSharingConfiguration(event.target.value);
- }
- },
+ initialize: function() {
+ this.template = TemplateUtils.loadTemplate('course-video-sharing-enable');
+ },
- updateVideoSharingConfiguration: function (value) {
- XBlockViewUtils.updateXBlockFields(this.model, this.getRequestData(value), {
- success: this.refresh.bind(this)
- });
- },
+ getRequestData: function(value) {
+ return {
+ metadata: {
+ video_sharing_options: value,
+ },
+ };
+ },
- refresh: function () {
- this.model.fetch({
- success: this.render.bind(this),
- });
- },
+ handleVideoSharingConfigurationChange: function(event) {
+ if (event.type === 'change') {
+ event.preventDefault();
+ this.updateVideoSharingConfiguration(event.target.value);
+ }
+ },
- render: function () {
- var html = this.template(this.model.attributes);
- HtmlUtils.setHtml(this.$el, HtmlUtils.HTML(html));
- return this;
- },
- });
+ updateVideoSharingConfiguration: function(value) {
+ XBlockViewUtils.updateXBlockFields(this.model, this.getRequestData(value), {
+ success: this.refresh.bind(this)
+ });
+ },
- return CourseVideoSharingEnableView;
+ refresh: function() {
+ this.model.fetch({
+ success: this.render.bind(this),
+ });
+ },
+
+ render: function() {
+ var html = this.template(this.model.attributes);
+ HtmlUtils.setHtml(this.$el, HtmlUtils.HTML(html));
+ return this;
+ },
+ });
+
+ return CourseVideoSharingEnableView;
});
diff --git a/cms/static/js/views/edit_chapter.js b/cms/static/js/views/edit_chapter.js
index 95ea31add4..165e170fc1 100644
--- a/cms/static/js/views/edit_chapter.js
+++ b/cms/static/js/views/edit_chapter.js
@@ -12,7 +12,7 @@ function(_, $, gettext, HtmlUtils, BaseView, FileUploadModel, UploadDialogView,
},
tagName: 'li',
className: function() {
- return 'field-group chapter chapter' + this.model.get('order');
+ return `field-group chapter chapter${this.model.get('order')}`;
},
render: function() {
HtmlUtils.setHtml(
diff --git a/cms/static/js/views/experiment_group_edit.js b/cms/static/js/views/experiment_group_edit.js
index 48abd6c771..c9e2180625 100644
--- a/cms/static/js/views/experiment_group_edit.js
+++ b/cms/static/js/views/experiment_group_edit.js
@@ -19,7 +19,7 @@ function(BaseView, _, str, gettext, groupEditTemplate) {
className: function() {
var index = this.model.collection.indexOf(this.model);
- return 'field-group group group-' + index;
+ return `field-group group group-${index}`;
},
initialize: function() {
diff --git a/cms/static/js/views/export.js b/cms/static/js/views/export.js
index 73007363b9..fe5e8dcf0d 100644
--- a/cms/static/js/views/export.js
+++ b/cms/static/js/views/export.js
@@ -118,7 +118,7 @@ define([
$dom.successStage
.find('.item-progresspoint-success-date')
- .text('(' + date + ' at ' + time + ' UTC)');
+ .text(`(${date} at ${time} UTC)`);
break;
@@ -343,7 +343,7 @@ define([
+ 'and try again.');
action = gettext('Take me to the main course page');
}
- msg += ' ' + gettext('The raw error message is:') + ' ' + errMsg;
+ msg += ` ${gettext('The raw error message is:')} ${errMsg}`;
dialog = new PromptView({
title: gettext('There has been an error with your export.'),
message: msg,
diff --git a/cms/static/js/views/group_configuration_details.js b/cms/static/js/views/group_configuration_details.js
index 133f464cf9..aa46944279 100644
--- a/cms/static/js/views/group_configuration_details.js
+++ b/cms/static/js/views/group_configuration_details.js
@@ -23,7 +23,7 @@ function(BaseView, _, gettext, str, StringUtils, HtmlUtils) {
return [
'collection',
'group-configuration-details',
- 'group-configuration-details-' + index
+ `group-configuration-details-${index}`
].join(' ');
},
diff --git a/cms/static/js/views/group_configuration_editor.js b/cms/static/js/views/group_configuration_editor.js
index e4187475d2..59bb2adcf1 100644
--- a/cms/static/js/views/group_configuration_editor.js
+++ b/cms/static/js/views/group_configuration_editor.js
@@ -27,7 +27,7 @@ function(ListItemEditorView, _, $, gettext, ExperimentGroupEditView) {
return [
'collection-edit',
'group-configuration-edit',
- 'group-configuration-edit-' + index
+ `group-configuration-edit-${index}`
].join(' ');
},
diff --git a/cms/static/js/views/list_item.js b/cms/static/js/views/list_item.js
index 22327ebbc7..02e95a74a2 100644
--- a/cms/static/js/views/list_item.js
+++ b/cms/static/js/views/list_item.js
@@ -33,10 +33,10 @@ define([
return [
'wrapper-collection',
- 'wrapper-collection-' + index,
+ `wrapper-collection-${index}`,
this.baseClassName,
- this.baseClassName + 's-list-item',
- this.baseClassName + 's-list-item-' + index
+ `${this.baseClassName}s-list-item`,
+ `${this.baseClassName}s-list-item-${index}`
].join(' ');
},
diff --git a/cms/static/js/views/manage_users_and_roles.js b/cms/static/js/views/manage_users_and_roles.js
index fd34945c67..6d6c530943 100644
--- a/cms/static/js/views/manage_users_and_roles.js
+++ b/cms/static/js/views/manage_users_and_roles.js
@@ -103,7 +103,7 @@ function($, _, gettext, BaseView, PromptView, ViewUtils, HtmlUtils) {
var self = this;
for (var i = 0; i < self.options.roles.length; i++) {
var role_name = self.options.roles[i].key;
- var role_selector = 'click .user-actions .make-' + role_name;
+ var role_selector = `click .user-actions .make-${role_name}`;
(function(role) {
roleEvents[role_selector] = function(event) { self.handleRoleButtonClick(event.target, role); };
diff --git a/cms/static/js/views/metadata.js b/cms/static/js/views/metadata.js
index c56363ef7c..b03a485b9c 100644
--- a/cms/static/js/views/metadata.js
+++ b/cms/static/js/views/metadata.js
@@ -112,7 +112,7 @@ define(
// If the model has property `non editable` equals `true`,
// the field is disabled, but user is able to clear it.
if (this.model.get('non_editable')) {
- this.$el.find('#' + this.uniqueId)
+ this.$el.find(`#${this.uniqueId}`)
.prop('readonly', true)
.addClass('is-disabled')
.attr('aria-disabled', true);
@@ -120,7 +120,7 @@ define(
},
getValueFromEditor: function() {
- return this.$el.find('#' + this.uniqueId).val();
+ return this.$el.find(`#${this.uniqueId}`).val();
},
setValueInEditor: function(value) {
@@ -215,7 +215,7 @@ define(
templateName: 'metadata-number-entry',
getValueFromEditor: function() {
- return this.$el.find('#' + this.uniqueId).val();
+ return this.$el.find(`#${this.uniqueId}`).val();
},
setValueInEditor: function(value) {
@@ -274,7 +274,7 @@ define(
templateName: 'metadata-option-entry',
getValueFromEditor: function() {
- var selectedText = this.$el.find('#' + this.uniqueId).find(':selected').text();
+ var selectedText = this.$el.find(`#${this.uniqueId}`).find(':selected').text();
var selectedValue;
_.each(this.model.getOptions(), function(modelValue) {
if (modelValue === selectedText) {
@@ -294,7 +294,7 @@ define(
value = modelValue.display_name;
}
});
- this.$el.find('#' + this.uniqueId + ' option').filter(function() {
+ this.$el.find(`#${this.uniqueId} option`).filter(function() {
return $(this).text() === value;
}).prop('selected', true);
}
@@ -407,7 +407,7 @@ define(
templateName: 'metadata-string-entry',
getValueFromEditor: function() {
- var $input = this.$el.find('#' + this.uniqueId);
+ var $input = this.$el.find(`#${this.uniqueId}`);
return $input.val();
},
@@ -433,7 +433,7 @@ define(
parseRelativeTime: function(value) {
// This function ensure you have two-digits
var pad = function(number) {
- return (number < 10) ? '0' + number : number;
+ return (number < 10) ? `0${number}` : number;
},
// Removes all white-spaces and splits by `:`.
list = value.replace(/\s+/g, '').split(':'),
@@ -584,7 +584,7 @@ define(
},
getValueFromEditor: function() {
- return this.$('#' + this.uniqueId).val();
+ return this.$(`#${this.uniqueId}`).val();
},
setValueInEditor: function(value) {
@@ -593,14 +593,14 @@ define(
uniqueId: this.uniqueId
});
- this.$('#' + this.uniqueId).val(value);
+ this.$(`#${this.uniqueId}`).val(value);
this.$('.wrapper-uploader-actions').html(HtmlUtils.HTML((html)).toString());
},
upload: function(event) {
var self = this,
$target = $(event.currentTarget),
- url = '/assets/' + this.options.courseKey + '/',
+ url = `/assets/${this.options.courseKey}/`,
model = new FileUpload({
title: gettext('Upload File')
}),
diff --git a/cms/static/js/views/modals/base_modal.js b/cms/static/js/views/modals/base_modal.js
index 65b7f06ae0..3e3921f0ec 100644
--- a/cms/static/js/views/modals/base_modal.js
+++ b/cms/static/js/views/modals/base_modal.js
@@ -156,22 +156,22 @@ define(['jquery', 'underscore', 'gettext', 'js/views/baseview'],
* Returns the action bar that contains the modal's action buttons.
*/
getActionBar: function() {
- return this.$(this.options.modalWindowClass + ' > div > .modal-actions');
+ return this.$(`${this.options.modalWindowClass} > div > .modal-actions`);
},
/**
* Returns the action button of the specified type.
*/
getActionButton: function(type) {
- return this.getActionBar().find('.action-' + type);
+ return this.getActionBar().find(`.action-${type}`);
},
enableActionButton: function(type) {
- this.getActionBar().find('.action-' + type).prop('disabled', false).removeClass('is-disabled');
+ this.getActionBar().find(`.action-${type}`).prop('disabled', false).removeClass('is-disabled');
},
disableActionButton: function(type) {
- this.getActionBar().find('.action-' + type).prop('disabled', true).addClass('is-disabled');
+ this.getActionBar().find(`.action-${type}`).prop('disabled', true).addClass('is-disabled');
},
resize: function() {
diff --git a/cms/static/js/views/modals/course_outline_modals.js b/cms/static/js/views/modals/course_outline_modals.js
index aefb13d286..5b6174320e 100644
--- a/cms/static/js/views/modals/course_outline_modals.js
+++ b/cms/static/js/views/modals/course_outline_modals.js
@@ -138,7 +138,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
_.map(tab.editors, function(Editor) {
return new Editor({
parent: this,
- parentElement: this.$('.modal-section .' + tab.name),
+ parentElement: this.$(`.modal-section .${tab.name}`),
model: this.model,
xblockType: this.options.xblockType,
enable_proctored_exams: this.options.enable_proctored_exams,
@@ -180,9 +180,9 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
showTab: function(tab) {
this.$('.modal-section .settings-tab-button').removeClass('active');
- this.$('.modal-section .settings-tab-button[data-tab="' + tab + '"]').addClass('active');
+ this.$(`.modal-section .settings-tab-button[data-tab="${tab}"]`).addClass('active');
this.$('.modal-section .settings-tab').hide();
- this.$('.modal-section .' + tab).show();
+ this.$(`.modal-section .${tab}`).show();
}
});
@@ -194,7 +194,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
initialize: function() {
CourseOutlineXBlockModal.prototype.initialize.call(this);
if (this.options.xblockType) {
- this.options.modalName = 'bulkpublish-' + this.options.xblockType;
+ this.options.modalName = `bulkpublish-${this.options.xblockType}`;
}
},
@@ -228,7 +228,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
initialize: function() {
CourseOutlineXBlockModal.prototype.initialize.call(this);
if (this.options.xblockType) {
- this.options.modalName = 'highlights-' + this.options.xblockType;
+ this.options.modalName = `highlights-${this.options.xblockType}`;
}
},
@@ -245,7 +245,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
callAnalytics: function(event) {
event.preventDefault();
- window.analytics.track('edx.bi.highlights.' + event.target.innerText.toLowerCase());
+ window.analytics.track(`edx.bi.highlights.${event.target.innerText.toLowerCase()}`);
if (event.target.className.indexOf('save') !== -1) {
this.save(event);
} else {
@@ -269,7 +269,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
initialize: function() {
CourseOutlineXBlockModal.prototype.initialize.call(this);
if (this.options.xblockType) {
- this.options.modalName = 'highlights-enable-' + this.options.xblockType;
+ this.options.modalName = `highlights-enable-${this.options.xblockType}`;
}
},
@@ -283,7 +283,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
callAnalytics: function(event) {
event.preventDefault();
- window.analytics.track('edx.bi.highlights_enable.' + event.target.innerText.toLowerCase());
+ window.analytics.track(`edx.bi.highlights_enable.${event.target.innerText.toLowerCase()}`);
if (event.target.className.indexOf('save') !== -1) {
this.save(event);
} else {
@@ -408,13 +408,13 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
if (!this.getValue() || !course.get('start')) { return; }
var startDate = new Date(course.get('start'));
// The value returned by toUTCString() is a string in the form Www, dd Mmm yyyy hh:mm:ss GMT
- var startDateList = startDate.toUTCString().split(' ')
+ var startDateList = startDate.toUTCString().split(' ');
// This text will look like Mmm dd, yyyy (i.e. Jul 26, 2021)
- this.$('#relative_weeks_due_start_date').text(startDateList[2] + ' ' + startDateList[1] + ', ' + startDateList[3]);
- var projectedDate = new Date(startDate)
- projectedDate.setDate(projectedDate.getDate() + this.getValue()*7);
+ this.$('#relative_weeks_due_start_date').text(`${startDateList[2]} ${startDateList[1]}, ${startDateList[3]}`);
+ var projectedDate = new Date(startDate);
+ projectedDate.setDate(projectedDate.getDate() + this.getValue() * 7);
var projectedDateList = projectedDate.toUTCString().split(' ');
- this.$('#relative_weeks_due_projected_due_in').text(projectedDateList[2] + ' ' + projectedDateList[1] + ', ' + projectedDateList[3]);
+ this.$('#relative_weeks_due_projected_due_in').text(`${projectedDateList[2]} ${projectedDateList[1]}, ${projectedDateList[3]}`);
this.$('#relative_weeks_due_projected').show();
},
@@ -433,9 +433,9 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
afterRender: function() {
AbstractEditor.prototype.afterRender.call(this);
if (this.model.get('graded')) {
- this.$('#relative_date_input').show()
+ this.$('#relative_date_input').show();
} else {
- this.$('#relative_date_input').hide()
+ this.$('#relative_date_input').hide();
}
this.$('.field-due-in input').val(this.model.get('relative_weeks_due'));
this.$('#relative_weeks_due_projected').hide();
@@ -444,12 +444,12 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
getRequestData: function() {
// Grab all the sections, map them to their block_ids, then return as an Array
- var sectionIds = $('.outline-section').map(function(){ return this.id; }).get()
+ var sectionIds = $('.outline-section').map(function() { return this.id; }).get();
// Grab all the subsections, map them to their block_ids, then return as an Array
- var subsectionIds = $('.outline-subsection').map(function(){ return this.id; }).get()
+ var subsectionIds = $('.outline-subsection').map(function() { return this.id; }).get();
var relative_weeks_due = null;
if (this.getValue() > 0 && $('#grading_type').val() !== 'notgraded') {
- relative_weeks_due = this.getValue()
+ relative_weeks_due = this.getValue();
}
window.analytics.track('edx.bi.studio.relative_date.saved', {
block_id: this.model.get('id'),
@@ -613,11 +613,11 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
return this.$('.field-time-limit input').val();
},
convertTimeLimitMinutesToString: function(timeLimitMinutes) {
- var hoursStr = '' + Math.floor(timeLimitMinutes / 60);
- var actualMinutesStr = '' + (timeLimitMinutes % 60);
+ var hoursStr = `${Math.floor(timeLimitMinutes / 60)}`;
+ var actualMinutesStr = `${timeLimitMinutes % 60}`;
hoursStr = '00'.substring(0, 2 - hoursStr.length) + hoursStr;
actualMinutesStr = '00'.substring(0, 2 - actualMinutesStr.length) + actualMinutesStr;
- return hoursStr + ':' + actualMinutesStr;
+ return `${hoursStr}:${actualMinutesStr}`;
},
convertTimeLimitToMinutes: function(timeLimit) {
var time = timeLimit.split(':');
@@ -673,7 +673,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
prereqMinScore = this.model.get('prereq_min_score') || '100';
prereqMinCompletion = this.model.get('prereq_min_completion') || '100';
this.$('#is_prereq').prop('checked', this.model.get('is_prereq'));
- this.$('#prereq option[value="' + prereq + '"]').prop('selected', true);
+ this.$(`#prereq option[value="${prereq}"]`).prop('selected', true);
this.$('#prereq_min_score').val(prereqMinScore);
this.$('#prereq_min_score_input').toggle(prereq.length > 0);
this.$('#prereq_min_completion').val(prereqMinCompletion);
@@ -859,7 +859,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
if (keys.length === 1) { // should be only one partition key
if (groupAccess.hasOwnProperty(keys[0]) && groupAccess[keys[0]].length > 0) {
// Select the option that has group access, provided there is a specific group within the scheme
- this.$('.user-partition-select option[value=' + keys[0] + ']').prop('selected', true);
+ this.$(`.user-partition-select option[value=${keys[0]}]`).prop('selected', true);
this.showSelectedDiv(keys[0]);
// Change default option to 'All Learners and Staff' if unit is currently restricted
this.$('#partition-select option:first').text(gettext('All Learners and Staff'));
@@ -877,7 +877,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
},
getSelectedCheckboxesByDivId: function(contentGroupId) {
- var $checkboxes = $('#' + contentGroupId + '-checkboxes input:checked'),
+ var $checkboxes = $(`#${contentGroupId}-checkboxes input:checked`),
selectedCheckboxValues = [],
i;
for (i = 0; i < $checkboxes.length; i++) {
@@ -887,7 +887,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
},
showSelectedDiv: function(contentGroupId) {
- $('#' + contentGroupId + '-checkboxes').show();
+ $(`#${contentGroupId}-checkboxes`).show();
},
hideCheckboxDivs: function() {
@@ -944,16 +944,16 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
showTipText: function() {
if (this.model.get('published')) {
- $('.un-published-tip').hide()
+ $('.un-published-tip').hide();
} else {
- $('.un-published-tip').show()
+ $('.un-published-tip').show();
}
- let enabledForGraded = course.get('discussions_settings').enable_graded_units
+ let enabledForGraded = course.get('discussions_settings').enable_graded_units;
if (this.model.get('graded') && !enabledForGraded) {
$('#discussion_enabled').prop('disabled', true);
- $('.graded-tip').show()
+ $('.graded-tip').show();
} else {
- $('.graded-tip').hide()
+ $('.graded-tip').hide();
}
},
@@ -1012,7 +1012,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
},
setVisibility: function(value) {
- this.$('input[name=content-visibility][value=' + value + ']').prop('checked', true);
+ this.$(`input[name=content-visibility][value=${value}]`).prop('checked', true);
},
currentVisibility: function() {
@@ -1085,7 +1085,7 @@ define(['jquery', 'backbone', 'underscore', 'gettext', 'js/views/baseview',
},
setValue: function(value) {
- this.$('input[name=show-correctness][value=' + value + ']').prop('checked', true);
+ this.$(`input[name=show-correctness][value=${value}]`).prop('checked', true);
},
currentValue: function() {
diff --git a/cms/static/js/views/modals/edit_xblock.js b/cms/static/js/views/modals/edit_xblock.js
index 7182d8b0e5..304ef714db 100644
--- a/cms/static/js/views/modals/edit_xblock.js
+++ b/cms/static/js/views/modals/edit_xblock.js
@@ -163,7 +163,7 @@ function($, _, Backbone, gettext, BaseModal, ViewUtils, XBlockViewUtils, XBlockE
editorView.selectMode(mode);
this.$('.editor-modes a').removeClass('is-set');
if (mode) {
- buttonSelector = '.' + mode + '-button';
+ buttonSelector = `.${mode}-button`;
this.$(buttonSelector).addClass('is-set');
}
},
diff --git a/cms/static/js/views/modals/move_xblock_modal.js b/cms/static/js/views/modals/move_xblock_modal.js
index 8b3abad070..64096eae73 100644
--- a/cms/static/js/views/modals/move_xblock_modal.js
+++ b/cms/static/js/views/modals/move_xblock_modal.js
@@ -178,7 +178,7 @@ function($, Backbone, _, gettext, BaseView, XBlockViewUtils, MoveXBlockUtils, Ht
moveXBlock: function() {
MoveXBlockUtils.moveXBlock(
{
- sourceXBlockElement: $("li.studio-xblock-wrapper[data-locator='" + this.sourceXBlockInfo.id + "']"),
+ sourceXBlockElement: $(`li.studio-xblock-wrapper[data-locator='${this.sourceXBlockInfo.id}']`),
sourceDisplayName: this.sourceXBlockInfo.get('display_name'),
sourceLocator: this.sourceXBlockInfo.id,
sourceParentLocator: this.sourceParentXBlockInfo.id,
diff --git a/cms/static/js/views/module_edit.js b/cms/static/js/views/module_edit.js
index fe3bba5821..ce1166bb3a 100644
--- a/cms/static/js/views/module_edit.js
+++ b/cms/static/js/views/module_edit.js
@@ -57,7 +57,7 @@
callback = function() {};
}
payload.parent_locator = parent;
- return $.postJSON(this.model.urlRoot + '/', payload, function(data) {
+ return $.postJSON(`${this.model.urlRoot}/`, payload, function(data) {
_this.model.set({
id: data.locator
});
@@ -71,7 +71,7 @@
var _this = this;
if (this.model.id) {
return $.ajax({
- url: '' + (decodeURIComponent(this.model.url())) + '/' + viewName,
+ url: `${decodeURIComponent(this.model.url())}/${viewName}`,
type: 'GET',
cache: false,
headers: {
diff --git a/cms/static/js/views/paged_container.js b/cms/static/js/views/paged_container.js
index 31c123ad12..a93c19b69e 100644
--- a/cms/static/js/views/paged_container.js
+++ b/cms/static/js/views/paged_container.js
@@ -90,7 +90,7 @@ function($, _, ViewUtils, ContainerView, ModuleUtils, gettext, NotificationView,
xblockUrl = xblockInfo.url();
return $.ajax({
- url: decodeURIComponent(xblockUrl) + '/' + view,
+ url: `${decodeURIComponent(xblockUrl)}/${view}`,
type: 'GET',
cache: false,
data: this.getRenderParameters(options.page_number, options.force_render),
@@ -102,14 +102,14 @@ function($, _, ViewUtils, ContainerView, ModuleUtils, gettext, NotificationView,
self.page.updatePreviewButton(self.collection.showChildrenPreviews);
self.page.renderAddXBlockComponents();
if (options.force_render) {
- var $target = $('.studio-xblock-wrapper[data-locator="' + options.force_render + '"]');
+ var $target = $(`.studio-xblock-wrapper[data-locator="${options.force_render}"]`);
// Scroll us to the element with a little buffer at the top for context.
ViewUtils.setScrollOffset($target, ($(window).height() * 0.10));
}
if (originalDone) {
originalDone();
}
- }
+ };
self.handleXBlockFragment(fragment, options);
}
});
@@ -265,7 +265,7 @@ function($, _, ViewUtils, ContainerView, ModuleUtils, gettext, NotificationView,
xblockUrl = this.model.url();
return $.ajax({
// No runtime, so can't get this via the handler() call.
- url: '/preview' + decodeURIComponent(xblockUrl) + '/handler/trigger_previews',
+ url: `/preview${decodeURIComponent(xblockUrl)}/handler/trigger_previews`,
type: 'POST',
data: JSON.stringify({showChildrenPreviews: !this.collection.showChildrenPreviews}),
dataType: 'json'
diff --git a/cms/static/js/views/pages/container.js b/cms/static/js/views/pages/container.js
index 1793f28e75..304367cb1e 100644
--- a/cms/static/js/views/pages/container.js
+++ b/cms/static/js/views/pages/container.js
@@ -265,19 +265,19 @@ function($, _, Backbone, gettext, BasePage, ViewUtils, ContainerView, XBlockView
editXBlock: function(event, options) {
event.preventDefault();
- if(!options || options.view !== 'visibility_view' ){
- const primaryHeader = $(event.target).closest('.xblock-header-primary')
+ if (!options || options.view !== 'visibility_view') {
+ const primaryHeader = $(event.target).closest('.xblock-header-primary');
var useNewTextEditor = primaryHeader.attr('use-new-editor-text'),
useNewVideoEditor = primaryHeader.attr('use-new-editor-video'),
useNewProblemEditor = primaryHeader.attr('use-new-editor-problem'),
blockType = primaryHeader.attr('data-block-type');
- if( (useNewTextEditor === 'True' && blockType === 'html')
+ if((useNewTextEditor === 'True' && blockType === 'html')
|| (useNewVideoEditor === 'True' && blockType === 'video')
|| (useNewProblemEditor === 'True' && blockType === 'problem')
) {
- var destinationUrl = primaryHeader.attr('authoring_MFE_base_url') + '/' + blockType + '/' + encodeURI(primaryHeader.attr('data-usage-id'));
+ var destinationUrl = `${primaryHeader.attr('authoring_MFE_base_url')}/${blockType}/${encodeURI(primaryHeader.attr('data-usage-id'))}`;
window.location.href = destinationUrl;
return;
}
@@ -365,7 +365,7 @@ function($, _, Backbone, gettext, BasePage, ViewUtils, ContainerView, XBlockView
}),
placeholderElement;
placeholderElement = $placeholderEl.appendTo(listPanel);
- return $.postJSON(this.getURLRoot() + '/', requestData,
+ return $.postJSON(`${this.getURLRoot()}/`, requestData,
_.bind(this.onNewXBlock, this, placeholderElement, scrollOffset, false))
.fail(function() {
// Remove the placeholder if the update failed
@@ -476,15 +476,15 @@ function($, _, Backbone, gettext, BasePage, ViewUtils, ContainerView, XBlockView
useNewProblemEditor = this.$('.xblock-header-primary').attr('use-new-editor-problem');
// find the block type in the locator if availible
- if(data.hasOwnProperty('locator')){
+ if(data.hasOwnProperty('locator')) {
var matchBlockTypeFromLocator = /\@(.*?)\+/;
var blockType = data.locator.match(matchBlockTypeFromLocator);
}
if((useNewTextEditor === 'True' && blockType.includes('html'))
|| (useNewVideoEditor === 'True' && blockType.includes('video'))
- ||(useNewProblemEditor === 'True' && blockType.includes('problem'))
- ){
- var destinationUrl = this.$('.xblock-header-primary').attr('authoring_MFE_base_url') + '/' + blockType[1] + '/' + encodeURI(data.locator);
+ || (useNewProblemEditor === 'True' && blockType.includes('problem'))
+ ) {
+ var destinationUrl = `${this.$('.xblock-header-primary').attr('authoring_MFE_base_url')}/${blockType[1]}/${encodeURI(data.locator)}`;
window.location.href = destinationUrl;
return;
}
diff --git a/cms/static/js/views/pages/course_outline.js b/cms/static/js/views/pages/course_outline.js
index 78a69baa9a..31227f4aa1 100644
--- a/cms/static/js/views/pages/course_outline.js
+++ b/cms/static/js/views/pages/course_outline.js
@@ -125,7 +125,7 @@ function($, _, gettext, BasePage, XBlockViewUtils, CourseOutlineView, ViewUtils,
* at 100 millisecond intervals until element is found or
* Polling is reached
*/
- scrollToElement: function () {
+ scrollToElement: function() {
this.findElementPollingTimeout -= this.pollingDelay;
const elementID = window.location.hash.replace('#', '');
diff --git a/cms/static/js/views/pages/group_configurations.js b/cms/static/js/views/pages/group_configurations.js
index 680bbda659..0336ae3db0 100644
--- a/cms/static/js/views/pages/group_configurations.js
+++ b/cms/static/js/views/pages/group_configurations.js
@@ -43,7 +43,7 @@ function($, _, gettext, BasePage, GroupConfigurationsListView, PartitionGroupLis
// Render the remaining Configuration groups
for (i = 0; i < this.allGroupViewList.length; i++) {
- currentClass = '.wrapper-groups.content-groups.' + this.allGroupViewList[i].scheme;
+ currentClass = `.wrapper-groups.content-groups.${this.allGroupViewList[i].scheme}`;
this.$(currentClass).append(this.allGroupViewList[i].render().el);
}
@@ -103,7 +103,7 @@ function($, _, gettext, BasePage, GroupConfigurationsListView, PartitionGroupLis
if (groupConfig) {
groupConfig.set('showGroups', true);
- this.$('#' + id).focus();
+ this.$(`#${id}`).focus();
}
}
});
diff --git a/cms/static/js/views/paging.js b/cms/static/js/views/paging.js
index 3b8abb4f17..b0df084707 100644
--- a/cms/static/js/views/paging.js
+++ b/cms/static/js/views/paging.js
@@ -26,7 +26,7 @@
var sortColumn = this.collection.sortColumn;
this.renderPageItems();
this.$('.column-sort-link').removeClass('current-sort');
- this.$('#' + sortColumn).addClass('current-sort');
+ this.$(`#${sortColumn}`).addClass('current-sort');
},
onError: function() {
@@ -55,7 +55,7 @@
filterableColumnInfo: function(filterColumn) {
var filterInfo = this.filterableColumns[filterColumn];
if (!filterInfo) {
- throw "Unregistered filter column '" + filterInfo + '"';
+ throw `Unregistered filter column '${filterInfo}"`;
}
return filterInfo;
},
@@ -91,7 +91,7 @@
sortableColumnInfo: function(sortColumn) {
var sortInfo = this.sortableColumns[sortColumn];
if (!sortInfo) {
- throw "Unregistered sort column '" + sortColumn + '"';
+ throw `Unregistered sort column '${sortColumn}"`;
}
return sortInfo;
},
diff --git a/cms/static/js/views/partition_group_details.js b/cms/static/js/views/partition_group_details.js
index 4740e460b5..95cdcaf2a0 100644
--- a/cms/static/js/views/partition_group_details.js
+++ b/cms/static/js/views/partition_group_details.js
@@ -22,7 +22,7 @@ define([
return [
'collection',
'partition-group-details',
- 'partition-group-details-' + index
+ `partition-group-details-${index}`
].join(' ');
},
diff --git a/cms/static/js/views/previous_video_upload.js b/cms/static/js/views/previous_video_upload.js
index bc2cb2b0d6..4632c91b69 100644
--- a/cms/static/js/views/previous_video_upload.js
+++ b/cms/static/js/views/previous_video_upload.js
@@ -81,7 +81,7 @@ define(
gettext('Removing'),
function() {
return $.ajax({
- url: videoView.videoHandlerUrl + '/' + videoView.model.get('edx_video_id'),
+ url: `${videoView.videoHandlerUrl}/${videoView.model.get('edx_video_id')}`,
type: 'DELETE'
}).done(function() {
videoView.remove();
diff --git a/cms/static/js/views/settings/advanced.js b/cms/static/js/views/settings/advanced.js
index 0a3eaf82ae..03b6ad4046 100644
--- a/cms/static/js/views/settings/advanced.js
+++ b/cms/static/js/views/settings/advanced.js
@@ -91,7 +91,7 @@ function(ValidatingView, $, _, gettext, CodeMirror, ValidationErrorModal, HtmlUt
var firstNonWhite = stringValue.substring(0, 1);
if (firstNonWhite !== '{' && firstNonWhite !== '[' && firstNonWhite !== "'") {
try {
- stringValue = '"' + stringValue + '"';
+ stringValue = `"${stringValue}"`;
JSONValue = JSON.parse(stringValue);
mirror.setValue(stringValue);
} catch (quotedE) {
diff --git a/cms/static/js/views/settings/grading.js b/cms/static/js/views/settings/grading.js
index fea7dd78e0..60b817c940 100644
--- a/cms/static/js/views/settings/grading.js
+++ b/cms/static/js/views/settings/grading.js
@@ -114,11 +114,11 @@ function(ValidatingView, _, $, ui, GraderView, StringUtils, HtmlUtils) {
},
renderGracePeriod: function() {
var format = function(time) {
- return time >= 10 ? time.toString() : '0' + time;
+ return time >= 10 ? time.toString() : `0${time}`;
};
var grace_period = this.model.get('grace_period');
this.$el.find('#course-grading-graceperiod').val(
- format(grace_period.hours) + ':' + format(grace_period.minutes)
+ `${format(grace_period.hours)}:${format(grace_period.minutes)}`
);
},
renderMinimumGradeCredit: function() {
@@ -266,7 +266,7 @@ function(ValidatingView, _, $, ui, GraderView, StringUtils, HtmlUtils) {
this.$el.find('.range').each(function(i) {
var min = (i < cutoffs.length ? cutoffs[i].cutoff : 0);
var max = (i > 0 ? cutoffs[i - 1].cutoff : 100);
- $(this).text(min + '-' + max);
+ $(this).text(`${min}-${max}`);
});
},
diff --git a/cms/static/js/views/settings/main.js b/cms/static/js/views/settings/main.js
index 4f5b358cdc..a713e41b01 100644
--- a/cms/static/js/views/settings/main.js
+++ b/cms/static/js/views/settings/main.js
@@ -87,33 +87,33 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
DateUtils.setupDatePicker('enrollment_end', this);
DateUtils.setupDatePicker('upgrade_deadline', this);
- this.$el.find('#' + this.fieldToSelectorMap.overview).val(this.model.get('overview'));
+ this.$el.find(`#${this.fieldToSelectorMap.overview}`).val(this.model.get('overview'));
this.codeMirrorize(null, $('#course-overview')[0]);
if (this.model.get('title') !== '') {
- this.$el.find('#' + this.fieldToSelectorMap.title).val(this.model.get('title'));
+ this.$el.find(`#${this.fieldToSelectorMap.title}`).val(this.model.get('title'));
} else {
- var displayName = this.$el.find('#' + this.fieldToSelectorMap.title).attr('data-display-name');
- this.$el.find('#' + this.fieldToSelectorMap.title).val(displayName);
+ var displayName = this.$el.find(`#${this.fieldToSelectorMap.title}`).attr('data-display-name');
+ this.$el.find(`#${this.fieldToSelectorMap.title}`).val(displayName);
}
- this.$el.find('#' + this.fieldToSelectorMap.subtitle).val(this.model.get('subtitle'));
- this.$el.find('#' + this.fieldToSelectorMap.duration).val(this.model.get('duration'));
- this.$el.find('#' + this.fieldToSelectorMap.description).val(this.model.get('description'));
+ this.$el.find(`#${this.fieldToSelectorMap.subtitle}`).val(this.model.get('subtitle'));
+ this.$el.find(`#${this.fieldToSelectorMap.duration}`).val(this.model.get('duration'));
+ this.$el.find(`#${this.fieldToSelectorMap.description}`).val(this.model.get('description'));
- this.$el.find('#' + this.fieldToSelectorMap.short_description).val(this.model.get('short_description'));
- this.$el.find('#' + this.fieldToSelectorMap.about_sidebar_html).val(
+ this.$el.find(`#${this.fieldToSelectorMap.short_description}`).val(this.model.get('short_description'));
+ this.$el.find(`#${this.fieldToSelectorMap.about_sidebar_html}`).val(
this.model.get('about_sidebar_html')
);
this.codeMirrorize(null, $('#course-about-sidebar-html')[0]);
this.$el.find('.current-course-introduction-video iframe').attr('src', this.model.videosourceSample());
- this.$el.find('#' + this.fieldToSelectorMap.intro_video).val(this.model.get('intro_video') || '');
+ this.$el.find(`#${this.fieldToSelectorMap.intro_video}`).val(this.model.get('intro_video') || '');
if (this.model.has('intro_video')) {
this.$el.find('.remove-course-introduction-video').show();
} else { this.$el.find('.remove-course-introduction-video').hide(); }
- this.$el.find('#' + this.fieldToSelectorMap.effort).val(this.model.get('effort'));
- this.$el.find('#' + this.fieldToSelectorMap.certificates_display_behavior).val(this.model.get('certificates_display_behavior'));
+ this.$el.find(`#${this.fieldToSelectorMap.effort}`).val(this.model.get('effort'));
+ this.$el.find(`#${this.fieldToSelectorMap.certificates_display_behavior}`).val(this.model.get('certificates_display_behavior'));
this.updateCertificatesDisplayBehavior();
var courseImageURL = this.model.get('course_image_asset_path');
@@ -130,16 +130,16 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
var pre_requisite_courses = this.model.get('pre_requisite_courses');
pre_requisite_courses = pre_requisite_courses.length > 0 ? pre_requisite_courses : '';
- this.$el.find('#' + this.fieldToSelectorMap.pre_requisite_courses).val(pre_requisite_courses);
+ this.$el.find(`#${this.fieldToSelectorMap.pre_requisite_courses}`).val(pre_requisite_courses);
if (this.model.get('entrance_exam_enabled') == 'true') {
- this.$('#' + this.fieldToSelectorMap.entrance_exam_enabled).attr('checked', this.model.get('entrance_exam_enabled'));
+ this.$(`#${this.fieldToSelectorMap.entrance_exam_enabled}`).attr('checked', this.model.get('entrance_exam_enabled'));
this.$('.div-grade-requirements').show();
} else {
- this.$('#' + this.fieldToSelectorMap.entrance_exam_enabled).removeAttr('checked');
+ this.$(`#${this.fieldToSelectorMap.entrance_exam_enabled}`).removeAttr('checked');
this.$('.div-grade-requirements').hide();
}
- this.$('#' + this.fieldToSelectorMap.entrance_exam_minimum_score_pct).val(this.model.get('entrance_exam_minimum_score_pct'));
+ this.$(`#${this.fieldToSelectorMap.entrance_exam_minimum_score_pct}`).val(this.model.get('entrance_exam_minimum_score_pct'));
var selfPacedButton = this.$('#course-pace-self-paced'),
instructorPacedButton = this.$('#course-pace-instructor-paced'),
@@ -233,16 +233,16 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
var value;
var index = event.currentTarget.getAttribute('data-index');
switch (event.currentTarget.id) {
- case 'course-learning-info-' + index:
+ case `course-learning-info-${index}`:
value = $(event.currentTarget).val();
var learningInfo = this.model.get('learning_info');
learningInfo[index] = value;
this.showNotificationBar();
break;
- case 'course-instructor-name-' + index:
- case 'course-instructor-title-' + index:
- case 'course-instructor-organization-' + index:
- case 'course-instructor-bio-' + index:
+ case `course-instructor-name-${index}`:
+ case `course-instructor-title-${index}`:
+ case `course-instructor-organization-${index}`:
+ case `course-instructor-bio-${index}`:
value = $(event.currentTarget).val();
var field = event.currentTarget.getAttribute('data-field'),
instructors = this.model.get('instructor_info').instructors.slice(0);
@@ -250,12 +250,12 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
this.model.set('instructor_info', {instructors: instructors});
this.showNotificationBar();
break;
- case 'course-instructor-image-' + index:
+ case `course-instructor-image-${index}`:
instructors = this.model.get('instructor_info').instructors.slice(0);
instructors[index].image = $(event.currentTarget).val();
this.model.set('instructor_info', {instructors: instructors});
this.showNotificationBar();
- this.updateImagePreview(event.currentTarget, '#course-instructor-image-preview-' + index);
+ this.updateImagePreview(event.currentTarget, `#course-instructor-image-preview-${index}`);
break;
case 'course-image-url':
this.updateImageField(event, 'course_image_name', '#course-image');
@@ -345,7 +345,7 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
if (this.model.has('intro_video')) {
this.model.set_videosource(null);
this.$el.find('.current-course-introduction-video iframe').attr('src', '');
- this.$el.find('#' + this.fieldToSelectorMap.intro_video).val('');
+ this.$el.find(`#${this.fieldToSelectorMap.intro_video}`).val('');
this.$el.find('.remove-course-introduction-video').hide();
}
},
@@ -379,7 +379,7 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
}
});
cmTextArea = this.codeMirrors[thisTarget.id].getInputField();
- cmTextArea.setAttribute('id', thisTarget.id + '-cm-textarea');
+ cmTextArea.setAttribute('id', `${thisTarget.id}-cm-textarea`);
}
},
@@ -388,7 +388,7 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
Hides and clears the certificate available date field if a display behavior that doesn't use it is
chosen. Because we are clearing it, toggling back to "end_with_date" will require re-entering the date
*/
- if (!this.useV2CertDisplaySettings){
+ if (!this.useV2CertDisplaySettings) {
return;
}
let showDatepicker = this.model.get('certificates_display_behavior') == 'end_with_date';
@@ -402,7 +402,7 @@ function(ValidatingView, CodeMirror, _, $, ui, DateUtils, FileUploadModel,
datepicker.prop('disabled', true);
datepicker.val(null);
this.clearValidationErrors();
- this.setAndValidate('certificate_available_date', null)
+ this.setAndValidate('certificate_available_date', null);
certificateAvailableDateField.addClass('hidden');
}
},
diff --git a/cms/static/js/views/utils/move_xblock_utils.js b/cms/static/js/views/utils/move_xblock_utils.js
index 9bde9c6d08..96ac0d1754 100644
--- a/cms/static/js/views/utils/move_xblock_utils.js
+++ b/cms/static/js/views/utils/move_xblock_utils.js
@@ -92,7 +92,7 @@ function($, _, Backbone, Feedback, AlertView, XBlockViewUtils, MoveXBlockUtils,
text: gettext('Take me to the new location'),
class: 'action-cancel',
click: function() {
- redirectLink('/container/' + data.targetParentLocator);
+ redirectLink(`/container/${data.targetParentLocator}`);
}
}
]
diff --git a/cms/static/js/views/utils/xblock_utils.js b/cms/static/js/views/utils/xblock_utils.js
index d3c1fce9e0..9b56b2d2e5 100644
--- a/cms/static/js/views/utils/xblock_utils.js
+++ b/cms/static/js/views/utils/xblock_utils.js
@@ -52,7 +52,7 @@ function($, _, gettext, ViewUtils, ModuleUtils, XBlockInfo, StringUtils) {
return ViewUtils.runOperationShowingMessage(gettext('Adding'),
function() {
var addOperation = $.Deferred();
- analytics.track('Created a ' + category, {
+ analytics.track(`Created a ${category}`, {
course: course_location_analytics,
display_name: displayName
});
@@ -151,7 +151,7 @@ function($, _, gettext, ViewUtils, ModuleUtils, XBlockInfo, StringUtils) {
);
if (xblockInfo.get('is_prereq')) {
- messageBody += ' ' + gettext('Any content that has listed this content as a prerequisite will also have access limitations removed.'); // eslint-disable-line max-len
+ messageBody += ` ${gettext('Any content that has listed this content as a prerequisite will also have access limitations removed.')}`; // eslint-disable-line max-len
ViewUtils.confirmThenRunOperation(
StringUtils.interpolate(
gettext('Delete this {xblock_type} (and prerequisite)?'),
diff --git a/cms/static/js/views/validation.js b/cms/static/js/views/validation.js
index 1cc8635ffb..d8974b3540 100644
--- a/cms/static/js/views/validation.js
+++ b/cms/static/js/views/validation.js
@@ -38,7 +38,7 @@ function(HtmlUtils, BaseView, _, $, gettext, NotificationView, AlertView) {
this.clearValidationErrors();
// error is object w/ fields and error strings
for (var field in error) {
- var ele = this.$el.find('#' + this.fieldToSelectorMap[field]);
+ var ele = this.$el.find(`#${this.fieldToSelectorMap[field]}`);
this._cacheValidationErrors.push(ele);
this.getInputElements(ele).addClass('error');
HtmlUtils.append($(ele).parent(), this.errorTemplate({message: error[field]}));
@@ -79,10 +79,10 @@ function(HtmlUtils, BaseView, _, $, gettext, NotificationView, AlertView) {
},
// these should perhaps go into a superclass but lack of event hash inheritance demotivates me
inputFocus: function(event) {
- $("label[for='" + event.currentTarget.id + "']").addClass('is-focused');
+ $(`label[for='${event.currentTarget.id}']`).addClass('is-focused');
},
inputUnfocus: function(event) {
- $("label[for='" + event.currentTarget.id + "']").removeClass('is-focused');
+ $(`label[for='${event.currentTarget.id}']`).removeClass('is-focused');
},
getInputElements: function(ele) {
diff --git a/cms/static/js/views/video/transcripts/file_uploader.js b/cms/static/js/views/video/transcripts/file_uploader.js
index 5c635fdc4d..b7cc882a1f 100644
--- a/cms/static/js/views/video/transcripts/file_uploader.js
+++ b/cms/static/js/views/video/transcripts/file_uploader.js
@@ -176,7 +176,7 @@ define(
*
*/
xhrProgressHandler: function(event, position, total, percentComplete) {
- var percentVal = percentComplete + '%';
+ var percentVal = `${percentComplete}%`;
this.$progress
.width(percentVal)
diff --git a/cms/static/js/views/video/transcripts/utils.js b/cms/static/js/views/video/transcripts/utils.js
index fae39400bd..2d6573dfce 100644
--- a/cms/static/js/views/video/transcripts/utils.js
+++ b/cms/static/js/views/video/transcripts/utils.js
@@ -204,7 +204,7 @@ define(['jquery', 'underscore', 'jquery.ajaxQueue'], function($) {
* _getYoutubeLink('OEoXaMPEzfM'); => 'http://youtu.be/OEoXaMPEzfM'
*/
var _getYoutubeLink = function(video_id) {
- return 'http://youtu.be/' + video_id;
+ return `http://youtu.be/${video_id}`;
};
/**
@@ -302,7 +302,7 @@ define(['jquery', 'underscore', 'jquery.ajaxQueue'], function($) {
);
xhr = $.ajaxQueue({
- url: '/transcripts/' + action,
+ url: `/transcripts/${action}`,
data: {data: JSON.stringify(data)},
notifyOnError: false,
type: 'get'
diff --git a/cms/static/js/views/video/translations_editor.js b/cms/static/js/views/video/translations_editor.js
index 89df139e7b..4663df1654 100644
--- a/cms/static/js/views/video/translations_editor.js
+++ b/cms/static/js/views/video/translations_editor.js
@@ -35,7 +35,7 @@ define(
languageMap = {};
if (!tpl) {
- console.error("Couldn't load template for item: " + templateName);
+ console.error(`Couldn't load template for item: ${templateName}`);
}
this.templateItem = _.template(tpl);
diff --git a/cms/static/js/views/video_thumbnail.js b/cms/static/js/views/video_thumbnail.js
index 2089b8a18c..48fa447a5f 100644
--- a/cms/static/js/views/video_thumbnail.js
+++ b/cms/static/js/views/video_thumbnail.js
@@ -105,21 +105,21 @@ define(
return item === '.bmp2' || item === '.jpeg';
}).sort();
return {
- humanize: supportedFormats.slice(0, -1).join(', ') + ' or ' + supportedFormats.slice(-1),
+ humanize: `${supportedFormats.slice(0, -1).join(', ')} or ${supportedFormats.slice(-1)}`,
machine: _.values(this.videoImageSettings.supported_file_formats)
};
},
getVideoImageMaxSize: function() {
return {
- humanize: this.videoImageSettings.max_size / (1024 * 1024) + ' MB',
+ humanize: `${this.videoImageSettings.max_size / (1024 * 1024)} MB`,
machine: this.videoImageSettings.max_size
};
},
getVideoImageMinSize: function() {
return {
- humanize: this.videoImageSettings.min_size / 1024 + ' KB',
+ humanize: `${this.videoImageSettings.min_size / 1024} KB`,
machine: this.videoImageSettings.min_size
};
},
@@ -210,12 +210,12 @@ define(
getDurationTextMachine: function(durationSeconds) {
var minutes = Math.floor(durationSeconds / 60),
seconds = Math.floor(durationSeconds - minutes * 60);
- return minutes + ':' + (seconds < 10 ? '0' : '') + seconds;
+ return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
},
chooseFile: function() {
this.$('.upload-image-input').fileupload({
- url: this.imageUploadURL + '/' + encodeURIComponent(this.model.get('edx_video_id')),
+ url: `${this.imageUploadURL}/${encodeURIComponent(this.model.get('edx_video_id'))}`,
add: this.imageSelected,
done: this.imageUploadSucceeded,
fail: this.imageUploadFailed
@@ -346,7 +346,7 @@ define(
},
clearErrorMessage: function(videoId) {
- var $thumbnailWrapperEl = $('.thumbnail-error-wrapper[data-video-id="' + videoId + '"]');
+ var $thumbnailWrapperEl = $(`.thumbnail-error-wrapper[data-video-id="${videoId}"]`);
if ($thumbnailWrapperEl.length) {
$thumbnailWrapperEl.remove();
}
diff --git a/cms/static/js/views/video_transcripts.js b/cms/static/js/views/video_transcripts.js
index 0aa57cbb83..eb3944285b 100644
--- a/cms/static/js/views/video_transcripts.js
+++ b/cms/static/js/views/video_transcripts.js
@@ -211,7 +211,7 @@ define(
transcriptUploadSucceeded: function(event, data) {
var languageCode = data.formData.language_code,
newLanguageCode = data.formData.new_language_code,
- $transcriptContainer = this.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptContainer = this.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
$transcriptContainer.attr('data-language-code', newLanguageCode);
$transcriptContainer.find('.download-transcript-button').attr(
@@ -240,7 +240,7 @@ define(
transcriptUploadFailed: function(event, data) {
var errorMessage,
languageCode = data.formData.language_code,
- $transcriptContainer = this.$el.find('.video-transcript-content[data-language-code="' + languageCode + '"]'); // eslint-disable-line max-len
+ $transcriptContainer = this.$el.find(`.video-transcript-content[data-language-code="${languageCode}"]`); // eslint-disable-line max-len
try {
errorMessage = JSON.parse(data.jqXHR.responseText).error;
diff --git a/cms/static/js/views/xblock.js b/cms/static/js/views/xblock.js
index 2330c9deb5..e533475ef0 100644
--- a/cms/static/js/views/xblock.js
+++ b/cms/static/js/views/xblock.js
@@ -25,7 +25,7 @@ function($, _, ViewUtils, BaseView, XBlock, HtmlUtils) {
xblockInfo = this.model,
xblockUrl = xblockInfo.url();
return $.ajax({
- url: decodeURIComponent(xblockUrl) + '/' + view,
+ url: `${decodeURIComponent(xblockUrl)}/${view}`,
type: 'GET',
cache: false,
headers: {Accept: 'application/json'},
@@ -220,15 +220,15 @@ function($, _, ViewUtils, BaseView, XBlock, HtmlUtils) {
if (mimetype === 'text/css') {
if (kind === 'text') {
// xss-lint: disable=javascript-jquery-append,javascript-concat-html
- $head.append('');
+ $head.append(``);
} else if (kind === 'url') {
// xss-lint: disable=javascript-jquery-append,javascript-concat-html
- $head.append('
');
+ $head.append(`
`);
}
} else if (mimetype === 'application/javascript') {
if (kind === 'text') {
// xss-lint: disable=javascript-jquery-append,javascript-concat-html
- $head.append('');
+ $head.append(``);
} else if (kind === 'url') {
return ViewUtils.loadJavaScript(data);
}
diff --git a/cms/static/js/views/xblock_outline.js b/cms/static/js/views/xblock_outline.js
index c3ab7a8b0c..ac4005f378 100644
--- a/cms/static/js/views/xblock_outline.js
+++ b/cms/static/js/views/xblock_outline.js
@@ -253,12 +253,12 @@ function($, _, gettext, BaseView, ViewUtils, XBlockViewUtils, XBlockStringFieldE
if (locatorToShow === this.model.id) {
locatorElement = this.$el;
} else {
- locatorElement = this.$('.outline-item[data-locator="' + locatorToShow + '"]');
+ locatorElement = this.$(`.outline-item[data-locator="${locatorToShow}"]`);
}
if (locatorElement.length > 0) {
ViewUtils.setScrollOffset(locatorElement, scrollOffset);
} else {
- console.error('Failed to show item with locator ' + locatorToShow + '');
+ console.error(`Failed to show item with locator ${locatorToShow}`);
}
if (editDisplayName) {
locatorElement.find('> div[class$="header"] .xblock-field-value-edit').click();
@@ -285,7 +285,7 @@ function($, _, gettext, BaseView, ViewUtils, XBlockViewUtils, XBlockStringFieldE
},
onUnitAdded: function(locator) {
- ViewUtils.redirect('/container/' + locator + '?action=new');
+ ViewUtils.redirect(`/container/${locator}?action=new`);
},
onChildDeleted: function() {
@@ -317,7 +317,7 @@ function($, _, gettext, BaseView, ViewUtils, XBlockViewUtils, XBlockStringFieldE
section: 'course'
},
parentXblockType = xblockMap[xblockType];
- return xblockElement.closest('.outline-' + parentXblockType);
+ return xblockElement.closest(`.outline-${parentXblockType}`);
},
/**
diff --git a/cms/static/js/views/xblock_string_field_editor.js b/cms/static/js/views/xblock_string_field_editor.js
index 4180422d30..ac69435ab3 100644
--- a/cms/static/js/views/xblock_string_field_editor.js
+++ b/cms/static/js/views/xblock_string_field_editor.js
@@ -27,7 +27,7 @@ define(['js/views/baseview', 'js/views/utils/xblock_utils', 'edx-ui-toolkit/js/u
this.fieldName = this.$el.data('field');
this.fieldDisplayName = this.$el.data('field-display-name');
this.template = this.loadTemplate('xblock-string-field-editor');
- this.model.on('change:' + this.fieldName, this.onChangeField, this);
+ this.model.on(`change:${this.fieldName}`, this.onChangeField, this);
},
render: function() {
diff --git a/cms/static/js/xblock/authoring.js b/cms/static/js/xblock/authoring.js
index 0b220004ca..52cf679a67 100644
--- a/cms/static/js/xblock/authoring.js
+++ b/cms/static/js/xblock/authoring.js
@@ -21,7 +21,7 @@
// Otherwise get the checked groups within the selected partition.
element.find(
- '.partition-group-visibility-' + partitionId + ' input:checked'
+ `.partition-group-visibility-${partitionId} input:checked`
).each(function(index, input) {
groupId = parseInt($(input).val(), 10);
@@ -44,7 +44,7 @@
// If a partition is selected, display its groups.
partitionId = parseInt($(event.target).val(), 10);
if (partitionId >= 0) {
- element.find('.partition-group-control-' + partitionId).removeClass('is-hidden');
+ element.find(`.partition-group-control-${partitionId}`).removeClass('is-hidden');
}
});
}
diff --git a/cms/static/karma_cms.conf.js b/cms/static/karma_cms.conf.js
index 16d2cc6f4c..6d6451ebd4 100644
--- a/cms/static/karma_cms.conf.js
+++ b/cms/static/karma_cms.conf.js
@@ -6,6 +6,7 @@
'use strict';
var path = require('path');
+
var configModule = require(path.join(__dirname, '../../common/static/common/js/karma.common.conf.js'));
var options = {
diff --git a/cms/static/karma_cms_squire.conf.js b/cms/static/karma_cms_squire.conf.js
index f8c0260fde..9a83a189be 100644
--- a/cms/static/karma_cms_squire.conf.js
+++ b/cms/static/karma_cms_squire.conf.js
@@ -6,6 +6,7 @@
'use strict';
var path = require('path');
+
var configModule = require(path.join(__dirname, '../../common/static/common/js/karma.common.conf.js'));
var options = {
diff --git a/cms/static/karma_cms_webpack.conf.js b/cms/static/karma_cms_webpack.conf.js
index 91650cc5b1..60c228e36c 100644
--- a/cms/static/karma_cms_webpack.conf.js
+++ b/cms/static/karma_cms_webpack.conf.js
@@ -6,6 +6,7 @@
'use strict';
var path = require('path');
+
var configModule = require(path.join(__dirname, '../../common/static/common/js/karma.common.conf.js'));
var options = {
diff --git a/common/static/common/js/components/ExperimentalCarousel.jsx b/common/static/common/js/components/ExperimentalCarousel.jsx
index 1f954d3206..d56ce7a7f1 100644
--- a/common/static/common/js/components/ExperimentalCarousel.jsx
+++ b/common/static/common/js/components/ExperimentalCarousel.jsx
@@ -11,7 +11,7 @@ function NextArrow(props) {
} = props;
const showArrow = slideCount - currentSlide > displayedSlides;
const opts = {
- className: classNames('js-carousel-nav', 'carousel-arrow', 'next', 'btn btn-secondary', {'active': showArrow}),
+ className: classNames('js-carousel-nav', 'carousel-arrow', 'next', 'btn btn-secondary', {active: showArrow}),
onClick
};
@@ -32,7 +32,7 @@ function PrevArrow(props) {
const {currentSlide, onClick} = props;
const showArrow = currentSlide > 0;
const opts = {
- className: classNames('js-carousel-nav', 'carousel-arrow', 'prev', 'btn btn-secondary', {'active': showArrow}),
+ className: classNames('js-carousel-nav', 'carousel-arrow', 'prev', 'btn btn-secondary', {active: showArrow}),
onClick
};
@@ -87,7 +87,7 @@ export default class ExperimentalCarousel extends React.Component {
},
tabIndex: tabIndex,
className: 'carousel-item'
- }
+ };
return (
diff --git a/common/static/common/js/components/views/feedback.js b/common/static/common/js/components/views/feedback.js
index 7d49756a85..7aaa130d46 100644
--- a/common/static/common/js/components/views/feedback.js
+++ b/common/static/common/js/components/views/feedback.js
@@ -66,14 +66,14 @@
initialize: function(options) {
this.options = _.extend({}, this.options, options);
if (!this.options.type) {
- throw 'SystemFeedback: type required (given ' // eslint-disable-line no-throw-literal
- + JSON.stringify(this.options) + ')';
+ throw `SystemFeedback: type required (given ${// eslint-disable-line no-throw-literal
+ JSON.stringify(this.options)})`;
}
if (!this.options.intent) {
- throw 'SystemFeedback: intent required (given ' // eslint-disable-line no-throw-literal
- + JSON.stringify(this.options) + ')';
+ throw `SystemFeedback: intent required (given ${// eslint-disable-line no-throw-literal
+ JSON.stringify(this.options)})`;
}
- this.setElement($('#page-' + this.options.type));
+ this.setElement($(`#page-${this.options.type}`));
// handle single "secondary" action
if (this.options.actions && this.options.actions.secondary
&& !_.isArray(this.options.actions.secondary)) {
@@ -154,13 +154,13 @@
// there can be only one active view of a given type at a time: only
// one alert, only one notification, only one prompt. Therefore, we'll
// use a singleton approach.
- var singleton = SystemFeedback['active_' + this.options.type];
+ var singleton = SystemFeedback[`active_${this.options.type}`];
if (singleton && singleton !== this) {
singleton.stopListening();
singleton.undelegateEvents();
}
HtmlUtils.setHtml(this.$el, HtmlUtils.template(systemFeedbackTemplate)(this.options));
- SystemFeedback['active_' + this.options.type] = this;
+ SystemFeedback[`active_${this.options.type}`] = this;
return this;
},
diff --git a/common/static/common/js/components/views/paginated_view.js b/common/static/common/js/components/views/paginated_view.js
index e59328a5ab..58c8e84740 100644
--- a/common/static/common/js/components/views/paginated_view.js
+++ b/common/static/common/js/components/views/paginated_view.js
@@ -30,14 +30,14 @@
initialize: function() {
var ItemListView = this.listViewClass.extend({
tagName: 'div',
- className: this.type + '-container',
+ className: `${this.type}-container`,
itemViewClass: this.itemViewClass
});
this.listView = new ItemListView({collection: this.collection});
this.headerView = this.createHeaderView();
this.footerView = this.createFooterView();
this.collection.on('page_changed', function() {
- this.$('.sr-is-focusable.sr-' + this.type + '-view').focus();
+ this.$(`.sr-is-focusable.sr-${this.type}-view`).focus();
}, this);
},
@@ -61,12 +61,12 @@
render: function() {
HtmlUtils.setHtml(this.$el, HtmlUtils.template(this.viewTemplate)({type: this.type}));
- this.assign(this.listView, '.' + this.type + '-list');
+ this.assign(this.listView, `.${this.type}-list`);
if (this.headerView) {
- this.assign(this.headerView, '.' + this.type + '-paging-header');
+ this.assign(this.headerView, `.${this.type}-paging-header`);
}
if (this.footerView) {
- this.assign(this.footerView, '.' + this.type + '-paging-footer');
+ this.assign(this.footerView, `.${this.type}-paging-footer`);
}
return this;
},
diff --git a/common/static/common/js/components/views/tabbed_view.js b/common/static/common/js/components/views/tabbed_view.js
index 9a79e7834c..1482d2b067 100644
--- a/common/static/common/js/components/views/tabbed_view.js
+++ b/common/static/common/js/components/views/tabbed_view.js
@@ -21,7 +21,7 @@
HtmlUtils
) {
var getTabPanelId = function(id) {
- return 'tabpanel-' + id;
+ return `tabpanel-${id}`;
};
var TabPanelView = Backbone.View.extend({
@@ -164,7 +164,7 @@
if (index === 0) {
$tab = $(focused).parent().find('.tab').last();
} else {
- $tab = $(focused).parent().find('.tab:eq(' + index + ')').prev();
+ $tab = $(focused).parent().find(`.tab:eq(${index})`).prev();
}
$panel = $($tab).data('index');
@@ -180,7 +180,7 @@
if (index === total) {
$tab = $(focused).parent().find('.tab').first();
} else {
- $tab = $(focused).parent().find('.tab:eq(' + index + ')').next();
+ $tab = $(focused).parent().find(`.tab:eq(${index})`).next();
}
$panel = $($tab).data('index');
@@ -229,10 +229,10 @@
if (typeof tabNameOrIndex === 'string') {
tab = this.urlMap[tabNameOrIndex];
- $element = this.$('button[data-url=' + tabNameOrIndex + ']');
+ $element = this.$(`button[data-url=${tabNameOrIndex}]`);
} else {
tab = this.tabs[tabNameOrIndex];
- $element = this.$('button[data-index=' + tabNameOrIndex + ']');
+ $element = this.$(`button[data-index=${tabNameOrIndex}]`);
}
return {tab: tab, element: $element};
}
diff --git a/common/static/common/js/discussion/content.js b/common/static/common/js/discussion/content.js
index 905271358f..758d46aa85 100644
--- a/common/static/common/js/discussion/content.js
+++ b/common/static/common/js/discussion/content.js
@@ -208,7 +208,7 @@
Content.prototype.incrementVote = function(increment) {
var newVotes;
newVotes = _.clone(this.get('votes'));
- newVotes.up_count = newVotes.up_count + increment;
+ newVotes.up_count += increment;
return this.set('votes', newVotes);
};
@@ -237,13 +237,13 @@
return DiscussionUtil.urlFor('create_comment', this.id);
},
unvote: function() {
- return DiscussionUtil.urlFor('undo_vote_for_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`undo_vote_for_${this.get('type')}`, this.id);
},
upvote: function() {
- return DiscussionUtil.urlFor('upvote_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`upvote_${this.get('type')}`, this.id);
},
downvote: function() {
- return DiscussionUtil.urlFor('downvote_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`downvote_${this.get('type')}`, this.id);
},
close: function() {
return DiscussionUtil.urlFor('openclose_thread', this.id);
@@ -261,10 +261,10 @@
return DiscussionUtil.urlFor('unfollow_thread', this.id);
},
flagAbuse: function() {
- return DiscussionUtil.urlFor('flagAbuse_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`flagAbuse_${this.get('type')}`, this.id);
},
unFlagAbuse: function() {
- return DiscussionUtil.urlFor('unFlagAbuse_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`unFlagAbuse_${this.get('type')}`, this.id);
},
pinThread: function() {
return DiscussionUtil.urlFor('pin_thread', this.id);
@@ -350,13 +350,13 @@
return DiscussionUtil.urlFor('create_sub_comment', this.id);
},
unvote: function() {
- return DiscussionUtil.urlFor('undo_vote_for_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`undo_vote_for_${this.get('type')}`, this.id);
},
upvote: function() {
- return DiscussionUtil.urlFor('upvote_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`upvote_${this.get('type')}`, this.id);
},
downvote: function() {
- return DiscussionUtil.urlFor('downvote_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`downvote_${this.get('type')}`, this.id);
},
endorse: function() {
return DiscussionUtil.urlFor('endorse_comment', this.id);
@@ -368,10 +368,10 @@
return DiscussionUtil.urlFor('delete_comment', this.id);
},
flagAbuse: function() {
- return DiscussionUtil.urlFor('flagAbuse_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`flagAbuse_${this.get('type')}`, this.id);
},
unFlagAbuse: function() {
- return DiscussionUtil.urlFor('unFlagAbuse_' + (this.get('type')), this.id);
+ return DiscussionUtil.urlFor(`unFlagAbuse_${this.get('type')}`, this.id);
}
};
diff --git a/common/static/common/js/discussion/utils.js b/common/static/common/js/discussion/utils.js
index bc9a99f14f..63ccb4c797 100644
--- a/common/static/common/js/discussion/utils.js
+++ b/common/static/common/js/discussion/utils.js
@@ -12,7 +12,7 @@
DiscussionUtil.rightKey = 39;
DiscussionUtil.getTemplate = function(id) {
- return $('script#' + id).html();
+ return $(`script#${id}`).html();
};
DiscussionUtil.setUser = function(user) {
@@ -33,7 +33,7 @@
userId = this.user ? this.user.id : void 0;
}
if(_.isUndefined(this.roleIds)) {
- this.roleIds = {}
+ this.roleIds = {};
}
staff = _.union(this.roleIds.Moderator, this.roleIds.Administrator);
return _.include(staff, parseInt(userId));
@@ -77,44 +77,46 @@
DiscussionUtil.generateDiscussionLink = function(cls, txt, handler) {
return $('
')
.addClass('discussion-link').attr('href', '#')
- .addClass(cls).text(txt).click(function() { return handler(this); });
+ .addClass(cls)
+ .text(txt)
+ .click(function() { return handler(this); });
};
DiscussionUtil.urlFor = function(name, param, param1, param2) {
return {
- follow_discussion: '/courses/' + $$course_id + '/discussion/' + param + '/follow',
- unfollow_discussion: '/courses/' + $$course_id + '/discussion/' + param + '/unfollow',
- create_thread: '/courses/' + $$course_id + '/discussion/' + param + '/threads/create',
- update_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/update',
- create_comment: '/courses/' + $$course_id + '/discussion/threads/' + param + '/reply',
- delete_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/delete',
- flagAbuse_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/flagAbuse',
- unFlagAbuse_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unFlagAbuse',
- flagAbuse_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/flagAbuse',
- unFlagAbuse_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/unFlagAbuse',
- upvote_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/upvote',
- downvote_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/downvote',
- pin_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/pin',
- un_pin_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unpin',
- undo_vote_for_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unvote',
- follow_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/follow',
- unfollow_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/unfollow',
- update_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/update',
- endorse_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/endorse',
- create_sub_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/reply',
- delete_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/delete',
- upvote_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/upvote',
- downvote_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/downvote',
- undo_vote_for_comment: '/courses/' + $$course_id + '/discussion/comments/' + param + '/unvote',
- upload: '/courses/' + $$course_id + '/discussion/upload',
- users: '/courses/' + $$course_id + '/discussion/users',
- search: '/courses/' + $$course_id + '/discussion/forum/search',
- retrieve_discussion: '/courses/' + $$course_id + '/discussion/forum/' + param + '/inline',
- retrieve_single_thread: '/courses/' + $$course_id + '/discussion/forum/' + param + '/threads/' + param1,
- openclose_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/close',
- user_profile: '/courses/' + $$course_id + '/discussion/forum/users/' + param,
- followed_threads: '/courses/' + $$course_id + '/discussion/forum/users/' + param + '/followed',
- threads: '/courses/' + $$course_id + '/discussion/forum',
+ follow_discussion: `/courses/${$$course_id}/discussion/${param}/follow`,
+ unfollow_discussion: `/courses/${$$course_id}/discussion/${param}/unfollow`,
+ create_thread: `/courses/${$$course_id}/discussion/${param}/threads/create`,
+ update_thread: `/courses/${$$course_id}/discussion/threads/${param}/update`,
+ create_comment: `/courses/${$$course_id}/discussion/threads/${param}/reply`,
+ delete_thread: `/courses/${$$course_id}/discussion/threads/${param}/delete`,
+ flagAbuse_thread: `/courses/${$$course_id}/discussion/threads/${param}/flagAbuse`,
+ unFlagAbuse_thread: `/courses/${$$course_id}/discussion/threads/${param}/unFlagAbuse`,
+ flagAbuse_comment: `/courses/${$$course_id}/discussion/comments/${param}/flagAbuse`,
+ unFlagAbuse_comment: `/courses/${$$course_id}/discussion/comments/${param}/unFlagAbuse`,
+ upvote_thread: `/courses/${$$course_id}/discussion/threads/${param}/upvote`,
+ downvote_thread: `/courses/${$$course_id}/discussion/threads/${param}/downvote`,
+ pin_thread: `/courses/${$$course_id}/discussion/threads/${param}/pin`,
+ un_pin_thread: `/courses/${$$course_id}/discussion/threads/${param}/unpin`,
+ undo_vote_for_thread: `/courses/${$$course_id}/discussion/threads/${param}/unvote`,
+ follow_thread: `/courses/${$$course_id}/discussion/threads/${param}/follow`,
+ unfollow_thread: `/courses/${$$course_id}/discussion/threads/${param}/unfollow`,
+ update_comment: `/courses/${$$course_id}/discussion/comments/${param}/update`,
+ endorse_comment: `/courses/${$$course_id}/discussion/comments/${param}/endorse`,
+ create_sub_comment: `/courses/${$$course_id}/discussion/comments/${param}/reply`,
+ delete_comment: `/courses/${$$course_id}/discussion/comments/${param}/delete`,
+ upvote_comment: `/courses/${$$course_id}/discussion/comments/${param}/upvote`,
+ downvote_comment: `/courses/${$$course_id}/discussion/comments/${param}/downvote`,
+ undo_vote_for_comment: `/courses/${$$course_id}/discussion/comments/${param}/unvote`,
+ upload: `/courses/${$$course_id}/discussion/upload`,
+ users: `/courses/${$$course_id}/discussion/users`,
+ search: `/courses/${$$course_id}/discussion/forum/search`,
+ retrieve_discussion: `/courses/${$$course_id}/discussion/forum/${param}/inline`,
+ retrieve_single_thread: `/courses/${$$course_id}/discussion/forum/${param}/threads/${param1}`,
+ openclose_thread: `/courses/${$$course_id}/discussion/threads/${param}/close`,
+ user_profile: `/courses/${$$course_id}/discussion/forum/users/${param}`,
+ followed_threads: `/courses/${$$course_id}/discussion/forum/users/${param}/followed`,
+ threads: `/courses/${$$course_id}/discussion/forum`,
enable_notifications: '/notification_prefs/enable/',
disable_notifications: '/notification_prefs/disable/',
notifications_status: '/notification_prefs/status/'
@@ -312,11 +314,11 @@
return this.processEachMathAndCode(htmlSnippet, function(s, type) {
if (type === 'display') {
return s.replace(RE_DISPLAYMATH, function($0, $1) {
- return '\\[' + $1 + '\\]';
+ return `\\[${$1}\\]`;
});
} else if (type === 'inline') {
return s.replace(RE_INLINEMATH, function($0, $1) {
- return '\\(' + $1 + '\\)';
+ return `\\(${$1}\\)`;
});
} else {
return s;
@@ -326,10 +328,10 @@
DiscussionUtil.makeWmdEditor = function($content, $local, cls_identifier) {
var appended_id, editor, elem, id, imageUploadUrl, placeholder, _processor;
- elem = $local('.' + cls_identifier);
+ elem = $local(`.${cls_identifier}`);
placeholder = elem.data('placeholder');
id = elem.data('id');
- appended_id = '-' + cls_identifier + '-' + id;
+ appended_id = `-${cls_identifier}-${id}`;
imageUploadUrl = this.urlFor('upload');
_processor = function(self) {
return function(text) {
@@ -338,25 +340,25 @@
};
};
editor = Markdown.makeWmdEditor(elem, appended_id, imageUploadUrl, _processor(this));
- this.wmdEditors['' + cls_identifier + '-' + id] = editor;
+ this.wmdEditors[`${cls_identifier}-${id}`] = editor;
if (placeholder) {
- elem.find('#wmd-input' + appended_id).attr('placeholder', placeholder);
+ elem.find(`#wmd-input${appended_id}`).attr('placeholder', placeholder);
}
return editor;
};
DiscussionUtil.getWmdEditor = function($content, $local, cls_identifier) {
var elem, id;
- elem = $local('.' + cls_identifier);
+ elem = $local(`.${cls_identifier}`);
id = elem.attr('data-id');
- return this.wmdEditors['' + cls_identifier + '-' + id];
+ return this.wmdEditors[`${cls_identifier}-${id}`];
};
DiscussionUtil.getWmdInput = function($content, $local, cls_identifier) {
var elem, id;
- elem = $local('.' + cls_identifier);
+ elem = $local(`.${cls_identifier}`);
id = elem.attr('data-id');
- return $local('#wmd-input-' + cls_identifier + '-' + id);
+ return $local(`#wmd-input-${cls_identifier}-${id}`);
};
DiscussionUtil.getWmdContent = function($content, $local, cls_identifier) {
@@ -395,7 +397,7 @@
while (true) {
if (RE_INLINEMATH.test(htmlString)) {
htmlString = htmlString.replace(RE_INLINEMATH, function($0, $1, $2, $3) {
- processedHtmlString += $1 + processor('$' + $2 + '$', 'inline');
+ processedHtmlString += $1 + processor(`$${$2}$`, 'inline');
return $3;
});
} else if (RE_DISPLAYMATH.test(htmlString)) {
@@ -403,7 +405,7 @@
/*
corrected mathjax rendering in preview
*/
- processedHtmlString += $1 + processor('$$' + $2 + '$$', 'display');
+ processedHtmlString += $1 + processor(`$$${$2}$$`, 'display');
return $3;
});
} else {
@@ -416,7 +418,7 @@
htmlString = htmlString.replace(new RegExp(ESCAPED_DOLLAR, 'g'), '\\$');
htmlString = htmlString.replace(/\\\\\\\\/g, ESCAPED_BACKSLASH);
htmlString = htmlString.replace(/\\begin\{([a-z]*\*?)\}([\s\S]*?)\\end\{\1\}/img, function($0, $1, $2) {
- return processor(('\\begin{' + $1 + '}') + $2 + ('\\end{' + $1 + '}'));
+ return processor(`\\begin{${$1}}${$2}\\end{${$1}}`);
});
htmlString = htmlString.replace(new RegExp(ESCAPED_BACKSLASH, 'g'), '\\\\\\\\');
htmlString = htmlString.replace(new RegExp(LATEX_SCRIPT, 'g'), '{}');
diff --git a/common/static/common/js/discussion/views/discussion_content_view.js b/common/static/common/js/discussion/views/discussion_content_view.js
index 82f59a4ce5..136811cb25 100644
--- a/common/static/common/js/discussion/views/discussion_content_view.js
+++ b/common/static/common/js/discussion/views/discussion_content_view.js
@@ -236,10 +236,10 @@
var funcName, selector;
selector = event[0];
funcName = event[1];
- obj['click ' + selector] = function(event) {
+ obj[`click ${selector}`] = function(event) {
return this[funcName](event);
};
- obj['keydown ' + selector] = function(event) {
+ obj[`keydown ${selector}`] = function(event) {
return DiscussionUtil.activateOnSpace(event, this[funcName]);
};
return obj;
diff --git a/common/static/common/js/discussion/views/discussion_inline_view.js b/common/static/common/js/discussion/views/discussion_inline_view.js
index 7d87a69bca..6f20bb1f65 100644
--- a/common/static/common/js/discussion/views/discussion_inline_view.js
+++ b/common/static/common/js/discussion/views/discussion_inline_view.js
@@ -51,8 +51,8 @@
loadDiscussions: function($elem, error) {
var discussionId = this.$el.data('discussion-id'),
- url = DiscussionUtil.urlFor('retrieve_discussion', discussionId) + ('?page=' + this.page)
- + ('&sort_key=' + this.defaultSortKey) + ('&sort_order=' + this.defaultSortOrder),
+ url = `${DiscussionUtil.urlFor('retrieve_discussion', discussionId)}?page=${this.page}`
+ + `&sort_key=${this.defaultSortKey}` + `&sort_order=${this.defaultSortOrder}`,
self = this;
DiscussionUtil.safeAjax({
@@ -154,7 +154,7 @@
});
this.threadView.render();
this.listenTo(this.threadView.showView, 'thread:_delete', this.navigateToAllPosts);
- this.$(".forum-nav-thread[data-id='" + threadId + "']").removeClass('never-read');
+ this.$(`.forum-nav-thread[data-id='${threadId}']`).removeClass('never-read');
this.threadListView.$el.addClass('is-hidden');
this.$('.inline-thread').removeClass('is-hidden');
},
diff --git a/common/static/common/js/discussion/views/discussion_thread_edit_view.js b/common/static/common/js/discussion/views/discussion_thread_edit_view.js
index ca1c2043e3..564162baea 100644
--- a/common/static/common/js/discussion/views/discussion_thread_edit_view.js
+++ b/common/static/common/js/discussion/views/discussion_thread_edit_view.js
@@ -37,7 +37,7 @@
this.container.append(this.$el);
this.$submitBtn = this.$('.post-update');
this.addField($threadTypeSelector);
- this.$('#' + formId + '-post-type-' + this.threadType).attr('checked', true);
+ this.$(`#${formId}-post-type-${this.threadType}`).attr('checked', true);
// Only allow the topic field for course threads, as standalone threads
// cannot be moved.
if (this.isTabMode()) {
diff --git a/common/static/common/js/discussion/views/discussion_thread_list_view.js b/common/static/common/js/discussion/views/discussion_thread_list_view.js
index 1717bb0009..187144153e 100644
--- a/common/static/common/js/discussion/views/discussion_thread_list_view.js
+++ b/common/static/common/js/discussion/views/discussion_thread_list_view.js
@@ -122,13 +122,13 @@
css_class: searchAlert.attributes.css_class
});
edx.HtmlUtils.append(self.$('.search-alerts'), content);
- return self.$('#search-alert-' + searchAlert.cid + ' .dismiss')
+ return self.$(`#search-alert-${searchAlert.cid} .dismiss`)
.bind('click', searchAlert, function(event) {
return self.removeSearchAlert(event.data.cid);
});
});
this.searchAlertCollection.on('remove', function(searchAlert) {
- return self.$('#search-alert-' + searchAlert.cid).remove();
+ return self.$(`#search-alert-${searchAlert.cid}`).remove();
});
this.searchAlertCollection.on('reset', function() {
return self.$('.search-alerts').empty();
@@ -163,7 +163,7 @@
this.clearSearchAlerts();
threadId = thread.get('id');
$content = this.renderThread(thread);
- $currentElement = this.$('.forum-nav-thread[data-id=' + threadId + ']');
+ $currentElement = this.$(`.forum-nav-thread[data-id=${threadId}]`);
active = $currentElement.has('.forum-nav-thread-link.is-active').length !== 0;
$currentElement.replaceWith($content);
this.showMetadataAccordingToSort();
@@ -203,7 +203,7 @@
this.$('.forum-nav-filter-main').addClass('is-hidden');
}
this.$('.forum-nav-sort-control option').removeProp('selected');
- this.$('.forum-nav-sort-control option[value=' + this.collection.sort_preference + ']')
+ this.$(`.forum-nav-sort-control option[value=${this.collection.sort_preference}]`)
.prop('selected', true);
this.displayedCollection.on('reset', this.renderThreads);
this.displayedCollection.on('thread:remove', this.renderThreads);
@@ -308,7 +308,7 @@
lastThread = ref ? ref.get('id') : void 0;
if (lastThread) {
this.once('threads:rendered', function() {
- var classSelector = ".forum-nav-thread[data-id='" + lastThread + "'] + .forum-nav-thread "
+ var classSelector = `.forum-nav-thread[data-id='${lastThread}'] + .forum-nav-thread `
+ '.forum-nav-thread-link';
return $(classSelector).focus();
});
@@ -383,14 +383,14 @@
DiscussionThreadListView.prototype.setActiveThread = function(threadId) {
var $srElem;
this.$('.forum-nav-thread-link').find('.sr').remove();
- this.$(".forum-nav-thread[data-id!='" + threadId + "'] .forum-nav-thread-link")
+ this.$(`.forum-nav-thread[data-id!='${threadId}'] .forum-nav-thread-link`)
.removeClass('is-active');
$srElem = edx.HtmlUtils.joinHtml(
edx.HtmlUtils.HTML(''),
edx.HtmlUtils.ensureHtml(gettext('Current conversation')),
edx.HtmlUtils.HTML('')
).toString();
- this.$(".forum-nav-thread[data-id='" + threadId + "'] .forum-nav-thread-link")
+ this.$(`.forum-nav-thread[data-id='${threadId}'] .forum-nav-thread-link`)
.addClass('is-active').find('.forum-nav-thread-wrapper-1')
.prepend($srElem);
};
diff --git a/common/static/common/js/discussion/views/discussion_thread_show_view.js b/common/static/common/js/discussion/views/discussion_thread_show_view.js
index 783c309134..6de3c1ae4e 100644
--- a/common/static/common/js/discussion/views/discussion_thread_show_view.js
+++ b/common/static/common/js/discussion/views/discussion_thread_show_view.js
@@ -34,7 +34,7 @@
this.startHeader = options.startHeader;
this.is_commentable_divided = options.is_commentable_divided;
if ((_ref = this.mode) !== 'tab' && _ref !== 'inline') {
- throw new Error('invalid mode: ' + this.mode);
+ throw new Error(`invalid mode: ${this.mode}`);
}
};
diff --git a/common/static/common/js/discussion/views/discussion_thread_view.js b/common/static/common/js/discussion/views/discussion_thread_view.js
index c6ca802a77..0825d2b51f 100644
--- a/common/static/common/js/discussion/views/discussion_thread_view.js
+++ b/common/static/common/js/discussion/views/discussion_thread_view.js
@@ -86,7 +86,7 @@
this.options = _.extend({}, options);
this.startHeader = options.startHeader;
if ((_ref = this.mode) !== 'tab' && _ref !== 'inline') {
- throw new Error('invalid mode: ' + this.mode);
+ throw new Error(`invalid mode: ${this.mode}`);
}
this.readOnly = $('.discussion-module').data('read-only');
this.model.collection.on('reset', function(collection) {
diff --git a/common/static/common/js/discussion/views/discussion_topic_menu_view.js b/common/static/common/js/discussion/views/discussion_topic_menu_view.js
index 2799da832b..bc924494e5 100644
--- a/common/static/common/js/discussion/views/discussion_topic_menu_view.js
+++ b/common/static/common/js/discussion/views/discussion_topic_menu_view.js
@@ -34,7 +34,7 @@
if (this.getCurrentTopicId()) {
this.setTopic(this.$('.post-topic option').filter(
- '[data-discussion-id="' + this.getCurrentTopicId() + '"]'
+ `[data-discussion-id="${this.getCurrentTopicId()}"]`
));
} else if ($general.length > 0) {
this.setTopic($general.first());
@@ -101,7 +101,7 @@
if (topicElement) {
name = topicElement.html();
_.each(topicElement.parents('optgroup'), function(item) {
- name = $(item).attr('label') + ' / ' + name;
+ name = `${$(item).attr('label')} / ${name}`;
});
return name;
} else {
diff --git a/common/static/common/js/discussion/views/new_post_view.js b/common/static/common/js/discussion/views/new_post_view.js
index 106c4daf13..e487e2adb0 100644
--- a/common/static/common/js/discussion/views/new_post_view.js
+++ b/common/static/common/js/discussion/views/new_post_view.js
@@ -39,7 +39,7 @@
this.mode = options.mode || 'inline';
this.startHeader = options.startHeader;
if ((_ref = this.mode) !== 'tab' && _ref !== 'inline') {
- throw new Error('invalid mode: ' + this.mode);
+ throw new Error(`invalid mode: ${this.mode}`);
}
this.course_settings = options.course_settings;
this.is_commentable_divided = options.is_commentable_divided;
@@ -58,7 +58,7 @@
is_discussion_division_enabled: this.course_settings.get('is_discussion_division_enabled'),
mode: this.mode,
startHeader: this.startHeader,
- form_id: this.mode + (this.topicId ? '-' + this.topicId : '')
+ form_id: this.mode + (this.topicId ? `-${this.topicId}` : '')
});
edx.HtmlUtils.setHtml(
this.$el,
diff --git a/common/static/common/js/discussion/views/thread_response_view.js b/common/static/common/js/discussion/views/thread_response_view.js
index d31bf61ba8..79f357ce08 100644
--- a/common/static/common/js/discussion/views/thread_response_view.js
+++ b/common/static/common/js/discussion/views/thread_response_view.js
@@ -82,7 +82,7 @@
};
ThreadResponseView.prototype.render = function() {
- this.$el.addClass('response_' + this.model.get('id'));
+ this.$el.addClass(`response_${this.model.get('id')}`);
edx.HtmlUtils.setHtml(this.$el, edx.HtmlUtils.HTML(this.renderTemplate()));
this.delegateEvents();
this.renderShowView();
diff --git a/common/static/common/js/jasmine_stack_trace.js b/common/static/common/js/jasmine_stack_trace.js
index 5cd73ff287..f61d591f0a 100644
--- a/common/static/common/js/jasmine_stack_trace.js
+++ b/common/static/common/js/jasmine_stack_trace.js
@@ -3,8 +3,8 @@
initialized we can't override the ExceptionFormatter as Jasmine then uses the stored reference to the function */
(function() {
/* globals jasmineRequire */
-
-'use strict';
+
+ 'use strict';
var OldExceptionFormatter = jasmineRequire.ExceptionFormatter(),
oldExceptionFormatter = new OldExceptionFormatter(),
diff --git a/common/static/common/js/karma.common.conf.js b/common/static/common/js/karma.common.conf.js
index 41936aeb9b..429184ba4c 100644
--- a/common/static/common/js/karma.common.conf.js
+++ b/common/static/common/js/karma.common.conf.js
@@ -40,9 +40,11 @@
var path = require('path');
var _ = require('underscore');
+
var appRoot = path.join(__dirname, '../../../../');
var webdriver = require('selenium-webdriver');
var firefox = require('selenium-webdriver/firefox');
+
var webpackConfig = require(path.join(appRoot, 'webpack.dev.config.js'));
// The following crazy bit is to work around the webpack.optimize.CommonsChunkPlugin
@@ -90,7 +92,7 @@ delete webpackConfig[0].entry;
* @return {String}
*/
function junitNameFormatter(browser, result) {
- return result.suite[0] + ': ' + result.description;
+ return `${result.suite[0]}: ${result.description}`;
}
/**
@@ -99,7 +101,7 @@ function junitNameFormatter(browser, result) {
* @return {String}
*/
function junitClassNameFormatter(browser) {
- return 'Javascript.' + browser.name.split(' ')[0];
+ return `Javascript.${browser.name.split(' ')[0]}`;
}
/**
@@ -184,10 +186,10 @@ function junitSettings(config) {
function defaultNormalizeFunc(appRoot, pattern) { // eslint-disable-line no-shadow
var pat = pattern;
if (pat.match(/^common\/js/)) {
- pat = path.join(appRoot, '/common/static/' + pat);
+ pat = path.join(appRoot, `/common/static/${pat}`);
} else if (pat.match(/^xmodule_js\/common_static/)) {
- pat = path.join(appRoot, '/common/static/'
- + pat.replace(/^xmodule_js\/common_static\//, ''));
+ pat = path.join(appRoot, `/common/static/${
+ pat.replace(/^xmodule_js\/common_static\//, '')}`);
}
return pat;
}
diff --git a/common/static/common/js/spec/components/paginated_view_spec.js b/common/static/common/js/spec/components/paginated_view_spec.js
index 21797a854a..9f0aed377d 100644
--- a/common/static/common/js/spec/components/paginated_view_spec.js
+++ b/common/static/common/js/spec/components/paginated_view_spec.js
@@ -29,7 +29,7 @@ define([
generateItems = function(numItems) {
return _.map(_.range(numItems), function(i) {
return {
- text: 'item ' + i
+ text: `item ${i}`
};
});
};
@@ -84,7 +84,7 @@ define([
function expectFooter(options) {
var footerEl = testView.$('.test-paging-footer');
expect(footerEl.text())
- .toMatch(new RegExp(options.currentPage + '\\s+out of\\s+\/\\s+' + options.totalPages));
+ .toMatch(new RegExp(`${options.currentPage}\\s+out of\\s+\/\\s+${options.totalPages}`));
expect(footerEl.hasClass('hidden')).toBe(options.isHidden);
}
diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js
index 50569246f6..3bdd523a50 100644
--- a/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js
@@ -226,7 +226,7 @@
describe('should filter correctly', function() {
return _.each(['all', 'unread', 'unanswered', 'flagged'], function(filterVal) {
- it('for ' + filterVal, function() {
+ it(`for ${filterVal}`, function() {
expectFilter(filterVal);
this.view.$('.forum-nav-filter-main-control').val(filterVal).change();
return expect($.ajax).toHaveBeenCalled();
@@ -734,7 +734,7 @@
.first()
.text()
.trim()
- ).toEqual(newCommentsOnUnreadThread + ' new');
+ ).toEqual(`${newCommentsOnUnreadThread} new`);
});
it('should display every thread as read if hideReadState: true is passed to the constructor', function() {
diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_profile_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_profile_view_spec.js
index fa1079c747..33e43790d8 100644
--- a/common/static/common/js/spec/discussion/view/discussion_thread_profile_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/discussion_thread_profile_view_spec.js
@@ -47,7 +47,7 @@
expectedText = '';
if (truncatedText) {
testText = new Array(100).join('test ');
- expectedText = testText.substring(0, 139) + '…';
+ expectedText = `${testText.substring(0, 139)}…`;
} else {
testText = 'Test body';
expectedText = 'Test body';
@@ -57,20 +57,20 @@
_ref >= 0 ? _i <= _ref : _i >= _ref;
i = _ref >= 0 ? ++_i : --_i
) {
- threadData.body = threadData.body + imageTag;
+ threadData.body += imageTag;
if (i === 0) {
- expectedHtml = expectedHtml + imageTag;
+ expectedHtml += imageTag;
} else {
- expectedHtml = expectedHtml + 'image omitted';
+ expectedHtml = `${expectedHtml}image omitted`;
}
}
}
- threadData.body = threadData.body + '' + testText + '';
+ threadData.body = `${threadData.body}${testText}`;
if (numberOfImages > 1) {
- expectedHtml = expectedHtml + '' + expectedText
- + 'Some images in this post have been omitted
';
+ expectedHtml = `${expectedHtml}${expectedText
+ }Some images in this post have been omitted
`;
} else {
- expectedHtml = expectedHtml + '' + expectedText + '';
+ expectedHtml = `${expectedHtml}${expectedText}`;
}
view = makeView(makeThread(threadData));
view.render();
@@ -89,7 +89,7 @@
outputHtmlStripped = outputHtmlStripped.replace('Some images in this post have been omitted', '');
outputHtmlStripped = outputHtmlStripped.replace('image omitted', '');
inputHtmlStripped = threadData.body.replace(/(<([^>]+)>)/ig, '');
- expectedOutput = inputHtmlStripped.substring(0, 139) + '…';
+ expectedOutput = `${inputHtmlStripped.substring(0, 139)}…`;
expect(outputHtmlStripped).toEqual(expectedOutput);
return expect(view.$el.find('.post-body').html().indexOf('…')).toBeGreaterThan(0);
}
@@ -110,14 +110,14 @@
});
it('untruncated text with markdown body', function() {
var view;
- this.threadData.body = '' + this.imageTag + 'Google top search engine
';
+ this.threadData.body = `${this.imageTag}Google top search engine
`;
view = makeView(makeThread(this.threadData));
return checkBody(false, view, this.threadData);
});
it('truncated text with markdown body', function() {
var testText, view;
testText = new Array(100).join('test ');
- this.threadData.body = '' + this.imageTag + this.imageTag + '' + testText + '
';
+ this.threadData.body = `${this.imageTag}${this.imageTag}${testText}
`;
view = makeView(makeThread(this.threadData));
return checkBody(true, view, this.threadData);
});
@@ -128,8 +128,8 @@
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
truncatedText = _ref1[_j];
it(
- 'body with ' + numImages + ' images and ' + (truncatedText ? 'truncated' : 'untruncated')
- + ' text',
+ `body with ${numImages} images and ${truncatedText ? 'truncated' : 'untruncated'
+ } text`,
// eslint-disable no-loop-func
function() {
return checkPostWithImages(numImages, truncatedText, this.threadData, this.imageTag);
diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js
index 44b5c4f124..34be53798e 100644
--- a/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/discussion_thread_view_spec.js
@@ -57,8 +57,8 @@
createTestResponseJson = function(index) {
return {
user_id: window.user.id,
- body: 'Response ' + index,
- id: 'id_' + index,
+ body: `Response ${index}`,
+ id: `id_${index}`,
created_at: '2015-01-01T22:20:28Z'
};
};
@@ -300,8 +300,8 @@
expect(view.$('.js-marked-answer-list .discussion-response').length).toEqual(numEndorsed);
expect(view.$('.js-response-list .discussion-response').length).toEqual(numNonEndorsed);
return assertResponseCountAndPaginationCorrect(
- view, '' + numNonEndorsed + ' ' + (numEndorsed ? 'other ' : '')
- + (numNonEndorsed === 1 ? 'response' : 'responses'),
+ view, `${numNonEndorsed} ${numEndorsed ? 'other ' : ''
+ }${numNonEndorsed === 1 ? 'response' : 'responses'}`,
numNonEndorsed ? 'Showing all responses' : null, null
);
};
@@ -316,8 +316,8 @@
many: 5
}, function(numNonEndorsed, nonEndorsedDesc) {
it(
- 'renders correctly with ' + endorsedDesc + ' marked answer(s) and ' + nonEndorsedDesc
- + ' response(s)',
+ `renders correctly with ${endorsedDesc} marked answer(s) and ${nonEndorsedDesc
+ } response(s)`,
function() { return renderTestCase(this.view, numEndorsed, numNonEndorsed); }
);
});
diff --git a/common/static/common/js/spec/discussion/view/discussion_view_spec_helper.js b/common/static/common/js/spec/discussion/view/discussion_view_spec_helper.js
index cca39d0c56..ae5b66b86e 100644
--- a/common/static/common/js/spec/discussion/view/discussion_view_spec_helper.js
+++ b/common/static/common/js/spec/discussion/view/discussion_view_spec_helper.js
@@ -58,9 +58,9 @@
button = view.$el.find('.action-vote');
expect(button.hasClass('is-checked')).toBe(user.voted(model));
expect(button.attr('aria-checked')).toEqual(user.voted(model).toString());
- expect(button.find('.vote-count').text()).toMatch('^' + (model.get('votes').up_count) + ' Votes?$');
+ expect(button.find('.vote-count').text()).toMatch(`^${model.get('votes').up_count} Votes?$`);
return expect(button.find('.sr.js-sr-vote-count').text())
- .toMatch('^there are currently ' + (model.get('votes').up_count) + ' votes?$');
+ .toMatch(`^there are currently ${model.get('votes').up_count} votes?$`);
};
DiscussionViewSpecHelper.checkRenderVote = function(view, model) {
@@ -91,7 +91,7 @@
var initialVoteCount, _ref, _ref1;
expect((_ref = model.id, __indexOf.call(user.get('upvoted_ids'), _ref) >= 0)).toBe(false);
initialVoteCount = model.get('votes').up_count;
- triggerVoteEvent(view, event, DiscussionUtil.urlFor('upvote_' + (model.get('type')), model.id) + '?ajax=1');
+ triggerVoteEvent(view, event, `${DiscussionUtil.urlFor(`upvote_${model.get('type')}`, model.id)}?ajax=1`);
expect((_ref1 = model.id, __indexOf.call(user.get('upvoted_ids'), _ref1) >= 0)).toBe(true);
return expect(model.get('votes').up_count).toEqual(initialVoteCount + 1);
};
@@ -102,7 +102,7 @@
expect((_ref = model.id, __indexOf.call(user.get('upvoted_ids'), _ref) >= 0)).toBe(true);
initialVoteCount = model.get('votes').up_count;
triggerVoteEvent(
- view, event, DiscussionUtil.urlFor('undo_vote_for_' + (model.get('type')), model.id) + '?ajax=1'
+ view, event, `${DiscussionUtil.urlFor(`undo_vote_for_${model.get('type')}`, model.id)}?ajax=1`
);
expect(user.get('upvoted_ids')).toEqual([]);
return expect(model.get('votes').up_count).toEqual(initialVoteCount - 1);
diff --git a/common/static/common/js/spec/discussion/view/new_post_view_spec.js b/common/static/common/js/spec/discussion/view/new_post_view_spec.js
index b388526bef..d3dd2afb64 100644
--- a/common/static/common/js/spec/discussion/view/new_post_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/new_post_view_spec.js
@@ -9,7 +9,7 @@
DiscussionSpecHelper.setUnderscoreFixtures();
window.$$course_id = 'edX/999/test';
spyOn(DiscussionUtil, 'makeWmdEditor').and.callFake(function($content, $local, cls_identifier) {
- return $local('.' + cls_identifier).html('');
+ return $local(`.${cls_identifier}`).html('');
});
this.discussion = new Discussion([], {
pages: 1
@@ -254,7 +254,7 @@
}
};
return _.each(['tab', 'inline'], function(mode) {
- it('resets the form in ' + mode + ' mode', function() {
+ it(`resets the form in ${mode} mode`, function() {
return checkPostCancelReset(mode, this.discussion, this.course_settings);
});
});
diff --git a/common/static/common/js/spec/discussion/view/response_comment_view_spec.js b/common/static/common/js/spec/discussion/view/response_comment_view_spec.js
index e7975947be..d0ca790d14 100644
--- a/common/static/common/js/spec/discussion/view/response_comment_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/response_comment_view_spec.js
@@ -105,7 +105,7 @@
expect(this.view._delete).toHaveBeenCalled();
this.view.showView.trigger('comment:edit', DiscussionSpecHelper.makeEventSpy());
expect(this.view.edit).toHaveBeenCalled();
- return expect(this.view.$('.edit-post-form#comment_' + this.comment.id))
+ return expect(this.view.$(`.edit-post-form#comment_${this.comment.id}`))
.not.toHaveClass('edit-post-form');
});
});
@@ -118,7 +118,7 @@
expect(this.view.update).toHaveBeenCalled();
this.view.editView.trigger('comment:cancel_edit', DiscussionSpecHelper.makeEventSpy());
expect(this.view.cancelEdit).toHaveBeenCalled();
- return expect(this.view.$('.edit-post-form#comment_' + this.comment.id)).toHaveClass('edit-post-form');
+ return expect(this.view.$(`.edit-post-form#comment_${this.comment.id}`)).toHaveClass('edit-post-form');
});
});
describe('edit', function() {
diff --git a/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js b/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js
index 31a4599c5d..88d269aae6 100644
--- a/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js
@@ -71,7 +71,7 @@
});
this.view.render();
expect(this.view.$('.posted-details').text().replace(/\s+/g, ' '))
- .toMatch('marked as answer less than a minute ago by ' + endorsement.username);
+ .toMatch(`marked as answer less than a minute ago by ${endorsement.username}`);
return expect(this.view.$('.posted-details > a').attr('href'))
.toEqual('/courses/edX/999/test/discussion/forum/users/test_id');
});
@@ -104,7 +104,7 @@
});
this.view.render();
expect(this.view.$('.posted-details').text().replace(/\s+/g, ' '))
- .toMatch('endorsed less than a minute ago by ' + endorsement.username);
+ .toMatch(`endorsed less than a minute ago by ${endorsement.username}`);
return expect(this.view.$('.posted-details > a').attr('href'))
.toEqual('/courses/edX/999/test/discussion/forum/users/test_id');
});
diff --git a/common/static/common/js/spec/main_requirejs.js b/common/static/common/js/spec/main_requirejs.js
index 8cf4eff51a..6ae02a3965 100644
--- a/common/static/common/js/spec/main_requirejs.js
+++ b/common/static/common/js/spec/main_requirejs.js
@@ -171,7 +171,7 @@
];
for (i = 0; i < testFiles.length; i++) {
- testFiles[i] = '/base/' + testFiles[i];
+ testFiles[i] = `/base/${testFiles[i]}`;
}
specHelpers = [
diff --git a/common/static/common/js/spec/utils/edx.utils.validate_spec.js b/common/static/common/js/spec/utils/edx.utils.validate_spec.js
index 740ad69373..699be74da6 100644
--- a/common/static/common/js/spec/utils/edx.utils.validate_spec.js
+++ b/common/static/common/js/spec/utils/edx.utils.validate_spec.js
@@ -19,7 +19,7 @@
CUSTOM_MESSAGE = 'custom message';
var createFixture = function(type, name, required, minlength, maxlength, value) {
- setFixtures('');
+ setFixtures(``);
field = $('#field');
field.prop('required', required);
diff --git a/common/static/common/js/spec_helpers/jasmine-stealth.js b/common/static/common/js/spec_helpers/jasmine-stealth.js
index 506876f62d..b0ca2196de 100644
--- a/common/static/common/js/spec_helpers/jasmine-stealth.js
+++ b/common/static/common/js/spec_helpers/jasmine-stealth.js
@@ -45,11 +45,11 @@
}
spies = {
- constructor: jasmine.createSpy('' + classToFake + '\'s constructor')
+ constructor: jasmine.createSpy(`${classToFake}'s constructor`)
};
_.each(methodsToSpy, function(methodName) {
- spies[methodName] = jasmine.createSpy('' + classToFake + '#' + methodName);
+ spies[methodName] = jasmine.createSpy(`${classToFake}#${methodName}`);
return fakeClass.prototype[methodName] = function() {
return spies[methodName].apply(this, arguments);
};
diff --git a/common/static/common/js/spec_helpers/template_helpers.js b/common/static/common/js/spec_helpers/template_helpers.js
index 97ad290ae1..1f8eea4fa9 100644
--- a/common/static/common/js/spec_helpers/template_helpers.js
+++ b/common/static/common/js/spec_helpers/template_helpers.js
@@ -6,14 +6,14 @@ define(['jquery', 'underscore'],
var installTemplate, installTemplates;
installTemplate = function(templateFile, isFirst, templateId) {
- var template = readFixtures(templateFile + '.underscore'),
+ var template = readFixtures(`${templateFile}.underscore`),
templateName = templateFile,
slashIndex = _.lastIndexOf(templateName, '/');
if (slashIndex >= 0) {
templateName = templateFile.substring(slashIndex + 1);
}
if (!templateId) {
- templateId = templateName + '-tpl';
+ templateId = `${templateName}-tpl`;
}
if (isFirst) {
diff --git a/common/static/common/js/utils/edx.utils.validate.js b/common/static/common/js/utils/edx.utils.validate.js
index 1565e06dc8..c9908a09d5 100644
--- a/common/static/common/js/utils/edx.utils.validate.js
+++ b/common/static/common/js/utils/edx.utils.validate.js
@@ -125,7 +125,7 @@
getLabel: function(id) {
// Extract the field label, remove the asterisk (if it appears) and any extra whitespace
- return $('label[for=' + id + '] > span.label-text').text().split('*')[0].trim();
+ return $(`label[for=${id}] > span.label-text`).text().split('*')[0].trim();
},
getMessage: function($el, tests) {
@@ -140,8 +140,8 @@
_.each(tests, function(value, key) {
if (!value) {
label = _fn.validate.getLabel($el.attr('id'));
- customMsg = $el.data('errormsg-' + key) || false;
- liveValidationMsg = $('#' + $el.attr('id') + '-validation-error-msg').text() || false;
+ customMsg = $el.data(`errormsg-${key}`) || false;
+ liveValidationMsg = $(`#${$el.attr('id')}-validation-error-msg`).text() || false;
// If the field has a custom error msg attached, use it
if (customMsg) {
diff --git a/common/static/common/js/xblock/core.js b/common/static/common/js/xblock/core.js
index 1b0ab6dd84..b1c9c1e6e4 100644
--- a/common/static/common/js/xblock/core.js
+++ b/common/static/common/js/xblock/core.js
@@ -7,9 +7,9 @@
var selector;
requestToken = requestToken || $(element).data('request-token');
if (requestToken) {
- selector = '.' + blockClass + '[data-request-token="' + requestToken + '"]';
+ selector = `.${blockClass}[data-request-token="${requestToken}"]`;
} else {
- selector = '.' + blockClass;
+ selector = `.${blockClass}`;
}
// After an element is initialized, a class is added to it. To avoid repeat initialization, no
// elements with that class should be selected.
@@ -26,11 +26,11 @@
initFnName = $element.data('init');
if (runtime && version && initFnName) {
- return new window[runtime]['v' + version]();
+ return new window[runtime][`v${version}`]();
} else {
if (runtime || version || initFnName) {
console.log(
- 'Block ' + $element.outerHTML + ' is missing data-runtime, data-runtime-version or data-init, '
+ `Block ${$element.outerHTML} is missing data-runtime, data-runtime-version or data-init, `
+ 'and can\'t be initialized'
);
} // else this XBlock doesn't have a JS init function.
@@ -114,7 +114,7 @@
*/
initializeAside: function(element) {
var blockUsageId = $(element).data('block-id');
- var blockElement = $(element).siblings('[data-usage-id="' + blockUsageId + '"]')[0];
+ var blockElement = $(element).siblings(`[data-usage-id="${blockUsageId}"]`)[0];
return constructBlock(element, [blockElement, initArgs(element)]);
},
diff --git a/common/static/js/capa/chemical_equation_preview.js b/common/static/js/capa/chemical_equation_preview.js
index d23d8e51d3..72cd165ac2 100644
--- a/common/static/js/capa/chemical_equation_preview.js
+++ b/common/static/js/capa/chemical_equation_preview.js
@@ -17,7 +17,7 @@
});
}
- prev_id = '#' + this.id + '_preview';
+ prev_id = `#${this.id}_preview`;
preview_div = $(prev_id);
// find the closest parent problems-wrapper and use that url
diff --git a/common/static/js/capa/drag_and_drop/base_image.js b/common/static/js/capa/drag_and_drop/base_image.js
index 736d8d3438..4f5be0ddaf 100644
--- a/common/static/js/capa/drag_and_drop/base_image.js
+++ b/common/static/js/capa/drag_and_drop/base_image.js
@@ -36,7 +36,7 @@
HtmlUtils.HTML('ERROR: Image "'), state.config.baseImage, HtmlUtils.HTML('" was not found!'),
HtmlUtils.HTML('')
);
- console.log('ERROR: Image "' + state.config.baseImage + '" was not found!');
+ console.log(`ERROR: Image "${state.config.baseImage}" was not found!`);
HtmlUtils.setHtml($baseImageElContainer, errorMsg);
$baseImageElContainer.appendTo(state.containerEl);
});
diff --git a/common/static/js/capa/drag_and_drop/config_parser.js b/common/static/js/capa/drag_and_drop/config_parser.js
index bbd574b0d3..4821070afe 100644
--- a/common/static/js/capa/drag_and_drop/config_parser.js
+++ b/common/static/js/capa/drag_and_drop/config_parser.js
@@ -206,11 +206,11 @@
function attrIsString(obj, attr) {
if (obj.hasOwnProperty(attr) === false) {
- console.log('ERROR: Attribute "obj.' + attr + '" is not present.');
+ console.log(`ERROR: Attribute "obj.${attr}" is not present.`);
return false;
} else if (typeof obj[attr] !== 'string') {
- console.log('ERROR: Attribute "obj.' + attr + '" is not a string.');
+ console.log(`ERROR: Attribute "obj.${attr}" is not a string.`);
return false;
}
@@ -222,7 +222,7 @@
var tempInt;
if (obj.hasOwnProperty(attr) === false) {
- console.log('ERROR: Attribute "obj.' + attr + '" is not present.');
+ console.log(`ERROR: Attribute "obj.${attr}" is not present.`);
return false;
}
@@ -230,7 +230,7 @@
tempInt = parseInt(obj[attr], 10);
if (isFinite(tempInt) === false) {
- console.log('ERROR: Attribute "obj.' + attr + '" is not an integer.');
+ console.log(`ERROR: Attribute "obj.${attr}" is not an integer.`);
return false;
}
@@ -243,7 +243,7 @@
function attrIsBoolean(obj, attr, defaultVal) {
if (obj.hasOwnProperty(attr) === false) {
if (defaultVal === undefined) {
- console.log('ERROR: Attribute "obj.' + attr + '" is not present.');
+ console.log(`ERROR: Attribute "obj.${attr}" is not present.`);
return false;
} else {
@@ -260,7 +260,7 @@
} else if ((obj[attr] === 'true') || (obj[attr] === true)) {
obj[attr] = true;
} else {
- console.log('ERROR: Attribute "obj.' + attr + '" is not a boolean.');
+ console.log(`ERROR: Attribute "obj.${attr}" is not a boolean.`);
return false;
}
diff --git a/common/static/js/capa/drag_and_drop/container.js b/common/static/js/capa/drag_and_drop/container.js
index 35107a8b0d..1d8d2e4f21 100644
--- a/common/static/js/capa/drag_and_drop/container.js
+++ b/common/static/js/capa/drag_and_drop/container.js
@@ -7,7 +7,7 @@
''
);
- $('#inputtype_' + state.problemId).before(HtmlUtils.HTML(state.containerEl).toString());
+ $(`#inputtype_${state.problemId}`).before(HtmlUtils.HTML(state.containerEl).toString());
}
}); // End-of: define([], function () {
}(RequireJS.requirejs, RequireJS.require, RequireJS.define)); // End-of: (function (requirejs, require, define) {
diff --git a/common/static/js/capa/drag_and_drop/main.js b/common/static/js/capa/drag_and_drop/main.js
index e7872b400d..9c93c05bdd 100644
--- a/common/static/js/capa/drag_and_drop/main.js
+++ b/common/static/js/capa/drag_and_drop/main.js
@@ -62,10 +62,10 @@
}
try {
- config = JSON.parse($('#drag_and_drop_json_' + problemId).html());
+ config = JSON.parse($(`#drag_and_drop_json_${problemId}`).html());
} catch (err) {
console.log('ERROR: Could not parse the JSON configuration options.');
- console.log('Error message: "' + err.message + '".');
+ console.log(`Error message: "${err.message}".`);
return;
}
diff --git a/common/static/js/capa/drag_and_drop/scroller.js b/common/static/js/capa/drag_and_drop/scroller.js
index 943543e6fb..51f60ced1e 100644
--- a/common/static/js/capa/drag_and_drop/scroller.js
+++ b/common/static/js/capa/drag_and_drop/scroller.js
@@ -52,7 +52,7 @@
// We scroll by changing the 'margin-left' CSS property smoothly.
state.sliderEl.animate({
- 'margin-left': showElLeftMargin + 'px'
+ 'margin-left': `${showElLeftMargin}px`
}, 100, function() {
updateArrowOpacity();
});
@@ -123,7 +123,7 @@
// We scroll by changing the 'margin-left' CSS property smoothly.
state.sliderEl.animate({
- 'margin-left': showElLeftMargin + 'px'
+ 'margin-left': `${showElLeftMargin}px`
}, 100, function() {
updateArrowOpacity();
});
diff --git a/common/static/js/capa/drag_and_drop/state.js b/common/static/js/capa/drag_and_drop/state.js
index 6ea9d5b623..d1a0db60dd 100644
--- a/common/static/js/capa/drag_and_drop/state.js
+++ b/common/static/js/capa/drag_and_drop/state.js
@@ -41,7 +41,7 @@
function getUniqueId() {
this.uniqueId += 1;
- return this.salt + '_' + this.uniqueId.toFixed(0);
+ return `${this.salt}_${this.uniqueId.toFixed(0)}`;
}
function makeSalt() {
diff --git a/common/static/js/capa/drag_and_drop/update_input.js b/common/static/js/capa/drag_and_drop/update_input.js
index 341e5a6726..c14fdc5135 100644
--- a/common/static/js/capa/drag_and_drop/update_input.js
+++ b/common/static/js/capa/drag_and_drop/update_input.js
@@ -50,7 +50,7 @@
}(0));
}
- $('#input_' + state.problemId).val(JSON.stringify(draggables));
+ $(`#input_${state.problemId}`).val(JSON.stringify(draggables));
}
function addTargetRecursively(tempObj, draggable, target) {
@@ -69,7 +69,7 @@
function check(state) {
var inputElVal;
- inputElVal = $('#input_' + state.problemId).val();
+ inputElVal = $(`#input_${state.problemId}`).val();
if (inputElVal.length === 0) {
return false;
@@ -189,7 +189,7 @@
if (reportError !== false) {
console.log(
'ERROR: In answer there exists a '
- + 'draggable ID "' + draggableId + '". No '
+ + `draggable ID "${draggableId}". No `
+ 'draggable with this ID could be found.'
);
}
@@ -201,7 +201,7 @@
if (reportError !== false) {
console.log(
'ERROR: In answer there exists a target '
- + 'ID "' + targetId + '". No target with this '
+ + `ID "${targetId}". No target with this `
+ 'ID could be found.'
);
}
@@ -227,7 +227,7 @@
if ((draggable = getById(state, 'draggables', draggableId)) === null) {
console.log(
'ERROR: In answer there exists a '
- + 'draggable ID "' + draggableId + '". No '
+ + `draggable ID "${draggableId}". No `
+ 'draggable with this ID could be found.'
);
diff --git a/common/static/js/capa/jsinput/jsinput_example.js b/common/static/js/capa/jsinput/jsinput_example.js
index f3ee144a2c..aaf8d1fbb0 100644
--- a/common/static/js/capa/jsinput/jsinput_example.js
+++ b/common/static/js/capa/jsinput/jsinput_example.js
@@ -32,7 +32,7 @@
}
select.appendChild(option);
}
- feedback.innerText = "The currently selected answer is '" + state.selectedChoice + "'.";
+ feedback.innerText = `The currently selected answer is '${state.selectedChoice}'.`;
}
function getGrade() {
@@ -74,8 +74,8 @@
select.addEventListener('change', function() {
state.selectedChoice = select.options[select.selectedIndex].text;
- feedback.innerText = "You have selected '" + state.selectedChoice
- + "'. Click Submit to grade your answer.";
+ feedback.innerText = `You have selected '${state.selectedChoice
+ }'. Click Submit to grade your answer.`;
});
return {
diff --git a/common/static/js/capa/spec/formula_equation_preview_spec.js b/common/static/js/capa/spec/formula_equation_preview_spec.js
index c52e953d03..52cea68ffe 100644
--- a/common/static/js/capa/spec/formula_equation_preview_spec.js
+++ b/common/static/js/capa/spec/formula_equation_preview_spec.js
@@ -64,7 +64,7 @@ describe('Formula Equation Preview', function() {
this.oldDGEBI = document.getElementById;
document.getElementById = function(id) {
- return $('*#' + id)[0] || null;
+ return $(`*#${id}`)[0] || null;
};
// Catch the AJAX requests
@@ -195,7 +195,7 @@ describe('Formula Equation Preview', function() {
var $input = $('#input_THE_ID');
var value;
function inputAnother(iter) {
- value = 'math input ' + iter;
+ value = `math input ${iter}`;
$input.val(value).trigger('input');
}
diff --git a/common/static/js/capa/src/formula_equation_preview.js b/common/static/js/capa/src/formula_equation_preview.js
index ba0f7fc42e..151e3e43a7 100644
--- a/common/static/js/capa/src/formula_equation_preview.js
+++ b/common/static/js/capa/src/formula_equation_preview.js
@@ -20,17 +20,17 @@ function escapeSelector(id) {
return '\uFFFD';
}
// Control characters and (dependent upon position) numbers get escaped as code points
- return ch.slice(0, -1) + '\\' + ch.charCodeAt(ch.length - 1).toString(16) + ' ';
+ return `${ch.slice(0, -1)}\\${ch.charCodeAt(ch.length - 1).toString(16)} `;
}
// Other potentially-special ASCII characters get backslash-escaped
- return '\\' + ch;
+ return `\\${ch}`;
}
if (window.CSS && window.CSS.escape) {
return window.CSS.escape(id);
} else {
// ensure string and then run the replacements
- return (id + '').replace(rcssescape, fcssescape);
+ return (`${id}`).replace(rcssescape, fcssescape);
}
}
@@ -49,7 +49,7 @@ formulaEquationPreview.enable = function() {
function setupInput() {
var $this = $(this); // cache the jQuery object
- var $preview = $('#' + escapeSelector(this.id) + '_preview');
+ var $preview = $(`#${escapeSelector(this.id)}_preview`);
var inputData = {
// These are the mutable values
@@ -187,7 +187,7 @@ formulaEquationPreview.enable = function() {
console.log('[FormulaEquationInput] Oops no mathjax for ', latex);
// Fall back to modifying the actual element.
var textNode = previewElement.childNodes[0];
- textNode.data = '\\(' + latex + '\\)';
+ textNode.data = `\\(${latex}\\)`;
MathJax.Hub.Queue(['Typeset', MathJax.Hub, previewElement]);
}
});
@@ -198,7 +198,7 @@ formulaEquationPreview.enable = function() {
if (response.error) {
inputData.$img.css('visibility', 'visible');
inputData.errorWaitTimeout = window.setTimeout(function() {
- display('\\text{' + response.error + '}');
+ display(`\\text{${response.error}}`);
inputData.$img.css('visibility', 'hidden');
}, formulaEquationPreview.errorDelay);
} else {
diff --git a/common/static/js/capa/src/jschannel.js b/common/static/js/capa/src/jschannel.js
index b5da3efb43..b26f8403d1 100644
--- a/common/static/js/capa/src/jschannel.js
+++ b/common/static/js/capa/src/jschannel.js
@@ -249,7 +249,7 @@ var Channel = (function() {
exists = hasWin(s_boundChans[origin][scope]);
}
}
- if (exists) { throw "A channel is already bound to the same window which overlaps with origin '" + origin + "' and has scope '" + scope + "'"; }
+ if (exists) { throw `A channel is already bound to the same window which overlaps with origin '${origin}' and has scope '${scope}'`; }
if (typeof s_boundChans[origin] !== 'object') { s_boundChans[origin] = { }; }
if (typeof s_boundChans[origin][scope] !== 'object') { s_boundChans[origin][scope] = []; }
@@ -388,7 +388,7 @@ var Channel = (function() {
if (cfg.debugOutput && window.console && window.console.log) {
// try to stringify, if it doesn't work we'll let javascript's built in toString do its magic
try { if (typeof m !== 'string') { m = JSON.stringify(m); } } catch (e) { }
- console.log('[' + chanId + '] ' + m);
+ console.log(`[${chanId}] ${m}`);
}
};
@@ -455,11 +455,11 @@ var Channel = (function() {
origin: origin,
invoke: function(cbName, v) {
// verify in table
- if (!inTbl[id]) { throw 'attempting to invoke a callback of a nonexistent transaction: ' + id; }
+ if (!inTbl[id]) { throw `attempting to invoke a callback of a nonexistent transaction: ${id}`; }
// verify that the callback name is valid
var valid = false;
for (var i = 0; i < callbacks.length; i++) { if (cbName === callbacks[i]) { valid = true; break; } }
- if (!valid) { throw "request supports no such callback '" + cbName + "'"; }
+ if (!valid) { throw `request supports no such callback '${cbName}'`; }
// send callback invocation
postMessage({id: id, callback: cbName, params: v});
@@ -467,7 +467,7 @@ var Channel = (function() {
error: function(error, message) {
completed = true;
// verify in table
- if (!inTbl[id]) { throw 'error called for nonexistent message: ' + id; }
+ if (!inTbl[id]) { throw `error called for nonexistent message: ${id}`; }
// remove transaction from table
delete inTbl[id];
@@ -478,7 +478,7 @@ var Channel = (function() {
complete: function(v) {
completed = true;
// verify in table
- if (!inTbl[id]) { throw 'complete called for nonexistent message: ' + id; }
+ if (!inTbl[id]) { throw `complete called for nonexistent message: ${id}`; }
// remove transaction from table
delete inTbl[id];
// send complete
@@ -500,7 +500,7 @@ var Channel = (function() {
return window.setTimeout(function() {
if (outTbl[transId]) {
// XXX: what if client code raises an exception here?
- var msg = 'timeout (' + timeout + "ms) exceeded on method '" + method + "'";
+ var msg = `timeout (${timeout}ms) exceeded on method '${method}'`;
(1, outTbl[transId].error)('timeout_error', msg);
delete outTbl[transId];
delete s_transIds[transId];
@@ -518,7 +518,7 @@ var Channel = (function() {
try {
cfg.gotMessageObserver(origin, m);
} catch (e) {
- debug('gotMessageObserver() raised an exception: ' + e.toString());
+ debug(`gotMessageObserver() raised an exception: ${e.toString()}`);
}
}
@@ -590,14 +590,14 @@ var Channel = (function() {
}
} else if (m.id && m.callback) {
if (!outTbl[m.id] || !outTbl[m.id].callbacks || !outTbl[m.id].callbacks[m.callback]) {
- debug('ignoring invalid callback, id:' + m.id + ' (' + m.callback + ')');
+ debug(`ignoring invalid callback, id:${m.id} (${m.callback})`);
} else {
// XXX: what if client code raises an exception here?
outTbl[m.id].callbacks[m.callback](m.params);
}
} else if (m.id) {
if (!outTbl[m.id]) {
- debug('ignoring invalid response: ' + m.id);
+ debug(`ignoring invalid response: ${m.id}`);
} else {
// XXX: what if client code raises an exception here?
if (m.error) {
@@ -636,7 +636,7 @@ var Channel = (function() {
// delay posting if we're not ready yet.
var verb = (ready ? 'post ' : 'queue ');
- debug(verb + ' message: ' + JSON.stringify(msg));
+ debug(`${verb} message: ${JSON.stringify(msg)}`);
if (!force && !ready) {
pendingQueue.push(msg);
} else {
@@ -644,7 +644,7 @@ var Channel = (function() {
try {
cfg.postMessageObserver(cfg.origin, msg);
} catch (e) {
- debug('postMessageObserver() raised an exception: ' + e.toString());
+ debug(`postMessageObserver() raised an exception: ${e.toString()}`);
}
}
@@ -683,7 +683,7 @@ var Channel = (function() {
// tries to unbind a bound message handler. returns false if not possible
unbind: function(method) {
if (regTbl[method]) {
- if (!(delete regTbl[method])) { throw ("can't delete method: " + method); }
+ if (!(delete regTbl[method])) { throw (`can't delete method: ${method}`); }
return true;
}
return false;
@@ -692,7 +692,7 @@ var Channel = (function() {
if (!method || typeof method !== 'string') { throw "'method' argument to bind must be string"; }
if (!cb || typeof cb !== 'function') { throw 'callback missing from bind params'; }
- if (regTbl[method]) { throw "method '" + method + "' is already bound!"; }
+ if (regTbl[method]) { throw `method '${method}' is already bound!`; }
regTbl[method] = cb;
return this;
},
diff --git a/common/static/js/capa/symbolic_mathjax_preprocessor.js b/common/static/js/capa/symbolic_mathjax_preprocessor.js
index 313cccfee8..0bad708cd7 100644
--- a/common/static/js/capa/symbolic_mathjax_preprocessor.js
+++ b/common/static/js/capa/symbolic_mathjax_preprocessor.js
@@ -24,7 +24,7 @@ window.SymbolicMathjaxPreprocessor = function() {
// a zero width space--this is an invisible character that no one would
// use, that gets passed through MathJax and to the server
var c = '\u200b';
- eqn = eqn.replace(/__(?:([^\{])|\{([^\}]+)\})/g, '^{' + c + '$1$2}');
+ eqn = eqn.replace(/__(?:([^\{])|\{([^\}]+)\})/g, `^{${c}$1$2}`);
// NOTE: MathJax supports '\class{name}{mathcode}' but not for asciimath
// input, which is too bad. This would be preferable to this char tag
diff --git a/common/static/js/spec/logger_spec.js b/common/static/js/spec/logger_spec.js
index a293bd8507..919abd10ca 100644
--- a/common/static/js/spec/logger_spec.js
+++ b/common/static/js/spec/logger_spec.js
@@ -184,7 +184,7 @@
spyOn(jQuery, 'ajax');
window.onunload();
expect(jQuery.ajax).toHaveBeenCalledWith({
- url: this.prefix + '/event',
+ url: `${this.prefix}/event`,
type: 'GET',
data: {
event_type: 'page_close',
diff --git a/common/static/js/spec/string_utils_spec.js b/common/static/js/spec/string_utils_spec.js
index 81b4d9fa3a..8d4e7c5181 100644
--- a/common/static/js/spec/string_utils_spec.js
+++ b/common/static/js/spec/string_utils_spec.js
@@ -1,15 +1,15 @@
describe('interpolate_ntext', function() {
it('replaces placeholder values', function() {
- expect(interpolate_ntext('contains {count} student', 'contains {count} students', 1, {count: 1})).
- toBe('contains 1 student');
- expect(interpolate_ntext('contains {count} student', 'contains {count} students', 5, {count: 2})).
- toBe('contains 2 students');
+ expect(interpolate_ntext('contains {count} student', 'contains {count} students', 1, {count: 1}))
+ .toBe('contains 1 student');
+ expect(interpolate_ntext('contains {count} student', 'contains {count} students', 5, {count: 2}))
+ .toBe('contains 2 students');
});
});
describe('interpolate_text', function() {
it('replaces placeholder values', function() {
- expect(interpolate_text('contains {adjective} students', {adjective: 'awesome'})).
- toBe('contains awesome students');
+ expect(interpolate_text('contains {adjective} students', {adjective: 'awesome'}))
+ .toBe('contains awesome students');
});
});
diff --git a/common/static/js/src/accessibility_tools.js b/common/static/js/src/accessibility_tools.js
index 54f9997d19..6ced857b32 100644
--- a/common/static/js/src/accessibility_tools.js
+++ b/common/static/js/src/accessibility_tools.js
@@ -99,7 +99,7 @@ var trapShiftTabFocus = function($last, closeButtonId) {
var bindReturnFocusListener = function($previouslyFocusedElement, closeButtonId, modalId, mainPageId) {
// Ensures that on modal close, focus is returned to the element
// that had focus before the modal was opened.
- $('#lean_overlay, ' + closeButtonId).click(function() {
+ $(`#lean_overlay, ${closeButtonId}`).click(function() {
$(mainPageId).attr('aria-hidden', 'false');
$(modalId).attr('aria-hidden', 'true');
$previouslyFocusedElement.focus();
@@ -151,7 +151,7 @@ var accessible_modal = function(trigger, closeButtonId, modalId, mainPageId) {
// see http://accessibility.oit.ncsu.edu/blog/2013/09/13/the-incredible-accessible-modal-dialog/
// for more information on managing modals
//
- var initialFocus
+ var initialFocus;
$(trigger).click(function() {
$focusedElementBeforeModal = $(trigger);
@@ -206,7 +206,7 @@ $(function() {
function SRAlert() {
// This initialization sometimes gets done twice, so take to only create a single reader-feedback div.
var readerFeedbackID = 'reader-feedback',
- $readerFeedbackSelector = $('#' + readerFeedbackID);
+ $readerFeedbackSelector = $(`#${readerFeedbackID}`);
if ($readerFeedbackSelector.length === 0) {
edx.HtmlUtils.append(
@@ -217,7 +217,7 @@ $(function() {
)
);
}
- this.el = $('#' + readerFeedbackID);
+ this.el = $(`#${readerFeedbackID}`);
}
SRAlert.prototype.clear = function() {
diff --git a/common/static/js/src/ie_shim.js b/common/static/js/src/ie_shim.js
index 48bcde303e..93afe806ba 100644
--- a/common/static/js/src/ie_shim.js
+++ b/common/static/js/src/ie_shim.js
@@ -11,6 +11,6 @@
// Internet Explorer does not have built-in property 'window.location.origin',
// we need to create one here as some vendor code such as TinyMCE uses this.
if (!window.location.origin) {
- window.location.origin = window.location.protocol + '//' + window.location.hostname
- + (window.location.port ? ':' + window.location.port : '');
+ window.location.origin = `${window.location.protocol}//${window.location.hostname
+ }${window.location.port ? `:${window.location.port}` : ''}`;
}
diff --git a/common/static/js/src/tooltip_manager.js b/common/static/js/src/tooltip_manager.js
index d3fe0d1566..abcdc4e2cc 100644
--- a/common/static/js/src/tooltip_manager.js
+++ b/common/static/js/src/tooltip_manager.js
@@ -4,7 +4,7 @@
var TooltipManager = function(element) {
this.element = $(element);
// If tooltip container already exist, use it.
- this.tooltip = $('div.' + this.className.split(/\s+/).join('.'));
+ this.tooltip = $(`div.${this.className.split(/\s+/).join('.')}`);
// Otherwise, create new one.
if (!this.tooltip.length) {
this.tooltip = $('', {
diff --git a/common/static/js/src/utility.js b/common/static/js/src/utility.js
index d3124ee26e..396fa9c109 100644
--- a/common/static/js/src/utility.js
+++ b/common/static/js/src/utility.js
@@ -13,7 +13,7 @@ window.isExternal = function(url) {
if (typeof match[2] === 'string'
&& match[2].length > 0
// this regex removes the port number if it patches the current location's protocol
- && match[2].replace(new RegExp(':(' + {'http:': 80, 'https:': 443}[location.protocol] + ')?$'), '') !== location.host) { return true; }
+ && match[2].replace(new RegExp(`:(${{'http:': 80, 'https:': 443}[location.protocol]})?$`), '') !== location.host) { return true; }
return false;
};
@@ -34,6 +34,6 @@ window.rewriteStaticLinks = function(content, from, to) {
// handle http and https
// escape all regex interpretable chars
fromRe = from.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
- var regex = new RegExp('(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}([-a-zA-Z0-9@:%_\+.~#?&//=]*))?' + fromRe, 'g');
+ var regex = new RegExp(`(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}([-a-zA-Z0-9@:%_\+.~#?&//=]*))?${fromRe}`, 'g');
return content.replace(regex, replacer);
};
diff --git a/common/static/karma_common.conf.js b/common/static/karma_common.conf.js
index ef8244ff78..e9085415f0 100644
--- a/common/static/karma_common.conf.js
+++ b/common/static/karma_common.conf.js
@@ -6,6 +6,7 @@
'use strict';
var path = require('path');
+
var configModule = require(path.join(__dirname, '../../common/static/common/js/karma.common.conf.js'));
var options = {
@@ -13,7 +14,7 @@ var options = {
useRequireJs: false,
normalizePathsForCoverageFunc: function(appRoot, pattern) {
- return path.join(appRoot, '/common/static/' + pattern);
+ return path.join(appRoot, `/common/static/${pattern}`);
},
// Avoid adding files to this list. Use RequireJS.
diff --git a/common/static/karma_common_requirejs.conf.js b/common/static/karma_common_requirejs.conf.js
index f407a548d0..2bc0b54b03 100644
--- a/common/static/karma_common_requirejs.conf.js
+++ b/common/static/karma_common_requirejs.conf.js
@@ -6,6 +6,7 @@
'use strict';
var path = require('path');
+
var configModule = require(path.join(__dirname, '../../common/static/common/js/karma.common.conf.js'));
var options = {
@@ -13,7 +14,7 @@ var options = {
includeCommonFiles: true,
normalizePathsForCoverageFunc: function(appRoot, pattern) {
- return path.join(appRoot, '/common/static/' + pattern);
+ return path.join(appRoot, `/common/static/${pattern}`);
},
libraryFiles: [
diff --git a/jest.config.js b/jest.config.js
index e9e014bd1d..a4e84c2350 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,17 +1,17 @@
module.exports = {
- 'globals': {
- 'gettext': (t) => { return t; },
+ globals: {
+ gettext: (t) => t,
},
- 'modulePaths': [
+ modulePaths: [
'common/static/common/js/components',
],
- 'setupFilesAfterEnv': ['/setupTests.js'],
- 'testMatch': [
+ setupFilesAfterEnv: ['/setupTests.js'],
+ testMatch: [
'/**/*.test.jsx',
'common/static/common/js/components/**/?(*.)+(spec|test).js?(x)',
],
- 'testEnvironment': 'jsdom',
- 'transform': {
+ testEnvironment: 'jsdom',
+ transform: {
'^.+\\.jsx$': 'babel-jest',
'^.+\\.js$': 'babel-jest',
},
diff --git a/lms/djangoapps/discussion/static/discussion/js/discussion_router.js b/lms/djangoapps/discussion/static/discussion/js/discussion_router.js
index 46d2950670..9b97cbdd99 100644
--- a/lms/djangoapps/discussion/static/discussion/js/discussion_router.js
+++ b/lms/djangoapps/discussion/static/discussion/js/discussion_router.js
@@ -109,7 +109,7 @@
navigateToThread: function(threadId) {
var thread = this.discussion.get(threadId);
- return this.navigate('' + (thread.get('commentable_id')) + '/threads/' + threadId, {
+ return this.navigate(`${thread.get('commentable_id')}/threads/${threadId}`, {
trigger: true
});
},
diff --git a/lms/djangoapps/support/static/support/js/collections/certificate.js b/lms/djangoapps/support/static/support/js/collections/certificate.js
index 27595a6b90..e8fd386200 100644
--- a/lms/djangoapps/support/static/support/js/collections/certificate.js
+++ b/lms/djangoapps/support/static/support/js/collections/certificate.js
@@ -20,9 +20,9 @@
},
url: function() {
- var url = '/certificates/search?user=' + this.userFilter;
+ var url = `/certificates/search?user=${this.userFilter}`;
if (this.courseFilter) {
- url += '&course_id=' + this.courseFilter;
+ url += `&course_id=${this.courseFilter}`;
}
return url;
}
diff --git a/lms/djangoapps/support/static/support/js/spec/views/certificates_spec.js b/lms/djangoapps/support/static/support/js/spec/views/certificates_spec.js
index db0999c8ae..f239a0e1dd 100644
--- a/lms/djangoapps/support/static/support/js/spec/views/certificates_spec.js
+++ b/lms/djangoapps/support/static/support/js/spec/views/certificates_spec.js
@@ -63,11 +63,11 @@ define([
searchFor = function(user_filter, course_filter, requests, response) {
// Enter the search term and submit
- var url = '/certificates/search?user=' + user_filter;
+ var url = `/certificates/search?user=${user_filter}`;
view.setUserFilter(user_filter);
if (course_filter) {
view.setCourseFilter(course_filter);
- url += '&course_id=' + course_filter;
+ url += `&course_id=${course_filter}`;
}
view.triggerSearch();
@@ -77,12 +77,12 @@ define([
},
regenerateCerts = function(username, courseKey) {
- var sel = '.btn-cert-regenerate[data-course-key="' + courseKey + '"]';
+ var sel = `.btn-cert-regenerate[data-course-key="${courseKey}"]`;
$(sel).click();
},
generateCerts = function(username, courseKey) {
- var sel = '.btn-cert-generate[data-course-key="' + courseKey + '"]';
+ var sel = `.btn-cert-generate[data-course-key="${courseKey}"]`;
$(sel).click();
};
diff --git a/lms/djangoapps/support/static/support/js/spec/views/enrollment_modal_spec.js b/lms/djangoapps/support/static/support/js/spec/views/enrollment_modal_spec.js
index c22b2ac2e5..dd77261883 100644
--- a/lms/djangoapps/support/static/support/js/spec/views/enrollment_modal_spec.js
+++ b/lms/djangoapps/support/static/support/js/spec/views/enrollment_modal_spec.js
@@ -30,16 +30,16 @@ define([
it('can render itself', function() {
expect($('.enrollment-modal h1').text()).toContain(
- 'Change enrollment for ' + EnrollmentHelpers.TEST_COURSE
+ `Change enrollment for ${EnrollmentHelpers.TEST_COURSE}`
);
expect($('.enrollment-change-field p').first().text()).toContain('Current enrollment mode: audit');
_.each(['verified', 'audit'], function(mode) {
- expect($('.enrollment-new-mode').html()).toContain('')
+ .append(``)
.append(self.schedule_options(chapter.children)); // xss-lint: disable=javascript-jquery-append
self.sequential_select.prop('disabled', false);
$('#add-unit-button').prop('disabled', false);
@@ -83,7 +83,7 @@ var edx = edx || {};
sequential = self.find_unit(self.hidden, chapter, sequential_location);
self.vertical_select.html('')
// xss-lint: disable=javascript-jquery-append, javascript-concat-html
- .append('')
+ .append(``)
.append(self.schedule_options(sequential.children)); // xss-lint: disable=javascript-jquery-append
self.vertical_select.prop('disabled', false);
self.set_datetime('start', sequential.start);
@@ -184,8 +184,8 @@ var edx = edx || {};
$('table.ccx-schedule .date button').each(function() {
if ($(this).text().trim() === gettext('Click to change')) {
// xss-lint: disable=javascript-jquery-html, javascript-concat-html
- $(this).html('Set date '
- + gettext('Click to change') + ''); // xss-lint: disable=javascript-concat-html
+ $(this).html(`Set date ${
+ gettext('Click to change')}`); // xss-lint: disable=javascript-concat-html
}
});
@@ -222,7 +222,7 @@ var edx = edx || {};
// Populate chapters select, depopulate others
this.chapter_select.html('')
// xss-lint: disable=javascript-jquery-append, javascript-concat-html
- .append('')
+ .append(``)
.append(self.schedule_options(this.hidden)); // xss-lint: disable=javascript-jquery-append
this.sequential_select.html('').prop('disabled', true);
this.vertical_select.html('').prop('disabled', true);
@@ -310,11 +310,11 @@ var edx = edx || {};
},
get_datetime: function(which) {
- var date = $('form#add-unit input[name=' + which + '_date]').val();
- var time = $('form#add-unit input[name=' + which + '_time]').val();
+ var date = $(`form#add-unit input[name=${which}_date]`).val();
+ var time = $(`form#add-unit input[name=${which}_time]`).val();
time = _.isEmpty(time) ? '00:00' : time;
if (date && time) {
- return date + ' ' + time;
+ return `${date} ${time}`;
}
return null;
},
@@ -323,8 +323,8 @@ var edx = edx || {};
var parts = value ? value.split(' ') : ['', ''],
date = parts[0],
time = parts[1];
- $('form#add-unit input[name=' + which + '_date]').val(date);
- $('form#add-unit input[name=' + which + '_time]').val(time);
+ $(`form#add-unit input[name=${which}_date]`).val(date);
+ $(`form#add-unit input[name=${which}_time]`).val(time);
},
schedule_options: function(nodes) {
@@ -473,12 +473,12 @@ var edx = edx || {};
return;
}
if (what === 'start') {
- unit.start = date + ' ' + time;
+ unit.start = `${date} ${time}`;
if (unit.category === 'sequential') {
self.updateChildrenDates(unit, what, unit.start);
}
} else {
- unit.due = date + ' ' + time;
+ unit.due = `${date} ${time}`;
if (unit.category === 'sequential') {
self.updateChildrenDates(unit, what, unit.due);
}
diff --git a/lms/static/js/certificates/views/certificate_allowlist.js b/lms/static/js/certificates/views/certificate_allowlist.js
index 89970dac7b..f0f8619ca7 100644
--- a/lms/static/js/certificates/views/certificate_allowlist.js
+++ b/lms/static/js/certificates/views/certificate_allowlist.js
@@ -42,7 +42,7 @@
},
loadTemplate: function(name) {
- var templateSelector = '#' + name + '-tpl',
+ var templateSelector = `#${name}-tpl`,
templateText = $(templateSelector).text();
return _.template(templateText);
},
@@ -79,7 +79,7 @@
},
escapeAndShowMessage: function(message) {
- $(this.message_div + '>p').remove();
+ $(`${this.message_div}>p`).remove();
// xss-lint: disable=javascript-jquery-append
$(this.message_div).removeClass('hidden').append(HtmlUtils.joinHtml(
HtmlUtils.HTML(''),
diff --git a/lms/static/js/certificates/views/certificate_allowlist_editor.js b/lms/static/js/certificates/views/certificate_allowlist_editor.js
index 136633c8aa..d7c5732d41 100644
--- a/lms/static/js/certificates/views/certificate_allowlist_editor.js
+++ b/lms/static/js/certificates/views/certificate_allowlist_editor.js
@@ -27,7 +27,7 @@
},
loadTemplate: function(name) {
- var templateSelector = '#' + name + '-tpl',
+ var templateSelector = `#${name}-tpl`,
templateText = $(templateSelector).text();
return _.template(templateText);
},
@@ -89,7 +89,7 @@
},
escapeAndShowMessage: function(message) {
- $(this.message_div + '>p').remove();
+ $(`${this.message_div}>p`).remove();
// eslint-disable-next-line max-len
this.$(this.message_div).removeClass('hidden').append(HtmlUtils.joinHtml(HtmlUtils.HTML('
'), message, HtmlUtils.HTML('
')).toString());
},
diff --git a/lms/static/js/certificates/views/certificate_bulk_allowlist.js b/lms/static/js/certificates/views/certificate_bulk_allowlist.js
index ab93487841..0dcab79552 100644
--- a/lms/static/js/certificates/views/certificate_bulk_allowlist.js
+++ b/lms/static/js/certificates/views/certificate_bulk_allowlist.js
@@ -48,7 +48,7 @@
},
loadTemplate: function(name) {
- var templateSelector = '#' + name + '-tpl',
+ var templateSelector = `#${name}-tpl`,
templateText = $(templateSelector).text();
return _.template(templateText);
},
@@ -81,9 +81,9 @@
function generateDiv(group, heading, displayData) {
// inner function generate div and display response messages.
$('', {
- class: 'message ' + group
+ class: `message ${group}`
}).appendTo('.bulk-exception-results').prepend( // eslint-disable-line max-len, xss-lint: disable=javascript-jquery-insert-into-target,javascript-jquery-prepend
- "" + heading) // eslint-disable-line max-len, xss-lint: disable=javascript-concat-html
+ `${heading}`) // eslint-disable-line max-len, xss-lint: disable=javascript-concat-html
.append($('', {
class: group
}));
@@ -91,9 +91,9 @@
for (var i = 0; i < displayData.length; i++) { // eslint-disable-line vars-on-top
$('', {
text: displayData[i]
- }).appendTo('div.message > .' + group); // eslint-disable-line max-len, xss-lint: disable=javascript-jquery-insert-into-target
+ }).appendTo(`div.message > .${group}`); // eslint-disable-line max-len, xss-lint: disable=javascript-jquery-insert-into-target
}
- $('div.message > .' + group).hide();
+ $(`div.message > .${group}`).hide();
}
function getDisplayText(qty, group) {
@@ -103,52 +103,52 @@
switch (group) {
case MESSAGE_GROUP.successfully_added:
text = qty > 1
- ? gettext(qty + ' learners were successfully added to exception list')
- : gettext(qty + ' learner was successfully added to the exception list');
+ ? gettext(`${qty} learners were successfully added to exception list`)
+ : gettext(`${qty} learner was successfully added to the exception list`);
break;
case MESSAGE_GROUP.data_format_error:
text = qty > 1
- ? gettext(qty + ' records are not in the correct format and have not been added to'
+ ? gettext(`${qty} records are not in the correct format and have not been added to`
+ ' the exception list')
- : gettext(qty + ' record is not in the correct format and has not been added to the'
+ : gettext(`${qty} record is not in the correct format and has not been added to the`
+ ' exception list');
break;
case MESSAGE_GROUP.user_not_exist:
text = qty > 1
- ? gettext(qty + ' learner accounts cannot be found and have not been added to the '
+ ? gettext(`${qty} learner accounts cannot be found and have not been added to the `
+ 'exception list')
- : gettext(qty + ' learner account cannot be found and has not been added to the'
+ : gettext(`${qty} learner account cannot be found and has not been added to the`
+ ' exception list');
break;
case MESSAGE_GROUP.user_already_allowlisted:
text = qty > 1
- ? gettext(qty + ' learners already appear on the exception list in this course')
- : gettext(qty + ' learner already appears on the exception list in this course');
+ ? gettext(`${qty} learners already appear on the exception list in this course`)
+ : gettext(`${qty} learner already appears on the exception list in this course`);
break;
case MESSAGE_GROUP.user_not_enrolled:
text = qty > 1
- ? gettext(qty + ' learners are not enrolled in this course and have not added to the'
+ ? gettext(`${qty} learners are not enrolled in this course and have not added to the`
+ ' exception list')
- : gettext(qty + ' learner is not enrolled in this course and has not been added to the'
+ : gettext(`${qty} learner is not enrolled in this course and has not been added to the`
+ ' exception list');
break;
case MESSAGE_GROUP.user_on_certificate_invalidation_list:
text = qty > 1
- ? gettext(qty + ' learners have an active certificate invalidation in this course and'
+ ? gettext(`${qty} learners have an active certificate invalidation in this course and`
+ ' have not been added to the exception list')
- : gettext(qty + ' learner has an active certificate invalidation in this course and has'
+ : gettext(`${qty} learner has an active certificate invalidation in this course and has`
+ ' not been added to the exception list');
break;
default:
text = qty > 1
- ? gettext(qty + ' learners encountered unknown errors')
- : gettext(qty + ' learner encountered an unknown error');
+ ? gettext(`${qty} learners encountered unknown errors`)
+ : gettext(`${qty} learner encountered an unknown error`);
break;
}
@@ -231,7 +231,7 @@
toggleMessageDetails: function(event) {
if (event && event.preventDefault) { event.preventDefault(); }
var group = event.target.id;
- $('div.message > .' + group).slideToggle('fast', function() {
+ $(`div.message > .${group}`).slideToggle('fast', function() {
if ($(this).is(':visible')) {
event.target.text = ' -- ';
} else {
diff --git a/lms/static/js/certificates/views/certificate_invalidation_view.js b/lms/static/js/certificates/views/certificate_invalidation_view.js
index cb23173a08..d47f31bc47 100644
--- a/lms/static/js/certificates/views/certificate_invalidation_view.js
+++ b/lms/static/js/certificates/views/certificate_invalidation_view.js
@@ -26,7 +26,7 @@
},
loadTemplate: function(name) {
- var templateSelector = '#' + name + '-tpl',
+ var templateSelector = `#${name}-tpl`,
templateText = $(templateSelector).text();
return _.template(templateText);
},
@@ -114,8 +114,8 @@
},
escapeAndShowMessage: function(message) {
- $(this.messages + '>p').remove();
- this.$(this.messages).removeClass('hidden').append('' + _.escape(message) + '
');
+ $(`${this.messages}>p`).remove();
+ this.$(this.messages).removeClass('hidden').append(`${_.escape(message)}
`);
}
});
diff --git a/lms/static/js/commerce/credit.js b/lms/static/js/commerce/credit.js
index aaedd25014..0b83ebb7b0 100644
--- a/lms/static/js/commerce/credit.js
+++ b/lms/static/js/commerce/credit.js
@@ -11,7 +11,7 @@ var edx = edx || {};
edx.commerce.credit.createCreditRequest = function(providerId, courseKey, username) {
return $.ajax({
- url: '/api/credit/v1/providers/' + providerId + '/request/',
+ url: `/api/credit/v1/providers/${providerId}/request/`,
type: 'POST',
headers: {
'X-CSRFToken': $.cookie('csrftoken')
diff --git a/lms/static/js/components/card/views/card.js b/lms/static/js/components/card/views/card.js
index f5815e90b2..2bf8af402b 100644
--- a/lms/static/js/components/card/views/card.js
+++ b/lms/static/js/components/card/views/card.js
@@ -65,9 +65,9 @@
},
className: function() {
- var result = 'card '
- + this.switchOnConfiguration('square-card', 'list-card') + ' '
- + this.callIfFunction(this.cardClass);
+ var result = `card ${
+ this.switchOnConfiguration('square-card', 'list-card')} ${
+ this.callIfFunction(this.cardClass)}`;
if (this.callIfFunction(this.pennant)) {
result += ' has-pennant';
}
@@ -78,7 +78,7 @@
var maxLength = 72,
description = this.callIfFunction(this.description);
if (description.length > maxLength) {
- description = description.substring(0, maxLength).trim() + '...';
+ description = `${description.substring(0, maxLength).trim()}...`;
}
HtmlUtils.setHtml(
this.$el,
diff --git a/lms/static/js/course_info.js b/lms/static/js/course_info.js
index f1c7ffeb2c..c1df47f150 100644
--- a/lms/static/js/course_info.js
+++ b/lms/static/js/course_info.js
@@ -3,10 +3,10 @@ $(document).ready(function() {
$('ul.tabs li').removeClass('enabled');
$(this).addClass('enabled');
- var data_class = '.' + $(this).attr('data-class');
+ var data_class = `.${$(this).attr('data-class')}`;
$('.tab').slideUp();
- $(data_class + ':hidden').slideDown();
+ $(`${data_class}:hidden`).slideDown();
});
var isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/);
if (isSafari) {
diff --git a/lms/static/js/course_sharing/course_sharing_events.js b/lms/static/js/course_sharing/course_sharing_events.js
index a38ae16e07..718f0eb353 100644
--- a/lms/static/js/course_sharing/course_sharing_events.js
+++ b/lms/static/js/course_sharing/course_sharing_events.js
@@ -6,7 +6,7 @@
define(['jquery', 'logger'], function($, Logger) {
return function(courseId) {
- $(".action-facebook[data-course-id='" + courseId + "']").on('click', function() {
+ $(`.action-facebook[data-course-id='${courseId}']`).on('click', function() {
// Emit an event telling that the Facebook share link was clicked.
Logger.log('edx.course.share_clicked', {
course_id: courseId,
@@ -15,7 +15,7 @@
});
});
- $(".action-twitter[data-course-id='" + courseId + "']").on('click', function() {
+ $(`.action-twitter[data-course-id='${courseId}']`).on('click', function() {
// Emit an event telling that the Twitter share link was clicked.
Logger.log('edx.course.share_clicked', {
course_id: courseId,
diff --git a/lms/static/js/course_survey.js b/lms/static/js/course_survey.js
index aca7048d83..4421960863 100644
--- a/lms/static/js/course_survey.js
+++ b/lms/static/js/course_survey.js
@@ -4,7 +4,7 @@ $(function() {
// form field label styling on focus
$('form :input').focus(function() {
- $("label[for='" + this.id + "']").parent().addClass('is-focused');
+ $(`label[for='${this.id}']`).parent().addClass('is-focused');
}).blur(function() {
$('label').parent().removeClass('is-focused');
});
@@ -49,9 +49,9 @@ $(function() {
});
if (cancel_submit) {
- $('.status.message.submission-error').
- removeClass('is-hidden').
- focus();
+ $('.status.message.submission-error')
+ .removeClass('is-hidden')
+ .focus();
$('html, body').animate({scrollTop: 0}, 'fast');
return false;
}
@@ -72,10 +72,10 @@ $(function() {
toggleSubmitButton(true);
json = $.parseJSON(jqXHR.responseText);
$('.status.message.submission-error').addClass('is-shown').focus();
- $('.status.message.submission-error .message-copy').
- text(gettext('There has been an error processing your survey.')).
- stop().
- css('display', 'block');
+ $('.status.message.submission-error .message-copy')
+ .text(gettext('There has been an error processing your survey.'))
+ .stop()
+ .css('display', 'block');
});
});
@@ -83,14 +83,14 @@ function toggleSubmitButton(enable) {
var $submitButton = $('form .form-actions #submit');
if (enable) {
- $submitButton.
- removeClass('is-disabled').
- attr('aria-disabled', false).
- removeProp('disabled');
+ $submitButton
+ .removeClass('is-disabled')
+ .attr('aria-disabled', false)
+ .removeProp('disabled');
} else {
- $submitButton.
- addClass('is-disabled').
- attr('aria-disabled', true).
- prop('disabled', true);
+ $submitButton
+ .addClass('is-disabled')
+ .attr('aria-disabled', true)
+ .prop('disabled', true);
}
}
diff --git a/lms/static/js/dashboard/dropdown.js b/lms/static/js/dashboard/dropdown.js
index 9c2e0e71fc..3353f31667 100644
--- a/lms/static/js/dashboard/dropdown.js
+++ b/lms/static/js/dashboard/dropdown.js
@@ -10,8 +10,8 @@ var edx = edx || {};
edx.dashboard.dropdown.toggleCourseActionsDropdownMenu = function(event) {
var $target = $(event.currentTarget),
dashboardIndex = $target.data().dashboardIndex,
- $dropdown = $($target.data('dropdownSelector') || '#actions-dropdown-' + dashboardIndex),
- $dropdownButton = $($target.data('dropdownButtonSelector') || '#actions-dropdown-link-' + dashboardIndex),
+ $dropdown = $($target.data('dropdownSelector') || `#actions-dropdown-${dashboardIndex}`),
+ $dropdownButton = $($target.data('dropdownButtonSelector') || `#actions-dropdown-link-${dashboardIndex}`),
ariaExpandedState = ($dropdownButton.attr('aria-expanded') === 'true'),
menuItems = $dropdown.find('a');
diff --git a/lms/static/js/dashboard/legacy.js b/lms/static/js/dashboard/legacy.js
index bd36849b25..4cd117a22c 100644
--- a/lms/static/js/dashboard/legacy.js
+++ b/lms/static/js/dashboard/legacy.js
@@ -272,13 +272,13 @@ var edx = edx || {};
display: 'block',
'z-index': 0
});
- $('#activate-account-modal').focus()
+ $('#activate-account-modal').focus();
}
$('.action-email-settings').each(function(index) {
- $(this).attr('id', 'email-settings-' + index);
+ $(this).attr('id', `email-settings-${index}`);
// a bit of a hack, but gets the unique selector for the modal trigger
- var trigger = '#' + $(this).attr('id');
+ var trigger = `#${$(this).attr('id')}`;
accessibleModal(
trigger,
'#email-settings-modal .close-modal',
@@ -288,9 +288,9 @@ var edx = edx || {};
});
$('.action-unenroll').each(function(index) {
- $(this).attr('id', 'unenroll-' + index);
+ $(this).attr('id', `unenroll-${index}`);
// a bit of a hack, but gets the unique selector for the modal trigger
- var trigger = '#' + $(this).attr('id');
+ var trigger = `#${$(this).attr('id')}`;
accessibleModal(
trigger,
'#unenroll-modal .close-modal',
diff --git a/lms/static/js/demographics_collection/DemographicsCollectionBanner.jsx b/lms/static/js/demographics_collection/DemographicsCollectionBanner.jsx
index 71a221d081..5aeddd5505 100644
--- a/lms/static/js/demographics_collection/DemographicsCollectionBanner.jsx
+++ b/lms/static/js/demographics_collection/DemographicsCollectionBanner.jsx
@@ -10,7 +10,7 @@ export class DemographicsCollectionBanner extends React.Component {
this.state = {
modalOpen: false,
hideBanner: false
- }
+ };
this.dismissBanner = this.dismissBanner.bind(this);
}
@@ -88,7 +88,7 @@ export class DemographicsCollectionBanner extends React.Component {
}
- )
+ );
} else {
return null;
}
diff --git a/lms/static/js/demographics_collection/DemographicsCollectionModal.jsx b/lms/static/js/demographics_collection/DemographicsCollectionModal.jsx
index 065cdc7583..1abc81f1f5 100644
--- a/lms/static/js/demographics_collection/DemographicsCollectionModal.jsx
+++ b/lms/static/js/demographics_collection/DemographicsCollectionModal.jsx
@@ -1,14 +1,14 @@
/* global gettext */
import React from 'react';
import get from 'lodash/get';
-import Wizard from './Wizard';
import Cookies from 'js-cookie';
-import {SelectWithInput} from './SelectWithInput'
+import StringUtils from 'edx-ui-toolkit/js/utils/string-utils';
+import FocusLock from 'react-focus-lock';
+import Wizard from './Wizard';
+import {SelectWithInput} from './SelectWithInput';
import {MultiselectDropdown} from './MultiselectDropdown';
import AxiosJwtTokenService from '../jwt_auth/AxiosJwtTokenService';
-import StringUtils from 'edx-ui-toolkit/js/utils/string-utils';
import AxiosCsrfTokenService from '../jwt_auth/AxiosCsrfTokenService';
-import FocusLock from 'react-focus-lock';
const FIELD_NAMES = {
CURRENT_WORK: 'current_work_sector',
@@ -66,7 +66,7 @@ class DemographicsCollectionModal extends React.Component {
accessToken,
refreshUrl,
);
- this.csrfTokenService = new AxiosCsrfTokenService(this.props.csrfTokenPath)
+ this.csrfTokenService = new AxiosCsrfTokenService(this.props.csrfTokenPath);
}
async componentDidMount() {
@@ -108,7 +108,7 @@ class DemographicsCollectionModal extends React.Component {
};
try {
await this.jwtTokenService.getJwtToken();
- await fetch(url, options)
+ await fetch(url, options);
} catch (error) {
this.setState({loading: false, fieldError: true, errorMessage: error});
}
@@ -129,13 +129,13 @@ class DemographicsCollectionModal extends React.Component {
this.setState(({selected}) => {
// decline was previously selected
if (selected[FIELD_NAMES.ETHNICITY].find(i => i === 'declined')) {
- return {selected: {...selected, [FIELD_NAMES.ETHNICITY]: values.filter(value => value !== 'declined')}}
+ return {selected: {...selected, [FIELD_NAMES.ETHNICITY]: values.filter(value => value !== 'declined')}};
// decline was just selected
} else if (decline) {
- return {selected: {...selected, [FIELD_NAMES.ETHNICITY]: [decline]}}
+ return {selected: {...selected, [FIELD_NAMES.ETHNICITY]: [decline]}};
// anything else was selected
} else {
- return {selected: {...selected, [FIELD_NAMES.ETHNICITY]: values}}
+ return {selected: {...selected, [FIELD_NAMES.ETHNICITY]: values}};
}
});
}
@@ -174,7 +174,7 @@ class DemographicsCollectionModal extends React.Component {
// We gather the possible answers to any demographics questions from the OPTIONS of the api
async getDemographicsQuestionOptions() {
try {
- const optionsResponse = await fetch(`${this.props.demographicsBaseUrl}/demographics/api/v1/demographics/`, {method: 'OPTIONS'})
+ const optionsResponse = await fetch(`${this.props.demographicsBaseUrl}/demographics/api/v1/demographics/`, {method: 'OPTIONS'});
const demographicsOptions = await optionsResponse.json();
return demographicsOptions;
} catch (error) {
@@ -240,7 +240,7 @@ class DemographicsCollectionModal extends React.Component {
render() {
if (this.state.loading) {
- return