+
+
+
+
+
+
${_("Reports Available for Download")}
+
+ ${_("The reports listed below are available for download, identified by UTC date and time of generation.")}
+
+
+
+ ${_("The answer distribution report listed below is generated periodically by an automated background process. \
+ The report is cumulative, so answers submitted after the process starts are included in a subsequent report. \
+ The report is generated several times per day.")}
+
+
+ ${Text(_("{strong_start}Note{strong_end}: {ul_start}{li_start}To keep student data secure, you cannot save or \
+ email these links for direct access. Copies of links expire within 5 minutes.{li_end}{li_start}Report files \
+ are deleted 90 days after generation. If you will need access to old reports, download and store the files, \
+ in accordance with your institution's data security policies.{li_end}{ul_end}")).format(
+ strong_start=HTML(""),
+ strong_end=HTML(""),
+ ul_start=HTML("
"),
+ li_start=HTML("
"),
+ li_end=HTML(""),
+ )}
+
+
+
+
+
+${Text(_("We're sorry, this module is temporarily unavailable. Our staff is working to fix it as soon as possible."))}
-
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download.html b/lms/templates/instructor/instructor_dashboard_2/data_download.html
index c402ebb3fd..4170763439 100644
--- a/lms/templates/instructor/instructor_dashboard_2/data_download.html
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download.html
@@ -58,7 +58,7 @@ from openedx.core.djangolib.markup import HTML, Text
%endif
-
+
${static.renderReact(
component="ProblemBrowser",
id="react-problem-report",
@@ -67,7 +67,8 @@ from openedx.core.djangolib.markup import HTML, Text
"excludeBlockTypes": ['html', 'video', 'discussion'],
"problemResponsesEndpoint": section_data['get_problem_responses_url'],
"taskStatusEndpoint": "/instructor_task_status",
- "reportDownloadEndpoint": section_data['list_report_downloads_url']
+ "reportDownloadEndpoint": section_data['list_report_downloads_url'],
+ "ShowBtnUi": "true",
}
)}
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download_2.html b/lms/templates/instructor/instructor_dashboard_2/data_download_2.html
new file mode 100644
index 0000000000..fe3e12cece
--- /dev/null
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download_2.html
@@ -0,0 +1,93 @@
+<%page args="section_data" expression_filter="h"/>
+<%namespace name='static' file='/static_content.html'/>
+<%!
+from django.utils.translation import ugettext as _
+from openedx.core.djangolib.markup import HTML, Text
+%>
+
+
+
+
+ -
+
+
+ %if settings.FEATURES.get('ENABLE_GRADE_DOWNLOADS'):
+ -
+
+
+ -
+
+
+ %if settings.FEATURES.get('ALLOW_COURSE_STAFF_GRADE_DOWNLOADS') or section_data['access']['admin']:
+ -
+
+
+ %endif
+ %endif
+
+
+ <%include file="./data_download_2/reports.html" args="section_data=section_data, **context.kwargs" />
+
+ <%include file="./data_download_2/grading.html" args="section_data=section_data, **context.kwargs" />
+
+ %if settings.FEATURES.get('ENABLE_GRADE_DOWNLOADS'):
+ <%include file="./data_download_2/certificates.html" args="section_data=section_data, **context.kwargs" />
+ <%include file="./data_download_2/problem_report.html" args="section_data=section_data, **context.kwargs" />
+ %endif
+
+
+
+
+
+
+
+
+
+
+
+
${_("Reports Available for Download")}
+
+ ${_("The reports listed below are available for download, identified by UTC date and time of generation.")}
+
+
+ %if settings.FEATURES.get('ENABLE_ASYNC_ANSWER_DISTRIBUTION'):
+
+ ${_("The answer distribution report listed below is generated periodically by an automated background process. \
+ The report is cumulative, so answers submitted after the process starts are included in a subsequent report. \
+ The report is generated several times per day.")}
+
+ %endif
+
+ ## Translators: a table of URL links to report files appears after this sentence.
+
+ ${Text(_("{strong_start}Note{strong_end}: {ul_start}{li_start}To keep student data secure, you cannot save or \
+ email these links for direct access. Copies of links expire within 5 minutes.{li_end}{li_start}Report files \
+ are deleted 90 days after generation. If you will need access to old reports, download and store the files, \
+ in accordance with your institution's data security policies.{li_end}{ul_end}")).format(
+ strong_start=HTML(""),
+ strong_end=HTML(""),
+ ul_start=HTML("
"),
+ li_start=HTML("
"),
+ li_end=HTML(""),
+ )}
+
+
+
+
+
+
+%if settings.FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS'):
+
+
+
${_("Pending Tasks")}
+
+
${_("The status for any active tasks appears in a table below.")}
+
+
+
+
+
+%endif
+
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download_2/certificates.html b/lms/templates/instructor/instructor_dashboard_2/data_download_2/certificates.html
new file mode 100644
index 0000000000..ea36196553
--- /dev/null
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download_2/certificates.html
@@ -0,0 +1,33 @@
+<%page args="section_data" expression_filter="h"/>
+<%namespace name='static' file='/static_content.html'/>
+<%!
+from django.utils.translation import ugettext as _
+from openedx.core.djangolib.markup import HTML, Text
+%>
+
+
+
+
+
+
+
+
+
${_("Click to list certificates that are issued for this course:")}
+
+
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download_2/grading.html b/lms/templates/instructor/instructor_dashboard_2/data_download_2/grading.html
new file mode 100644
index 0000000000..5cd84df4a6
--- /dev/null
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download_2/grading.html
@@ -0,0 +1,28 @@
+<%page args="section_data" expression_filter="h"/>
+<%namespace name='static' file='/static_content.html'/>
+<%!
+from django.utils.translation import ugettext as _
+from openedx.core.djangolib.markup import HTML, Text
+%>
+
+%if settings.FEATURES.get('ALLOW_COURSE_STAFF_GRADE_DOWNLOADS') or section_data['access']['admin']:
+
+
+ Learner status
+
+
+
+
+
${_("Click to generate a CSV grade report for all currently enrolled students.")}
+
+
+%endif
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download_2/problem_report.html b/lms/templates/instructor/instructor_dashboard_2/data_download_2/problem_report.html
new file mode 100644
index 0000000000..a69bec8f1f
--- /dev/null
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download_2/problem_report.html
@@ -0,0 +1,48 @@
+<%page args="section_data" expression_filter="h"/>
+<%namespace name='static' file='/static_content.html'/>
+<%!
+from django.utils.translation import ugettext as _
+from openedx.core.djangolib.markup import HTML, Text
+%>
+
+
+
+
+ ${static.renderReact(
+ component="ProblemBrowser",
+ id="react-problem-report",
+ props={
+ "courseId": course.id,
+ "excludeBlockTypes": ['html', 'video', 'discussion'],
+ "problemResponsesEndpoint": section_data['get_problem_responses_url'],
+ "taskStatusEndpoint": "/instructor_task_status",
+ "reportDownloadEndpoint": section_data['list_report_downloads_url'],
+ "showBtnUi": "false"
+ }
+ )}
+
+
+
+
+
+
+
+ <% max_entries = settings.FEATURES.get('MAX_PROBLEM_RESPONSES_COUNT') %>
+ %if max_entries is not None:
+
+ ${_("NOTE")}:
+ ${_("The generated report is limited to {max_entries} responses. If you expect more than {max_entries} "
+ "responses, try generating the report on a chapter-by-chapter, or problem-by-problem basis, or contact "
+ "your site administrator to increase the limit.").format(max_entries=max_entries)}
+
+ %endif
+
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download_2/reports.html b/lms/templates/instructor/instructor_dashboard_2/data_download_2/reports.html
new file mode 100644
index 0000000000..71a3c2f45a
--- /dev/null
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download_2/reports.html
@@ -0,0 +1,109 @@
+<%page args="section_data" expression_filter="h"/>
+<%namespace name='static' file='/static_content.html'/>
+<%!
+from django.utils.translation import ugettext as _
+from openedx.core.djangolib.markup import HTML, Text
+%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
${_("Click to display the grading configuration for the \
+ course. The grading configuration is the breakdown of graded subsections of the course \
+ (such as exams and problem sets), and can be changed on the 'Grading' \
+ page (under 'Settings') in Studio.")}
+
${_("Click to download a CSV of \
+ anonymized student IDs:")}
+
+
${_("For large courses, generating some reports can take \
+ several hours. When report generation is complete, a \
+ link that includes the date and time of generation appears in the table below. These reports are \
+ generated in the background, meaning it is OK to navigate away from this page while your report is \
+ generating.")}
+
+
${_("Please be patient and do not click these buttons \
+ multiple times. Clicking these buttons multiple times will significantly slow the generation \
+ process.")}
+
+ % if not disable_buttons:
+
${_("For smaller courses, click to list \
+ profile information for enrolled students directly on this page:")}
+ %endif
+
${_("Click to generate a CSV file of \
+ all students enrolled in this course, along with profile information such as email address and \
+ username:")}
+
+
${_("Click to generate a CSV file \
+ that lists learners who can enroll in the course but have not yet done so.")}
+
+
${_("Click to generate a CSV file \
+ of all proctored exam results in this course.")}
+
+
${_("Click to generate a CSV file of \
+ survey results for this course.")}
+
${_("Click to generate a CSV \
+ ORA grade report for all currently enrolled students.")}
+
${_("Click to generate a CSV \
+ problem grade report for all currently enrolled students.")}
+
+
+