@@ -104,6 +91,12 @@ from openedx.core.djangolib.markup import HTML, Text
${_("Bookmarks")}
+ % if SHOW_REVIEWS_TOOL_FLAG.is_enabled(course.id) and show_reviews_link:
+
+
+ ${_("Reviews")}
+
+ % endif
% if SelfPacedConfiguration.current().enable_course_home_improvements:
diff --git a/openedx/core/djangoapps/coursetalk/admin.py b/openedx/core/djangoapps/coursetalk/admin.py
deleted file mode 100644
index 1c1da65601..0000000000
--- a/openedx/core/djangoapps/coursetalk/admin.py
+++ /dev/null
@@ -1,7 +0,0 @@
-"""Manage coursetalk configuration. """
-from config_models.admin import ConfigurationModelAdmin
-from django.contrib import admin
-
-from openedx.core.djangoapps.coursetalk.models import CourseTalkWidgetConfiguration
-
-admin.site.register(CourseTalkWidgetConfiguration, ConfigurationModelAdmin)
diff --git a/openedx/core/djangoapps/coursetalk/helpers.py b/openedx/core/djangoapps/coursetalk/helpers.py
deleted file mode 100644
index 69824f6b1f..0000000000
--- a/openedx/core/djangoapps/coursetalk/helpers.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""
-CourseTalk widget helpers
-"""
-from __future__ import unicode_literals
-
-from openedx.core.djangoapps.coursetalk import models
-
-
-def get_coursetalk_course_key(course_key):
- """
- Return course key for coursetalk widget
-
- CourseTalk unique key for a course contains only organization and course code.
- :param course_key: SlashSeparatedCourseKey instance
- :type course_key: SlashSeparatedCourseKey
- :return: CourseTalk course key
- :rtype: str
- """
- return '{0.org}_{0.course}'.format(course_key)
-
-
-def inject_coursetalk_keys_into_context(context, course_key):
- """
- Set params to view context based on course_key and CourseTalkWidgetConfiguration
-
- :param context: view context
- :type context: dict
- :param course_key: SlashSeparatedCourseKey instance
- :type course_key: SlashSeparatedCourseKey
- """
- show_coursetalk_widget = models.CourseTalkWidgetConfiguration.is_enabled()
- if show_coursetalk_widget:
- context['show_coursetalk_widget'] = True
- context['platform_key'] = models.CourseTalkWidgetConfiguration.get_platform_key()
- context['course_review_key'] = get_coursetalk_course_key(course_key)
diff --git a/openedx/core/djangoapps/coursetalk/models.py b/openedx/core/djangoapps/coursetalk/models.py
deleted file mode 100644
index aee503d952..0000000000
--- a/openedx/core/djangoapps/coursetalk/models.py
+++ /dev/null
@@ -1,38 +0,0 @@
-"""
-Models for CourseTalk configurations
-"""
-from __future__ import unicode_literals
-
-from config_models.models import ConfigurationModel
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-
-
-class CourseTalkWidgetConfiguration(ConfigurationModel):
- """
- This model represents Enable Configuration for CourseTalk widget.
- If the setting enabled, widget will will be available on course
- info page and on course about page.
- """
- platform_key = models.fields.CharField(
- max_length=50,
- help_text=_(
- "The platform key associates CourseTalk widgets with your platform. "
- "Generally, it is the domain name for your platform. For example, "
- "if your platform is http://edx.org, the platform key is \"edx\"."
- )
- )
-
- @classmethod
- def get_platform_key(cls):
- """
- Return platform_key for current active configuration.
- If current configuration is not enabled - return empty string
-
- :return: Platform key
- :rtype: unicode
- """
- return cls.current().platform_key if cls.is_enabled() else ''
-
- def __unicode__(self):
- return 'CourseTalkWidgetConfiguration - {0}'.format(self.enabled)
diff --git a/openedx/core/djangoapps/coursetalk/tests/__init__.py b/openedx/core/djangoapps/coursetalk/tests/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/openedx/core/djangoapps/coursetalk/tests/test_helpers.py b/openedx/core/djangoapps/coursetalk/tests/test_helpers.py
deleted file mode 100644
index 379f4ea4f8..0000000000
--- a/openedx/core/djangoapps/coursetalk/tests/test_helpers.py
+++ /dev/null
@@ -1,56 +0,0 @@
-""" CourseTalk widget helpers tests """
-from __future__ import unicode_literals
-
-from django import test
-
-from opaque_keys.edx.locations import SlashSeparatedCourseKey
-from openedx.core.djangoapps.coursetalk import helpers
-from openedx.core.djangoapps.coursetalk import models
-from openedx.core.djangolib.testing.utils import skip_unless_lms
-
-
-@skip_unless_lms
-class CourseTalkKeyTests(test.TestCase):
- """
- CourseTalkKeyTests:
- tests for function get_coursetalk_course_key
- tests for function inject_coursetalk_keys_into_context
- """
-
- PLATFORM_KEY = 'some_platform'
-
- def setUp(self):
- super(CourseTalkKeyTests, self).setUp()
- self.course_key = SlashSeparatedCourseKey('org', 'course', 'run')
- self.context = {}
-
- def db_set_up(self, enabled):
- """
- Setup database for this test:
- Create CourseTalkWidgetConfiguration
- """
- config = models.CourseTalkWidgetConfiguration.current()
- config.enabled = enabled
- config.platform_key = self.PLATFORM_KEY
- config.save()
-
- def test_simple_key(self):
- coursetalk_course_key = helpers.get_coursetalk_course_key(self.course_key)
- self.assertEqual(coursetalk_course_key, 'org_course')
-
- def test_inject_coursetalk_keys_when_widget_not_enabled(self):
- self.db_set_up(False)
- helpers.inject_coursetalk_keys_into_context(self.context, self.course_key)
- self.assertNotIn('show_coursetalk_widget', self.context)
- self.assertNotIn('platform_key', self.context)
- self.assertNotIn('course_review_key', self.context)
-
- def test_inject_coursetalk_keys_when_widget_enabled(self):
- self.db_set_up(True)
- helpers.inject_coursetalk_keys_into_context(self.context, self.course_key)
- self.assertIn('show_coursetalk_widget', self.context)
- self.assertIn('platform_key', self.context)
- self.assertIn('course_review_key', self.context)
- self.assertEqual(self.context.get('show_coursetalk_widget'), True)
- self.assertEqual(self.context.get('platform_key'), self.PLATFORM_KEY)
- self.assertEqual(self.context.get('course_review_key'), 'org_course')
diff --git a/openedx/features/course_experience/__init__.py b/openedx/features/course_experience/__init__.py
index 2fa75ecee2..af72e3d662 100644
--- a/openedx/features/course_experience/__init__.py
+++ b/openedx/features/course_experience/__init__.py
@@ -20,7 +20,10 @@ WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name='course_experience')
UNIFIED_COURSE_TAB_FLAG = CourseWaffleFlag(WAFFLE_FLAG_NAMESPACE, 'unified_course_tab')
# Waffle flag to enable the sock on the footer of the home and courseware pages
-DISPLAY_COURSE_SOCK = CourseWaffleFlag(WAFFLE_FLAG_NAMESPACE, 'display_course_sock')
+DISPLAY_COURSE_SOCK_FLAG = CourseWaffleFlag(WAFFLE_FLAG_NAMESPACE, 'display_course_sock')
+
+# Waffle flag to enable a review page link from the unified home page
+SHOW_REVIEWS_TOOL_FLAG = CourseWaffleFlag(WAFFLE_FLAG_NAMESPACE, 'show_reviews_tool')
def course_home_page_title(course): # pylint: disable=unused-argument
diff --git a/openedx/features/course_experience/templates/course_experience/course-home-fragment.html b/openedx/features/course_experience/templates/course_experience/course-home-fragment.html
index 5aa13184ae..9b0a513307 100644
--- a/openedx/features/course_experience/templates/course_experience/course-home-fragment.html
+++ b/openedx/features/course_experience/templates/course_experience/course-home-fragment.html
@@ -14,7 +14,7 @@ from django.core.urlresolvers import reverse
from django_comment_client.permissions import has_permission
from openedx.core.djangolib.js_utils import dump_js_escaped_json, js_escaped_string
from openedx.core.djangolib.markup import HTML
-from openedx.features.course_experience import UNIFIED_COURSE_TAB_FLAG
+from openedx.features.course_experience import UNIFIED_COURSE_TAB_FLAG, SHOW_REVIEWS_TOOL_FLAG
%>
<%block name="content">
@@ -75,6 +75,14 @@ from openedx.features.course_experience import UNIFIED_COURSE_TAB_FLAG
${_("Bookmarks")}
+ % if SHOW_REVIEWS_TOOL_FLAG.is_enabled(course.id) and show_reviews_link:
+