ddkilzer@apple.com | f573e63 | 2009-07-03 02:14:39 +0000 | [diff] [blame] | 1 | #!/usr/bin/env perl -wT |
timothy@apple.com | f42518d | 2008-02-06 20:19:16 +0000 | [diff] [blame] | 2 | # -*- 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 | |
| 31 | use strict; |
| 32 | |
ddkilzer@apple.com | 097da08 | 2009-07-03 02:14:25 +0000 | [diff] [blame] | 33 | use lib qw(. lib); |
timothy@apple.com | f42518d | 2008-02-06 20:19:16 +0000 | [diff] [blame] | 34 | |
| 35 | use Bugzilla; |
ddkilzer@apple.com | f3615fc | 2009-07-03 02:13:41 +0000 | [diff] [blame] | 36 | use Bugzilla::Error; |
timothy@apple.com | f42518d | 2008-02-06 20:19:16 +0000 | [diff] [blame] | 37 | |
| 38 | Bugzilla->login(); |
| 39 | |
| 40 | my $cgi = Bugzilla->cgi; |
ddkilzer@apple.com | f3615fc | 2009-07-03 02:13:41 +0000 | [diff] [blame] | 41 | my $template = Bugzilla->template; |
timothy@apple.com | f42518d | 2008-02-06 20:19:16 +0000 | [diff] [blame] | 42 | |
| 43 | my $id = $cgi->param('id'); |
| 44 | if ($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.com | f3615fc | 2009-07-03 02:13:41 +0000 | [diff] [blame] | 53 | my $format = $template->get_format("pages/$1", undef, $2); |
timothy@apple.com | f42518d | 2008-02-06 20:19:16 +0000 | [diff] [blame] | 54 | |
| 55 | $cgi->param('id', $id); |
| 56 | |
| 57 | print $cgi->header($format->{'ctype'}); |
| 58 | |
ddkilzer@apple.com | f3615fc | 2009-07-03 02:13:41 +0000 | [diff] [blame] | 59 | $template->process("$format->{'template'}") |
timothy@apple.com | f42518d | 2008-02-06 20:19:16 +0000 | [diff] [blame] | 60 | || ThrowTemplateError($template->error()); |
| 61 | } |
| 62 | else { |
| 63 | ThrowUserError("no_page_specified"); |
| 64 | } |