2
# Copyright (C) 2007-2008 The University of Melbourne
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
# GNU General Public License for more details.
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22
# This is a mod_python handler program. The correct way to call it is to have
23
# Apache send all requests to be handled by the module 'dispatch'.
25
# Top-level handler. Handles all requests to all pages in IVLE.
26
# Handles authentication (not authorization).
27
# Then passes the request along to the appropriate ivle app.
29
from mod_python import apache
35
from request import Request
38
from common.util import make_path
41
"""Handles a request which may be to anywhere in the site except media.
42
Intended to be called by mod_python, as a handler.
44
req: An Apache request object.
46
# Make the request object into an IVLE request which can be passed to apps
47
req = Request(req, html.write_html_head)
49
# TODO: Check req.app to see if it is valid. 404 if not.
51
# TODO: Check if app requires auth. If so, perform authentication and
54
# TODO: If user did not specify an app, HTTP redirect to default app and
57
# Call the specified app with the request object
58
# TODO: Call a real app.
61
# When done, write out the HTML footer if the app has requested it
62
if req.write_html_head_foot:
63
# MAKE SURE we write the head (we would never do that if the app, nor
64
# write_html_foot, ever writes anything - so just to be sure).
65
req.write("", flush=0)
66
html.write_html_foot(req)
68
# Have Apache output its own HTML code if non-200 status codes were found
72
"""This (temporary) function serves as an IVLE application. It takes an
73
IVLE request and conforms to the application API."""
74
# TEMP: Dummy (test) handler
76
# Set request attributes
77
req.content_type = "text/html"
78
req.write_html_head_foot = True # Have dispatch print head and foot
81
req.write("<p>Hello, IVLE!</p>\n")
84
req.write('<b>No app specified</b>')
86
req.write('<b>' + req.app + '</b> ')
87
req.write('<img src="' + make_path("media/images/mime/dir.png")
89
req.write(str(req.path))
94
def print_apps_list(file):
95
"""Prints all app tabs, as a UL. Prints a list item for each app that has
98
file: Object with a "write" method - ie. the request object.
101
file.write('<ul class="apptabs">\n')
103
for urlname in conf.apps.apps_in_tabs:
104
app = conf.apps.app_url[urlname]
105
file.write(' <li><a href="')
106
file.write(make_path(app.dir))
109
file.write('</a></li>\n')
111
file.write('</ul>\n')