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

« back to all changes in this revision

Viewing changes to ivle/webapp/base/ivle-headings.html

Dispatch now generates an index for each plugin type, allowing plugins to
be written which are aware of other plugins, and other plugin types.

All view plugins now subclass from ivle.webapp.base.plugins.ViewPlugin,
as opposed to subclassing BasePlugin directly. This will allow us to
easily re-write console as an OverlayPlugin, and allow future new
plugins types to be created.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
      xmlns:xi="http://www.w3.org/2001/XInclude"
4
4
      py:strip="">
5
5
  <py:match path="head[@status!='done']" once="true">
6
 
    <head>
 
6
    <head status='done' py:attrs="select('@*')">
7
7
      <title py:with="title = list(select('title/text()'))">
8
8
        <py:if test="title">${title} - </py:if>IVLE
9
9
      </title>
10
10
 
11
11
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
12
12
 
13
 
      <script py:if="not publicmode and write_javascript_settings" type="text/javascript">
 
13
      <script py:if="write_javascript_settings" type="text/javascript">
14
14
        root_dir = "${root_dir}";
15
15
        public_host = "${public_host}";
16
16
        username = "${login}";
18
18
 
19
19
      <link py:if="favicon" rel="shortcut icon" href="${favicon}" />
20
20
 
21
 
      <py:for each="style in styles">
 
21
      <link rel="stylesheet" type="text/css" href="/media/common/ivle.css" />
 
22
 
 
23
      <script type="text/javascript" src="/media/common/util.js"></script>
 
24
      <script type="text/javascript" src="/media/common/json2.js"></script>
 
25
      <script type="text/javascript" src="/media/common/md5.js"></script>
 
26
      <script type="text/javascript" src="/media/common/tos.js"></script>
 
27
 
 
28
      <!-- Plugin style sheets and JavaScript -->
 
29
      <py:for each="style in app_styles">
22
30
        <link rel="stylesheet" type="text/css" href="${style}" />
23
31
      </py:for>
24
32
 
36
44
    </head>
37
45
  </py:match>    
38
46
  <py:match path="body[@status!='done']" once="true">
39
 
    <body>
40
 
      <div id="ivleheader">
41
 
        <h1>
42
 
          <a href="/">
43
 
            <img src="${title_img}" alt="Informatics Virtual Learning Environment" />
44
 
          </a>
45
 
        </h1>
46
 
        <div id="ivleheader_text">
47
 
          <py:choose>
48
 
            <p py:when="publicmode" class="userhello">Running in public mode.</p>
49
 
            <p py:when="logged_in" class="userhello">
50
 
              <span id="usernick">${nick}</span>
51
 
              (<span class="username">${login}</span>) |
52
 
              <a href="/~${login}/+settings">Settings</a> |
53
 
              <py:choose>
54
 
                <a py:when="defined('help_path')" href="/+help/${help_path}">Help</a>
55
 
                <a py:otherwise="" href="/+help/">Help</a>
56
 
              |</py:choose>
57
 
              <a href="/+logout">Log out</a>
58
 
            </p>
59
 
            <p py:otherwise="" class="userhello">Not logged in.</p>
60
 
          </py:choose>
61
 
        </div>
62
 
        <div py:if="logged_in" id="ivleheader_tabs">
63
 
          <ul id="apptabs">
64
 
            <py:for each="app in apps_in_tabs">
65
 
              <li py:if="app['this_app']" class="thisapp"><a href="${app['path']}" title="${app['desc']}"><span><py:if test="app['has_icon']"><img src="${app['icon_url']}" alt="" /> </py:if>${app['name']}</span></a></li>
66
 
              <li py:if="not app['this_app']"><a href="${app['path']}" title="${app['desc']}"><span><py:if test="app['has_icon']"><img src="${app['icon_url']}" alt="" /> </py:if>${app['name']}</span></a></li>
67
 
            </py:for>
68
 
          </ul>
69
 
        </div>
 
47
    <body status='done'>
 
48
      <div id="ivleheader"></div>
 
49
      <div id="ivleheader_text">
 
50
        <h1>IVLE</h1>
 
51
        <h2>Informatics Virtual Learning Environment</h2>
 
52
        <py:choose>
 
53
          <p py:when="publicmode" class="userhello">Running in public mode.</p>
 
54
          <p py:when="logged_in" class="userhello">
 
55
            <span id="usernick">${nick}</span>
 
56
            (<span class="username">${login}</span>) |
 
57
            <a href="/~${login}/+settings">Settings</a> |
 
58
            <a href="/help">Help</a> |
 
59
            <a href="/logout">Sign out</a>
 
60
          </p>
 
61
          <p py:otherwise="" class="userhello">Not logged in.</p>
 
62
        </py:choose>
 
63
      </div>
 
64
      <div id="ivleheader_tabs">
 
65
        <ul id="apptabs">
 
66
          <py:for each="app in apps_in_tabs">
 
67
            <li py:if="app['this_app']" class="thisapp"><py:if test="app['has_icon']"><img src="${app['icon_url']}" alt="" /> </py:if><a href="${app['path']}" title="${app['desc']}">${app['name']}</a></li>
 
68
            <li py:if="not app['this_app']"><py:if test="app['has_icon']"><img src="${app['icon_url']}" alt="" /> </py:if><a href="${app['path']}" title="${app['desc']}">${app['name']}</a></li>
 
69
          </py:for>
 
70
        </ul>
70
71
      </div>
71
72
      <div id="ivlebody">
72
 
        <div id="ivleview">
73
 
          ${select('*')}
74
 
        </div>
75
 
        <div id="ivleoverlays">
76
 
          <py:for each="overlay in overlays">
77
 
            ${overlay}
78
 
          </py:for>
79
 
        </div>     
 
73
      ${select('*')}
80
74
      </div>
81
75
    </body>
82
76
  </py:match>