blob: c419a0c9df2b6c4e72422e60dd867d980cfa84bd [file] [log] [blame]
ddkilzer@apple.comf573e632009-07-03 02:14:39 +00001#!/usr/bin/env perl -wT
timothy@apple.comf42518d2008-02-06 20:19:16 +00002# -*- Mode: perl; indent-tabs-mode: nil -*-
3#
4# The contents of this file are subject to the Mozilla Public
5# License Version 1.1 (the "License"); you may not use this file
6# except in compliance with the License. You may obtain a copy of
7# the License at http://www.mozilla.org/MPL/
8#
9# Software distributed under the License is distributed on an "AS
10# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
11# implied. See the License for the specific language governing
12# rights and limitations under the License.
13#
14# The Original Code is the Bugzilla Bug Tracking System.
15#
16# The Initial Developer of the Original Code is Netscape Communications
17# Corporation. Portions created by Netscape are
18# Copyright (C) 1998 Netscape Communications Corporation. All
19# Rights Reserved.
20#
21# Contributor(s): Gervase Markham <gerv@gerv.net>
22#
23
24###############################################################################
25# This CGI is a general template display engine. To display templates using it,
26# put them in the "pages" subdirectory of en/default, call them
27# "foo.<ctype>.tmpl" and use the URL page.cgi?id=foo.<ctype> , where <ctype> is
28# a content-type, e.g. html.
29###############################################################################
30
31use strict;
32
ddkilzer@apple.com097da082009-07-03 02:14:25 +000033use lib qw(. lib);
timothy@apple.comf42518d2008-02-06 20:19:16 +000034
35use Bugzilla;
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000036use Bugzilla::Error;
timothy@apple.comf42518d2008-02-06 20:19:16 +000037
38Bugzilla->login();
39
40my $cgi = Bugzilla->cgi;
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000041my $template = Bugzilla->template;
timothy@apple.comf42518d2008-02-06 20:19:16 +000042
43my $id = $cgi->param('id');
44if ($id) {
45 # Remove all dodgy chars, and split into name and ctype.
46 $id =~ s/[^\w\-\.]//g;
47 $id =~ /(.*)\.(.*)/;
48 if (!$2) {
49 # if this regexp fails to match completely, something bad came in
50 ThrowCodeError("bad_page_cgi_id", { "page_id" => $id });
51 }
52
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000053 my $format = $template->get_format("pages/$1", undef, $2);
timothy@apple.comf42518d2008-02-06 20:19:16 +000054
55 $cgi->param('id', $id);
56
57 print $cgi->header($format->{'ctype'});
58
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000059 $template->process("$format->{'template'}")
timothy@apple.comf42518d2008-02-06 20:19:16 +000060 || ThrowTemplateError($template->error());
61}
62else {
63 ThrowUserError("no_page_specified");
64}