~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/submit/submit.html

  • Committer: David Coles
  • Date: 2010-07-20 05:55:20 UTC
  • Revision ID: coles.david@gmail.com-20100720055520-yxyfn2qqycfwboiq
URL quote paths in checkout URLs.

The two benefits of this are that we no longer have issues with spaces in 
submitted paths and also don't have to worry about shell escape characters 
(and possible shell injection to a lectures console).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<html xmlns="http://www.w3.org/1999/xhtml"
 
2
      xmlns:py="http://genshi.edgewall.org/">
 
3
  <head>
 
4
    <title>Submit project</title>
 
5
  </head>
 
6
  <body>
 
7
    <h1>Submit project</h1>
 
8
    <div id="ivle_padding">
 
9
      <py:choose test="offering">
 
10
        <div py:when="None">
 
11
          <p>You may not submit files from <span style="font-family: monospace">${path}</span> in
 
12
            <py:choose test="">
 
13
              <span py:when="principal is req.user">your repository.</span>
 
14
              <span py:otherwise="">the repository for ${principal.display_name}.</span>
 
15
            </py:choose>
 
16
            You can only submit files from a subject directory.
 
17
          </p>
 
18
        </div>
 
19
        <div py:otherwise="">
 
20
          <p>You are submitting <span style="font-family: monospace">${path}</span> from
 
21
            <py:choose test="">
 
22
              <span py:when="principal is req.user">your repository.</span>
 
23
              <span py:otherwise="">the repository for ${principal.display_name}.</span>
 
24
            </py:choose>
 
25
          </p>
 
26
          <p>You may submit to any open project in ${offering.subject.name}. Which project do you wish to submit this for?</p>
 
27
          <form action="" method="post">
 
28
            <table>
 
29
              <tr py:for="project in principal.get_projects(offering=offering)"
 
30
                  py:with="attrs = {'disabled': 'disabled'} if project.has_deadline_passed(req.user) else {}"
 
31
                  py:attrs="{'class': 'project closed'} if project.has_deadline_passed(req.user) else {'class': 'project'}">
 
32
                <td style="vertical-align: top">
 
33
                  <input type="radio" name="project" id="project_${project.id}" value="${project.id}" py:attrs="attrs" />
 
34
                </td>
 
35
                <td>
 
36
                  <label for="project_${project.id}">
 
37
                    <py:choose test="project.url not in (None, '')">
 
38
                      <a py:when="True" href="${project.url}">${project.name}</a>
 
39
                      <span py:otherwise="">${project.name}</span> 
 
40
                    </py:choose>
 
41
                    &ndash;
 
42
                    <span py:content="format_submission_principal(req.user, principal)" /> &ndash;
 
43
                    <!-- XXX This deadline does not take the student's extensions into account. -->
 
44
                    <span title="${format_datetime(project.deadline)}">
 
45
                      ${'closed' if project.has_deadline_passed(req.user) else 'due'} ${format_datetime_short(project.deadline)}
 
46
                    </span>
 
47
                    <py:if test="principal is not None"
 
48
                           py:with="submissions = project.get_submissions_for_principal(principal)">
 
49
                      &ndash;
 
50
                      <py:choose test="submissions.count()">
 
51
                        <span py:when="0">
 
52
                          not yet submitted
 
53
                        </span>
 
54
                        <span py:otherwise=""
 
55
                              py:with="latest = submissions.last()"
 
56
                              title="${format_datetime(latest.date_submitted)}">
 
57
                          last submitted ${format_datetime_short(latest.date_submitted)}
 
58
                        </span>
 
59
                      </py:choose>
 
60
                    </py:if>
 
61
                    <br />
 
62
                    ${project.synopsis}
 
63
                  </label>
 
64
                </td>
 
65
              </tr>
 
66
            </table>
 
67
            <p>Ensure that you have committed all changes - only changes in the repository will be submitted.</p>
 
68
            <p>You may resubmit a project again at any time until its deadline, but a new submission will overwrite any made earlier.</p>
 
69
            <p><input type="submit" value="Submit Project" />
 
70
              <a class="helpaction" href="/+help/Submitting%20a%20project">Help submitting a project</a>
 
71
            </p>
 
72
          </form>
 
73
        </div>
 
74
      </py:choose>
 
75
    </div>
 
76
  </body>
 
77
</html>