settings.html 34.6 KB
Newer Older
cahrens committed
1
<%page expression_filter="h"/>
Don Mitchell committed
2
<%inherit file="base.html" />
Mark Hoeber committed
3
<%def name="online_help_token()"><% return "schedule" %></%def>
cahrens committed
4
<%block name="title">${_("Schedule & Details Settings")}</%block>
5
<%block name="bodyclass">is-signedin course schedule view-settings feature-upload</%block>
Don Mitchell committed
6 7

<%namespace name='static' file='static_content.html'/>
8
<%!
9
  import urllib
10
  from django.utils.translation import ugettext as _
11
  from contentstore import utils
12 13 14
  from openedx.core.djangolib.js_utils import (
      dump_js_escaped_json, js_escaped_string
  )
cahrens committed
15
  from openedx.core.djangolib.markup import HTML, Text
16 17
%>

18
<%block name="header_extras">
19
% for template_name in ["basic-modal", "modal-button", "upload-dialog", "license-selector", "course-settings-learning-fields", "course-instructor-details"]:
20 21 22 23 24 25
  <script type="text/template" id="${template_name}-tpl">
    <%static:include path="js/${template_name}.underscore" />
  </script>
% endfor
</%block>

Don Mitchell committed
26 27
<%block name="jsextra">
  <link rel="stylesheet" type="text/css" href="${static.url('js/vendor/timepicker/jquery.timepicker.css')}" />
28

Don Mitchell committed
29
  <script type="text/javascript">
30 31
window.CMS = window.CMS || {};
CMS.URL = CMS.URL || {};
cahrens committed
32
CMS.URL.UPLOAD_ASSET = '${upload_asset_url | n, js_escaped_string}'
Don Mitchell committed
33 34
  </script>
</%block>
35

36 37
<%block name="requirejs">
    require(["js/factories/settings"], function(SettingsFactory) {
38 39 40 41
        SettingsFactory(
            "${details_url | n, js_escaped_string}",
            ${show_min_grade_warning | n, dump_js_escaped_json}
        );
42 43
    });
</%block>
Don Mitchell committed
44 45

<%block name="content">
46
<div class="wrapper-mast wrapper">
47
  <header class="mast has-subtitle">
Brian Talbot committed
48
    <h1 class="page-header">
49 50
      <small class="subtitle">${_("Settings")}</small>
      <span class="sr">&gt; </span>${_("Schedule & Details")}
Brian Talbot committed
51
    </h1>
52 53
  </header>
</div>
Don Mitchell committed
54

55
<div class="wrapper-content wrapper">
56 57
  <div class="content">
    <div class="content-primary">
58
      <form id="settings_details" class="settings-details" method="post" action="">
59
        <div class="group-settings basic">
60
          <header>
61 62
            <h2 class="title-2">${_("Basic Information")}</h2>
            <span class="tip">${_("The nuts and bolts of your course")}</span>
63 64
          </header>

65 66
          <ol class="list-input">
            <li class="field text is-not-editable" id="field-course-organization">
67
              <label for="course-organization">${_("Organization")}</label>
68
              <input title="${_('This field is disabled: this information cannot be changed.')}" type="text"
Don Mitchell committed
69
                class="long" id="course-organization" readonly />
70
            </li>
71

72
            <li class="field text is-not-editable" id="field-course-number">
73
              <label for="course-number">${_("Course Number")}</label>
74
              <input title="${_('This field is disabled: this information cannot be changed.')}" type="text"
Don Mitchell committed
75
                class="short" id="course-number" readonly>
76 77 78
            </li>

            <li class="field text is-not-editable" id="field-course-name">
79
              <label for="course-name">${_("Course Run")}</label>
80
              <input title="${_('This field is disabled: this information cannot be changed.')}" type="text"
Don Mitchell committed
81
                class="long" id="course-name" readonly />
82 83
            </li>
          </ol>
84

85
          % if about_page_editable:
86
          <div class="note note-promotion note-promotion-courseURL has-actions">
