Commit a077a5e3 by Andy Armstrong

Add support for page banner status messages

LEARNER-1890
parent febf2a07
...@@ -388,7 +388,7 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest ...@@ -388,7 +388,7 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
def test_num_queries_instructor_paced(self): def test_num_queries_instructor_paced(self):
self.fetch_course_info_with_queries(self.instructor_paced_course, 22, 3) self.fetch_course_info_with_queries(self.instructor_paced_course, 25, 3)
def test_num_queries_self_paced(self): def test_num_queries_self_paced(self):
self.fetch_course_info_with_queries(self.self_paced_course, 22, 3) self.fetch_course_info_with_queries(self.self_paced_course, 25, 3)
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
@import 'edx-pattern-library-shims/buttons'; @import 'edx-pattern-library-shims/buttons';
// base - elements // base - elements
@import 'elements/banners';
@import 'elements/controls'; @import 'elements/controls';
@import 'elements/creative-commons'; @import 'elements/creative-commons';
@import 'elements/icons'; @import 'elements/icons';
......
// Open edX: components
// ====================
// Page banner
.page-banner {
max-width: $lms-max-width;
margin: 0 auto;
.user-messages {
margin-top: $baseline;
}
}
// Alerts
.alert {
.icon-alert {
margin-right: $baseline / 4;
}
}
...@@ -13,3 +13,4 @@ ...@@ -13,3 +13,4 @@
@import 'footer'; @import 'footer';
@import 'navigation'; @import 'navigation';
@import 'layouts'; @import 'layouts';
@import 'components';
...@@ -44,3 +44,50 @@ $full-width-banner-margin: 20px; ...@@ -44,3 +44,50 @@ $full-width-banner-margin: 20px;
right: $full-width-banner-margin; right: $full-width-banner-margin;
} }
} }
.page-banner {
max-width: $lms-max-width;
margin: 0 auto;
.user-messages {
padding-top: $baseline;
}
.alert {
margin-bottom: $baseline !important;
padding: $baseline;
border: 1px solid;
.icon-alert {
margin-right: $baseline / 4;
}
&.alert-info {
color: $state-info-text;
background-color: $state-info-bg;
border-color: $state-info-border;
box-shadow: none;
}
&.alert-success {
color: $state-success-text;
background-color: $state-success-bg;
border-color: $state-success-border;
box-shadow: none;
}
&.alert-warning {
color: $state-warning-text;
background-color: $state-warning-bg;
border-color: $state-warning-border;
box-shadow: none;
}
&.alert-danger {
color: $state-danger-text;
background-color: $state-danger-bg;
border-color: $state-danger-border;
box-shadow: none;
}
}
}
...@@ -221,6 +221,26 @@ $success-color: rgb(0, 155, 0) !default; ...@@ -221,6 +221,26 @@ $success-color: rgb(0, 155, 0) !default;
$success-color-hover: rgb(0, 129, 0) !default; $success-color-hover: rgb(0, 129, 0) !default;
// ---------------------------- // ----------------------------
// #COLORS- Bootstrap-style
// ----------------------------
$state-success-text: $black !default;
$state-success-bg: #dff0d8 !default;
$state-success-border: darken($state-success-bg, 5%) !default;
$state-info-text: $black !default;
$state-info-bg: #d9edf7 !default;
$state-info-border: darken($state-info-bg, 7%) !default;
$state-warning-text: $black !default;
$state-warning-bg: #fcf8e3 !default;
$state-warning-border: darken($state-warning-bg, 5%) !default;
$state-danger-text: $black !default;
$state-danger-bg: #f2dede !default;
$state-danger-border: darken($state-danger-bg, 5%) !default;
// ----------------------------
// #COLORS- EDX-SPECIFIC // #COLORS- EDX-SPECIFIC
// ---------------------------- // ----------------------------
......
...@@ -89,6 +89,48 @@ ...@@ -89,6 +89,48 @@
} }
} }
.page-banner {
max-width: $lms-max-width;
margin: 0 auto;
.alert {
margin-top: $baseline;
border: 1px solid;
.icon-alert {
margin-right: $baseline / 4;
}
&.alert-info {
color: $state-info-text;
background-color: $state-info-bg;
border-color: $state-info-border;
box-shadow: none;
}
&.alert-success {
color: $state-success-text;
background-color: $state-success-bg;
border-color: $state-success-border;
box-shadow: none;
}
&.alert-warning {
color: $state-warning-text;
background-color: $state-warning-bg;
border-color: $state-warning-border;
box-shadow: none;
}
&.alert-danger {
color: $state-danger-text;
background-color: $state-danger-bg;
border-color: $state-danger-border;
box-shadow: none;
}
}
}
.wrapper-preview-menu { .wrapper-preview-menu {
@include clearfix(); @include clearfix();
@include box-sizing(border-box); @include box-sizing(border-box);
......
...@@ -62,3 +62,23 @@ $lms-dark-icon-background-color: palette(grayscale, black) !default; ...@@ -62,3 +62,23 @@ $lms-dark-icon-background-color: palette(grayscale, black) !default;
$site-status-color: rgb(182,37,103) !default; $site-status-color: rgb(182,37,103) !default;
$shadow-l1: rgba(0,0,0,0.1) !default; $shadow-l1: rgba(0,0,0,0.1) !default;
// ----------------------------
// #ALERTS
// ----------------------------
$state-success-text: $black !default;
$state-success-bg: #dff0d8 !default;
$state-success-border: darken($state-success-bg, 5%) !default;
$state-info-text: $black !default;
$state-info-bg: #d9edf7 !default;
$state-info-border: darken($state-info-bg, 7%) !default;
$state-warning-text: $black !default;
$state-warning-bg: #fcf8e3 !default;
$state-warning-border: darken($state-warning-bg, 5%) !default;
$state-danger-text: $black !default;
$state-danger-bg: #f2dede !default;
$state-danger-border: darken($state-danger-bg, 5%) !default;
...@@ -141,6 +141,8 @@ from pipeline_mako import render_require_js_path_overrides ...@@ -141,6 +141,8 @@ from pipeline_mako import render_require_js_path_overrides
<%include file="/preview_menu.html" /> <%include file="/preview_menu.html" />
% endif % endif
<%include file="/page_banner.html" />
<div class="content-wrapper ${"container-fluid" if uses_bootstrap else "" } main-container" id="content"> <div class="content-wrapper ${"container-fluid" if uses_bootstrap else "" } main-container" id="content">
${self.body()} ${self.body()}
<%block name="bodyextra"/> <%block name="bodyextra"/>
......
## mako
<%page expression_filter="h"/>
<%namespace name='static' file='static_content.html'/>
<% online_help_token = self.online_help_token() if hasattr(self, 'online_help_token') else None %>
<%!
from django.utils.translation import ugettext as _
from openedx.core.djangolib.markup import HTML
from openedx.core.djangoapps.util.user_messages import user_messages
%>
% if user_messages:
<div class="page-banner">
<div class="user-messages">
% for message in user_messages(request):
<div class="alert ${message.css_class}" role="alert">
<span class="icon icon-alert fa ${message.icon_class}" aria-hidden="true"></span>
${HTML(message.message_html)}
</div>
% endfor
</div>
</div>
% endif
## mako
## Override the default styles_version to use Bootstrap ## Override the default styles_version to use Bootstrap
<%! main_css = "css/bootstrap/lms-main.css" %> <%! main_css = "css/bootstrap/lms-main.css" %>
......
## Override the default styles_version to the Pattern Library version (version 2) ## mako
<%! main_css = "style-main-v2" %>
<%page expression_filter="h"/> <%page expression_filter="h"/>
<%inherit file="/main.html" /> <%inherit file="/main.html" />
...@@ -18,10 +17,14 @@ ...@@ -18,10 +17,14 @@
<h2>UX Style Reference</h2> <h2>UX Style Reference</h2>
<section class="xblock xblock-student_view xmodule_display xmodule_HtmlModule"> <section class="xblock xblock-student_view xmodule_display xmodule_HtmlModule">
<h3>Page Types</h3> <h3>v1-style LMS Pages</h3>
<ul> <ul>
<li><a href="pattern-library-test.html">Pattern Library test page</a></li> <li><a href="v1/course-skeleton.html">Course skeleton page</a></li>
<li><a href="course-skeleton.html">Course skeleton page</a></li> </ul>
<h3>Pattern Library</h3>
<ul>
<li><a href="pattern-library/course-skeleton.html">Course skeleton page</a></li>
</ul> </ul>
<h3>Bootstrap</h3> <h3>Bootstrap</h3>
......
## Override the default styles_version to the Pattern Library version (version 2)
<%! main_css = "style-main-v2" %>
<%page expression_filter="h"/>
<%inherit file="/main.html" />
<%block name="pagetitle">Pattern Library Test</%block>
<%block name="nav_skip">#content</%block>
<%block name="bodyclass">pattern-library</%block>
<%block name="content">
<h1>Pattern Library test page</h1>
<div class="alert alert-warning" role="alert" tabindex="-1">
<span class="icon alert-icon fa fa-exclamation-triangle" aria-hidden="true"></span>
<div class="alert-message">
<p class="alert-copy">
Interesting pattern library content to come...
</p>
</div>
</div>
</%block>
## mako
## Override the default styles_version to the Pattern Library version (version 2) ## Override the default styles_version to the Pattern Library version (version 2)
<%! main_css = "style-main-v2" %> <%! main_css = "style-main-v2" %>
......
## mako
<%page expression_filter="h"/>
<%namespace name='static' file='/static_content.html'/>
<%inherit file="/main.html" />
<%block name="pagetitle">Course Skeleton</%block>
<%block name="bodyclass">view-in-course view-courseware courseware</%block>
<%block name="headextra">
<%static:css group='style-course-vendor'/>
<%static:css group='style-course'/>
</%block>
<%block name="content">
<nav class="wrapper-course-material">
<div class="course-material">
<ol class="tabs course-tabs">
<li class="tab">
<a href="index.html">
Home
</a>
</li>
<li class="tab">
<a href="#">
Course
</a>
</li>
<li class="tab">
<a href="#" class="active">
Skeleton
<span class="sr-only">, current location</span>
</a>
</li>
</ol>
</div>
</nav>
<section class="container">
<div class="course-wrapper" role="presentation">
<header class="page-header has-secondary">
<div class="page-header-main">
<nav aria-label="Course" class="sr-is-focusable" tabindex="-1">
<div class="has-breadcrumbs">
<div class="breadcrumbs">
<span class="nav-item nav-item-course">
<a href="/courses/course-v1:edX+DemoX+Demo_Course/course/">Course</a>
</span>
<span class="icon fa fa-angle-right" aria-hidden="true"></span>
<span class="nav-item nav-item-chapter">
<a href="/courses/course-v1:edX+DemoX+Demo_Course/course/#block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b">Introduction</a>
</span>
<span class="icon fa fa-angle-right" aria-hidden="true"></span>
<span class="nav-item nav-item-section">
<a href="/courses/course-v1:edX+DemoX+Demo_Course/course/#block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction">Demo Course Overview</a>
</span>
<span class="icon fa fa-angle-right" aria-hidden="true"></span>
<span class="nav-item nav-item-sequence">Introduction: Video and Sequences</span>
</div>
</div>
</nav>
</div>
</header>
<main id="main" tabindex="-1" aria-label="Content">
<div class="xblock xblock-student_view xblock-student_view-sequential xmodule_display xmodule_SequenceModule xblock-initialized" data-runtime-class="LmsRuntime" data-init="XBlockToXModuleShim" data-block-type="sequential" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction" data-type="Sequence" data-course-id="course-v1:edX+DemoX+Demo_Course">
<div id="sequence_edx_introduction" class="sequence" data-id="block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction" data-position="1" data-ajax-url="/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction/handler/xmodule_handler" data-next-url="/courses/course-v1:edX+DemoX+Demo_Course/courseware/interactive_demonstrations/19a30717eff543078a5d94ae9d6c18a5/?child=first" data-prev-url="None">
<div class="sequence-nav">
<button class="sequence-nav-button button-previous disabled" aria-hidden="true" disabled="disabled">
<span class="icon fa fa-chevron-prev" aria-hidden="true"></span>
<span>Previous</span>
</button>
<nav class="sequence-list-wrapper" aria-label="Sequence">
<ol id="sequence-list" role="tablist">
<li>
<button class="seq_video nav-item tab active" role="tab" tabindex="0" aria-selected="true" aria-expanded="true" aria-controls="seq_content" data-index="0" data-id="block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc" data-element="1" data-page-title="Introduction: Video and Sequences" data-path="Introduction > Demo Course Overview > Introduction: Video and Sequences" id="tab_0">
<span class="icon fa seq_video" aria-hidden="true"></span>
<span class="fa fa-fw fa-bookmark bookmark-icon is-hidden" aria-hidden="true"></span>
<div class="sequence-tooltip sr"><span class="sr">video&nbsp;</span>Introduction: Video and Sequences<span class="sr bookmark-icon-sr">&nbsp;</span></div>
</button>
</li>
</ol>
</nav>
<button class="sequence-nav-button button-next" aria-hidden="true">
<span>Next</span>
<span class="icon fa fa-chevron-next" aria-hidden="true"></span>
</button>
</div>
<div class="sr-is-focusable" tabindex="-1"></div>
<div id="seq_contents_0" aria-labelledby="tab_0" aria-hidden="true" class="seq_contents tex2jax_ignore asciimath2jax_ignore">
&lt;div class="wrap-instructor-info studio-view"&gt;
&lt;a class="instructor-info-action" href="//localhost:18010/container/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc"&gt;View Unit in Studio&lt;/a&gt;
&lt;/div&gt;
&lt;div class="xblock xblock-student_view xblock-student_view-vertical" data-runtime-class="LmsRuntime" data-init="VerticalStudentView" data-course-id="course-v1:edX+DemoX+Demo_Course" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc" data-block-type="vertical"&gt;
&lt;h2 class="hd hd-2 unit-title"&gt;Introduction: Video and Sequences&lt;/h2&gt;
&lt;div class="bookmark-button-wrapper"&gt;
&lt;button class="btn btn-link bookmark-button "
aria-pressed="false"
data-bookmark-id="AndyA,block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc"
data-bookmarks-api-url="/api/bookmarks/v1/bookmarks/"&gt;
&lt;span class="bookmark-text"&gt;Bookmark this page&lt;/span&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;div class="vert-mod"&gt;
&lt;div class="vert vert-0" data-id="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4"&gt;
&lt;div class="xblock xblock-student_view xblock-student_view-html xmodule_display xmodule_HtmlModule" data-runtime-class="LmsRuntime" data-init="XBlockToXModuleShim" data-block-type="html" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4" data-type="HTMLModule" data-course-id="course-v1:edX+DemoX+Demo_Course"&gt;
&lt;script type="json/xblock-args" class="xblock-json-init-args"&gt;
{"xmodule-type": "HTMLModule"}
&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;Welcome to the edX Demo Course Introduction.&lt;/strong&gt;&amp;nbsp;This is where you can explore how to take an edX course (like this one). Most courses have an "intro" video that shows you how it all works.&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: 'Open Sans', Verdana, Geneva, sans-serif;"&gt;You can watch the introduction video (below) or scroll though the course studies and assignments using the toolbar (above). &amp;nbsp;Just for fun, we'll keep track of your work in this demo course, and show you your progress in the toolbar just like in a real course.&lt;/p&gt;
&lt;p style="margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: 'Open Sans', Verdana, Geneva, sans-serif;"&gt;Watch the overview video (below), then click on "Example Week One" in the left hand navigation to get started.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wrap-instructor-info"&gt;
&lt;a class="instructor-info-action" href="#030e35c4756a4ddc8d40b95fbbfff4d4_debug" id="030e35c4756a4ddc8d40b95fbbfff4d4_trig"&gt;Staff Debug Info&lt;/a&gt;
&lt;/div&gt;
&lt;div aria-hidden="true" role="dialog" tabindex="-1" id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa-modal" class="modal xqa-modal"&gt;
&lt;div class="inner-wrapper"&gt;
&lt;header&gt;
&lt;h2&gt;Your Platform Name Here Content Quality Assessment&lt;/h2&gt;
&lt;/header&gt;
&lt;form id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_form" class="xqa_form"&gt;
&lt;label for="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_entry"&gt;Comment&lt;/label&gt;
&lt;input tabindex="0" id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_entry" type="text" placeholder="comment"&gt;
&lt;label for="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_tag"&gt;Tag&lt;/label&gt;
&lt;span style="color:black;vertical-align: -10pt"&gt;Optional tag (eg "done" or "broken"):&amp;nbsp; &lt;/span&gt;
&lt;input id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_tag" type="text" placeholder="tag" style="width:80px;display:inline"&gt;
&lt;div class="submit"&gt;
&lt;button name="submit" type="submit"&gt;Add comment&lt;/button&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_log_data"&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div aria-hidden="true" role="dialog" tabindex="-1" class="modal staff-modal" id="030e35c4756a4ddc8d40b95fbbfff4d4_debug" &gt;
&lt;div class="inner-wrapper"&gt;
&lt;header&gt;
&lt;h2&gt;Staff Debug&lt;/h2&gt;
&lt;/header&gt;
&lt;hr /&gt;
&lt;div class="staff_actions"&gt;
&lt;h3&gt;Actions&lt;/h3&gt;
&lt;div&gt;
&lt;label for="sd_fu_030e35c4756a4ddc8d40b95fbbfff4d4"&gt;Username:&lt;/label&gt;
&lt;input type="text" tabindex="0" id="sd_fu_030e35c4756a4ddc8d40b95fbbfff4d4" placeholder="AndyA"/&gt;
&lt;/div&gt;
&lt;div data-location="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4" data-location-name="030e35c4756a4ddc8d40b95fbbfff4d4"&gt;
[
&lt;button type="button" class="btn-link staff-debug-sdelete"&gt;Delete Learner's State&lt;/button&gt;
]
&lt;/div&gt;
&lt;div id="result_030e35c4756a4ddc8d40b95fbbfff4d4"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="staff_info" style="display:block"&gt;
is_released = &lt;font color='red'&gt;Yes!&lt;/font&gt;
location = block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4
&lt;table summary="Module Fields"&gt;
&lt;tr&gt;&lt;th&gt;Module Fields&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;visible_to_staff_only&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;graded&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;annotation_token_secret&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;giturl&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;edxnotes&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;source_file&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;course_edit_method&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;Studio&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;default_tab&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;in_entrance_exam&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;showanswer&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;attempted&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;display_name&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;Blank HTML Page&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;video_speed_optimizations&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;graceperiod&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;5:00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;format&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;due&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;start&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;1970-01-01 05:00:00+00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;editor&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;visual&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;video_bumper&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;{}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;max_attempts&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;parent&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;tags&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;[]&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;matlab_api_key&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;xqa_key&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;qaijS3UatK020Wc0sfCtFe0V6jpB4d64&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;annotation_storage_url&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;http://your_annotation_storage.com&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;use_latex_compiler&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;days_early_for_beta&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;show_correctness&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;always&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;source_code&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;data&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Welcome to the edX Demo Course Introduction.&amp;lt;/strong&amp;gt;&amp;amp;nbsp;This is where you can explore how to take an edX course (like this one). Most courses have an &amp;#34;intro&amp;#34; video that shows you how it all works.&amp;amp;nbsp;&amp;lt;/p&amp;gt;
&amp;lt;p style=&amp;#34;margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: &amp;#39;Open Sans&amp;#39;, Verdana, Geneva, sans-serif;&amp;#34;&amp;gt;You can watch the introduction video (below) or scroll though the course studies and assignments using the toolbar (above). &amp;amp;nbsp;Just for fun, we&amp;#39;ll keep track of your work in this demo course, and show you your progress in the toolbar just like in a real course.&amp;lt;/p&amp;gt;
&amp;lt;p style=&amp;#34;margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: &amp;#39;Open Sans&amp;#39;, Verdana, Geneva, sans-serif;&amp;#34;&amp;gt;Watch the overview video (below), then click on &amp;#34;Example Week One&amp;#34; in the left hand navigation to get started.&amp;lt;/p&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;static_asset_path&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;name&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;hide_from_toc&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;group_access&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;{}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;rerandomize&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;never&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;user_partitions&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;[]&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;chrome&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;edxnotes_visibility&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;show_reset_button&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;self_paced&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;XML attributes&lt;/th&gt;&lt;/tr&gt;
&lt;/table&gt;
category = HtmlModuleWithMixins
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div aria-hidden="true" role="dialog" tabindex="-1" class="modal history-modal" id="030e35c4756a4ddc8d40b95fbbfff4d4_history"&gt;
&lt;div class="inner-wrapper"&gt;
&lt;header&gt;
&lt;h2&gt;Submission History Viewer&lt;/h2&gt;
&lt;/header&gt;
&lt;form id="030e35c4756a4ddc8d40b95fbbfff4d4_history_form"&gt;
&lt;label for="030e35c4756a4ddc8d40b95fbbfff4d4_history_student_username"&gt;User:&lt;/label&gt;
&lt;input tabindex="0" id="030e35c4756a4ddc8d40b95fbbfff4d4_history_student_username" type="text" placeholder=""/&gt;
&lt;input type="hidden" id="030e35c4756a4ddc8d40b95fbbfff4d4_history_location" value="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4"/&gt;
&lt;div class="submit"&gt;
&lt;button name="submit" type="submit"&gt;View History&lt;/button&gt;
&lt;/div&gt;
&lt;/form&gt;
&lt;div id="030e35c4756a4ddc8d40b95fbbfff4d4_history_text" class="staff_info" style="display:block"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="030e35c4756a4ddc8d40b95fbbfff4d4_setup"&gt;&lt;/div&gt;
&lt;script type="text/javascript"&gt;
// assumes courseware.html's loaded this method.
$(function () {
setup_debug('030e35c4756a4ddc8d40b95fbbfff4d4',
null,
{
'location': 'block\u002Dv1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4',
'xqa_key': 'qaijS3UatK020Wc0sfCtFe0V6jpB4d64',
'category': 'HtmlModuleWithMixins',
'user': 'AndyA'
}
);
});
&lt;/script&gt;
&lt;/div&gt;
&lt;div class="vert vert-1" data-id="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd"&gt;
&lt;div class="xblock xblock-student_view xblock-student_view-video xmodule_display xmodule_VideoModule" data-runtime-class="LmsRuntime" data-init="XBlockToXModuleShim" data-block-type="video" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd" data-type="Video" data-course-id="course-v1:edX+DemoX+Demo_Course"&gt;
&lt;script type="json/xblock-args" class="xblock-json-init-args"&gt;
{"xmodule-type": "Video"}
&lt;/script&gt;
&lt;h3 class="hd hd-2"&gt;Welcome!&lt;/h3&gt;
&lt;div
id="video_0b9e39477cf34507a7a48f74be381fdd"
class="video closed"
data-metadata='{&amp;#34;savedVideoPosition&amp;#34;: 0.0, &amp;#34;ytMetadataUrl&amp;#34;: &amp;#34;https://www.googleapis.com/youtube/v3/videos/&amp;#34;, &amp;#34;sources&amp;#34;: [&amp;#34;https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-H010000_100.mp4&amp;#34;], &amp;#34;speed&amp;#34;: null, &amp;#34;generalSpeed&amp;#34;: 1.0, &amp;#34;end&amp;#34;: 0.0, &amp;#34;sub&amp;#34;: &amp;#34;name_of_file&amp;#34;, &amp;#34;ytTestTimeout&amp;#34;: 1500, &amp;#34;transcriptLanguages&amp;#34;: {&amp;#34;en&amp;#34;: &amp;#34;English&amp;#34;}, &amp;#34;start&amp;#34;: 0.0, &amp;#34;ytKey&amp;#34;: &amp;#34;PUT_YOUR_API_KEY_HERE&amp;#34;, &amp;#34;poster&amp;#34;: null, &amp;#34;recordedYoutubeIsAvailable&amp;#34;: true, &amp;#34;ytApiUrl&amp;#34;: &amp;#34;https://www.youtube.com/iframe_api&amp;#34;, &amp;#34;saveStateUrl&amp;#34;: &amp;#34;/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/xmodule_handler/save_user_state&amp;#34;, &amp;#34;transcriptAvailableTranslationsUrl&amp;#34;: &amp;#34;/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/available_translations&amp;#34;, &amp;#34;transcriptLanguage&amp;#34;: &amp;#34;en&amp;#34;, &amp;#34;showCaptions&amp;#34;: &amp;#34;true&amp;#34;, &amp;#34;autohideHtml5&amp;#34;: false, &amp;#34;streams&amp;#34;: &amp;#34;1.00:b7xgknqkQk8&amp;#34;, &amp;#34;transcriptTranslationUrl&amp;#34;: &amp;#34;/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/translation/__lang__&amp;#34;, &amp;#34;captionDataDir&amp;#34;: null, &amp;#34;autoplay&amp;#34;: false}'
data-bumper-metadata='null'
data-poster='null'
tabindex="-1"
&gt;
&lt;div class="focus_grabber first"&gt;&lt;/div&gt;
&lt;div class="tc-wrapper"&gt;
&lt;div class="video-wrapper"&gt;
&lt;span tabindex="0" class="spinner" aria-hidden="false" aria-label="Loading video player"&gt;&lt;/span&gt;
&lt;span tabindex="-1" class="btn-play fa fa-youtube-play fa-2x is-hidden" aria-hidden="true" aria-label="Play video"&gt;&lt;/span&gt;
&lt;div class="video-player-pre"&gt;&lt;/div&gt;
&lt;div class="video-player"&gt;
&lt;div id="0b9e39477cf34507a7a48f74be381fdd"&gt;&lt;/div&gt;
&lt;h4 class="hd hd-4 video-error is-hidden"&gt;No playable video sources found.&lt;/h4&gt;
&lt;h4 class="hd hd-4 video-hls-error is-hidden"&gt;
Your browser does not support this video format. Try using a different browser.
&lt;/h4&gt;
&lt;/div&gt;
&lt;div class="video-player-post"&gt;&lt;/div&gt;
&lt;div class="closed-captions"&gt;&lt;/div&gt;
&lt;div class="video-controls is-hidden"&gt;
&lt;div&gt;
&lt;div class="vcr"&gt;&lt;div class="vidtime"&gt;0:00 / 0:00&lt;/div&gt;&lt;/div&gt;
&lt;div class="secondary-controls"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="focus_grabber last"&gt;&lt;/div&gt;
&lt;h3 class="hd hd-4 downloads-heading sr" id="video-download-transcripts_0b9e39477cf34507a7a48f74be381fdd"&gt;Downloads and transcripts&lt;/h3&gt;
&lt;div class="wrapper-downloads" role="region" aria-labelledby="video-download-transcripts_0b9e39477cf34507a7a48f74be381fdd"&gt;
&lt;div class="wrapper-download-video"&gt;
&lt;h4 class="hd hd-5"&gt;Video&lt;/h4&gt;
&lt;a class="btn-link video-sources video-download-button" href="https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-H010000_100.mp4"&gt;
Download video file
&lt;/a&gt;
&lt;/div&gt;
&lt;div class="wrapper-download-transcripts"&gt;
&lt;h4 class="hd hd-5"&gt;Transcripts&lt;/h4&gt;
&lt;ul class="list-download-transcripts"&gt;
&lt;li class="transcript-option"&gt;
&lt;a class="btn btn-link" href="/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/download" data-value="srt"&gt;Download SubRip (.srt) file&lt;/a&gt;
&lt;/li&gt;
&lt;li class="transcript-option"&gt;
&lt;a class="btn btn-link" href="/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/download" data-value="txt"&gt;Download Text (.txt) file&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="wrap-instructor-info"&gt;
&lt;a class="instructor-info-action" href="#0b9e39477cf34507a7a48f74be381fdd_debug" id="0b9e39477cf34507a7a48f74be381fdd_trig"&gt;Staff Debug Info&lt;/a&gt;
&lt;/div&gt;
&lt;div aria-hidden="true" role="dialog" tabindex="-1" id="0b9e39477cf34507a7a48f74be381fdd_xqa-modal" class="modal xqa-modal"&gt;
&lt;div class="inner-wrapper"&gt;
&lt;header&gt;
&lt;h2&gt;Your Platform Name Here Content Quality Assessment&lt;/h2&gt;
&lt;/header&gt;
&lt;form id="0b9e39477cf34507a7a48f74be381fdd_xqa_form" class="xqa_form"&gt;
&lt;label for="0b9e39477cf34507a7a48f74be381fdd_xqa_entry"&gt;Comment&lt;/label&gt;
&lt;input tabindex="0" id="0b9e39477cf34507a7a48f74be381fdd_xqa_entry" type="text" placeholder="comment"&gt;
&lt;label for="0b9e39477cf34507a7a48f74be381fdd_xqa_tag"&gt;Tag&lt;/label&gt;
&lt;span style="color:black;vertical-align: -10pt"&gt;Optional tag (eg "done" or "broken"):&amp;nbsp; &lt;/span&gt;
&lt;input id="0b9e39477cf34507a7a48f74be381fdd_xqa_tag" type="text" placeholder="tag" style="width:80px;display:inline"&gt;
&lt;div class="submit"&gt;
&lt;button name="submit" type="submit"&gt;Add comment&lt;/button&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div id="0b9e39477cf34507a7a48f74be381fdd_xqa_log_data"&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div aria-hidden="true" role="dialog" tabindex="-1" class="modal staff-modal" id="0b9e39477cf34507a7a48f74be381fdd_debug" &gt;
&lt;div class="inner-wrapper"&gt;
&lt;header&gt;
&lt;h2&gt;Staff Debug&lt;/h2&gt;
&lt;/header&gt;
&lt;hr /&gt;
&lt;div class="staff_actions"&gt;
&lt;h3&gt;Actions&lt;/h3&gt;
&lt;div&gt;
&lt;label for="sd_fu_0b9e39477cf34507a7a48f74be381fdd"&gt;Username:&lt;/label&gt;
&lt;input type="text" tabindex="0" id="sd_fu_0b9e39477cf34507a7a48f74be381fdd" placeholder="AndyA"/&gt;
&lt;/div&gt;
&lt;div data-location="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd" data-location-name="0b9e39477cf34507a7a48f74be381fdd"&gt;
[
&lt;button type="button" class="btn-link staff-debug-sdelete"&gt;Delete Learner's State&lt;/button&gt;
]
&lt;/div&gt;
&lt;div id="result_0b9e39477cf34507a7a48f74be381fdd"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="staff_info" style="display:block"&gt;
is_released = &lt;font color='red'&gt;Yes!&lt;/font&gt;
location = block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd
&lt;table summary="Module Fields"&gt;
&lt;tr&gt;&lt;th&gt;Module Fields&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;transcript_language&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;en&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;group_access&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;{}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;graded&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;annotation_token_secret&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;youtube_id_1_25&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;transcript_download_format&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;srt&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;giturl&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;edxnotes&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;show_captions&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;source_file&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;handout&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;course_edit_method&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;Studio&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;default_tab&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;bumper_do_not_show_again&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;in_entrance_exam&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;showanswer&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;attempted&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;display_name&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;Welcome!&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;sub&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;name_of_file&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;video_speed_optimizations&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;graceperiod&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;5:00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;speed&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;format&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;due&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;edx_video_id&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;start&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;1970-01-01 05:00:00+00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;youtube_id_1_0&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;b7xgknqkQk8&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;only_on_web&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;youtube_id_1_5&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;days_early_for_beta&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;start_time&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;0:00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;visible_to_staff_only&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;download_video&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;parent&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;tags&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;[]&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;matlab_api_key&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;xqa_key&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;qaijS3UatK020Wc0sfCtFe0V6jpB4d64&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;youtube_is_available&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;html5_sources&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;[u&amp;#39;https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-H010000_100.mp4&amp;#39;]&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;global_speed&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;1.0&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;annotation_storage_url&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;http://your_annotation_storage.com&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;track&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;use_latex_compiler&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;video_bumper&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;{}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;show_correctness&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;always&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;youtube_id_0_75&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;static_asset_path&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;hide_from_toc&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;bumper_last_view_date&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;show_reset_button&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;name&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;license&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;rerandomize&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;never&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;user_partitions&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;[]&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;chrome&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;download_track&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;edxnotes_visibility&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;True&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;source&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;transcripts&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;{}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;max_attempts&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;None&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;saved_video_position&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;0:00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;self_paced&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;False&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:25%"&gt;end_time&lt;/td&gt;&lt;td&gt;&lt;pre style="display:inline-block; margin: 0;"&gt;0:00:00&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;XML attributes&lt;/th&gt;&lt;/tr&gt;
&lt;/table&gt;
category = VideoModuleWithMixins
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div aria-hidden="true" role="dialog" tabindex="-1" class="modal history-modal" id="0b9e39477cf34507a7a48f74be381fdd_history"&gt;
&lt;div class="inner-wrapper"&gt;
&lt;header&gt;
&lt;h2&gt;Submission History Viewer&lt;/h2&gt;
&lt;/header&gt;
&lt;form id="0b9e39477cf34507a7a48f74be381fdd_history_form"&gt;
&lt;label for="0b9e39477cf34507a7a48f74be381fdd_history_student_username"&gt;User:&lt;/label&gt;
&lt;input tabindex="0" id="0b9e39477cf34507a7a48f74be381fdd_history_student_username" type="text" placeholder=""/&gt;
&lt;input type="hidden" id="0b9e39477cf34507a7a48f74be381fdd_history_location" value="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd"/&gt;
&lt;div class="submit"&gt;
&lt;button name="submit" type="submit"&gt;View History&lt;/button&gt;
&lt;/div&gt;
&lt;/form&gt;
&lt;div id="0b9e39477cf34507a7a48f74be381fdd_history_text" class="staff_info" style="display:block"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="0b9e39477cf34507a7a48f74be381fdd_setup"&gt;&lt;/div&gt;
&lt;script type="text/javascript"&gt;
// assumes courseware.html's loaded this method.
$(function () {
setup_debug('0b9e39477cf34507a7a48f74be381fdd',
null,
{
'location': 'block\u002Dv1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd',
'xqa_key': 'qaijS3UatK020Wc0sfCtFe0V6jpB4d64',
'category': 'VideoModuleWithMixins',
'user': 'AndyA'
}
);
});
&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</div>
<div id="seq_content" role="tabpanel" aria-labelledby="tab_0">
<div class="wrap-instructor-info studio-view">
<a class="instructor-info-action" href="//localhost:18010/container/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc">View Unit in Studio</a>
</div>
<div class="xblock xblock-student_view xblock-student_view-vertical xblock-initialized" data-runtime-class="LmsRuntime" data-init="VerticalStudentView" data-course-id="course-v1:edX+DemoX+Demo_Course" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc" data-block-type="vertical">
<h2 class="hd hd-2 unit-title">Introduction: Video and Sequences</h2>
<div class="bookmark-button-wrapper">
<button class="btn btn-link bookmark-button" aria-pressed="false" data-bookmark-id="AndyA,block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc" data-bookmarks-api-url="/api/bookmarks/v1/bookmarks/">
<span class="bookmark-text">Bookmark this page</span>
</button>
</div>
<div class="vert-mod">
<div class="vert vert-0" data-id="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4">
<div class="xblock xblock-student_view xblock-student_view-html xmodule_display xmodule_HtmlModule xblock-initialized" data-runtime-class="LmsRuntime" data-init="XBlockToXModuleShim" data-block-type="html" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4" data-type="HTMLModule" data-course-id="course-v1:edX+DemoX+Demo_Course">
<p><strong>Welcome to the edX Demo Course Introduction.</strong>&nbsp;This is where you can explore how to take an edX course (like this one). Most courses have an "intro" video that shows you how it all works.&nbsp;</p>
<p style="margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: 'Open Sans', Verdana, Geneva, sans-serif;">You can watch the introduction video (below) or scroll though the course studies and assignments using the toolbar (above). &nbsp;Just for fun, we'll keep track of your work in this demo course, and show you your progress in the toolbar just like in a real course.</p>
<p style="margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: 'Open Sans', Verdana, Geneva, sans-serif;">Watch the overview video (below), then click on "Example Week One" in the left hand navigation to get started.</p>
</div>
<div class="wrap-instructor-info">
<a class="instructor-info-action" href="#030e35c4756a4ddc8d40b95fbbfff4d4_debug" id="030e35c4756a4ddc8d40b95fbbfff4d4_trig">Staff Debug Info</a>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa-modal" class="modal xqa-modal">
<div class="inner-wrapper">
<header>
<h2>Your Platform Name Here Content Quality Assessment</h2>
</header>
<form id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_form" class="xqa_form">
<label for="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_entry">Comment</label>
<input tabindex="0" id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_entry" type="text" placeholder="comment">
<label for="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_tag">Tag</label>
<span style="color:black;vertical-align: -10pt">Optional tag (eg "done" or "broken"):&nbsp; </span>
<input id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_tag" type="text" placeholder="tag" style="width:80px;display:inline">
<div class="submit">
<button name="submit" type="submit">Add comment</button>
</div>
<hr>
<div id="030e35c4756a4ddc8d40b95fbbfff4d4_xqa_log_data"></div>
</form>
</div>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" class="modal staff-modal" id="030e35c4756a4ddc8d40b95fbbfff4d4_debug">
<div class="inner-wrapper">
<header>
<h2>Staff Debug</h2>
</header>
<hr>
<div class="staff_actions">
<h3>Actions</h3>
<div>
<label for="sd_fu_030e35c4756a4ddc8d40b95fbbfff4d4">Username:</label>
<input type="text" tabindex="0" id="sd_fu_030e35c4756a4ddc8d40b95fbbfff4d4" placeholder="AndyA">
</div>
<div data-location="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4" data-location-name="030e35c4756a4ddc8d40b95fbbfff4d4">
[
<button type="button" class="btn-link staff-debug-sdelete">Delete Learner's State</button>
]
</div>
<div id="result_030e35c4756a4ddc8d40b95fbbfff4d4"></div>
</div>
<div class="staff_info" style="display:block">
is_released = <font color="red">Yes!</font>
location = block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4
<table summary="Module Fields">
<tbody><tr><th>Module Fields</th></tr>
<tr><td style="width:25%">visible_to_staff_only</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">graded</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">annotation_token_secret</td><td><pre style="display:inline-block; margin: 0;">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</pre></td></tr>
<tr><td style="width:25%">giturl</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">edxnotes</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">source_file</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">course_edit_method</td><td><pre style="display:inline-block; margin: 0;">Studio</pre></td></tr>
<tr><td style="width:25%">default_tab</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">in_entrance_exam</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">showanswer</td><td><pre style="display:inline-block; margin: 0;">attempted</pre></td></tr>
<tr><td style="width:25%">display_name</td><td><pre style="display:inline-block; margin: 0;">Blank HTML Page</pre></td></tr>
<tr><td style="width:25%">video_speed_optimizations</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">graceperiod</td><td><pre style="display:inline-block; margin: 0;">5:00:00</pre></td></tr>
<tr><td style="width:25%">format</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">due</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">start</td><td><pre style="display:inline-block; margin: 0;">1970-01-01 05:00:00+00:00</pre></td></tr>
<tr><td style="width:25%">editor</td><td><pre style="display:inline-block; margin: 0;">visual</pre></td></tr>
<tr><td style="width:25%">video_bumper</td><td><pre style="display:inline-block; margin: 0;">{}</pre></td></tr>
<tr><td style="width:25%">max_attempts</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">parent</td><td><pre style="display:inline-block; margin: 0;">block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc</pre></td></tr>
<tr><td style="width:25%">tags</td><td><pre style="display:inline-block; margin: 0;">[]</pre></td></tr>
<tr><td style="width:25%">matlab_api_key</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">xqa_key</td><td><pre style="display:inline-block; margin: 0;">qaijS3UatK020Wc0sfCtFe0V6jpB4d64</pre></td></tr>
<tr><td style="width:25%">annotation_storage_url</td><td><pre style="display:inline-block; margin: 0;">http://your_annotation_storage.com</pre></td></tr>
<tr><td style="width:25%">use_latex_compiler</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">days_early_for_beta</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">show_correctness</td><td><pre style="display:inline-block; margin: 0;">always</pre></td></tr>
<tr><td style="width:25%">source_code</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">data</td><td><pre style="display:inline-block; margin: 0;">&lt;p&gt;&lt;strong&gt;Welcome to the edX Demo Course Introduction.&lt;/strong&gt;&amp;nbsp;This is where you can explore how to take an edX course (like this one). Most courses have an "intro" video that shows you how it all works.&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: 'Open Sans', Verdana, Geneva, sans-serif;"&gt;You can watch the introduction video (below) or scroll though the course studies and assignments using the toolbar (above). &amp;nbsp;Just for fun, we'll keep track of your work in this demo course, and show you your progress in the toolbar just like in a real course.&lt;/p&gt;
&lt;p style="margin-right: 0px; font-size: 16px; margin-left: 0px; font-family: 'Open Sans', Verdana, Geneva, sans-serif;"&gt;Watch the overview video (below), then click on "Example Week One" in the left hand navigation to get started.&lt;/p&gt;</pre></td></tr>
<tr><td style="width:25%">static_asset_path</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">name</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">hide_from_toc</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">group_access</td><td><pre style="display:inline-block; margin: 0;">{}</pre></td></tr>
<tr><td style="width:25%">rerandomize</td><td><pre style="display:inline-block; margin: 0;">never</pre></td></tr>
<tr><td style="width:25%">user_partitions</td><td><pre style="display:inline-block; margin: 0;">[]</pre></td></tr>
<tr><td style="width:25%">chrome</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">edxnotes_visibility</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">show_reset_button</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">self_paced</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
</tbody></table>
<table>
<tbody><tr><th>XML attributes</th></tr>
</tbody></table>
category = HtmlModuleWithMixins
</div>
</div>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" class="modal history-modal" id="030e35c4756a4ddc8d40b95fbbfff4d4_history">
<div class="inner-wrapper">
<header>
<h2>Submission History Viewer</h2>
</header>
<form id="030e35c4756a4ddc8d40b95fbbfff4d4_history_form">
<label for="030e35c4756a4ddc8d40b95fbbfff4d4_history_student_username">User:</label>
<input tabindex="0" id="030e35c4756a4ddc8d40b95fbbfff4d4_history_student_username" type="text" placeholder="">
<input type="hidden" id="030e35c4756a4ddc8d40b95fbbfff4d4_history_location" value="block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4">
<div class="submit">
<button name="submit" type="submit">View History</button>
</div>
</form>
<div id="030e35c4756a4ddc8d40b95fbbfff4d4_history_text" class="staff_info" style="display:block">
</div>
</div>
</div>
<div id="030e35c4756a4ddc8d40b95fbbfff4d4_setup"></div>
<script type="text/javascript">
// assumes courseware.html's loaded this method.
$(function () {
setup_debug('030e35c4756a4ddc8d40b95fbbfff4d4',
null,
{
'location': 'block\u002Dv1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4',
'xqa_key': 'qaijS3UatK020Wc0sfCtFe0V6jpB4d64',
'category': 'HtmlModuleWithMixins',
'user': 'AndyA'
}
);
});
</script>
</div>
<div class="vert vert-1" data-id="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd">
<div class="xblock xblock-student_view xblock-student_view-video xmodule_display xmodule_VideoModule xblock-initialized" data-runtime-class="LmsRuntime" data-init="XBlockToXModuleShim" data-block-type="video" data-request-token="cd3bba7c68a511e7826c08002779ca96" data-runtime-version="1" data-usage-id="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd" data-type="Video" data-course-id="course-v1:edX+DemoX+Demo_Course">
<h3 class="hd hd-2">Welcome!</h3>
<div id="video_0b9e39477cf34507a7a48f74be381fdd" class="video closed is-captions-rendered is-initialized" data-metadata="{&quot;savedVideoPosition&quot;: 0.0, &quot;ytMetadataUrl&quot;: &quot;https://www.googleapis.com/youtube/v3/videos/&quot;, &quot;sources&quot;: [&quot;https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-H010000_100.mp4&quot;], &quot;speed&quot;: null, &quot;generalSpeed&quot;: 1.0, &quot;end&quot;: 0.0, &quot;sub&quot;: &quot;name_of_file&quot;, &quot;ytTestTimeout&quot;: 1500, &quot;transcriptLanguages&quot;: {&quot;en&quot;: &quot;English&quot;}, &quot;start&quot;: 0.0, &quot;ytKey&quot;: &quot;PUT_YOUR_API_KEY_HERE&quot;, &quot;poster&quot;: null, &quot;recordedYoutubeIsAvailable&quot;: true, &quot;ytApiUrl&quot;: &quot;https://www.youtube.com/iframe_api&quot;, &quot;saveStateUrl&quot;: &quot;/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/xmodule_handler/save_user_state&quot;, &quot;transcriptAvailableTranslationsUrl&quot;: &quot;/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/available_translations&quot;, &quot;transcriptLanguage&quot;: &quot;en&quot;, &quot;showCaptions&quot;: &quot;true&quot;, &quot;autohideHtml5&quot;: false, &quot;streams&quot;: &quot;1.00:b7xgknqkQk8&quot;, &quot;transcriptTranslationUrl&quot;: &quot;/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/translation/__lang__&quot;, &quot;captionDataDir&quot;: null, &quot;autoplay&quot;: false}" data-bumper-metadata="null" data-poster="null" tabindex="-1">
<div class="focus_grabber first" tabindex="-1"></div>
<div class="tc-wrapper">
<div class="video-wrapper">
<span tabindex="-1" class="spinner" aria-hidden="true" aria-label="Loading video player"></span>
<span tabindex="-1" class="btn-play fa fa-youtube-play fa-2x is-hidden" aria-hidden="true" aria-label="Play video"></span>
<div class="video-player-pre"></div>
<div class="video-player">
<iframe id="0b9e39477cf34507a7a48f74be381fdd" frameborder="0" allowfullscreen="1" title="YouTube video player" width="640" height="360" src="https://www.youtube.com/embed/b7xgknqkQk8?controls=0&amp;wmode=transparent&amp;rel=0&amp;showinfo=0&amp;enablejsapi=1&amp;modestbranding=1&amp;cc_load_policy=0&amp;html5=1&amp;origin=http%3A%2F%2Flocalhost%3A8000&amp;widgetid=1" tabindex="-1" style="height: 641.25px; width: 1140px; top: 19.875px; left: 0px;"></iframe>
<h4 class="hd hd-4 video-error is-hidden">No playable video sources found.</h4>
<h4 class="hd hd-4 video-hls-error is-hidden">
Your browser does not support this video format. Try using a different browser.
</h4>
</div>
<div class="video-player-post"></div>
<div class="closed-captions" style="display: none;"></div>
<div class="video-controls"><div class="slider ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" role="application" title="Video position. Press space to toggle playback" aria-disabled="false" tabindex="-1"><div class="ui-slider-handle progress-handle ui-state-default ui-corner-all" role="slider" aria-disabled="false" aria-valuetext="0 seconds" aria-valuemax="0" aria-valuemin="0" aria-valuenow="0" tabindex="0" aria-label="Video position. Press space to toggle playback"></div><div class="ui-slider-range ui-widget-header ui-slider-range-min"></div></div>
<div>
<div class="vcr"><button class="control video_control play" aria-disabled="false" title="Play"><span class="icon fa fa-play" aria-hidden="true"></span></button><div class="vidtime">0:00 / 0:00</div></div>
<div class="secondary-controls"><div class="speeds menu-container" role="application"><p class="sr instructions" id="speed-instructions-0b9e39477cf34507a7a48f74be381fdd">Press UP to enter the speed menu then use the UP and DOWN arrow keys to navigate the different speeds, then press ENTER to change to the selected speed.</p><button class="control speed-button" aria-disabled="false" aria-expanded="false" title="Video speed: 1.0x" aria-describedby="speed-instructions-0b9e39477cf34507a7a48f74be381fdd"><span><span class="icon fa fa-caret-right" aria-hidden="true"></span></span><span class="label" aria-hidden="true">Speed</span><span class="value">1.0x</span></button><ol class="video-speeds menu"><li data-speed="2.0"><button class="control speed-option" tabindex="-1" aria-pressed="false">2.0x</button></li><li data-speed="1.50"><button class="control speed-option" tabindex="-1" aria-pressed="false">1.50x</button></li><li data-speed="1.25"><button class="control speed-option" tabindex="-1" aria-pressed="false">1.25x</button></li><li data-speed="1.0" class="is-active"><button class="control speed-option" tabindex="-1" aria-pressed="true">1.0x</button></li><li data-speed="0.75"><button class="control speed-option" tabindex="-1" aria-pressed="false">0.75x</button></li><li data-speed="0.50"><button class="control speed-option" tabindex="-1" aria-pressed="false">0.50x</button></li></ol></div><div class="volume" role="application"><p class="sr instructions" id="volume-instructions-0b9e39477cf34507a7a48f74be381fdd">Click on this button to mute or unmute this video or press UP or DOWN buttons to increase or decrease volume level.</p><button class="control" aria-disabled="false" "="" aria-expanded="false" title="Adjust video volume" aria-describedby="volume-instructions-0b9e39477cf34507a7a48f74be381fdd"><span class="icon fa fa-volume-up" aria-hidden="true"></span></button><div class="sr video-live-region" aria-hidden="false" aria-live="polite">Maximum Volume.</div><div class="volume-slider-container" aria-hidden="true" title="Adjust video volume"><div class="volume-slider ui-slider ui-slider-vertical ui-widget ui-widget-content ui-corner-all" role="slider" aria-orientation="vertical" aria-valuemin="0" aria-valuemax="100" aria-valuenow="100" aria-label="Volume" aria-disabled="false"><div class="ui-slider-handle volume-handle ui-state-default ui-corner-all" tabindex="-1" style="bottom: 100%;"></div><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="height: 100%;"></div></div></div></div><button class="control quality-control is-hidden" aria-disabled="false" title="High Definition"><span class="icon icon-hd" aria-hidden="true">HD</span><span class="sr text-translation">High Definition</span>&nbsp;<span class="sr control-text">off</span></button><button class="control add-fullscreen" aria-disabled="false" title="Fill browser"><span class="icon fa fa-arrows-alt" aria-hidden="true"></span></button><div class="grouped-controls"><button class="control toggle-captions" aria-disabled="false" title="Turn on closed captioning"><span class="icon fa fa-cc" aria-hidden="true"></span></button><button class="control toggle-transcript" aria-disabled="false" title="Turn on transcripts"><span class="icon fa fa-quote-left" aria-hidden="true"></span></button></div></div>
</div>
</div>
</div>
<div class="subtitles" role="region" id="transcript-0b9e39477cf34507a7a48f74be381fdd" aria-label="Activating a link in this group will skip to the corresponding point in the video." style="max-height: 639.5px;"><h3 id="transcript-label-0b9e39477cf34507a7a48f74be381fdd" class="transcript-title sr">Video transcript</h3><ol id="transcript-captions-0b9e39477cf34507a7a48f74be381fdd" class="subtitles-menu" lang="en"><li class="spacing" style="height: 340.5px;"><a href="#transcript-end-0b9e39477cf34507a7a48f74be381fdd" id="transcript-start-0b9e39477cf34507a7a48f74be381fdd" class="transcript-start" lang="en">Start of transcript. Skip to the end.</a></li><li><span role="link" data-index="0" data-start="0" tabindex="0"></span></li><li><span role="link" data-index="1" data-start="650" tabindex="0">ERIC: Hi, and welcome to the edX demonstration course.</span></li><li><span role="link" data-index="2" data-start="3920" tabindex="0">I'm Eric, and I'm here to help you get a better understanding of how fun and</span></li><li><span role="link" data-index="3" data-start="7450" tabindex="0">easy it is to take an edX course.</span></li><li><span role="link" data-index="4" data-start="10080" tabindex="0">So, let's get started.</span></li><li><span role="link" data-index="5" data-start="11700" tabindex="0">Let me show you how all the parts work together.</span></li><li><span role="link" data-index="6" data-start="13950" tabindex="0">If at any time you want to skip this video and get a firsthand experience</span></li><li><span role="link" data-index="7" data-start="18000" tabindex="0">of the demonstration course, all you have to do is click</span></li><li><span role="link" data-index="8" data-start="21020" tabindex="0">week one to the left.</span></li><li><span role="link" data-index="9" data-start="22710" tabindex="0">Don't worry, I won't be offended.</span></li><li><span role="link" data-index="10" data-start="25050" tabindex="0">Let's first look along the top of the page.</span></li><li><span role="link" data-index="11" data-start="27730" tabindex="0">This area's called the navigation bar.</span></li><li><span role="link" data-index="12" data-start="29990" tabindex="0">Click on Courseware to interact with your course.</span></li><li><span role="link" data-index="13" data-start="32950" tabindex="0">Course Info contains course announcements and updates from the</span></li><li><span role="link" data-index="14" data-start="36190" tabindex="0">course staff.</span></li><li><span role="link" data-index="15" data-start="37390" tabindex="0">If your course has digital textbooks, this is where you'll find them.</span></li><li><span role="link" data-index="16" data-start="41130" tabindex="0">Discussion is where you can communicate with the fellow students</span></li><li><span role="link" data-index="17" data-start="43720" tabindex="0">on topics and projects, and even occasionally with the course staff.</span></li><li><span role="link" data-index="18" data-start="47380" tabindex="0">When available, the course Wiki acts as a knowledge base for your course.</span></li><li><span role="link" data-index="19" data-start="51430" tabindex="0">It's a helpful resource.</span></li><li><span role="link" data-index="20" data-start="53000" tabindex="0">Clicking on Progress will reveal how well you're doing in</span></li><li><span role="link" data-index="21" data-start="55980" tabindex="0">your studies and exams.</span></li><li><span role="link" data-index="22" data-start="57790" tabindex="0">When you take the demo course, we'll provide you with a simple progress</span></li><li><span role="link" data-index="23" data-start="61000" tabindex="0">report matching your results.</span></li><li><span role="link" data-index="24" data-start="64590" tabindex="0">Let's look at the left column now.</span></li><li><span role="link" data-index="25" data-start="66440" tabindex="0">The left side of the Courseware screen contains a course navigation bar</span></li><li><span role="link" data-index="26" data-start="69710" tabindex="0">starting from the top down.</span></li><li><span role="link" data-index="27" data-start="71790" tabindex="0">Many courses start with an overview of edX and an introduction to the course.</span></li><li><span role="link" data-index="28" data-start="76110" tabindex="0">Below the overview are segments of the course, which are released as the</span></li><li><span role="link" data-index="29" data-start="79570" tabindex="0">course progresses.</span></li><li><span role="link" data-index="30" data-start="81080" tabindex="0">Typically, an edX course is delivered in week by week segments, and have</span></li><li><span role="link" data-index="31" data-start="84950" tabindex="0">lessons and homeworks you need to complete.</span></li><li><span role="link" data-index="32" data-start="87580" tabindex="0">Many courses are 10 to 12 weeks long.</span></li><li><span role="link" data-index="33" data-start="90270" tabindex="0">We made this demonstration course three weeks for simplicity.</span></li><li><span role="link" data-index="34" data-start="94920" tabindex="0">Let's now look at the learning sequence.</span></li><li><span role="link" data-index="35" data-start="97070" tabindex="0">Each item in the left column reveals a corresponding learning sequence.</span></li><li><span role="link" data-index="36" data-start="100920" tabindex="0">Work your way from left to right.</span></li><li><span role="link" data-index="37" data-start="103600" tabindex="0">Learning sequences can contain lectures, exercises, and interactive</span></li><li><span role="link" data-index="38" data-start="107200" tabindex="0">lessons that you can complete on your own schedule.</span></li><li><span role="link" data-index="39" data-start="111090" tabindex="0">Next, let's discover what makes edX fun and unique, its interactivity.</span></li><li><span role="link" data-index="40" data-start="116760" tabindex="0">edX prides itself on its interactive lessons, which can include</span></li><li><span role="link" data-index="41" data-start="120410" tabindex="0">demonstrations, visualizations, and virtual environments.</span></li><li><span role="link" data-index="42" data-start="124600" tabindex="0">You can try out some in the demo course.</span></li><li><span role="link" data-index="43" data-start="127190" tabindex="0">Interactive lessons are often graded and contribute to your final grade.</span></li><li><span role="link" data-index="44" data-start="131590" tabindex="0">While the edX platform also supports more traditional question formats like</span></li><li><span role="link" data-index="45" data-start="135480" tabindex="0">multiple choice, our classes also test your understanding by allowing you to</span></li><li><span role="link" data-index="46" data-start="139985" tabindex="0">use labs and simulators, and even asking you to write an essay.</span></li><li><span role="link" data-index="47" data-start="143930" tabindex="0">Example of these graded interactions are in the demo course.</span></li><li><span role="link" data-index="48" data-start="147400" tabindex="0">You can see how the questions the course uses for gauging your learning</span></li><li><span role="link" data-index="49" data-start="150640" tabindex="0">process can even be auto graded, or detailed feedback given in real time.</span></li><li><span role="link" data-index="50" data-start="155620" tabindex="0">So while an edX course might be rigorous, the tools and visualizations</span></li><li><span role="link" data-index="51" data-start="159350" tabindex="0">are really fun and truly interactive.</span></li><li><span role="link" data-index="52" data-start="162280" tabindex="0">Finally, there are many ways successful students like to you</span></li><li><span role="link" data-index="53" data-start="165560" tabindex="0">interact to get the most out of a course.</span></li><li><span role="link" data-index="54" data-start="167740" tabindex="0">Beyond the discussion forums, you can meet and engage with fellow classmates</span></li><li><span role="link" data-index="55" data-start="171560" tabindex="0">through a local meet up-- which we highly recommend--</span></li><li><span role="link" data-index="56" data-start="174050" tabindex="0">a Google Hangout, or even invite students to join you via Twitter,</span></li><li><span role="link" data-index="57" data-start="177830" tabindex="0">Facebook, or other social networks.</span></li><li><span role="link" data-index="58" data-start="179820" tabindex="0">It's a proven fact that if you engage with others while taking a course,</span></li><li><span role="link" data-index="59" data-start="182970" tabindex="0">you're more likely to succeed.</span></li><li><span role="link" data-index="60" data-start="184990" tabindex="0">Now that you've seen how easy it is to take an edX course, experience this</span></li><li><span role="link" data-index="61" data-start="188110" tabindex="0">demonstration course.</span></li><li><span role="link" data-index="62" data-start="189070" tabindex="0">Firsthand all you have to do is click on week one to the left and you can</span></li><li><span role="link" data-index="63" data-start="192980" tabindex="0">get started.</span></li><li><span role="link" data-index="64" data-start="194230" tabindex="0"></span></li><li class="spacing" style="height: 340.5px;"><a href="#transcript-start-0b9e39477cf34507a7a48f74be381fdd" id="transcript-end-0b9e39477cf34507a7a48f74be381fdd" class="transcript-end" lang="en">End of transcript. Skip to the start.</a></li></ol></div></div>
<div class="focus_grabber last" tabindex="-1"></div>
<h3 class="hd hd-4 downloads-heading sr" id="video-download-transcripts_0b9e39477cf34507a7a48f74be381fdd">Downloads and transcripts</h3>
<div class="wrapper-downloads" role="region" aria-labelledby="video-download-transcripts_0b9e39477cf34507a7a48f74be381fdd">
<div class="wrapper-download-video">
<h4 class="hd hd-5">Video</h4>
<a class="btn-link video-sources video-download-button" href="https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-H010000_100.mp4">
Download video file
</a>
</div>
<div class="wrapper-download-transcripts">
<h4 class="hd hd-5">Transcripts</h4>
<ul class="list-download-transcripts">
<li class="transcript-option">
<a class="btn btn-link" href="/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/download" data-value="srt">Download SubRip (.srt) file</a>
</li>
<li class="transcript-option">
<a class="btn btn-link" href="/courses/course-v1:edX+DemoX+Demo_Course/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd/handler/transcript/download" data-value="txt">Download Text (.txt) file</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="wrap-instructor-info">
<a class="instructor-info-action" href="#0b9e39477cf34507a7a48f74be381fdd_debug" id="0b9e39477cf34507a7a48f74be381fdd_trig">Staff Debug Info</a>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" id="0b9e39477cf34507a7a48f74be381fdd_xqa-modal" class="modal xqa-modal">
<div class="inner-wrapper">
<header>
<h2>Your Platform Name Here Content Quality Assessment</h2>
</header>
<form id="0b9e39477cf34507a7a48f74be381fdd_xqa_form" class="xqa_form">
<label for="0b9e39477cf34507a7a48f74be381fdd_xqa_entry">Comment</label>
<input tabindex="0" id="0b9e39477cf34507a7a48f74be381fdd_xqa_entry" type="text" placeholder="comment">
<label for="0b9e39477cf34507a7a48f74be381fdd_xqa_tag">Tag</label>
<span style="color:black;vertical-align: -10pt">Optional tag (eg "done" or "broken"):&nbsp; </span>
<input id="0b9e39477cf34507a7a48f74be381fdd_xqa_tag" type="text" placeholder="tag" style="width:80px;display:inline">
<div class="submit">
<button name="submit" type="submit">Add comment</button>
</div>
<hr>
<div id="0b9e39477cf34507a7a48f74be381fdd_xqa_log_data"></div>
</form>
</div>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" class="modal staff-modal" id="0b9e39477cf34507a7a48f74be381fdd_debug">
<div class="inner-wrapper">
<header>
<h2>Staff Debug</h2>
</header>
<hr>
<div class="staff_actions">
<h3>Actions</h3>
<div>
<label for="sd_fu_0b9e39477cf34507a7a48f74be381fdd">Username:</label>
<input type="text" tabindex="0" id="sd_fu_0b9e39477cf34507a7a48f74be381fdd" placeholder="AndyA">
</div>
<div data-location="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd" data-location-name="0b9e39477cf34507a7a48f74be381fdd">
[
<button type="button" class="btn-link staff-debug-sdelete">Delete Learner's State</button>
]
</div>
<div id="result_0b9e39477cf34507a7a48f74be381fdd"></div>
</div>
<div class="staff_info" style="display:block">
is_released = <font color="red">Yes!</font>
location = block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd
<table summary="Module Fields">
<tbody><tr><th>Module Fields</th></tr>
<tr><td style="width:25%">transcript_language</td><td><pre style="display:inline-block; margin: 0;">en</pre></td></tr>
<tr><td style="width:25%">group_access</td><td><pre style="display:inline-block; margin: 0;">{}</pre></td></tr>
<tr><td style="width:25%">graded</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">annotation_token_secret</td><td><pre style="display:inline-block; margin: 0;">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</pre></td></tr>
<tr><td style="width:25%">youtube_id_1_25</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">transcript_download_format</td><td><pre style="display:inline-block; margin: 0;">srt</pre></td></tr>
<tr><td style="width:25%">giturl</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">edxnotes</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">show_captions</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">source_file</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">handout</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">course_edit_method</td><td><pre style="display:inline-block; margin: 0;">Studio</pre></td></tr>
<tr><td style="width:25%">default_tab</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">bumper_do_not_show_again</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">in_entrance_exam</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">showanswer</td><td><pre style="display:inline-block; margin: 0;">attempted</pre></td></tr>
<tr><td style="width:25%">display_name</td><td><pre style="display:inline-block; margin: 0;">Welcome!</pre></td></tr>
<tr><td style="width:25%">sub</td><td><pre style="display:inline-block; margin: 0;">name_of_file</pre></td></tr>
<tr><td style="width:25%">video_speed_optimizations</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">graceperiod</td><td><pre style="display:inline-block; margin: 0;">5:00:00</pre></td></tr>
<tr><td style="width:25%">speed</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">format</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">due</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">edx_video_id</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">start</td><td><pre style="display:inline-block; margin: 0;">1970-01-01 05:00:00+00:00</pre></td></tr>
<tr><td style="width:25%">youtube_id_1_0</td><td><pre style="display:inline-block; margin: 0;">b7xgknqkQk8</pre></td></tr>
<tr><td style="width:25%">only_on_web</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">youtube_id_1_5</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">days_early_for_beta</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">start_time</td><td><pre style="display:inline-block; margin: 0;">0:00:00</pre></td></tr>
<tr><td style="width:25%">visible_to_staff_only</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">download_video</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">parent</td><td><pre style="display:inline-block; margin: 0;">block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc</pre></td></tr>
<tr><td style="width:25%">tags</td><td><pre style="display:inline-block; margin: 0;">[]</pre></td></tr>
<tr><td style="width:25%">matlab_api_key</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">xqa_key</td><td><pre style="display:inline-block; margin: 0;">qaijS3UatK020Wc0sfCtFe0V6jpB4d64</pre></td></tr>
<tr><td style="width:25%">youtube_is_available</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">html5_sources</td><td><pre style="display:inline-block; margin: 0;">[u'https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-H010000_100.mp4']</pre></td></tr>
<tr><td style="width:25%">global_speed</td><td><pre style="display:inline-block; margin: 0;">1.0</pre></td></tr>
<tr><td style="width:25%">annotation_storage_url</td><td><pre style="display:inline-block; margin: 0;">http://your_annotation_storage.com</pre></td></tr>
<tr><td style="width:25%">track</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">use_latex_compiler</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">video_bumper</td><td><pre style="display:inline-block; margin: 0;">{}</pre></td></tr>
<tr><td style="width:25%">show_correctness</td><td><pre style="display:inline-block; margin: 0;">always</pre></td></tr>
<tr><td style="width:25%">youtube_id_0_75</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">static_asset_path</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">hide_from_toc</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">bumper_last_view_date</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">show_reset_button</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">name</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">license</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">rerandomize</td><td><pre style="display:inline-block; margin: 0;">never</pre></td></tr>
<tr><td style="width:25%">user_partitions</td><td><pre style="display:inline-block; margin: 0;">[]</pre></td></tr>
<tr><td style="width:25%">chrome</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">download_track</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">edxnotes_visibility</td><td><pre style="display:inline-block; margin: 0;">True</pre></td></tr>
<tr><td style="width:25%">source</td><td><pre style="display:inline-block; margin: 0;"></pre></td></tr>
<tr><td style="width:25%">transcripts</td><td><pre style="display:inline-block; margin: 0;">{}</pre></td></tr>
<tr><td style="width:25%">max_attempts</td><td><pre style="display:inline-block; margin: 0;">None</pre></td></tr>
<tr><td style="width:25%">saved_video_position</td><td><pre style="display:inline-block; margin: 0;">0:00:00</pre></td></tr>
<tr><td style="width:25%">self_paced</td><td><pre style="display:inline-block; margin: 0;">False</pre></td></tr>
<tr><td style="width:25%">end_time</td><td><pre style="display:inline-block; margin: 0;">0:00:00</pre></td></tr>
</tbody></table>
<table>
<tbody><tr><th>XML attributes</th></tr>
</tbody></table>
category = VideoModuleWithMixins
</div>
</div>
</div>
<div aria-hidden="true" role="dialog" tabindex="-1" class="modal history-modal" id="0b9e39477cf34507a7a48f74be381fdd_history">
<div class="inner-wrapper">
<header>
<h2>Submission History Viewer</h2>
</header>
<form id="0b9e39477cf34507a7a48f74be381fdd_history_form">
<label for="0b9e39477cf34507a7a48f74be381fdd_history_student_username">User:</label>
<input tabindex="0" id="0b9e39477cf34507a7a48f74be381fdd_history_student_username" type="text" placeholder="">
<input type="hidden" id="0b9e39477cf34507a7a48f74be381fdd_history_location" value="block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd">
<div class="submit">
<button name="submit" type="submit">View History</button>
</div>
</form>
<div id="0b9e39477cf34507a7a48f74be381fdd_history_text" class="staff_info" style="display:block">
</div>
</div>
</div>
<div id="0b9e39477cf34507a7a48f74be381fdd_setup"></div>
<script type="text/javascript">
// assumes courseware.html's loaded this method.
$(function () {
setup_debug('0b9e39477cf34507a7a48f74be381fdd',
null,
{
'location': 'block\u002Dv1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd',
'xqa_key': 'qaijS3UatK020Wc0sfCtFe0V6jpB4d64',
'category': 'VideoModuleWithMixins',
'user': 'AndyA'
}
);
});
</script>
</div>
</div>
</div>
</div>
<nav class="sequence-bottom" aria-label="Section">
<button class="sequence-nav-button button-previous disabled" disabled="disabled">
<span class="icon fa fa-chevron-prev" aria-hidden="true"></span>
<span>Previous</span>
</button>
<button class="sequence-nav-button button-next">
<span>Next</span>
<span class="icon fa fa-chevron-next" aria-hidden="true"></span>
</button>
</nav>
</div>
</div>
</main>
</div>
</section>
</%block>
...@@ -998,7 +998,10 @@ if settings.DEBUG: ...@@ -998,7 +998,10 @@ if settings.DEBUG:
settings.PROFILE_IMAGE_BACKEND['options']['base_url'], settings.PROFILE_IMAGE_BACKEND['options']['base_url'],
document_root=settings.PROFILE_IMAGE_BACKEND['options']['location'] document_root=settings.PROFILE_IMAGE_BACKEND['options']['location']
) )
# TODO: re-enable this after removing the URL below
# urlpatterns += url(r'^template/(?P<template>.+)$', 'openedx.core.djangoapps.debug.views.show_reference_template')
# TODO: DO NOT MERGE
urlpatterns += url(r'^template/(?P<template>.+)$', 'openedx.core.djangoapps.debug.views.show_reference_template'), urlpatterns += url(r'^template/(?P<template>.+)$', 'openedx.core.djangoapps.debug.views.show_reference_template'),
if 'debug_toolbar' in settings.INSTALLED_APPS: if 'debug_toolbar' in settings.INSTALLED_APPS:
......
...@@ -4,9 +4,15 @@ These views will NOT be shown on production: trying to access them will result ...@@ -4,9 +4,15 @@ These views will NOT be shown on production: trying to access them will result
in a 404 error. in a 404 error.
""" """
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound
from mako.exceptions import TopLevelLookupException from django.utils.translation import ugettext as _
from edxmako.shortcuts import render_to_response from edxmako.shortcuts import render_to_response
from mako.exceptions import TopLevelLookupException
from openedx.core.djangoapps.util.user_messages import (
register_error_message,
register_info_message,
register_success_message,
register_warning_message,
)
def show_reference_template(request, template): def show_reference_template(request, template):
...@@ -23,13 +29,22 @@ def show_reference_template(request, template): ...@@ -23,13 +29,22 @@ def show_reference_template(request, template):
""" """
try: try:
uses_bootstrap = u'/bootstrap/' in request.path uses_bootstrap = u'/bootstrap/' in request.path
uses_pattern_library = not uses_bootstrap uses_pattern_library = u'/pattern-library/' in request.path
is_v1 = u'/v1/' in request.path
context = { context = {
"disable_courseware_js": True, "disable_courseware_js": not is_v1,
"uses_pattern_library": uses_pattern_library, "uses_pattern_library": uses_pattern_library,
"uses_bootstrap": uses_bootstrap, "uses_bootstrap": uses_bootstrap,
} }
context.update(request.GET.dict()) context.update(request.GET.dict())
# Add some messages to the course skeleton pages
if u'course-skeleton.html' in request.path:
register_info_message(request, _('This is a test message'))
register_success_message(request, _('This is a success message'))
register_warning_message(request, _('This is a test warning'))
register_error_message(request, _('This is a test error'))
return render_to_response(template, context) return render_to_response(template, context)
except TopLevelLookupException: except TopLevelLookupException:
return HttpResponseNotFound("Couldn't find template {template}".format(template=template)) return HttpResponseNotFound("Couldn't find template {template}".format(template=template))
"""
Unit tests for user messages.
"""
import ddt
from unittest import TestCase
from django.contrib.messages.middleware import MessageMiddleware
from django.test import RequestFactory
from openedx.core.djangolib.markup import HTML, Text
from student.tests.factories import UserFactory
from ..user_messages import (
register_error_message,
register_info_message,
register_success_message,
register_user_message,
register_warning_message,
user_messages,
UserMessageType,
)
TEST_MESSAGE = 'Test message'
@ddt.ddt
class UserMessagesTestCase(TestCase):
"""
Unit tests for user messages.
"""
def setUp(self):
super(UserMessagesTestCase, self).setUp()
self.student = UserFactory.create()
self.request = RequestFactory().request()
self.request.session = {}
self.request.user = self.student
MessageMiddleware().process_request(self.request)
@ddt.data(
('Rock & Roll', 'Rock &amp; Roll'),
(Text('Rock & Roll'), 'Rock &amp; Roll'),
(HTML('<p>Hello, world!</p>'), '<p>Hello, world!</p>')
)
@ddt.unpack
def test_message_escaping(self, message, expected_message_html):
"""
Verifies that a user message is escaped correctly.
"""
register_user_message(self.request, UserMessageType.INFO, message)
messages = list(user_messages(self.request))
self.assertEqual(len(messages), 1)
self.assertEquals(messages[0].message_html, expected_message_html)
@ddt.data(
(UserMessageType.ERROR, 'alert-danger', 'fa fa-warning'),
(UserMessageType.INFO, 'alert-info', 'fa fa-bullhorn'),
(UserMessageType.SUCCESS, 'alert-success', 'fa fa-check-circle'),
(UserMessageType.WARNING, 'alert-warning', 'fa fa-warning'),
)
@ddt.unpack
def test_message_icon(self, message_type, expected_css_class, expected_icon_class):
"""
Verifies that a user message returns the correct CSS and icon classes.
"""
register_user_message(self.request, message_type, TEST_MESSAGE)
messages = list(user_messages(self.request))
self.assertEqual(len(messages), 1)
self.assertEquals(messages[0].css_class, expected_css_class)
self.assertEquals(messages[0].icon_class, expected_icon_class)
@ddt.data(
(register_error_message, UserMessageType.ERROR),
(register_info_message, UserMessageType.INFO),
(register_success_message, UserMessageType.SUCCESS),
(register_warning_message, UserMessageType.WARNING),
)
@ddt.unpack
def test_message_type(self, register_message_function, expected_message_type):
"""
Verifies that each user message function returns the correct type.
"""
register_message_function(self.request, TEST_MESSAGE)
messages = list(user_messages(self.request))
self.assertEqual(len(messages), 1)
self.assertEquals(messages[0].type, expected_message_type)
"""
Support for per-request messages to be shown to the user.
These utilities are based upon the Django message framework, and allow
code to register messages to be shown to the user on their next page
view. These messages are shown in a page banner which is supported on
all pages that utilize the main.html template.
There are two common use cases:
- register a message before rendering a view, in which case the message
will be shown on the resulting page
- register a message before posting or redirecting. In these situations
the message will be shown on the subsequent page. This is typically
used to show a success message to the use.
"""
from enum import Enum
from django.contrib import messages
from openedx.core.djangolib.markup import Text
EDX_USER_MESSAGE_TAG = 'edx-user-message'
class UserMessageType(Enum):
"""
An enumeration of the types of user messages.
"""
INFO = messages.constants.INFO
SUCCESS = messages.constants.SUCCESS
WARNING = messages.constants.WARNING
ERROR = messages.constants.ERROR
CSS_CLASSES = {
UserMessageType.INFO: 'alert-info',
UserMessageType.SUCCESS: 'alert-success',
UserMessageType.WARNING: 'alert-warning',
UserMessageType.ERROR: 'alert-danger',
}
ICON_CLASSES = {
UserMessageType.INFO: 'fa fa-bullhorn',
UserMessageType.SUCCESS: 'fa fa-check-circle',
UserMessageType.WARNING: 'fa fa-warning',
UserMessageType.ERROR: 'fa fa-warning',
}
class UserMessage():
"""
Representation of a message to be shown to a user
"""
def __init__(self, type, message_html):
assert isinstance(type, UserMessageType)
self.type = type
self.message_html = message_html
@property
def css_class(self):
"""
Returns the CSS class to be used on the message element.
"""
return CSS_CLASSES[self.type]
@property
def icon_class(self):
"""
Returns the CSS icon class representing the message type.
Returns:
"""
return ICON_CLASSES[self.type]
def register_user_message(request, message_type, message, title=None):
"""
Register a message to be shown to the user in the next page.
"""
assert isinstance(message_type, UserMessageType)
messages.add_message(request, message_type.value, Text(message), extra_tags=EDX_USER_MESSAGE_TAG)
def register_info_message(request, message, **kwargs):
"""
Registers an information message to be shown to the user.
"""
register_user_message(request, UserMessageType.INFO, message, **kwargs)
def register_success_message(request, message, **kwargs):
"""
Registers a success message to be shown to the user.
"""
register_user_message(request, UserMessageType.SUCCESS, message, **kwargs)
def register_warning_message(request, message, **kwargs):
"""
Registers a warning message to be shown to the user.
"""
register_user_message(request, UserMessageType.WARNING, message, **kwargs)
def register_error_message(request, message, **kwargs):
"""
Registers an error message to be shown to the user.
"""
register_user_message(request, UserMessageType.ERROR, message, **kwargs)
def user_messages(request):
"""
Returns any outstanding user messages.
Note: this function also marks these messages as being complete
so they won't be returned in the next request.
"""
def _get_message_type_for_level(level):
"""
Returns the user message type associated with a level.
"""
for __, type in UserMessageType.__members__.items():
if type.value is level:
return type
raise 'Unable to find UserMessageType for level {level}'.format(level=level)
def _create_user_message(message):
"""
Creates a user message from a Django message.
"""
return UserMessage(
type=_get_message_type_for_level(message.level),
message_html=unicode(message.message),
)
django_messages = messages.get_messages(request)
return (_create_user_message(message) for message in django_messages if EDX_USER_MESSAGE_TAG in message.tags)
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