import.html 11.2 KB
Newer Older
1
<%inherit file="base.html" />
2 3 4 5 6 7 8 9
<%def name="online_help_token()">
<% 
if library:
    return "import_library" 
else:
    return "import_course"
%>
</%def>
10
<%namespace name='static' file='static_content.html'/>
11 12
<%!
  from django.utils.translation import ugettext as _
13
  import json
14
%>
15 16 17 18 19 20 21
<%block name="title">
%if library:
    ${_("Library Import")}
%else:
    ${_("Course Import")}
%endif
</%block>
22
<%block name="bodyclass">is-signedin course tools view-import</%block>
23 24

<%block name="content">
25
<div class="wrapper-mast wrapper">
26
  <header class="mast has-subtitle">
Brian Talbot committed
27
    <h1 class="page-header">
David Baumgold committed
28
      <small class="subtitle">${_("Tools")}</small>
29 30 31 32 33 34
      <span class="sr">&gt; </span>
        %if library:
            ${_("Library Import")}
        %else:
            ${_("Course Import")}
        %endif
Brian Talbot committed
35
    </h1>
36 37 38
  </header>
</div>

39 40 41 42
<div class="wrapper-content wrapper">
  <section class="content">
    <article class="content-primary" role="main">
      <div class="introduction">
43 44 45 46 47 48 49 50 51 52 53
        ## Translators: ".tar.gz" is a file extension, and files with that extension are called "gzipped tar files": these terms should not be translated
        %if library:
            <p>${_("Be sure you want to import a library before continuing. The contents of the imported library will replace the contents of the existing library. {em_start}You cannot undo a library import{em_end}. Before you proceed, we recommend that you export the current library, so that you have a backup copy of it.").format(em_start='<strong>', em_end="</strong>")}</p>
            <p>${_("The library that you import must be in a .tar.gz file (that is, a .tar file compressed with GNU Zip). This .tar.gz file must contain a library.xml file. It may also contain other files.")}</p>
            <p>${_("The import process has five stages. During the first two stages, you must stay on this page. You can leave this page after the Unpacking stage has completed. We recommend, however, that you don't make important changes to your library until the import operation has completed.")}</p>
        %else:
            <p>${_("Be sure you want to import a course before continuing. The contents of the imported course will replace the contents of the existing course. {em_start}You cannot undo a course import{em_end}. Before you proceed, we recommend that you export the current course, so that you have a backup copy of it.").format(em_start='<strong>', em_end="</strong>")}</p>
            <p>${_("The course that you import must be in a .tar.gz file (that is, a .tar file compressed with GNU Zip). This .tar.gz file must contain a course.xml file. It may also contain other files.")}</p>
            <p>${_("The import process has five stages. During the first two stages, you must stay on this page. You can leave this page after the Unpacking stage has completed. We recommend, however, that you don't make important changes to your course until the import operation has completed.")}</p>
        %endif

Tom Giannattasio committed
54
      </div>
55

56
      <form id="fileupload" method="post" enctype="multipart/form-data" class="import-form">
57

58
        ## Translators: ".tar.gz" is a file extension, and files with that extension are called "gzipped tar files": these terms should not be translated
59 60 61 62 63 64 65
        <h2 class="title">
            %if library:
                ${_("Select a .tar.gz File to Replace Your Library Content")}
            %else:
                ${_("Select a .tar.gz File to Replace Your Course Content")}
            %endif
        </h2>
66

67
        <p class="error-block"></p>
68

69
        <a href="#" class="action action-choose-file choose-file-button">
70
          <i class="icon fa fa-upload"></i>
71 72
          <span class="copy">${_("Choose a File to Import")}</span>
        </a>
73 74 75

        <div class="wrapper wrapper-file-name file-name-block">
            <h3 class="title">
76
              <span class="label">${_("File Chosen:")}</span>
77 78 79 80 81
              <span class="file-name"></span>
            </h3>

          <input type="file" name="course-data" class="file-input" />

82 83 84 85 86 87 88
          <input type="submit"
          %if library:
              value="${_('Replace my library with the selected file')}"
          %else:
              value="${_('Replace my course with the selected file')}"
          %endif
           class="submit-button" id="replace-courselike-button" />
89
        </div>
90 91

        <div class="wrapper wrapper-status is-hidden">
92 93 94 95 96 97 98
          <h3 class="title">
              %if library:
                  ${_("Library Import Status")}
              %else:
                  ${_("Course Import Status")}
              %endif
          </h3>
99 100 101 102

          <ol class="status-progress list-progress">
            <li class="item-progresspoint item-progresspoint-upload is-complete">
              <span class="deco status-visual">
103 104
                <i class="icon fa fa-cog"></i>
                <i class="icon fa fa-warning"></i>
105 106 107 108
              </span>

              <div class="status-detail">
                <h3 class="title">${_("Uploading")}</h3>
109 110 111
                <div class="progress-bar">
                  <div class="progress-fill"></div>
                </div>
112 113 114 115 116 117
                <p class="copy">${_("Transferring your file to our servers")}</p>
              </div>
            </li>

            <li class="item-progresspoint item-progresspoint-unpack is-started">
              <span class="deco status-visual">
118
                <i class="icon fa fa-cog"></i>
119
                <i class="icon fa fa-warning"></i>
