From 72c3c87c84d2dafb7c02e5a6116f17cb464dc116 Mon Sep 17 00:00:00 2001 From: jsa Date: Wed, 9 Apr 2014 14:15:47 -0400 Subject: [PATCH] in Studio, render compact placeholders for inline discussions. JIRA: FOR-429 --- cms/djangoapps/contentstore/views/preview.py | 4 ++ cms/static/sass/views/_unit.scss | 4 ++ .../lib/xmodule/xmodule/discussion_module.py | 6 ++- common/test/acceptance/tests/test_studio.py | 39 +++++++++++++++++++ .../discussion/_discussion_module_studio.html | 10 +++++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 lms/templates/discussion/_discussion_module_studio.html diff --git a/cms/djangoapps/contentstore/views/preview.py b/cms/djangoapps/contentstore/views/preview.py index 17c1548299..239accb4a6 100644 --- a/cms/djangoapps/contentstore/views/preview.py +++ b/cms/djangoapps/contentstore/views/preview.py @@ -82,6 +82,10 @@ class PreviewModuleSystem(ModuleSystem): # pylint: disable=abstract-method """ An XModule ModuleSystem for use in Studio previews """ + # xmodules can check for this attribute during rendering to determine if + # they are being rendered for preview (i.e. in Studio) + is_author_mode = True + def handler_url(self, block, handler_name, suffix='', query='', thirdparty=False): return reverse('preview_handler', kwargs={ 'usage_id': quote_slashes(unicode(block.scope_ids.usage_id).encode('utf-8')), diff --git a/cms/static/sass/views/_unit.scss b/cms/static/sass/views/_unit.scss index e2ff0a5b62..8d438abe23 100644 --- a/cms/static/sass/views/_unit.scss +++ b/cms/static/sass/views/_unit.scss @@ -1389,6 +1389,10 @@ body.unit .component { .xmodule_DiscussionModule, .xmodule_HtmlModule, .xblock { margin-top: ($baseline*1.5); } + .discussion-preview { + font-style: italic; + color: $mediumGrey; + } } body.unit .component.editing { diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index 86dd2fddee..982dec8183 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -50,7 +50,11 @@ class DiscussionModule(DiscussionFields, XModule): context = { 'discussion_id': self.discussion_id, } - return self.system.render_template('discussion/_discussion_module.html', context) + if getattr(self.system, 'is_author_mode', False): + template = 'discussion/_discussion_module_studio.html' + else: + template = 'discussion/_discussion_module.html' + return self.system.render_template(template, context) class DiscussionDescriptor(DiscussionFields, MetadataOnlyEditingDescriptor, RawDescriptor): diff --git a/common/test/acceptance/tests/test_studio.py b/common/test/acceptance/tests/test_studio.py index e5f876104f..158ff929c2 100644 --- a/common/test/acceptance/tests/test_studio.py +++ b/common/test/acceptance/tests/test_studio.py @@ -112,6 +112,45 @@ class CoursePagesTest(UniqueCourseTest): page.visit() +class DiscussionPreviewTest(UniqueCourseTest): + """ + Tests that Inline Discussions are rendered with a custom preview in Studio + """ + + def setUp(self): + super(DiscussionPreviewTest, self).setUp() + CourseFixture(**self.course_info).add_children( + XBlockFixtureDesc("chapter", "Test Section").add_children( + XBlockFixtureDesc("sequential", "Test Subsection").add_children( + XBlockFixtureDesc("vertical", "Test Unit").add_children( + XBlockFixtureDesc( + "discussion", + "Test Discussion", + ) + ) + ) + ) + ).install() + + AutoAuthPage(self.browser, staff=True).visit() + cop = CourseOutlinePage( + self.browser, + self.course_info['org'], + self.course_info['number'], + self.course_info['run'] + ) + cop.visit() + self.unit = cop.section('Test Section').subsection('Test Subsection').toggle_expand().unit('Test Unit') + self.unit.go_to() + + def test_is_preview(self): + """ + Ensure that the preview version of the discussion is rendered. + """ + self.assertTrue(self.unit.q(css=".discussion-preview").present) + self.assertFalse(self.unit.q(css=".discussion-show").present) + + class XBlockAcidBase(WebAppTest): """ Base class for tests that verify that XBlock integration is working correctly diff --git a/lms/templates/discussion/_discussion_module_studio.html b/lms/templates/discussion/_discussion_module_studio.html new file mode 100644 index 0000000000..b2b846a4a3 --- /dev/null +++ b/lms/templates/discussion/_discussion_module_studio.html @@ -0,0 +1,10 @@ +<%! from django.utils.translation import ugettext as _ %> + +
+

+ + + ${_("To view live discussions, click Preview or View Live in Unit Settings.")} + +

+