87
            <h3 class="title">${_("Course Summary Page")} <span class="tip">${_("(for student enrollment and access)")}</span></h3>
88
            <div class="copy">
89 90 91 92
              <%
                link_for_about_page = ("https:" if is_secure else "http:") + lms_link_for_about_page
              %>
              <p><a class="link-courseURL" rel="external" href="${link_for_about_page}">${link_for_about_page}</a></p>
93
            </div>
94

95 96
            <ul class="list-actions">
              <li class="action-item">
97 98
                <%
                  email_subject = urllib.quote(_("Enroll in {course_display_name}").format(
cahrens committed
99
                      course_display_name = context_course.display_name_with_default
100 101
                  ).encode("utf-8"))
                  email_body = urllib.quote(_('The course "{course_display_name}", provided by {platform_name}, is open for enrollment. Please navigate to this course at {link_for_about_page} to enroll.').format(
cahrens committed
102
                      course_display_name = context_course.display_name_with_default,
103 104 105 106
                      platform_name = settings.PLATFORM_NAME,
                      link_for_about_page = link_for_about_page
                  ).encode("utf-8"))
                %>
107
                <a title="${_('Send a note to students via email')}"
108
                    href="mailto:someone@domain.com?Subject=${email_subject}&body=${email_body}" class="action action-primary">
109
                    <span class="icon fa fa-envelope-o icon-inline" aria-hidden="true"></span>${_("Invite your students")}</a>
110 111 112
              </li>
            </ul>
          </div>
113
          % endif
114 115 116

          % if not about_page_editable:
          <div class="notice notice-incontext notice-workflow">
117
            <h3 class="title">${_("Promoting Your Course with {platform_name}").format(platform_name=settings.PLATFORM_NAME)}</h3>
118
            <div class="copy">
119 120 121
              <p>${_(
                'Your course summary page will not be viewable until your course '
                'has been announced. To provide content for the page and preview '
122 123
                'it, follow the instructions provided by your Program Manager.')}
              </p>
124 125 126
            </div>
          </div>
          % endif
127
        </div>
128
        <hr class="divide" />
129

130
        % if credit_eligibility_enabled and is_credit_course:
131
          <div class="group-settings basic">
132
            <header>
133 134
              <h2 class="title-2">${_("Course Credit Requirements")}</h2>
              <span class="tip">${_("Steps required to earn course credit")}</span>
135
            </header>
136 137
            <span class="header-help tip">A requirement appears in this list when you publish the unit that contains the requirement.</span>

138 139 140 141
              % if credit_requirements:
                <ol class="list-input">
                  % if 'grade' in credit_requirements:
                    <li class="field text is-not-editable" id="credit-minimum-passing-grade">
142
                      <label>${_("Minimum Grade")}</label>
143
                        % for requirement in credit_requirements['grade']:
144
                          <label for="${requirement['name']}" class="sr">${_("Minimum Grade")}</label>
145 146 147 148 149 150 151 152
                          <input title="${_('This field is disabled: this information cannot be changed.')}" type="text"
                              class="long" id="${requirement['name']}" value="${'{0:.0f}%'.format(float(requirement['criteria']['min_grade'] or 0)*100)}" readonly />
                        % endfor
                    </li>
                  % endif

                  % if 'proctored_exam' in credit_requirements:
                    <li class="field text is-not-editable" id="credit-proctoring-requirements">
153
                      <label>${_("Successful Proctored Exam")}</label>
154
                        % for requirement in credit_requirements['proctored_exam']:
155
                          <label for="${requirement['name']}" class="sr">${_('Proctored Exam {number}').format(number=loop.index+1)}</label>
156 157 158 159 160 161 162 163
                          <input title="${_('This field is disabled: this information cannot be changed.')}" type="text"
                              class="long" id="${requirement['name']}" value="${requirement['display_name']}" readonly />
                        % endfor
                    </li>
                  % endif

                  % if 'reverification' in credit_requirements:
                    <li class="field text is-not-editable" id="credit-reverification-requirements">