120 121 122 123
              </span>

              <div class="status-detail">
                <h3 class="title">${_("Unpacking")}</h3>
124
                <p class="copy">${_("Expanding and preparing folder/file structure (You can now leave this page safely, but avoid making drastic changes to content until this import is complete)")}</p>
125 126 127 128 129 130
              </div>
            </li>


            <li class="item-progresspoint item-progresspoint-verify is-not-started">
              <span class="deco status-visual">
131 132
                <i class="icon fa fa-cog"></i>
                <i class="icon fa fa-warning"></i>
133 134 135 136 137 138 139 140 141 142
              </span>

              <div class="status-detail">
                <h3 class="title">${_("Verifying")}</h3>
                <p class="copy">${_("Reviewing semantics, syntax, and required data")}</p>
              </div>
            </li>

            <li class="item-progresspoint item-progresspoint-import is-not-started">
              <span class="deco status-visual">
143 144
                <i class="icon fa fa-cog"></i>
                <i class="icon fa fa-warning"></i>
145 146 147
              </span>

              <div class="status-detail">
148 149 150 151 152 153 154 155 156 157 158 159 160 161
                <h3 class="title">
                    %if library:
                        ${_("Updating Library")}
                    %else:
                        ${_("Updating Course")}
                    %endif
                </h3>
                <p class="copy">
                    %if Library:
                        ${_("Integrating your imported content into this library. This process might take longer with larger libraries.")}
                    %else:
                        ${_("Integrating your imported content into this course. This process might take longer with larger courses.")}
                    %endif
                </p>
162 163
              </div>
            </li>
164
            <li class="item-progresspoint item-progresspoint-success has-actions is-not-started">
165
              <span class="deco status-visual">
166
                <i class="icon fa fa-square-o"></i>
167 168 169
              </span>

              <div class="status-detail">
170 171 172 173
                <h3 class="title">
                  ${_("Success")}
                  <span class="item-progresspoint-success-date"></span>
                </h3>
174 175 176 177 178 179 180
                <p class="copy">
                    %if library:
                        ${_("Your imported content has now been integrated into this library")}
                    %else:
                        ${_("Your imported content has now been integrated into this course")}
                    %endif
                </p>
181

182 183
                <ul class="list-actions">
                  <li class="item-action">
184 185 186 187 188 189 190
                    <a href="${successful_import_redirect_url}" id="view-updated-button" class="action action-primary">
                        %if library:
                            ${_("View Updated Library")}
                        %else:
                            ${_("View Updated Outline")}
                        %endif
                    </a>
191 192 193
                  </li>
                </ul>
              </div>
194
            </li>
195
          </ol>
196
        </div>
Tom Giannattasio committed
197 198
      </form>
    </article>
199

200 201 202 203
  %if library:
    <aside class="content-supplementary" role="complimentary">
      <div class="bit">
          <h3 class="title-3">${_("Why import a library?")}</h3>
204
          <p>${_("You might want to update an existing library to a new version, or replace an existing library entirely. You might also have developed a library outside of {studio_name}.").format(studio_name=settings.STUDIO_SHORT_NAME)}</p>
205 206 207 208 209 210
      </div>

      <div class="bit">
          <h3 class="title-3">${_("Note: Library content is not automatically updated in courses")}</h3>
          <p>${_("If you change and import a library that is referenced by randomized content blocks in one or more courses, those courses do not automatically use the updated content. You must manually refresh the randomized content blocks to bring them up to date with the latest library content.")}</p>
      </div>
211 212 213
      <div class="bit external-help">
          <a href="${get_online_help_info(online_help_token())['doc_url']}" target="_blank" class="button external-help-button">${_("Learn more about importing a library")}</a>
      </div>      
214 215
    </aside>
  %else:
216
    <aside class="content-supplementary" role="complementary">
217
      <div class="bit">
218
        <h3 class="title-3">${_("Why import a course?")}</h3>
219
        <p>${_("You may want to run a new version of an existing course, or replace an existing course altogether. Or, you may have developed a course outside {studio_name}.").format(studio_name=settings.STUDIO_SHORT_NAME)}</p>
220 221 222
      </div>

      <div class="bit">
223 224
        <h3 class="title-3">${_("What content is imported?")}</h3>
        <p>${_("Only the course content and structure (including sections, subsections, and units) are imported. Other data, including student data, grading information, discussion forum data, course settings, and course team information, remains the same as it was in the existing course.")}</p>
225
      </div>
226 227

      <div class="bit">
228 229
        <h3 class="title-3">${_("Warning: Importing while a course is running")}</h3>
        <p>${_("If you perform an import while your course is running, and you change the URL names (or url_name nodes) of any Problem components, the student data associated with those Problem components may be lost. This data includes students' problem scores.")}</p>
230
      </div>
231 232 233
      <div class="bit external-help">
          <a href="${get_online_help_info(online_help_token())['doc_url']}" target="_blank" class="button external-help-button">${_("Learn more about importing a course")}</a>
      </div>      
234
    </aside>
235
  %endif
236
  </section>
237
</div>
238 239
</%block>

240 241
<%block name="requirejs">
  require(["js/factories/import"], function(ImportFactory) {
242
      ImportFactory("${import_status_url}", ${json.dumps(library)});
243
  });
Brian Talbot committed
244
</%block>