Commit f173a299 by Awais

Implementing List of Preview Ready course runs tab

ECOM-6221
parent 3de6070b
# -*- coding: utf-8 -*-
# Generated by Django 1.9.11 on 2016-11-17 12:10
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('publisher', '0014_create_admin_group'),
]
operations = [
migrations.AddField(
model_name='courserun',
name='preview_url',
field=models.URLField(blank=True, null=True),
),
migrations.AddField(
model_name='historicalcourserun',
name='preview_url',
field=models.URLField(blank=True, null=True),
),
]
......@@ -256,6 +256,7 @@ class CourseRun(TimeStampedModel, ChangedByMixin):
)
)
video_language = models.ForeignKey(LanguageTag, null=True, blank=True, related_name='video_language')
preview_url = models.URLField(null=True, blank=True)
history = HistoricalRecords()
......
......@@ -55,6 +55,7 @@ class CourseRunFactory(factory.DjangoModelFactory):
pacing_type = FuzzyChoice([name for name, __ in CourseRunPacing.choices])
length = FuzzyInteger(1, 10)
notes = "Testing notes"
preview_url = FuzzyText(prefix='https://example.com/')
class Meta:
model = CourseRun
......
......@@ -921,6 +921,7 @@ class DashboardTests(TestCase):
# group-b course
self._create_course_assign_permissions(State.DRAFT, self.group_b)
self.table_class = "data-table-{id} display nowrap"
def _create_course_assign_permissions(self, state, group):
""" DRY method to create course and assign the permissions"""
......@@ -943,56 +944,31 @@ class DashboardTests(TestCase):
target_status_code=302
)
def test_page_with_login(self):
""" Verify that user can access course runs list page when logged in. """
response = self.client.get(self.page_url)
self.assertEqual(response.status_code, 200)
def test_page_with_different_group_user(self):
""" Verify that user from one group can access only that group courses. """
self.client.logout()
self.client.login(username=self.user2.username, password=USER_PASSWORD)
self.assert_dashboard_response(1, 0, 1)
self.assert_dashboard_response()
def test_page_with_staff_user(self):
""" Verify that staff user can see all tabs with all course runs from all groups. """
self.client.logout()
staff_user = UserFactory(is_staff=True)
self.client.login(username=staff_user.username, password=USER_PASSWORD)
self.assert_dashboard_response(3, 1, 3)
self.assert_dashboard_response()
def test_different_course_runs_counts(self):
""" Verify that user can access published, un-published and
studio requests course runs. """
self.assert_dashboard_response(2, 1, 2)
self.assert_dashboard_response()
def test_studio_request_course_runs(self):
""" Verify that page loads the list course runs which need studio request. """
self.course_run_1.lms_course_id = 'test'
self.course_run_1.save()
self.assert_dashboard_response(2, 1, 1)
self.course_run_2.lms_course_id = 'test-2'
self.course_run_2.save()
self.assert_dashboard_response(2, 1, 0)
def assert_dashboard_response(self, unpublished_count, published_count, studio_requests):
response = self.client.get(self.page_url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.context['unpublished_course_runs']), unpublished_count)
self.assertEqual(len(response.context['published_course_runs']), published_count)
self.assertEqual(len(response.context['studio_request_courses']), studio_requests)
if studio_requests > 0:
self.assertContains(response, '<table class="data-table-studio display"')
else:
self.assertContains(response, 'There are no course-runs require studio instance.')
if published_count > 0:
self.assertContains(response, '<table class="data-table-published display"')
self.assertContains(response, 'The list below contains all course runs published in the past 30 days')
else:
self.assertContains(response, "Looks like you haven't published any course yet")
response = self.assert_dashboard_response()
self.assertContains(response, self.table_class.format(id='studio'))
self.assertEqual(len(response.context['studio_request_courses']), 1)
def test_without_studio_request_course_runs(self):
""" Verify that studio tab indicates a message if no course-run available. """
......@@ -1000,12 +976,52 @@ class DashboardTests(TestCase):
self.course_run_1.save()
self.course_run_2.lms_course_id = 'test-2'
self.course_run_2.save()
self.assert_dashboard_response(2, 1, 0)
response = self.assert_dashboard_response()
self.assertEqual(len(response.context['studio_request_courses']), 0)
self.assertContains(response, 'There are no course-runs require studio instance.')
def test_without_published_course_runs(self):
""" Verify that published tab indicates a message if no course-run available. """
self.course_run_3.change_state(target=State.DRAFT)
self.assert_dashboard_response(3, 0, 3)
response = self.assert_dashboard_response()
self.assertEqual(len(response.context['published_course_runs']), 0)
self.assertContains(response, "Looks like you haven't published any course yet")
def test_published_course_runs(self):
""" Verify that published tab loads course runs list. """
response = self.assert_dashboard_response()
self.assertEqual(len(response.context['published_course_runs']), 1)
self.assertContains(response, self.table_class.format(id='published'))
self.assertContains(response, 'The list below contains all course runs published in the past 30 days')
def test_with_preview_ready_course_runs(self):
""" Verify that preview ready tabs loads the course runs list. """
self.course_run_2.change_state(target=State.NEEDS_FINAL_APPROVAL)
self.course_run_2.save()
response = self.assert_dashboard_response()
self.assertEqual(len(response.context['preview_course_runs']), 1)
self.assertContains(response, self.table_class.format(id='preview'))
self.assertContains(response, 'The list below contains all course runs awaiting course team approval')
def test_without_preview_ready_course_runs(self):
""" Verify preview ready tabs shows a message if no course run available. """
response = self.assert_dashboard_response()
self.assertEqual(len(response.context['preview_course_runs']), 0)
self.assertContains(response, 'There are no course runs marked for preview.')
def test_without_preview_url(self):
""" Verify preview ready tabs shows a message if no course run available. """
self.course_run_2.preview_url = None
self.course_run_2.save()
response = self.assert_dashboard_response()
self.assertEqual(len(response.context['preview_course_runs']), 0)
self.assertContains(response, 'There are no course runs marked for preview.')
def assert_dashboard_response(self):
""" Dry method to assert the response."""
response = self.client.get(self.page_url)
self.assertEqual(response.status_code, 200)
return response
class ToggleEmailNotificationTests(TestCase):
......
......@@ -60,6 +60,12 @@ class Dashboard(mixins.LoginRequiredMixin, ListView):
context['published_course_runs'] = [CourseRunWrapper(course_run) for course_run in published_course_runs]
context['default_published_days'] = self.default_published_days
preview_course_runs = course_runs.filter(
state__name=State.NEEDS_FINAL_APPROVAL, preview_url__isnull=False
).select_related('state').order_by('-state__modified')
context['preview_course_runs'] = [CourseRunWrapper(course_run) for course_run in preview_course_runs]
return context
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-15 13:47+0500\n"
"POT-Creation-Date: 2016-11-17 23:20+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -763,7 +763,7 @@ msgstr ""
#: templates/publisher/course_run_detail/_drupal.html
#: templates/publisher/course_run_detail/_salesforce.html
#: templates/publisher/course_run_detail/_studio.html
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Start Date"
msgstr ""
......@@ -791,7 +791,7 @@ msgid ""
msgstr ""
#: templates/publisher/add_course_form.html
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Course Number"
msgstr ""
......@@ -1407,12 +1407,16 @@ msgid "No Seats Available."
msgstr ""
#: templates/publisher/course_run_detail/_studio.html
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_preview_ready.html
#: templates/publisher/dashboard/_published.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Course Name"
msgstr ""
#: templates/publisher/course_run_detail/_studio.html
#: templates/publisher/dashboard/_preview_ready.html
#: templates/publisher/dashboard/_published.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Organization"
msgstr ""
......@@ -1499,53 +1503,67 @@ msgstr ""
msgid "In Progress"
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_preview_ready.html
msgid "There are no course runs marked for preview."
msgstr ""
#: templates/publisher/dashboard/_preview_ready.html
msgid ""
"The list below contains all course runs awaiting course team approval. Once "
"approved, the marketing team will push the course run. you will be notified "
"via email when the course runs are live on the production site."
msgstr ""
#: templates/publisher/dashboard/_preview_ready.html
msgid "Approved"
msgstr ""
#: templates/publisher/dashboard/_preview_ready.html
msgid "Preview URL"
msgstr ""
#: templates/publisher/dashboard/_published.html
msgid "Looks like you haven't published any course yet"
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
#, python-format
msgid ""
"The list below contains all course runs published in the past "
"%(default_published_days)s days."
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/studio_requests.html
msgid "Institution"
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "Start"
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "End"
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "Published Date"
msgstr ""
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "Target Content"
msgstr ""
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid ""
"The list below are the courses that need a studio instance to start "
"development."
msgstr ""
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Studio Course Run Key"
msgstr ""
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Add"
msgstr ""
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "There are no course-runs require studio instance."
msgstr ""
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-15 13:47+0500\n"
"POT-Creation-Date: 2016-11-17 23:20+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-15 13:47+0500\n"
"POT-Creation-Date: 2016-11-17 23:20+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -905,7 +905,7 @@ msgstr "Prïörïtý çöntént Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#
#: templates/publisher/course_run_detail/_drupal.html
#: templates/publisher/course_run_detail/_salesforce.html
#: templates/publisher/course_run_detail/_studio.html
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Start Date"
msgstr "Stärt Däté Ⱡ'σяєм ιρѕυм ∂σłσ#"
......@@ -945,7 +945,7 @@ msgstr ""
"Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя#"
#: templates/publisher/add_course_form.html
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Course Number"
msgstr "Çöürsé Nümßér Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#"
......@@ -1651,12 +1651,16 @@ msgid "No Seats Available."
msgstr "Nö Séäts Àväïläßlé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#"
#: templates/publisher/course_run_detail/_studio.html
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_preview_ready.html
#: templates/publisher/dashboard/_published.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Course Name"
msgstr "Çöürsé Nämé Ⱡ'σяєм ιρѕυм ∂σłσя #"
#: templates/publisher/course_run_detail/_studio.html
#: templates/publisher/dashboard/_preview_ready.html
#: templates/publisher/dashboard/_published.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Organization"
msgstr "Örgänïzätïön Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#"
......@@ -1750,13 +1754,42 @@ msgstr "PÛBLÌSHÉD ÇÖÛRSÉ RÛNS Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт
msgid "In Progress"
msgstr "Ìn Prögréss Ⱡ'σяєм ιρѕυм ∂σłσя #"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_preview_ready.html
msgid "There are no course runs marked for preview."
msgstr ""
"Théré äré nö çöürsé rüns märkéd för prévïéw. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, "
"¢σηѕє¢тєтυя #"
#: templates/publisher/dashboard/_preview_ready.html
msgid ""
"The list below contains all course runs awaiting course team approval. Once "
"approved, the marketing team will push the course run. you will be notified "
"via email when the course runs are live on the production site."
msgstr ""
"Thé lïst ßélöw çöntäïns äll çöürsé rüns äwäïtïng çöürsé téäm äppröväl. Önçé "
"äpprövéd, thé märkétïng téäm wïll püsh thé çöürsé rün. ýöü wïll ßé nötïfïéd "
"vïä émäïl whén thé çöürsé rüns äré lïvé ön thé prödüçtïön sïté. Ⱡ'σяєм ιρѕυм"
" ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя "
"ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ "
"ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ "
"¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє "
"¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя.#"
#: templates/publisher/dashboard/_preview_ready.html
msgid "Approved"
msgstr "Àpprövéd Ⱡ'σяєм ιρѕυм ∂#"
#: templates/publisher/dashboard/_preview_ready.html
msgid "Preview URL"
msgstr "Prévïéw ÛRL Ⱡ'σяєм ιρѕυм ∂σłσя #"
#: templates/publisher/dashboard/_published.html
msgid "Looks like you haven't published any course yet"
msgstr ""
"Lööks lïké ýöü hävén't püßlïshéd äný çöürsé ýét Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,"
" ¢σηѕє¢тєтυя α#"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
#, python-format
msgid ""
"The list below contains all course runs published in the past "
......@@ -1765,28 +1798,23 @@ msgstr ""
"Thé lïst ßélöw çöntäïns äll çöürsé rüns püßlïshéd ïn thé päst "
"%(default_published_days)s däýs. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя#"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/studio_requests.html
msgid "Institution"
msgstr "Ìnstïtütïön Ⱡ'σяєм ιρѕυм ∂σłσя #"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "Start"
msgstr "Stärt Ⱡ'σяєм ιρѕ#"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "End"
msgstr "Énd Ⱡ'σяєм#"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "Published Date"
msgstr "Püßlïshéd Däté Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#"
#: templates/publisher/dashboard/published.html
#: templates/publisher/dashboard/_published.html
msgid "Target Content"
msgstr "Tärgét Çöntént Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#"
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid ""
"The list below are the courses that need a studio instance to start "
"development."
......@@ -1794,15 +1822,15 @@ msgstr ""
"Thé lïst ßélöw äré thé çöürsés thät nééd ä stüdïö ïnstänçé tö stärt "
"dévélöpmént. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тє#"
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Studio Course Run Key"
msgstr "Stüdïö Çöürsé Rün Kéý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "Add"
msgstr "Àdd Ⱡ'σяєм#"
#: templates/publisher/dashboard/studio_requests.html
#: templates/publisher/dashboard/_studio_requests.html
msgid "There are no course-runs require studio instance."
msgstr ""
"Théré äré nö çöürsé-rüns réqüïré stüdïö ïnstänçé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт "
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-15 13:47+0500\n"
"POT-Creation-Date: 2016-11-17 23:20+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......
$(document).ready(function() {
var data_table_studio = $('.data-table-studio').addClass('nowrap').DataTable({
var data_table_studio = $('.data-table-studio').DataTable({
"autoWidth": false
});
......@@ -46,7 +46,11 @@ $(document).ready(function() {
});
});
$('.data-table-published').addClass('nowrap').DataTable({
$('.data-table-published').DataTable({
"autoWidth": false
});
$('.data-table-preview').DataTable({
"autoWidth": false
});
});
......@@ -7,12 +7,12 @@
{% endblock title %}
{% block content %}
{% with studio_count=studio_request_courses|length published_count=published_course_runs|length %}
{% with studio_count=studio_request_courses|length published_count=published_course_runs|length preview_count=preview_course_runs|length %}
<div class="publisher-container">
<h2 class="hd-2 emphasized">{% trans "Course runs" %}</h2>
<ul role="tablist" class="tabs">
<li role="tab" id="tab-progress" class="tab" aria-selected="true" aria-expanded="false" aria-controls="progress" tabindex="0"><span>0</span>{% trans "IN PROGRESS" %}</li>
<li role="tab" id="tab-preview" class="tab" aria-selected="false" aria-expanded="false" aria-controls="preview" tabindex="-1"><span>0</span>{% trans "PREVIEW READY" %}</li>
<li role="tab" id="tab-preview" class="tab" aria-selected="false" aria-expanded="false" aria-controls="preview" tabindex="-1"><span>{{ preview_count }}</span>{% trans "PREVIEW READY" %}</li>
<li role="tab" id="tab-studio" class="tab" aria-selected="false" aria-expanded="true" aria-controls="studio" tabindex="-1" data-studio-count="{{ studio_count }}"><span>{{ studio_count }}</span>{% trans "STUDIO REQUEST" %}</li>
<li role="tab" id="tab-published" class="tab" aria-selected="false" aria-expanded="false" aria-controls="published" tabindex="-1"><span>{{ published_count }}</span>{% trans "PUBLISHED COURSE RUNS" %}</li>
</ul>
......@@ -23,15 +23,15 @@
</div>
<div role="tabpanel" id="preview" class="tab-panel" aria-labelledby="tab-preview" aria-hidden="true" tabindex="-1">
<h2>{% trans "PREVIEW READY" %}</h2>
{% include "publisher/dashboard/_preview_ready.html" %}
<p></p>
</div>
<div role="tabpanel" id="studio" class="tab-panel" aria-labelledby="tab-studio" aria-hidden="false" tabindex="0">
{% include "publisher/dashboard/studio_requests.html" %}
{% include "publisher/dashboard/_studio_requests.html" %}
</div>
<div role="tabpanel" id="published" class="tab-panel" aria-labelledby="tab-published" aria-hidden="false" tabindex="0">
{% include "publisher/dashboard/published.html" %}
{% include "publisher/dashboard/_published.html" %}
</div>
</div>
......
{% load i18n %}
{% if preview_count == 0 %}
<div class="depth depth-0">
<p class="empty-courserun-text">{% trans "There are no course runs marked for preview." %}</p>
</div>
{% else %}
<p>{% trans "The list below contains all course runs awaiting course team approval. Once approved, the marketing team will push the course run. you will be notified via email when the course runs are live on the production site." %}</p>
<div class="table-view">
<table class="data-table-preview display nowrap" cellspacing="0" width="100%">
<thead>
<tr>
<th role="button">
{% trans "Course Name" %}
</th>
<th role="button">
{% trans "Organization" %}
</th>
<th role="button">
{% trans "Approved" %}
</th>
<th role="button">
{% trans "Preview URL" %}
</th>
</tr>
</thead>
<tbody>
{% for course_run in preview_course_runs %}
<tr>
<td id="course-title-{{ course_run.title }}">
<a href="{% url 'publisher:publisher_course_run_detail' course_run.id %}">{{ course_run.title }}</a>
</td>
<td>{{ course_run.course.group_institution }}</td>
<td>
{{ course_run.state }}
</td>
<td>
<a target="_blank" href="{{ course_run.preview_url }}">{{ course_run.preview_url }}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
......@@ -7,14 +7,14 @@
The list below contains all course runs published in the past {{ default_published_days }} days.
{% endblocktrans %}
</p>
<table class="data-table-published display" cellspacing="0" width="100%">
<table class="data-table-published display nowrap" cellspacing="0" width="100%">
<thead>
<tr>
<th role="button">
{% trans "Course Name" %}
</th>
<th role="button">
{% trans "Institution" %}
{% trans "Organization" %}
</th>
<th role="button">
{% trans "Start" %}
......
......@@ -6,14 +6,14 @@
<p class="copy-meta"></p>
</div>
<div class="table-view">
<table class="data-table-studio display" cellspacing="0" width="100%">
<table class="data-table-studio display nowrap" cellspacing="0" width="100%">
<thead>
<tr>
<th role="button">
{% trans "Course Name" %}
</th>
<th role="button">
{% trans "Institution" %}
{% trans "Organization" %}
</th>
<th role="button">
{% trans "Start Date" %}
......
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