164
                      <label>${_("ID Verification")}</label>
165
                        % for requirement in credit_requirements['reverification']:
166
                          <label for="${requirement['name']}" class="sr">${_('In-Course Reverification {number}').format(number=loop.index+1)}</label>
167
                          <input title="${_('This field is disabled: this information cannot be changed.')}" type="text"
168
                              class="long" id="${requirement['name']}" value="${requirement['display_name']}" readonly />
169 170 171 172 173 174 175
                        % endfor
                    </li>
                  % endif
                </ol>
              % else:
                <p>No credit requirements found.</p>
              % endif
176
          </div>
177 178 179
          <hr class="divide" />
        % endif

180
        <div class="group-settings schedule">
181
          <header>
182
            <h2 class="title-2">${_('Course Schedule')}</h2>
183
            <span class="tip">${_('Dates that control when your course can be viewed')}</span>
184
          </header>
Don Mitchell committed
185

186 187 188
          <ol class="list-input">
            <li class="field-group field-group-course-start" id="course-start">
              <div class="field date" id="field-course-start-date">
189
                <label for="course-start-date">${_("Course Start Date")}</label>
190
                <input type="text" class="start-date date start datepicker" id="course-start-date" placeholder="MM/DD/YYYY" autocomplete="off" />
191
                <span class="tip tip-stacked">${_("First day the course begins")}</span>
192
              </div>
193 194

              <div class="field time" id="field-course-start-time">
195
                <label for="course-start-time">${_("Course Start Time")}</label>
196
                <input type="text" class="time start timepicker" id="course-start-time" value="" placeholder="HH:MM" autocomplete="off" />
197
                <span class="tip tip-stacked timezone">${_("(UTC)")}</span>
198
              </div>
199 200 201 202
            </li>

            <li class="field-group field-group-course-end" id="course-end">
              <div class="field date" id="field-course-end-date">
203
                <label for="course-end-date">${_("Course End Date")}</label>
204
                <input type="text" class="end-date date end" id="course-end-date" placeholder="MM/DD/YYYY" autocomplete="off" />
205
                <span class="tip tip-stacked">${_("Last day your course is active")}</span>
206
              </div>
207 208

              <div class="field time" id="field-course-end-time">
209
                <label for="course-end-time">${_("Course End Time")}</label>
210
                <input type="text" class="time end" id="course-end-time" value="" placeholder="HH:MM" autocomplete="off" />
211
                <span class="tip tip-stacked timezone">${_("(UTC)")}</span>
212 213
              </div>
            </li>
214
          </ol>
215

216 217 218
          <ol class="list-input">
            <li class="field-group field-group-enrollment-start" id="enrollment-start">
              <div class="field date" id="field-enrollment-start-date">
219
                <label for="course-enrollment-start-date">${_("Enrollment Start Date")}</label>
220
                <input type="text" class="start-date date start" id="course-enrollment-start-date" placeholder="MM/DD/YYYY" autocomplete="off" />
221
                <span class="tip tip-stacked">${_("First day students can enroll")}</span>
222
              </div>
223 224

              <div class="field time" id="field-enrollment-start-time">
225
                <label for="course-enrollment-start-time">${_("Enrollment Start Time")}</label>
226
                <input type="text" class="time start" id="course-enrollment-start-time" value="" placeholder="HH:MM" autocomplete="off" />
227
                <span class="tip tip-stacked timezone">${_("(UTC)")}</span>
228
              </div>
229
            </li>
230
            <%
cahrens committed
231
              enrollment_end_readonly = HTML("readonly aria-readonly=\"true\"") if not enrollment_end_editable else ""
232 233
              enrollment_end_editable_class = "is-not-editable" if not enrollment_end_editable else ""
            %>
234
            <li class="field-group field-group-enrollment-end" id="enrollment-end">
235
              <div class="field date ${enrollment_end_editable_class}" id="field-enrollment-end-date">
236
                <label for="course-enrollment-end-date">${_("Enrollment End Date")}</label>
