summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormyk%mozilla.org <>2003-04-30 08:14:27 +0200
committermyk%mozilla.org <>2003-04-30 08:14:27 +0200
commitc099fc5f7fd8b489d016046bcb2574e2a1495e6d (patch)
tree023e894c625705f5766ad0775194e2b11801e6c7
parent58c8e5559bbe49691954da5b5e357c90f55f547f (diff)
downloadbugzilla-c099fc5f7fd8b489d016046bcb2574e2a1495e6d.tar.gz
bugzilla-c099fc5f7fd8b489d016046bcb2574e2a1495e6d.tar.xz
Fix for bug 72837: a script that generates configuration information for a Bugzilla installation.
r=gerv a=myk
-rwxr-xr-xconfig.cgi98
-rw-r--r--template/en/default/config.js.tmpl97
-rw-r--r--template/en/default/config.rdf.tmpl161
3 files changed, 356 insertions, 0 deletions
diff --git a/config.cgi b/config.cgi
new file mode 100755
index 000000000..80b64b047
--- /dev/null
+++ b/config.cgi
@@ -0,0 +1,98 @@
+#!/usr/bonsaitools/bin/perl -w
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Netscape Communications
+# Corporation. Portions created by Netscape are
+# Copyright (C) 1998 Netscape Communications Corporation. All
+# Rights Reserved.
+#
+# Contributor(s): Terry Weissman <terry@mozilla.org>
+# Myk Melez <myk@mozilla.org>
+
+################################################################################
+# Script Initialization
+################################################################################
+
+# Make it harder for us to do dangerous things in Perl.
+use diagnostics;
+use strict;
+
+# Include the Bugzilla CGI and general utility library.
+require "CGI.pl";
+
+# Connect to the database so we can check whether the user is a member
+# of each product group.
+ConnectToDatabase();
+
+# Retrieve this installation's configuration.
+GetVersionTable();
+
+# Suppress "used only once" warnings.
+use vars
+ qw(
+ @legal_priority
+ @legal_severity
+ @legal_platform
+ @legal_opsys
+ @legal_resolution
+
+ @legal_components
+ @legal_target_milestone
+ @legal_versions
+ @legal_keywords
+
+ %FORM
+ );
+
+# Use the global template variables defined in globals.pl
+# to generate the output.
+use vars qw($template $vars);
+
+# Pass a bunch of Bugzilla configuration to the templates.
+$vars->{'priority'} = \@::legal_priority;
+$vars->{'severity'} = \@::legal_severity;
+$vars->{'platform'} = \@::legal_platform;
+$vars->{'op_sys'} = \@::legal_opsys;
+$vars->{'keyword'} = \@::legal_keywords;
+$vars->{'resolution'} = \@::legal_resolution;
+$vars->{'status'} = \@::legal_bug_status;
+
+# Include lists of products, components, versions, and target milestones.
+my $selectables = GetSelectableProductHash();
+foreach my $selectable (keys %$selectables) {
+ $vars->{$selectable} = $selectables->{$selectable};
+}
+
+# Create separate lists of open versus resolved statuses. This should really
+# be made part of the configuration.
+my @open_status;
+my @closed_status;
+foreach my $status (@::legal_bug_status) {
+ IsOpenedState($status) ? push(@open_status, $status)
+ : push(@closed_status, $status);
+}
+$vars->{'open_status'} = \@open_status;
+$vars->{'closed_status'} = \@closed_status;
+
+# Determine how the user would like to receive the output;
+# default is JavaScript.
+my $format = GetFormat("config", $::FORM{'format'}, $::FORM{'ctype'} || "js");
+
+# Return HTTP headers.
+print "Content-Type: $format->{'ctype'}\n\n";
+
+# Generate the configuration file and return it to the user.
+$template->process($format->{'template'}, $vars)
+ || ThrowTemplateError($template->error());
diff --git a/template/en/default/config.js.tmpl b/template/en/default/config.js.tmpl
new file mode 100644
index 000000000..32258260f
--- /dev/null
+++ b/template/en/default/config.js.tmpl
@@ -0,0 +1,97 @@
+//
+// This file contains the installation specific values for QuickSearch
+// and other Bugzilla clients. See quicksearch.js for more details.
+//
+
+// the global bugzilla url
+var installation = {
+ base_url : '[% Param('urlbase') FILTER js %]',
+ install_version : '[% VERSION FILTER js %]',
+ maintainer : '[% Param('maintainer') FILTER js %]'
+};
+
+
+// Status and Resolution
+// =====================
+var status = [ [% FOREACH x = status %]'[% x FILTER js %]', [% END %] ];
+var status_open = [ [% FOREACH x = open_status %]'[% x FILTER js %]', [% END %] ];
+var status_closed = [ [% FOREACH x = closed_status %]'[% x FILTER js %]', [% END %] ];
+var resolution = [ [% FOREACH x = resolution %]'[% x FILTER js %]', [% END %] ];
+
+
+// Keywords
+// ========
+
+var keyword = [ [% FOREACH x = keyword %]'[% x FILTER js %]', [% END %] ];
+
+
+// Platforms
+// =========
+
+var platform = [ [% FOREACH x = platform %]'[% x FILTER js %]', [% END %] ];
+
+
+// Severities
+// ==========
+
+var severity = [ [% FOREACH x = severity %]'[% x FILTER js %]', [% END %] ];
+
+
+// Products and Components
+// =======================
+//
+// It is not necessary to list all products and components here.
+// Instead, you can define a "blacklist" for some commonly used words
+// or word fragments that occur in a product or component name
+// but should _not_ trigger product/component search.
+
+
+// A list of all products and their components, versions, and target milestones:
+
+var component = new Object();
+var version = new Object();
+var target_milestone = new Object();
+
+[% FOREACH p = legal_products %]
+ component['[% p FILTER js %]'] = [ [% FOREACH x = components_by_product.$p %]'[% x FILTER js %]', [% END %] ];
+ version['[% p FILTER js %]'] = [ [% FOREACH x = versions_by_product.$p %]'[% x FILTER js %]', [% END %] ];
+ target_milestone['[% p FILTER js %]'] = [ [% FOREACH x = milestones_by_product.$p %]'[% x FILTER js %]', [% END %] ];
+[% END %]
+
+// Product and Component Exceptions
+// ================================
+//
+// A blacklist for some commonly used words or word fragments
+// that occur in a product or component name but should *not*
+// trigger product/component search in QuickSearch.
+
+var product_exceptions = new Array(
+ // Example:
+ //"row" // [Browser]
+ // // ^^^
+ //,"new" // [MailNews]
+ // // ^^^
+);
+
+var component_exceptions = new Array(
+ // Example:
+ //"hang" // [mozilla.org] Bugzilla: Component/Keyword Changes
+ // // ^^^^
+);
+
+// Deprecated Variables
+// ================================
+//
+// Other names for various variables. These are deprecated
+// and could go away at any time. Use them at your own risk!
+
+var bugzilla = installation.base_url;
+var statuses = status;
+var statuses_resolved = status_closed;
+var resolutions = resolution;
+var keywords = keyword;
+var platforms = platform;
+var severities = severity;
+var cpts = component;
+var vers = version;
+var tms = target_milestone;
diff --git a/template/en/default/config.rdf.tmpl b/template/en/default/config.rdf.tmpl
new file mode 100644
index 000000000..62e8a3198
--- /dev/null
+++ b/template/en/default/config.rdf.tmpl
@@ -0,0 +1,161 @@
+<?xml version="1.0"?>
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:bz="http://www.bugzilla.org/rdf#">
+
+<bz:installation rdf:about="[% Param('urlbase') FILTER html %]">
+ <bz:install_version>[% VERSION FILTER html %]</bz:install_version>
+ <bz:maintainer>[% Param('maintainer') FILTER html %]</bz:maintainer>
+
+ <bz:status>
+ <Seq>
+ [% FOREACH item = status %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:status>
+
+ <bz:status_open>
+ <Seq>
+ [% FOREACH item = open_status %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:status_open>
+
+ <bz:status_closed>
+ <Seq>
+ [% FOREACH item = closed_status %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:status_closed>
+
+ <bz:resolution>
+ <Seq>
+ [% FOREACH item = resolution %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:resolution>
+
+ <bz:keyword>
+ <Seq>
+ [% FOREACH item = keyword %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:keyword>
+
+ <bz:platform>
+ <Seq>
+ [% FOREACH item = platform %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:platform>
+
+ <bz:op_sys>
+ <Seq>
+ [% FOREACH item = op_sys %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:op_sys>
+
+ <bz:priority>
+ <Seq>
+ [% FOREACH item = priority %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:priority>
+
+ <bz:severity>
+ <Seq>
+ [% FOREACH item = severity %]
+ <li>[% item FILTER html %]</li>
+ [% END %]
+ </Seq>
+ </bz:severity>
+
+ <bz:products>
+ <Seq>
+ [% FOREACH product = legal_products %]
+ <li>
+ <bz:product rdf:about="[% Param('urlbase') %]product.cgi?name=[% product FILTER uri %]">
+ <bz:name>[% product FILTER html %]</bz:name>
+
+ <bz:components>
+ <Seq>
+ [% FOREACH component = components_by_product.$product %]
+ <li resource="[% Param('urlbase') %]component.cgi?name=[% component FILTER uri %]"/>
+ [% END %]
+ </Seq>
+ </bz:components>
+
+ <bz:versions>
+ <Seq>
+ [% FOREACH version = versions_by_product.$product %]
+ <li resource="[% Param('urlbase') %]version.cgi?name=[% version FILTER uri %]"/>
+ [% END %]
+ </Seq>
+ </bz:versions>
+
+ [% IF Param('usetargetmilestone') %]
+ <bz:target_milestones>
+ <Seq>
+ [% FOREACH milestone = milestones_by_product.$product %]
+ <li resource="[% Param('urlbase') %]milestone.cgi?name=[% milestone FILTER uri %]"/>
+ [% END %]
+ </Seq>
+ </bz:target_milestones>
+ [% END %]
+
+ </bz:product>
+ </li>
+ [% END %]
+ </Seq>
+ </bz:products>
+
+ <bz:components>
+ <Seq>
+ [% FOREACH item = legal_components %]
+ <li>
+ <bz:component rdf:about="[% Param('urlbase') %]component.cgi?name=[% item FILTER uri %]">
+ <bz:name>[% item FILTER html %]</bz:name>
+ </bz:component>
+ </li>
+ [% END %]
+ </Seq>
+ </bz:components>
+
+ <bz:versions>
+ <Seq>
+ [% FOREACH item = legal_versions %]
+ <li>
+ <bz:version rdf:about="[% Param('urlbase') %]version.cgi?name=[% item FILTER uri %]">
+ <bz:name>[% item FILTER html %]</bz:name>
+ </bz:version>
+ </li>
+ [% END %]
+ </Seq>
+ </bz:versions>
+
+ [% IF Param('usetargetmilestone') %]
+ <bz:target_milestones>
+ <Seq>
+ [% FOREACH item = legal_milestones %]
+ <li>
+ <bz:target_milestone rdf:about="[% Param('urlbase') %]milestone.cgi?name=[% item FILTER uri %]">
+ <bz:name>[% item FILTER html %]</bz:name>
+ </bz:target_milestone>
+ </li>
+ [% END %]
+ </Seq>
+ </bz:target_milestones>
+ [% END %]
+
+</bz:installation>
+
+</RDF>