Changed "Status Page" -> "Page".
UX:
support for displaying built-in tabs
restored drag and drop on Studio Pages
additional styling for fixed state on Studio Pages
add a new page action added to bottom of Studio Pages
Dev
changes for viewing tabs in studio,
refactored the tab code,
decoupled the code from django layer.
is_hideable flag on tabs
get_discussion method is needed to continue to support
external_discussion links for now since used by 6.00x course.
override the __eq__ operator to support comparing with
dict-type tabs.
Test
moved test code to common,
added acceptance test for built-in pages
added additional unit tests for tabs.
changed test_split_modulestore test to support serializing objects
that are fields in a Course.
Env:
updated environment configuration settings so they are
consistent for both cms and lms.
160 lines
6.4 KiB
HTML
160 lines
6.4 KiB
HTML
<%inherit file="base.html" />
|
|
<%namespace name='static' file='static_content.html'/>
|
|
|
|
<%!
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext as _
|
|
import json
|
|
%>
|
|
<%block name="title">${_("Course Export")}</%block>
|
|
<%block name="bodyclass">is-signedin course tools view-export</%block>
|
|
|
|
<%block name="jsextra">
|
|
% if in_err:
|
|
<script type='text/javascript'>
|
|
var hasUnit = ${json.dumps(bool(unit))},
|
|
editUnitUrl = "${edit_unit_url or ""}",
|
|
courseHomeUrl = "${course_home_url or ""}",
|
|
errMsg = ${json.dumps(raw_err_msg or "")};
|
|
|
|
require(["domReady!", "gettext", "js/views/feedback_prompt"], function(doc, gettext, PromptView) {
|
|
var dialog;
|
|
if(hasUnit) {
|
|
dialog = new PromptView({
|
|
title: gettext('There has been an error while exporting.'),
|
|
message: gettext("There has been a failure to export to XML at least one component. It is recommended that you go to the edit page and repair the error before attempting another export. Please check that all components on the page are valid and do not display any error messages."),
|
|
intent: "error",
|
|
actions: {
|
|
primary: {
|
|
text: gettext('Correct failed component'),
|
|
click: function(view) {
|
|
view.hide();
|
|
document.location = editUnitUrl;
|
|
}
|
|
},
|
|
secondary: {
|
|
text: gettext('Return to Export'),
|
|
click: function(view) {
|
|
view.hide();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
var msg = "<p>" + gettext("There has been a failure to export your course to XML. Unfortunately, we do not have specific enough information to assist you in identifying the failed component. It is recommended that you inspect your courseware to identify any components in error and try again.") + "</p><p>" + gettext("The raw error message is:") + "</p>" + errMsg;
|
|
dialog = new PromptView({
|
|
title: gettext('There has been an error with your export.'),
|
|
message: msg,
|
|
intent: "error",
|
|
actions: {
|
|
primary: {
|
|
text: gettext('Yes, take me to the main course page'),
|
|
click: function(view) {
|
|
view.hide();
|
|
document.location = courseHomeUrl;
|
|
}
|
|
},
|
|
secondary: {
|
|
text: gettext('Cancel'),
|
|
click: function(view) {
|
|
view.hide();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// The CSS animation for the dialog relies on the 'js' class
|
|
// being on the body. This happens after this JavaScript is executed,
|
|
// causing a "bouncing" of the dialog after it is initially shown.
|
|
// As a workaround, add this class first.
|
|
$('body').addClass('js');
|
|
dialog.show();
|
|
|
|
});
|
|
</script>
|
|
%endif
|
|
</%block>
|
|
|
|
<%block name="content">
|
|
<div class="wrapper-mast wrapper">
|
|
<header class="mast has-subtitle">
|
|
<h1 class="page-header">
|
|
<small class="subtitle">${_("Tools")}</small>
|
|
<span class="sr">> </span>${_("Course Export")}
|
|
</h1>
|
|
</header>
|
|
</div>
|
|
|
|
<div class="wrapper-content wrapper">
|
|
<section class="content">
|
|
<article class="content-primary" role="main">
|
|
|
|
<div class="introduction">
|
|
<h2 class="title">${_("About Exporting Courses")}</h2>
|
|
<div class="copy">
|
|
## Translators: ".tar.gz" is a file extension, and should not be translated
|
|
<p>${_("You can export courses and edit them outside of Studio. The exported file is a .tar.gz file (that is, a .tar file compressed with GNU Zip) that contains the course structure and content. You can also re-import courses that you've exported.").format(em_start='<strong>', em_end="</strong>")}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="export-controls">
|
|
<h2 class="title">${_("Export My Course Content")}</h2>
|
|
|
|
<ul class="list-actions">
|
|
<li class="item-action">
|
|
<a class="action action-export action-primary" href="${export_url}">
|
|
<i class="icon-download"></i>
|
|
<span class="copy">${_("Export Course Content")}</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="export-contents">
|
|
<div class="export-includes">
|
|
<h3 class="title-3">${_("Data {em_start}exported with{em_end} your course:").format(em_start='<strong>', em_end="</strong>")}</h3>
|
|
<ul class="list-details list-export-includes">
|
|
<li class="item-detail">${_("Course Content (all Sections, Sub-sections, and Units)")}</li>
|
|
<li class="item-detail">${_("Course Structure")}</li>
|
|
<li class="item-detail">${_("Individual Problems")}</li>
|
|
<li class="item-detail">${_("Pages")}</li>
|
|
<li class="item-detail">${_("Course Assets")}</li>
|
|
<li class="item-detail">${_("Course Settings")}</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="export-excludes">
|
|
<h3 class="title-3">${_("Data {em_start}not exported{em_end} with your course:").format(em_start='<strong>', em_end="</strong>")}</h3>
|
|
<ul class="list-details list-export-excludes">
|
|
<li class="item-detail">${_("User Data")}</li>
|
|
<li class="item-detail">${_("Course Team Data")}</li>
|
|
<li class="item-detail">${_("Forum/discussion Data")}</li>
|
|
<li class="item-detail">${_("Certificates")}</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</article>
|
|
|
|
<aside class="content-supplementary" role="complimentary">
|
|
<div class="bit">
|
|
<h3 class="title-3">${_("Why export a course?")}</h3>
|
|
<p>${_("You may want to edit the XML in your course directly, outside of Studio. You may want to create a backup copy of your course. Or, you may want to create a copy of your course that you can later import into another course instance and customize.")}</p>
|
|
</div>
|
|
|
|
<div class="bit">
|
|
<h3 class="title-3">${_("What content is exported?")}</h3>
|
|
|
|
<p>${_("Only the course content and structure (including sections, subsections, and units) are exported. Other data, including student data, grading information, discussion forum data, course settings, and course team information, is not exported.")}</p>
|
|
</div>
|
|
|
|
<div class="bit">
|
|
<h3 class="title-3">${_("Opening the downloaded file")}</h3>
|
|
## Translators: ".tar.gz" is a file extension, and should not be translated
|
|
<p>${_("Use an archive program to extract the data from the .tar.gz file. Extracted data includes the course.xml file, as well as subfolders that contain course content.")}</p>
|
|
</div>
|
|
</aside>
|
|
</section>
|
|
</div>
|
|
</%block>
|