Commit 57945628 by Awais Committed by Awais Qureshi

BreadCrumbs for course-detail page.

Ecom-6074
parent 8d6c034a
...@@ -811,6 +811,7 @@ class CourseRunDetailTests(TestCase): ...@@ -811,6 +811,7 @@ class CourseRunDetailTests(TestCase):
page_url = reverse('publisher:publisher_course_run_detail', args=[course_run.id]) page_url = reverse('publisher:publisher_course_run_detail', args=[course_run.id])
response = self.client.get(page_url) response = self.client.get(page_url)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self._assert_breadcrumbs(response, course_run)
def test_page_with_invalid_id(self): def test_page_with_invalid_id(self):
""" Verify that invalid course run id return 404. """ """ Verify that invalid course run id return 404. """
...@@ -839,6 +840,7 @@ class CourseRunDetailTests(TestCase): ...@@ -839,6 +840,7 @@ class CourseRunDetailTests(TestCase):
self._assert_cat(response) self._assert_cat(response)
self._assert_drupal(response) self._assert_drupal(response)
self._assert_subjects(response) self._assert_subjects(response)
self._assert_breadcrumbs(response, self.course_run)
def _assert_credits_seats(self, response, seat): def _assert_credits_seats(self, response, seat):
""" Helper method to test to all credit seats. """ """ Helper method to test to all credit seats. """
...@@ -954,6 +956,7 @@ class CourseRunDetailTests(TestCase): ...@@ -954,6 +956,7 @@ class CourseRunDetailTests(TestCase):
self._assert_subjects(response) self._assert_subjects(response)
self.assertContains(response, 'Total Comments 1') self.assertContains(response, 'Total Comments 1')
self.assertContains(response, comment.comment) self.assertContains(response, comment.comment)
self._assert_breadcrumbs(response, self.course_run)
def test_get_course_return_none(self): def test_get_course_return_none(self):
""" Verify that `PublisherPermissionMixin.get_course` return none """ Verify that `PublisherPermissionMixin.get_course` return none
...@@ -1043,6 +1046,20 @@ class CourseRunDetailTests(TestCase): ...@@ -1043,6 +1046,20 @@ class CourseRunDetailTests(TestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['can_edit'], can_edit) self.assertEqual(response.context['can_edit'], can_edit)
def _assert_breadcrumbs(self, response, course_run):
""" Assert breadcrumbs are present in the response. """
self.assertContains(response, '<li class="breadcrumb-item ">')
self.assertContains(response, '<a href="/publisher/courses/">Courses</a>')
page_url = reverse('publisher:publisher_course_detail', kwargs={'pk': course_run.course.id})
self.assertContains(response, '<a href="{url}">{slug}</a>'.format(url=page_url, slug=course_run.course.title))
self.assertContains(response, '<li class="breadcrumb-item active">')
self.assertContains(
response, '{type}: {start}'.format(
type=course_run.get_pacing_type_display(),
start=course_run.start.strftime("%B %d, %Y")
)
)
def _create_user_and_login(self, permission): def _create_user_and_login(self, permission):
""" Create user and login, also assign view permission for course """ Create user and login, also assign view permission for course
and return the user. and return the user.
......
...@@ -145,6 +145,21 @@ class CourseRunDetailView(mixins.LoginRequiredMixin, mixins.PublisherPermissionM ...@@ -145,6 +145,21 @@ class CourseRunDetailView(mixins.LoginRequiredMixin, mixins.PublisherPermissionM
context['role_widgets'] = self.get_role_widgets_data(course_roles) context['role_widgets'] = self.get_role_widgets_data(course_roles)
context['user_list'] = get_internal_users() context['user_list'] = get_internal_users()
context['breadcrumbs'] = [
{
'url': reverse('publisher:publisher_courses'), 'slug': 'Courses'
},
{
'url': reverse('publisher:publisher_course_detail', kwargs={'pk': course_run.course.id}),
'slug': course_run.course.title
},
{
'url': None,
'slug': '{type}: {start}'.format(
type=course_run.get_pacing_type_display(), start=course_run.start.strftime("%B %d, %Y")
)
}
]
return context return context
...@@ -270,6 +285,16 @@ class CourseDetailView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMixi ...@@ -270,6 +285,16 @@ class CourseDetailView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMixi
self.request.user, self.object, OrganizationExtension.EDIT_COURSE self.request.user, self.object, OrganizationExtension.EDIT_COURSE
) )
context['breadcrumbs'] = [
{
'url': reverse('publisher:publisher_courses'), 'slug': 'Courses'
},
{
'url': None,
'slug': self.object.title
}
]
return context return context
......
...@@ -541,7 +541,7 @@ select { ...@@ -541,7 +541,7 @@ select {
.breadcrumb { .breadcrumb {
@include padding-left(0); @include padding-left(0);
@include padding(8px, 15px, 8px, 15px); @include padding(8px, 15px, 8px, 15px);
@include margin(0, 0, 1.25rem, 0); @include margin(0, 0, 0, 0);
list-style: none; list-style: none;
background: white; background: white;
border-radius: 3px; border-radius: 3px;
...@@ -561,12 +561,9 @@ select { ...@@ -561,12 +561,9 @@ select {
+ li:before { + li:before {
@include padding(0px, 5px, 0px, 5px); @include padding(0px, 5px, 0px, 5px);
content: " / "; content: "\f054";
color: #ccc; color: #666;
} font-family: fontawesome;
&.active {
color: #777777;
} }
} }
} }
......
{% if breadcrumbs %}
<ol class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li class="breadcrumb-item {% if forloop.last %}active{% endif %}">
{% if forloop.last %}
{{ breadcrumb.slug }}
{% else %}
<a href="{{ breadcrumb.url }}">{{ breadcrumb.slug }}</a>
{% endif %}
</li>
{% endfor %}
</ol>
{% endif %}
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
</main> </main>
<aside class="layout-col layout-col-b border-left layout-col-container"> <aside class="layout-col layout-col-b border-left layout-col-container">
{% block breadcrumbs %}
{% include 'publisher/_breadcrumbs.html' %}
{% endblock %}
{% block page_content %}{% endblock %} {% block page_content %}{% endblock %}
</aside> </aside>
......
...@@ -5,11 +5,7 @@ ...@@ -5,11 +5,7 @@
{% endblock title %} {% endblock title %}
{% block page_content %} {% block page_content %}
{% include 'alert_messages.html' %} {% include 'alert_messages.html' %}
<div class="course-breadcrumb">
<a href="{% url 'publisher:publisher_courses' %}">{% trans "Courses" %}</a> > <span>{{ object.title }}</span>
</div>
<div class="approval-widget"> <div class="approval-widget">
{% if can_edit %} {% if can_edit %}
......
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