summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/WebService/Bug.pm2
-rw-r--r--Bugzilla/WebService/Product.pm19
-rw-r--r--docs/en/xml/glossary.xml2
-rw-r--r--docs/en/xml/installation.xml6
-rwxr-xr-ximportxml.pl15
-rw-r--r--js/custom-search.js22
-rw-r--r--skins/standard/attachment.css4
-rw-r--r--skins/standard/global.css4
-rw-r--r--template/en/default/email/bugmail.html.tmpl8
-rw-r--r--template/en/default/search/boolean-charts.html.tmpl5
10 files changed, 50 insertions, 37 deletions
diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm
index c2083a59f..8506c4b47 100644
--- a/Bugzilla/WebService/Bug.pm
+++ b/Bugzilla/WebService/Bug.pm
@@ -1059,7 +1059,7 @@ containing the following keys:
=item C<id>
-C<int> An integer id uniquely idenfifying this field in this installation only.
+C<int> An integer id uniquely identifying this field in this installation only.
=item C<type>
diff --git a/Bugzilla/WebService/Product.pm b/Bugzilla/WebService/Product.pm
index 842657575..3414be4fd 100644
--- a/Bugzilla/WebService/Product.pm
+++ b/Bugzilla/WebService/Product.pm
@@ -128,7 +128,7 @@ sub _product_to_hash {
is_active => $self->type('boolean', $product->is_active),
default_milestone => $self->type('string', $product->default_milestone),
has_unconfirmed => $self->type('boolean', $product->allows_unconfirmed),
- classification => $self->_classification_to_hash($product->classification),
+ classification => $self->type('string', $product->classification->name),
};
if (filter_wants($params, 'components')) {
$field_data->{components} = [map {
@@ -148,20 +148,6 @@ sub _product_to_hash {
return filter($params, $field_data);
}
-sub _classification_to_hash {
- my ($self, $classification) = @_;
- return {
- id =>
- $self->type('int', $classification->id),
- name =>
- $self->type('string', $classification->name),
- description =>
- $self->type('string' , $classification->description),
- sort_key =>
- $self->type('int', $classification->sortkey),
- };
-}
-
sub _component_to_hash {
my ($self, $component) = @_;
return {
@@ -360,8 +346,7 @@ for this product.
=item C<classification>
-C<hash> Contains the classification C<id>, C<name>, C<description>
-and C<sort_key> as keys.
+C<string> The classification name for the product.
=item C<components>
diff --git a/docs/en/xml/glossary.xml b/docs/en/xml/glossary.xml
index 48730b248..aef3ab395 100644
--- a/docs/en/xml/glossary.xml
+++ b/docs/en/xml/glossary.xml
@@ -279,7 +279,7 @@
<glossterm>MySQL</glossterm>
<glossdef>
- <para>MySQL is currently the required
+ <para>MySQL is one of the supported
<glossterm linkend="gloss-rdbms">RDBMS</glossterm> for Bugzilla. MySQL
can be downloaded from <ulink url="http://www.mysql.com"/>. While you
should familiarize yourself with all of the documentation, some high
diff --git a/docs/en/xml/installation.xml b/docs/en/xml/installation.xml
index 8df457439..cfd9f14f3 100644
--- a/docs/en/xml/installation.xml
+++ b/docs/en/xml/installation.xml
@@ -1369,7 +1369,7 @@ c:\perl\bin\perl.exe -xc:\bugzilla -wT "%s" %s
daily at 5 after midnight:
</para>
- <programlisting>5 0 * * * cd &lt;your-bugzilla-directory&gt; ; ./collectstats.pl</programlisting>
+ <programlisting>5 0 * * * cd &lt;your-bugzilla-directory&gt; &amp;&amp; ./collectstats.pl</programlisting>
<para>
After two days have passed you'll be able to view bug graphs from
@@ -1400,7 +1400,7 @@ c:\perl\bin\perl.exe -xc:\bugzilla -wT "%s" %s
graphs. This example runs it at 12.55am.
</para>
- <programlisting>55 0 * * * cd &lt;your-bugzilla-directory&gt; ; ./whineatnews.pl</programlisting>
+ <programlisting>55 0 * * * cd &lt;your-bugzilla-directory&gt; &amp;&amp; ./whineatnews.pl</programlisting>
<note>
<para>
@@ -1430,7 +1430,7 @@ c:\perl\bin\perl.exe -xc:\bugzilla -wT "%s" %s
graphs. This example runs it every 15 minutes.
</para>
- <programlisting>*/15 * * * * cd &lt;your-bugzilla-directory&gt; ; ./whine.pl</programlisting>
+ <programlisting>*/15 * * * * cd &lt;your-bugzilla-directory&gt; &amp;&amp; ./whine.pl</programlisting>
<note>
<para>
diff --git a/importxml.pl b/importxml.pl
index c2366cb6c..896848b0a 100755
--- a/importxml.pl
+++ b/importxml.pl
@@ -854,8 +854,6 @@ sub process_bug {
}
# Status & Resolution
- my $has_res = defined($bug_fields{'resolution'});
- my $has_status = defined($bug_fields{'bug_status'});
my $valid_res = check_field('resolution',
scalar $bug_fields{'resolution'},
undef, ERR_LEVEL );
@@ -910,10 +908,10 @@ sub process_bug {
}
}
- if($has_status){
+ if ($status) {
if($valid_status){
if($is_open){
- if($has_res){
+ if ($resolution) {
$err .= "Resolution set on an open status.\n";
$err .= " Dropping resolution $resolution\n";
$resolution = undef;
@@ -947,7 +945,7 @@ sub process_bug {
}
}
else{ # $is_open is false
- if(!$has_res){
+ if (!$resolution) {
$err .= "Missing Resolution. Setting status to ";
if($everconfirmed){
$status = $initial_status;
@@ -977,9 +975,8 @@ sub process_bug {
$err .= $bug_fields{'bug_status'} . "\".\n";
$resolution = undef;
}
-
}
- else{ #has_status is false
+ else {
if($everconfirmed){
$status = $initial_status;
}
@@ -990,8 +987,8 @@ sub process_bug {
$err .= " Previous status was unknown\n";
$resolution = undef;
}
-
- if (defined $resolution){
+
+ if ($resolution) {
push( @query, "resolution" );
push( @values, $resolution );
}
diff --git a/js/custom-search.js b/js/custom-search.js
index 800150440..394e0eb32 100644
--- a/js/custom-search.js
+++ b/js/custom-search.js
@@ -32,6 +32,8 @@ var ANY_ALL_SELECT_CLASS = 'any_all_select';
function custom_search_not_changed(id) {
var container = document.getElementById('custom_search_not_container_' + id);
YAHOO.util.Dom.removeClass(container, 'custom_search_advanced');
+
+ fix_query_string(container);
}
function custom_search_new_row() {
@@ -53,6 +55,7 @@ function custom_search_new_row() {
// Always make sure there's only one row with this id.
row.id = null;
row.parentNode.appendChild(clone);
+ fix_query_string(row);
return clone;
}
@@ -100,6 +103,8 @@ function custom_search_open_paren() {
var new_margin = parseInt(int_match[0]) + PAREN_INDENT_EM;
YAHOO.util.Dom.setStyle(row, 'margin-left', new_margin + 'em');
YAHOO.util.Dom.removeClass('cp_container', 'bz_default_hidden');
+
+ fix_query_string(any_all_container);
}
function custom_search_close_paren() {
@@ -124,6 +129,23 @@ function custom_search_close_paren() {
if (new_margin == 0) {
YAHOO.util.Dom.addClass('cp_container', 'bz_default_hidden');
}
+
+ fix_query_string(new_row);
+}
+
+// When a user goes Back in their browser after searching, some browsers
+// (Chrome, as of September 2011) do not remember the DOM that was created
+// by the Custom Search JS. (In other words, their whole entered Custom
+// Search disappears.) The solution is to update the History object,
+// using the query string, which query.cgi can read to re-create the page
+// exactly as the user had it before.
+function fix_query_string(form_member) {
+ if (!(window.history && window.history.replaceState))
+ return;
+
+ var form = YAHOO.util.Dom.getAncestorByTagName(form_member, 'form');
+ var query = YAHOO.util.Connect.setForm(form);
+ window.history.replaceState(null, document.title, '?' + query);
}
diff --git a/skins/standard/attachment.css b/skins/standard/attachment.css
index 797501264..287160331 100644
--- a/skins/standard/attachment.css
+++ b/skins/standard/attachment.css
@@ -201,10 +201,6 @@ textarea.bz_private {
display: block;
}
-textarea {
- font-family: monospace;
-}
-
div#update_container {
clear: both;
padding: 1.5em 0;
diff --git a/skins/standard/global.css b/skins/standard/global.css
index 0f6428d34..e8336d5c1 100644
--- a/skins/standard/global.css
+++ b/skins/standard/global.css
@@ -232,6 +232,10 @@
.clickable_area {
cursor: pointer;
}
+
+ textarea {
+ font-family: monospace;
+ }
/* generic (end) */
/* Links that control whether or not something is visible. */
diff --git a/template/en/default/email/bugmail.html.tmpl b/template/en/default/email/bugmail.html.tmpl
index f48667e7b..ac4727811 100644
--- a/template/en/default/email/bugmail.html.tmpl
+++ b/template/en/default/email/bugmail.html.tmpl
@@ -96,7 +96,13 @@
[% IF isnew %]
<tr>
<th>[% field_label FILTER html %]</th>
- <td>[% new_value FILTER html %]</td>
+ <td>
+ [% IF change.field_name == "bug_id" %]
+ [% new_value FILTER bug_link(bug, full_url => 1) FILTER none %]
+ [% ELSE %]
+ [% new_value FILTER html %]
+ [% END %]
+ </td>
</tr>
[% ELSE %]
<tr>
diff --git a/template/en/default/search/boolean-charts.html.tmpl b/template/en/default/search/boolean-charts.html.tmpl
index b90f5f1b6..b5ff90908 100644
--- a/template/en/default/search/boolean-charts.html.tmpl
+++ b/template/en/default/search/boolean-charts.html.tmpl
@@ -135,6 +135,7 @@
[% ELSE %]
<select name="f[% cond_num FILTER html %]" title="Field"
id="f[% cond_num FILTER html %]"
+ onchange="fix_query_string(this)"
class="custom_search_form_field">
[% FOREACH field = fields %]
<option value="[% field.name FILTER html %]"
@@ -150,6 +151,7 @@
<input name="v[% cond_num FILTER html %]" title="Value"
class="custom_search_form_field"
+ onchange="fix_query_string(this)"
value="[% condition.v FILTER html %]">
[% END %]
@@ -170,7 +172,8 @@
[% BLOCK any_all_select %]
<div class="any_all_select">
- <select name="[% name FILTER html %]" id="[% name FILTER html %]">
+ <select name="[% name FILTER html %]" id="[% name FILTER html %]"
+ onchange="fix_query_string(this)">
<option value="AND">Match ALL of the following:</option>
<option value="OR" [% ' selected="selected"' IF selected == "OR" %]>
Match ANY of the following:</option>