diff options
-rwxr-xr-x | config.cgi | 98 | ||||
-rw-r--r-- | template/en/default/config.js.tmpl | 97 | ||||
-rw-r--r-- | template/en/default/config.rdf.tmpl | 161 |
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> |