237 238 239 240 241 242 243
                <input type="text" class="end-date date end" id="course-enrollment-end-date" placeholder="MM/DD/YYYY" autocomplete="off" ${enrollment_end_readonly} />
                <span class="tip tip-stacked">
                  ${_("Last day students can enroll.")}
                % if not enrollment_end_editable:
                  ${_("Contact your edX Partner Manager to update these settings.")}
                % endif
                </span>
244
              </div>
245

246
              <div class="field time ${enrollment_end_editable_class}" id="field-enrollment-end-time">
247
                <label for="course-enrollment-end-time">${_("Enrollment End Time")}</label>
248
                <input type="text" class="time end" id="course-enrollment-end-time" value="" placeholder="HH:MM" autocomplete="off" ${enrollment_end_readonly} />
249
                <span class="tip tip-stacked timezone">${_("(UTC)")}</span>
250 251
              </div>
            </li>
252
          </ol>
253 254 255

          % if not about_page_editable:
          <div class="notice notice-incontext notice-workflow">
256
            <h3 class="title">${_("These Dates Are Not Used When Promoting Your Course")}</h3>
257
            <div class="copy">
cahrens committed
258 259 260
              <p>${Text(_(
                'These dates impact {strong_start}when your courseware can be viewed{strong_end}, '
                'but they are {strong_start}not the dates shown on your course summary page{strong_end}. '
261
                'To provide the course start and registration dates as shown on your course '
262
                'summary page, follow the instructions provided by your Program Manager.'
cahrens committed
263 264 265
                )).format(
                  strong_start=HTML('<strong>'),
                  strong_end=HTML('</strong>')
266
              )}</p>
267 268 269
            </div>
          </div>
          % endif
270
        </div>
271 272

        % if about_page_editable:
273
        <div class="group-settings course_details">
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289
          <header>
            <h2 class="title-2">${_('Course Details')}</h2>
            <span class="tip">${_('Provide useful information about your course')}</span>
          </header>
          <ol class="list-input">
            <li class="field" id="field-course-language">
              <label for="course-language">${_("Course Language")}</label>
              <select id="course-language">
                <option value="" selected> - </option>
                % for lang, label in language_options:
                  <option value="${lang}">${label}</option>
                % endfor
              </select>
              <span class="tip tip-stacked">${_("Identify the course language here. This is used to assist users find courses that are taught in a specific language.")}</span>
            </li>
          </ol>
290
        </div>
291 292
        % endif

293
        <hr class="divide" />
294
            <div class="group-settings marketing">
295 296 297 298 299
              <header>
                <h2 class="title-2">${_("Introducing Your Course")}</h2>
                <span class="tip">${_("Information for prospective students")}</span>
              </header>
              <ol class="list-input">
300 301 302 303 304

                % if enable_extended_course_details:
                <li class="field text" id="field-course-title">
                  <label for="course-title">${_("Course Title")}</label>
                  <input type="text" id="course-title" data-display-name="${context_course.display_name}">
305
                  <span class="tip tip-stacked">${_("Displayed as title on the course details page. Limit to 50 characters.")}</span>
306 307 308 309
                </li>
                <li class="field text" id="field-course-subtitle">
                  <label for="course-subtitle">${_("Course Subtitle")}</label>
                  <input type="text" id="course-subtitle">
310
                  <span class="tip tip-stacked">${_("Displayed as subtitle on the course details page. Limit to 150 characters.")}</span>
311 312 313 314
                </li>
                <li class="field text" id="field-course-duration">
                  <label for="course-duration">${_("Course Duration")}</label>
                  <input type="text" id="course-duration">
315
                  <span class="tip tip-stacked">${_("Displayed on the course details page. Limit to 50 characters.")}</span>
316 317 318 319 320 321 322 323
                </li>
                <li class="field text" id="field-course-description">
                  <label for="course-description">${_("Course Description")}</label>
                  <textarea class="text" id="course-description"></textarea>
                  <span class="tip tip-stacked">${_("Displayed on the course details page. Limit to 1000 characters.")}</span>
                </li>
                % endif

