courseware.html 8 KB
Newer Older
1
<%page expression_filter="h"/>
2 3
<%inherit file="/main.html" />
<%namespace name='static' file='/static_content.html'/>
4
<%def name="online_help_token()"><% return "courseware" %></%def>
5 6
<%!
from django.utils.translation import ugettext as _
7
from django.conf import settings
8

9
from edxnotes.helpers import is_feature_enabled as is_edxnotes_enabled
10 11
from openedx.core.djangolib.markup import HTML
from openedx.core.djangolib.js_utils import js_escaped_string
12
%>
13
<%
14
  include_special_exams = settings.FEATURES.get('ENABLE_SPECIAL_EXAMS', False) and (course.enable_proctored_exams or course.enable_timed_exams)
15
%>
16 17 18 19
<%def name="course_name()">
 <% return _("{course_number} Courseware").format(course_number=course.display_number_with_default) %>
</%def>

20
<%block name="bodyclass">view-in-course view-courseware courseware ${course.css_class or ''}</%block>
21

22
<%block name="title"><title>
23
    % if section_title:
24
${static.get_page_title_breadcrumbs(section_title, course_name())}
25
    % else:
26
${static.get_page_title_breadcrumbs(course_name())}
27
    %endif
28
</title></%block>
29

30
<%block name="header_extras">
31

32 33
% for template_name in ["image-modal"]:
<script type="text/template" id="${template_name}-tpl">
34
    <%static:include path="common/templates/${template_name}.underscore" />
35 36
</script>
% endfor
37

38 39
% if settings.FEATURES.get('ENABLE_COURSEWARE_SEARCH'):
    % for template_name in ["course_search_item", "course_search_results", "search_loading", "search_error"]:
40 41 42 43 44 45
        <script type="text/template" id="${template_name}-tpl">
            <%static:include path="search/${template_name}.underscore" />
        </script>
    % endfor
% endif

46
% if include_special_exams:
47
  % for template_name in ["proctored-exam-status"]:
48
    <script type="text/template" id="${template_name}-tpl">
49
        <%static:include path="courseware/${template_name}.underscore" />
50
    </script>
51
  % endfor
52
% endif
53

54
</%block>
55

56
<%block name="headextra">
57 58
<%static:css group='style-course-vendor'/>
<%static:css group='style-course'/>
59 60 61 62
## Utility: Notes
% if is_edxnotes_enabled(course):
<%static:css group='style-student-notes'/>
% endif
63 64

<%include file="../discussion/_js_head_dependencies.html" />
65
  ${HTML(fragment.head_html())}
66 67
</%block>

68
<%block name="js_extra">
69
  <script type="text/javascript" src="${static.url('common/js/vendor/jquery.scrollTo.js')}"></script>
70 71 72 73 74
  <script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.js')}"></script>

  ## codemirror
  <script type="text/javascript" src="${static.url('js/vendor/codemirror-compressed.js')}"></script>

75
  <%static:js group='courseware'/>
76
  <%static:js group='discussion'/>
77
  % if settings.FEATURES.get('ENABLE_COURSEWARE_SEARCH'):
cahrens committed
78
    <%static:require_module module_name="js/search/course/course_search_factory" class_name="CourseSearchFactory">
79
        var courseId = $('.courseware-results').data('courseId');
cahrens committed
80 81
        CourseSearchFactory(courseId);
    </%static:require_module>
82
  % endif
83

84 85
  <%static:require_module module_name="js/courseware/courseware_factory" class_name="CoursewareFactory">
    CoursewareFactory();
86 87
  </%static:require_module>

Rocky Duan committed
88
  <%include file="../discussion/_js_body_dependencies.html" />
89 90 91
  % if staff_access:
  	<%include file="xqa_interface.html"/>
  % endif
92

93
  <script type="text/javascript">
94
    var $$course_id = "${course.id | n, js_escaped_string}";
95
  </script>
96

97
${HTML(fragment.foot_html())}
98

99
</%block>
pmitros committed
100

101
<div class="message-banner" aria-live="polite"></div>
102

103 104 105
% if default_tab:
  <%include file="/courseware/course_navigation.html" />
% else:
106
  <%include file="/courseware/course_navigation.html" args="active_page='courseware'" />
107
% endif
108

109
<div class="container">
110
  <div class="course-wrapper" role="presentation">
111

Piotr Mitros committed
112
% if disable_accordion is UNDEFINED or not disable_accordion:
113
    <div class="course-index">
