Fix for bug 72837: a script that generates configuration information for a Bugzilla installation.

r=gerv
a=myk
This commit is contained in:
myk%mozilla.org 2003-04-29 23:14:31 +00:00
Родитель b939a52974
Коммит a4f5423134
3 изменённых файлов: 356 добавлений и 0 удалений

98
webtools/bugzilla/config.cgi Executable file
Просмотреть файл

@ -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());

Просмотреть файл

@ -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;

Просмотреть файл

@ -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>