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

93 by mattgiuca
New directory hierarchy.
1
# IVLE
2
# Copyright (C) 2007-2008 The University of Melbourne
3
#
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.
8
#
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.
13
#
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
17
18
# App: help
19
# Author: Matt Giuca
20
# Date: 12/12/2007
21
22
# This is an IVLE application.
23
# A sample / testing application for IVLE.
24
25
from common import util
26
import os
27
import conf
28
from conf import apps
29
30
# TODO: Nicer 404 errors
31
32
def handle(req):
33
    """Handler for the Help application."""
34
    (appurl, subpath) = util.split_path(req.path)
35
36
    if appurl is None:
37
        show_help_menu(req)
38
    else:
39
        # app must be valid and have help available
40
        if appurl not in conf.apps.app_url:
41
            req.throw_error(req.HTTP_NOT_FOUND)
42
        app = conf.apps.app_url[appurl]
43
        if not app.hashelp:
44
            req.throw_error(req.HTTP_NOT_FOUND)
45
        # subpath must be empty, for now, as there is only one help file per app
46
        if subpath != "":
47
            req.throw_error(req.HTTP_NOT_FOUND)
48
        show_help_app(req, app)
49
50
def show_help_menu(req):
51
    """Show the help menu."""
52
53
    # Set request attributes
54
    req.content_type = "text/html"
55
    req.write_html_head_foot = True
56
57
    # Start writing data
58
    req.write("<h1>Help</h1>\n")
59
60
    # Write a list of links to all apps with help modules
61
    req.write("<ul>\n")
62
    for (appurl, app) in conf.apps.app_url.items():
63
        if app.hashelp:
64
            req.write('  <li><a href="%s">%s</a></li>\n'
65
                % (os.path.join(util.make_path("help"), appurl), app.name))
66
    req.write("</ul>\n")
67
68
def show_help_app(req, app):
69
    """Show help for an application."""
70
    helpfile = os.path.join(util.make_local_path("apps"), app.dir, "help.html")
71
72
    # Set request attributes
73
    req.content_type = "text/html"
74
    req.write_html_head_foot = True
75
76
    # Start writing data
77
    req.write("<h1>Help - %s</h1>\n" % app.name)
78
79
    # Print out the contents of the HTML help file
80
    req.sendfile(helpfile)