114 115 116

      <div class="wrapper-course-modes">

117
          <div class="courseware-bookmarks-button" data-bookmarks-api-url="${bookmarks_api_url}">
118 119
              <button type="button" class="bookmarks-list-button is-inactive" aria-pressed="false">
                  ${_('Bookmarks')}
120
              </button>
121 122 123 124 125 126 127 128 129
          </div>

          % if settings.FEATURES.get('ENABLE_COURSEWARE_SEARCH'):
            <div id="courseware-search-bar" class="search-bar courseware-search-bar" role="search" aria-label="Course">
              <form>
                <label for="course-search-input" class="sr">${_('Course Search')}</label>
                <div class="search-field-wrapper">
                  <input id="course-search-input" type="text" class="search-field"/>
                  <button type="submit" class="search-button">
130
                    ${_('search')} <span class="icon fa fa-search" aria-hidden="true"></span>
131
                  </button>
132 133
                  <button type="button" class="cancel-button" title="${_('Clear search')}">
                    <span class="icon fa fa-remove" aria-hidden="true"></span>
134 135 136
                  </button>
                </div>
              </form>
137
            </div>
138
          % endif
139

140 141
      </div>

142 143
      <div class="accordion">
        <nav class="course-navigation" aria-label="${_('Course')}">
144
          % if accordion.strip():
145
            ${HTML(accordion)}
146 147 148
          % else:
            <div class="chapter">${_("No content has been added to this course")}</div>
          % endif
149
        </nav>
150
      </div>
151

152
    </div>
153
% endif
154 155
    <section class="course-content" id="course-content">
        <main id="main" aria-label="Content" tabindex="-1">
156 157 158 159 160 161 162
        % if getattr(course, 'entrance_exam_enabled') and \
           getattr(course, 'entrance_exam_minimum_score_pct') and \
           entrance_exam_current_score is not UNDEFINED:
            % if not entrance_exam_passed:
            <p class="sequential-status-message">
                ${_('To access course materials, you must score {required_score}% or higher on this \
                exam. Your current score is {current_score}%.').format(
163 164
                    required_score=int(round(course.entrance_exam_minimum_score_pct * 100)),
                    current_score=int(round(entrance_exam_current_score * 100))
165 166
                )}
            </p>
167 168 169 170 171 172 173 174 175 176
            <script type="text/javascript">
            $(document).ajaxSuccess(function(event, xhr, settings) {
                if (settings.url.indexOf("xmodule_handler/problem_check") > -1) {
                    var data = JSON.parse(xhr.responseText);
                    if (data.entrance_exam_passed){
                        location.reload();
                    }
                }
            });
            </script>
177 178 179
            % else:
              <p class="sequential-status-message">
                ${_('Your score is {current_score}%. You have passed the entrance exam.').format(
180
                    current_score=int(round(entrance_exam_current_score * 100))
181 182 183
                )}
            </p>
            % endif
184
        % endif
185

186
          ${HTML(fragment.body_html())}
187
        </main>
188
    </section>
189

190 191 192 193 194
    <section class="courseware-results-wrapper">
      <div id="loading-message" aria-live="polite" aria-relevant="all"></div>
      <div id="error-message" aria-live="polite"></div>
      <div class="courseware-results search-results" data-course-id="${course.id}" data-lang-code="${language_preference}"></div>
    </section>
195

196
  </div>
197
</div>
198
<div class="container-footer">
199
  % if settings.FEATURES.get("LICENSING", False):
200
    <div class="course-license">
201
    % if getattr(course, "license", None):
202
      <%include file="../license.html" args="license=course.license" />
203 204 205 206
    % else:
      ## Default course license: All Rights Reserved, if none is explicitly set.
      <%include file="../license.html" args="license='all-rights-reserved'" />
    % endif
207 208 209
    </div>
  % endif
</div>
Matthew Mongeau committed
210

211
<nav class="nav-utilities ${"has-utility-calculator" if course.show_calculator else ""}" aria-label="${_('Course Utilities')}">
212 213 214 215
  ## Utility: Notes
  % if is_edxnotes_enabled(course):
    <%include file="/edxnotes/toggle_notes.html" args="course=course"/>
  % endif
216

217 218 219 220 221
  ## Utility: Calc
  % if course.show_calculator:
    <%include file="/calculator/toggle_calculator.html" />
  % endif
</nav>
222

223
<%include file="../modal/accessible_confirm.html" />