Commit b38627a5 by Nate Hardison

Use chat settings when deciding whether to render

Only render the chat widget if both the site has enabled it in the
`MITX_FEATURES` and if the course has enabled it. In addition, fail
gracefully with a log warning if the `JABBER_DOMAIN` is not set, and
do not try to render the widget. However, do go ahead and render the
rest of the courseware.
parent 45beeb36
...@@ -238,21 +238,27 @@ def chat_settings(course, user): ...@@ -238,21 +238,27 @@ def chat_settings(course, user):
Returns a dict containing the settings required to connect to a Returns a dict containing the settings required to connect to a
Jabber chat server and room. Jabber chat server and room.
""" """
domain = getattr(settings, "JABBER_DOMAIN", None)
if domain is None:
log.warning('You must set JABBER_DOMAIN in the settings to '
'enable the chat widget')
return None
return { return {
'domain': settings.JABBER_DOMAIN, 'domain': domain,
# Jabber doesn't like slashes, so replace with dashes # Jabber doesn't like slashes, so replace with dashes
'room': "{ID}_class".format(ID=course.id.replace('/', '-')), 'room': "{ID}_class".format(ID=course.id.replace('/', '-')),
'username': "{USER}@{DOMAIN}".format( 'username': "{USER}@{DOMAIN}".format(
USER=user.username, DOMAIN=settings.JABBER_DOMAIN USER=user.username, DOMAIN=domain
), ),
# TODO: clearly this needs to be something other than the username # TODO: clearly this needs to be something other than the username
# should also be something that's not necessarily tied to a # should also be something that's not necessarily tied to a
# particular course # particular course
'password': "{USER}@{DOMAIN}".format( 'password': "{USER}@{DOMAIN}".format(
USER=user.username, DOMAIN=settings.JABBER_DOMAIN USER=user.username, DOMAIN=domain
), ),
} }
...@@ -321,8 +327,17 @@ def index(request, course_id, chapter=None, section=None, ...@@ -321,8 +327,17 @@ def index(request, course_id, chapter=None, section=None,
'xqa_server': settings.MITX_FEATURES.get('USE_XQA_SERVER', 'http://xqa:server@content-qa.mitx.mit.edu/xqa') 'xqa_server': settings.MITX_FEATURES.get('USE_XQA_SERVER', 'http://xqa:server@content-qa.mitx.mit.edu/xqa')
} }
if course.show_chat: # Only show the chat if it's enabled by the course and in the
# settings.
show_chat = course.show_chat and settings.MITX_FEATURES['ENABLE_CHAT']
if show_chat:
context['chat'] = chat_settings(course, user) context['chat'] = chat_settings(course, user)
# If we couldn't load the chat settings, then don't show
# the widget in the courseware.
if context['chat'] is None:
show_chat = False
context['show_chat'] = show_chat
chapter_descriptor = course.get_child_by(lambda m: m.url_name == chapter) chapter_descriptor = course.get_child_by(lambda m: m.url_name == chapter)
if chapter_descriptor is not None: if chapter_descriptor is not None:
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
<%include file="../discussion/_js_head_dependencies.html" /> <%include file="../discussion/_js_head_dependencies.html" />
% if course.show_chat: % if show_chat:
<link rel="stylesheet" href="${static.url('css/vendor/ui-lightness/jquery-ui-1.8.22.custom.css')}" /> <link rel="stylesheet" href="${static.url('css/vendor/ui-lightness/jquery-ui-1.8.22.custom.css')}" />
## It'd be better to have this in a place like lms/css/vendor/candy, ## It'd be better to have this in a place like lms/css/vendor/candy,
## but the candy_res/ folder contains images and other junk, and it ## but the candy_res/ folder contains images and other junk, and it
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
</script> </script>
% endif % endif
% if course.show_chat: % if show_chat:
<script type="text/javascript" src="${static.url('js/vendor/candy_libs/libs.min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/candy_libs/libs.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/candy.min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/candy.min.js')}"></script>
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
</div> </div>
</section> </section>
% if course.show_chat: % if show_chat:
<div id="chat-wrapper"> <div id="chat-wrapper">
<div id="chat-toggle" class="closed"> <div id="chat-toggle" class="closed">
<span id="chat-open">Open Chat <em class="icon-chevron-up"></em></span> <span id="chat-open">Open Chat <em class="icon-chevron-up"></em></span>
......
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