Commit a4834094 by E. Kolpakov Committed by Jonathan Piacenti

Disabled starting discussion course apps (DiscussionApp and DiscussionProfileApp) on DOM ready:

* Added scripts to XModule templates to start the apps..
* Added explicit call in XBlock to start required app.

Added concept of local urls - required to substitute absolute links for user profiles for relative in Apros
parent 92b1ef7d
......@@ -8,9 +8,8 @@ from .utils import (
render_template,
render_mako_template,
render_mustache_templates,
get_js_urls, get_css_urls,
asset_to_static_url
)
asset_to_static_url,
add_resources_to_fragment)
log = logging.getLogger(__name__)
......@@ -76,10 +75,7 @@ class DiscussionXBlock(XBlock):
fragment.add_content(render_mako_template('discussion/_discussion_inline.html', context))
for url in get_js_urls():
fragment.add_javascript_url(url)
for url in get_css_urls():
fragment.add_css_url(url)
add_resources_to_fragment(fragment)
fragment.add_javascript(render_template('static/js/discussion_inline.js', {'course_id': self.course_id}))
fragment.add_content(render_mustache_templates())
......@@ -167,11 +163,7 @@ class DiscussionCourseXBlock(XBlock):
context = discussion_service.get_course_template_context()
context['enable_new_post_btn'] = True
for url in get_js_urls():
fragment.add_javascript_url(url)
for url in get_css_urls():
fragment.add_css_url(url)
add_resources_to_fragment(fragment)
fragment.add_content(render_mako_template('discussion/_discussion_course.html', context))
......
var $$course_id = "{{course_id}}";
function DiscussionCourseBlock(runtime, element) {
var el = $(element).find('section.discussion');
el.data('pushState', 'false');
var el = $(element).find('section.discussion'),
pushState = true;
var testUrl = runtime.handlerUrl(element, 'test');
if (testUrl.match(/^(http|https):\/\//)) {
var hostname = testUrl.match(/^(.*:\/\/[a-z\-.]+)\//)[1];
DiscussionUtil.setBaseUrl(hostname);
DiscussionUtil.localUrls.push('user_profile');
pushState = false
}
DiscussionApp.start(el, pushState);
}
......@@ -137,6 +137,15 @@ def get_css_urls():
return [asset_to_static_url(path) for path in CSS_URLS]
def add_resources_to_fragment(fragment):
# order is important : code in discussion_thread_list_view -> updateSidebar depends on the
# fact that html is properly styled as it does height calculations.
for url in CSS_URLS:
fragment.add_css_url(asset_to_static_url(url))
for url in JS_URLS + discussion_js:
fragment.add_javascript_url(asset_to_static_url(url))
def asset_to_static_url(asset_path):
"""
:param str asset_path: path to asset
......
if Backbone?
DiscussionApp =
@DiscussionApp =
start: (elem, pushState = true)->
# TODO: Perhaps eliminate usage of global variables when possible
DiscussionUtil.loadRolesFromContainer()
......@@ -18,7 +18,7 @@ if Backbone?
course_settings = new DiscussionCourseSettings(element.data("course-settings"))
new DiscussionRouter({discussion: discussion, course_settings: course_settings})
Backbone.history.start({pushState: pushState, root: "/courses/#{$$course_id}/discussion/forum/"})
DiscussionProfileApp =
@DiscussionProfileApp =
start: (elem) ->
# Roles are not included in user profile page, but they are not used for anything
DiscussionUtil.loadRoles({"Moderator": [], "Administrator": [], "Community TA": []})
......@@ -30,9 +30,3 @@ if Backbone?
page = element.data("page")
numPages = element.data("num-pages")
new DiscussionUserProfileView(el: element, collection: threads, page: page, numPages: numPages)
$ ->
$("section.discussion").each (index, elem) ->
pushState = $(elem).data('pushState') != 'false'
DiscussionApp.start(elem, pushState)
$("section.discussion-user-threads").each (index, elem) ->
DiscussionProfileApp.start(elem)
......@@ -13,9 +13,11 @@ $ ->
class @DiscussionUtil
@baseUrl = '';
@baseUrl = ''
@wmdEditors: {}
@localUrls: []
@getTemplate: (id) ->
$("script##{id}").html()
......@@ -58,7 +60,9 @@ class @DiscussionUtil
.click -> handler(this)
@urlFor: (name, param, param1, param2) ->
@baseUrl + {
prefix = if name not in @localUrls then @baseUrl else ""
prefix + {
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"
......
......@@ -19,6 +19,13 @@
<%block name="js_extra">
<%include file="_js_body_dependencies.html" />
<%static:js group='discussion'/>
<script language="javascript">
$(function () {
$("section.discussion").each(function (index, elem) {
DiscussionApp.start(elem, true);
});
});
</script>
</%block>
<%include file="_discussion_course_navigation.html" args="active_page='discussion'" />
......
......@@ -18,6 +18,13 @@ from django.template.defaultfilters import escapejs
<%block name="js_extra">
<%include file="_js_body_dependencies.html" />
<%static:js group='discussion'/>
<script language="javascript">
$(function () {
$("section.discussion-user-threads").each(function (index, elem) {
DiscussionProfileApp.start(elem);
});
});
</script>
</%block>
<%include file="../courseware/course_navigation.html" args="active_page='discussion'" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment