diff --git a/cms/static/js/views/course_info_helper.js b/cms/static/js/views/course_info_helper.js
index 1eaaa57eb5..2a77d7fc98 100644
--- a/cms/static/js/views/course_info_helper.js
+++ b/cms/static/js/views/course_info_helper.js
@@ -2,6 +2,7 @@ define(['codemirror', 'js/utils/handle_iframe_binding', 'utility'],
function(CodeMirror, IframeBinding) {
var editWithCodeMirror = function(model, contentName, baseAssetUrl, textArea) {
var content = rewriteStaticLinks(model.get(contentName), baseAssetUrl, '/static/');
+ content = rewriteCdnLinksToStatic(content); // eslint-disable-line no-undef
model.set(contentName, content);
var $codeMirror = CodeMirror.fromTextArea(textArea, {
mode: 'text/html',
diff --git a/common/static/js/spec/utility_spec.js b/common/static/js/spec/utility_spec.js
index 65abdd47f4..cd15ee9a32 100644
--- a/common/static/js/spec/utility_spec.js
+++ b/common/static/js/spec/utility_spec.js
@@ -16,3 +16,25 @@ describe('utility.rewriteStaticLinks', function() {
).toBe('
');
});
});
+describe('utility.rewriteCdnLinksToStatic', function() {
+ 'use strict';
+ it('does not replace "url" to "static url" if url is not following "cdn url" pattern', function() {
+ expect(
+ rewriteCdnLinksToStatic( // eslint-disable-line no-undef
+ '
')
+ ).toBe('
');
+ expect(
+ rewriteCdnLinksToStatic('
') // eslint-disable-line no-undef
+ ).toBe('
');
+ });
+ it('does a replace of "cdn url" to "static url" if url is part of absolute url', function() {
+ expect(
+ rewriteCdnLinksToStatic( // eslint-disable-line no-undef
+ '
')
+ ).toBe('
');
+ expect(
+ rewriteCdnLinksToStatic( // eslint-disable-line no-undef
+ '
')
+ ).toBe('
');
+ });
+});
diff --git a/common/static/js/src/utility.js b/common/static/js/src/utility.js
index ec8d8de838..cb85718493 100644
--- a/common/static/js/src/utility.js
+++ b/common/static/js/src/utility.js
@@ -35,5 +35,13 @@ window.rewriteStaticLinks = function(content, from, to) {
// 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');
+
return content.replace(regex, replacer);
};
+
+// Utility method for replacing absolute URLs
+window.rewriteCdnLinksToStatic = function(content) {
+ 'use strict';
+ var regex = new RegExp('((https?:)?[/][/](www.)?[-a-zA-Z0-9@:%._+~#=]{2,256}[a-z]{2,6}([-a-zA-Z0-9@:%_+~#?&//=]*)|[a-z-]{14})[/]', 'g');// eslint-disable-line max-len
+ return content.replace(regex, '/static/');
+};