diff --git a/common/static/common/js/discussion/mathjax_include.js b/common/static/common/js/discussion/mathjax_include.js
deleted file mode 100644
index 9bf6a65a3f..0000000000
--- a/common/static/common/js/discussion/mathjax_include.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var vendorScript;
-if (typeof MathJax === 'undefined') {
- vendorScript = document.createElement('script');
- vendorScript.onload = function() {
- 'use strict';
- var MathJax = window.MathJax,
- setMathJaxDisplayDivSettings;
- MathJax.Hub.Config({
- tex2jax: {
- inlineMath: [
- ['\\(', '\\)'],
- ['[mathjaxinline]', '[/mathjaxinline]']
- ],
- displayMath: [
- ['\\[', '\\]'],
- ['[mathjax]', '[/mathjax]']
- ]
- }
- });
- MathJax.Hub.signal.Interest(function(message) {
- if (message[0] === 'End Math') {
- setMathJaxDisplayDivSettings();
- }
- });
- setMathJaxDisplayDivSettings = function() {
- $('.MathJax_Display').each(function() {
- this.setAttribute('tabindex', '0');
- this.setAttribute('aria-live', 'off');
- this.removeAttribute('role');
- this.removeAttribute('aria-readonly');
- });
- };
- };
- vendorScript.src = 'https://cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG';
- document.body.appendChild(vendorScript);
-}
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 6fd71e343a..14eebbc1cd 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
@@ -18,6 +18,12 @@
created_at: '2014-09-09T20:11:08Z'
};
this.imageTag = '
';
+ window.MathJax = {
+ Hub: {
+ Queue: function() {
+ }
+ }
+ };
});
makeView = function(thread) {
var view;
diff --git a/lms/djangoapps/teams/templates/teams/teams.html b/lms/djangoapps/teams/templates/teams/teams.html
index fa58f64b76..58a43a1b0b 100644
--- a/lms/djangoapps/teams/templates/teams/teams.html
+++ b/lms/djangoapps/teams/templates/teams/teams.html
@@ -15,7 +15,6 @@ from openedx.core.djangolib.js_utils import (
<%block name="headextra">
<%static:css group='style-course-vendor'/>
<%static:css group='style-course'/>
-<%static:css group='style-inline-discussion'/>
<%include file="../discussion/_js_head_dependencies.html" />
%block>
diff --git a/lms/envs/common.py b/lms/envs/common.py
index f7ded06690..8d6c33da6c 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -1285,7 +1285,6 @@ dashboard_js = (
sorted(rooted_glob(PROJECT_ROOT / 'static', 'js/dashboard/**/*.js'))
)
discussion_js = (
- rooted_glob(COMMON_ROOT / 'static', 'common/js/discussion/mathjax_include.js') +
rooted_glob(PROJECT_ROOT / 'static', 'coffee/src/customwmd.js') +
rooted_glob(PROJECT_ROOT / 'static', 'coffee/src/mathjax_accessible.js') +
rooted_glob(PROJECT_ROOT / 'static', 'coffee/src/mathjax_delay_renderer.js') +
@@ -1450,18 +1449,6 @@ PIPELINE_CSS = {
],
'output_filename': 'css/discussion/lms-discussion-main-rtl.css',
},
- 'style-inline-discussion': {
- 'source_filenames': [
- 'css/discussion/inline-discussion.css',
- ],
- 'output_filename': 'css/discussion/inline-discussion.css',
- },
- 'style-inline-discussion-rtl': {
- 'source_filenames': [
- 'css/discussion/inline-discussion-rtl.css',
- ],
- 'output_filename': 'css/discussion/inline-discussion-rtl.css',
- },
'style-xmodule-annotations': {
'source_filenames': [
'css/vendor/ova/annotator.css',
diff --git a/lms/static/sass/_build-base-v1-rtl.scss b/lms/static/sass/_build-base-v1-rtl.scss
deleted file mode 100644
index 7396056d54..0000000000
--- a/lms/static/sass/_build-base-v1-rtl.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-// libs and resets *do not edit*
-@import 'bourbon/bourbon'; // lib - bourbon
-@import 'vendor/bi-app/bi-app-rtl'; // set the layout for right to left languages
-@import 'base/variables-rtl';
-
-// base - utilities
-@import 'base/reset';
-@import 'base/variables';
-@import 'base/mixins';
diff --git a/lms/static/sass/_build-base-v1.scss b/lms/static/sass/_build-base-v1.scss
deleted file mode 100644
index 30979a5af9..0000000000
--- a/lms/static/sass/_build-base-v1.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-// libs and resets *do not edit*
-@import 'bourbon/bourbon'; // lib - bourbon
-@import 'vendor/bi-app/bi-app-ltr'; // set the layout for left to right languages
-
-// base - utilities
-@import 'base/reset';
-@import 'base/variables';
-@import 'base/mixins';
diff --git a/lms/static/sass/_build-course.scss b/lms/static/sass/_build-course.scss
index 58b8b2ccd7..94ec63ae4f 100644
--- a/lms/static/sass/_build-course.scss
+++ b/lms/static/sass/_build-course.scss
@@ -59,6 +59,10 @@
// course - ccx_coach
@import "course/ccx_coach/dashboard";
+// discussion
+@import "course/discussion/form-wmd-toolbar";
+@import "course/discussion/form";
+
// search
@import 'search/_search';
diff --git a/lms/static/sass/_build-lms-v1.scss b/lms/static/sass/_build-lms-v1.scss
index a4ccd25adc..25dc84bd7e 100644
--- a/lms/static/sass/_build-lms-v1.scss
+++ b/lms/static/sass/_build-lms-v1.scss
@@ -61,6 +61,22 @@
@import 'course/auto-cert';
@import 'views/api-access';
+// app - discussion
+@import "discussion/utilities/variables-v1";
+@import "discussion/mixins";
+@import 'discussion/discussion'; // Process old file after definitions but before everything else, partial is deprecated.
+@import 'discussion/discussion-v1'; // Non-Pattern Library styling
+@import "discussion/elements/actions";
+@import "discussion/elements/editor";
+@import "discussion/elements/labels";
+@import "discussion/elements/navigation";
+@import "discussion/views/home";
+@import "discussion/views/thread";
+@import "discussion/views/create-edit-post";
+@import "discussion/views/response";
+@import 'discussion/utilities/developer';
+@import 'discussion/utilities/shame';
+
// search
@import 'search/search';
diff --git a/lms/static/sass/discussion/_build-discussion.scss b/lms/static/sass/discussion/_build-discussion.scss
deleted file mode 100644
index abcc25c4f2..0000000000
--- a/lms/static/sass/discussion/_build-discussion.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-// ------------------------------
-// Discussions: Shared Build Compile
-
-// About: Sass compile for discussion elements that are shared between LTR and RTL UI. Configuration and vendor specific imports happen before this shared set of imports is compiled in the inline-discussion-*.scss files.
-
-// Set the relative path to the static root
-$static-path: '../..';
-
-// Styles for discussions
-@import "utilities/variables-v1";
-@import "mixins";
-@import 'discussion'; // Process old file after definitions but before everything else, partial is deprecated.
-@import 'discussion-v1'; // Non-Pattern Library styling
-@import "elements/actions";
-@import "elements/editor";
-@import "elements/labels";
-@import "elements/navigation";
-@import "views/home";
-@import "views/thread";
-@import "views/create-edit-post";
-@import "views/response";
-@import 'utilities/developer';
-@import 'utilities/shame';
-
-// Styles for WYSIWYG Markdown editor
-@import "../course/discussion/form-wmd-toolbar";
-@import "../course/discussion/form";
diff --git a/lms/static/sass/discussion/inline-discussion-rtl.scss b/lms/static/sass/discussion/inline-discussion-rtl.scss
deleted file mode 100644
index c8b887ab0b..0000000000
--- a/lms/static/sass/discussion/inline-discussion-rtl.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-// Discussions - CSS application architecture
-// Version 1 styling (pre-Pattern Library)
-// ====================
-
-@import '../build-base-v1-rtl';
-
-// base - elements
-@import '../elements/typography';
-
-// app - discussion
-@import 'build-discussion';
diff --git a/lms/static/sass/discussion/inline-discussion.scss b/lms/static/sass/discussion/inline-discussion.scss
deleted file mode 100644
index a8f048d9d7..0000000000
--- a/lms/static/sass/discussion/inline-discussion.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-// Discussions - CSS application architecture
-// Version 1 styling (pre-Pattern Library)
-// ====================
-
-@import '../build-base-v1';
-
-// base - elements
-@import '../elements/typography';
-
-// app - discussion
-@import 'build-discussion';
diff --git a/lms/static/sass/lms-main-v1-rtl.scss b/lms/static/sass/lms-main-v1-rtl.scss
index 36e5f63566..aa560e25a4 100644
--- a/lms/static/sass/lms-main-v1-rtl.scss
+++ b/lms/static/sass/lms-main-v1-rtl.scss
@@ -2,5 +2,17 @@
// Version 1 styling (pre-Pattern Library)
// ====================
-@import 'build-base-v1-rtl';
+// libs and resets *do not edit*
+@import 'bourbon/bourbon'; // lib - bourbon
+@import 'vendor/bi-app/bi-app-rtl'; // set the layout for right to left languages
+@import 'base/variables-rtl';
+
+// BASE *default edX offerings*
+// ====================
+
+// base - utilities
+@import 'base/reset';
+@import 'base/variables';
+@import 'base/mixins';
+
@import 'build-lms-v1'; // shared app style assets/rendering
diff --git a/lms/static/sass/lms-main-v1.scss b/lms/static/sass/lms-main-v1.scss
index 13ecbb358a..6f629fa414 100644
--- a/lms/static/sass/lms-main-v1.scss
+++ b/lms/static/sass/lms-main-v1.scss
@@ -2,5 +2,16 @@
// Version 1 styling (pre-Pattern Library)
// ====================
-@import 'build-base-v1';
+// libs and resets *do not edit*
+@import 'bourbon/bourbon'; // lib - bourbon
+@import 'vendor/bi-app/bi-app-ltr'; // set the layout for left to right languages
+
+// BASE *default edX offerings*
+// ====================
+
+// base - utilities
+@import 'base/reset';
+@import 'base/variables';
+@import 'base/mixins';
+
@import 'build-lms-v1'; // shared app style assets/rendering
diff --git a/lms/templates/courseware/courseware-chromeless.html b/lms/templates/courseware/courseware-chromeless.html
index 0f6510aac6..644ca0839b 100644
--- a/lms/templates/courseware/courseware-chromeless.html
+++ b/lms/templates/courseware/courseware-chromeless.html
@@ -40,10 +40,7 @@ ${static.get_page_title_breadcrumbs(course_name())}
<%static:css group='style-student-notes'/>
% endif
-
-
-
-
+<%include file="../discussion/_js_head_dependencies.html" />
${HTML(fragment.head_html())}
%block>
@@ -56,7 +53,7 @@ ${static.get_page_title_breadcrumbs(course_name())}
<%static:js group='courseware'/>
- <%include file="/mathjax_include.html" args="disable_fast_preview=disable_fast_preview"/>
+ <%include file="../discussion/_js_body_dependencies.html" />
% if staff_access:
<%include file="xqa_interface.html"/>
% endif
diff --git a/lms/templates/courseware/courseware.html b/lms/templates/courseware/courseware.html
index 426eb45bfb..615cc01eb6 100644
--- a/lms/templates/courseware/courseware.html
+++ b/lms/templates/courseware/courseware.html
@@ -61,10 +61,7 @@ ${static.get_page_title_breadcrumbs(course_name())}
<%static:css group='style-student-notes'/>
% endif
-
-
-
-
+<%include file="../discussion/_js_head_dependencies.html" />
${HTML(fragment.head_html())}
%block>
@@ -76,7 +73,7 @@ ${static.get_page_title_breadcrumbs(course_name())}
<%static:js group='courseware'/>
- <%include file="/mathjax_include.html" args="disable_fast_preview=disable_fast_preview"/>
+ <%include file="../discussion/_js_body_dependencies.html" />
% if settings.FEATURES.get('ENABLE_COURSEWARE_SEARCH'):
<%static:require_module module_name="js/search/course/course_search_factory" class_name="CourseSearchFactory">
diff --git a/lms/templates/discussion/_discussion_inline.html b/lms/templates/discussion/_discussion_inline.html
index b616d9e8fe..1dac1d0fb6 100644
--- a/lms/templates/discussion/_discussion_inline.html
+++ b/lms/templates/discussion/_discussion_inline.html
@@ -1,7 +1,5 @@
<%page expression_filter="h"/>
-
<%include file="_underscore_templates.html" />
-
<%!
from django.utils.translation import ugettext as _
from json import dumps as json_dumps
diff --git a/openedx/core/lib/tests/test_xblock_utils.py b/openedx/core/lib/tests/test_xblock_utils.py
index 25e34977af..4a6180f55a 100644
--- a/openedx/core/lib/tests/test_xblock_utils.py
+++ b/openedx/core/lib/tests/test_xblock_utils.py
@@ -22,11 +22,7 @@ from openedx.core.lib.xblock_utils import (
replace_jump_to_id_urls,
replace_course_urls,
replace_static_urls,
- sanitize_html_id,
-)
-from openedx.core.lib.xblock_builtin import (
- get_css_dependencies,
- get_js_dependencies,
+ sanitize_html_id
)
@@ -185,41 +181,3 @@ class TestXblockUtils(SharedModuleStoreTestCase):
clean_string = sanitize_html_id(dirty_string)
self.assertEqual(clean_string, 'I_have_un_allowed_characters')
-
- @ddt.data(
- (True, ["combined.css"]),
- (False, ["a.css", "b.css", "c.css"]),
- )
- @ddt.unpack
- def test_get_css_dependencies(self, pipeline_enabled, expected_css_dependencies):
- """
- Verify that `get_css_dependencies` returns correct list of files.
- """
- pipeline_css = {
- 'style-group': {
- 'source_filenames': ["a.css", "b.css", "c.css"],
- 'output_filename': "combined.css"
- }
- }
- with self.settings(PIPELINE_ENABLED=pipeline_enabled, PIPELINE_CSS=pipeline_css):
- css_dependencies = get_css_dependencies("style-group")
- self.assertEqual(css_dependencies, expected_css_dependencies)
-
- @ddt.data(
- (True, ["combined.js"]),
- (False, ["a.js", "b.js", "c.js"]),
- )
- @ddt.unpack
- def test_get_js_dependencies(self, pipeline_enabled, expected_js_dependencies):
- """
- Verify that `get_js_dependencies` returns correct list of files.
- """
- pipeline_js = {
- 'js-group': {
- 'source_filenames': ["a.js", "b.js", "c.js"],
- 'output_filename': "combined.js"
- }
- }
- with self.settings(PIPELINE_ENABLED=pipeline_enabled, PIPELINE_JS=pipeline_js):
- js_dependencies = get_js_dependencies("js-group")
- self.assertEqual(js_dependencies, expected_js_dependencies)
diff --git a/openedx/core/lib/xblock_builtin/__init__.py b/openedx/core/lib/xblock_builtin/__init__.py
index 539820d0dc..e69de29bb2 100644
--- a/openedx/core/lib/xblock_builtin/__init__.py
+++ b/openedx/core/lib/xblock_builtin/__init__.py
@@ -1,31 +0,0 @@
-"""
-Helper functions shared by built-in XBlocks.
-
-"""
-
-
-from django.conf import settings
-
-
-def get_css_dependencies(group):
- """
- Returns list of CSS dependencies belonging to `group` in settings.PIPELINE_JS.
-
- Respects `PIPELINE_ENABLED` setting.
- """
- if settings.PIPELINE_ENABLED:
- return [settings.PIPELINE_CSS[group]['output_filename']]
- else:
- return settings.PIPELINE_CSS[group]['source_filenames']
-
-
-def get_js_dependencies(group):
- """
- Returns list of JS dependencies belonging to `group` in settings.PIPELINE_JS.
-
- Respects `PIPELINE_ENABLED` setting.
- """
- if settings.PIPELINE_ENABLED:
- return [settings.PIPELINE_JS[group]['output_filename']]
- else:
- return settings.PIPELINE_JS[group]['source_filenames']
diff --git a/openedx/core/lib/xblock_builtin/xblock_discussion/xblock_discussion.py b/openedx/core/lib/xblock_builtin/xblock_discussion/xblock_discussion.py
index 6808781f53..ad8623803e 100644
--- a/openedx/core/lib/xblock_builtin/xblock_discussion/xblock_discussion.py
+++ b/openedx/core/lib/xblock_builtin/xblock_discussion/xblock_discussion.py
@@ -4,9 +4,6 @@ Discussion XBlock
"""
import logging
-from django.templatetags.static import static
-from django.utils.translation import get_language_bidi
-
from xblockutils.resources import ResourceLoader
from xblockutils.studio_editable import StudioEditableXBlockMixin
from xmodule.raw_module import RawDescriptor
@@ -16,9 +13,6 @@ from xblock.fields import Scope, String, UNIQUE_ID
from xblock.fragment import Fragment
from xmodule.xml_module import XmlParserMixin
-from openedx.core.lib.xblock_builtin import get_css_dependencies, get_js_dependencies
-
-
log = logging.getLogger(__name__)
loader = ResourceLoader(__name__) # pylint: disable=invalid-name
@@ -94,57 +88,6 @@ class DiscussionXBlock(XBlock, StudioEditableXBlockMixin, XmlParserMixin):
return None
return user_service._django_user # pylint: disable=protected-access
- @staticmethod
- def vendor_js_dependencies():
- """
- Returns list of vendor JS files that this XBlock depends on.
-
- The helper function that it uses to obtain the list of vendor JS files
- works in conjunction with the Django pipeline to ensure that in development mode
- the files are loaded individually, but in production just the single bundle is loaded.
- """
- return get_js_dependencies('discussion_vendor')
-
- @staticmethod
- def js_dependencies():
- """
- Returns list of JS files that this XBlock depends on.
-
- The helper function that it uses to obtain the list of JS files
- works in conjunction with the Django pipeline to ensure that in development mode
- the files are loaded individually, but in production just the single bundle is loaded.
- """
- return get_js_dependencies('discussion')
-
- @staticmethod
- def css_dependencies():
- """
- Returns list of CSS files that this XBlock depends on.
-
- The helper function that it uses to obtain the list of CSS files
- works in conjunction with the Django pipeline to ensure that in development mode
- the files are loaded individually, but in production just the single bundle is loaded.
- """
- if get_language_bidi():
- return get_css_dependencies('style-inline-discussion-rtl')
- else:
- return get_css_dependencies('style-inline-discussion')
-
- def add_resource_urls(self, fragment):
- """
- Adds URLs for JS and CSS resources that this XBlock depends on to `fragment`.
- """
- # Head dependencies
- for vendor_js_file in self.vendor_js_dependencies():
- fragment.add_resource_url(static(vendor_js_file), "application/javascript", "head")
-
- for css_file in self.css_dependencies():
- fragment.add_css_url(static(css_file))
-
- # Body dependencies
- for js_file in self.js_dependencies():
- fragment.add_javascript_url(static(js_file))
-
def has_permission(self, permission):
"""
Encapsulates lms specific functionality, as `has_permission` is not
@@ -165,11 +108,12 @@ class DiscussionXBlock(XBlock, StudioEditableXBlockMixin, XmlParserMixin):
"""
fragment = Fragment()
- self.add_resource_urls(fragment)
+ course = self.runtime.modulestore.get_course(self.course_key)
context = {
'discussion_id': self.discussion_id,
'user': self.django_user,
+ 'course': course,
'course_id': self.course_key,
'can_create_thread': self.has_permission("create_thread"),
'can_create_comment': self.has_permission("create_comment"),