324 325
                % if short_description_editable:
                <li class="field text" id="field-course-short-description">
326
                  <label for="course-short-description">${_("Course Short Description")}</label>
327 328 329 330 331
                  <textarea class="text" id="course-short-description"></textarea>
                  <span class="tip tip-stacked">${_("Appears on the course catalog page when students roll over the course name. Limit to ~150 characters")}</span>
                </li>
                % endif

332
                % if about_page_editable:
333 334 335
                <li class="field text" id="field-course-overview">
                  <label for="course-overview">${_("Course Overview")}</label>
                  <textarea class="tinymce text-editor" id="course-overview"></textarea>
cahrens committed
336 337 338 339 340
                  <span class="tip tip-stacked">${
                    Text(_("Introductions, prerequisites, FAQs that are used on {a_link_start}your course summary page{a_link_end} (formatted in HTML)")).format(
                      a_link_start=HTML("<a class='link-courseURL' rel='external' href='{lms_link_for_about_page}'>").format(lms_link_for_about_page=lms_link_for_about_page),
                      a_link_end=HTML("</a>")
                    )}</span>
341
                </li>
342
                % endif
343

344
                <li class="field image" id="field-course-image">
345
                  <label for="course-image-url">${_("Course Card Image")}</label>
346 347
                  <div class="current current-course-image">
                    % if context_course.course_image:
348
                    <span class="wrapper-course-image">
349
                      <img class="course-image" id="course-image" src="${course_image_url}" alt="${_('Course Card Image')}"/>
350 351
                    </span>

Don Mitchell committed
352
                    <span class="msg msg-help">
cahrens committed
353 354 355 356
                    ${Text(_("You can manage this image along with all of your other {a_link_start}files and uploads{a_link_end}")).format(
                      a_link_start=HTML("<a href='{upload_asset_url}'>").format(upload_asset_url=upload_asset_url),
                      a_link_end=HTML("</a>")
                      )}
Don Mitchell committed
357
                    </span>
358 359 360

                    % else:
                    <span class="wrapper-course-image">
361
                      <img class="course-image placeholder" id="course-image" src="${course_image_url}" alt="${_('Course Card Image')}"/>
362
                    </span>
363
                    <span class="msg msg-empty">${_("Your course currently does not have an image. Please upload one (JPEG or PNG format, and minimum suggested dimensions are 375px wide by 200px tall)")}</span>
364 365 366
                    % endif
                  </div>

367 368
                  <div class="wrapper-input">
                    <div class="input">
369 370
                      ## Translators: This is the placeholder text for a field that requests the URL for a course image
                      <input type="text" dir="ltr" class="long new-course-image-url" id="course-image-url" value="" placeholder="${_("Your course image URL")}" autocomplete="off" />
371
                      <span class="tip tip-stacked">${_("Please provide a valid path and name to your course image (Note: only JPEG or PNG format supported)")}</span>
372
                    </div>
373
                    <button type="button" class="action action-upload-image" id="upload-course-image">${_("Upload Course Card Image")}</button>
374 375 376
                  </div>
                </li>

377 378 379 380 381 382 383 384 385 386
                % if enable_extended_course_details:
                <li class="field image" id="field-banner-image">
                  <label for="banner-image-url">${_("Course Banner Image")}</label>
                  <div class="current current-course-image">
                    % if context_course.banner_image:
                    <span class="wrapper-course-image">
                      <img class="course-image" id="banner-image" src="${banner_image_url}" alt="${_('Course Banner Image')}"/>
                    </span>

                    <span class="msg msg-help">
