diff options
author | David Lawrence <dlawrence@mozilla.com> | 2011-10-18 22:49:20 +0200 |
---|---|---|
committer | David Lawrence <dlawrence@mozilla.com> | 2011-10-18 22:49:20 +0200 |
commit | e3f3c2566be8ce17b7d854c120e036a91a36fe0f (patch) | |
tree | 5f330cf6b7df12976a7ea7b3b1ececcfea550b4d | |
parent | 3e42acb389a5d7a7a04cb7768ca3a0ecc2c471ed (diff) | |
parent | 1b68b3315e62ca5c0f761f947db9ffadd91c435f (diff) | |
download | bugzilla-e3f3c2566be8ce17b7d854c120e036a91a36fe0f.tar.gz bugzilla-e3f3c2566be8ce17b7d854c120e036a91a36fe0f.tar.xz |
merged with bugzilla/4.2
-rw-r--r-- | Bugzilla/WebService/Bug.pm | 2 | ||||
-rw-r--r-- | Bugzilla/WebService/Product.pm | 19 | ||||
-rw-r--r-- | docs/en/xml/glossary.xml | 2 | ||||
-rw-r--r-- | docs/en/xml/installation.xml | 6 | ||||
-rwxr-xr-x | importxml.pl | 15 | ||||
-rw-r--r-- | js/custom-search.js | 22 | ||||
-rw-r--r-- | skins/standard/attachment.css | 4 | ||||
-rw-r--r-- | skins/standard/global.css | 4 | ||||
-rw-r--r-- | template/en/default/email/bugmail.html.tmpl | 8 | ||||
-rw-r--r-- | template/en/default/search/boolean-charts.html.tmpl | 5 |
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 <your-bugzilla-directory> ; ./collectstats.pl</programlisting> + <programlisting>5 0 * * * cd <your-bugzilla-directory> && ./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 <your-bugzilla-directory> ; ./whineatnews.pl</programlisting> + <programlisting>55 0 * * * cd <your-bugzilla-directory> && ./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 <your-bugzilla-directory> ; ./whine.pl</programlisting> + <programlisting>*/15 * * * * cd <your-bugzilla-directory> && ./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> |