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

« back to all changes in this revision

Viewing changes to www/dispatch/html.py

  • Committer: mattgiuca
  • Date: 2008-07-07 12:01:03 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:820
lib: Added new package pulldown_subj, a collection of modules designed to
    pull student subject enrolments from the server.
    Note that the actual code to do this is not included (since that is
    specific to the organisation running IVLE) - just a pluggable interface
    and an example plugin module.
configure.py: Added new config option: subject_pulldown_modules, which allows
    you to specify which modules are plugged in here.
    (Actually that was added accidentally in a previous commit; but this
    revision fixes some comments).

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
# Does not include the login page. See login.py.
25
25
 
26
26
import cgi
 
27
import urllib
27
28
import os.path
28
29
 
29
30
import conf
52
53
""" % (cgi.escape(titlepart), cgi.escape(req.content_type)))
53
54
    # Write inline JavaScript which gives the client code access to certain
54
55
    # server-side variables.
55
 
    if req.username:
56
 
        username = repr(req.username)
 
56
    if req.user:
 
57
        username = repr(req.user.login)
57
58
    else:
58
59
        username = "null"
59
60
    req.write("""  <script type="text/javascript">
60
61
    root_dir = %s;
 
62
    public_host = %s;
61
63
    username = %s;
62
64
  </script>
63
 
""" % (repr(conf.root_dir), username))
64
 
    iconurl = get_icon_url(req.app)
 
65
""" % (repr(conf.root_dir), repr(conf.public_host), username))
 
66
    iconurl = get_icon_url(req.app, small=True)
65
67
    if iconurl:
66
68
        req.write("""  <link rel="shortcut icon" href="%s" />
67
69
""" % cgi.escape(iconurl))
73
75
        req.write('  <link rel="stylesheet" type="text/css" href="%s" />\n'
74
76
            % cgi.escape(util.make_path(style)))
75
77
    for script in req.scripts:
76
 
        req.write('  <script type="text/javascript" src="%s" />\n'
 
78
        req.write('  <script type="text/javascript" src="%s"></script>\n'
77
79
            % cgi.escape(util.make_path(script)))
78
80
 
79
81
    req.write("</head>\n\n")
86
88
  <h2>Informatics Virtual Learning Environment</h2>
87
89
""")
88
90
 
89
 
    if req.username:
 
91
    if req.user:
90
92
        # Get the user's nickname from the request session
91
 
        nickname = req.get_session()['nick']
92
 
        req.write('  <p class="userhello">%s (<span '
93
 
            'class="username">%s</span>) |\n'
 
93
        nickname = req.user.nick
 
94
        req.write('  <p class="userhello"><span id="usernick">%s</span> '
 
95
            '(<span class="username">%s</span>) |\n'
 
96
            '    <a href="%s">Settings</a> |\n'
94
97
            '    <a href="%s">Help</a> |\n'
95
 
            '    <a href="%s">Logout</a>\n'
 
98
            '    <a href="%s">Sign out</a>\n'
96
99
            '  </p>\n' %
97
 
            (cgi.escape(nickname), cgi.escape(req.username),
 
100
            (cgi.escape(nickname), cgi.escape(req.user.login),
 
101
             cgi.escape(util.make_path('settings')),
98
102
             cgi.escape(get_help_url(req)),
99
103
             cgi.escape(util.make_path('logout'))))
100
104
    else:
106
110
    # If the "debuginfo" app is installed, display a warning to the admin to
107
111
    # make sure it is removed in production.
108
112
    if "debuginfo" in conf.apps.app_url:
109
 
        req.write("  <p><small>Warning: debuginfo is enabled. Remove this "
110
 
            "app from conf.apps.app_url when placed into production."
111
 
            "</small></p>\n")
 
113
        req.write("  <p><small>Warning: debuginfo is enabled. Set "
 
114
            "enable_debuginfo = False in lib/conf/apps.py, when placing IVLE "
 
115
            "into production.</small></p>\n")
112
116
 
113
 
    if req.username:
 
117
    # If req has a "no_agreement" attribute, then it is because the user has
 
118
    # not signed the agreement; therefore we are displaying the TOS page.
 
119
    # Do not show apps (see dispatch.login).
 
120
    if req.user and not req.user.state == 'no_agreement':
114
121
        # Only print app tabs if logged in
115
122
        print_apps_list(req, req.app)
116
123
    req.write('</div>\n<div id="ivlebody">\n')
125
132
def get_help_url(req):
126
133
    """Gets the help URL most relevant to this page, to place as the
127
134
    "help" link at the top of the page."""
128
 
    if req.app == 'help':
 
135
    reqapp = req.app if hasattr(req, 'app') else None
 
136
    if reqapp == 'help':
129
137
        # We're already in help. Link to the exact current page
130
138
        # instead of the generic help page.
131
139
        return req.uri
132
 
    if conf.apps.app_url[req.app].hashelp:
133
 
        help_path = os.path.join('help', req.app)
 
140
    if reqapp is not None and conf.apps.app_url[reqapp].hashelp:
 
141
        help_path = os.path.join('help', reqapp)
134
142
    else:
135
143
        help_path = 'help'
136
144
    return util.make_path(help_path)
139
147
    """Given an app's url name, gets the URL of the icon image for this app,
140
148
    relative to the site root. Returns None if the app has no icon."""
141
149
    if appurl is None: return None
142
 
    app = conf.apps.app_url[appurl]
 
150
    try:
 
151
        app = conf.apps.app_url[appurl]
 
152
    except KeyError:
 
153
        # Due to navigating to a bad app
 
154
        return None
143
155
    if small:
144
156
        icon_dir = conf.apps.app_icon_dir_small
145
157
    else:
165
177
        file.write('    <li%s>' % li_attr)
166
178
        if app.icon:
167
179
            file.write('<img src="%s" alt="" /> '
168
 
                % cgi.escape(get_icon_url(urlname)))
169
 
        file.write('<a href="%s">%s</a></li>\n'
170
 
            % (cgi.escape(util.make_path(urlname)), cgi.escape(app.name)))
 
180
                % urllib.quote(get_icon_url(urlname)))
 
181
        file.write('<a href="%s" title="%s">%s</a></li>\n'
 
182
            % (urllib.quote(util.make_path(urlname)), cgi.escape(app.desc),
 
183
                cgi.escape(app.name)))
171
184
 
172
185
    file.write('  </ul>\n')