cahrens committed
387 388 389 390
                    ${Text(_("You can manage this image along with all of your other {a_link_start}files and uploads{a_link_end}")).format(
                      a_link_start=HTML("<a href='{upload_asset_url}'>").format(upload_asset_url=upload_asset_url),
                      a_link_end=HTML("</a>")
                      )}
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419
                    </span>

                    % else:
                    <span class="wrapper-course-image">
                      <img class="course-image placeholder" id="banner-image" src="${banner_image_url}" alt="${_('Course Banner Image')}"/>
                    </span>
                    <span class="msg msg-empty">${_("Your course currently does not have an image. Please upload one (JPEG or PNG format, and minimum suggested dimensions are 1440px wide by 400px tall)")}</span>
                    % endif
                  </div>

                  <div class="wrapper-input">
                    <div class="input">
                      ## Translators: This is the placeholder text for a field that requests the URL for a course banner image
                      <input type="text" dir="ltr" class="long new-course-image-url" id="banner-image-url" value="" placeholder="${_("Your banner image URL")}" autocomplete="off" />
                      <span class="tip tip-stacked">${_("Please provide a valid path and name to your banner image (Note: only JPEG or PNG format supported)")}</span>
                    </div>
                    <button type="button" class="action action-upload-image" id="upload-banner-image">${_("Upload Course Banner Image")}</button>
                  </div>
                </li>

                <li class="field image" id="field-video-thumbnail-image">
                  <label for="video-thumbnail-image-url">${_("Course Video Thumbnail Image")}</label>
                  <div class="current current-course-image">
                    % if context_course.video_thumbnail_image:
                    <span class="wrapper-course-image">
                      <img class="course-image" id="video-thumbnail-image" src="${video_thumbnail_image_url}" alt="${_('Video Thumbnail Image')}"/>
                    </span>

                    <span class="msg msg-help">
cahrens committed
420 421 422 423
                    ${Text(_("You can manage this image along with all of your other {a_link_start}files and uploads{a_link_end}")).format(
                      a_link_start=HTML("<a href='{upload_asset_url}'>").format(upload_asset_url=upload_asset_url),
                      a_link_end=HTML("</a>")
                      )}
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444
                    </span>

                    % else:
                    <span class="wrapper-course-image">
                      <img class="course-image placeholder" id="video-thumbnail-image" src="${video_thumbnail_image_url}" alt="${_('Video Thumbnail Image')}"/>
                    </span>
                    <span class="msg msg-empty">${_("Your course currently does not have a video thumbnail image. Please upload one (JPEG or PNG format, and minimum suggested dimensions are 375px wide by 200px tall)")}</span>
                    % endif
                  </div>

                  <div class="wrapper-input">
                    <div class="input">
                      ## Translators: This is the placeholder text for a field that requests the URL for a course video thumbnail image
                      <input type="text" dir="ltr" class="long new-course-image-url" id="video-thumbnail-image-url" value="" placeholder="${_("Your video thumbnail image URL")}" autocomplete="off" />
                      <span class="tip tip-stacked">${_("Please provide a valid path and name to your video thumbnail image (Note: only JPEG or PNG format supported)")}</span>
                    </div>
                    <button type="button" class="action action-upload-image" id="upload-video-thumbnail-image">${_("Upload Video Thumbnail Image")}</button>
                  </div>
                </li>
                % endif

445
                % if about_page_editable:
446
                <li class="field video" id="field-course-introduction-video">
447
                  <label for="course-introduction-video">${_("Course Introduction Video")}</label>
448 449
                  <div class="input input-existing">
                    <div class="current current-course-introduction-video">
Ahsan Ulhaq committed
450
                      <iframe width="618" height="350" title="${_('Course Introduction Video')}" src="" frameborder="0" allowfullscreen></iframe>
451 452 453 454 455 456 457
                    </div>
                    <div class="actions">
                      <a href="#" class="remove-item remove-course-introduction-video remove-video-data"><span class="delete-icon"></span>${_("Delete Current Video")}</a>
                    </div>
                  </div>

                  <div class="input">
458 459
                    ## Translators: This is the placeholder text for a field that requests a YouTube video ID for a course video
                    <input type="text"  dir="ltr" class="long new-course-introduction-video add-video-data" id="course-introduction-video" value="" placeholder="${_("your YouTube video's ID")}" autocomplete="off" />
