зеркало из https://github.com/mozilla/pjs.git
Fix for bug 72837: a script that generates configuration information for a Bugzilla installation.
r=gerv a=myk
This commit is contained in:
Родитель
d30d2f04a9
Коммит
45c7dd9178
|
@ -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>
|
Загрузка…
Ссылка в новой задаче