]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 72837: a script that generates configuration information for a Bugzilla...
authormyk%mozilla.org <>
Wed, 30 Apr 2003 06:14:27 +0000 (06:14 +0000)
committermyk%mozilla.org <>
Wed, 30 Apr 2003 06:14:27 +0000 (06:14 +0000)
r=gerv
a=myk

config.cgi [new file with mode: 0755]
template/en/default/config.js.tmpl [new file with mode: 0644]
template/en/default/config.rdf.tmpl [new file with mode: 0644]

diff --git a/config.cgi b/config.cgi
new file mode 100755 (executable)
index 0000000..80b64b0
--- /dev/null
@@ -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 (file)
index 0000000..3225826
--- /dev/null
@@ -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 (file)
index 0000000..62e8a31
--- /dev/null
@@ -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>