460 461 462
                    <span class="tip tip-stacked">${_("Enter your YouTube video's ID (along with any restriction parameters)")}</span>
                  </div>
                </li>
463
                  % endif
464
              </ol>
465
            </div>
466

467 468
          % if enable_extended_course_details:
            <hr class="divide" />
469
            <div class="group-settings course-learning-info">
470 471 472 473 474 475 476 477 478
              <header>
                <h2 class="title-2">${_("Learning Outcomes")}</h2>
                <span class="tip">${_("Add the learning outcomes for this course")}</span>
              </header>
              <ol class="list-input enum">
                <li class="course-settings-learning-fields"></li>
              </ol>
              <div class="actions">
                <button type="button" class="action action-primary button new-button add-course-learning-info">
479
                  <span class="icon fa fa-plus icon-inline" aria-hidden="true"></span>${_("Add Learning Outcome")}
480 481
                </button>
              </div>
482
            </div>
483 484

            <hr class="divide" />
485
            <div class="group-settings instructor-types">
486 487 488 489 490 491 492 493 494
              <header>
                <h2 class="title-2">${_("Instructors")}</h2>
                <span class="tip">${_("Add details about the instructors for this course")}</span>
              </header>
              <ol class="list-input enum">
                <li class="course-instructor-details-fields"></li>
              </ol>
              <div class="actions">
                <button type="button" class="action action-primary button new-button add-course-instructor-info">
495
                  <span class="icon fa fa-plus icon-inline" aria-hidden="true"></span>${_("Add Instructor")}
496 497
                </button>
              </div>
498
            </div>
499 500
          % endif

501
          % if about_page_editable or is_prerequisite_courses_enabled or is_entrance_exams_enabled:
502 503
            <hr class="divide" />

504
            <div class="group-settings requirements">
505 506 507 508 509 510
              <header>
                <h2 class="title-2">${_("Requirements")}</h2>
                <span class="tip">${_("Expectations of the students taking this course")}</span>
              </header>

              <ol class="list-input">
511
                % if about_page_editable:
512 513 514 515 516
                <li class="field text" id="field-course-effort">
                  <label for="course-effort">${_("Hours of Effort per Week")}</label>
                  <input type="text" class="short time" id="course-effort" placeholder="HH:MM" />
                  <span class="tip tip-inline">${_("Time spent on all course work")}</span>
                </li>
517
                % endif
518
                % if is_prerequisite_courses_enabled:
519 520 521 522 523 524 525 526 527 528 529 530
                <li class="field field-select" id="field-pre-requisite-course">
                    <label for="pre-requisite-course">${_("Prerequisite Course")}</label>
                    <select class="input" id="pre-requisite-course">
                        <option value="">${_("None")}</option>
                        % for course_info in sorted(possible_pre_requisite_courses, key=lambda s: s['display_name'].lower() if s['display_name'] is not None else ''):
                        <option value="${course_info['course_key']}">${course_info['display_name']}</option>
                        % endfor
                    </select>
                    <span class="tip tip-inline">${_("Course that students must complete before beginning this course")}</span>
                    <button type="submit" class="sr" name="submit" value="submit">${_("set pre-requisite course")}</button>
                </li>
                % endif
531
                % if is_entrance_exams_enabled:
532 533 534 535 536 537 538 539
                <li>
                    <h3 id="heading-entrance-exam">${_("Entrance Exam")}</h3>
                    <div class="show-data">
                        <div class="heading">
                            <input type="checkbox" id="entrance-exam-enabled" />
                            <label for="entrance-exam-enabled">${_("Require students to pass an exam before beginning the course.")}</label>
                        </div>
                         <div class="div-grade-requirements" hidden="hidden">
cahrens committed
540 541 542 543 544
                          <p><span class="tip tip-inline">
                            ${Text(_("You can now view and author your course entrance exam from the {link_start}Course Outline{link_end}.")).format(
                              link_start=HTML("<a href='{course_handler_url}'>").format(course_handler_url=course_handler_url),
                              link_end=HTML("</a>")
                            )}</span></p>
545 546 547 548 549 550 551
                          <p><h3>${_("Grade Requirements")}</h3></p>
                          <p><div><input type="text" id="entrance-exam-minimum-score-pct" aria-describedby="min-score-format"><span id="min-score-format" class="tip tip-inline">${_(" %")}</span></div></p>
                          <p><span class="tip tip-inline">${_("The score student must meet in order to successfully complete the entrance exam. ")}</span></p>
                        </div>
                    </div>
                </li>
                % endif
552
              </ol>
553
            </div>
554
          % endif
555

556
          % if self_paced_enabled:
557 558 559

            <hr class="divide" />

560
            <div class="group-settings pacing">
561 562 563 564
              <header>
                <h2 class="title-2">${_("Course Pacing")}</h2>
                <span class="tip">${_("Set the pacing for this course")}</span>
              </header>
565
              <span class="msg" id="course-pace-toggle-tip"></span>
566

567 568
              <ol class="list-input">
                <li class="field">
569 570 571
                  <input type="radio" class="field-radio" name="self-paced" id="course-pace-instructor-paced" value="false"/>
                  <label class="course-pace-label" for="course-pace-instructor-paced">Instructor-Paced</label>
                  <span class="tip">${_("Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.")}</span>
572 573 574 575 576 577 578
                </li>
                <li class="field">
                  <input type="radio" class="field-radio" name="self-paced" id="course-pace-self-paced" value="true"/>
                  <label class="course-pace-label" for="course-pace-self-paced">Self-Paced</label>
                  <span class="tip">${_("Self-paced courses do not have release dates for course content or due dates for assignments. Learners can complete course material at any time before the course end date.")}</span>
                </li>
              </ol>
579
            </div>
580 581 582

          % endif

583 584 585
          % if settings.FEATURES.get("LICENSING", False):
            <hr class="divide" />

586
            <div class="group-settings license">
587 588 589 590 591 592 593 594 595 596 597 598 599
              <header>
                <h2 class="title-2">${_("Course Content License")}</h2>
                ## Translators: At the course settings, the editor is able to select the default course content license.
                ## The course content will have this license set, some assets can override the license with their own.
                ## In the form, the license selector for course content is described using the following string:
                <span class="tip">${_("Select the default license for course content")}</span>
              </header>

              <ol class="list-input">
                <li class="field text" id="field-course-license">
                  <div id="course-license-selector"></div>
                </li>
              </ol>
600
            </div>
601
          % endif
602
      </form>
603 604
    </div>
    <div class="content-supplementary" role="complementary">
605
     <div class="bit">
606 607
        <h3 class="title-3">${_("How are these settings used?")}</h3>
        <p>${_("Your course's schedule determines when students can enroll in and begin a course.")}</p>
608

609
        <p>${_("Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.")}</p>
610
     </div>
611

612 613 614
     <div class="bit">
     % if context_course:
          <%
615 616 617
            course_team_url = utils.reverse_course_url('course_team_handler', context_course.id)
            grading_config_url = utils.reverse_course_url('grading_handler', context_course.id)
            advanced_config_url = utils.reverse_course_url('advanced_settings_handler', context_course.id)
618
          %>
619
        <h3 class="title-3">${_("Other Course Settings")}</h3>
620
        <nav class="nav-related" aria-label="${_('Other Course Settings')}">
621
          <ul>
Don Mitchell committed
622
            <li class="nav-item"><a href="${grading_config_url}">${_("Grading")}</a></li>
623
            <li class="nav-item"><a href="${course_team_url}">${_("Course Team")}</a></li>
624
            <li class="nav-item"><a href="${utils.reverse_course_url('group_configurations_list_handler', context_course.id)}">${_("Group Configurations")}</a></li>
625
            <li class="nav-item"><a href="${advanced_config_url}">${_("Advanced Settings")}</a></li>
626 627
          </ul>
        </nav>
628 629
     % endif
     </div>
630 631
    </div>
  </div>
632
</div>
633
</%block>