From c5a0aed7474b34180bd020d04cdad447bb3348d4 Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Fri, 11 Jul 2014 09:35:37 +0200 Subject: [PATCH] Imported Bugzilla 3.5.2. --- Bugzilla.pm | 44 +- Bugzilla/Attachment/CVS/Entries | 2 +- Bugzilla/Attachment/CVS/Tag | 2 +- Bugzilla/Auth/CVS/Entries | 4 +- Bugzilla/Auth/CVS/Tag | 2 +- Bugzilla/Auth/Login/CGI.pm | 8 +- Bugzilla/Auth/Login/CVS/Entries | 8 +- Bugzilla/Auth/Login/CVS/Tag | 2 +- Bugzilla/Auth/Persist/CVS/Entries | 2 +- Bugzilla/Auth/Persist/CVS/Tag | 2 +- Bugzilla/Auth/Persist/Cookie.pm | 7 +- Bugzilla/Auth/Verify/CVS/Entries | 8 +- Bugzilla/Auth/Verify/CVS/Tag | 2 +- Bugzilla/Bug.pm | 144 +-- Bugzilla/BugMail.pm | 39 +- Bugzilla/CGI.pm | 33 + Bugzilla/CVS/Entries | 74 +- Bugzilla/CVS/Tag | 2 +- Bugzilla/Comment.pm | 173 +++ Bugzilla/Config/CVS/Entries | 34 +- Bugzilla/Config/CVS/Tag | 2 +- Bugzilla/Constants.pm | 10 +- Bugzilla/DB.pm | 12 +- Bugzilla/DB/CVS/Entries | 8 +- Bugzilla/DB/CVS/Tag | 2 +- Bugzilla/DB/Schema/CVS/Entries | 6 +- Bugzilla/DB/Schema/CVS/Tag | 2 +- Bugzilla/Field/CVS/Entries | 2 +- Bugzilla/Field/CVS/Tag | 2 +- Bugzilla/Hook.pm | 89 ++ Bugzilla/Install/CVS/Entries | 12 +- Bugzilla/Install/CVS/Tag | 2 +- Bugzilla/Install/Requirements.pm | 76 +- Bugzilla/Install/Util.pm | 35 +- Bugzilla/Job/CVS/Entries | 2 +- Bugzilla/Job/CVS/Tag | 2 +- Bugzilla/JobQueue.pm | 2 +- Bugzilla/JobQueue/CVS/Entries | 2 +- Bugzilla/JobQueue/CVS/Tag | 2 +- Bugzilla/Migrate.pm | 41 +- Bugzilla/Migrate/CVS/Entries | 2 +- Bugzilla/Migrate/CVS/Tag | 2 +- Bugzilla/Object.pm | 13 + Bugzilla/Search.pm | 53 +- Bugzilla/Search/CVS/Entries | 4 +- Bugzilla/Search/CVS/Tag | 2 +- Bugzilla/Template.pm | 17 +- Bugzilla/Template/CVS/Tag | 2 +- Bugzilla/Template/Plugin/CVS/Entries | 6 +- Bugzilla/Template/Plugin/CVS/Tag | 2 +- Bugzilla/User.pm | 2 +- Bugzilla/User/CVS/Entries | 2 +- Bugzilla/User/CVS/Tag | 2 +- Bugzilla/User/Setting/CVS/Entries | 6 +- Bugzilla/User/Setting/CVS/Tag | 2 +- Bugzilla/Util.pm | 93 +- Bugzilla/WebService.pm | 40 + Bugzilla/WebService/Bug.pm | 47 +- Bugzilla/WebService/CVS/Entries | 16 +- Bugzilla/WebService/CVS/Tag | 2 +- Bugzilla/WebService/Server.pm | 3 +- Bugzilla/WebService/Server/CVS/Entries | 4 +- Bugzilla/WebService/Server/CVS/Tag | 2 +- Bugzilla/WebService/Server/JSONRPC.pm | 20 +- Bugzilla/WebService/Server/XMLRPC.pm | 36 +- Bugzilla/WebService/User.pm | 10 +- Bugzilla/WebService/Util.pm | 37 +- Bugzilla/Whine/CVS/Entries | 2 + Bugzilla/Whine/CVS/Repository | 1 + Bugzilla/Whine/CVS/Root | 1 + Bugzilla/Whine/CVS/Tag | 1 + Bugzilla/Whine/Schedule.pm | 172 +++ CVS/Entries | 142 +-- CVS/Tag | 2 +- buglist.cgi | 2 +- colchange.cgi | 2 +- config.cgi | 44 +- contrib/CVS/Entries | 28 +- contrib/CVS/Tag | 2 +- contrib/bugzilla-submit/CVS/Entries | 8 +- contrib/bugzilla-submit/CVS/Tag | 2 +- contrib/cmdline/CVS/Entries | 14 +- contrib/cmdline/CVS/Tag | 2 +- docs/CVS/Entries | 4 +- docs/CVS/Tag | 2 +- docs/bugzilla.ent | 1 + docs/en/CVS/Entries | 6 +- docs/en/CVS/Tag | 2 +- docs/en/html/Bugzilla-Guide.html | 8 +- docs/en/html/about.html | 8 +- docs/en/html/administration.html | 4 +- docs/en/html/api/Bugzilla.html | 13 + docs/en/html/api/Bugzilla/Comment.html | 139 +++ docs/en/html/api/Bugzilla/Hook.html | 105 ++ .../api/Bugzilla/Install/Requirements.html | 38 +- docs/en/html/api/Bugzilla/Migrate.html | 44 +- docs/en/html/api/Bugzilla/Util.html | 11 +- docs/en/html/api/Bugzilla/WebService.html | 32 + docs/en/html/api/Bugzilla/Whine/Schedule.html | 139 +++ docs/en/html/api/index.html | 114 +- docs/en/html/attachments.html | 4 +- docs/en/html/bug_page.html | 4 +- docs/en/html/bug_status_workflow.html | 4 +- docs/en/html/bugreports.html | 4 +- docs/en/html/classifications.html | 4 +- docs/en/html/cmdline-bugmail.html | 4 +- docs/en/html/cmdline.html | 4 +- docs/en/html/components.html | 4 +- docs/en/html/configuration.html | 4 +- docs/en/html/conventions.html | 4 +- docs/en/html/copyright.html | 4 +- docs/en/html/credits.html | 4 +- docs/en/html/cust-change-permissions.html | 4 +- docs/en/html/cust-hooks.html | 4 +- docs/en/html/cust-skins.html | 4 +- docs/en/html/cust-templates.html | 4 +- docs/en/html/custom-fields.html | 4 +- docs/en/html/customization.html | 4 +- docs/en/html/disclaimer.html | 4 +- docs/en/html/edit-values.html | 4 +- docs/en/html/extraconfig.html | 4 +- docs/en/html/flags-overview.html | 4 +- docs/en/html/flags.html | 4 +- docs/en/html/general-advice.html | 4 +- docs/en/html/gfdl-0.html | 4 +- docs/en/html/gfdl-1.html | 4 +- docs/en/html/gfdl-10.html | 4 +- docs/en/html/gfdl-2.html | 4 +- docs/en/html/gfdl-3.html | 4 +- docs/en/html/gfdl-4.html | 4 +- docs/en/html/gfdl-5.html | 4 +- docs/en/html/gfdl-6.html | 4 +- docs/en/html/gfdl-7.html | 4 +- docs/en/html/gfdl-8.html | 4 +- docs/en/html/gfdl-9.html | 4 +- docs/en/html/gfdl-howto.html | 4 +- docs/en/html/gfdl.html | 4 +- docs/en/html/glossary.html | 4 +- docs/en/html/groups.html | 4 +- docs/en/html/hintsandtips.html | 4 +- docs/en/html/index.html | 6 +- docs/en/html/install-perlmodules-manual.html | 4 +- docs/en/html/installation.html | 4 +- docs/en/html/installing-bugzilla.html | 4 +- docs/en/html/integration.html | 4 +- docs/en/html/keywords.html | 4 +- docs/en/html/lifecycle.html | 4 +- docs/en/html/milestones.html | 4 +- docs/en/html/modules-manual-download.html | 4 +- docs/en/html/modules-manual-instructions.html | 4 +- docs/en/html/modules-manual-optional.html | 4 +- docs/en/html/multiple-bz-dbs.html | 4 +- docs/en/html/myaccount.html | 4 +- docs/en/html/newversions.html | 6 +- docs/en/html/nonroot.html | 4 +- docs/en/html/os-specific.html | 4 +- docs/en/html/parameters.html | 4 +- docs/en/html/paranoid-security.html | 4 +- docs/en/html/patches.html | 4 +- docs/en/html/products.html | 4 +- docs/en/html/query.html | 4 +- docs/en/html/quips.html | 4 +- docs/en/html/reporting.html | 4 +- docs/en/html/sanitycheck.html | 4 +- docs/en/html/security-bugzilla.html | 4 +- docs/en/html/security-os.html | 4 +- docs/en/html/security-webserver.html | 4 +- docs/en/html/security.html | 4 +- docs/en/html/timetracking.html | 4 +- docs/en/html/trbl-dbdsponge.html | 4 +- docs/en/html/trbl-index.html | 4 +- docs/en/html/trbl-passwd-encryption.html | 4 +- docs/en/html/trbl-perlmodule.html | 4 +- docs/en/html/trbl-relogin-everyone.html | 4 +- docs/en/html/trbl-testserver.html | 4 +- docs/en/html/troubleshooting.html | 4 +- docs/en/html/upgrade.html | 4 +- docs/en/html/useradmin.html | 4 +- docs/en/html/userpreferences.html | 4 +- docs/en/html/using-intro.html | 4 +- docs/en/html/using.html | 4 +- docs/en/html/versions.html | 4 +- docs/en/html/voting.html | 4 +- docs/en/html/whining.html | 4 +- docs/en/images/CVS/Entries | 12 +- docs/en/images/CVS/Tag | 2 +- docs/en/images/callouts/CVS/Entries | 6 +- docs/en/images/callouts/CVS/Tag | 2 +- docs/en/pdf/Bugzilla-Guide.pdf | 1072 ++++++++--------- docs/en/txt/Bugzilla-Guide.txt | 6 +- docs/en/xml/Bugzilla-Guide.xml | 4 +- docs/en/xml/CVS/Entries | 30 +- docs/en/xml/CVS/Tag | 2 +- docs/en/xml/bugzilla.ent | 1 + docs/lib/CVS/Tag | 2 +- docs/lib/Pod/CVS/Tag | 2 +- docs/lib/Pod/Simple/CVS/Tag | 2 +- docs/lib/Pod/Simple/HTML/CVS/Entries | 2 +- docs/lib/Pod/Simple/HTML/CVS/Tag | 2 +- docs/lib/Pod/Simple/HTMLBatch/CVS/Entries | 2 +- docs/lib/Pod/Simple/HTMLBatch/CVS/Tag | 2 +- editkeywords.cgi | 3 +- editwhines.cgi | 53 +- email_in.pl | 2 +- enter_bug.cgi | 12 +- extensions/CVS/Tag | 2 +- extensions/bmp_convert/CVS/Entries | 4 +- extensions/bmp_convert/CVS/Tag | 2 +- extensions/bmp_convert/code/CVS/Entries | 2 +- extensions/bmp_convert/code/CVS/Tag | 2 +- extensions/example/CVS/Entries | 4 +- extensions/example/CVS/Tag | 2 +- extensions/example/code/CVS/Entries | 50 +- extensions/example/code/CVS/Tag | 2 +- .../code/bug-end_of_create_validators.pl | 37 + .../example/code/object-before_create.pl | 33 + extensions/example/code/object-before_set.pl | 34 + .../code/object-end_of_create_validators.pl | 34 + extensions/example/lib/Bugzilla/CVS/Entries | 2 +- extensions/example/lib/Bugzilla/CVS/Tag | 2 +- extensions/example/lib/CVS/Entries | 8 +- extensions/example/lib/CVS/Tag | 2 +- extensions/example/template/CVS/Tag | 2 +- extensions/example/template/en/CVS/Tag | 2 +- extensions/example/template/en/admin/CVS/Tag | 2 +- .../template/en/admin/sanitycheck/CVS/Entries | 2 +- .../template/en/admin/sanitycheck/CVS/Tag | 2 +- .../example/template/en/default/CVS/Tag | 2 +- .../example/template/en/default/admin/CVS/Tag | 2 +- .../en/default/admin/params/CVS/Entries | 2 +- .../template/en/default/admin/params/CVS/Tag | 2 +- .../template/en/default/pages/CVS/Entries | 2 +- .../example/template/en/default/pages/CVS/Tag | 2 +- .../example/template/en/global/CVS/Entries | 2 +- extensions/example/template/en/global/CVS/Tag | 2 +- images/CVS/Entries | 4 +- images/CVS/Tag | 2 +- importxml.pl | 6 +- js/CVS/Entries | 20 +- js/CVS/Tag | 2 +- js/global.js | 9 + js/yui/CVS/Entries | 6 +- js/yui/CVS/Tag | 2 +- jsonrpc.cgi | 10 +- lib/CVS/Entries | 2 +- lib/CVS/Tag | 2 +- mod_perl.pl | 9 +- post_bug.cgi | 16 +- process_bug.cgi | 5 +- query.cgi | 8 +- report.cgi | 17 +- show_bug.cgi | 2 +- skins/CVS/Entries | 2 +- skins/CVS/Tag | 2 +- skins/contrib/CVS/Tag | 2 +- skins/contrib/Dusk/CVS/Entries | 8 +- skins/contrib/Dusk/CVS/Tag | 2 +- skins/contrib/Dusk/index/CVS/Entries | 6 +- skins/contrib/Dusk/index/CVS/Tag | 2 +- skins/standard/CVS/Entries | 34 +- skins/standard/CVS/Tag | 2 +- skins/standard/dependency-tree/CVS/Entries | 8 +- skins/standard/dependency-tree/CVS/Tag | 2 +- skins/standard/global.css | 12 + skins/standard/global/CVS/Entries | 14 +- skins/standard/global/CVS/Tag | 2 +- skins/standard/index/CVS/Entries | 6 +- skins/standard/index/CVS/Tag | 2 +- skins/standard/yui/CVS/Entries | 4 +- skins/standard/yui/CVS/Tag | 2 +- summarize_time.cgi | 2 +- t/001compile.t | 128 +- t/CVS/Entries | 24 +- t/CVS/Tag | 2 +- t/Support/CVS/Entries | 6 +- t/Support/CVS/Tag | 2 +- t/Support/Files.pm | 30 - template/CVS/Entries | 2 +- template/CVS/Tag | 2 +- template/en/CVS/Entries | 2 +- template/en/CVS/Tag | 2 +- template/en/default/CVS/Entries | 12 +- template/en/default/CVS/Tag | 2 +- template/en/default/account/CVS/Entries | 8 +- template/en/default/account/CVS/Tag | 2 +- template/en/default/account/auth/CVS/Entries | 4 +- template/en/default/account/auth/CVS/Tag | 2 +- template/en/default/account/email/CVS/Entries | 10 +- template/en/default/account/email/CVS/Tag | 2 +- .../en/default/account/password/CVS/Entries | 4 +- template/en/default/account/password/CVS/Tag | 2 +- template/en/default/account/prefs/CVS/Entries | 12 +- template/en/default/account/prefs/CVS/Tag | 2 +- template/en/default/admin/CVS/Entries | 8 +- template/en/default/admin/CVS/Tag | 2 +- .../default/admin/classifications/CVS/Entries | 12 +- .../en/default/admin/classifications/CVS/Tag | 2 +- .../en/default/admin/components/CVS/Entries | 12 +- template/en/default/admin/components/CVS/Tag | 2 +- .../default/admin/custom_fields/CVS/Entries | 10 +- .../en/default/admin/custom_fields/CVS/Tag | 2 +- .../en/default/admin/fieldvalues/CVS/Entries | 12 +- template/en/default/admin/fieldvalues/CVS/Tag | 2 +- .../en/default/admin/flag-type/CVS/Entries | 6 +- template/en/default/admin/flag-type/CVS/Tag | 2 +- template/en/default/admin/groups/CVS/Entries | 10 +- template/en/default/admin/groups/CVS/Tag | 2 +- .../en/default/admin/keywords/CVS/Entries | 8 +- template/en/default/admin/keywords/CVS/Tag | 2 +- .../en/default/admin/milestones/CVS/Entries | 12 +- template/en/default/admin/milestones/CVS/Tag | 2 +- template/en/default/admin/params/CVS/Entries | 38 +- template/en/default/admin/params/CVS/Tag | 2 +- .../en/default/admin/params/common.html.tmpl | 14 +- .../en/default/admin/products/CVS/Entries | 16 +- template/en/default/admin/products/CVS/Tag | 2 +- .../admin/products/groupcontrol/CVS/Entries | 6 +- .../admin/products/groupcontrol/CVS/Tag | 2 +- .../en/default/admin/sanitycheck/CVS/Entries | 4 +- template/en/default/admin/sanitycheck/CVS/Tag | 2 +- .../en/default/admin/settings/CVS/Entries | 2 +- template/en/default/admin/settings/CVS/Tag | 2 +- template/en/default/admin/users/CVS/Entries | 16 +- template/en/default/admin/users/CVS/Tag | 2 +- .../en/default/admin/versions/CVS/Entries | 12 +- template/en/default/admin/versions/CVS/Tag | 2 +- .../en/default/admin/workflow/CVS/Entries | 4 +- template/en/default/admin/workflow/CVS/Tag | 2 +- .../default/admin/workflow/comment.html.tmpl | 4 +- .../en/default/admin/workflow/edit.html.tmpl | 6 +- template/en/default/attachment/CVS/Entries | 32 +- template/en/default/attachment/CVS/Tag | 2 +- .../en/default/attachment/create.html.tmpl | 5 +- template/en/default/attachment/list.html.tmpl | 6 +- template/en/default/bug/CVS/Entries | 30 +- template/en/default/bug/CVS/Tag | 2 +- template/en/default/bug/activity/CVS/Entries | 4 +- template/en/default/bug/activity/CVS/Tag | 2 +- .../en/default/bug/activity/table.html.tmpl | 12 +- template/en/default/bug/comments.html.tmpl | 22 +- template/en/default/bug/create/CVS/Entries | 16 +- template/en/default/bug/create/CVS/Tag | 2 +- .../en/default/bug/create/create.html.tmpl | 13 +- template/en/default/bug/edit.html.tmpl | 10 +- template/en/default/bug/field.html.tmpl | 2 + .../en/default/bug/format_comment.txt.tmpl | 33 +- template/en/default/bug/process/CVS/Entries | 12 +- template/en/default/bug/process/CVS/Tag | 2 +- .../bug/process/verify-new-product.html.tmpl | 2 + .../en/default/bug/show-multiple.html.tmpl | 10 +- template/en/default/bug/show.xml.tmpl | 16 +- template/en/default/bug/votes/CVS/Entries | 6 +- template/en/default/bug/votes/CVS/Tag | 2 +- template/en/default/email/CVS/Entries | 10 +- template/en/default/email/CVS/Tag | 2 +- .../en/default/email/newchangedmail.txt.tmpl | 2 +- template/en/default/flag/CVS/Entries | 2 +- template/en/default/flag/CVS/Tag | 2 +- template/en/default/global/CVS/Entries | 58 +- template/en/default/global/CVS/Tag | 2 +- .../en/default/global/code-error.html.tmpl | 2 +- .../en/default/global/field-descs.none.tmpl | 1 + template/en/default/global/header.html.tmpl | 34 +- template/en/default/list/CVS/Entries | 24 +- template/en/default/list/CVS/Tag | 2 +- .../en/default/list/edit-multiple.html.tmpl | 17 +- template/en/default/list/list.atom.tmpl | 10 +- template/en/default/list/list.html.tmpl | 14 +- template/en/default/list/table.html.tmpl | 16 +- template/en/default/pages/CVS/Entries | 18 +- template/en/default/pages/CVS/Tag | 2 +- .../en/default/pages/bug-writing.html.tmpl | 4 +- template/en/default/pages/fields.html.tmpl | 29 +- .../en/default/pages/release-notes.html.tmpl | 8 + template/en/default/reports/CVS/Entries | 46 +- template/en/default/reports/CVS/Tag | 2 +- .../reports/duplicates-table.html.tmpl | 6 +- .../en/default/reports/report-bar.png.tmpl | 24 +- .../en/default/reports/report-line.png.tmpl | 24 +- .../en/default/reports/report-pie.png.tmpl | 12 +- .../en/default/reports/report-table.csv.tmpl | 8 +- .../en/default/reports/report-table.html.tmpl | 8 +- template/en/default/request/CVS/Entries | 4 +- template/en/default/request/CVS/Tag | 2 +- template/en/default/search/CVS/Entries | 26 +- template/en/default/search/CVS/Tag | 2 +- template/en/default/search/form.html.tmpl | 15 +- template/en/default/setup/CVS/Entries | 2 +- template/en/default/setup/CVS/Tag | 2 +- template/en/default/whine/CVS/Entries | 8 +- template/en/default/whine/CVS/Tag | 2 +- template/en/default/whine/mail.html.tmpl | 6 +- template/en/default/whine/mail.txt.tmpl | 6 +- template/en/extension/CVS/Entries | 2 +- template/en/extension/CVS/Tag | 2 +- xmlrpc.cgi | 10 +- 396 files changed, 3487 insertions(+), 2212 deletions(-) create mode 100644 Bugzilla/Comment.pm create mode 100644 Bugzilla/Whine/CVS/Entries create mode 100644 Bugzilla/Whine/CVS/Repository create mode 100644 Bugzilla/Whine/CVS/Root create mode 100644 Bugzilla/Whine/CVS/Tag create mode 100644 Bugzilla/Whine/Schedule.pm create mode 100644 docs/en/html/api/Bugzilla/Comment.html create mode 100644 docs/en/html/api/Bugzilla/Whine/Schedule.html create mode 100644 extensions/example/code/bug-end_of_create_validators.pl create mode 100644 extensions/example/code/object-before_create.pl create mode 100644 extensions/example/code/object-before_set.pl create mode 100644 extensions/example/code/object-end_of_create_validators.pl diff --git a/Bugzilla.pm b/Bugzilla.pm index a373aa801..3c547b980 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -43,7 +43,6 @@ use Bugzilla::CGI; use Bugzilla::DB; use Bugzilla::Install::Localconfig qw(read_localconfig); use Bugzilla::Install::Requirements qw(OPTIONAL_MODULES); -use Bugzilla::JobQueue; use Bugzilla::Template; use Bugzilla::User; use Bugzilla::Error; @@ -234,6 +233,22 @@ sub cgi { return $class->request_cache->{cgi}; } +sub input_params { + my ($class, $params) = @_; + my $cache = $class->request_cache; + # This is how the WebService and other places set input_params. + if (defined $params) { + $cache->{input_params} = $params; + } + return $cache->{input_params} if defined $cache->{input_params}; + + # Making this scalar makes it a tied hash to the internals of $cgi, + # so if a variable is changed, then it actually changes the $cgi object + # as well. + $cache->{input_params} = $class->cgi->Vars; + return $cache->{input_params}; +} + sub localconfig { my $class = shift; $class->request_cache->{localconfig} ||= read_localconfig(); @@ -363,6 +378,7 @@ sub logout_request { sub job_queue { my $class = shift; + require Bugzilla::JobQueue; $class->request_cache->{job_queue} ||= Bugzilla::JobQueue->new(); return $class->request_cache->{job_queue}; } @@ -539,7 +555,11 @@ sub local_timezone { sub request_cache { if ($ENV{MOD_PERL}) { require Apache2::RequestUtil; - return Apache2::RequestUtil->request->pnotes(); + # Sometimes (for example, during mod_perl.pl), the request + # object isn't available, and we should use $_request_cache instead. + my $request = eval { Apache2::RequestUtil->request }; + return $_request_cache if !$request; + return $request->pnotes(); } return $_request_cache; } @@ -647,6 +667,26 @@ The current C<cgi> object. Note that modules should B<not> be using this in general. Not all Bugzilla actions are cgi requests. Its useful as a convenience method for those scripts/templates which are only use via CGI, though. +=item C<input_params> + +When running under the WebService, this is a hashref containing the arguments +passed to the WebService method that was called. When running in a normal +script, this is a hashref containing the contents of the CGI parameters. + +Modifying this hashref will modify the CGI parameters or the WebService +arguments (depending on what C<input_params> currently represents). + +This should be used instead of L</cgi> in situations where your code +could be being called by either a normal CGI script or a WebService method, +such as during a code hook. + +B<Note:> When C<input_params> represents the CGI parameters, any +parameter specified more than once (like C<foo=bar&foo=baz>) will appear +as an arrayref in the hash, but any value specified only once will appear +as a scalar. This means that even if a value I<can> appear multiple times, +if it only I<does> appear once, then it will be a scalar in C<input_params>, +not an arrayref. + =item C<user> C<undef> if there is no currently logged in user or if the login code has not diff --git a/Bugzilla/Attachment/CVS/Entries b/Bugzilla/Attachment/CVS/Entries index 0663a3c36..d0faa439d 100644 --- a/Bugzilla/Attachment/CVS/Entries +++ b/Bugzilla/Attachment/CVS/Entries @@ -1,2 +1,2 @@ -/PatchReader.pm/1.6/Sun Jun 29 17:35:28 2008//TBUGZILLA-3_5_1 +/PatchReader.pm/1.6/Sun Jun 29 17:35:28 2008//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Attachment/CVS/Tag b/Bugzilla/Attachment/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Attachment/CVS/Tag +++ b/Bugzilla/Attachment/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Auth/CVS/Entries b/Bugzilla/Auth/CVS/Entries index 00c33ff31..b3d6ed21f 100644 --- a/Bugzilla/Auth/CVS/Entries +++ b/Bugzilla/Auth/CVS/Entries @@ -1,5 +1,5 @@ -/Login.pm/1.1/Fri May 12 02:41:05 2006//TBUGZILLA-3_5_1 -/Verify.pm/1.7/Wed May 23 18:05:49 2007//TBUGZILLA-3_5_1 +/Login.pm/1.1/Fri May 12 02:41:05 2006//TBUGZILLA-3_5_2 +/Verify.pm/1.7/Wed May 23 18:05:49 2007//TBUGZILLA-3_5_2 D/Login//// D/Persist//// D/Verify//// diff --git a/Bugzilla/Auth/CVS/Tag b/Bugzilla/Auth/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Auth/CVS/Tag +++ b/Bugzilla/Auth/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Auth/Login/CGI.pm b/Bugzilla/Auth/Login/CGI.pm index a93bc3d3a..407582af4 100644 --- a/Bugzilla/Auth/Login/CGI.pm +++ b/Bugzilla/Auth/Login/CGI.pm @@ -40,12 +40,10 @@ use Bugzilla::Error; sub get_login_info { my ($self) = @_; - my $cgi = Bugzilla->cgi; - - my $username = trim($cgi->param("Bugzilla_login")); - my $password = $cgi->param("Bugzilla_password"); + my $params = Bugzilla->input_params; - $cgi->delete('Bugzilla_login', 'Bugzilla_password'); + my $username = trim(delete $params->{"Bugzilla_login"}); + my $password = delete $params->{"Bugzilla_password"}; if (!defined $username || !defined $password) { return { failure => AUTH_NODATA }; diff --git a/Bugzilla/Auth/Login/CVS/Entries b/Bugzilla/Auth/Login/CVS/Entries index 1bab5b584..db68b145f 100644 --- a/Bugzilla/Auth/Login/CVS/Entries +++ b/Bugzilla/Auth/Login/CVS/Entries @@ -1,5 +1,5 @@ -/CGI.pm/1.13/Fri Oct 9 04:31:10 2009//TBUGZILLA-3_5_1 -/Cookie.pm/1.6/Sun Oct 18 23:34:57 2009//TBUGZILLA-3_5_1 -/Env.pm/1.4/Mon Jul 3 21:42:46 2006//TBUGZILLA-3_5_1 -/Stack.pm/1.3/Fri Apr 17 21:57:12 2009//TBUGZILLA-3_5_1 +/CGI.pm/1.14/Mon Nov 9 19:15:29 2009//TBUGZILLA-3_5_2 +/Cookie.pm/1.6/Sun Oct 18 23:34:57 2009//TBUGZILLA-3_5_2 +/Env.pm/1.4/Mon Jul 3 21:42:46 2006//TBUGZILLA-3_5_2 +/Stack.pm/1.3/Fri Apr 17 21:57:12 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Auth/Login/CVS/Tag b/Bugzilla/Auth/Login/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Auth/Login/CVS/Tag +++ b/Bugzilla/Auth/Login/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Auth/Persist/CVS/Entries b/Bugzilla/Auth/Persist/CVS/Entries index f41bcbdc6..1dda973ad 100644 --- a/Bugzilla/Auth/Persist/CVS/Entries +++ b/Bugzilla/Auth/Persist/CVS/Entries @@ -1,2 +1,2 @@ -/Cookie.pm/1.11/Sun Oct 18 23:34:58 2009//TBUGZILLA-3_5_1 +/Cookie.pm/1.12/Mon Nov 9 19:15:29 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Auth/Persist/CVS/Tag b/Bugzilla/Auth/Persist/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Auth/Persist/CVS/Tag +++ b/Bugzilla/Auth/Persist/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Auth/Persist/Cookie.pm b/Bugzilla/Auth/Persist/Cookie.pm index 4458e31b5..1e1b3a871 100644 --- a/Bugzilla/Auth/Persist/Cookie.pm +++ b/Bugzilla/Auth/Persist/Cookie.pm @@ -48,9 +48,10 @@ sub persist_login { my ($self, $user) = @_; my $dbh = Bugzilla->dbh; my $cgi = Bugzilla->cgi; + my $input_params = Bugzilla->input_params; my $ip_addr; - if ($cgi->param('Bugzilla_restrictlogin')) { + if ($input_params->{'Bugzilla_restrictlogin'}) { $ip_addr = $cgi->remote_addr; # The IP address is valid, at least for comparing with itself in a # subsequent login @@ -80,8 +81,8 @@ sub persist_login { # or admin didn't forbid it and user told to remember. if ( Bugzilla->params->{'rememberlogin'} eq 'on' || (Bugzilla->params->{'rememberlogin'} ne 'off' && - $cgi->param('Bugzilla_remember') && - $cgi->param('Bugzilla_remember') eq 'on') ) + $input_params->{'Bugzilla_remember'} && + $input_params->{'Bugzilla_remember'} eq 'on') ) { # Not a session cookie, so set an infinite expiry $cookieargs{'-expires'} = 'Fri, 01-Jan-2038 00:00:00 GMT'; diff --git a/Bugzilla/Auth/Verify/CVS/Entries b/Bugzilla/Auth/Verify/CVS/Entries index 529c6da55..f78d6258a 100644 --- a/Bugzilla/Auth/Verify/CVS/Entries +++ b/Bugzilla/Auth/Verify/CVS/Entries @@ -1,5 +1,5 @@ -/DB.pm/1.10/Fri Jan 2 09:11:50 2009//TBUGZILLA-3_5_1 -/LDAP.pm/1.18/Mon Oct 20 18:35:51 2008//TBUGZILLA-3_5_1 -/RADIUS.pm/1.1/Thu Aug 2 22:38:37 2007//TBUGZILLA-3_5_1 -/Stack.pm/1.3/Fri Apr 17 21:57:19 2009//TBUGZILLA-3_5_1 +/DB.pm/1.10/Fri Jan 2 09:11:50 2009//TBUGZILLA-3_5_2 +/LDAP.pm/1.18/Mon Oct 20 18:35:51 2008//TBUGZILLA-3_5_2 +/RADIUS.pm/1.1/Thu Aug 2 22:38:37 2007//TBUGZILLA-3_5_2 +/Stack.pm/1.3/Fri Apr 17 21:57:19 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Auth/Verify/CVS/Tag b/Bugzilla/Auth/Verify/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Auth/Verify/CVS/Tag +++ b/Bugzilla/Auth/Verify/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 14fe20c02..c27f23823 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -46,6 +46,7 @@ use Bugzilla::Product; use Bugzilla::Component; use Bugzilla::Group; use Bugzilla::Status; +use Bugzilla::Comment; use List::Util qw(min); use Storable qw(dclone); @@ -589,10 +590,10 @@ sub run_create_validators { $class->_check_qa_contact($params->{qa_contact}, $component); $params->{cc} = $class->_check_cc($component, $params->{cc}); - # Callers cannot set Reporter, currently. + # Callers cannot set reporter, creation_ts, or delta_ts. $params->{reporter} = $class->_check_reporter(); - - $params->{creation_ts} ||= Bugzilla->dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); + $params->{creation_ts} = + Bugzilla->dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); $params->{delta_ts} = $params->{creation_ts}; if ($params->{estimated_time}) { @@ -612,6 +613,9 @@ sub run_create_validators { delete $params->{lastdiffed}; delete $params->{bug_id}; + Bugzilla::Hook::process('bug-end_of_create_validators', + { params => $params }); + return $params; } @@ -1220,10 +1224,9 @@ sub _check_deadline { my ($invocant, $date) = @_; # Check time-tracking permissions. - my $tt_group = Bugzilla->params->{"timetrackinggroup"}; # deadline() returns '' instead of undef if no deadline is set. my $current = ref $invocant ? ($invocant->deadline || undef) : undef; - return $current unless $tt_group && Bugzilla->user->in_group($tt_group); + return $current unless Bugzilla->user->is_timetracker; # Validate entered deadline $date = trim($date); @@ -1671,8 +1674,7 @@ sub _check_time { if (ref $invocant && $field ne 'work_time') { $current = $invocant->$field; } - my $tt_group = Bugzilla->params->{"timetrackinggroup"}; - return $current unless $tt_group && Bugzilla->user->in_group($tt_group); + return $current unless Bugzilla->user->is_timetracker; $time = trim($time) || 0; ValidateTime($time, $field); @@ -1835,12 +1837,12 @@ sub set_cclist_accessible { $_[0]->set('cclist_accessible', $_[1]); } sub set_comment_is_private { my ($self, $comment_id, $isprivate) = @_; return unless Bugzilla->user->is_insider; - my ($comment) = grep($comment_id eq $_->{id}, @{$self->longdescs}); + my ($comment) = grep($comment_id == $_->id, @{ $self->comments }); ThrowUserError('comment_invalid_isprivate', { id => $comment_id }) if !$comment; $isprivate = $isprivate ? 1 : 0; - if ($isprivate != $comment->{isprivate}) { + if ($isprivate != $comment->is_private) { $self->{comment_isprivate} ||= {}; $self->{comment_isprivate}->{$comment_id} = $isprivate; } @@ -2286,6 +2288,8 @@ sub add_group { $group = new Bugzilla::Group($group) unless ref $group; return unless $group; + return if !$group->is_active or !$group->is_bug_group; + # Make sure that bugs in this product can actually be restricted # to this group. grep($group->id == $_->id, @{$self->product_obj->groups_valid}) @@ -2477,8 +2481,7 @@ sub actual_time { my ($self) = @_; return $self->{'actual_time'} if exists $self->{'actual_time'}; - if ( $self->{'error'} || - !Bugzilla->user->in_group(Bugzilla->params->{"timetrackinggroup"}) ) { + if ( $self->{'error'} || !Bugzilla->user->is_timetracker ) { $self->{'actual_time'} = undef; return $self->{'actual_time'}; } @@ -2665,12 +2668,38 @@ sub keyword_objects { return $self->{'keyword_objects'}; } -sub longdescs { - my ($self) = @_; - return $self->{'longdescs'} if exists $self->{'longdescs'}; +sub comments { + my ($self, $params) = @_; return [] if $self->{'error'}; - $self->{'longdescs'} = GetComments($self->{bug_id}); - return $self->{'longdescs'}; + $params ||= {}; + + if (!defined $self->{'comments'}) { + $self->{'comments'} = Bugzilla::Comment->match({ bug_id => $self->id }); + my $count = 0; + foreach my $comment (@{ $self->{'comments'} }) { + $comment->{count} = $count++; + } + } + my @comments = @{ $self->{'comments'} }; + + my $order = $params->{order} + || Bugzilla->user->settings->{'comment_sort_order'}->{'value'}; + if ($order ne 'oldest_to_newest') { + @comments = reverse @comments; + if ($order eq 'newest_to_oldest_desc_first') { + unshift(@comments, pop @comments); + } + } + + if ($params->{after}) { + my $from = datetime_from($params->{after}); + @comments = grep { datetime_from($_->creation_ts) > $from } @comments; + } + if ($params->{to}) { + my $to = datetime_from($params->{to}); + @comments = grep { datetime_from($_->creation_ts) <= $to } @comments; + } + return \@comments; } sub milestoneurl { @@ -2955,7 +2984,7 @@ sub update_comment { || ThrowCodeError('bad_arg', {argument => 'comment_id', function => 'update_comment'}); # The comment ID must belong to this bug. - my @current_comment_obj = grep {$_->{'id'} == $comment_id} @{$self->longdescs}; + my @current_comment_obj = grep {$_->id == $comment_id} @{$self->comments}; scalar(@current_comment_obj) || ThrowCodeError('bad_arg', {argument => 'comment_id', function => 'update_comment'}); @@ -2972,7 +3001,7 @@ sub update_comment { $self->_sync_fulltext(); # Update the comment object with this new text. - $current_comment_obj[0]->{'body'} = $new_comment; + $current_comment_obj[0]->{'thetext'} = $new_comment; } # Represents which fields from the bugs table are handled by process_bug.cgi. @@ -3032,74 +3061,6 @@ sub ValidateTime { } } -sub GetComments { - my ($id, $comment_sort_order, $start, $end, $raw) = @_; - my $dbh = Bugzilla->dbh; - - $comment_sort_order = $comment_sort_order || - Bugzilla->user->settings->{'comment_sort_order'}->{'value'}; - - my $sort_order = ($comment_sort_order eq "oldest_to_newest") ? 'asc' : 'desc'; - - my @comments; - my @args = ($id); - - my $query = 'SELECT longdescs.comment_id AS id, profiles.userid, ' . - $dbh->sql_date_format('longdescs.bug_when', '%Y.%m.%d %H:%i:%s') . - ' AS time, longdescs.thetext AS body, longdescs.work_time, - isprivate, already_wrapped, type, extra_data - FROM longdescs - INNER JOIN profiles - ON profiles.userid = longdescs.who - WHERE longdescs.bug_id = ?'; - - if ($start) { - $query .= ' AND longdescs.bug_when > ?'; - push(@args, $start); - } - if ($end) { - $query .= ' AND longdescs.bug_when <= ?'; - push(@args, $end); - } - - $query .= " ORDER BY longdescs.bug_when $sort_order"; - my $sth = $dbh->prepare($query); - $sth->execute(@args); - - # Cache the users we look up - my %users; - - while (my $comment_ref = $sth->fetchrow_hashref()) { - my %comment = %$comment_ref; - $users{$comment{'userid'}} ||= new Bugzilla::User($comment{'userid'}); - $comment{'author'} = $users{$comment{'userid'}}; - - # If raw data is requested, do not format 'special' comments. - $comment{'body'} = format_comment(\%comment) unless $raw; - - push (@comments, \%comment); - } - - if ($comment_sort_order eq "newest_to_oldest_desc_first") { - unshift(@comments, pop @comments); - } - - return \@comments; -} - -# Format language specific comments. -sub format_comment { - my $comment = shift; - my $template = Bugzilla->template_inner; - my $vars = {comment => $comment}; - my $body; - - $template->process("bug/format_comment.txt.tmpl", $vars, \$body) - || ThrowTemplateError($template->error()); - $body =~ s/^X//; - return $body; -} - # Get the activity of a bug, starting from $starttime (if given). # This routine assumes Bugzilla::Bug->check has been previously called. sub GetBugActivity { @@ -3126,8 +3087,7 @@ sub GetBugActivity { # Only includes attachments the user is allowed to see. my $suppjoins = ""; my $suppwhere = ""; - if (Bugzilla->params->{"insidergroup"} - && !Bugzilla->user->in_group(Bugzilla->params->{'insidergroup'})) + if (!Bugzilla->user->is_insider) { $suppjoins = "LEFT JOIN attachments ON attachments.attach_id = bugs_activity.attach_id"; @@ -3167,8 +3127,7 @@ sub GetBugActivity { || $fieldname eq 'work_time' || $fieldname eq 'deadline') { - $activity_visible = - Bugzilla->user->in_group(Bugzilla->params->{'timetrackinggroup'}) ? 1 : 0; + $activity_visible = Bugzilla->user->is_timetracker; } else { $activity_visible = 1; } @@ -3456,8 +3415,7 @@ sub check_can_change_field { # Only users in the time-tracking group can change time-tracking fields. if ( grep($_ eq $field, qw(deadline estimated_time remaining_time)) ) { - my $tt_group = Bugzilla->params->{timetrackinggroup}; - if (!$tt_group || !$user->in_group($tt_group)) { + if (!$user->is_timetracker) { $$PrivilegesRequired = 3; return 0; } @@ -3644,7 +3602,7 @@ sub _validate_attribute { my @valid_attributes = ( # Miscellaneous properties and methods. qw(error groups product_id component_id - longdescs milestoneurl attachments + comments milestoneurl attachments isopened isunconfirmed flag_types num_attachment_flag_types show_attachment_flags any_flags_requesteeble), diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index d654a139b..2aff7daf4 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -119,6 +119,7 @@ sub Send { my $msg = ""; my $dbh = Bugzilla->dbh; + my $bug = new Bugzilla::Bug($id); # XXX - These variables below are useless. We could use field object # methods directly. But we first have to implement a cache in @@ -356,7 +357,7 @@ sub Send { } } - my $comments = get_comments_by_bug($id, $start, $end); + my $comments = $bug->comments({ after => $start, to => $end }); ########################################################################### # Start of email filtering code @@ -569,7 +570,7 @@ sub sendMail { } if (!$user->is_insider) { - @send_comments = grep { !$_->{isprivate} } @send_comments; + @send_comments = grep { !$_->is_private } @send_comments; } if ($difftext eq "" && !scalar(@send_comments) && !$isnew) { @@ -650,38 +651,4 @@ sub sendMail { return 1; } -# Get bug comments for the given period. -sub get_comments_by_bug { - my ($id, $start, $end) = @_; - my $dbh = Bugzilla->dbh; - - my $result = ""; - my $count = 0; - - # $start will be undef for new bugs, and defined for pre-existing bugs. - if ($start) { - # If $start is not NULL, obtain the count-index - # of this comment for the leading "Comment #xxx" line. - $count = $dbh->selectrow_array('SELECT COUNT(*) FROM longdescs - WHERE bug_id = ? AND bug_when <= ?', - undef, ($id, $start)); - } - - my $raw = 1; # Do not format comments which are not of type CMT_NORMAL. - my $comments = Bugzilla::Bug::GetComments($id, "oldest_to_newest", $start, $end, $raw); - my $attach_base = correct_urlbase() . 'attachment.cgi?id='; - - foreach my $comment (@$comments) { - $comment->{count} = $count++; - # If an attachment was created, then add an URL. (Note: the 'g'lobal - # replace should work with comments with multiple attachments.) - if ($comment->{body} =~ /Created an attachment \(/) { - $comment->{body} =~ s/(Created an attachment \(id=([0-9]+)\))/$1\n --> \($attach_base$2\)/g; - } - $comment->{body} = $comment->{'already_wrapped'} ? $comment->{body} : wrap_comment($comment->{body}); - } - - return $comments; -} - 1; diff --git a/Bugzilla/CGI.pm b/Bugzilla/CGI.pm index 8c68f996c..bebff2d63 100644 --- a/Bugzilla/CGI.pm +++ b/Bugzilla/CGI.pm @@ -416,6 +416,39 @@ sub url_is_attachment_base { return ($self->self_url =~ $regex) ? 1 : 0; } +########################## +# Vars TIEHASH Interface # +########################## + +# Fix the TIEHASH interface (scalar $cgi->Vars) to return and accept +# arrayrefs. +sub STORE { + my $self = shift; + my ($param, $value) = @_; + if (defined $value and ref $value eq 'ARRAY') { + return $self->param(-name => $param, -value => $value); + } + return $self->SUPER::STORE(@_); +} + +sub FETCH { + my ($self, $param) = @_; + return $self if $param eq 'CGI'; # CGI.pm did this, so we do too. + my @result = $self->param($param); + return undef if !scalar(@result); + return $result[0] if scalar(@result) == 1; + return \@result; +} + +# For the Vars TIEHASH interface: the normal CGI.pm DELETE doesn't return +# the value deleted, but Perl's "delete" expects that value. +sub DELETE { + my ($self, $param) = @_; + my $value = $self->FETCH($param); + $self->delete($param); + return $value; +} + 1; __END__ diff --git a/Bugzilla/CVS/Entries b/Bugzilla/CVS/Entries index 8bb166ae1..5c64cb5d6 100644 --- a/Bugzilla/CVS/Entries +++ b/Bugzilla/CVS/Entries @@ -1,39 +1,40 @@ -/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-3_5_1 -/Attachment.pm/1.66/Mon Sep 28 17:24:41 2009//TBUGZILLA-3_5_1 -/Auth.pm/1.21/Tue Jan 20 20:09:46 2009//TBUGZILLA-3_5_1 -/Bug.pm/1.294/Sun Nov 1 20:12:26 2009//TBUGZILLA-3_5_1 -/BugMail.pm/1.130/Sat Oct 31 23:19:48 2009//TBUGZILLA-3_5_1 -/CGI.pm/1.50/Sat Oct 24 05:22:46 2009//TBUGZILLA-3_5_1 -/Chart.pm/1.18/Mon Aug 17 22:59:52 2009//TBUGZILLA-3_5_1 -/Classification.pm/1.14/Sun Jan 4 23:15:28 2009//TBUGZILLA-3_5_1 -/Component.pm/1.17/Sat Apr 11 23:33:26 2009//TBUGZILLA-3_5_1 -/Config.pm/1.80/Fri Oct 9 06:15:31 2009//TBUGZILLA-3_5_1 -/Constants.pm/1.116/Thu Nov 5 12:26:47 2009//TBUGZILLA-3_5_1 -/DB.pm/1.129/Sat Oct 24 05:30:15 2009//TBUGZILLA-3_5_1 -/Error.pm/1.25/Tue Mar 31 06:37:55 2009//TBUGZILLA-3_5_1 -/Field.pm/1.47/Sun Nov 1 19:49:24 2009//TBUGZILLA-3_5_1 -/Flag.pm/1.104/Tue Oct 27 23:08:40 2009//TBUGZILLA-3_5_1 -/FlagType.pm/1.39/Wed Sep 17 03:47:36 2008//TBUGZILLA-3_5_1 -/Group.pm/1.25/Wed Jul 22 19:29:37 2009//TBUGZILLA-3_5_1 -/Hook.pm/1.32/Tue Oct 20 23:08:03 2009//TBUGZILLA-3_5_1 -/Install.pm/1.23/Mon Aug 3 05:14:39 2009//TBUGZILLA-3_5_1 -/JobQueue.pm/1.2/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_1 -/Keyword.pm/1.8/Tue Aug 11 04:34:21 2009//TBUGZILLA-3_5_1 -/Mailer.pm/1.28/Fri Oct 9 04:31:10 2009//TBUGZILLA-3_5_1 -/Migrate.pm/1.1/Sat Oct 24 05:30:15 2009//TBUGZILLA-3_5_1 -/Milestone.pm/1.12/Fri Jan 18 15:56:54 2008//TBUGZILLA-3_5_1 -/Object.pm/1.37/Sat Oct 24 05:26:35 2009//TBUGZILLA-3_5_1 -/Product.pm/1.40/Sat Oct 24 05:24:53 2009//TBUGZILLA-3_5_1 -/Search.pm/1.175/Tue Aug 18 22:09:35 2009//TBUGZILLA-3_5_1 -/Series.pm/1.20/Sun Oct 4 21:00:25 2009//TBUGZILLA-3_5_1 -/Status.pm/1.12/Thu Aug 6 14:59:37 2009//TBUGZILLA-3_5_1 -/Template.pm/1.112/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_1 -/Token.pm/1.58/Mon Feb 9 19:18:59 2009//TBUGZILLA-3_5_1 -/Update.pm/1.11/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_1 -/User.pm/1.195/Tue Nov 3 19:46:15 2009//TBUGZILLA-3_5_1 -/Util.pm/1.94/Sat Oct 24 05:26:35 2009//TBUGZILLA-3_5_1 -/Version.pm/1.15/Fri Apr 10 09:36:45 2009//TBUGZILLA-3_5_1 -/WebService.pm/1.19/Sat May 9 17:47:25 2009//TBUGZILLA-3_5_1 +/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-3_5_2 +/Attachment.pm/1.66/Mon Sep 28 17:24:41 2009//TBUGZILLA-3_5_2 +/Auth.pm/1.21/Tue Jan 20 20:09:46 2009//TBUGZILLA-3_5_2 +/Bug.pm/1.300/Wed Nov 18 07:15:23 2009//TBUGZILLA-3_5_2 +/BugMail.pm/1.131/Tue Nov 10 01:36:03 2009//TBUGZILLA-3_5_2 +/CGI.pm/1.51/Mon Nov 9 19:15:28 2009//TBUGZILLA-3_5_2 +/Chart.pm/1.18/Mon Aug 17 22:59:52 2009//TBUGZILLA-3_5_2 +/Classification.pm/1.14/Sun Jan 4 23:15:28 2009//TBUGZILLA-3_5_2 +/Comment.pm/1.1/Tue Nov 10 01:36:03 2009//TBUGZILLA-3_5_2 +/Component.pm/1.17/Sat Apr 11 23:33:26 2009//TBUGZILLA-3_5_2 +/Config.pm/1.80/Fri Oct 9 06:15:31 2009//TBUGZILLA-3_5_2 +/Constants.pm/1.119/Thu Nov 19 02:14:26 2009//TBUGZILLA-3_5_2 +/DB.pm/1.131/Wed Nov 18 07:08:33 2009//TBUGZILLA-3_5_2 +/Error.pm/1.25/Tue Mar 31 06:37:55 2009//TBUGZILLA-3_5_2 +/Field.pm/1.47/Sun Nov 1 19:49:24 2009//TBUGZILLA-3_5_2 +/Flag.pm/1.104/Tue Oct 27 23:08:40 2009//TBUGZILLA-3_5_2 +/FlagType.pm/1.39/Wed Sep 17 03:47:36 2008//TBUGZILLA-3_5_2 +/Group.pm/1.25/Wed Jul 22 19:29:37 2009//TBUGZILLA-3_5_2 +/Hook.pm/1.37/Wed Nov 18 07:17:51 2009//TBUGZILLA-3_5_2 +/Install.pm/1.23/Mon Aug 3 05:14:39 2009//TBUGZILLA-3_5_2 +/JobQueue.pm/1.3/Tue Nov 10 21:19:47 2009//TBUGZILLA-3_5_2 +/Keyword.pm/1.8/Tue Aug 11 04:34:21 2009//TBUGZILLA-3_5_2 +/Mailer.pm/1.28/Fri Oct 9 04:31:10 2009//TBUGZILLA-3_5_2 +/Migrate.pm/1.3/Tue Nov 17 21:16:08 2009//TBUGZILLA-3_5_2 +/Milestone.pm/1.12/Fri Jan 18 15:56:54 2008//TBUGZILLA-3_5_2 +/Object.pm/1.40/Wed Nov 18 07:17:51 2009//TBUGZILLA-3_5_2 +/Product.pm/1.40/Sat Oct 24 05:24:53 2009//TBUGZILLA-3_5_2 +/Search.pm/1.177/Mon Nov 9 20:54:50 2009//TBUGZILLA-3_5_2 +/Series.pm/1.20/Sun Oct 4 21:00:25 2009//TBUGZILLA-3_5_2 +/Status.pm/1.12/Thu Aug 6 14:59:37 2009//TBUGZILLA-3_5_2 +/Template.pm/1.115/Thu Nov 19 02:09:45 2009//TBUGZILLA-3_5_2 +/Token.pm/1.58/Mon Feb 9 19:18:59 2009//TBUGZILLA-3_5_2 +/Update.pm/1.11/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_2 +/User.pm/1.196/Tue Nov 10 01:36:03 2009//TBUGZILLA-3_5_2 +/Util.pm/1.97/Wed Nov 18 18:23:32 2009//TBUGZILLA-3_5_2 +/Version.pm/1.15/Fri Apr 10 09:36:45 2009//TBUGZILLA-3_5_2 +/WebService.pm/1.20/Mon Nov 9 19:15:28 2009//TBUGZILLA-3_5_2 D/Attachment//// D/Auth//// D/Config//// @@ -47,3 +48,4 @@ D/Search//// D/Template//// D/User//// D/WebService//// +D/Whine//// diff --git a/Bugzilla/CVS/Tag b/Bugzilla/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/CVS/Tag +++ b/Bugzilla/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Comment.pm b/Bugzilla/Comment.pm new file mode 100644 index 000000000..7072dbbee --- /dev/null +++ b/Bugzilla/Comment.pm @@ -0,0 +1,173 @@ +# -*- 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 James Robson. +# Portions created by James Robson are Copyright (c) 2009 James Robson. +# All rights reserved. +# +# Contributor(s): James Robson <arbingersys@gmail.com> + +use strict; + +package Bugzilla::Comment; + +use base qw(Bugzilla::Object); + +use Bugzilla::Constants; +use Bugzilla::Error; +use Bugzilla::Util; + +############################### +#### Initialization #### +############################### + +use constant DB_COLUMNS => qw( + comment_id + bug_id + who + bug_when + work_time + thetext + isprivate + already_wrapped + type + extra_data +); + +use constant DB_TABLE => 'longdescs'; +use constant ID_FIELD => 'comment_id'; +use constant LIST_ORDER => 'bug_when'; + +############################### +#### Accessors ###### +############################### + +sub already_wrapped { return $_[0]->{'already_wrapped'}; } +sub body { return $_[0]->{'thetext'}; } +sub bug_id { return $_[0]->{'bug_id'}; } +sub creation_ts { return $_[0]->{'bug_when'}; } +sub is_private { return $_[0]->{'isprivate'}; } +sub work_time { return $_[0]->{'work_time'}; } + +sub author { + my $self = shift; + $self->{'author'} ||= new Bugzilla::User($self->{'who'}); + return $self->{'author'}; +} + +sub body_full { + my ($self, $params) = @_; + $params ||= {}; + my $template = Bugzilla->template_inner; + my $body; + $template->process("bug/format_comment.txt.tmpl", + { comment => $self, %$params }, \$body) + || ThrowTemplateError($template->error()); + $body =~ s/^X//; + if ($params->{wrap} and !$self->already_wrapped) { + $body = wrap_comment($body); + } + return $body; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Comment - A Comment for a given bug + +=head1 SYNOPSIS + + use Bugzilla::Comment; + + my $comment = Bugzilla::Comment->new($comment_id); + my $comments = Bugzilla::Comment->new_from_list($comment_ids); + +=head1 DESCRIPTION + +Bugzilla::Comment represents a comment attached to a bug. + +This implements all standard C<Bugzilla::Object> methods. See +L<Bugzilla::Object> for more details. + +=head2 Accessors + +=over + +=item C<bug_id> + +C<int> The ID of the bug to which the comment belongs. + +=item C<creation_ts> + +C<string> The comment creation timestamp. + +=item C<body> + +C<string> The body without any special additional text. + +=item C<work_time> + +C<string> Time spent as related to this comment. + +=item C<is_private> + +C<boolean> Comment is marked as private + +=item C<already_wrapped> + +If this comment is stored in the database word-wrapped, this will be C<1>. +C<0> otherwise. + +=item C<author> + +L<Bugzilla::User> who created the comment. + +=item C<body_full> + +=over + +=item B<Description> + +C<string> Body of the comment, including any special text (such as +"this bug was marked as a duplicate of..."). + +=item B<Params> + +=over + +=item C<is_bugmail> + +C<boolean>. C<1> if this comment should be formatted specifically for +bugmail. + +=item C<wrap> + +C<boolean>. C<1> if the comment should be returned word-wrapped. + +=back + +=item B<Returns> + +A string, the full text of the comment as it would be displayed to an end-user. + +=back + + + +=back + +=cut diff --git a/Bugzilla/Config/CVS/Entries b/Bugzilla/Config/CVS/Entries index 00e4c3ff5..950fc4285 100644 --- a/Bugzilla/Config/CVS/Entries +++ b/Bugzilla/Config/CVS/Entries @@ -1,18 +1,18 @@ -/Admin.pm/1.4/Tue Dec 16 21:22:02 2008//TBUGZILLA-3_5_1 -/Attachment.pm/1.8/Thu Aug 13 21:32:16 2009//TBUGZILLA-3_5_1 -/Auth.pm/1.4/Sun Oct 18 23:34:58 2009//TBUGZILLA-3_5_1 -/BugChange.pm/1.7/Wed Dec 10 18:40:00 2008//TBUGZILLA-3_5_1 -/BugFields.pm/1.7/Fri Apr 17 22:27:38 2009//TBUGZILLA-3_5_1 -/BugMove.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_1 -/Common.pm/1.29/Sat Oct 24 05:21:08 2009//TBUGZILLA-3_5_1 -/Core.pm/1.11/Fri Oct 9 04:31:11 2009//TBUGZILLA-3_5_1 -/DependencyGraph.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_1 -/GroupSecurity.pm/1.9/Tue Mar 31 19:16:58 2009//TBUGZILLA-3_5_1 -/LDAP.pm/1.2/Fri Jun 2 11:52:48 2006//TBUGZILLA-3_5_1 -/MTA.pm/1.17/Wed Dec 24 03:43:40 2008//TBUGZILLA-3_5_1 -/PatchViewer.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_1 -/Query.pm/1.7/Mon Jul 20 04:10:55 2009//TBUGZILLA-3_5_1 -/RADIUS.pm/1.1/Thu Aug 2 22:38:39 2007//TBUGZILLA-3_5_1 -/ShadowDB.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_1 -/UserMatch.pm/1.2/Tue Mar 31 19:24:23 2009//TBUGZILLA-3_5_1 +/Admin.pm/1.4/Tue Dec 16 21:22:02 2008//TBUGZILLA-3_5_2 +/Attachment.pm/1.8/Thu Aug 13 21:32:16 2009//TBUGZILLA-3_5_2 +/Auth.pm/1.4/Sun Oct 18 23:34:58 2009//TBUGZILLA-3_5_2 +/BugChange.pm/1.7/Wed Dec 10 18:40:00 2008//TBUGZILLA-3_5_2 +/BugFields.pm/1.7/Fri Apr 17 22:27:38 2009//TBUGZILLA-3_5_2 +/BugMove.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 +/Common.pm/1.29/Sat Oct 24 05:21:08 2009//TBUGZILLA-3_5_2 +/Core.pm/1.11/Fri Oct 9 04:31:11 2009//TBUGZILLA-3_5_2 +/DependencyGraph.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 +/GroupSecurity.pm/1.9/Tue Mar 31 19:16:58 2009//TBUGZILLA-3_5_2 +/LDAP.pm/1.2/Fri Jun 2 11:52:48 2006//TBUGZILLA-3_5_2 +/MTA.pm/1.17/Wed Dec 24 03:43:40 2008//TBUGZILLA-3_5_2 +/PatchViewer.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 +/Query.pm/1.7/Mon Jul 20 04:10:55 2009//TBUGZILLA-3_5_2 +/RADIUS.pm/1.1/Thu Aug 2 22:38:39 2007//TBUGZILLA-3_5_2 +/ShadowDB.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 +/UserMatch.pm/1.2/Tue Mar 31 19:24:23 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Config/CVS/Tag b/Bugzilla/Config/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Config/CVS/Tag +++ b/Bugzilla/Config/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index c7db757ad..31d00473e 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -126,6 +126,8 @@ use File::Basename; FIELD_TYPE_BUG_ID FIELD_TYPE_BUG_URLS + TIMETRACKING_FIELDS + USAGE_MODE_BROWSER USAGE_MODE_CMDLINE USAGE_MODE_XMLRPC @@ -171,7 +173,7 @@ use File::Basename; # CONSTANTS # # Bugzilla version -use constant BUGZILLA_VERSION => "3.5.1"; +use constant BUGZILLA_VERSION => "3.5.2"; # These are unique values that are unlikely to match a string or a number, # to be used in criteria for match() functions and other things. They start @@ -358,6 +360,12 @@ use constant FIELD_TYPE_DATETIME => 5; use constant FIELD_TYPE_BUG_ID => 6; use constant FIELD_TYPE_BUG_URLS => 7; +# The fields from fielddefs that are blocked from non-timetracking users. +# work_time is sometimes called actual_time. +use constant TIMETRACKING_FIELDS => + qw(estimated_time remaining_time work_time actual_time + percentage_complete deadline); + # The maximum number of days a token will remain valid. use constant MAX_TOKEN_AGE => 3; # How many days a logincookie will remain valid if not used. diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm index a702a0f60..7e40c1627 100644 --- a/Bugzilla/DB.pm +++ b/Bugzilla/DB.pm @@ -271,8 +271,7 @@ EOT } # List of abstract methods we are checking the derived class implements -our @_abstract_methods = qw(REQUIRED_VERSION PROGRAM_NAME DBD_VERSION - new sql_regexp sql_not_regexp sql_limit sql_to_days +our @_abstract_methods = qw(new sql_regexp sql_not_regexp sql_limit sql_to_days sql_date_format sql_interval bz_explain sql_group_concat); @@ -287,7 +286,7 @@ sub import { # make sure all abstract methods are implemented foreach my $meth (@_abstract_methods) { $pkg->can($meth) - or croak("Class $pkg does not define method $meth"); + or die("Class $pkg does not define method $meth"); } } @@ -538,6 +537,13 @@ sub bz_alter_column { ThrowCodeError('column_not_null_no_default_alter', { name => "$table.$name" }) if ($any_nulls); } + # Preserve foreign key definitions in the Schema object when altering + # types. + if (defined $current_def->{REFERENCES}) { + # Make sure we don't modify the caller's $new_def. + $new_def = dclone($new_def); + $new_def->{REFERENCES} = $current_def->{REFERENCES}; + } $self->bz_alter_column_raw($table, $name, $new_def, $current_def, $set_nulls_to); $self->_bz_real_schema->set_column($table, $name, $new_def); diff --git a/Bugzilla/DB/CVS/Entries b/Bugzilla/DB/CVS/Entries index 3d9f5cd52..fd3b3e025 100644 --- a/Bugzilla/DB/CVS/Entries +++ b/Bugzilla/DB/CVS/Entries @@ -1,5 +1,5 @@ -/Mysql.pm/1.79/Sun Sep 20 22:33:32 2009//TBUGZILLA-3_5_1 -/Oracle.pm/1.25/Mon Aug 17 21:31:37 2009//TBUGZILLA-3_5_1 -/Pg.pm/1.32/Mon Aug 17 21:31:37 2009//TBUGZILLA-3_5_1 -/Schema.pm/1.124/Sun Oct 18 23:34:59 2009//TBUGZILLA-3_5_1 +/Mysql.pm/1.79/Sun Sep 20 22:33:32 2009//TBUGZILLA-3_5_2 +/Oracle.pm/1.25/Mon Aug 17 21:31:37 2009//TBUGZILLA-3_5_2 +/Pg.pm/1.32/Mon Aug 17 21:31:37 2009//TBUGZILLA-3_5_2 +/Schema.pm/1.124/Sun Oct 18 23:34:59 2009//TBUGZILLA-3_5_2 D/Schema//// diff --git a/Bugzilla/DB/CVS/Tag b/Bugzilla/DB/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/DB/CVS/Tag +++ b/Bugzilla/DB/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/DB/Schema/CVS/Entries b/Bugzilla/DB/Schema/CVS/Entries index 79199b65b..503934930 100644 --- a/Bugzilla/DB/Schema/CVS/Entries +++ b/Bugzilla/DB/Schema/CVS/Entries @@ -1,4 +1,4 @@ -/Mysql.pm/1.23/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_1 -/Oracle.pm/1.12/Sat Oct 24 05:31:42 2009//TBUGZILLA-3_5_1 -/Pg.pm/1.16/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_1 +/Mysql.pm/1.23/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_2 +/Oracle.pm/1.12/Sat Oct 24 05:31:42 2009//TBUGZILLA-3_5_2 +/Pg.pm/1.16/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/DB/Schema/CVS/Tag b/Bugzilla/DB/Schema/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/DB/Schema/CVS/Tag +++ b/Bugzilla/DB/Schema/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Field/CVS/Entries b/Bugzilla/Field/CVS/Entries index 31afbee94..bafcb1cfc 100644 --- a/Bugzilla/Field/CVS/Entries +++ b/Bugzilla/Field/CVS/Entries @@ -1,2 +1,2 @@ -/Choice.pm/1.13/Thu Jul 23 21:33:54 2009//TBUGZILLA-3_5_1 +/Choice.pm/1.13/Thu Jul 23 21:33:54 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Field/CVS/Tag b/Bugzilla/Field/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Field/CVS/Tag +++ b/Bugzilla/Field/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index 51bce7fbe..b35a338d6 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -144,6 +144,9 @@ These params are accessible through L<Bugzilla/hook_args>. That returns a hashref. Very frequently, if you want your hook to do anything, you have to modify these variables. +You may also want to use L<Bugzilla/input_params> to get parameters +that were passed to the current CGI script or WebService method. + =head2 Versioning Extensions Every extension must have a file in its root called F<info.pl>. @@ -277,6 +280,21 @@ values. =back +=head2 bug-end_of_create_validators + +This happens during L<Bugzilla::Bug/create>, after all parameters have +been validated, but before anything has been inserted into the database. + +Params: + +=over + +=item C<params> + +A hashref. The validated parameters passed to C<create>. + +=back + =head2 bug-end_of_update This happens at the end of L<Bugzilla::Bug/update>, after all other changes are @@ -582,6 +600,77 @@ Params: =back +=head2 object-before_create + +This happens at the beginning of L<Bugzilla::Object/create>. + +Params: + +=over + +=item C<class> + +The name of the class that C<create> was called on. You can check this +like C<< if ($class->isa('Some::Class')) >> in your code, to perform specific +tasks before C<create> for only certain classes. + +=item C<params> + +A hashref. The set of named parameters passed to C<create>. + +=back + +=head2 object-before_set + +Called during L<Bugzilla::Object/set>, before any actual work is done. +You can use this to perform actions before a value is changed for +specific fields on certain types of objects. + +Params: + +=over + +=item C<object> + +The object that C<set> was called on. You will probably want to +do something like C<< if ($object->isa('Some::Class')) >> in your code to +limit your changes to only certain subclasses of Bugzilla::Object. + +=item C<field> + +The name of the field being updated in the object. + +=item C<value> + +The value being set on the object. + +=back + +=head2 object-end_of_create_validators + +Called at the end of L<Bugzilla::Object/run_create_validators>. You can +use this to run additional validation when creating an object. + +If a subclass has overridden C<run_create_validators>, then this usually +happens I<before> the subclass does its custom validation. + +Params: + +=over + +=item C<class> + +The name of the class that C<create> was called on. You can check this +like C<< if ($class->isa('Some::Class')) >> in your code, to perform specific +tasks for only certain classes. + +=item C<params> + +A hashref. The set of named parameters passed to C<create>, modified and +validated by the C<VALIDATORS> specified for the object. + +=back + =head2 page-before_template This is a simple way to add your own pages to Bugzilla. This hooks C<page.cgi>, diff --git a/Bugzilla/Install/CVS/Entries b/Bugzilla/Install/CVS/Entries index f901362f9..959a04086 100644 --- a/Bugzilla/Install/CVS/Entries +++ b/Bugzilla/Install/CVS/Entries @@ -1,7 +1,7 @@ -/CPAN.pm/1.2/Sun Dec 23 05:43:44 2007//TBUGZILLA-3_5_1 -/DB.pm/1.74/Sun Nov 1 19:49:25 2009//TBUGZILLA-3_5_1 -/Filesystem.pm/1.40/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_1 -/Localconfig.pm/1.18/Wed Sep 30 11:42:54 2009//TBUGZILLA-3_5_1 -/Requirements.pm/1.72/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_1 -/Util.pm/1.19/Wed Aug 12 13:05:31 2009//TBUGZILLA-3_5_1 +/CPAN.pm/1.2/Sun Dec 23 05:43:44 2007//TBUGZILLA-3_5_2 +/DB.pm/1.74/Sun Nov 1 19:49:25 2009//TBUGZILLA-3_5_2 +/Filesystem.pm/1.40/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_2 +/Localconfig.pm/1.18/Wed Sep 30 11:42:54 2009//TBUGZILLA-3_5_2 +/Requirements.pm/1.74/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_2 +/Util.pm/1.20/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Install/CVS/Tag b/Bugzilla/Install/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Install/CVS/Tag +++ b/Bugzilla/Install/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm index 2b545ebb8..1fa53de9b 100644 --- a/Bugzilla/Install/Requirements.pm +++ b/Bugzilla/Install/Requirements.pm @@ -35,11 +35,13 @@ use base qw(Exporter); our @EXPORT = qw( REQUIRED_MODULES OPTIONAL_MODULES + FEATURE_FILES check_requirements check_graphviz have_vers install_command + map_files_to_features ); # This is how many *'s are in the top of each "box" message printed @@ -232,6 +234,12 @@ sub OPTIONAL_MODULES { version => 0, feature => ['jsonrpc'], }, + { + package => 'Test-Taint', + module => 'Test::Taint', + version => 0, + feature => ['jsonrpc', 'xmlrpc'], + }, { # We need the 'utf8_mode' method of HTML::Parser, for HTML::Scrubber. package => 'HTML-Parser', @@ -288,6 +296,22 @@ sub OPTIONAL_MODULES { return $all_modules; }; +# This maps features to the files that require that feature in order +# to compile. It is used by t/001compile.t and mod_perl.pl. +use constant FEATURE_FILES => ( + jsonrpc => ['Bugzilla/WebService/Server/JSONRPC.pm', 'jsonrpc.cgi'], + xmlrpc => ['Bugzilla/WebService/Server/XMLRPC.pm', 'xmlrpc.cgi', + 'Bugzilla/WebService.pm', 'Bugzilla/WebService/*.pm'], + moving => ['importxml.pl'], + auth_ldap => ['Bugzilla/Auth/Verify/LDAP.pm'], + auth_radius => ['Bugzilla/Auth/Verify/RADIUS.pm'], + inbound_email => ['email_in.pl'], + jobqueue => ['Bugzilla/Job/*', 'Bugzilla/JobQueue.pm', + 'Bugzilla/JobQueue/*', 'jobqueue.pl'], + patch_viewer => ['Bugzilla/Attachment/PatchReader.pm'], + updates => ['Bugzilla/Update.pm'], +); + # This implements the install-requirements hook described in Bugzilla::Hook. sub _get_extension_requirements { my ($function, $base_modules) = @_; @@ -584,6 +608,21 @@ sub install_command { return sprintf $command, $package; } +# This does a reverse mapping for FEATURE_FILES. +sub map_files_to_features { + my %features = FEATURE_FILES; + my %files; + foreach my $feature (keys %features) { + my @my_files = @{ $features{$feature} }; + foreach my $pattern (@my_files) { + foreach my $file (glob $pattern) { + $files{$file} = $feature; + } + } + } + return \%files; +} + 1; __END__ @@ -601,16 +640,42 @@ perl modules it requires.) =head1 CONSTANTS -=over 4 +=over =item C<REQUIRED_MODULES> An arrayref of hashrefs that describes the perl modules required by -Bugzilla. The hashes have two keys, C<name> and C<version>, which -represent the name of the module and the version that we require. +Bugzilla. The hashes have three keys: + +=over + +=item C<package> - The name of the Perl package that you'd find on +CPAN for this requirement. + +=item C<module> - The name of a module that can be passed to the +C<install> command in C<CPAN.pm> to install this module. + +=item C<version> - The version of this module that we require, or C<0> +if any version is acceptable. =back +=item C<OPTIONAL_MODULES> + +An arrayref of hashrefs that describes the perl modules that add +additional features to Bugzilla if installed. Its hashes have all +the fields of L</REQUIRED_MODULES>, plus a C<feature> item--an arrayref +of strings that describe what features require this module. + +=item C<FEATURE_FILES> + +A hashref that describes what files should only be compiled if a certain +feature is enabled. The feature is the key, and the values are arrayrefs +of file names (which are passed to C<glob>, so shell patterns work). + +=back + + =head1 SUBROUTINES =over 4 @@ -693,4 +758,9 @@ Returns: C<1> if the check was successful, C<0> otherwise. Returns: nothing +=item C<map_files_to_features> + +Returns a hashref where file names are the keys and the value is the feature +that must be enabled in order to compile that file. + =back diff --git a/Bugzilla/Install/Util.pm b/Bugzilla/Install/Util.pm index e53164d25..effb39ee8 100644 --- a/Bugzilla/Install/Util.pm +++ b/Bugzilla/Install/Util.pm @@ -127,15 +127,28 @@ sub install_string { } sub include_languages { + # If we are in CGI mode (not in checksetup.pl) and if the function has + # been called without any parameter, then we cache the result of this + # function in Bugzilla->request_cache. This is done to improve the + # performance of the template processing. + my $to_be_cached = 0; + if (exists $ENV{'SERVER_SOFTWARE'} and not @_) { + my $cache = Bugzilla->request_cache; + if (exists $cache->{include_languages}) { + return @{$cache->{include_languages}} + } + $to_be_cached = 1; + } my ($params) = @_; $params ||= {}; # Basically, the way this works is that we have a list of languages # that we *want*, and a list of languages that Bugzilla actually # supports. The caller tells us what languages they want, by setting - # $ENV{HTTP_ACCEPT_LANGUAGE} or $params->{only_language}. The languages - # we support are those specified in $params->{use_languages}. Otherwise - # we support every language installed in the template/ directory. + # $ENV{HTTP_ACCEPT_LANGUAGE}, using the "LANG" cookie or setting + # $params->{only_language}. The languages we support are those + # specified in $params->{use_languages}. Otherwise we support every + # language installed in the template/ directory. my @wanted; if ($params->{only_language}) { @@ -143,6 +156,15 @@ sub include_languages { } else { @wanted = _sort_accept_language($ENV{'HTTP_ACCEPT_LANGUAGE'} || ''); + # Don't use the cookie if we are in "checksetup.pl". The test + # with $ENV{'SERVER_SOFTWARE'} is the same as in + # Bugzilla:Util::i_am_cgi. + if (exists $ENV{'SERVER_SOFTWARE'}) { + my $cgi = Bugzilla->cgi; + if (defined (my $lang = $cgi->cookie('LANG'))) { + unshift @wanted, $lang; + } + } } my @supported; @@ -175,6 +197,13 @@ sub include_languages { push(@usedlanguages, 'en'); } + # Cache the result if we are in CGI mode and called without parameter + # (see the comment at the top of this function). + if ($to_be_cached) { + my $cache = Bugzilla->request_cache; + $cache->{include_languages} = \@usedlanguages; + } + return @usedlanguages; } diff --git a/Bugzilla/Job/CVS/Entries b/Bugzilla/Job/CVS/Entries index 943bac79c..f409cb5ae 100644 --- a/Bugzilla/Job/CVS/Entries +++ b/Bugzilla/Job/CVS/Entries @@ -1,2 +1,2 @@ -/Mailer.pm/1.3/Thu Sep 10 23:46:21 2009//TBUGZILLA-3_5_1 +/Mailer.pm/1.3/Thu Sep 10 23:46:21 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Job/CVS/Tag b/Bugzilla/Job/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Job/CVS/Tag +++ b/Bugzilla/Job/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/JobQueue.pm b/Bugzilla/JobQueue.pm index d10df9804..9e7172e2b 100644 --- a/Bugzilla/JobQueue.pm +++ b/Bugzilla/JobQueue.pm @@ -27,7 +27,7 @@ use strict; use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::Install::Util qw(install_string); -BEGIN { eval "use base qw(TheSchwartz)"; } +use base qw(TheSchwartz); # This maps job names for Bugzilla::JobQueue to the appropriate modules. # If you add new types of jobs, you should add a mapping here. diff --git a/Bugzilla/JobQueue/CVS/Entries b/Bugzilla/JobQueue/CVS/Entries index 399c07b2b..03c14906f 100644 --- a/Bugzilla/JobQueue/CVS/Entries +++ b/Bugzilla/JobQueue/CVS/Entries @@ -1,2 +1,2 @@ -/Runner.pm/1.5/Fri Sep 4 21:20:27 2009//TBUGZILLA-3_5_1 +/Runner.pm/1.5/Fri Sep 4 21:20:27 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/JobQueue/CVS/Tag b/Bugzilla/JobQueue/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/JobQueue/CVS/Tag +++ b/Bugzilla/JobQueue/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Migrate.pm b/Bugzilla/Migrate.pm index c8f601521..282279e75 100644 --- a/Bugzilla/Migrate.pm +++ b/Bugzilla/Migrate.pm @@ -767,7 +767,12 @@ sub insert_bugs { my $created = Bugzilla::Bug->create($bug); $self->debug('Created bug ' . $created->id); Bugzilla->set_user($super_user); - + + if (defined $bug->{creation_ts}) { + $dbh->do('UPDATE bugs SET creation_ts = ?, delta_ts = ? + WHERE bug_id = ?', undef, $bug->{creation_ts}, + $bug->{creation_ts}, $created->id); + } if (defined $bug->{delta_ts}) { $dbh->do('UPDATE bugs SET delta_ts = ? WHERE bug_id = ?', undef, $bug->{delta_ts}, $created->id); @@ -1002,13 +1007,19 @@ user specified C<--verbose> at least that many times on the command line. =head2 parse_date +(Note: Usually you don't need to call this, because L</translate_bug> +handles date translations for you, for bug data.) + Parses a date string and returns a formatted date string that can be inserted into the database. If the input date is missing a timezone, the "timezone" configuration parameter will be used as the timezone of the date. =head2 translate_bug -Uses the C<$translate_fields> and <$translate_values> configuration variables +(Note: Normally you don't have to call this yourself, as +C<Bugzilla::Migrate> does it for you.) + +Uses the C<$translate_fields> and C<$translate_values> configuration variables to convert a hashref of "other bug-tracker" fields into Bugzilla fields. It takes one argument, the hashref to convert. Any unrecognized fields will have their value prepended to the C<comment> element in the returned @@ -1023,9 +1034,11 @@ B<Note:> To save memory, the hashref that you pass in will be destroyed =head2 translate_value -(Note: Normally you will want to use L</translate_bug> instead of this.) +(Note: Generally you only need to use this during L</_read_products> +and L</_read_users> if necessary, because the data returned from +L</_read_bugs> will be put through L</translate_bug>.) -Uses the C<translate_values> configuration variable to convert +Uses the C<$translate_values> configuration variable to convert field values from your bug-tracker to Bugzilla. Takes two arguments, the first being a field name and the second being a value. If the value is an arrayref, C<translate_value> will be called recursively on all @@ -1034,13 +1047,10 @@ the array elements. Also, any date field will be converted into ISO 8601 format, for inserting into the database. -You must use this to translate any bug field values that you return -during L</_read_bugs>, so that they are valid values for -L<Bugzilla::Bug/create>. - =head2 translate_field -(Note: Normally you will want to use L</translate_bug> instead of this.) +(Note: Normally you don't need to use this, because L</translate_bug> +handles it for you.) Translates a field name in your bug-tracker to a field name in Bugzilla, using the rules described in the description of the C<$translate_fields> @@ -1058,7 +1068,7 @@ These are methods that subclasses must implement: Should return an arrayref of hashes. The hashes will be passed to L<Bugzilla::Bug/create> to create bugs in Bugzilla. In addition to -the normal C<create> fields, the hashes can contain two additional +the normal C<create> fields, the hashes can contain three additional items: =over @@ -1070,7 +1080,7 @@ database. The keys should be the names of columns in the longdescs table that you want to set for each comment. C<who> must be a username instead of a user id, though. -You don't need to specify a value for C<bug_id> column. +You don't need to specify a value for the C<bug_id> column. =item history @@ -1080,7 +1090,7 @@ bugs_activity table to set for each change. C<who> must be a username instead of a user id, though, and C<field> (containing the name of some field) is taken instead of C<fieldid>. -You don't need to specify a value for C<bug_id> column. +You don't need to specify a value for the C<bug_id> column. =item attachments @@ -1090,7 +1100,7 @@ must be a file handle--we recommend using L<IO::File/new_tmpfile> to create anonymous temporary files for this purpose.) You should specify a C<submitter> argument containing the username of the attachment's submitter. -You don't need to specify a value for the C<bug> argument. +You don't need to specify a value for the the C<bug> argument. =back @@ -1136,11 +1146,6 @@ always include the default C<CONFIG_VARS> (by calling $self->SUPER::CONFIG_VARS) as part of your return value, if you override this method. -In addition to the normal fields from C<LOCALCONFIG_VARS>, you can also -specify a C<check> key for each item, which should be a subroutine -reference. When the configuration file is read, this subroutine will be -called (as a method) to make sure that the value is valid. - =head2 NON_COMMENT_FIELDS An array (not an arrayref). If there are fields that are not translated diff --git a/Bugzilla/Migrate/CVS/Entries b/Bugzilla/Migrate/CVS/Entries index 85605fc8c..f006dcc16 100644 --- a/Bugzilla/Migrate/CVS/Entries +++ b/Bugzilla/Migrate/CVS/Entries @@ -1,2 +1,2 @@ -/Gnats.pm/1.1/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_1 +/Gnats.pm/1.1/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Migrate/CVS/Tag b/Bugzilla/Migrate/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Migrate/CVS/Tag +++ b/Bugzilla/Migrate/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Object.pm b/Bugzilla/Object.pm index b04593f89..0630a78d4 100644 --- a/Bugzilla/Object.pm +++ b/Bugzilla/Object.pm @@ -24,6 +24,7 @@ use strict; package Bugzilla::Object; use Bugzilla::Constants; +use Bugzilla::Hook; use Bugzilla::Util; use Bugzilla::Error; @@ -278,6 +279,10 @@ sub set { superclass => __PACKAGE__, function => 'Bugzilla::Object->set' }); + Bugzilla::Hook::process('object-before_set', + { object => $self, field => $field, + value => $value }); + my %validators = (%{$self->VALIDATORS}, %{$self->UPDATE_VALIDATORS}); if (exists $validators{$field}) { my $validator = $validators{$field}; @@ -399,6 +404,11 @@ sub _check_field { sub check_required_create_fields { my ($class, $params) = @_; + # This hook happens here so that even subclasses that don't call + # SUPER::create are still affected by the hook. + Bugzilla::Hook::process('object-before_create', { class => $class, + params => $params }); + foreach my $field ($class->REQUIRED_CREATE_FIELDS) { ThrowCodeError('param_required', { function => "${class}->create", param => $field }) @@ -429,6 +439,9 @@ sub run_create_validators { $field_values{$field} = $value; } + Bugzilla::Hook::process('object-end_of_create_validators', + { class => $class, params => \%field_values }); + return \%field_values; } diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index 9ba7a8c42..4aaf7e14c 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -328,27 +328,30 @@ sub init { } } - my @legal_fields = ("product", "version", "assigned_to", "reporter", - "component", "classification", "target_milestone", - "bug_group"); - - # Include custom select fields. - push(@legal_fields, map { $_->name } @select_fields); - push(@legal_fields, map { $_->name } @multi_select_fields); - - foreach my $field ($params->param()) { - if (lsearch(\@legal_fields, $field) != -1) { - push(@specialchart, [$field, "anyexact", - join(',', $params->param($field))]); + # All fields that don't have a . in their name should be specifyable + # in the URL directly. + my @legal_fields = grep { $_->name !~ /\./ } Bugzilla->get_fields; + if (!$user->is_timetracker) { + foreach my $field (TIMETRACKING_FIELDS) { + @legal_fields = grep { $_->name ne $field } @legal_fields; } } - if ($params->param('keywords')) { - my $t = $params->param('keywords_type'); - if (!$t || $t eq "or") { - $t = "anywords"; + foreach my $field ($params->param()) { + if (grep { $_->name eq $field } @legal_fields) { + my $type = $params->param("${field}_type"); + if (!$type) { + if ($field eq 'keywords') { + $type = 'anywords'; + } + else { + $type = 'anyexact'; + } + } + $type = 'matches' if $field eq 'content'; + push(@specialchart, [$field, $type, + join(',', $params->param($field))]); } - push(@specialchart, ["keywords", $t, $params->param('keywords')]); } foreach my $id ("1", "2") { @@ -530,10 +533,8 @@ sub init { my $deadlineto; if ($params->param('deadlinefrom')){ - $deadlinefrom = $params->param('deadlinefrom'); - validate_date($deadlinefrom) - || ThrowUserError('illegal_date', {date => $deadlinefrom, - format => 'YYYY-MM-DD'}); + $params->param('deadlinefrom', '') if lc($params->param('deadlinefrom')) eq 'now'; + $deadlinefrom = SqlifyDate($params->param('deadlinefrom')); $sql_deadlinefrom = $dbh->quote($deadlinefrom); trick_taint($sql_deadlinefrom); my $term = "bugs.deadline >= $sql_deadlinefrom"; @@ -545,10 +546,8 @@ sub init { } if ($params->param('deadlineto')){ - $deadlineto = $params->param('deadlineto'); - validate_date($deadlineto) - || ThrowUserError('illegal_date', {date => $deadlineto, - format => 'YYYY-MM-DD'}); + $params->param('deadlineto', '') if lc($params->param('deadlineto')) eq 'now'; + $deadlineto = SqlifyDate($params->param('deadlineto')); $sql_deadlineto = $dbh->quote($deadlineto); trick_taint($sql_deadlineto); my $term = "bugs.deadline <= $sql_deadlineto"; @@ -574,10 +573,6 @@ sub init { } } - if (defined $params->param('content')) { - push(@specialchart, ['content', 'matches', $params->param('content')]); - } - my $multi_fields = join('|', map($_->name, @multi_select_fields)); my $chartid; diff --git a/Bugzilla/Search/CVS/Entries b/Bugzilla/Search/CVS/Entries index bba430eeb..0810b2a52 100644 --- a/Bugzilla/Search/CVS/Entries +++ b/Bugzilla/Search/CVS/Entries @@ -1,3 +1,3 @@ -/Quicksearch.pm/1.26/Tue Sep 22 00:29:39 2009//TBUGZILLA-3_5_1 -/Saved.pm/1.9/Fri Aug 21 21:33:10 2009//TBUGZILLA-3_5_1 +/Quicksearch.pm/1.26/Tue Sep 22 00:29:39 2009//TBUGZILLA-3_5_2 +/Saved.pm/1.9/Fri Aug 21 21:33:10 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Search/CVS/Tag b/Bugzilla/Search/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Search/CVS/Tag +++ b/Bugzilla/Search/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index d5e371f64..17429a2e2 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -170,7 +170,7 @@ sub quoteUrls { # If the comment is already wrapped, we should ignore newlines when # looking for matching regexps. Else we should take them into account. - my $s = ($comment && $comment->{already_wrapped}) + my $s = ($comment && $comment->already_wrapped) ? qr/\s/ : qr/[[:blank:]]/; # However, note that adding the title (for buglinks) can affect things @@ -348,10 +348,6 @@ sub get_bug_link { $bug = blessed($bug) ? $bug : new Bugzilla::Bug($bug); return $link_text if $bug->{error}; - if ($options->{use_alias} && $link_text =~ /^\d+$/ && $bug->alias) { - $link_text = $bug->alias; - } - # Initialize these variables to be "" so that we don't get warnings # if we don't change them below (which is highly likely). my ($pre, $title, $post) = ("", "", ""); @@ -369,6 +365,9 @@ sub get_bug_link { } if (Bugzilla->user->can_see_bug($bug)) { $title .= " - " . $bug->short_desc; + if ($options->{use_alias} && $link_text =~ /^\d+$/ && $bug->alias) { + $link_text = $bug->alias; + } } # Prevent code injection in the title. $title = html_quote(clean_text($title)); @@ -729,6 +728,14 @@ sub create { # Currently logged in user, if any # If an sudo session is in progress, this is the user we're faking 'user' => sub { return Bugzilla->user; }, + + # Currenly active language + # XXX Eventually this should probably be replaced with something + # like Bugzilla->language. + 'current_language' => sub { + my ($language) = include_languages(); + return $language; + }, # If an sudo session is in progress, this is the user who # started the session. diff --git a/Bugzilla/Template/CVS/Tag b/Bugzilla/Template/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/Bugzilla/Template/CVS/Tag +++ b/Bugzilla/Template/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/Bugzilla/Template/Plugin/CVS/Entries b/Bugzilla/Template/Plugin/CVS/Entries index fd25a41d7..eee338b12 100644 --- a/Bugzilla/Template/Plugin/CVS/Entries +++ b/Bugzilla/Template/Plugin/CVS/Entries @@ -1,4 +1,4 @@ -/Bugzilla.pm/1.2/Fri Feb 7 07:19:15 2003//TBUGZILLA-3_5_1 -/Hook.pm/1.12/Mon Oct 6 16:30:56 2008//TBUGZILLA-3_5_1 -/User.pm/1.1/Wed Aug 4 18:08:21 2004//TBUGZILLA-3_5_1 +/Bugzilla.pm/1.2/Fri Feb 7 07:19:15 2003//TBUGZILLA-3_5_2 +/Hook.pm/1.12/Mon Oct 6 16:30:56 2008//TBUGZILLA-3_5_2 +/User.pm/1.1/Wed Aug 4 18:08:21 2004//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/Template/Plugin/CVS/Tag b/Bugzilla/Template/Plugin/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/Template/Plugin/CVS/Tag +++ b/Bugzilla/Template/Plugin/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 3843062fb..0fc2db336 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -1390,7 +1390,7 @@ sub wants_bug_mail { my $self = shift; my ($bug_id, $relationship, $fieldDiffs, $comments, $dependencyText, $changer, $bug_is_new) = @_; - my $comments_concatenated = join("\n", map { $_->{body} } (@$comments)); + my $comments_concatenated = join("\n", map { $_->body } @$comments); # Make a list of the events which have happened during this bug change, # from the point of view of this user. diff --git a/Bugzilla/User/CVS/Entries b/Bugzilla/User/CVS/Entries index 521b96fe1..dcbb8208e 100644 --- a/Bugzilla/User/CVS/Entries +++ b/Bugzilla/User/CVS/Entries @@ -1,2 +1,2 @@ -/Setting.pm/1.13/Fri Sep 5 23:01:18 2008//TBUGZILLA-3_5_1 +/Setting.pm/1.13/Fri Sep 5 23:01:18 2008//TBUGZILLA-3_5_2 D/Setting//// diff --git a/Bugzilla/User/CVS/Tag b/Bugzilla/User/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/User/CVS/Tag +++ b/Bugzilla/User/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/User/Setting/CVS/Entries b/Bugzilla/User/Setting/CVS/Entries index 7b8f06bbe..c1a7d472f 100644 --- a/Bugzilla/User/Setting/CVS/Entries +++ b/Bugzilla/User/Setting/CVS/Entries @@ -1,4 +1,4 @@ -/Lang.pm/1.1/Tue Aug 21 20:47:54 2007//TBUGZILLA-3_5_1 -/Skin.pm/1.4/Tue Aug 14 21:54:34 2007//TBUGZILLA-3_5_1 -/Timezone.pm/1.1/Wed Aug 27 02:32:15 2008//TBUGZILLA-3_5_1 +/Lang.pm/1.1/Tue Aug 21 20:47:54 2007//TBUGZILLA-3_5_2 +/Skin.pm/1.4/Tue Aug 14 21:54:34 2007//TBUGZILLA-3_5_2 +/Timezone.pm/1.1/Wed Aug 27 02:32:15 2008//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/User/Setting/CVS/Tag b/Bugzilla/User/Setting/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/User/Setting/CVS/Tag +++ b/Bugzilla/User/Setting/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 21588417c..48ac06502 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -40,7 +40,7 @@ use base qw(Exporter); diff_arrays trim wrap_hard wrap_comment find_wrap_point format_time format_time_decimal validate_date - validate_time + validate_time datetime_from file_mod_time is_7bit_clean bz_crypt generate_random_password validate_email_syntax clean_text @@ -214,7 +214,7 @@ sub url_quote { sub css_class_quote { my ($toencode) = (@_); - $toencode =~ s/ /_/g; + $toencode =~ s#[ /]#_#g; $toencode =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("&#x%x;",ord($1))/eg; return $toencode; } @@ -396,7 +396,9 @@ sub format_time { # If $format is undefined, try to guess the correct date format. if (!defined($format)) { - if ($date =~ m/^(\d{4})[-\.](\d{2})[-\.](\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/) { + if (!ref $date + && $date =~ /^(\d{4})[-\.](\d{2})[-\.](\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/) + { my $sec = $7; if (defined $sec) { $format = "%Y-%m-%d %T %Z"; @@ -409,44 +411,49 @@ sub format_time { } } - # strptime($date) returns an empty array if $date has an invalid date format. + my $dt = ref $date ? $date : datetime_from($date, $timezone); + $date = defined $dt ? $dt->strftime($format) : ''; + return trim($date); +} + +sub datetime_from { + my ($date, $timezone) = @_; + + # strptime($date) returns an empty array if $date has an invalid + # date format. my @time = strptime($date); unless (scalar @time) { - # If an unknown timezone is passed (such as MSK, for Moskow), strptime() is - # unable to parse the date. We try again, but we first remove the timezone. + # If an unknown timezone is passed (such as MSK, for Moskow), + # strptime() is unable to parse the date. We try again, but we first + # remove the timezone. $date =~ s/\s+\S+$//; @time = strptime($date); } - if (scalar @time) { - # Fix a bug in strptime() where seconds can be undefined in some cases. - $time[0] ||= 0; - - # strptime() counts years from 1900, and months from 0 (January). - # We have to fix both values. - my $dt = DateTime->new({year => 1900 + $time[5], - month => ++$time[4], - day => $time[3], - hour => $time[2], - minute => $time[1], - # DateTime doesn't like fractional seconds. - second => int($time[0]), - # If importing, use the specified timezone, otherwise - # use the timezone specified by the server. - time_zone => Bugzilla->local_timezone->offset_as_string($time[6]) - || Bugzilla->local_timezone}); - - # Now display the date using the given timezone, - # or the user's timezone if none is given. - $dt->set_time_zone($timezone || Bugzilla->user->timezone); - $date = $dt->strftime($format); - } - else { - # Don't let invalid (time) strings to be passed to templates! - $date = ''; - } - return trim($date); + return undef if !@time; + + # strptime() counts years from 1900, and months from 0 (January). + # We have to fix both values. + my $dt = DateTime->new({ + year => $time[5] + 1900, + month => $time[4] + 1, + day => $time[3], + hour => $time[2], + minute => $time[1], + # DateTime doesn't like fractional seconds. + # Also, sometimes seconds are undef. + second => int($time[0] || 0), + # If a timezone was specified, use it. Otherwise, use the + # local timezone. + time_zone => Bugzilla->local_timezone->offset_as_string($time[6]) + || Bugzilla->local_timezone, + }); + + # Now display the date using the given timezone, + # or the user's timezone if none is given. + $dt->set_time_zone($timezone || Bugzilla->user->timezone); + return $dt; } sub format_time_decimal { @@ -586,8 +593,10 @@ sub get_text { $vars ||= {}; $vars->{'message'} = $name; my $message; - $template->process('global/message.txt.tmpl', $vars, \$message) - || ThrowTemplateError($template->error()); + if (!$template->process('global/message.txt.tmpl', $vars, \$message)) { + require Bugzilla::Error; + Bugzilla::Error::ThrowTemplateError($template->error()); + } # Remove the indenting that exists in messages.html.tmpl. $message =~ s/^ //gm; return $message; @@ -641,6 +650,7 @@ Bugzilla::Util - Generic utility functions for bugzilla # Functions for formatting time format_time($time); + datetime_from($time, $timezone); # Functions for dealing with files $time = file_mod_time($filename); @@ -725,7 +735,7 @@ Quotes characters so that they may be included as part of a url. =item C<css_class_quote($val)> Quotes characters so that they may be used as CSS class names. Spaces -are replaced by underscores. +and forward slashes are replaced by underscores. =item C<xml_quote($val)> @@ -894,6 +904,15 @@ This routine is mainly called from templates to filter dates, see Returns a number with 2 digit precision, unless the last digit is a 0. Then it returns only 1 digit precision. +=item C<datetime_from($time, $timezone)> + +Returns a DateTime object given a date string. If the string is not in some +valid date format that C<strptime> understands, we return C<undef>. + +You can optionally specify a timezone for the returned date. If not +specified, defaults to the currently-logged-in user's timezone, or +the Bugzilla server's local timezone if there isn't a logged-in user. + =back diff --git a/Bugzilla/WebService.pm b/Bugzilla/WebService.pm index 75fcf6bc9..222923e70 100644 --- a/Bugzilla/WebService.pm +++ b/Bugzilla/WebService.pm @@ -142,11 +142,51 @@ how this is implemented for those frontends. =head1 LOGGING IN +There are various ways to log in: + +=over + +=item C<User.login> + You can use L<Bugzilla::WebService::User/login> to log in as a Bugzilla user. This issues standard HTTP cookies that you must then use in future calls, so your client must be capable of receiving and transmitting cookies. +=item C<Bugzilla_login> and C<Bugzilla_password> + +B<Added in Bugzilla 3.6> + +You can specify C<Bugzilla_login> and C<Bugzilla_password> as arguments +to any WebService method, and you will be logged in as that user if your +credentials are correct. Here are the arguments you can specify to any +WebService method to perform a login: + +=over + +=item C<Bugzilla_login> (string) - A user's login name. + +=item C<Bugzilla_password> (string) - That user's password. + +=item C<Bugzilla_restrictlogin> (boolean) - Optional. If true, +then your login will only be valid for your IP address. + +=item C<Bugzilla_rememberlogin> (boolean) - Optional. If true, +then the cookie sent back to you with the method response will +not expire. + +=back + +The C<Bugzilla_restrictlogin> and C<Bugzilla_rememberlogin> options +are only used when you have also specified C<Bugzilla_login> and +C<Bugzilla_password>. + +Note that Bugzilla will return HTTP cookies along with the method +response when you use these arguments (just like the C<User.login> method +above). + +=back + =head1 STABLE, EXPERIMENTAL, and UNSTABLE Methods are marked B<STABLE> if you can expect their parameters and diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm index 6a3e93519..006fa0fee 100644 --- a/Bugzilla/WebService/Bug.pm +++ b/Bugzilla/WebService/Bug.pm @@ -23,6 +23,7 @@ package Bugzilla::WebService::Bug; use strict; use base qw(Bugzilla::WebService); +use Bugzilla::Comment; use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::Field; @@ -95,12 +96,12 @@ sub comments { foreach my $bug_id (@$bug_ids) { my $bug = Bugzilla::Bug->check($bug_id); # We want the API to always return comments in the same order. - my $comments = Bugzilla::Bug::GetComments( - $bug->id, 'oldest_to_newest', $params->{new_since}); + + my $comments = $bug->comments({ order => 'oldest_to_newest', + after => $params->{new_since} }); my @result; foreach my $comment (@$comments) { - next if $comment->{isprivate} && !$user->is_insider; - $comment->{bug_id} = $bug->id; + next if $comment->is_private && !$user->is_insider; push(@result, $self->_translate_comment($comment, $params)); } $bugs{$bug->id}{'comments'} = \@result; @@ -109,15 +110,10 @@ sub comments { my %comments; if (scalar @$comment_ids) { my @ids = map { trim($_) } @$comment_ids; - my @sql_ids = map { $dbh->quote($_) } @ids; - my $comment_data = $dbh->selectall_arrayref( - 'SELECT comment_id AS id, bug_id, who, bug_when AS time, - isprivate, thetext AS body, type, extra_data - FROM longdescs WHERE ' . $dbh->sql_in('comment_id', \@sql_ids), - {Slice=>{}}); + my $comment_data = Bugzilla::Comment->new_from_list(\@ids); # See if we were passed any invalid comment ids. - my %got_ids = map { $_->{id} => 1 } @$comment_data; + my %got_ids = map { $_->id => 1 } @$comment_data; foreach my $comment_id (@ids) { if (!$got_ids{$comment_id}) { ThrowUserError('comment_id_invalid', { id => $comment_id }); @@ -125,16 +121,14 @@ sub comments { } # Now make sure that we can see all the associated bugs. - my %got_bug_ids = map { $_->{bug_id} => 1 } @$comment_data; + my %got_bug_ids = map { $_->bug_id => 1 } @$comment_data; Bugzilla::Bug->check($_) foreach (keys %got_bug_ids); foreach my $comment (@$comment_data) { - if ($comment->{isprivate} && !$user->is_insider) { - ThrowUserError('comment_is_private', { id => $comment->{id} }); + if ($comment->is_private && !$user->is_insider) { + ThrowUserError('comment_is_private', { id => $comment->id }); } - $comment->{author} = new Bugzilla::User($comment->{who}); - $comment->{body} = Bugzilla::Bug::format_comment($comment); - $comments{$comment->{id}} = + $comments{$comment->id} = $self->_translate_comment($comment, $params); } } @@ -146,12 +140,12 @@ sub comments { sub _translate_comment { my ($self, $comment, $filters) = @_; return filter $filters, { - id => $self->type('int', $comment->{id}), - bug_id => $self->type('int', $comment->{bug_id}), - author => $self->type('string', $comment->{author}->login), - time => $self->type('dateTime', $comment->{'time'}), - is_private => $self->type('boolean', $comment->{isprivate}), - text => $self->type('string', $comment->{body}), + id => $self->type('int', $comment->id), + bug_id => $self->type('int', $comment->bug_id), + author => $self->type('string', $comment->author->login), + time => $self->type('dateTime', $comment->creation_ts), + is_private => $self->type('boolean', $comment->is_private), + text => $self->type('string', $comment->body_full), }; } @@ -288,17 +282,10 @@ sub search { sub create { my ($self, $params) = @_; - Bugzilla->login(LOGIN_REQUIRED); - $params = _map_fields($params); - # WebService users can't set the creation date of a bug. - delete $params->{'creation_ts'}; - my $bug = Bugzilla::Bug->create($params); - Bugzilla::BugMail::Send($bug->bug_id, { changer => $bug->reporter->login }); - return { id => $self->type('int', $bug->bug_id) }; } diff --git a/Bugzilla/WebService/CVS/Entries b/Bugzilla/WebService/CVS/Entries index 774fb6152..418551f46 100644 --- a/Bugzilla/WebService/CVS/Entries +++ b/Bugzilla/WebService/CVS/Entries @@ -1,9 +1,9 @@ -/Bug.pm/1.44/Mon Oct 26 11:28:49 2009//TBUGZILLA-3_5_1 -/Bugzilla.pm/1.11/Fri Jan 9 19:13:32 2009//TBUGZILLA-3_5_1 -/Constants.pm/1.29/Fri Sep 11 16:10:35 2009//TBUGZILLA-3_5_1 -/Product.pm/1.8/Mon Jan 26 20:40:22 2009//TBUGZILLA-3_5_1 -/README/1.1/Tue Mar 31 06:37:57 2009//TBUGZILLA-3_5_1 -/Server.pm/1.2/Fri Oct 9 04:31:11 2009//TBUGZILLA-3_5_1 -/User.pm/1.15/Mon Aug 10 11:06:32 2009//TBUGZILLA-3_5_1 -/Util.pm/1.3/Mon Jan 26 20:40:23 2009//TBUGZILLA-3_5_1 +/Bug.pm/1.46/Tue Nov 10 21:21:53 2009//TBUGZILLA-3_5_2 +/Bugzilla.pm/1.11/Fri Jan 9 19:13:32 2009//TBUGZILLA-3_5_2 +/Constants.pm/1.29/Fri Sep 11 16:10:35 2009//TBUGZILLA-3_5_2 +/Product.pm/1.8/Mon Jan 26 20:40:22 2009//TBUGZILLA-3_5_2 +/README/1.1/Tue Mar 31 06:37:57 2009//TBUGZILLA-3_5_2 +/Server.pm/1.3/Mon Nov 9 19:15:30 2009//TBUGZILLA-3_5_2 +/User.pm/1.16/Mon Nov 9 19:15:30 2009//TBUGZILLA-3_5_2 +/Util.pm/1.4/Mon Nov 9 18:27:52 2009//TBUGZILLA-3_5_2 D/Server//// diff --git a/Bugzilla/WebService/CVS/Tag b/Bugzilla/WebService/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/WebService/CVS/Tag +++ b/Bugzilla/WebService/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/WebService/Server.pm b/Bugzilla/WebService/Server.pm index 2db182fd4..115c7df89 100644 --- a/Bugzilla/WebService/Server.pm +++ b/Bugzilla/WebService/Server.pm @@ -21,7 +21,8 @@ use strict; sub handle_login { my ($self, $class, $method, $full_method) = @_; eval "require $class"; - return if $class->login_exempt($method); + return if ($class->login_exempt($method) + and !defined Bugzilla->input_params->{Bugzilla_login}); Bugzilla->login(); } diff --git a/Bugzilla/WebService/Server/CVS/Entries b/Bugzilla/WebService/Server/CVS/Entries index 0381332c5..2eb516b62 100644 --- a/Bugzilla/WebService/Server/CVS/Entries +++ b/Bugzilla/WebService/Server/CVS/Entries @@ -1,3 +1,3 @@ -/JSONRPC.pm/1.1/Tue Mar 31 06:37:59 2009//TBUGZILLA-3_5_1 -/XMLRPC.pm/1.6/Fri Sep 4 21:27:55 2009//TBUGZILLA-3_5_1 +/JSONRPC.pm/1.4/Wed Nov 18 07:09:49 2009//TBUGZILLA-3_5_2 +/XMLRPC.pm/1.9/Tue Nov 10 21:19:47 2009//TBUGZILLA-3_5_2 D diff --git a/Bugzilla/WebService/Server/CVS/Tag b/Bugzilla/WebService/Server/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/Bugzilla/WebService/Server/CVS/Tag +++ b/Bugzilla/WebService/Server/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/Bugzilla/WebService/Server/JSONRPC.pm b/Bugzilla/WebService/Server/JSONRPC.pm index b453c6196..16f9ab5b5 100644 --- a/Bugzilla/WebService/Server/JSONRPC.pm +++ b/Bugzilla/WebService/Server/JSONRPC.pm @@ -26,6 +26,7 @@ use base qw(JSON::RPC::Server::CGI Bugzilla::WebService::Server); use Bugzilla::Error; use Bugzilla::WebService::Constants; +use Bugzilla::WebService::Util qw(taint_data); use Date::Parse; use DateTime; @@ -111,18 +112,16 @@ sub _argument_type_check { my $self = shift; my $params = $self->SUPER::_argument_type_check(@_); - # This is the best time to do login checks. - $self->handle_login(); - - # If there are no parameters, we don't need to parse them. - return $params if !ref $params; - # JSON-RPC 1.0 requires all parameters to be passed as an array, so # we just pull out the first item and assume it's an object. + my $params_is_array; if (ref $params eq 'ARRAY') { $params = $params->[0]; + $params_is_array = 1; } + taint_data($params); + # Now, convert dateTime fields on input. $self->_bz_method_name =~ /^(\S+)\.(\S+)$/; my ($class, $method) = ($1, $2); @@ -141,6 +140,11 @@ sub _argument_type_check { } } + Bugzilla->input_params($params); + + # This is the best time to do login checks. + $self->handle_login(); + # Bugzilla::WebService packages call internal methods like # $self->_some_private_method. So we have to inherit from # that class as well as this Server class. @@ -149,6 +153,10 @@ sub _argument_type_check { eval "package $new_class;$isa_string;"; bless $self, $new_class; + if ($params_is_array) { + $params = [$params]; + } + return $params; } diff --git a/Bugzilla/WebService/Server/XMLRPC.pm b/Bugzilla/WebService/Server/XMLRPC.pm index c85614f7a..967235262 100644 --- a/Bugzilla/WebService/Server/XMLRPC.pm +++ b/Bugzilla/WebService/Server/XMLRPC.pm @@ -64,10 +64,23 @@ package Bugzilla::XMLRPC::Deserializer; use strict; # We can't use "use base" because XMLRPC::Serializer doesn't return # a true value. -eval { require XMLRPC::Lite; }; +use XMLRPC::Lite; our @ISA = qw(XMLRPC::Deserializer); use Bugzilla::Error; +use Scalar::Util qw(tainted); + +sub deserialize { + my $self = shift; + my ($xml) = @_; + my $som = $self->SUPER::deserialize(@_); + if (tainted($xml)) { + $som->{_bz_do_taint} = 1; + } + bless $som, 'Bugzilla::XMLRPC::SOM'; + Bugzilla->input_params($som->paramsin); + return $som; +} # Some method arguments need to be converted in some way, when they are input. sub decode_value { @@ -126,6 +139,25 @@ sub _validation_subs { 1; +package Bugzilla::XMLRPC::SOM; +use strict; +use XMLRPC::Lite; +our @ISA = qw(XMLRPC::SOM); +use Bugzilla::WebService::Util qw(taint_data); + +sub paramsin { + my $self = shift; + return $self->{bz_params_in} if $self->{bz_params_in}; + my $params = $self->SUPER::paramsin(@_); + if ($self->{_bz_do_taint}) { + taint_data($params); + } + $self->{bz_params_in} = $params; + return $self->{bz_params_in}; +} + +1; + # This package exists to fix a UTF-8 bug in SOAP::Lite. # See http://rt.cpan.org/Public/Bug/Display.html?id=32952. package Bugzilla::XMLRPC::Serializer; @@ -133,7 +165,7 @@ use Scalar::Util qw(blessed); use strict; # We can't use "use base" because XMLRPC::Serializer doesn't return # a true value. -eval { require XMLRPC::Lite; }; +use XMLRPC::Lite; our @ISA = qw(XMLRPC::Serializer); sub new { diff --git a/Bugzilla/WebService/User.pm b/Bugzilla/WebService/User.pm index ba899cd4d..67a4720de 100644 --- a/Bugzilla/WebService/User.pm +++ b/Bugzilla/WebService/User.pm @@ -61,12 +61,12 @@ sub login { } # Make sure the CGI user info class works if necessary. - my $cgi = Bugzilla->cgi; - $cgi->param('Bugzilla_login', $params->{login}); - $cgi->param('Bugzilla_password', $params->{password}); - $cgi->param('Bugzilla_remember', $remember); + my $input_params = Bugzilla->input_params; + $input_params->{'Bugzilla_login'} = $params->{login}; + $input_params->{'Bugzilla_password'} = $params->{password}; + $input_params->{'Bugzilla_remember'} = $remember; - Bugzilla->login; + Bugzilla->login(); return { id => $self->type('int', Bugzilla->user->id) }; } diff --git a/Bugzilla/WebService/Util.pm b/Bugzilla/WebService/Util.pm index 74c1f2f02..8ff608c3a 100644 --- a/Bugzilla/WebService/Util.pm +++ b/Bugzilla/WebService/Util.pm @@ -21,10 +21,17 @@ package Bugzilla::WebService::Util; use strict; - use base qw(Exporter); -our @EXPORT_OK = qw(filter validate); +# We have to "require", not "use" this, because otherwise it tries to +# use features of Test::More during import(). +require Test::Taint; + +our @EXPORT_OK = qw( + filter + taint_data + validate +); sub filter ($$) { my ($params, $hash) = @_; @@ -44,6 +51,32 @@ sub filter ($$) { return \%newhash; } +sub taint_data { + my $params = shift; + return if !$params; + # Though this is a private function, it hasn't changed since 2004 and + # should be safe to use, and prevents us from having to write it ourselves + # or require another module to do it. + Test::Taint::_deeply_traverse(\&_delete_bad_keys, $params); + Test::Taint::taint_deeply($params); +} + +sub _delete_bad_keys { + foreach my $item (@_) { + next if ref $item ne 'HASH'; + foreach my $key (keys %$item) { + # Making something a hash key always untaints it, in Perl. + # However, we need to validate our argument names in some way. + # We know that all hash keys passed in to the WebService will + # match \w+, so we delete any key that doesn't match that. + if ($key !~ /^\w+$/) { + delete $item->{$key}; + } + } + } + return @_; +} + sub validate { my ($self, $params, @keys) = @_; diff --git a/Bugzilla/Whine/CVS/Entries b/Bugzilla/Whine/CVS/Entries new file mode 100644 index 000000000..f9e91f002 --- /dev/null +++ b/Bugzilla/Whine/CVS/Entries @@ -0,0 +1,2 @@ +/Schedule.pm/1.1/Mon Nov 9 18:35:40 2009//TBUGZILLA-3_5_2 +D diff --git a/Bugzilla/Whine/CVS/Repository b/Bugzilla/Whine/CVS/Repository new file mode 100644 index 000000000..6303ac074 --- /dev/null +++ b/Bugzilla/Whine/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/Bugzilla/Whine diff --git a/Bugzilla/Whine/CVS/Root b/Bugzilla/Whine/CVS/Root new file mode 100644 index 000000000..cdb6f4a07 --- /dev/null +++ b/Bugzilla/Whine/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot diff --git a/Bugzilla/Whine/CVS/Tag b/Bugzilla/Whine/CVS/Tag new file mode 100644 index 000000000..a91e70ee4 --- /dev/null +++ b/Bugzilla/Whine/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_2 diff --git a/Bugzilla/Whine/Schedule.pm b/Bugzilla/Whine/Schedule.pm new file mode 100644 index 000000000..be0f2fae8 --- /dev/null +++ b/Bugzilla/Whine/Schedule.pm @@ -0,0 +1,172 @@ +# -*- 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 Eric Black. +# Portions created by the Initial Developer are Copyright (C) 2009 +# Eric Black. All Rights Reserved. +# +# Contributor(s): Eric Black <black.eric@gmail.com> + +use strict; + +package Bugzilla::Whine::Schedule; + +use base qw(Bugzilla::Object); + +use Bugzilla::Constants; + +############# +# Constants # +############# + +use constant DB_TABLE => 'whine_schedules'; + +use constant DB_COLUMNS => qw( + id + eventid + run_day + run_time + run_next + mailto + mailto_type +); + +use constant REQUIRED_CREATE_FIELDS => qw(eventid mailto mailto_type); + +use constant UPDATE_COLUMNS => qw( + eventid + run_day + run_time + run_next + mailto + mailto_type +); +use constant NAME_FIELD => 'id'; +use constant LIST_ORDER => 'id'; + +#################### +# Simple Accessors # +#################### +sub eventid { return $_[0]->{'eventid'}; } +sub run_day { return $_[0]->{'run_day'}; } +sub run_time { return $_[0]->{'run_time'}; } +sub mailto_is_group { return $_[0]->{'mailto_type'}; } + +sub mailto { + my $self = shift; + + return $self->{mailto_object} if exists $self->{mailto_object}; + my $id = $self->{'mailto'}; + + if ($self->mailto_is_group) { + $self->{mailto_object} = Bugzilla::Group->new($id); + } else { + $self->{mailto_object} = Bugzilla::User->new($id); + } + return $self->{mailto_object}; +} + +sub mailto_users { + my $self = shift; + return $self->{mailto_users} if exists $self->{mailto_users}; + my $object = $self->mailto; + + if ($self->mailto_is_group) { + $self->{mailto_users} = $object->members_non_inherited if $object->is_active; + } else { + $self->{mailto_users} = $object; + } + return $self->{mailto_users}; +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Whine::Schedule - A schedule object used by L<Bugzilla::Whine>. + +=head1 SYNOPSIS + + use Bugzilla::Whine::Schedule; + + my $schedule = new Bugzilla::Whine::Schedule($schedule_id); + + my $event_id = $schedule->eventid; + my $run_day = $schedule->run_day; + my $run_time = $schedule->run_time; + my $is_group = $schedule->mailto_is_group; + my $object = $schedule->mailto; + my $array_ref = $schedule->mailto_users; + +=head1 DESCRIPTION + +This module exists to represent a L<Bugzilla::Whine> event schedule. + +This is an implementation of L<Bugzilla::Object>, and so has all the +same methods available as L<Bugzilla::Object>, in addition to what is +documented below. + +=head1 METHODS + +=head2 Constructors + +=over + +=item C<new> + +Does not accept a bare C<name> argument. Instead, accepts only an id. + +See also: L<Bugzilla::Object/new>. + +=back + + +=head2 Accessors + +These return data about the object, without modifying the object. + +=over + +=item C<event_id> + +The L<Bugzilla::Whine> event object id for this object. + +=item C<run_day> + +The day or day pattern that a L<Bugzilla::Whine> event is scheduled to run. + +=item C<run_time> + +The time or time pattern that a L<Bugzilla::Whine> event is scheduled to run. + +=item C<mailto_is_group> + +Returns a numeric 1 (C<group>) or 0 (C<user>) to represent whether +L</mailto> is a group or user. + +=item C<mailto> + +This is either a L<Bugzilla::User> or L<Bugzilla::Group> object to represent +the user or group this scheduled event is set to be mailed to. + +=item C<mailto_users> + +Returns an array reference of L<Bugzilla::User>s. This is derived from the +L<Bugzilla::Group> stored in L</mailto> if L</mailto_is_group> is true and +the group is still active, otherwise it will contain a single array element +for the L<Bugzilla::User> in L</mailto>. + +=back diff --git a/CVS/Entries b/CVS/Entries index d8e3722cb..a480300a6 100644 --- a/CVS/Entries +++ b/CVS/Entries @@ -1,74 +1,74 @@ -/.cvsignore/1.8/Fri Oct 19 07:58:48 2007//TBUGZILLA-3_5_1 -/Bugzilla.pm/1.80/Sat Oct 24 05:30:14 2009//TBUGZILLA-3_5_1 -/README/1.53/Wed Jul 29 08:18:52 2009//TBUGZILLA-3_5_1 -/admin.cgi/1.2/Fri Oct 19 06:46:10 2007//TBUGZILLA-3_5_1 -/attachment.cgi/1.163/Sat Oct 24 05:22:45 2009//TBUGZILLA-3_5_1 -/buglist.cgi/1.407/Tue Nov 3 19:46:13 2009//TBUGZILLA-3_5_1 -/bugzilla.dtd/1.16/Mon Oct 26 16:16:21 2009//TBUGZILLA-3_5_1 -/chart.cgi/1.32/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_1 -/checksetup.pl/1.564/Wed Aug 12 13:05:26 2009//TBUGZILLA-3_5_1 -/colchange.cgi/1.69/Tue Aug 18 22:09:34 2009//TBUGZILLA-3_5_1 -/collectstats.pl/1.71/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_1 -/config.cgi/1.31/Sun Jan 25 12:42:51 2009//TBUGZILLA-3_5_1 -/createaccount.cgi/1.57/Sun Nov 11 22:03:16 2007//TBUGZILLA-3_5_1 -/describecomponents.cgi/1.40/Thu May 21 08:43:23 2009//TBUGZILLA-3_5_1 -/describekeywords.cgi/1.22/Sun Jan 25 12:42:51 2009//TBUGZILLA-3_5_1 -/duplicates.cgi/1.64/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_1 -/editclassifications.cgi/1.33/Fri Jan 2 13:59:22 2009//TBUGZILLA-3_5_1 -/editcomponents.cgi/1.87/Sat Apr 11 23:33:24 2009//TBUGZILLA-3_5_1 -/editfields.cgi/1.12/Thu Jan 15 15:47:36 2009//TBUGZILLA-3_5_1 -/editflagtypes.cgi/1.56/Wed Aug 5 12:35:51 2009//TBUGZILLA-3_5_1 -/editgroups.cgi/1.92/Wed Sep 30 08:59:50 2009//TBUGZILLA-3_5_1 -/editkeywords.cgi/1.47/Mon Feb 2 18:59:17 2009//TBUGZILLA-3_5_1 -/editmilestones.cgi/1.62/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_1 -/editparams.cgi/1.50/Fri Aug 22 16:00:33 2008//TBUGZILLA-3_5_1 -/editproducts.cgi/1.150/Fri Oct 30 01:01:22 2009//TBUGZILLA-3_5_1 -/editsettings.cgi/1.11/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_1 -/editusers.cgi/1.154/Wed Aug 5 12:35:51 2009//TBUGZILLA-3_5_1 -/editvalues.cgi/1.40/Fri Jul 17 22:40:13 2009//TBUGZILLA-3_5_1 -/editversions.cgi/1.59/Fri Apr 10 09:36:43 2009//TBUGZILLA-3_5_1 -/editwhines.cgi/1.24/Mon Apr 6 20:57:13 2009//TBUGZILLA-3_5_1 -/editworkflow.cgi/1.6/Wed Jul 2 19:10:17 2008//TBUGZILLA-3_5_1 -/email_in.pl/1.27/Mon Nov 2 14:50:18 2009//TBUGZILLA-3_5_1 -/enter_bug.cgi/1.171/Tue Aug 11 04:34:18 2009//TBUGZILLA-3_5_1 -/importxml.pl/1.91/Fri Apr 10 22:29:58 2009//TBUGZILLA-3_5_1 -/index.cgi/1.29/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_1 -/install-module.pl/1.5/Wed Sep 16 09:43:23 2009//TBUGZILLA-3_5_1 -/jobqueue.pl/1.4/Fri Sep 4 21:20:16 2009//TBUGZILLA-3_5_1 -/jsonrpc.cgi/1.3/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_1 -/long_list.cgi/1.48/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_1 -/migrate.pl/1.1/Sat Oct 24 05:30:15 2009//TBUGZILLA-3_5_1 -/mod_perl.pl/1.11/Thu Feb 12 19:14:56 2009//TBUGZILLA-3_5_1 -/page.cgi/1.21/Thu Aug 6 15:14:47 2009//TBUGZILLA-3_5_1 -/post_bug.cgi/1.203/Wed Sep 30 22:39:28 2009//TBUGZILLA-3_5_1 -/process_bug.cgi/1.423/Wed Sep 30 22:39:28 2009//TBUGZILLA-3_5_1 -/query.cgi/1.187/Tue Oct 27 16:55:31 2009//TBUGZILLA-3_5_1 -/quips.cgi/1.39/Wed Nov 5 18:38:49 2008//TBUGZILLA-3_5_1 -/relogin.cgi/1.43/Wed Apr 15 17:52:46 2009//TBUGZILLA-3_5_1 -/report.cgi/1.46/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_1 -/reports.cgi/1.95/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_1 -/request.cgi/1.50/Sun Aug 9 20:17:44 2009//TBUGZILLA-3_5_1 -/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-3_5_1 -/runtests.pl/1.5/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_1 -/sanitycheck.cgi/1.146/Mon Sep 21 22:10:07 2009//TBUGZILLA-3_5_1 -/sanitycheck.pl/1.4/Tue Dec 16 21:16:29 2008//TBUGZILLA-3_5_1 -/search_plugin.cgi/1.4/Tue Dec 16 22:39:41 2008//TBUGZILLA-3_5_1 -/show_activity.cgi/1.26/Sun Jan 25 12:42:52 2009//TBUGZILLA-3_5_1 -/show_bug.cgi/1.61/Wed Sep 30 22:39:29 2009//TBUGZILLA-3_5_1 -/showattachment.cgi/1.16/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_1 -/showdependencygraph.cgi/1.69/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_1 -/showdependencytree.cgi/1.53/Sun Jun 29 21:57:54 2008//TBUGZILLA-3_5_1 -/sidebar.cgi/1.19/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_1 -/summarize_time.cgi/1.25/Sun Apr 12 12:08:46 2009//TBUGZILLA-3_5_1 -/testagent.cgi/1.3/Sun Feb 11 00:12:24 2007//TBUGZILLA-3_5_1 -/testserver.pl/1.22/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_1 -/token.cgi/1.65/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_1 -/userprefs.cgi/1.126/Mon Feb 2 19:21:09 2009//TBUGZILLA-3_5_1 -/votes.cgi/1.58/Wed Jul 1 11:02:21 2009//TBUGZILLA-3_5_1 -/whine.pl/1.40/Tue Jul 7 18:16:51 2009//TBUGZILLA-3_5_1 -/whineatnews.pl/1.31/Wed Apr 2 17:42:26 2008//TBUGZILLA-3_5_1 -/xml.cgi/1.14/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_1 -/xmlrpc.cgi/1.13/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_1 +/.cvsignore/1.8/Fri Oct 19 07:58:48 2007//TBUGZILLA-3_5_2 +/Bugzilla.pm/1.83/Wed Nov 18 07:01:40 2009//TBUGZILLA-3_5_2 +/README/1.53/Wed Jul 29 08:18:52 2009//TBUGZILLA-3_5_2 +/admin.cgi/1.2/Fri Oct 19 06:46:10 2007//TBUGZILLA-3_5_2 +/attachment.cgi/1.163/Sat Oct 24 05:22:45 2009//TBUGZILLA-3_5_2 +/buglist.cgi/1.408/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 +/bugzilla.dtd/1.16/Mon Oct 26 16:16:21 2009//TBUGZILLA-3_5_2 +/chart.cgi/1.32/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_2 +/checksetup.pl/1.564/Wed Aug 12 13:05:26 2009//TBUGZILLA-3_5_2 +/colchange.cgi/1.70/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 +/collectstats.pl/1.71/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_2 +/config.cgi/1.33/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 +/createaccount.cgi/1.57/Sun Nov 11 22:03:16 2007//TBUGZILLA-3_5_2 +/describecomponents.cgi/1.40/Thu May 21 08:43:23 2009//TBUGZILLA-3_5_2 +/describekeywords.cgi/1.22/Sun Jan 25 12:42:51 2009//TBUGZILLA-3_5_2 +/duplicates.cgi/1.64/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_2 +/editclassifications.cgi/1.33/Fri Jan 2 13:59:22 2009//TBUGZILLA-3_5_2 +/editcomponents.cgi/1.87/Sat Apr 11 23:33:24 2009//TBUGZILLA-3_5_2 +/editfields.cgi/1.12/Thu Jan 15 15:47:36 2009//TBUGZILLA-3_5_2 +/editflagtypes.cgi/1.56/Wed Aug 5 12:35:51 2009//TBUGZILLA-3_5_2 +/editgroups.cgi/1.92/Wed Sep 30 08:59:50 2009//TBUGZILLA-3_5_2 +/editkeywords.cgi/1.48/Mon Nov 9 19:51:58 2009//TBUGZILLA-3_5_2 +/editmilestones.cgi/1.62/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_2 +/editparams.cgi/1.50/Fri Aug 22 16:00:33 2008//TBUGZILLA-3_5_2 +/editproducts.cgi/1.150/Fri Oct 30 01:01:22 2009//TBUGZILLA-3_5_2 +/editsettings.cgi/1.11/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_2 +/editusers.cgi/1.154/Wed Aug 5 12:35:51 2009//TBUGZILLA-3_5_2 +/editvalues.cgi/1.40/Fri Jul 17 22:40:13 2009//TBUGZILLA-3_5_2 +/editversions.cgi/1.59/Fri Apr 10 09:36:43 2009//TBUGZILLA-3_5_2 +/editwhines.cgi/1.25/Mon Nov 9 18:35:39 2009//TBUGZILLA-3_5_2 +/editworkflow.cgi/1.6/Wed Jul 2 19:10:17 2008//TBUGZILLA-3_5_2 +/email_in.pl/1.28/Tue Nov 10 01:36:02 2009//TBUGZILLA-3_5_2 +/enter_bug.cgi/1.173/Mon Nov 16 11:19:17 2009//TBUGZILLA-3_5_2 +/importxml.pl/1.93/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 +/index.cgi/1.29/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_2 +/install-module.pl/1.5/Wed Sep 16 09:43:23 2009//TBUGZILLA-3_5_2 +/jobqueue.pl/1.4/Fri Sep 4 21:20:16 2009//TBUGZILLA-3_5_2 +/jsonrpc.cgi/1.4/Tue Nov 10 21:19:46 2009//TBUGZILLA-3_5_2 +/long_list.cgi/1.48/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 +/migrate.pl/1.1/Sat Oct 24 05:30:15 2009//TBUGZILLA-3_5_2 +/mod_perl.pl/1.12/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_2 +/page.cgi/1.21/Thu Aug 6 15:14:47 2009//TBUGZILLA-3_5_2 +/post_bug.cgi/1.205/Tue Nov 10 21:21:52 2009//TBUGZILLA-3_5_2 +/process_bug.cgi/1.425/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 +/query.cgi/1.189/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 +/quips.cgi/1.39/Wed Nov 5 18:38:49 2008//TBUGZILLA-3_5_2 +/relogin.cgi/1.43/Wed Apr 15 17:52:46 2009//TBUGZILLA-3_5_2 +/report.cgi/1.47/Fri Nov 13 00:34:47 2009//TBUGZILLA-3_5_2 +/reports.cgi/1.95/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_2 +/request.cgi/1.50/Sun Aug 9 20:17:44 2009//TBUGZILLA-3_5_2 +/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-3_5_2 +/runtests.pl/1.5/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 +/sanitycheck.cgi/1.146/Mon Sep 21 22:10:07 2009//TBUGZILLA-3_5_2 +/sanitycheck.pl/1.4/Tue Dec 16 21:16:29 2008//TBUGZILLA-3_5_2 +/search_plugin.cgi/1.4/Tue Dec 16 22:39:41 2008//TBUGZILLA-3_5_2 +/show_activity.cgi/1.26/Sun Jan 25 12:42:52 2009//TBUGZILLA-3_5_2 +/show_bug.cgi/1.62/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 +/showattachment.cgi/1.16/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 +/showdependencygraph.cgi/1.69/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_2 +/showdependencytree.cgi/1.53/Sun Jun 29 21:57:54 2008//TBUGZILLA-3_5_2 +/sidebar.cgi/1.19/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 +/summarize_time.cgi/1.26/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 +/testagent.cgi/1.3/Sun Feb 11 00:12:24 2007//TBUGZILLA-3_5_2 +/testserver.pl/1.22/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_2 +/token.cgi/1.65/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_2 +/userprefs.cgi/1.126/Mon Feb 2 19:21:09 2009//TBUGZILLA-3_5_2 +/votes.cgi/1.58/Wed Jul 1 11:02:21 2009//TBUGZILLA-3_5_2 +/whine.pl/1.40/Tue Jul 7 18:16:51 2009//TBUGZILLA-3_5_2 +/whineatnews.pl/1.31/Wed Apr 2 17:42:26 2008//TBUGZILLA-3_5_2 +/xml.cgi/1.14/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 +/xmlrpc.cgi/1.14/Tue Nov 10 21:19:46 2009//TBUGZILLA-3_5_2 D/Bugzilla//// D/contrib//// D/docs//// diff --git a/CVS/Tag b/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/CVS/Tag +++ b/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/buglist.cgi b/buglist.cgi index a8103a1e0..6b03b123d 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -667,7 +667,7 @@ if (trim($votes) && !grep($_ eq 'votes', @displaycolumns)) { # Remove the timetracking columns if they are not a part of the group # (happens if a user had access to time tracking and it was revoked/disabled) -if (!Bugzilla->user->in_group(Bugzilla->params->{"timetrackinggroup"})) { +if (!Bugzilla->user->is_timetracker) { @displaycolumns = grep($_ ne 'estimated_time', @displaycolumns); @displaycolumns = grep($_ ne 'remaining_time', @displaycolumns); @displaycolumns = grep($_ ne 'actual_time', @displaycolumns); diff --git a/colchange.cgi b/colchange.cgi index e28bccf04..6c2fa8090 100755 --- a/colchange.cgi +++ b/colchange.cgi @@ -77,7 +77,7 @@ if (Bugzilla::Keyword->any_exist) { if (Bugzilla->has_flags) { push(@masterlist, "flagtypes.name"); } -if (Bugzilla->user->in_group(Bugzilla->params->{"timetrackinggroup"})) { +if (Bugzilla->user->is_timetracker) { push(@masterlist, ("estimated_time", "remaining_time", "actual_time", "percentage_complete", "deadline")); } diff --git a/config.cgi b/config.cgi index 282b95957..22e1dc78a 100755 --- a/config.cgi +++ b/config.cgi @@ -20,6 +20,7 @@ # # Contributor(s): Terry Weissman <terry@mozilla.org> # Myk Melez <myk@mozilla.org> +# Frank Becker <Frank@Frank-Becker.de> ################################################################################ # Script Initialization @@ -36,6 +37,7 @@ use Bugzilla::Error; use Bugzilla::Keyword; use Bugzilla::Status; use Bugzilla::Field; +use Digest::MD5 qw(md5_base64); my $user = Bugzilla->login(LOGIN_OPTIONAL); my $cgi = Bugzilla->cgi; @@ -91,7 +93,7 @@ $vars->{'closed_status'} = \@closed_status; # Generate a list of fields that can be queried. my @fields = @{Bugzilla::Field->match({obsolete => 0})}; # Exclude fields the user cannot query. -if (!Bugzilla->user->in_group(Bugzilla->params->{'timetrackinggroup'})) { +if (!Bugzilla->user->is_timetracker) { @fields = grep { $_->name !~ /^(estimated_time|remaining_time|work_time|percentage_complete|deadline)$/ } @fields; } $vars->{'field'} = \@fields; @@ -110,11 +112,41 @@ sub display_data { my $format = $template->get_format("config", scalar($cgi->param('format')), scalar($cgi->param('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) + # Generate the configuration data. + my $output; + $template->process($format->{'template'}, $vars, \$output) || ThrowTemplateError($template->error()); + + # Wide characters cause md5_base64() to die. + my $digest_data = $output; + utf8::encode($digest_data) if utf8::is_utf8($digest_data); + my $digest = md5_base64($digest_data); + + # ETag support. + my $if_none_match = $cgi->http('If-None-Match') || ""; + my $found304; + my @if_none = split(/[\s,]+/, $if_none_match); + foreach my $if_none (@if_none) { + # remove quotes from begin and end of the string + $if_none =~ s/^\"//g; + $if_none =~ s/\"$//g; + if ($if_none eq $digest or $if_none eq '*') { + # leave the loop after the first match + $found304 = $if_none; + last; + } + } + + if ($found304) { + print $cgi->header(-type => 'text/html', + -ETag => $found304, + -status => '304 Not Modified'); + } + else { + # Return HTTP headers. + print $cgi->header (-ETag => $digest, + -type => $format->{'ctype'}); + print $output; + } exit; } diff --git a/contrib/CVS/Entries b/contrib/CVS/Entries index d73e9d5d1..caacea195 100644 --- a/contrib/CVS/Entries +++ b/contrib/CVS/Entries @@ -1,16 +1,16 @@ -/README/1.12/Tue Oct 16 10:13:54 2007//TBUGZILLA-3_5_1 -/bugzilla-queue/1.1/Fri Sep 4 21:20:41 2009//TBUGZILLA-3_5_1 -/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-3_5_1 -/bz_webservice_demo.pl/1.14/Mon May 19 18:38:26 2008//TBUGZILLA-3_5_1 -/bzdbcopy.pl/1.9/Sat Oct 24 05:30:19 2009//TBUGZILLA-3_5_1 -/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-3_5_1 -/jb2bz.py/1.5/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_1 -/merge-users.pl/1.8/Tue Mar 11 15:50:04 2008//TBUGZILLA-3_5_1 -/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-3_5_1 -/recode.pl/1.6/Fri Feb 20 21:54:16 2009//TBUGZILLA-3_5_1 -/sendbugmail.pl/1.8/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_1 -/sendunsentbugmail.pl/1.10/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_1 -/syncLDAP.pl/1.14/Mon Jul 7 09:01:51 2008//TBUGZILLA-3_5_1 -/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-3_5_1 +/README/1.12/Tue Oct 16 10:13:54 2007//TBUGZILLA-3_5_2 +/bugzilla-queue/1.1/Fri Sep 4 21:20:41 2009//TBUGZILLA-3_5_2 +/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-3_5_2 +/bz_webservice_demo.pl/1.14/Mon May 19 18:38:26 2008//TBUGZILLA-3_5_2 +/bzdbcopy.pl/1.9/Sat Oct 24 05:30:19 2009//TBUGZILLA-3_5_2 +/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-3_5_2 +/jb2bz.py/1.5/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_2 +/merge-users.pl/1.8/Tue Mar 11 15:50:04 2008//TBUGZILLA-3_5_2 +/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-3_5_2 +/recode.pl/1.6/Fri Feb 20 21:54:16 2009//TBUGZILLA-3_5_2 +/sendbugmail.pl/1.8/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_2 +/sendunsentbugmail.pl/1.10/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_2 +/syncLDAP.pl/1.14/Mon Jul 7 09:01:51 2008//TBUGZILLA-3_5_2 +/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-3_5_2 D/bugzilla-submit//// D/cmdline//// diff --git a/contrib/CVS/Tag b/contrib/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/contrib/CVS/Tag +++ b/contrib/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/contrib/bugzilla-submit/CVS/Entries b/contrib/bugzilla-submit/CVS/Entries index eea9e2820..53f0f9089 100644 --- a/contrib/bugzilla-submit/CVS/Entries +++ b/contrib/bugzilla-submit/CVS/Entries @@ -1,5 +1,5 @@ -/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-3_5_1 -/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-3_5_1 -/bugzilla-submit/1.7/Wed Sep 30 08:55:08 2009//TBUGZILLA-3_5_1 -/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-3_5_1 +/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-3_5_2 +/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-3_5_2 +/bugzilla-submit/1.7/Wed Sep 30 08:55:08 2009//TBUGZILLA-3_5_2 +/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-3_5_2 D diff --git a/contrib/bugzilla-submit/CVS/Tag b/contrib/bugzilla-submit/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/contrib/bugzilla-submit/CVS/Tag +++ b/contrib/bugzilla-submit/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/contrib/cmdline/CVS/Entries b/contrib/cmdline/CVS/Entries index af8d94b9f..56be3dace 100644 --- a/contrib/cmdline/CVS/Entries +++ b/contrib/cmdline/CVS/Entries @@ -1,8 +1,8 @@ -/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_1 -/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_1 -/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_1 -/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_1 -/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_1 -/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_1 -/query.conf/1.3/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_1 +/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 +/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 +/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 +/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 +/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 +/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 +/query.conf/1.3/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_2 D diff --git a/contrib/cmdline/CVS/Tag b/contrib/cmdline/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/contrib/cmdline/CVS/Tag +++ b/contrib/cmdline/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/CVS/Entries b/docs/CVS/Entries index ec9822a47..a9ae71265 100644 --- a/docs/CVS/Entries +++ b/docs/CVS/Entries @@ -1,4 +1,4 @@ -/makedocs.pl/1.21/Thu Jul 16 01:16:11 2009//TBUGZILLA-3_5_1 -/style.css/1.1/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_1 +/makedocs.pl/1.21/Thu Jul 16 01:16:11 2009//TBUGZILLA-3_5_2 +/style.css/1.1/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_2 D/en//// D/lib//// diff --git a/docs/CVS/Tag b/docs/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/CVS/Tag +++ b/docs/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/bugzilla.ent b/docs/bugzilla.ent index dc8d522f2..379703a54 100644 --- a/docs/bugzilla.ent +++ b/docs/bugzilla.ent @@ -27,6 +27,7 @@ <!ENTITY min-authen-radius-ver "any"> <!ENTITY min-soap-lite-ver "0.710.06"> <!ENTITY min-json-rpc-ver "any"> +<!ENTITY min-test-taint-ver "any"> <!ENTITY min-html-parser-ver "3.40"> <!ENTITY min-html-scrubber-ver "any"> <!ENTITY min-email-mime-attachment-stripper-ver "any"> diff --git a/docs/en/CVS/Entries b/docs/en/CVS/Entries index ad2fa33e2..c3d08654c 100644 --- a/docs/en/CVS/Entries +++ b/docs/en/CVS/Entries @@ -1,5 +1,5 @@ -/.cvsignore/1.4/Fri Apr 4 11:29:21 2008//TBUGZILLA-3_5_1 -/README.docs/1.12/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_1 -/rel_notes.txt/1.48/Fri Apr 4 06:48:16 2008//TBUGZILLA-3_5_1 +/.cvsignore/1.4/Fri Apr 4 11:29:21 2008//TBUGZILLA-3_5_2 +/README.docs/1.12/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_2 +/rel_notes.txt/1.48/Fri Apr 4 06:48:16 2008//TBUGZILLA-3_5_2 D/images//// D/xml//// diff --git a/docs/en/CVS/Tag b/docs/en/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/en/CVS/Tag +++ b/docs/en/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/en/html/Bugzilla-Guide.html b/docs/en/html/Bugzilla-Guide.html index ac7f6155c..37c7471b9 100644 --- a/docs/en/html/Bugzilla-Guide.html +++ b/docs/en/html/Bugzilla-Guide.html @@ -2,7 +2,7 @@ <HTML ><HEAD ><TITLE ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TITLE ><META @@ -44,7 +44,7 @@ CLASS="TITLEPAGE" CLASS="title" ><A NAME="AEN2" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</A ></H1 @@ -53,7 +53,7 @@ CLASS="corpauthor" >The Bugzilla Team</H3 ><P CLASS="pubdate" ->2009-11-05<BR></P +>2009-11-18<BR></P ><DIV ><DIV CLASS="abstract" @@ -685,7 +685,7 @@ NAME="newversions" >1.3. New Versions</A ></H2 ><P -> This is the 3.5.1 version of The Bugzilla Guide. It is so named +> This is the 3.5.2 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. This version of the guide, like its associated Bugzilla version, is a development version. diff --git a/docs/en/html/about.html b/docs/en/html/about.html index b9381fe8a..22d1c7b9c 100644 --- a/docs/en/html/about.html +++ b/docs/en/html/about.html @@ -7,12 +7,12 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK REL="PREVIOUS" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR @@ -157,7 +157,7 @@ ACCESSKEY="N" WIDTH="33%" ALIGN="left" VALIGN="top" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TD ><TD diff --git a/docs/en/html/administration.html b/docs/en/html/administration.html index 9e2c5b189..fca9434b4 100644 --- a/docs/en/html/administration.html +++ b/docs/en/html/administration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/api/Bugzilla.html b/docs/en/html/api/Bugzilla.html index c8100326e..df54b3003 100644 --- a/docs/en/html/api/Bugzilla.html +++ b/docs/en/html/api/Bugzilla.html @@ -84,6 +84,19 @@ name="METHODS" <dd> <p>The current <code class="code">cgi</code> object. Note that modules should <b>not</b> be using this in general. Not all Bugzilla actions are cgi requests. Its useful as a convenience method for those scripts/templates which are only use via CGI, though.</p> +<dt><a name="input_params" +><code class="code">input_params</code></a></dt> + +<dd> +<p>When running under the WebService, this is a hashref containing the arguments passed to the WebService method that was called. When running in a normal script, this is a hashref containing the contents of the CGI parameters.</p> + +<p>Modifying this hashref will modify the CGI parameters or the WebService arguments (depending on what <code class="code">input_params</code> currently represents).</p> + +<p>This should be used instead of <a href="#cgi" class="podlinkpod" +>"cgi"</a> in situations where your code could be being called by either a normal CGI script or a WebService method, such as during a code hook.</p> + +<p><b>Note:</b> When <code class="code">input_params</code> represents the CGI parameters, any parameter specified more than once (like <code class="code">foo=bar&foo=baz</code>) will appear as an arrayref in the hash, but any value specified only once will appear as a scalar. This means that even if a value <i>can</i> appear multiple times, if it only <i>does</i> appear once, then it will be a scalar in <code class="code">input_params</code>, not an arrayref.</p> + <dt><a name="user" ><code class="code">user</code></a></dt> diff --git a/docs/en/html/api/Bugzilla/Comment.html b/docs/en/html/api/Bugzilla/Comment.html new file mode 100644 index 000000000..077e6aa5e --- /dev/null +++ b/docs/en/html/api/Bugzilla/Comment.html @@ -0,0 +1,139 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +Bugzilla::Comment</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href=".././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>Bugzilla::Comment</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> + <li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#Accessors'>Accessors</a> + </ul> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p>Bugzilla::Comment - A Comment for a given bug</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<pre class="code"> use Bugzilla::Comment; + + my $comment = Bugzilla::Comment->new($comment_id); + my $comments = Bugzilla::Comment->new_from_list($comment_ids);</pre> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="DESCRIPTION" +>DESCRIPTION</a></h1> + +<p>Bugzilla::Comment represents a comment attached to a bug.</p> + +<p>This implements all standard <code class="code">Bugzilla::Object</code> methods. See <a href="../Bugzilla/Object.html" class="podlinkpod" +>Bugzilla::Object</a> for more details.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Accessors" +>Accessors</a></h2> + +<dl> +<dt><a name="bug_id" +><code class="code">bug_id</code></a></dt> + +<dd> +<p><code class="code">int</code> The ID of the bug to which the comment belongs.</p> + +<dt><a name="creation_ts" +><code class="code">creation_ts</code></a></dt> + +<dd> +<p><code class="code">string</code> The comment creation timestamp.</p> + +<dt><a name="body" +><code class="code">body</code></a></dt> + +<dd> +<p><code class="code">string</code> The body without any special additional text.</p> + +<dt><a name="work_time" +><code class="code">work_time</code></a></dt> + +<dd> +<p><code class="code">string</code> Time spent as related to this comment.</p> + +<dt><a name="is_private" +><code class="code">is_private</code></a></dt> + +<dd> +<p><code class="code">boolean</code> Comment is marked as private</p> + +<dt><a name="already_wrapped" +><code class="code">already_wrapped</code></a></dt> + +<dd> +<p>If this comment is stored in the database word-wrapped, this will be <code class="code">1</code>. <code class="code">0</code> otherwise.</p> + +<dt><a name="author" +><code class="code">author</code></a></dt> + +<dd> +<p><a href="../Bugzilla/User.html" class="podlinkpod" +>Bugzilla::User</a> who created the comment.</p> + +<dt><a name="body_full" +><code class="code">body_full</code></a></dt> + +<dd> +<dl> +<dt><a name="Description" +><b>Description</b></a></dt> + +<dd> +<p><code class="code">string</code> Body of the comment, including any special text (such as "this bug was marked as a duplicate of...").</p> + +<dt><a name="Params" +><b>Params</b></a></dt> + +<dd> +<dl> +<dt><a name="is_bugmail" +><code class="code">is_bugmail</code></a></dt> + +<dd> +<p><code class="code">boolean</code>. <code class="code">1</code> if this comment should be formatted specifically for bugmail.</p> + +<dt><a name="wrap" +><code class="code">wrap</code></a></dt> + +<dd> +<p><code class="code">boolean</code>. <code class="code">1</code> if the comment should be returned word-wrapped.</p> +</dd> +</dl> + +<dt><a name="Returns" +><b>Returns</b></a></dt> + +<dd> +<p>A string, the full text of the comment as it would be displayed to an end-user.</p> +</dd> +</dl> +</dd> +</dl> +<p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/Bugzilla/Hook.html b/docs/en/html/api/Bugzilla/Hook.html index aa06ccaf8..087cc8eaf 100644 --- a/docs/en/html/api/Bugzilla/Hook.html +++ b/docs/en/html/api/Bugzilla/Hook.html @@ -28,6 +28,7 @@ Bugzilla::Hook</title> <li class='indexItem indexItem2'><a href='#auth-verify_methods'>auth-verify_methods</a> <li class='indexItem indexItem2'><a href='#bug-columns'>bug-columns</a> <li class='indexItem indexItem2'><a href='#bug-end_of_create'>bug-end_of_create</a> + <li class='indexItem indexItem2'><a href='#bug-end_of_create_validators'>bug-end_of_create_validators</a> <li class='indexItem indexItem2'><a href='#bug-end_of_update'>bug-end_of_update</a> <li class='indexItem indexItem2'><a href='#bug-fields'>bug-fields</a> <li class='indexItem indexItem2'><a href='#bug-format_comment'>bug-format_comment</a> @@ -42,6 +43,9 @@ Bugzilla::Hook</title> <li class='indexItem indexItem2'><a href='#install-update_db'>install-update_db</a> <li class='indexItem indexItem2'><a href='#db_schema-abstract_schema'>db_schema-abstract_schema</a> <li class='indexItem indexItem2'><a href='#mailer-before_send'>mailer-before_send</a> + <li class='indexItem indexItem2'><a href='#object-before_create'>object-before_create</a> + <li class='indexItem indexItem2'><a href='#object-before_set'>object-before_set</a> + <li class='indexItem indexItem2'><a href='#object-end_of_create_validators'>object-end_of_create_validators</a> <li class='indexItem indexItem2'><a href='#page-before_template'>page-before_template</a> <li class='indexItem indexItem2'><a href='#product-confirm_delete'>product-confirm_delete</a> <li class='indexItem indexItem2'><a href='#sanitycheck-check'>sanitycheck-check</a> @@ -95,6 +99,9 @@ name="Arguments_Passed_to_Hooks" <p>These params are accessible through <a href="../Bugzilla.html#hook_args" class="podlinkpod" >"hook_args" in Bugzilla</a>. That returns a hashref. Very frequently, if you want your hook to do anything, you have to modify these variables.</p> +<p>You may also want to use <a href="../Bugzilla.html#input_params" class="podlinkpod" +>"input_params" in Bugzilla</a> to get parameters that were passed to the current CGI script or WebService method.</p> + <h2><a class='u' href='#___top' title='click to go to top of document' name="Versioning_Extensions" >Versioning Extensions</a></h2> @@ -225,6 +232,24 @@ name="bug-end_of_create" ><code class="code">timestamp</code> - The timestamp used for all updates in this transaction.</a></dt> </dl> +<h2><a class='u' href='#___top' title='click to go to top of document' +name="bug-end_of_create_validators" +>bug-end_of_create_validators</a></h2> + +<p>This happens during <a href="../Bugzilla/Bug.html#create" class="podlinkpod" +>"create" in Bugzilla::Bug</a>, after all parameters have been validated, but before anything has been inserted into the database.</p> + +<p>Params:</p> + +<dl> +<dt><a name="params" +><code class="code">params</code></a></dt> + +<dd> +<p>A hashref. The validated parameters passed to <code class="code">create</code>.</p> +</dd> +</dl> + <h2><a class='u' href='#___top' title='click to go to top of document' name="bug-end_of_update" >bug-end_of_update</a></h2> @@ -494,6 +519,86 @@ name="mailer-before_send" ><code class="code">email</code> - The <code class="code">Email::MIME</code> object that's about to be sent.</a></dt> </dl> +<h2><a class='u' href='#___top' title='click to go to top of document' +name="object-before_create" +>object-before_create</a></h2> + +<p>This happens at the beginning of <a href="../Bugzilla/Object.html#create" class="podlinkpod" +>"create" in Bugzilla::Object</a>.</p> + +<p>Params:</p> + +<dl> +<dt><a name="class" +><code class="code">class</code></a></dt> + +<dd> +<p>The name of the class that <code class="code">create</code> was called on. You can check this like <code class="code">if ($class->isa('Some::Class'))</code> in your code, to perform specific tasks before <code class="code">create</code> for only certain classes.</p> + +<dt><a name="params" +><code class="code">params</code></a></dt> + +<dd> +<p>A hashref. The set of named parameters passed to <code class="code">create</code>.</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="object-before_set" +>object-before_set</a></h2> + +<p>Called during <a href="../Bugzilla/Object.html#set" class="podlinkpod" +>"set" in Bugzilla::Object</a>, before any actual work is done. You can use this to perform actions before a value is changed for specific fields on certain types of objects.</p> + +<p>Params:</p> + +<dl> +<dt><a name="object" +><code class="code">object</code></a></dt> + +<dd> +<p>The object that <code class="code">set</code> was called on. You will probably want to do something like <code class="code">if ($object->isa('Some::Class'))</code> in your code to limit your changes to only certain subclasses of Bugzilla::Object.</p> + +<dt><a name="field" +><code class="code">field</code></a></dt> + +<dd> +<p>The name of the field being updated in the object.</p> + +<dt><a name="value" +><code class="code">value</code></a></dt> + +<dd> +<p>The value being set on the object.</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="object-end_of_create_validators" +>object-end_of_create_validators</a></h2> + +<p>Called at the end of <a href="../Bugzilla/Object.html#run_create_validators" class="podlinkpod" +>"run_create_validators" in Bugzilla::Object</a>. You can use this to run additional validation when creating an object.</p> + +<p>If a subclass has overridden <code class="code">run_create_validators</code>, then this usually happens <i>before</i> the subclass does its custom validation.</p> + +<p>Params:</p> + +<dl> +<dt><a name="class" +><code class="code">class</code></a></dt> + +<dd> +<p>The name of the class that <code class="code">create</code> was called on. You can check this like <code class="code">if ($class->isa('Some::Class'))</code> in your code, to perform specific tasks for only certain classes.</p> + +<dt><a name="params" +><code class="code">params</code></a></dt> + +<dd> +<p>A hashref. The set of named parameters passed to <code class="code">create</code>, modified and validated by the <code class="code">VALIDATORS</code> specified for the object.</p> +</dd> +</dl> + <h2><a class='u' href='#___top' title='click to go to top of document' name="page-before_template" >page-before_template</a></h2> diff --git a/docs/en/html/api/Bugzilla/Install/Requirements.html b/docs/en/html/api/Bugzilla/Install/Requirements.html index e8d098c70..99b524f80 100644 --- a/docs/en/html/api/Bugzilla/Install/Requirements.html +++ b/docs/en/html/api/Bugzilla/Install/Requirements.html @@ -43,9 +43,35 @@ name="CONSTANTS" <dd> <p>An arrayref of hashrefs that describes the perl modules required by Bugzilla. -The hashes have two keys, -<code class="code">name</code> and <code class="code">version</code>, -which represent the name of the module and the version that we require.</p> +The hashes have three keys:</p> + +<dl> +<dt><a name="package_-_The_name_of_the_Perl_package_that_you'd_find_on_CPAN_for_this_requirement." +><code class="code">package</code> - The name of the Perl package that you'd find on CPAN for this requirement. +<dt><a name="module_-_The_name_of_a_module_that_can_be_passed_to_the_install_command_in_CPAN.pm_to_install_this_module." +><code class="code">module</code> - The name of a module that can be passed to the <code class="code">install</code> command in <code class="code">CPAN.pm</code> to install this module. +<dt><a name="version_-_The_version_of_this_module_that_we_require,_or_0_if_any_version_is_acceptable." +><code class="code">version</code> - The version of this module that we require, +or <code class="code">0</code> if any version is acceptable.</a></dt> +</dl> + +<dt><a name="OPTIONAL_MODULES" +><code class="code">OPTIONAL_MODULES</code></a></dt> + +<dd> +<p>An arrayref of hashrefs that describes the perl modules that add additional features to Bugzilla if installed. +Its hashes have all the fields of <a href="#REQUIRED_MODULES" class="podlinkpod" +>"REQUIRED_MODULES"</a>, +plus a <code class="code">feature</code> item--an arrayref of strings that describe what features require this module.</p> + +<dt><a name="FEATURE_FILES" +><code class="code">FEATURE_FILES</code></a></dt> + +<dd> +<p>A hashref that describes what files should only be compiled if a certain feature is enabled. +The feature is the key, +and the values are arrayrefs of file names (which are passed to <code class="code">glob</code>, +so shell patterns work).</p> </dd> </dl> @@ -144,6 +170,12 @@ $output)</code></a></dt> L</REQUIRED_MODULES>. Returns: nothing</pre> + +<dt><a name="map_files_to_features" +><code class="code">map_files_to_features</code></a></dt> + +<dd> +<p>Returns a hashref where file names are the keys and the value is the feature that must be enabled in order to compile that file.</p> </dd> </dl> <p class="backlinkbottom"><b><a name="___bottom" href="../../index.html" title="All Documents"><<</a></b></p> diff --git a/docs/en/html/api/Bugzilla/Migrate.html b/docs/en/html/api/Bugzilla/Migrate.html index 7f081908e..5c81eba64 100644 --- a/docs/en/html/api/Bugzilla/Migrate.html +++ b/docs/en/html/api/Bugzilla/Migrate.html @@ -158,6 +158,11 @@ If it's a reference, name="parse_date" >parse_date</a></h2> +<p>(Note: Usually you don't need to call this, +because <a href="#translate_bug" class="podlinkpod" +>"translate_bug"</a> handles date translations for you, +for bug data.)</p> + <p>Parses a date string and returns a formatted date string that can be inserted into the database. If the input date is missing a timezone, the "timezone" configuration parameter will be used as the timezone of the date.</p> @@ -166,7 +171,10 @@ the "timezone" configuration parameter will be used as the timezone of t name="translate_bug" >translate_bug</a></h2> -<p>Uses the <code class="code">$translate_fields</code> and <$translate_values> configuration variables to convert a hashref of "other bug-tracker" fields into Bugzilla fields. +<p>(Note: Normally you don't have to call this yourself, +as <code class="code">Bugzilla::Migrate</code> does it for you.)</p> + +<p>Uses the <code class="code">$translate_fields</code> and <code class="code">$translate_values</code> configuration variables to convert a hashref of "other bug-tracker" fields into Bugzilla fields. It takes one argument, the hashref to convert. Any unrecognized fields will have their value prepended to the <code class="code">comment</code> element in the returned hashref, @@ -185,10 +193,14 @@ the hashref that you pass in will be destroyed (all keys will be deleted).</p> name="translate_value" >translate_value</a></h2> -<p>(Note: Normally you will want to use <a href="#translate_bug" class="podlinkpod" ->"translate_bug"</a> instead of this.)</p> +<p>(Note: Generally you only need to use this during <a href="#_read_products" class="podlinkpod" +>"_read_products"</a> and <a href="#_read_users" class="podlinkpod" +>"_read_users"</a> if necessary, +because the data returned from <a href="#_read_bugs" class="podlinkpod" +>"_read_bugs"</a> will be put through <a href="#translate_bug" class="podlinkpod" +>"translate_bug"</a>.)</p> -<p>Uses the <code class="code">translate_values</code> configuration variable to convert field values from your bug-tracker to Bugzilla. +<p>Uses the <code class="code">$translate_values</code> configuration variable to convert field values from your bug-tracker to Bugzilla. Takes two arguments, the first being a field name and the second being a value. If the value is an arrayref, @@ -198,17 +210,13 @@ If the value is an arrayref, any date field will be converted into ISO 8601 format, for inserting into the database.</p> -<p>You must use this to translate any bug field values that you return during <a href="#_read_bugs" class="podlinkpod" ->"_read_bugs"</a>, -so that they are valid values for <a href="../Bugzilla/Bug.html#create" class="podlinkpod" ->"create" in Bugzilla::Bug</a>.</p> - <h2><a class='u' href='#___top' title='click to go to top of document' name="translate_field" >translate_field</a></h2> -<p>(Note: Normally you will want to use <a href="#translate_bug" class="podlinkpod" ->"translate_bug"</a> instead of this.)</p> +<p>(Note: Normally you don't need to use this, +because <a href="#translate_bug" class="podlinkpod" +>"translate_bug"</a> handles it for you.)</p> <p>Translates a field name in your bug-tracker to a field name in Bugzilla, using the rules described in the description of the <code class="code">$translate_fields</code> configuration variable.</p> @@ -231,7 +239,7 @@ name="_read_bugs" The hashes will be passed to <a href="../Bugzilla/Bug.html#create" class="podlinkpod" >"create" in Bugzilla::Bug</a> to create bugs in Bugzilla. In addition to the normal <code class="code">create</code> fields, -the hashes can contain two additional items:</p> +the hashes can contain three additional items:</p> <dl> <dt><a name="comments" @@ -244,7 +252,7 @@ The keys should be the names of columns in the longdescs table that you want to <code class="code">who</code> must be a username instead of a user id, though.</p> -<p>You don't need to specify a value for <code class="code">bug_id</code> column.</p> +<p>You don't need to specify a value for the <code class="code">bug_id</code> column.</p> <dt><a name="history" >history</a></dt> @@ -257,7 +265,7 @@ The keys should be the names of columns in the bugs_activity table to set for ea though, and <code class="code">field</code> (containing the name of some field) is taken instead of <code class="code">fieldid</code>.</p> -<p>You don't need to specify a value for <code class="code">bug_id</code> column.</p> +<p>You don't need to specify a value for the <code class="code">bug_id</code> column.</p> <dt><a name="attachments" >attachments</a></dt> @@ -269,7 +277,7 @@ representing values to pass to <a href="../Bugzilla/Attachment.html#create" clas (Remember that the <code class="code">data</code> argument must be a file handle--we recommend using <a href="../IO/File.html#new_tmpfile" class="podlinkpod" >"new_tmpfile" in IO::File</a> to create anonymous temporary files for this purpose.) You should specify a <code class="code">submitter</code> argument containing the username of the attachment's submitter.</p> -<p>You don't need to specify a value for the <code class="code">bug</code> argument.</p> +<p>You don't need to specify a value for the the <code class="code">bug</code> argument.</p> </dd> </dl> @@ -330,12 +338,6 @@ describing configuration variables for migrating from your bug-tracker. You should always include the default <code class="code">CONFIG_VARS</code> (by calling $self->SUPER::CONFIG_VARS) as part of your return value, if you override this method.</p> -<p>In addition to the normal fields from <code class="code">LOCALCONFIG_VARS</code>, -you can also specify a <code class="code">check</code> key for each item, -which should be a subroutine reference. -When the configuration file is read, -this subroutine will be called (as a method) to make sure that the value is valid.</p> - <h2><a class='u' href='#___top' title='click to go to top of document' name="NON_COMMENT_FIELDS" >NON_COMMENT_FIELDS</a></h2> diff --git a/docs/en/html/api/Bugzilla/Util.html b/docs/en/html/api/Bugzilla/Util.html index e13f44e54..c50753dbb 100644 --- a/docs/en/html/api/Bugzilla/Util.html +++ b/docs/en/html/api/Bugzilla/Util.html @@ -73,6 +73,7 @@ name="SYNOPSIS" # Functions for formatting time format_time($time); + datetime_from($time, $timezone); # Functions for dealing with files $time = file_mod_time($filename); @@ -159,7 +160,7 @@ name="Quoting" ><code class="code">css_class_quote($val)</code></a></dt> <dd> -<p>Quotes characters so that they may be used as CSS class names. Spaces are replaced by underscores.</p> +<p>Quotes characters so that they may be used as CSS class names. Spaces and forward slashes are replaced by underscores.</p> <dt><a name="xml_quote($val)" ><code class="code">xml_quote($val)</code></a></dt> @@ -344,6 +345,14 @@ name="Formatting_Time" <dd> <p>Returns a number with 2 digit precision, unless the last digit is a 0. Then it returns only 1 digit precision.</p> + +<dt><a name="datetime_from($time,_$timezone)" +><code class="code">datetime_from($time, $timezone)</code></a></dt> + +<dd> +<p>Returns a DateTime object given a date string. If the string is not in some valid date format that <code class="code">strptime</code> understands, we return <code class="code">undef</code>.</p> + +<p>You can optionally specify a timezone for the returned date. If not specified, defaults to the currently-logged-in user's timezone, or the Bugzilla server's local timezone if there isn't a logged-in user.</p> </dd> </dl> diff --git a/docs/en/html/api/Bugzilla/WebService.html b/docs/en/html/api/Bugzilla/WebService.html index efac99fc8..0d30aa048 100644 --- a/docs/en/html/api/Bugzilla/WebService.html +++ b/docs/en/html/api/Bugzilla/WebService.html @@ -148,9 +148,41 @@ name="How_Bugzilla_WebService_Methods_Take_Parameters" name="LOGGING_IN" >LOGGING IN</a></h1> +<p>There are various ways to log in:</p> + +<dl> +<dt><a name="User.login" +><code class="code">User.login</code></a></dt> + +<dd> <p>You can use <a href="../Bugzilla/WebService/User.html#login" class="podlinkpod" >"login" in Bugzilla::WebService::User</a> to log in as a Bugzilla user. This issues standard HTTP cookies that you must then use in future calls, so your client must be capable of receiving and transmitting cookies.</p> +<dt><a name="Bugzilla_login_and_Bugzilla_password" +><code class="code">Bugzilla_login</code> and <code class="code">Bugzilla_password</code></a></dt> + +<dd> +<p><b>Added in Bugzilla 3.6</b></p> + +<p>You can specify <code class="code">Bugzilla_login</code> and <code class="code">Bugzilla_password</code> as arguments to any WebService method, and you will be logged in as that user if your credentials are correct. Here are the arguments you can specify to any WebService method to perform a login:</p> + +<dl> +<dt><a name="Bugzilla_login_(string)_-_A_user's_login_name." +><code class="code">Bugzilla_login</code> (string) - A user's login name. +<dt><a name="Bugzilla_password_(string)_-_That_user's_password." +><code class="code">Bugzilla_password</code> (string) - That user's password. +<dt><a name="Bugzilla_restrictlogin_(boolean)_-_Optional._If_true,_then_your_login_will_only_be_valid_for_your_IP_address." +><code class="code">Bugzilla_restrictlogin</code> (boolean) - Optional. If true, then your login will only be valid for your IP address. +<dt><a +><code class="code">Bugzilla_rememberlogin</code> (boolean) - Optional. If true, then the cookie sent back to you with the method response will not expire.</a></dt> +</dl> + +<p>The <code class="code">Bugzilla_restrictlogin</code> and <code class="code">Bugzilla_rememberlogin</code> options are only used when you have also specified <code class="code">Bugzilla_login</code> and <code class="code">Bugzilla_password</code>.</p> + +<p>Note that Bugzilla will return HTTP cookies along with the method response when you use these arguments (just like the <code class="code">User.login</code> method above).</p> +</dd> +</dl> + <h1><a class='u' href='#___top' title='click to go to top of document' name="STABLE,_EXPERIMENTAL,_and_UNSTABLE" >STABLE, EXPERIMENTAL, and UNSTABLE</a></h1> diff --git a/docs/en/html/api/Bugzilla/Whine/Schedule.html b/docs/en/html/api/Bugzilla/Whine/Schedule.html new file mode 100644 index 000000000..ffd7bd1ec --- /dev/null +++ b/docs/en/html/api/Bugzilla/Whine/Schedule.html @@ -0,0 +1,139 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +Bugzilla::Whine::Schedule</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href="../.././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>Bugzilla::Whine::Schedule</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> + <li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a> + <li class='indexItem indexItem1'><a href='#METHODS'>METHODS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#Constructors'>Constructors</a> + <li class='indexItem indexItem2'><a href='#Accessors'>Accessors</a> + </ul> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p>Bugzilla::Whine::Schedule - A schedule object used by <a href="../../Bugzilla/Whine.html" class="podlinkpod" +>Bugzilla::Whine</a>.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<pre class="code"> use Bugzilla::Whine::Schedule; + + my $schedule = new Bugzilla::Whine::Schedule($schedule_id); + + my $event_id = $schedule->eventid; + my $run_day = $schedule->run_day; + my $run_time = $schedule->run_time; + my $is_group = $schedule->mailto_is_group; + my $object = $schedule->mailto; + my $array_ref = $schedule->mailto_users;</pre> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="DESCRIPTION" +>DESCRIPTION</a></h1> + +<p>This module exists to represent a <a href="../../Bugzilla/Whine.html" class="podlinkpod" +>Bugzilla::Whine</a> event schedule.</p> + +<p>This is an implementation of <a href="../../Bugzilla/Object.html" class="podlinkpod" +>Bugzilla::Object</a>, and so has all the same methods available as <a href="../../Bugzilla/Object.html" class="podlinkpod" +>Bugzilla::Object</a>, in addition to what is documented below.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="METHODS" +>METHODS</a></h1> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Constructors" +>Constructors</a></h2> + +<dl> +<dt><a name="new" +><code class="code">new</code></a></dt> + +<dd> +<p>Does not accept a bare <code class="code">name</code> argument. Instead, accepts only an id.</p> + +<p>See also: <a href="../../Bugzilla/Object.html#new" class="podlinkpod" +>"new" in Bugzilla::Object</a>.</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Accessors" +>Accessors</a></h2> + +<p>These return data about the object, without modifying the object.</p> + +<dl> +<dt><a name="event_id" +><code class="code">event_id</code></a></dt> + +<dd> +<p>The <a href="../../Bugzilla/Whine.html" class="podlinkpod" +>Bugzilla::Whine</a> event object id for this object.</p> + +<dt><a name="run_day" +><code class="code">run_day</code></a></dt> + +<dd> +<p>The day or day pattern that a <a href="../../Bugzilla/Whine.html" class="podlinkpod" +>Bugzilla::Whine</a> event is scheduled to run.</p> + +<dt><a name="run_time" +><code class="code">run_time</code></a></dt> + +<dd> +<p>The time or time pattern that a <a href="../../Bugzilla/Whine.html" class="podlinkpod" +>Bugzilla::Whine</a> event is scheduled to run.</p> + +<dt><a name="mailto_is_group" +><code class="code">mailto_is_group</code></a></dt> + +<dd> +<p>Returns a numeric 1 (<code class="code">group</code>) or 0 (<code class="code">user</code>) to represent whether <a href="#mailto" class="podlinkpod" +>"mailto"</a> is a group or user.</p> + +<dt><a name="mailto" +><code class="code">mailto</code></a></dt> + +<dd> +<p>This is either a <a href="../../Bugzilla/User.html" class="podlinkpod" +>Bugzilla::User</a> or <a href="../../Bugzilla/Group.html" class="podlinkpod" +>Bugzilla::Group</a> object to represent the user or group this scheduled event is set to be mailed to.</p> + +<dt><a name="mailto_users" +><code class="code">mailto_users</code></a></dt> + +<dd> +<p>Returns an array reference of <a href="../../Bugzilla/User.html" class="podlinkpod" +>Bugzilla::User</a>s. This is derived from the <a href="../../Bugzilla/Group.html" class="podlinkpod" +>Bugzilla::Group</a> stored in <a href="#mailto" class="podlinkpod" +>"mailto"</a> if <a href="#mailto_is_group" class="podlinkpod" +>"mailto_is_group"</a> is true and the group is still active, otherwise it will contain a single array element for the <a href="../../Bugzilla/User.html" class="podlinkpod" +>Bugzilla::User</a> in <a href="#mailto" class="podlinkpod" +>"mailto"</a>.</p> +</dd> +</dl> +<p class="backlinkbottom"><b><a name="___bottom" href="../../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/index.html b/docs/en/html/api/index.html index c4e74384a..d19d78e5d 100644 --- a/docs/en/html/api/index.html +++ b/docs/en/html/api/index.html @@ -2,13 +2,13 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <title>Bugzilla 3.5.1 API Documentation</title> + <title>Bugzilla 3.5.2 API Documentation</title> <link rel="stylesheet" title="style" type="text/css" href="./../../../style.css" media="all" > </head> <body class="contentspage"> - <h1>Bugzilla 3.5.1 API Documentation</h1> + <h1>Bugzilla 3.5.2 API Documentation</h1> <dl class='superindex'> <dt><a name="Files">Files</a></dt> <dd> @@ -87,213 +87,221 @@ <td>Bugzilla classification class.</td> </tr> <tr class="odd"> + <th><a href="./Bugzilla/Comment.html">Bugzilla::Comment</a></th> + <td>A Comment for a given bug</td> +</tr> +<tr class="even"> <th><a href="./Bugzilla/Component.html">Bugzilla::Component</a></th> <td>Bugzilla product component class.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Config.html">Bugzilla::Config</a></th> <td>Configuration parameters for Bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Config/Common.html">Bugzilla::Config::Common</a></th> <td>Parameter checking functions</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/DB.html">Bugzilla::DB</a></th> <td>Database access routines, using DBI</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/DB/Mysql.html">Bugzilla::DB::Mysql</a></th> <td>Bugzilla database compatibility layer for MySQL</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/DB/Oracle.html">Bugzilla::DB::Oracle</a></th> <td>Bugzilla database compatibility layer for Oracle</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/DB/Pg.html">Bugzilla::DB::Pg</a></th> <td>Bugzilla database compatibility layer for PostgreSQL</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/DB/Schema.html">Bugzilla::DB::Schema</a></th> <td>Abstract database schema for Bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Error.html">Bugzilla::Error</a></th> <td>Error handling utilities for Bugzilla</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Field.html">Bugzilla::Field</a></th> <td>a particular piece of information about bugs and useful routines for form field manipulation</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Field/Choice.html">Bugzilla::Field::Choice</a></th> <td>A legal value for a <select>-type field.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Flag.html">Bugzilla::Flag</a></th> <td>A module to deal with Bugzilla flag values.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/FlagType.html">Bugzilla::FlagType</a></th> <td>A module to deal with Bugzilla flag types.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Group.html">Bugzilla::Group</a></th> <td>Bugzilla group class.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Hook.html">Bugzilla::Hook</a></th> <td>Extendable extension hooks for Bugzilla code</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install.html">Bugzilla::Install</a></th> <td>Functions and variables having to do with installation.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install/CPAN.html">Bugzilla::Install::CPAN</a></th> <td>Routines to install Perl modules from CPAN.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install/DB.html">Bugzilla::Install::DB</a></th> <td>Fix up the database during installation.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install/Filesystem.html">Bugzilla::Install::Filesystem</a></th> <td>Fix up the filesystem during installation.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install/Localconfig.html">Bugzilla::Install::Localconfig</a></th> <td></td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install/Requirements.html">Bugzilla::Install::Requirements</a></th> <td>Functions and variables dealing with Bugzilla's perl-module requirements.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install/Util.html">Bugzilla::Install::Util</a></th> <td>Utility functions that are useful both during installation and afterwards.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/JobQueue.html">Bugzilla::JobQueue</a></th> <td>Interface between Bugzilla and TheSchwartz.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/JobQueue/Runner.html">Bugzilla::JobQueue::Runner</a></th> <td>A class representing the daemon that runs the job queue.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Keyword.html">Bugzilla::Keyword</a></th> <td>A Keyword that can be added to a bug.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Migrate.html">Bugzilla::Migrate</a></th> <td>Functions to migrate from other databases</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Milestone.html">Bugzilla::Milestone</a></th> <td>Bugzilla product milestone class.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Object.html">Bugzilla::Object</a></th> <td>A base class for objects in Bugzilla.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Product.html">Bugzilla::Product</a></th> <td>Bugzilla product class.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Search/Saved.html">Bugzilla::Search::Saved</a></th> <td>A saved search</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Status.html">Bugzilla::Status</a></th> <td>Bug status class.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Template.html">Bugzilla::Template</a></th> <td>Wrapper around the Template Toolkit Template object</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Template/Plugin/Bugzilla.html">Bugzilla::Template::Plugin::Bugzilla</a></th> <td></td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Template/Plugin/Hook.html">Bugzilla::Template::Plugin::Hook</a></th> <td></td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Template/Plugin/User.html">Bugzilla::Template::Plugin::User</a></th> <td></td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Token.html">Bugzilla::Token</a></th> <td>Provides different routines to manage tokens.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Update.html">Bugzilla::Update</a></th> <td>Update routines for Bugzilla</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/User.html">Bugzilla::User</a></th> <td>Object for a Bugzilla user</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/User/Setting.html">Bugzilla::User::Setting</a></th> <td>Object for a user preference setting</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/User/Setting/Lang.html">Bugzilla::User::Setting::Lang</a></th> <td>Object for a user preference setting for preferred language</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/User/Setting/Skin.html">Bugzilla::User::Setting::Skin</a></th> <td>Object for a user preference setting for skins</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/User/Setting/Timezone.html">Bugzilla::User::Setting::Timezone</a></th> <td>Object for a user preference setting for desired timezone</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Util.html">Bugzilla::Util</a></th> <td>Generic utility functions for bugzilla</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Version.html">Bugzilla::Version</a></th> <td>Bugzilla product version class.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService.html">Bugzilla::WebService</a></th> <td>The Web Service interface to Bugzilla</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/Bug.html">Bugzilla::WebService::Bug</a></th> <td>The API for creating, changing, and getting the details of bugs.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/Bugzilla.html">Bugzilla::WebService::Bugzilla</a></th> <td>Global functions for the webservice interface.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/Product.html">Bugzilla::WebService::Product</a></th> <td>The Product API</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/Server/JSONRPC.html">Bugzilla::WebService::Server::JSONRPC</a></th> <td>The JSON-RPC Interface to Bugzilla</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/Server/XMLRPC.html">Bugzilla::WebService::Server::XMLRPC</a></th> <td>The XML-RPC Interface to Bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/User.html">Bugzilla::WebService::User</a></th> <td>The User Account and Login API</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/Util.html">Bugzilla::WebService::Util</a></th> <td></td> </tr> +<tr class="even"> + <th><a href="./Bugzilla/Whine/Schedule.html">Bugzilla::Whine::Schedule</a></th> + <td>A schedule object used by Bugzilla::Whine.</td> +</tr> </table></dd> </dl> diff --git a/docs/en/html/attachments.html b/docs/en/html/attachments.html index 78b2e1c65..c51076053 100644 --- a/docs/en/html/attachments.html +++ b/docs/en/html/attachments.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/bug_page.html b/docs/en/html/bug_page.html index 0da20705e..3c04dc320 100644 --- a/docs/en/html/bug_page.html +++ b/docs/en/html/bug_page.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/bug_status_workflow.html b/docs/en/html/bug_status_workflow.html index 6d1867a3d..6bca72dac 100644 --- a/docs/en/html/bug_status_workflow.html +++ b/docs/en/html/bug_status_workflow.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/bugreports.html b/docs/en/html/bugreports.html index a29fd7dd5..b75686a9e 100644 --- a/docs/en/html/bugreports.html +++ b/docs/en/html/bugreports.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/classifications.html b/docs/en/html/classifications.html index 6699555be..16fb3759d 100644 --- a/docs/en/html/classifications.html +++ b/docs/en/html/classifications.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/cmdline-bugmail.html b/docs/en/html/cmdline-bugmail.html index fc9e9c5e5..666030c51 100644 --- a/docs/en/html/cmdline-bugmail.html +++ b/docs/en/html/cmdline-bugmail.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/cmdline.html b/docs/en/html/cmdline.html index d74696819..f1a1e9d30 100644 --- a/docs/en/html/cmdline.html +++ b/docs/en/html/cmdline.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/components.html b/docs/en/html/components.html index b1ce37d90..d89f4a978 100644 --- a/docs/en/html/components.html +++ b/docs/en/html/components.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/configuration.html b/docs/en/html/configuration.html index c8f382b63..0feb906ff 100644 --- a/docs/en/html/configuration.html +++ b/docs/en/html/configuration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/conventions.html b/docs/en/html/conventions.html index 9a6e6fd90..9e9c7ee27 100644 --- a/docs/en/html/conventions.html +++ b/docs/en/html/conventions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/copyright.html b/docs/en/html/copyright.html index 773fb5fae..26f6eaaf4 100644 --- a/docs/en/html/copyright.html +++ b/docs/en/html/copyright.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/credits.html b/docs/en/html/credits.html index f5d7c078a..11e714dc0 100644 --- a/docs/en/html/credits.html +++ b/docs/en/html/credits.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/cust-change-permissions.html b/docs/en/html/cust-change-permissions.html index 702fbebaa..20f5d7da2 100644 --- a/docs/en/html/cust-change-permissions.html +++ b/docs/en/html/cust-change-permissions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/cust-hooks.html b/docs/en/html/cust-hooks.html index c1b45eaf0..010b32858 100644 --- a/docs/en/html/cust-hooks.html +++ b/docs/en/html/cust-hooks.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/cust-skins.html b/docs/en/html/cust-skins.html index 69199ae49..ecf9e7fa5 100644 --- a/docs/en/html/cust-skins.html +++ b/docs/en/html/cust-skins.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/cust-templates.html b/docs/en/html/cust-templates.html index b3b967a5b..7f0bea4ef 100644 --- a/docs/en/html/cust-templates.html +++ b/docs/en/html/cust-templates.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/custom-fields.html b/docs/en/html/custom-fields.html index 3e1222cff..c256dcfa0 100644 --- a/docs/en/html/custom-fields.html +++ b/docs/en/html/custom-fields.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/customization.html b/docs/en/html/customization.html index 778cdd763..f745634fd 100644 --- a/docs/en/html/customization.html +++ b/docs/en/html/customization.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/disclaimer.html b/docs/en/html/disclaimer.html index b02f86958..2a77322e1 100644 --- a/docs/en/html/disclaimer.html +++ b/docs/en/html/disclaimer.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/edit-values.html b/docs/en/html/edit-values.html index f7b5b8652..7a357ecd1 100644 --- a/docs/en/html/edit-values.html +++ b/docs/en/html/edit-values.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/extraconfig.html b/docs/en/html/extraconfig.html index 0658d15f3..df75cb66a 100644 --- a/docs/en/html/extraconfig.html +++ b/docs/en/html/extraconfig.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/flags-overview.html b/docs/en/html/flags-overview.html index e489058c7..faf24bbf1 100644 --- a/docs/en/html/flags-overview.html +++ b/docs/en/html/flags-overview.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/flags.html b/docs/en/html/flags.html index 4edd2b6a5..1ef33ed02 100644 --- a/docs/en/html/flags.html +++ b/docs/en/html/flags.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/general-advice.html b/docs/en/html/general-advice.html index 7ff37fbda..aebdd29a9 100644 --- a/docs/en/html/general-advice.html +++ b/docs/en/html/general-advice.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-0.html b/docs/en/html/gfdl-0.html index 0c4cf4bf1..127db4f0a 100644 --- a/docs/en/html/gfdl-0.html +++ b/docs/en/html/gfdl-0.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-1.html b/docs/en/html/gfdl-1.html index 79e1f5842..2976579d1 100644 --- a/docs/en/html/gfdl-1.html +++ b/docs/en/html/gfdl-1.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-10.html b/docs/en/html/gfdl-10.html index 83f03a64b..9fc78e6e7 100644 --- a/docs/en/html/gfdl-10.html +++ b/docs/en/html/gfdl-10.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-2.html b/docs/en/html/gfdl-2.html index c0cced8da..b24c43c2a 100644 --- a/docs/en/html/gfdl-2.html +++ b/docs/en/html/gfdl-2.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-3.html b/docs/en/html/gfdl-3.html index 9ac022108..d70a87edb 100644 --- a/docs/en/html/gfdl-3.html +++ b/docs/en/html/gfdl-3.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-4.html b/docs/en/html/gfdl-4.html index a6c0a65f4..7f14b6f93 100644 --- a/docs/en/html/gfdl-4.html +++ b/docs/en/html/gfdl-4.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-5.html b/docs/en/html/gfdl-5.html index c3ec49358..e9f258768 100644 --- a/docs/en/html/gfdl-5.html +++ b/docs/en/html/gfdl-5.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-6.html b/docs/en/html/gfdl-6.html index 8131503f6..1402b85ee 100644 --- a/docs/en/html/gfdl-6.html +++ b/docs/en/html/gfdl-6.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-7.html b/docs/en/html/gfdl-7.html index 6d5bd94ef..56758e89d 100644 --- a/docs/en/html/gfdl-7.html +++ b/docs/en/html/gfdl-7.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-8.html b/docs/en/html/gfdl-8.html index 5f2610b06..973e71d20 100644 --- a/docs/en/html/gfdl-8.html +++ b/docs/en/html/gfdl-8.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-9.html b/docs/en/html/gfdl-9.html index 73ee1967e..6b372af8e 100644 --- a/docs/en/html/gfdl-9.html +++ b/docs/en/html/gfdl-9.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-howto.html b/docs/en/html/gfdl-howto.html index 8b5c6a875..85de6b5fc 100644 --- a/docs/en/html/gfdl-howto.html +++ b/docs/en/html/gfdl-howto.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/gfdl.html b/docs/en/html/gfdl.html index ff39ebeb9..c498f26dc 100644 --- a/docs/en/html/gfdl.html +++ b/docs/en/html/gfdl.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/glossary.html b/docs/en/html/glossary.html index 31e3a12a5..3a73e6c08 100644 --- a/docs/en/html/glossary.html +++ b/docs/en/html/glossary.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -33,7 +33,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/groups.html b/docs/en/html/groups.html index 7e65dd1ca..24f7f9ff7 100644 --- a/docs/en/html/groups.html +++ b/docs/en/html/groups.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/hintsandtips.html b/docs/en/html/hintsandtips.html index dc6c24b25..7eb4f49ca 100644 --- a/docs/en/html/hintsandtips.html +++ b/docs/en/html/hintsandtips.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/index.html b/docs/en/html/index.html index 2066a3871..6ec6d0312 100644 --- a/docs/en/html/index.html +++ b/docs/en/html/index.html @@ -2,7 +2,7 @@ <HTML ><HEAD ><TITLE ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TITLE ><META @@ -47,7 +47,7 @@ CLASS="TITLEPAGE" CLASS="title" ><A NAME="AEN2" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</A ></H1 @@ -56,7 +56,7 @@ CLASS="corpauthor" >The Bugzilla Team</H3 ><P CLASS="pubdate" ->2009-11-05<BR></P +>2009-11-18<BR></P ><DIV ><DIV CLASS="abstract" diff --git a/docs/en/html/install-perlmodules-manual.html b/docs/en/html/install-perlmodules-manual.html index 2aec12f76..a514d8f15 100644 --- a/docs/en/html/install-perlmodules-manual.html +++ b/docs/en/html/install-perlmodules-manual.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/installation.html b/docs/en/html/installation.html index ae518ad3e..5135292a0 100644 --- a/docs/en/html/installation.html +++ b/docs/en/html/installation.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/installing-bugzilla.html b/docs/en/html/installing-bugzilla.html index 6e49375df..328124882 100644 --- a/docs/en/html/installing-bugzilla.html +++ b/docs/en/html/installing-bugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/integration.html b/docs/en/html/integration.html index 9412ddaac..768e61e4d 100644 --- a/docs/en/html/integration.html +++ b/docs/en/html/integration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/keywords.html b/docs/en/html/keywords.html index f233fbf3f..db95c4b1f 100644 --- a/docs/en/html/keywords.html +++ b/docs/en/html/keywords.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/lifecycle.html b/docs/en/html/lifecycle.html index bf34f5746..ff123a6b8 100644 --- a/docs/en/html/lifecycle.html +++ b/docs/en/html/lifecycle.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/milestones.html b/docs/en/html/milestones.html index 6897bee8e..0febea16a 100644 --- a/docs/en/html/milestones.html +++ b/docs/en/html/milestones.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/modules-manual-download.html b/docs/en/html/modules-manual-download.html index 03e966e04..f431f8c07 100644 --- a/docs/en/html/modules-manual-download.html +++ b/docs/en/html/modules-manual-download.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/modules-manual-instructions.html b/docs/en/html/modules-manual-instructions.html index 59fb2b286..aa81b0e75 100644 --- a/docs/en/html/modules-manual-instructions.html +++ b/docs/en/html/modules-manual-instructions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/modules-manual-optional.html b/docs/en/html/modules-manual-optional.html index edf4ae6eb..54167be87 100644 --- a/docs/en/html/modules-manual-optional.html +++ b/docs/en/html/modules-manual-optional.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/multiple-bz-dbs.html b/docs/en/html/multiple-bz-dbs.html index 3ae336ca9..c1b6ff64e 100644 --- a/docs/en/html/multiple-bz-dbs.html +++ b/docs/en/html/multiple-bz-dbs.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/myaccount.html b/docs/en/html/myaccount.html index 2f48cd36f..296a51b69 100644 --- a/docs/en/html/myaccount.html +++ b/docs/en/html/myaccount.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/newversions.html b/docs/en/html/newversions.html index bb0329832..eb2a1b790 100644 --- a/docs/en/html/newversions.html +++ b/docs/en/html/newversions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR @@ -81,7 +81,7 @@ NAME="newversions" >1.3. New Versions</A ></H1 ><P -> This is the 3.5.1 version of The Bugzilla Guide. It is so named +> This is the 3.5.2 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. This version of the guide, like its associated Bugzilla version, is a development version. diff --git a/docs/en/html/nonroot.html b/docs/en/html/nonroot.html index 8cfe6751f..35035ea0c 100644 --- a/docs/en/html/nonroot.html +++ b/docs/en/html/nonroot.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/os-specific.html b/docs/en/html/os-specific.html index 48b926168..15933690c 100644 --- a/docs/en/html/os-specific.html +++ b/docs/en/html/os-specific.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/parameters.html b/docs/en/html/parameters.html index 9f8b0aa3e..0d66dd3d9 100644 --- a/docs/en/html/parameters.html +++ b/docs/en/html/parameters.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/paranoid-security.html b/docs/en/html/paranoid-security.html index eaf7ff1d1..b1eb9c9fe 100644 --- a/docs/en/html/paranoid-security.html +++ b/docs/en/html/paranoid-security.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/patches.html b/docs/en/html/patches.html index 77e31757a..8baabac51 100644 --- a/docs/en/html/patches.html +++ b/docs/en/html/patches.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/products.html b/docs/en/html/products.html index c52a723d2..a8d800701 100644 --- a/docs/en/html/products.html +++ b/docs/en/html/products.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/query.html b/docs/en/html/query.html index b28bc4dab..38a3fae4f 100644 --- a/docs/en/html/query.html +++ b/docs/en/html/query.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/quips.html b/docs/en/html/quips.html index 7c4496758..cb463e37a 100644 --- a/docs/en/html/quips.html +++ b/docs/en/html/quips.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/reporting.html b/docs/en/html/reporting.html index 8171a7c81..12c38d10e 100644 --- a/docs/en/html/reporting.html +++ b/docs/en/html/reporting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/sanitycheck.html b/docs/en/html/sanitycheck.html index 899f13fa0..e12f29fcd 100644 --- a/docs/en/html/sanitycheck.html +++ b/docs/en/html/sanitycheck.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/security-bugzilla.html b/docs/en/html/security-bugzilla.html index 6e908ccf4..82edfe75a 100644 --- a/docs/en/html/security-bugzilla.html +++ b/docs/en/html/security-bugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/security-os.html b/docs/en/html/security-os.html index 72d9353c4..5f2ee4d6c 100644 --- a/docs/en/html/security-os.html +++ b/docs/en/html/security-os.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/security-webserver.html b/docs/en/html/security-webserver.html index 1fd8f5d6d..9160cc123 100644 --- a/docs/en/html/security-webserver.html +++ b/docs/en/html/security-webserver.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/security.html b/docs/en/html/security.html index 2e9424627..20266bbf3 100644 --- a/docs/en/html/security.html +++ b/docs/en/html/security.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/timetracking.html b/docs/en/html/timetracking.html index df6abdd43..de9d48f8a 100644 --- a/docs/en/html/timetracking.html +++ b/docs/en/html/timetracking.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/trbl-dbdsponge.html b/docs/en/html/trbl-dbdsponge.html index 57e625cb0..58817b962 100644 --- a/docs/en/html/trbl-dbdsponge.html +++ b/docs/en/html/trbl-dbdsponge.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/trbl-index.html b/docs/en/html/trbl-index.html index 6d088e1f8..6af388fea 100644 --- a/docs/en/html/trbl-index.html +++ b/docs/en/html/trbl-index.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -42,7 +42,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/trbl-passwd-encryption.html b/docs/en/html/trbl-passwd-encryption.html index af884f4dd..0ea646c93 100644 --- a/docs/en/html/trbl-passwd-encryption.html +++ b/docs/en/html/trbl-passwd-encryption.html @@ -9,7 +9,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -41,7 +41,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/trbl-perlmodule.html b/docs/en/html/trbl-perlmodule.html index 2ed79e525..827c3f8d9 100644 --- a/docs/en/html/trbl-perlmodule.html +++ b/docs/en/html/trbl-perlmodule.html @@ -8,7 +8,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/trbl-relogin-everyone.html b/docs/en/html/trbl-relogin-everyone.html index 163c8618f..c4eeb93df 100644 --- a/docs/en/html/trbl-relogin-everyone.html +++ b/docs/en/html/trbl-relogin-everyone.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/trbl-testserver.html b/docs/en/html/trbl-testserver.html index 64a90c70f..2f7776221 100644 --- a/docs/en/html/trbl-testserver.html +++ b/docs/en/html/trbl-testserver.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/troubleshooting.html b/docs/en/html/troubleshooting.html index cb300016b..af3fd41dc 100644 --- a/docs/en/html/troubleshooting.html +++ b/docs/en/html/troubleshooting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/upgrade.html b/docs/en/html/upgrade.html index 4768168eb..b04c9131f 100644 --- a/docs/en/html/upgrade.html +++ b/docs/en/html/upgrade.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/useradmin.html b/docs/en/html/useradmin.html index 7392f83b6..40d484437 100644 --- a/docs/en/html/useradmin.html +++ b/docs/en/html/useradmin.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/userpreferences.html b/docs/en/html/userpreferences.html index cfa62ba1d..731e115cd 100644 --- a/docs/en/html/userpreferences.html +++ b/docs/en/html/userpreferences.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/using-intro.html b/docs/en/html/using-intro.html index 936980189..ca83b89ef 100644 --- a/docs/en/html/using-intro.html +++ b/docs/en/html/using-intro.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/using.html b/docs/en/html/using.html index b2271c54c..e8b792ec3 100644 --- a/docs/en/html/using.html +++ b/docs/en/html/using.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/versions.html b/docs/en/html/versions.html index 680eba96c..d5034aec6 100644 --- a/docs/en/html/versions.html +++ b/docs/en/html/versions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/voting.html b/docs/en/html/voting.html index 970135719..510976e89 100644 --- a/docs/en/html/voting.html +++ b/docs/en/html/voting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/html/whining.html b/docs/en/html/whining.html index b485c01dd..2bd1e6ebe 100644 --- a/docs/en/html/whining.html +++ b/docs/en/html/whining.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.1 +TITLE="The Bugzilla Guide - 3.5.2 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.1 +>The Bugzilla Guide - 3.5.2 Development Release</TH ></TR diff --git a/docs/en/images/CVS/Entries b/docs/en/images/CVS/Entries index 1afddd86e..38d360e8c 100644 --- a/docs/en/images/CVS/Entries +++ b/docs/en/images/CVS/Entries @@ -1,7 +1,7 @@ -/bzLifecycle.png/1.4/Fri Apr 4 06:48:16 2008/-kb/TBUGZILLA-3_5_1 -/bzLifecycle.xml/1.3/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_1 -/caution.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 -/note.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 -/tip.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 -/warning.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 +/bzLifecycle.png/1.4/Fri Apr 4 06:48:16 2008/-kb/TBUGZILLA-3_5_2 +/bzLifecycle.xml/1.3/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_2 +/caution.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/note.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/tip.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/warning.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 D/callouts//// diff --git a/docs/en/images/CVS/Tag b/docs/en/images/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/en/images/CVS/Tag +++ b/docs/en/images/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/en/images/callouts/CVS/Entries b/docs/en/images/callouts/CVS/Entries index 1e41b1d9b..e6d1e34cf 100644 --- a/docs/en/images/callouts/CVS/Entries +++ b/docs/en/images/callouts/CVS/Entries @@ -1,4 +1,4 @@ -/1.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 -/2.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 -/3.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_1 +/1.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/2.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/3.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 D diff --git a/docs/en/images/callouts/CVS/Tag b/docs/en/images/callouts/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/en/images/callouts/CVS/Tag +++ b/docs/en/images/callouts/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/en/pdf/Bugzilla-Guide.pdf b/docs/en/pdf/Bugzilla-Guide.pdf index 356c4da6d..64f9edbf1 100644 --- a/docs/en/pdf/Bugzilla-Guide.pdf +++ b/docs/en/pdf/Bugzilla-Guide.pdf @@ -3,7 +3,7 @@ << /S /GoTo /D (1.0) >> endobj 4 0 obj -(The Bugzilla Guide 3.5.1 Development Release) +(The Bugzilla Guide 3.5.2 Development Release) endobj 5 0 obj << /S /GoTo /D (2.0) >> @@ -1868,7 +1868,7 @@ endobj >> stream xڍP�N1��+<� 1���Z*uD�É�R�*A;���B�ó������C���*pB��26���4�H|�B���F�b���4Y����GM�_A+ -j-23��S��JgXc�:�/�a��ks:����P��u]:��\���X���]��q5W��?����eRܢ�"��)��l%���\��_yrl[�qrj����Kw>b���_�&Uendstream +j-23��S��JgXc�:�/�a��ks:����P��u]:��\���X���]��q5W��?����eRܢ�"��)��l%���\��_yrl[�qrj����Kw>b���_��Uendstream endobj 1242 0 obj << /Type /Page @@ -1898,11 +1898,10 @@ endobj /Filter /FlateDecode >> stream -xڍT�n�0��)��HʤĎA����B[ہ�(Y�I�p��|ɱ��^�{x�S� �?����=��Q�4�%�u=�p����bf/_x3Z��W�%٭�C���"�3뫻k$T�b_�I���Q�)+����8�p{^�6:�p�B�G�b -�东&9�����Z��6ly%&�S������7���H19!��P�����z}�m��x�q��\�}�lЖ�'�G�@�4��\�a���[T�m�|��!%�}f�h^��N}�FN�ѩ%Z��R���=����J��n��-�f:zO�l�V�m�.4A/�9��b?�Q�h�lu�'�Vo��XWD�;;h����X�έ��'�Xb� -�}G75����ن�S]���kQvyR}l#+����5� -�fU�/�����I����p���v�m�oD$����D�!�B�^o��d�|���������远�D�ј��<?�ϩ'� ���z�6g�[2�M�=��o;~�� -V����o��%Dendstream +xڍT�n�0��)��HʤĎA����B[ہ�(Y�I�p��|ɱ��^�{x�S� �?����=��Q�4�%�u=�p����bf/_x3Z��W�%٭�C���"�3뫻k$T�b_�I���Q�)+����8�p{^�6:�p�B�G�b +�东&9�����Z��6ly%&�S������7���H19!��P�����z}�m��x�q��+����X٠-�1N +��h�viV��0�2_���۲�p�CJX��(Ѽs������SK��� �hEqzx/}������#�I Zf�(t���ȭ��6.]h�^:sN1B�~��0�r��`O6��6ױ���9vv�z����q�[%�O +���2���njjY7A� ۧ����ע�����FVr�Cmk`ͪ�_2��œJ��9�e�N����lވH�u��Cօ<����������A/.%�9�?���1��y~>�S;N�5���m�:�d웲{���v�d��0�����#�%Iendstream endobj 1253 0 obj << /Type /Page @@ -8310,12 +8309,10 @@ E 6Y۽}D���PY�'�f⣱G^дL�oV�:��*�J\�˹܂w@e��7-n)�`�<���)_-)J� Tl���kU~^O�ϴW������5��<�LS�C�+7�ü��Øj���T�_�|�i�.�Qj=�|4 ����Y��g�T�+���ڄm�@��?6a��� ϵ� �B^Z�ۭʐ��8�I���̶��QaX�%1�j`�w�=��y��a��Ls`!�Y付�e��B��=aROb������M۬u�K�5%����oG(G~��[:��ʡS�*�����N��*G��(I�rDR9ޚ�D7�ʜ��߭�1L�«!6�ڙ��'���+y.���L����$�L��Ҫa�N����P1+�ɜL��<��tif���P���QwڈF%[�t�FV�0�3�gل���eLL-"�(�|/�Pu�q�' ��1t�4�g�=�9 $j"�R'u�L��?�V�nyR��&qV�m8ssC"�f@�����۵=!7g5�j{Q���QǣR�lQ���Z.���k��JvH�uk1�ng��;��N�,�ܝ�f(�l�N �*I<�)���ZVK^G�j@T��')�:Q�nS��6-ȧ�j��箭�X�Hu,����Zl���q�Z �Q�a�qH���h�r�Bl-2 �$E��*1J��l"�.�'� 6��f���&���X�X�h U���H�ZZ������(�E���tc��_�`��2��!����N��6�z�v�.]��Vo��֞u:(�B��qyQٱCx��!)�`��4A -E�z4� ���6I�� zU[��.0N��<@�%9#���5u{���,dl9"@��>#�7H?tZ�pI�m�2�a����k&�E������=�n�i� �v[c�J�j�D�R���C\Q��<4�2��}��Ԓ��Z �g�K=-�_�JKR�c� {��.�.#�z��-%�ɦR/2��%��Q6���A��b�U���?�x�%���hL�s�|�(�����>��$�� �������T��#xW����mh4�.M� O@����* ]s���z���f��h�t�?C 6��Y��2��3ch|�k�3�.�NB��7l�!��W������'���=��'�V�u����}3�1��i$�B�'����M������ O�lz��̹�s�}��F�������bWbˣ��bpX�X��(aS�є)L�2�����||��9��������]W߷�Qֽ~�}�d����I�K�����ܝAO��]�G8�]�D5�/��H<�&PG�d�O"��=>yq�R牤��痛���#~\�%��!@B�wne�Nv:꒽W cp�to>}\��(�'zA�56�uȢ[B��Z�8Nƕ�=���S;3rS~���=����[o�GY|�����8����"�n�ζm�ov� 4��f!0C���h��<��� J���+�a����-rC~P��+)8��##��͐��ǣ���a�NZ��ˡ��1(�͊��P//�=~�N���^�:���Ȳ�>��IYJ�B�� �r�� ����AϋT����E�댩�� A�`�WxC%�j���%���d.[@��l����G7O��o� b3�� B�E��Ak�� -�d�{�` I���^��~�-o����uV�v`�,�;���s�)��ޏ4/�+xө��!~H�Puɚ��ғ�0r�Q�]��}���� -+2��<"�wZ8<�v1H�V����yu[���.=�������P%�D�Rx��"�fn��X���k x��V��f��!�b =�K~�AgU���6����8���F����ޏ����|��wH -����e�yR�S��i�'3W'Iu�;�5u -��0�C���0&�q,���7���?5�ͷ�S��:̷ٟӾ�؋:�dr���t�p� -�̿S���=Uq� q�����h��9d���"������8�T�$�� �Qu���Z���oiendstream +E�z4� ���6I�� zU[��.0N��<@�%9#���5u{���,dl9"@��>#�7H?tZ�pI�m�2�a����k&�E������=�n�i� �v[c�J�j�D�R���C\Q��<4�2��}��Ԓ��Z �g�K=-�_�JKR�c� {��.�.#�z��-%�ɦR/2��%��Q6���A��b�U���?�x�%���hL�s�|�(�����>��$�� �������T��#xW����mh4�.M� O@����* ]s���z���f��h�t�?C 6��Y��2��3ch|�k�3�.�NB��7l�!��W������'���=��'�V�u����}3�1��i$�B�'~����*��ƃ�������so�����:Q��!9-ŮĖG!9�ఎ�6�P¦ģ)S��ené�K����s@�o�ˇ��]����oK��{����Ɇ��7�|#�f+35�;�����p<�$��2j:p_ёxHM*����8��Dn'B{|��0��IGk�/7���G���K +f�C���������t�%{���,6j�&�|��Z�QFO�<��kl�)�E������q��+�{Ε��vf����G{���.��ި���4$� Wq2y^�Ev�<�mۺ���Yh���B`���-�#�D�y�A��A���Wv�7��[���D1WRp%GF�3��!9�G���R����Cy9)bPl��9�^^�{�ĝ&���;�uvu�e}8��0,�� �4aA岇D;�{+���S /���SsA���:���Jj�(��Ky�\�����NA�="�n�B��� +�fG�$"L�Ի��C&�T�t��,W����F[�1. +�/���k��Y��vf���S>�?h^ZW�S��C��*���5]]�'a�</�(���C�VdJ�yD@�px0�b���s'��T��]z(��[�7Mo%��J҉�'���E��"=���y���4}��B8>��:z�"���Ϊ��m.�Ýq%Ս�C�5�!fU����;=��5�2�ȧj�u��Of�N��zw�k�пaꇶ��a LB�X�I�/�Ao��j,�o�$�u�o�?�}�u���J���t�����{��^���'V�3�6�s�T��WEd=����q<�~I�Aƣ&�r�w�z������iendstream endobj 2018 0 obj << /Type /Page @@ -22563,16 +22560,17 @@ endobj /Length1 1605 /Length2 1380 /Length3 532 -/Length 2205 +/Length 2206 /Filter /FlateDecode >> stream -x��T{8U��Ki�t%��K�-��kL�L -m�KY�^��m��Zkg��QM"�4�L�H$Eh��`�N��P:Đ.�f�]S�s���L��g��������wy�o��^c������JZ��L{����0�$��I��V4cc�HC]!��bx�H���~vv4c���bpDA��` NFC8��#� -�a1r���kQk`�0G�0p��^���Lݸ~� Faoq��O��l�1�.�C���h�Ni9���!�6XErj�xB��@�C( ��� �|yN ��Eq��7F�GD$��z�.['���B���"�O����d(����$,!��`�G���rSb"Q�!&(+>T�����B� (J[>�}����D"a�b7��z_B�0�Nc�����a��Ai��+�p��oq�X���2}w ̨: >� -c��1�Ie��U��3�X�I�$v�=3��a�������\,r�(���߄��a̟����okY �BO�$!�Q'T@ �Ig�b9"���ɋ�ᐐ���C�0.DP�rK1(`i�G�F �HT>U����Q�����+�f���X��f�A�M�I�ƈ��� -�_�7;;ck����`g��,����E����^�8"AT�L���w�U�8�/PƗ�϶��C14&%ɶ��,���a���G��Hj��8����o1���eŔ���a}�,V l��<1�SgM�Q���Zq7`X�h�-oI��̬C���W\���a�\�!�/��J��m�_�lW:V��^�d��BL�c�o]����5�B��p��9q��.�No_Xac��ɟr�/ )v�g�j�5ӿ���guȉ��M\}`�L:s�tւg"ͭ���)Z��J�f��{ܷ0�w��I��kW�T�]�ҷ8�2�x�f�)�H7�_�W@ly��娒�"G�2�l��% ���J�o�Ƶ��\2��s=�#=/��t�?:ʶpt��V�d��*�n��u�~]��Y]�������̾>ߺ2���ٯ�UM�_'J����n[��Q˩��3���Z����zG�\��H}������؋�D��N��P����W�k�fϔ��0^v����i�5�l}{����f��v� -R�ܘc��^����?r˽�8��:^C�^6�Q~HCO�^{�W�?MW/�+�M*}6��Q�sV�_�Q�Z���A��{��e+����u�J���d)돫:��Ę�4���X�ʤ��6���)e�p�����m��tj$�۟4n���<��cHKJX�tuf�_g�v .Ys#=�UIe���_����gɛ���~3mJ:��p��7�I�6uOiF�>ME:�/T�+^9]R�q�[me�-UOoH�����p ��m�/���h�s=ۣ���v"�����ڶ�LW����.F_����v�s�L#u�ߜC��9�����\�V��m��?�k�z��ՆǾ0��~�3�v&y��yEl�`y-YwĨ4C�{,Ws��� ���O{V7T��b�kMh|�쪺H�J{�WSg���*~@�W���ʋm�eK����.���*l ٷ"����@?Y����ȁ��G�����I�t�{w6�����g�E:f\""������I�+Y?�1��*�|��eߔ~T�MG�}�.�X<RW��_��ɋ�m�&7Ә�e{ I�TI=,�Svn��h �\K�1��7$=��͙�� /O��`/��M]�����6���F��X�A�$��=$t�ّ�m�˘Z�a�����jZ;��Uլ^&HJ,\:���5�����8AE黼�kg.�}�K��м،�vgI��l�<A]J�}�y�a�ހ�.���bY�a9z�L�&���!���ӛ�t�u������T_�1�U��@w�����<B8u�}������0����No)��Y�^Q�l��"ON=sS���@{oOǖ��Y��ư��$3e��3�W�v_��3a�����|k�8R���Z^(8b�=�K�̢3�w��w�t/H��&T�6U��$[�Mj�3���A�9��n-��O<||�㱊���S!QY����w=�5]$��R��Z�6�WlwLP�˖|��h�h�QY�X�W�{�y�MQs�R�u��[�M&���Y,<�5�ޠ_�Z0��C������OC8�EAx$�w�A$�endstream +x��T{<Ti�KiV��K��䖹�5�\�& r+"��1N�9�9g2�R�Um"��S�l$�"�Tj�[o�)����K���3S[���c�����y�g��3���{����y��<o_Kg��PҒEg:�7�C$�Ljʹ���0D"�������K�=����WL(�~$ ��_,���px�G8h�%r���kQ�0�HD �zy�[�q����0 ��(\�p�' Q6o���<D^4A��� �Bsj,��B9�a<!�?@��!��y����r"��� +���C�q����8J�#H��#BPY��V�����Hyn�h�EP�<�+��QR�Q2KBJ���\�0�!�P�I�ܔ�Ge�ʊ,8̇p��&J�ҖO�C���!�P Q��Q�k@HD�i,6��21�#(�!�%��-� ��6øb@���U��P������TV`�\�:S?�����Ob��3s�!Fo�_���:+D���}�M��(H�4>&~[��/@�xz% Q�:�|j�L:�-�+1��FHn$����?ʃq�[�AK[�8�/�F��Z�((�/����hF���r�����7�'�'R�ka5�{��ovq�� ֒,Y����ر���C� +��z5D�S�2Y�~߽V!�d��\�'��mm �$4&%ɶ��,���`���G�Hj��8����o1���e͔��+��Y�@� +�O�"�Κ�@ ��n����Z[0��Y��3���6�_�R��C�_�'˕b��2��پ l�h�����I�c�o]���5���p��9q��.�No_Xak��͟r�/0)v�g�j� 3����gM艱�MV�����t��\�τ�[�gS�*��*�8���oaj��3���^�T�ܥoq4e��ͪS�n:��4ȿ���B��I%�E��eJ��+#J�Eݡm����ku'�>d������h�g��a��(��ɱrZ������}����u�?�fu�z�?ۧ��3��|�J��۳_w����N:�����'rt�G-��#������j����g�%tU[�#�ٺn��'c/$�\W��a� �e���˞);�0`a��n{G�@k�=���Xk��y�& �N�15��z� +���)����'�x �zu�HG�! =�z��_��4]����6!��ٌ�G�\�b��B֚�4�7�\��H�h]��=������ڡ�K�YIs���T�M�?k#��:��Ӕ]�:���c�N����F� ����'�}�qviI k�������ۮ�!%�7ҳ^�TJ��t��?K�̭?��iSґ�˴�qMJv�{J3Z��h*ҡ}a�]����R�{��k�m�zzs� ��Xx��P_�.��[���DҳWܜ���acC��4ջZ���骕x�_Rs�����:=�}n�i��c�ca�s薾��t��8�*g[��O��ڳ^E�zd���fU�/z��$o�`e^:X^FK�1*����՜��t�@���Ӟ� �إ�� ��|�]U%SI`�j��v_\���JS�_y�ͳl�hx�R>֥���Q�-&���2z�6�_V#-�>r�$�� ���}R6���݁ j�:2��Q�N���H��E�#{���J6}�;�J)ߩc�7����v���Ė��UA?��|�b�c����4f�fF�^B)UR�T�]g<����H;W��`��� I�ss��n��S{+�+��iS�伪�|A�����\#�0,��Y�] �����ֶ�eL-ưK����}����jV/�'%.�f��5�����8AE黼���jg.�}�K��،��gI��l�<~]J�C�y�a�ހ�>�&�bY�a9z�L�&���!���ӛ�tt������T_�9�M��@w�����<B0u�C������0����No)��Y�^a�l��"O�z�s���ޞ�-�3��;�/�a;=qf���g���;�t'Xg�(Y7O���pq�>7F92����0{z�v��4f$�5� +��^�.�N�Pm��o�I�h��tgx�2� vn��ZBk�x��4�c�[ �B²��#��zk�����j��m4��ᔠ$L�-�r��������X�z��Tۢ�D�n��� +�7�L�=��X��\z��k������\�$ �Q���%endstream endobj 2777 0 obj << /Type /Font @@ -22581,14 +22579,14 @@ endobj /FirstChar 202 /LastChar 204 /Widths 5373 0 R -/BaseFont /TIKHUG+Dingbats +/BaseFont /WSTENU+Dingbats /FontDescriptor 2775 0 R >> endobj 2775 0 obj << /Ascent 708 /CapHeight 708 /Descent 0 -/FontName /TIKHUG+Dingbats +/FontName /WSTENU+Dingbats /ItalicAngle 0 /StemV 0 /XHeight 400 @@ -22612,60 +22610,61 @@ endobj /Length1 1606 /Length2 14569 /Length3 532 -/Length 15414 +/Length 15415 /Filter /FlateDecode >> stream -x��wUp]˒��e1�33333눙�-�,fffYL33Xl����ݯ�Mu��Ĝ��+3k��\Y{�+���9��%�]��x� -Vv&n.��r�"�f�?Fv8rrQg��������+�� 4�M,,�fnnn8r���������+�J]E�����B�&^��������@���h��h�w���ި -\-��s+[ @TQI[ZA@%������mJn&�V��9+S���`�����`�`of�Wi.��]���G��՟m@OS��_.:�#�������3��`�ll�����+{S[7�����;�M����O���0%WSg+GW���Jb���ji��Wn�?n����H3S��J���������� -�t�+� `f��hk��'�0Gg��i��X�[���ha�lftq�������N����������G�+W��93˟���r[X��1�5(����f�������t��AT���f��^�3�9���럔������{"�/H��"�����3q�U��t�����_�%�lm����?.��� ����b���l���� ����"�j�� ���`b`����E��h�d�jj 07��ӣ����f@g[+{�-�n#�����_|j�V�6�5��.��ٿ2�#�u��e�ei��6�;J��j^���[�f���CD���C�� -�g��pp1�8����l�0�s-o��l� ��S2�߅����+���7u0�kJT]������r��9;�������_�=�@�'�nu���7�:=+õ+odRLw��|�ci�ZQA`�Co@z�w��[�W��i��v��3����}���������~���(����������1>�?�!t8�4w'�UJޠ�;Y�a���I�������5�ct!7�����S$�<=R�������?��͍�%�u�@��t���Q��Y<����:g������X�`��ݬ��º=Q$P�uP!v��q��O���J��j2��&���|G�L�v�93�_cE>���O�D0_���v����Ϗu�<~���)݅E��c���Tx�N�8uT��E�x�7QF�U�N���ӟ�]���_�ƞ�Q��xGlq��1�_���'D�o��룤KR�c�14D��0�AT%H�樑W�ȿ�����J��T�֨�.���1� -\Ac�k�b�`�S[��|��E���')��>�k��^�a��~�G��f7�c������]��Ǹu����W��#�pKS#ч���ϗ�9i��br��^Uu�<�Q�k]��)�Fix e�yL�:?�u��hE�U���w��o�j����^5#�e -kWfs�j����A��0�\�"�3��?vP��o��Ӫ����&�n��Nӏ�MDqp�N�Xg-B��Z �g�/�~�g��i�TS��g3섽QI�RӾu%�i�e~t/Ȉ R� -r��N��]Jђ�9��o6�u�d@+|��c���Y�"]p��w���<^�.%�C#��y�y�ډw�Cb׀�F �;t��Svt�(�6z��?���O�t�g����e}cGǾ3�dGt��6�6�?��?���D�����s<]z�ݰ��iZ� 48&-]�i1����rZ���^<G|;���\�`H�X��"|��Ӈ��ҽz���C����R*��M|P��y'VAD����#�n�~���VO| 5ڽ�r8�֣�p�+ED���C����P��*9 -gx�q ����Oe�>������q��%?�E!��}�Y�����3��0V���t���������neF�=���rN�T���R���0Df\IĂ��wr���m�߉˷D5ܞOֿQK�p �*��Cնv���I������f�R@ޔ%"S���`�.��c*E��cͤ����j����m��gE�$���b�8���;���"���������ͧº� ��������ƍ������ �{hn8�������>��kv�5��T�2����`��() 0Q�[�%�hL�=#��g��so���S|?^W��;0�<Օ�I���P�Ρ*�;�)Q��X2�)�E�D�H2 j�V�F=n��,���jUf��\���1Bk�;���g�?F:#�2_�V.3�$`�?����#��Rh"�D`�1N_*,��R.k -���]m1���w!�Dž1ܛ��`Lu -���@�v�n��<��v�`*zVvR��=lF� - G)���Z}T���S�Ys�@-*a�].��W���� ��:d�h�E�a�G=;ڛ]K�)�s� x���b��d8��_®%&�/@���� �����^,�0���~Պ:�*��WS��>yǀ��]͋�|x{�t�xLl4���F1�%��.0~�#ۯ�,�2�G��ؙ���;�n�S[{�@(%��12�^�B�����4Ŀ�(�4��� -��8�H�Fk���1y�4n��61��S���ƘO��$��p1�T�MD�&�l���~�EU�e<^A_����XL\��o��#�A(�.o���6�p/�<�`��_��=�0#��U�h��֨�纏�g ���Ǫ6 15J_�@�ro#?R��d�鈚��蠠%TI�B�Rǘ�.��5���Ҽ�Xϙ���B�AP��,28eA^9g�~�3l������mW�f"����"P4*�U�S�kG���i� ^�ћ�qCj�+��Z��f�����Db��os$ �i �d+���b� ��F7���6�g�R�8嫕�a��ϭ2���&:�y��9?Ȝ�+l2����8�#{�1~�y���Ѫ0jӮ��`���:ݬ��i!ta]T_xNG��k��2!����K�A��6V�.�g �6�طWgl�/�\�,�������z ���'L�`�>�g������-�������]1A�h���ȵ���' ޱJ� k^���� Z�7���R㒡�d�$/GZ&Q�C�����u�2Z�>���v�04:�;�^o�+]�D��xv��ׂ� �~�x00���E=T%`��G���Bt�)����N�D�{G4'�k%����I�W=�A pY�sܘ%�N���Z�g虡�Ϝ|6I��a[�c���'FO�!�A~|�Bw &�đ�ܳ�6@vة�)G��>��D�k*M7z_��\w(,Z�B�����k�7��0e���9� ����w��.�_}4�,J�6��&��9��XBw�*�O(�)D� ��T^kʎ�W����A�OIǡ[�̨�<f����uf�KE4;�h�_ӳ�/U�_�8��W��K���`��l ��^#�ƵX��я���\e$�'u8W?�B&�h��f��<@K���$��X>�@�l�Hu4/b�l�Q� ��6q�(?�r���:'���x}M��n�R�C���)��Nu�} -�"���Q��"�oJ=�77��1�W�6��<*� �q�����;<=ۋ����r�f�j�)��ѼN�E�X(�E�;��������b��*azl28���`h/�L��Z�8�O佰y�w��u�+[p�s����NC.�;�[��}@���υ�oI�r�6��UK%>��9k>?���>�./�)yliw#� ��U`��ifejɝ6-�_!俱�<�ƳWk�R���<����e�<.$���4���%��[�M�:���䈾�pǐ��E&�~±������} ����g�pGV�O2[�s? )�h��k� �x3��xT ��k -�l=�m2ܽ�����?���DW -jup~����!¤����3yt�XO�=�~�}���>�ެ9mTFjm�8��-�m)��7[��(6��!T�z�x��5��FCB�����َՑ�Q���h������$Eq$��5� �_Y��eo�Q�ߙZ��{����~o""�O%����]#K�˅�"����="ݿ> -)���_rF�E��n_���F�ZZ��ٵt-rj�ڌ��u���,��C�%&�)s���`�~x����WL��y��Ĥ0lmh� -��6o�3�ɷ9-��X�k���$p^.��@��U�D�W���_=1�E!�W<�'�A��bk%7-N��`O���p�[���C�jn���rA���ZE���{k�u5�Jэ ��2T"�Ԧ�[�c����Z�W�Č,��p"C<��ŷ�����?�F�V�>�>���_�y�e�k��Dx�Y���A�g����`0q�ɠ�٢�H�g��X�� _�j0�V�:��Nni�d�z���Λ��;�`��V��N��Ce��D�5a��p���N >&�˘{��H&�r^�-�51�V�X=��`L>��¸�H�D����C���O�P��A�07���yۻ��p��"��t��5�L��L�ȁ6��l�.��Is��:S������c8�)����9?�G1&�:�~�!P%K�y=+e������8�W��D�g���rupo�֝�a}ziE!��Y�s�^�{�^JCu��'����L�l�]k}� ^D�N4ҭ�*/��4iVŨ6�����K��?fD�pr@���e|���K:.��� ��-�a4Z��<:0x@�t�#FM�k�l�;Q�� �{�����*�2�F��!���'�4���1GK���G�_��:e�C}B�E�Il��L7 Ѩ�]EzK� i�v�ce�3�Iޘ�@���T/��{�p�����YIxV� �,z���^BOu�JnZ�� �g;{Y�'���c�EG�U~��&�P��x���k��� -� c5&�u�q�=�3jf Сv�+�!�7����"4���Q�bDQcs�:uO�tY,Q��Ls9��;%"�ݡBJ�ZSQD(%�Â_�nb<~o����ez����@{n�P'���_��P���s.�i�[���b� 1I~0q�����&!��P^�p�����>k➫�� �oi�B>�Y�j\��*^��C8�X�r����#����d%���D�샄ǎ�M��A��pG��\sϘ)�[Bܫ�V��I��q�p�x��c9m��p6)J��&қڀ[2s���Xt�>���|�n֥E�Z�]5-�@"�� Qu�D���Y'|r����<�7EHi(�|��Ϋ���;q�cn��K/�Tu�%;Հ�s���F�� ���b�U��1G8�҄a����i�L��-�f�u�]�E�ρ�G�\c�l��0)��S���vX�J�E�6*��Y��!^��L�A�R -���f������K�C���y6_�"}��&�� 'Cf4� ����mN��ɴ\�� ���u��P�avL(���O�H,D�uy/��Z���/X#�Z�U�'��`�HJj�ށ�S��ƿ��Y��CSR��B�76�?&B2��_��u�L��/Z�y�'�̢r�c�fG�4��kBL��i�C�W9�\6eU�6��çK ��u>M=�-,a:�!�����F@�l�d��k;y��5 5P<���]n�$�A_�(���8(�D�\#����� �9a�d�;_Ҋ�uV��Ȏ��-�[�4v�L.?G�q}��#��C���KW��:��\�(�-*���8. -}o<���6W�D5���ݸ ?I�5t �n'"��)�HrxF�ビu��#�`:�'�.FZlo��n ϲ��;��b�5� -$7�ůa�8!N%�kY�6 Vi_�����^xɗ�C+�{�릁Bsp��q^G�і�u.����ǡ�_aJ�����d����'�O;9�Atu��I��Kw��l/�lif�պZ�;����ӒO6{���R��tnjz�䂬 6ᤇ���&��G�8E`ҮvR�9�ʼ�'OC?p���c��� -�́x I*D �V<�A�|��{f7��DWT_7}yZXH�q��t��p��^�.�ە��h�Iz�p�e5����EW��>+I��n����+؉m.�^�0S���>����u\��QS'A��wM����o���n�ݭ��'C��89�k�y0�!<�=5��_68GgN�W����ȁa��:���ų:��2�F�� A+/!2P��Cк2Ze��yx|��0wg^��cOdWeE��E��������:&qb� �M�^N�(shL��+^'[��]�7�|$5���D/ߒ�\>�4�~u~4>+5fh��R3�� d�Q]G�5��K+��Q�'��|>����R���ʝ'\}4�G~t�x�l����:5Q%އ�(+�B�/�ڬ_�p4��s[)D�j����+m��($�~.��b �eL�14^5�P��g�Ωb�DP�����L�'��æG���Nc7�~�w���W���~��Q����s��J&��T��;��*8�X��k�5�q�7��0��^�,�mBC��KiS��Z��#6�����v��7�� ��܀� �Ƈ�uWFO��A�G1>�9X�T$F�&��h���������U�����b_�8��}#���蘦[<�v�&��.�j�J�k�tiF��!�\9�Ws�����I�a�ds�����Q��c����u�W,{��d� @fN��}'\���.��r9"0Ɣ?�>�Ʒ]��L�h��4�`r͞�9�N����z8'iP�n��j�r.��X^���eh{� ���U`Kys�j]��n?r�Lĺ���N��*��}ZR�D�p��O۷趫��m�p�U氃7_��&+��' ��� �(~�Nܸ���&�-p�:�x }���f��;�!���)%�a��.m8݆�8͂�*�3�&�0��*^��(�l�3�o]��}�����M���Υ��A�(��������]��$���*��ϙ|���M,�T������ݭ}�2�����lx5ڴج�C��Q����M$ �i��s�Q�N��f�g\�SC,����QeX{~yQf�Ilݯq�'���ƶM��B�d��Dx��y�oI�0,4�>��D���l^�-�9�4껊wB�q� z(���ZN���m;CN�!���9"ǧ�wS�Z8?ǭ�����ϻ���N��(?��^��e7�`|���x60�,��u��M�~�Ld�s���/,x�#~��v�[j�d������=� ���'Q�5s�!gP&&��Np�p�⍍���Pi�8�*-�3nm9������G֥ ^�GO�U0"��sRäj�|0�6�hu����#>`S�Zw�!��m1����u���o_\��UF3����1�fh�$��'�Bd< ��)���XLmUj���"���-� ��3B��hi���{���|��+�^���Q?��ޟK�|0�Z�i�[]�{V�3߉*��A�IK�i������?�(7>\�&��~��/��b�{���q�����G�2;�w�&<X���[��F�\��jd���.�A\_�����q��+U�I3�l�$�;�p��o�n�$ղQ��~�y�&�2���:�oҦ<�|1�eR4�o��+��dMn��ln�t2���uB3GAU ��x�0�i[���n$E�F�]�H��9�F� ���;o�y��\l�Ł7�,�Y��봇u���_=��V�nXk������Vn���~1xq�7��}&2:��a�����]�DŽS�@Kx!X�dG���7~����v2Q�8O����"���g��2EY -ʬNf� -����D�Y6��yd�pf*�!�x���H�5g��֗+Y�G��R��!�<_�i�{��9I����pX�'�IҨu��h�EUV�Z"�bi�tuv�@�JW`ƞ���E)��b0������{G=�ueЄ��v��m�1���c�tف٥dTx@={�{��4m� -�U�F ���5��"�Sw��1�9|9�S iJ�4�l&����U6�$Ah��(9�/��A���g�%={�盂+{��y��կ���:].�`������<��+�+?���_�n'�ƀ�Wz3�����4۫*|3>�����I�f��tҴ�ɀ��p�vKv�ٖ������YRov�e���2~AR��jm��,z���}��~H��t�E���;���� -c��*��C�c��-Nv��ѵ%�\n�}�5�0�����j'{ؗ�bYXh�h��A7,v���ȾS� --�"����;]rE��̊�|����(k�ư<Ev�#����|%KӜ���ǐ�� -Wͩ#~�O<���1)*Z��g���1;�&��Mʁ`C.7��3��L��I�3�%�D �<�1¢���1�<pD��ۓ[���|}}�{���� -jO.-����m��P�_�[��GX ����^[��_�U��]Z��q���O=@F��~X�G�O��0���\]T(Bے��[�z8m�3�rǥ�.\�gt���;ּݺ�6�Ϣ0&������n:M�#���^�8i�z:+B`�c���FFA�.��blQ���,�`�+�a�5�z�p�25Wu��%��P��<�7'�A"03t� -o���.q�z�E����1�,�/�SitK�0����m������_2��7>�˖�3���}�Z�A����L l��j墢]����Ԏ1�t�l��f���@�?�q�bm[�,L\@���ڔ4Դ9�PkI��K��X��+�a�zEKB���%��~B�ql�F���z�c�G|�2X���x�F��ZM��c�0��TR�ܭ�5��r9�{�2�b��ք�����_��G�|K7|���1��r�a{�ih\���;����a�V��\�sW#���=�8 �p�Ho��1��P�j��C7���h��!��K]@�{�_2�-�n{~*�������y�<ߜ�o�WZ�IN_�{+��_f�S���IP;�y$��m궠j��c�ٶ� /!w��W������At�4b�f��[}7i_�>LD����n��`�%�����=2S�뼜��J��e�Z�u�'�S��X -���I�K(�����r"q�MӔ�0��S��2�����θ�ô�FiTMkm���� ��(0�nP��n�P�;/�H�����p�<�[Db�d#"�a1��kx_M�6�g����bg���A�,W���`%�S<b�]\m����W��4. k$�z��F-k����W�̸ȷЪ�⥍�RB<��+X���cy�I[0#!�s�Z�[�@�%�O���լ� -J�F���A1�`'�B@k�eP�"���R4~�+ l2��/�7��ڣ{ͺ{��i�T|y���7HA��X#����c%R�.���x�?���k���Ü�V�]�8Y��� {�!��Z��y�Y3�/�L��u� ������k��εs��,�%�O�d\f����X>���aX;Ũ/�`�6�NSf���=�0t7*�T�_q�:ù'��� -M��)����_e����'���tb\��'�l��沤�}l�=o��"*?�!c8���~-qkb�'�>p� �l��� -�|ο%�TAEr7%�Kͫ���(� ����v��+�Ai�o�!W��x�L�e��4��Ny��:\��&��\�7�(�!�}g�}S5�U�yiwԅ��L2�$�42P�j�т9d�T���F��&E�밲����JDw�ܥdSP�E��g��a����69E|����qk�2�ҹLHPo�|�8�q|RϏ�@�7�5�8���~�5$�uq��Ż�_q4���d\w� -3cm)�k�-* IFM�J�7�^�"+��b1|��=�G]�_K�%9ړ���Z�2���*����/��,����n1���EJ��Y.L���:1�a�x���j6�Q?�8@a�0A �:�q:�B�� �醌e��{�J�wi���6�,e�EV;����Ǿ��$>#[��rs�#�����Th�M� pd3�$�}�����M"8�J�ܩc����}2~BWT3zC�y11��BF�ޥi������`x?)��2���NAM������|���`TI�7��W�6-݃* ���G�͚�鎁#i�l$_>�6a�O�\Ӟ=��}�����p�S0� ��6��U��f#Dd��w�+:���qR���b���"��e��*Y*���+|Qت�����[�w��d[I��|y+�>+*���y{C��J�i��L��W{=�DS1#fF�V= �X�@����[��D���qaE}�*4���DV��7�; ��k�-(��}tl�7��yP#�YC�0��T����Q���o���44it�:Y?�����LY�.c~6��6 �!�u�Q��W]]�!1�z )#�Qخ�0]�jd�˼�Z#�;텭T^��Lb�qcb��/ȄV���{�y�_��M��i���]8d�9�~3B}.̥�ϟ�L�߽�Z�uE:����Fǰ ��Kǵ��|(*!}q���m�ܛH��⹖��sk�C�Pר-��^�l�����U�z�H�2r2Z&ʒ���M�\�* ��LD�_0�%�u#�W�r���W���i&�tČ"�lL 2���y��ƺB`���N� -Itb���^ި�Ƃ8�R.gH�JX�3�����*���K�`$�ϼ��7HbȂ��g���h�;�` ��x���j�:�����L�pFAE���c�<����{D�ߘ�_`gw ixg�b�bxM�p"s�51�e��@�;����C�n�� �g=��(�J��S���+�-r�S@�x��X�ߴIO) -��1ό��n�Hs�¨$�Ƕ�S��k��˗�Z�lY�H{��)���L*>�+�m+O�����8����OC�8Ӧ�-��v�#��Q�U)���#��/A�������X�����GӴ��M�'�M�p���Oz����$3��^�r�ZA�A��;P�p�-�=,�\K\�$S���M���:�WΝ*D����(�U���j�����b"��W+��.���&�IF���Cvr;���Խџ,��Ab�t�L�٧�8ű:�!�Zg��t�4�ob�%M/I�N�6ؕ3)Ǽ��-V�����;{�F�y������ؖI�t�\�ζ(Qi�WǗ�v|7}T �<�H�(��f�kA2 -�%I���F)�Ow����̆I"3]6�@?+��s�����o��|r�TbU��OǁT��*���e$,��V���'5n ���G?�]0�P%��DV�ЯJT�F?XX���ٰ���Q�Qj��>&�b��-5^%yw+�1�(� ��q`��5q���G{.�;s�hz�}�@���_L���ȯZ���q�y��Z�d�}3�a�P��-J�����H�Q{��v;�� -=L�r��Z��TE����m�j�,�j��K��?)��@�ޖ�X�GǦ�<�C7��(>��ƃ��p����:4&���鉲 n4��Y懵��ӯXY�R��w4�g��)V�4e1��q�U[IV�n���l��"�#ḧNc�4������q��,J -W{��d�i�U)H���7�e{ g����瞀��.�5��6 �V�4T��1��b�C�c��[�a�f�~X����G4ս���Q/z�v����[G�U~Y>�J�'�U� �����^3��J����/�*�E5� a�Z�EϠt:⯜��\�JX�sb�X*(Х��-�5 -��X�w){��#��Ig-3��T<� 9R���H�4��4�ܾ�_�<�h��' ���͢uq��O�y�1��^@��+�X��?�ljY���{Z���v#����46����j��̹��^�`ϙ0$zcL ��vW,�G�Y(LZ�Ѽf�V�m�湣�>q;�6��j��h�����|��0w-Q�M(0�u�wb��ɹ�(�������&�,�{�j[h�<l"؉�DL��GQ��a�m�n��h���v��i�\]�=~'p&O\�?45^Wb"]'!�w -ZV߄ba>Y�*�9k��J��j��eI�Jی�F^��+��+E�pmƋ�}ʟ����~\���'뀇-��V���E��Ġ�y73XWW}msN������_�Y�������+�jU��&*}>���Ő��:)�!��B�����y�A�A@�t='��� @S�u)U�L13�P�v�!F�Uk��ܒ��<R�x����B_�q��i����#")�&vΘ�r�?+����*�)�W����$F��T�ϯ�ʒ�3[ɮs�r��1Es\�.�"w��u��M��wO~ۏ���U���y_p���|�1�QD�g�!Rho��Y��N��[XC���r�Ia?6�[s�q�r.S��dz�n�.sצXK���Q���K9V��F`��OJ����lDQݏQw︼h� {%�g�Ș�YW+�_��s�`� -2Jh`>%g����[���`/�)�|�2:Z�t��!��6s�Tg��GdXC�����ݽs]�?c:���鬯�|�nfK*�c}�p���l��a#!�>|������}UU�]Bv;X�z�2~%r?m%�������mIwn�QW��lo����W��6���2���.��8��C� )�n��ҨDí�G]��*�����-�����9\�"6b��5��X��;�<?r/JNW����A�{V���D ���CԐ����~��C¸j�v��n_�}YI�N�[���T��(�� <?��I�0��\.�LŒ���%~��LK� ����}(?��a�l쌾K�QM�9O=�5SG��SV������GR��Թ#����@�7w�*s���Q;�B���y�f�-��8��&#cŞ1*�T5yqi��s� �Y��{���� *L�F��6Bk�(뚲&�~�6z\k��(�=r���5ra��I��BB{��{�&TE6����{�� C����9��#g�g!x� -�i�����ϯe���L����D_`K�����/F��]����w�<R�@�a����w6�̈�--t��ɸ�'Dzq��8N����>T�,�ł\\�.a���65��AK�9X[��*�ݐ�㳊kzu��@����x*E�Og[]%���I&��*�w�b�1���֨P���V�4�Q �$��Uj��zy��j6ș���|�\�W�=p;�oE�dlFA�(��vVE?�i��'L -�ѥ[�O�$��ES{^�j�1xy��9ٜ��P �0�d��eٲ|�6sȸ��G�̟������u�tE#��龓�h�1�^U��6�!Ɣ��NZo�Y�D����j�,��*�:����[L=�s�ş�'e/�*�g�B�2R�����'�i)z��?��YWx䌞Hl�cG�1eŶa�����/��{��eq����8}+�]��jnT�"^?Iwi�%u ��AX�x����o(��M�چ�hLU2��s髬���畲��?���w��wKq�F �ޮ�@��?A������P@��Q_�Ip4)g��(��&�q��+� B�S}8A2.-�tNh^x�c����N��a��6�6�����Eg���U�B]�e�`�5��y�^��a�,�J�H�Z�-�DE��D�E�����w�^��(�׆�A�R^��J��f��i�am��' ��A��Ӧ\�Op�P4�.���o�*����og5�Z�{�q���̗*k I��U��Vd8?����I#��^�6$shͣ��lC9}�v�bt-�����G{O�?�5o}f�Xu0x���S�Ǒ��2U �ѭf��� o�GL1ގ����`2D�Z``_��ϵ��x���b�"�a%��%�p�c��k�KOa��[, �S����`�b�&���!�}!��2#0Ulrτ�d��z9��ۄ�hM�w^kq�q�Jqr�?�k��W���+%�,�b�{�\a�f3*W:W��[��N��aG~�~�vq�}�$�kB�Mp0-�I�v<��_$>�Ղs ��ڻ�!�>!8"�hb�D��n[��g�R�"/a��>�)1M'��q?W+2 -��x��P"YX��A�lt��a��U�A��K�-���v/E;���R^ 3����yTr���Z�3�'�QV�Iq"c�˪����ծND3|��*��!�ګ�ZO��>T+(³��_�/�j}���}wĽ�(���-% -����@�lՙ(����T-����oN�M�$���������G�i�;g���&�y��&��%P�:�]�*�Y o�X9F����d�����W�������~�/Դ�Ն.����NW?�<��x�P��:��ܗ��s6GB�:���,����]pg��8�Qr�I���8{�Cv��s -�O�V��M:���� U���o6gpvj��ץ��1���C�.e��۴G"���0ү�|v ������� �{��{Ux�����)��[�^ޠۖ��#>LN���w4B�S�@�H�� -IV�����k�4��{}[~)z�~Tm��4Y��Oa� �0�n�)G#���45��L`�Mw$��}�"~����3�2�9u$ �y�D��!ÚF�rNF*�y�~Iڵ�R����Ƴ�9X� !�>���[� ?I�Z�����w;,*=�ԭ������nl9(�ک��� �a#���b+��U�.�(�&2g�v`~��ю����eW�Ȇe+;����Q�͈¤G|�(��'�Q�Lu����xϙ����Em��ؕ��綀4��-o�����D�p��r~�D�"��ߐb�{U���������L3��JDo3�lp�Tw��YI⁷��U>Yg/�9�u���|��_db�X���E॒�Ұ�y�p ��>IJs��C� ���Vf��MWph��̀�Sf��pɠV�fF4� �VvY [��h�X�0���]�Im"��( 3O)����:��E� 1(��C��p����*/�L�s��Q�㿌��.���iԐm���<��&�&��]GŌYKJ��bFi�m0�hX������I�ܪ-h^�@�_��o�4�`3A�ve~��Y<��#}>����X!����J]���/G��ΧB������^v�l�JXw"�?GI�r��5/M.�j�=Lg�3�;��b�V�D�%�L=�|��V��h]H��eJ$NT-����U��2$u��3���t��F��%yt=M���vSN��&1�����Z�L�Ɔ����NyKP���vW�V�w�L!J��d�-�«-�z��뀩�d0�Κ�� ,n��v �x�UO�!K�W*��o��/���y��ޥ���CE�����wz�<��^:Q��)��@�s�稬�,���D��0��b��|��[���%�>6��o}��u�����.�����D�����흿��ϙې���g����O��̝<��S�突A,�H�DZ3R!���?�ߒ�jl�|E��JZ.����W{k]RgP'�8U������?`j4vvu�3v���?���pendstream +x��wUp]˒��e1�3333X��333Z�`133�b����b����~o����&�D��]�Y+W�ʪ؛�XI�^���(ao�B����P��5vu�������1�1�Ñ��:�\,��Č\�<� �)@h`a0sssÑD�<�,�-\�T_U4�ii��i�+`���?;�-���܀6��@;�?�퍪@ ��0��D���$T� +_�@;��� @����� gi�sR���6�X�L��L-�*͙���3����4��� �at��Ep�:�Z:;�yX:̝��\����`igb�j��?v3�� 98��������d���l�d����UIL�<],�\���l�� �7�ijo��WI�����Y�9\�.�2L-�l�<�����d�7 WgK;�2�8͍�Lm���`�`�՝� �O�98�x�������`���1c�cf�����OnsK;8ƿE���������ÿ�܀N7�ꯙ��C������` +4�cT�w��@��S��O����W�_��&�j�����<�+�����������s�����1�W����������0��@�]���A����LL�0Z:KXz�M�,]L,�fF6z�����)�����G˿��gfb��������_Mg��hg������7oFiyU )��M��R�������b�V����,�����xӳ��Y8��\��.Nf��"��0��\��8Yz�t�����w�����J�_`��L�M��U#;�?�����&�NN�����)����8�4�[]�7� �J��p������c u(mT+*����O���4|� eh���h�\<sx?��9�чiCٛ +����KJ�_��I��I{Ĩ_��q��}�SnB��I�pwRYE�� �`��� ���:�ԭ ����ዟIZC<Frj]��9E���#�����p�/��<��xXr^7D����\<A���ޑ4�G��6�B�L�#�\�������#�WX�'�����#Į�N^A�Is}�C��{�Mf�ķ՝��I2g�k��'���fKu#��n��9����.p�Ǐ�|;����"Ra�! �Aב +����_�l���捕�ո�!{��gpW�2����gc���,������d���l�� ֠�[`��(���>�,�u� ��As�ȫj��s�l�sT��d�w^s�MMS�x�����9I1T +0��-�HC���[QܓDc���� �Z�aη~�G��f7�c������]��Ǩu����G��#�pKC=ћ���χ�9i��br��^Uu�<�Q�K�?� �Fix�e�yL�W~X�d�ъ<Kv�������>�'-&22<jFj�֮0L�<���M�=0aRE4f"���Z�x��U�ҝ\�ɮk:M?:6��}:�b�5��j��a���a�Q���RMIs�Ͱ�F%�KM�֕�����ѽ #&H�+\�y�3�f w)EK�ko0���m�P�A��*x���Q���9D�������i��MJ�y�F��;1�Ŀ��,��6���@bw����w�ѥ�P���O2��t+?��яu��f�������Ё�[�t��N�\\�O �/+?� +��t�]�v��ܻi�:@���tɺňn��i�;�sz�D�팆s!�!abA�� +��C�7}�s����0�_�4T���.�R��N�����38G�6>�|[Q��(�j�{��p�5�G���<�W���>�FE'{���er������=�� ��l}�iٽ�.YK~�#�BN �ۨ����]8��/a�2qk�r������������� �Wd�9aR��BH +Pp4~��`��q%sZ����1sԶu~'.��p{<Y�F-��_��Q�� WH>S$a���w#��KyS��L�ﲄ�#�\������5�rTV��3��O�%��U�#�Y�4?8���C�����&����.4� +�&`&7o�����n�x�\��6�Ρ�5�"W��r�'�`��^Ӌ�QU�� ��_�Cv�I�h�����rPO�F#����H�E�{���5V������� �Q䩮�L +�d�B�vU)8(�1 �juƒ�OA�-�&�D�iPW�2W�q�\f!d�V�2K��:�D�Z}�����S~�0�)��6r��|� ����7���4�B%�qzRa�}rYS� ��rh�QT���8.��Tc�S�m����w�ހ(��)�6C�Sѳ�ېʇ��`3�WH(8J T��_G���=Ě5�Ԣ�>��"~��7䟔H�U�!c�@�-�#>�����Zh�Hy�k���`��3�x#����v)1�}�}�����]>o�b��������VԉT�pBM������v5."��A����b���1��,[wP�Ȗ���x��A�lB��we��^I�3�o�w�n�S[y�@(%�{�64�Z�B������ſ�(�4�� �Q�MyR��uF�5��嘼\�7~D���[�)��Gç_U�sn8��E��&�RC�^�F�Ѣ��2��/��g�/&���7Z�x#Q�����Zo����U0Ɏb��@���K��y�"y4YPk� �s���*tt@���M]L��Gx ����З��8�f:�&4���*�RhY��y|֫���4� �sf4��Pg o$��NY�gΙ���=e�@�K"|m����H@��K����fU�T����ijZw��Ci�&�zܐ���/{��>���l)�-!��=�� �aZ�"� +=��Xe�E�� �7� 9�ٰ�+N�j��Er�s��1���w<@�2'� +��o��?�l��v�^Aq�q;�n4+۴*�d0(%�N7+��@�sc�_X�.<�#mrϵ�}��@���%� Yr+�J��3q����}el�+�\�,�������| ���'L�`�:�g������-������]1A�����ȵ���' ޱJ� k\���� Z�5���P㒡Yg�$/GZ$Q�A�����u�2Z�<���r�04:�;�\o�+]�D��xt��ׂ� ��30��Ň��0��#��t����E� M�T"�?��#��е�hf��Y'�w���;��:l̒|'�Py��5����Ϝ|6I��aS�c���'FO�!�A~|�Bw &�đ�ܳ��_vر�)G���ߠD�k*M'z_��\w,Z�B�����k�7��0e���9� ����w��.�_}4�,J�6��&��9��XBvC��'��"~��U*�5eGȫT�[� ������-dfT�?�Oi��:��"���l�Ư�sؕ�ȯO]�+�O�&�Ę��y�t�z�R㚯���G]�C��2���:��O!w�\Q���� ���F�s�d,Y�t��{�:���7])���P� �sE��C�G�}��]c�=C�5�Z,����u�x +c�R�p���ȃ|>y=, ��ROG�͌ev�v�� �0�JqBf�i��`���O��"�1��\���Jz�:B4�Sv�-�uQ�Lhbe-2��,��{�J��N�)$��2S�V?��y/��?|����}�(D"�ӐK���/kP�|�ra��[�������zz�R���kΚ���o2��ɋ�k�@[��4H�hw��v�ZE�Xp�MK�W�m�9ʹ��՚�Tc��B:�g=�t�0��d3rťdc ����|ҸNk�*;9�o!�0��v�I��p��f���o_Bv0��'ܐ{��U��LW��N��$��چdC�6��|#s��Z��5[Mjwo��?�v����?��B�Z��_Ƽ�'b�0�(���L�#֕xϽ_i���-½��7kF���Z['Ncov[������6���_բ;^xc r��р�4��{�cGu�tԹ�!Z|��bo�;IQ�w<l�o��WV@��[|��w��>���/��ߛ�H��SI���~�r�Ȓ�r���9<��l�H���B�v������Dži�u�ەoh�Q��8av�^�܄��4#�~,�3 .��>E�I~�\���;��5�����~��?1)[R�����[�s�mN�q:�Ŋ�>2 ���5�!��q)Q��w~��GWkQH�O��q�x�� +G�U���<���y3��V��������>�\��+��V��A�^����i�@��Rt#Hz�ņ��9�I���X�g����81#u9���Sq0;���Q�U���q�2���o^�p�ڭ"��׆�cP��@22�>��Al2hp�h����@32V�3���ϼU��!��[X4�"��}������"X{�ծ*��Pٟ#!��`M�8\��'������4�^h"�����c�yML���&VO�.���Z� �h��]����C�����2� �B���?o{Wg< N�\�6��ƃ�Ԝ 9��#�����=iN+Y{j2�Q�{g5E�:��(��\<ï0�di_�g�l����k������L��[��M��S�7�OO�(Ğ0�"7�#�3O�Ki�.��D�i S�wך����t+��K�1M�U1�M$v�/;�҂���8����{yߨ��������sA�~�V6�+ς�*]�Q��"[�Ljd����t�?������s�mp� M%@�A���h���W���Nٹ�P�P3B�F�p�7�MC4*rW��R?H�F���X��L�}�7":�=�M�|��6X'�+��DV�rE9�� &���U�!�R��V�s����^�hh�XGF�JF�Qz�_4� 5T� ��4���ڳ�bO��o̘E� s�jTf������]�ʰ��b�l��)~nT�R�XߡNݓ.]VI��5�\Nt�N��}���ҳ�PJ �0��W����~�/��a+�ך[$�N&f�S~9�+�܂�kZ��:�F�X|CL��L�i��I�k)�/��3����������}��]Z��O�y�A���3į�Wh�e4���F���.�~,Y�t0;?� ᱥh�x�8��<��3bJ�����c��u�-�"os_N�+�M�R@������\=�*]��+37� ��unD�cWMKAӗ�G�FvEFT�/Q�B�s��0h'&O�MR +1b���-��N�}���7Q�|�Gէ�\"w�Q(r���Xj�cgF����0f���xZ4��u˩�~�p�D��}���%��-[%,L�a�T3��ָRsQ��J��Dgu��&'�x�w��B���Q-f/)�D��c�m�͇wo���]D���I�9�рMpB��|&hs��7p2-��*!P��|j�x:Dr�Jhb��8��w]ޓ(�����ֈ��I���4�"��Zx�W@���������m�E-�ǐ�����`��M_����L9A��b��v�*����o�|�I)��\�X��)M�)�S�k��P�U�(�MX��c���R��{�N�DoKD�r�%j&�����,�����N��sMB�O�/y�[D; q��.J)�A'�� �,ֈ��������r��2��Η4�l�T�7�#(d��V; ��ޓ�ϑ�o\߿�����;���U�|���5'�a�J�=�Y��������@��F���7�'I�F�6d#���D��I�Hr|P��?DlA{Q8P���e�H��r�͢�YVU;G�`@L��X��C��5,'ĩ�[-k�&�� �k�r��/�rvH�]��c�4Phn~75cA2n���3ڂ��ÝԨ¦�87��� �(L6���|b���c| �@W�h�tp�t�Ya�����F&X��y�=OO:-�d�{�Y*���~w̨�J.Ț`Nz�X8kb +~T�c&�j'����K~�4��:��&[���w����"A��h�S��wl�gv�o�te��uӗ�����7s �� Ljў�%�b�]���f���� GV3itEP���ļ��ؽ�������esC0�*��[Y9�Q��a���$h���.�T�zm{a�� ���zd�r''��?&��9���&���������3�80lu[GC�X<���.cod{�4�"TO�0���!�U�������{ sw�e�:�DvUV4 +XțoQJ���X�c'��p��D��T�2����5~!qߵ}�GR�HMM��))��cM����ʏƇa����\j�����:���Qtiy:����p@�=��[��شCJ��L�&��O����s���R�&����eIV��K�k(��n1zn+�hSM�6<y�Mހ�d��E3V, W�ƫ&m +3�l�9U,��}��&����D�y��Ȕ"��i����N������0���a�R��J�yG�YK�}m��fq##N�F�rF��+���i(}!x)�+cX[kX~��=RݮT�����2����Z{s���ʈ��ң=(;�h �g@8ɟ��HքÓ��4���qw��0��S� +�<�o�r��t�ڮ֤#�\�e_MV�am�.���Q��ع�+�� +cN���Z[:*0̞�b.���^7J�rL�O�.��e/Q������I|���K�:�ezX�#GƘ�����t���M�� ��A�FL��18���|���^�$ ����T]mRG�����`V�i/>��� +h)oNY�k��BN҆�X��qةxZez�OK����i��v]p�Mβ�v���Y�d�>���A�����Ҏ7t��D�NSv��52�L=Sy�2d1�<��1�֥ ���Y\�v�]�F�Z�k�R��v�mtf��듽OW�Z߹)�3t�3H����{���s4���ڜ[�v�9��۞t��Ł�j]=�w��>���]b��ܹ ���曵��`H?�>մ�$a0m��x�7�c��@�nx�?5�r +�x�Q���e����~�[}ml�$K.�I��N����g��D�B��M�L�"I��Yܲa��O�uW�N�*�9A���U��_���mg��:����6G�����n�Q�G���U�RԼ�yw\������Kփ"���Po���g}�"�\'��D�WND�<g��z�;��o�>��pJ�[��(�3P�"�- ��z�Y3�lreb��G�1(��X�X�����r;�֖CJ�J`~d]�e}�4^!2p�{c:%5L�v�!k1�V�_���=��6��dq���i�c����^�<���ŵ�]d4�PJ�\Sn�&�������E6���8��=���V�X[ +!����2bߛ;#Į����P*�W�9˗[X��� +k�ҁ�_�sI�F�R+7�y��qϪ{�;Q��)7i�3Mu�8���&�Ƈ����n������Y�}�p���!�پ���#Qfg�nڄ+r��ZT���Y���ޥ3��#���� +�R�ɐ4C�@��Y����MR-EIl���o�c�ή��Mڔg�/��L��|v��yE5���� �w��͍������Hbf(������1�o�r��(Ԩ��)�4�؈6��y�9�\����8������q\w�v�n�����PתZ km�^���^� W�/�/��߿�DF'�6�~���+��p�h /�������/��P�N&���a�[Yd����C�(KA�����U�=���?��0��;���L�5� O����L���p%���t_�[�Ǜ��!��`Ϛ=&i�!B���վq��!��Q�m��F^TE`E�%B(��IWg' D�4qd�Y���P����,Q�����uԃ\WNسhE��ßΪ>fH��^JFŁ�׳��M�F�0_Em�PNЍ^3,�>u7�����c9֠���Jc�f�����9�^eN��M���I��텚Jz�[ҳG��)���*�U�\�Z*�����Rx�i��S��$�����]���v��\p�7�N�AI����7�c(�h)��`ƾO'M���k���a��n�z8��%�fW]f],-�$Ū���hϢW� +�W��tO�O�St-K��hO��0"X���?�:����!�$ag�m][����wZ� �n<��v��}�+�ŀ��F� �t�b��;կ��."�n��!WdXȬ����<�ee���Ȯq�6�p��da�����\��Ya�9u���ɝ���&EE˲"�,q7fg|��p>�q90l���~y�t��8)�aF�č(�G4FX�7}U]&�g�h�|;r�9ٛ����z����Ҳ�O>��V� %=��e9�����Q�赵���^�ߥ5��WM���d�h��}��� ���C����E�"�-��������F8c.7\��r��}F�y�c�ۭ�h���, +#2��߭�L�Z�&�tޢMNl������"v?���o�a���݁)F�!˾ ̒ +v���[��w� +�-RsU�KY��?��ys�$2c@ר�:����ͪG^D������#���9�F��cj��F,�_����%��i�S1�l�:�J�[�e����+���f@*�V.*����jL�C~K�!�F�l/?��3�ֶ9����4 .I�uICM��5��tj�Tޏ�ʽ���W�$�!��Q�)n'4�džh�J�9.��V}�'*�e� ދWmT ��d`�;� +���%5��j[�n/��h�w)ә�v�]`M�=����>�)]�ɷt��IjP�� 706�FU���>��!Z9�����%_75r��ܣ�B������Cz ��Ƹ8t�,�&[m��(��D���%3Q�Ѳ��r��ٝ]����!������~��+���u�����2���P$A����"��ۂ����f�悼��m:ͮ":J^�04��i�u<�o�ݤ�|��z0I�f��Uʂq_������L1��r��+o�Mj�ݟ�O�μ_ba(p�"'9.���*2��ˉ0��7MR0��ZNɖˀ?��n#;�N�1�G�Q5����o�'�HV��ԺBux�Cm8 ;�����<o�)�����������m�Ϝ7�30���no���Y������JP����9�XK��W�Z��_.�H�X��Z�B%i�j�r#�o�U��K ��x��%W������ꑶ`FB@7氵D����K̟<%��Y!����b��:NZ��V�sˠ�EA��h4�TW��d$�_0o�ϵF��u�Σ�x���v!v�o�e߱F1���$J��͝s�����k���Ü�V�Y�8Y��� {�!��Z��y�^3�/�H�麵�������k��ε��u,�%�O�d\f����X>��aX;Ũ/Tg�6�NSf���9t7p3,�T�_�����v_�����ٌ��始�؎��\�^�}:1�E҃u6vssYR�.��ڎ7ۯB���ـ1]tSe���51�~�Q�����6��}�j6�גb������������Y +�i� �Lw`;�ҕҠ���'߀+Be<�I& ���~�n��Sq.�Jj� ����SԐ�>���̪�B�k&OB� +_��hA�2A�iC�#\J�"L��UXY^gso%��F�R� ��"��3[�0Ij��L��">]_���^I�\�$�}>Z�8>��GG��ʚrY�??�z�Wq��Ż�_q4�!�d\w~ +3�cm)�k�-* I�MnJ�7䞳"+��b1|�~=fG]z��Ԓ�I� A�-D��X���RI�z�d�Apbט^��"%I�,g� �p�w���H��M5�뉏������@���Mm�8m���F�tƲ_�=e��4�`�W2�"���K^[�c�?�,,����8���\���co"���{�b��L#If�'e�$g�|��9wj����Gj��^�����j^��0����wiX$<��+u86�O�nƷL���SDPS�l}t�0�c`E'UR��t��MKw�JC�c��Qz�b|�c�HZ/ɗ��MA��Ó)װc�s�x}���"���i�(��ni�h�YY�sg�]�e�w���ٳب~U̿�4�E��,�WD +��(lU��sc���;�P����M���E�� ���!�U`%�$oz& +Yɳ� r���3��t+���V,W �QGLV�~\���"�>\��Uj��o�ݝ��5��Z�>:���i�<�! ̬�Icw�g��y��77f�u�4�|����� }lB�&�g�1? �D�����:_Q��W]\�!1�z )#�Q�ٮ�0] +�jd��<C������V*/qAr&�L�11��d�+�[�C=�<߯g��&i�4HW�.�\�B�����R���f� ��� t-º ��y����F��h�c�������l>� +�������6�G�M�vT�XK�ṵѦ��kԒCp+|6O��K≪O=o +��F9-eIZۃ�&x�t��&���/��荺�)N9ԈS�ܫn�[�4�J:`Fy4&��cü|Ic]!0E�B'Y�$:1��QF/oTgcA�V)�3 I%��͙�?�xEX� +�%�]0�k�b�$1x������G4Ո-T���S~�{�`�F[� �gx�N8����e�1Q��Dt�ف"�o��/��;��4��e�O1�ƾ8�9��n�No ^�p�!K���г��h�^%����qJ��9�) t�kU��oڤ�Ęg��^ׯHs�¨$~�6VS��k�˗Ś>lY^�H{��)v��L*��+�mK�����8����O?�8���-��V���Q�U)��o�#��7A��������H����Gä��M�'�M�p���wz���1�If>K���ε�B�zA7���[�[X�����q�嗛�utϜ;U�����Q2���j�����b"g��K��.���&�IF���Cvr[��Խџ,���b�t�L&٧�8ű����g��t4Fob�%M/Iێ��ؕ3�)Ǽ��-����!;{���y�v����ؖI�t�\�ζ(Qi�gǗ�v|W=T �<�H�(��f�KA2 +�I�Ơ�F)�O7����̆I"S6��_K��sߩ���o��|r�TbU��O�T��*���e$,������'5� ����G?��1\P%�\EV�ЯJT��?XX���ٰ���Q�Qj�M?&�b��-�_%yw+�1�(� ��p`���ql��G{.�;s�hzӽ=A���_L���ȯZ���qZy~>��d�}3�a�P���K�����H�Q{��v;�� +ݍ�r��Z��TE���n�h�,ܪ��K��?)��@-ߖ�X�GǦ�<�C7�X+>��ƃ��p����<4"���遲 n8��Y拵��ӯXY�R��{4�g��)V�4e>��q�Y[IV����f�!6�`���1C:�$���Gγ�W���c�(e(\� +^�9̧UV�@in~�D��5���/6�{����8�G�$��Z]��MK��1�@�n݆U�5J�a�F��HT�~~�G�����V/m]�e�T�+I;�4�6T�7.��fzÀ�+B83������oլ�pp�]X�k��=��鈿r�Ns�+a�2̈�bͩ��@�F������(b�ܥ�]���X�'��̼�R�\�6�H�fS#���n���,r�H�"�k��wO\��F��2&�c½��<KWt�6��Џ�P�7F��WA�F�-�� ��o¹�<�A�qw��+4��3aH�Ƙ�!쮘;�~3W��"ƣy�ޭ��sCo}�v�m�)8��wa��[A;��da�Z�țP`P�4��>��scQ�ɉ#>���q�MzY��Zն�y�D���|я�&�ͬ��~-�Ѥ�1��|w�6�(��s�N�D�(�4{hj���D�NB����� ��|2�U|s���E�QU?k˒ *�-�������WTW�F�Ҍ���?i��)��|i7O�[�㭂)��|��A��nf����������@����5�f=�� ->V>ժ`9MT�|6��w!�!oNuR�UC6�7���ӑ+����:�rNޝ���ֹT�39�T0C�?��y�W�I�sK[�H�/�c���� +}���&�݃b����\��)c��e�����Gh��w��_m��~��R�/�>?0KV�taP$��ML����a �H�܁kF�Q��6�k�=�Yl7��Vd�}� c+���,F��%�TH��9�"g��;��Wna ��M'��n�Ǒ�ʹL���M�ɺ�]�"`-�"�C���+�|X�4�y;?)=��kr�Eu;F @ܽ���&� �A�#c�b]��~af���1+�(�������#n����������h-өʆl���S�Q>�A �"_w��u5��Ɉ{���� ۙ-����µ�;l�eZ���<��iл&c�j_�UU�_tQ��`M_+g��+��i�(��,6�FGhK¸��p� �bg{3U��=st��$��]�u0H ��n��IYvc~�F%l<�P�V���p���h ��w����5�A�Ě>�A���{Qr��rŇ�d�ܳD&j�����tY�w��V��P3_�%��p ��a% ���-��4Q/2p~�ۓġ?�\��%a7K��ř�5�t��A��P~ +��T�$�}���rs����Lmy�OY��;o-Ha������i��LS8���_G�m����0�ɛX�,'�j��{ƨhNP��ť��Ϲ�fe���R�'�0�vi������~�W��k�b�� +[�r�!������� �ȅq�&1F � F�SY�s;K���N���Fh�2V���Y��r( ����#<��1�,3��7�}� h,�kc��6cRtI��{^��H ��I؆�Th�ؔ3Cv״�5O�v$��_���f�8�NJ#pzP���rq���Y��Z� �-�/�f`m���~uC��*.�yԽ;g��#�{��5_���*i�l�2Ѷ�������$%4�F��7O5c��ֈj�%9 ,Sk,Q���O�f��9�>��e�:��*x)�'c3 +�DY���*�rL�8�?aR��.�:|&�Ø���V����%���t�Ȅ�����'�,�����CF��g~N�f^.C�+��O��dG�������ްq1&Dg�Һ�͒�8\�fP�d�?�PA ���ڎ�����:wY�){R�B��Bx���!$(#u����r���gP��S�u�G���d�>v�SVl� L���B����w[7� �o�����I���Ưw���g ��mB>�.W7+��Uz �w�6�Y����JFAu��}�u4���R�q��:���B�Nc)���g�$�ەH^�'���28p� +(^9��4 ��&�,��T�$[n��~%oD��r�}GH&����� �wp�y����Ü0�1҆�&z�]�Q��l����]���L���</��8:�Q�iSk���ȳ�����Y>��n� ���E��08(W@���P)t��2�;��u����pܔ�� n��ׅ7����S�V������R3o=5�w3���Re�!�/ӾJ�Ғ����;i��ЫPÆ�p�Y�-�M����P��9}�<����h���ƭ�LB +�6����wj��8r~\��#!<��l�X?��� ��Q�}YL�H_�k���&}Y�?/=�^LSd��]��dNPlu�Q�)��t���cjB���#l[L�D�@�7��/�p]�F��Mn�p��#�[/G0"y����k͏�OR)N���g�����w8`���e�/w��+����lF�J�S|K���4�h�����*N��rMȸ +�8�ݎ'����羚s.!xXy�٧�'eB$M�+v��m�\��]JR�%��G6!� ��4��jEF�4/>J$��k?���� ,q���o��c���嚕��h��U�+a/c*��;V~;�J���]�p���?�j�8)�Bd$qY��q��ՉhJ���[9>��l^{�W�rهj Ex6�`����X�����W�!D���d@���`���:ŀ����ISЀW�ͱ�I������p�aASb�Sy��;M�u��|�?o1٘@�*D��K^�2�M+�� �OԵ�l���t��q������ �s��V����W����������!�S�R������H�Q��������'?J��3��7gy��}.B!�)ۊ3�I������9|����V ��qẴ�7f�w~H�%��}��HD��?F����.�a��<�e��AxOwt� +�c��T1ŝx���t�r�qć��TW@��z�r���_T!ɪ2���^-�F�{�O�/EO�O��mՒ&˴�)���&֍5�(`D5����>�� ̮鎤1OR�����rfRFz"����8��h�~�;dX��P��H��f�/Iۖ]���Uc�xv4'�!��ݼz_�'i�S��5�0�n�E�g㺕S����ݍ-{�X[՟3�d0l�?�Pl�`Ce鲊0n"s&j���m9��-XV1pu�Y���zI�%�)��p�W�bP�5a�T'ϯ��W� +��QԶ��]��xl�Cm}����YA�7GK��}!�I-�� )&�W���լ}�_CՇi�`#[)��mF� ���.s3+I<�Ь�;��%Z g���"�/���L�)뗜��T�T]w�.Ac���')BintzD(�~e��Dq��N����:e�[�jmfD��pke�9�eډf���wnj��&"}�2�b�3��S\4���t�8 W0i\��/��'I�+5:��ؘ�2k��z ��I�����lmR�!�uT̘��TYP+f�@�����U�*+K靴εڜ�{�D�e_��H��6�wW��ؘ��W��g�K�P�� C�k��娾�yWHc�u5����N�T �L���(iVt���%V���i�t�rg��O�j����A�~ ��_��~�2�C��#r�I�U��Gl��G�E�N��E!�L�m;e��i?GI]O�a��Ք#�IL�>x���*ӷ���e�S��1�ݕ���8S�R�$�~K��j˸�a���"�E���|m������]E���$^m�Ca�B����im��c�Kn��p��ƧWi#��Q*�>���@_��N�-MFJ=2�\"�9*�4s���/�(/����z/��q+�s:������Q�����A�ե� �9hA��ۍ1�^��� 9�Y��}&J�}~�����S�?��;C���Od�5"Ro��oa�-ȩ���W�������@���Y�:�:*ǩ2�p��� ���������5���x�dendstream endobj 2636 0 obj << /Type /Font @@ -22674,14 +22673,14 @@ endobj /FirstChar 38 /LastChar 122 /Widths 5375 0 R -/BaseFont /ZUEJMK+NimbusMonL-Bold +/BaseFont /BIMSWH+NimbusMonL-Bold /FontDescriptor 2634 0 R >> endobj 2634 0 obj << /Ascent 623 /CapHeight 552 /Descent -126 -/FontName /ZUEJMK+NimbusMonL-Bold +/FontName /BIMSWH+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 @@ -22706,7 +22705,7 @@ x �w��zؽb�d�'g'3G��3�5�����u:[�8���z��WOs��˟���^i^Qg� �tw���09�ۚx��~%�w�U��l�� �@KGs[���+�+����g���ҽ�����_ѐ�������ւ���5���knK��ϰȀ- �6ֿ��.���\��mퟙ�{-������-�X!ί)��3���}"�$���o��'�j�_���<�+�����������}��^o@�瞱5q��k\��W����� �WG-����߿�2�&��" �|������o3�I -�4W9�Y,Ll_��/���h_��k[_�XY�S��ـ����7��k��r�U<������&�w����: ���@���R������������`b����px��|���Ѱ�s�`��r�2���^������_h$�f�?���l6��4���\_5����6���_c�͐� f��S�S�kJ��v���l_\�^��_����Wn�T��0����1{h��-K�3ԍkK�5 x�K�CAד��B��ð�bX��z��u�C~ F��UsgcTEհ� �x�����Ο�5���=��Yr���(����#����[����o_/`{� �� R � RG�;d +�4W9�Y,Ll_��/���h_��k[_�XY�S��ـ����7��k��r�U<�������w����: ���@���R������������`b����px��|���Ѱ�s�`��r�2���^������_h$�f�?���l6��4���\_5����6���_c�͐� f��S�S�kJ��v���l_\�^��_����Wn�T��0����1{h��-K�3ԍkK�5 x�K�CAד��B��ð�bX��z��u�C~ F��UsgcTEհ� �x�����Ο�5���=��Yr���(����#����[����o_/`{� �� R � RG�;d �j�{�3lA��F��es�`Y�J=$~�H�Q��b��~��ۑ�!��(�Su���&��=_��s�g�&U�����&[�}���R��ga��>ɿ�6�n2�o�ӟ-˜ڷ"b�$J����T\�y����[9y� .6��fi���u���}���Z���=�'���jy�"d!���bM|겏���k�C�x�O~*J� ���/J�L4�_U��S��D\Ʃ�Z�^����H��zJP���f�3�˛g xa8n��T'fo/9�MQ�~⥻�/���E6���Ѡ�w=W l_ "����!LG��#��R�EvK�m��vd7��Y�F�n I�]�jq�Q/M<a�n��WC��c��P5MHlm���R?2���U^����4"�U"�� * �����{}8� ���wc�����L�h0��a�u�.ݭ�')�:B�e�EzN?�:5�oׇMf�{|-0ds���~�}�3<�=�2����QBT�k�}��D�mj��I;��:�V4Mگ�Q:))�p�*R� a�����h�o��ҟn��P�{Ɇ�0�v�q�Z�ĪK���ȳ�e�l.��ɒ����r���a�ş�yI�H��*"D���Q��|����L�t�|���އ���p%������~��n���TD:&[{0.���9���1�]@T�"�<�p�z�}A�/ ���V�_�4C�Y�';VAG(r@�������6A�m:t����m�Ѳؗ�cF�6.��ղ�o�W��t��#*W��I v�u�o� ˌ�R @@ -22733,7 +22732,7 @@ T ��|߭���A�Цba�aq'�i���:jgǔ��ۑɍzb�,����.���P���F���v��,�މ(��@5W|[�Q�p���y��aA8d��# ug¿n���gF��9�{+��DW�$<��J_�PL`��K~�+Cyu��;Ds�;S|��K�O� Tf�6)8蔯}�� ����MƕA�E:P'#Y���@�3�,���?�t.d���t�>�����F�d�lK�t���������)�We�a�yZH-��w)��*�M��i.윳���l�ml�%m��?�� �?Qn�o���S9G�I{���v����������c��;Z����)�l�`E䴡"/��b��C�X��Nz(g�����e�e�����!g�nz���x��BHͮׄ� ���<|ܐ>�S'�`uw>��P�>#v�ѩ���T6�<��r(֠_2`>����a\c�O8��mgQ������v�B���X"���ݱ�@��g����H�Ch$<��"���/&}.�H?֟U�c_���<�9D$(A- �ZS�Ӫ��v��֡4�u�=����)16t����M܊+^�a�ro^��N7�r�"��zV�$|&�� ���q�z\� �,���q�%�!u�2�=���k0��me!��3F�^���0a��`��97e N� \�H����N��q�� E7L<a���w�c0����)�Y�3����[���H&�J��j�$��8kom�E9k^���0��g9w�.}^s�`�y�!Zy�l֑��븭Cկ���R;�T�\�٦�빟��(��.Cз�{�Te�������S>�{���Y�"� -*�o*&�����A���O��M�!v&�6H�3���endstream +*�o*&�����A���O��M�!v&�6H����endstream endobj 2400 0 obj << /Type /Font @@ -22742,14 +22741,14 @@ endobj /FirstChar 36 /LastChar 121 /Widths 5376 0 R -/BaseFont /NNFMSV+NimbusMonL-ReguObli +/BaseFont /VJIVPO+NimbusMonL-ReguObli /FontDescriptor 2398 0 R >> endobj 2398 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /NNFMSV+NimbusMonL-ReguObli +/FontName /VJIVPO+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 @@ -22773,7 +22772,7 @@ x ������ �>3@�� ���v0���cfee���KPP`��/ v����n`{��lO�`(�T��_ �����˟�L�..�B���s����p2?+���9�!p����� zj̓��4���ܡ�Al���g����j�� V��g�� �?6+��� -��N��Ț�OjOG�_ ��9��������;�}m ������w�z�����apq,m@.���ӑ������c�j����9�@.����߫�O�k ��{��]���Ԓ����d�����)%{�e����s��������o���/-��j����V�(�@�-=i�����p�Y0�5�̀�ɯs��L�#c �i��\;^���!��r���)��I�O�8T�T��8���Q�6���ߎz�\���7�vI��=����������R��d�����ܖ]P����� +��N��Ț�OjOG�_ ��9��������;�}m ������w�z�����apq,m@.���ӑ������c�j����9�@.����߫�O�k ��{��]����R��Q�b�����)%{�e����s��������o���/-��j����V�(�@�-=i�����p�Y0�5�̀�ɯs��L�#c �i��\;^���!��r���)��I�O�8T�T��8���Q�6���ߎz�\���7�vI��=����������R��d�����ܖ]P����� ���/L��d;;?�_j�_Ie� �� � ���4��p��� W8�I��N�)�_{��S�`���8 ��V������pg���y���ѕ�#�q��[�Ԯ��7�R �ư�X��*2bX,�l4����T>A(>�B�G���Ћ��L���(���]iϯ �4%W�bң��a0"����w��Q)�Jr���w��o�����4�Pg�e��A�ɘJ��7�J����em�f�s�RX|�3a�.�'E�B��ܷ��-���A�>%���Kl�5zL��A�R�)��������%�ݹ�ŹG���٣u��\�Tw��X��m�(DO*�xC��O���K�W�OD�V*��[;�"�8�4��"9ՉJ���@���s���|�����;�^����}���/�/�;� �h\�I��~b�\�_KYANء��[���:��V��Մ�F`Y�Wצt�z������$���7��a�c�� @@ -22814,7 +22813,7 @@ w �&��a��5'RV���3f���I��@�X�����h9�y����J��235��Z\�{�^�Dbyy/L�Ky��v!F��1d�?�������:��~y����MQ�T�����J����-���P6@�3�E�U�Ɋ�s��"�y0�O2o%b�H����*��M�)�ȉzS|��!d8�u�����s��{ ��FE�Z"r�f#���f���]?߭c��:_ "��3����%��3�������Z�SqKk��$Ҙ�md����,-�h{ٻ}����!�C�O.Ӕ~�x�F:1�X|愎ˋ7��?a�<��dRby7t��N�=�����hSxDn��D�;�Y��;3��d�O����q���[x�g|4��4�q�ӹ�������$�V��BYp'oPB(��g���{���$�$0��K�T��+DZ���*��<Β�?Y�ݭ�^��̱���h��̍9#���6��i�hSa����ʾ[���ڷf�Ւ�$K�܇�������Ղ$�Tj�f�����o6�0�r����S>+�%�~���(� �.��XRk����y��nX����l��Z�?6'�,��ɴ6ܱ,=��(=>%[KC8C��@� �j�U� ���Ϫ��nQ��t6���:�I���ؔP�Ɣ��kaQ��kO����g -�4b�X1p��FgrPʡ�ӫ���9��m�Y����1eu�2;�˟��~D��ۿ�H7m��H�_~��y)BnWXm%x��>�H�y��-N�rZ�UY�>�:���}� ������_~0�?�� {�9��`������]`�?����_��3�endstream +�4b�X1p��FgrPʡ�ӫ���9��m�Y����1eu�2;�˟��~D��ۿ�H7m��H�_~��y)BnWXm%x��>�H�y��-N�rZ�UY�>�:���}� ������_~0�?�� {�9��`������]`�?����_�3�endstream endobj 2123 0 obj << /Type /Font @@ -22823,14 +22822,14 @@ endobj /FirstChar 2 /LastChar 122 /Widths 5377 0 R -/BaseFont /RBBFQQ+NimbusSanL-ReguItal +/BaseFont /RLSTIB+NimbusSanL-ReguItal /FontDescriptor 2121 0 R >> endobj 2121 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /RBBFQQ+NimbusSanL-ReguItal +/FontName /RLSTIB+NimbusSanL-ReguItal /ItalicAngle -12 /StemV 88 /XHeight 523 @@ -22850,50 +22849,51 @@ endobj /Filter /FlateDecode >> stream -x��{U\�_�%�Npwww���N�Vx�`����� �'��;���}�{n���y��T=|笵���^g�z+ -5M +'������.H�t�pw�4)�h�l����<�H44Z@��?�?��+�tI����Z������������<��\�tr$Ws::�����W �%�d����5ݝ���+ �����%�M���Oe���\����hc&����e`bb��! @n���\�����Yx������GB���)��X5ks+ ��v��m�`gA66gks���͚��1�)Td%������_�I]���f�w��AN� ����� ���d��̦ ����+���/��&�a�d`�$���,m��J������l���uvr&�6wp��H�n��r��;���'������ -h &����9������+��]�^������}��2�s�VN ����;��Ud�$����FIJ:��d���&g����3)x��]�^�Ç��j������_� - k'r��������pu�3���c�����Z���5:F�<���σ���������9d��� -��� ����_�8���G��#���x��u�������h)�q��M@7Y��J �������e���C����L�����o��-��ps�s�� �K)�t��l�5�������_�����{�v@������@��`����d)�ٮ�s�S��'��w������ɸ�b wY�U��+����Sr��&lEk ���!��db�<�${XᱰC���# �X��UQ��g�ٿ&D��Ky��_RT=�ӈJMai�9��<����V� �-1�_��;���-��J����!�k�}��h��z��]Ӄe��4$���&�n�� ү����|���~�w.���e��<\Dպl{����d� �4\c����E���6V+L��5�oeYB[��jO�R�٦fqQ���G�\I[M���QVͱ�d� �u�m-�G�]��ݯ?4��-�~�=�^^/��C5���+6]�#�R�Y�Ġ�A@���5 Y�����ڽNl~m��>=�A���I9#�#�y.ڨ}6D��8v�5T]u�X_ͅ��$���#��#r�3��"@0"�B "<��UKX��5�7}��wz��4��m���S&J���8<{��UZex�}iTt�I����[�V*e�+� -r��A���ݷ�u�w�qB�nEP'�ȇ>��¹Y<AT��{$�WT��g��rښ��[�j�������1�*.�Q)�������Q���l��({H]�&sZE��������Q'�W�@p����VƓrz��S�Q�wZ1�&{��ļ&��C�"��`EO<��#7r,���=7 �^�p@w�д��N>L4B��nH`�\LSz{�UR ->����ə6mω�����O�,�'��Z��gS_T�C.�L8�++D�f�%O(ER��uMX�Ed�}B���ﺟV�$�_�'#�#Ά�1'�`̨�������LƮ=>Ɖ��y��P����R��Y��|�'���&߆��M�d�%/J�0_��1���h����T��k��&Yz�yǵPv��8�x���Ӻ���$�+�,[$B�PK�2+�ٿƫ�'Mh�N�X��@���m@�:c�݃C�g�i�@��9�c�_������c� ��+���ОC����������j9�(��lx���cU��p��p���8Nj�ܺ�{ �jK�F��J��4l'㱌�eV���jR?�:^�?���e3��$���� ->�Y�$�\c�~�̦�*;��3�[��m�y;�u��Ϗ0��� e��������a��͆�'�Rh���52˕����;6b{ׅ@�<qщ��/u�l�Tڊ^�G!������ �p���I��T�T��P��G}B��W�/υ)D�yu������M�� � ��:;��u<��ׅ�d�g�gϫrz 7��| �D�kɢ+��/VeR:�zLa���FL����S -4HFUڸ$;�#�3�����|wf<����-���U�����&��Jv�(٫� �y$҆�Ƌ |>{�� !�$:���+j����GC�x�K2���IJ0�C7w�C���͗��">�R~�C�+�R��1��+m�G�ߚs3�6/�lRoVL�"MC���_�:����,�uh?>���j� <JYPk���/ǭ���'Y�f����}�_a��m�4�,P�V"�+�a+��b��̖�KI~q�O�hé�E0Ra�gP/�@��0���&&��y�I��~�7�����,/��W��M'J�Z/#�7����i�xh4��~f���`���8��L#m�<��s����)�JdT���ĻM���X�2�A��"R�zgv�������ɿѲk$��G<��3��)��)�tC���,h� E�H�'E����a���8|[�YީDK�@o�92�;h@rIm6�S�#P �7�HP��xX�py�X\"���v���䭻�6&�V�[�f�*�x!i��6���x�%v��p "_ᩩ��}�´�019���g��J\b -O$���L������5�R1�"ኯ�a �OJ�~���"��F8�Z�s�~��ʉg�F���9yƪ��0�bjV�m�, }cf��"f���I$x��A�8i[�'¹�Kc��m�*� ���A��;�����j��+��_:q?w������O�2��3O4���uGV|k��>�n*a>�\A�^�������{Ķf���V�d��e�^���i���vY2�8'�� -�����"a։}�_��;M�A������˓�|�2�������WS�]�(����e��<���}���+u]��M�<�U��|�� �]L���n ��5��L��T���1�m��&��v..ح��\�$�~/,�m�4���G۷�(s��^�\t61��� ��&��%��Y��, M�w�9����]�Y��㕶�>��������Cw�Ru@���F���O_yG5�u�+q�����.)� �)���UX�K��M�*Vm� ����%ܿe]��&��1*/��~S����k��[�E�&G�5<��� �>f�4'�(?���b"���݅�42`R�Q�T��p����y�r��y}xǹ좉,ڡ@B8F6�җv�/�.]h�ZS�!#P�H2�Ǩ#�mֹ]�0�b����D\��j��m��� ��'��kO�x�?�{y�g$�����d%Ӹ�gZ�jy�㙹G�2Z=��'�P����9p�8}�B7�/AǍ������?��&/�����״~�;�e���XL���B��py 鶬�=��IQ�F�Wo��CQ��Զ�y�� �3���>Oof��A/R2�<� �>��kS����;Z����i�C�ֶ�`�����C�0�Ep�yye�o�V��J�0r7�3h�2�����f;��C�HU���$�f�|5��6AL�\6/��c�`�I(;5�}͠j����f�!�Užm���耕�'��� -���yy�W��w��ܘԖC2R�iXq�ޗ�|ƤaЎ/�� �����>��^;b0 H���u���̽j��Q��=��ڿ�Ď5��Z����������[;V�+ �����!:�B� $��CT�`Bsv^ -h�2�KuZ]ik�OR�Z|�"?D��춼(>�Ϯ���z_V����"�[أ��ƴV�t��8�7�lC7`����;fo�ŨG"H�4����n�h��.£�dDŀP�#�r��K*�G@�F|�d��d�_2��A?������*�I��6�4�6�;�HąnF���� J�&�\�B��B������P��=��Q�� -��!����c�X4�e���>s�I��){����M�0��Y��4�آF��-�z���-������M.���Ҵ}����3���X�m��W$ɩ/2хA��zaL0���"�Gҹ�r�XS"6�3�E���YU-��^����P[b�|��{G�;8�n=c�b�N����<�]��+���Q'R�Z�ɥ//t��%^y��~����J(�c�2��T̠.�n��f�n�[/�\v�� 'i�����w�e�4c&���j���t<+:�H�&�}E\�R��M��]=s���bR|��$����A`��{��i��џH,e(��:�����x��S� V�9 �MB�3g¥�f7��1��W�ی�o�#��k�V�vͧ�N3K�`\)� �]�H��{^Zh]��� �p:hn����t�������C��1e*�#9�(�� -UO�hG�5�i �O�h��' -E��jW�R[�U��Zv�`Y$�Y��� %Ʌ�t�<���܃����]�>Rl-�𐔚F:��$�Qm��9� ��_�{�v`�u��3���T/|����vġOƪ�l���g�5���X�/'x�3樣!"�+:���ʔ�r��#�7��h�oK�\y�m'��?�8�ɛ��6�u�~�Z�bQM%����·��� ��ҹ{�$�� Kt�%�<�Ё�k�g��XS�3�C_���%�1]���պ/U]L,�!mӇݏ}�;n�W-2 ���{ye�8��]��~^�j��D�Y��|�1��r�w6\�z�}��R��na��M^'�dK�v�{`u���U��J���C,A�@�D���-��˛O��1ĥ��{�E��^��+�b�b����8�"���N.?�>gu��J���qW٣iLl�R��� ��F��`�2x����iQz�( �$y�] cA�-L��V�2�УL���SgsnQnFMh�/�_�R��X��O� -n�)��9|�6fF�8L�pz���DOؾ�2k��HБ��P�]���+L��i���~ےXw�J5�x�lR����I���>�%���~s��g�( -L��D�ܽޖ����� G ��=bTJ&NZ�$�����eWAem@ݬɍ�><-������ˡUy�L�lj��c�+&����9ݯ{��Z�S"����4�'��δ9��C�,�XVdH�v#�K�D�K���D�?:Vs$����l!�NF���11�MF�Q{nc��9�k���IqB���x[�}�)륾�w3���ʮ�ĉm��iq�J���ZT��u�p���V?+��Tʉ#���%U� -�M��:n� -�=A�ۗO��?�����m��Ӵ/w29P-4x�i^s�FE���k{���F�U�Q -�LdEJ��WU��iB�{|���D�0��a��I%�~���wC H1�G�:��X�-�<hĒ�I�-L���Ը���%��S9�?��J;aΧp��|(,���|�=S���+���JS�0�?�x?a��~34̻}��[9���y��<lT�7��Ji>b��'�w2?{8��K������ݦ; -����$K�� -D���:�!��ў+(�pQ�і]qLD���am��q��N��a����C!�%����90ˢ+*j�@���.R�V��X;�ދ6F�\�z��i�#�w�6�/�w� ���1���������u���6�b��3�$ K�+�k�����#�ؖ�*�W -�؝�9�5b�Q�k�m� � [y�/Vq�_�H_����n\� -P���?Al�;���h�~�*�h��y%0^�_�!�ġ?�f��G:Wf -s�}+x��X�X,�u4P�ݵ�g~��9��摴�=3���9��h|�1�z�|���Z����{\(&��J*�_��w�l����t���[��m+"����d!6��V�4��ɾ#Dc�U� �t�{��7Ȕ�Z6)��^[��%c�Wip�~:�,r���}�x����ύ�L�Ԏ�3k�(z?@1���Q�5����_����);TK��@K��C�6���<}ە�<�]Z�[ ��R���Rn4�-��4G���Max�u��J�T�zۑ�0���E��{���wyې��9� K��Uy w�9�N!��� ����''����,�j����h�Ӻ���<Y��%p��ۛq�e���`Cӧ��Ӕ�M .�7i#�l�A�����{�H�˯�m�<j��'� �U[�dҧ[� �\�*_��Z�5!�8H����LV%�AyzŐ�sq��t}��1�ߟ}�:q���yO�]�Ȉ�*z����n���K��Κ)� -�o�9��YV����B�&>n���P@���"�ʄ�ݓ� -_�D�t؛��G�~ۙ��hrN��%��R"wFC �Wj3����e��f�+�$Te� -}���4���J�v��%X�Xs������i�t����i -���.0�Y4dj�3f}ґ��8@�2�c��ۣ�,��*�Aa�\�(z�VM��r�%(K�`����~���W! [U�u�Yo���W�LT'��[����/��������6< �|b &�m�1b�j���������!����oF�u�]$Y�VcJ�7h�T��s'ohZ�"bIY��638�$J��ಀ��B� -Kl���Z�ƹ����g����9��Wz���F� %'�C|~�Ǒ��.M��q���ԓ�t>��A��[� -��k)UV�h2^�G�K��AC���R�S��!I�Ə�U��k��5Z������X�7�F���/�[ut�:}�2CȹNE�XYz�on0�G��U�4J?��˔� ����Z�F�si��O�L*��H������rz��'@��e�hz�_b�� ��/�h�u&Sh�5�+�N���"��ʙ����#\�2%QԈ���y&~����"wp����J�րi3� 2o{5����L|U����ٓ���O%:b() ���y�M�c�)̀my�ؗ>�.�6�A�y1��&0%�(B�tE_A2T�ߜ� -�58�j�Kf���a�do~��2%^����Io��ۤF�M��ո��A�1f���/����`�0�*�s�xPbtL�@�D&�����Wd4X�5�d��J��4��$Vϑ�EMݻ�vb�!Iy����������ލ���(a����t���v�%)h��1e|�naL��Ra�P""�t`�c;�6� �O��5��m-�c�U�"ɯ����X��܀�:��d�nz0��I�!8#4�ߺ08W�ݞ�u�9��P�ۆ���O��_�/ -��}�o��Kq��)�ۚk�>����q��p���=#��:� ����A�iX\~��^��W�?l���y���{V��lj�1� l�^�00MR�u����1��<~���I-��@��x�UJ�S�AR�Y��u�Pi!m^�H�h�RQ����<P�A� ߪ�aO6�A�l�uX��J�|�0�1�8���gj�I -�b���"�l�TS�{�w��Λ����$�꓁|�^HW=�Aa�+\U�?����˥����il��]A���<�#�̝�3��ү���^���S���̖���u�%�z��,|b��x���⣦i{2���'g>�L���Sp-L��D�WI������t|V��_}�(9=}5�@�@��`)Y�����-R�gfp����q��@{��w�'��W~���9��/�4ڰy҈�.Qw��Z��Cd��Sx� ڮ^�( ��<ѧZ�Q�/��м#ˎ��M�x�s�6�??�w¨�a�9����R�v����le��3Q�2o����6�ѝo��� -ڗ��"7n���r�0E�Y��X��t'��Rat���X�"���� G�o����RjQ�m�c�K&�f���N���D�[J���x���o5[�`��KV�3��*��Bs�'�����u��-g�h�W[ܹ��5k -i�k�����2�kk9 ?r����2���C��u�����_�$F�Җ"�����p<'���ލa�풎~�B��!Uk���&otniQ�3�������t홡8D��v�З�)k.Q���v�:ҷ���ָ�p�6v�g���\):�.1A �9x4Ns�2��l��(�g�娬o����|\��=��ü��m �x����� z�a������ub�T��/p��"g�����e9�dV'�t~�b�~��7���>t|ߡ|ڵ�|�� i���Li�K!����#s N�Ws��"|l!J �� ܓycX�!ك{�f+��? ZT�K���B%�."�t���`�}�uk���D8�V ����ى���z�� �ΑKA��1"P�}��Jd���r�4p��贤):�e���P����PV��r+;��_@YA�Z9���ӳ]�61K�lL-�T&T>��|�1~4�+#5��9{VnO�M���[���"�VKl��^�T0���#w���t�"�a�PA�B=G��"���2��"��t���U�v�ҕ#�J60\ѬD�n�Ha��Ä�F���Ժ�����azI)稅����3�Ǯ|��}��ԛ��\g��I@�8|��M\�pӌ�y-���n&R���ݬ�)O�DOg��49d���J���k{�Ɔ� e��W�U��5��.&���{��3��vm��&}�Qɠa�0��L�3ڳ�����ۭ��r7�Y����ɫ�D�ȁϗݜ[�|3�T7��%����ݍp�1w�THw��9*�)}l�EM�8b�D�m�>�⭍�YĻ�M�s^H���F:� 'b��'d[ł��/��+C ,e�&ؾW��ڬ��uxbA��Wd����ȗ��]R��~�z3��_4���T�tl]OM�X�ΰ��YA���d���n��vJ:�g�au�x�!�]\�+Q������ڀ+�\�Ǽ{�$���vc)/40�����I���9�d����_��,XE��a-�q�����]�ƴ��u�5�9�C�1����~8�yK�(��n��L�ޯj�M��}[�%3�w2����� ��ƙp��ӹT����uj��.pG�B�CߦQ�˗���'�EjMrB�ȇ�'�a�p4�L͛<L?�aA�t��ߗ���T�H��j�<A9������O��F݅����M�Hy��i.c�{$����o(X���M�F��HF�2��j+ �F|�>�Ȏ~L��X �L��Z:Xe�ٸ�#��S�b�ϻ<G5�����v���c�i��F�i�i�>~<a��&��E��������=�Q$�I�y5ܔӹ��ES&��z~��z��v��r���NW���:��4��L�+���9"Zp��?��܂%VTgN�z7��s��@K�8��{JenX���аZ�)�M(ZZr�6Ԅ�g+7���u�P��=��L�^�*�-�e���l`D��2}��e��ғH��]����3��L�da�0�G��Pa�}j{�$�c�3���h -2TJ\�BY��1�~������:.�<�r�ٙ�0��=/^UD�����W���B�+� �@B�-��Tօ�zq���s��h�#5�B�n���t(~�}��=�&�]Hw���L���ŗX��Y�1��}�-`��p��sC����V�qW�������>�x(�&;B�prqO �t�Vsx�Mȱlykm[�����z}�7��+���0�@J�4[v�� >�:<'�;t\)X�CL�k�:�*�Z�k)���Xp��&�1z @Ƽf���T浥��X���R���e��:�]�J�n�YM�����뚀R;��c��C�����<��c�_��NU�J>e�'#�J -�����iw)�з��~?���݊,o���tZو�P��!�d醞st�=Ӯ8a�.���#T�zĀa� -��;��|Q�.b� Y��3�`_⍧M�k�g��2��[�A�-q�4&����cO�J�fby�zݑ�[�/�/~O���vq�>j��X���}$�8;��ޚIKۑM����iOXY�r _�|�� *Le�5�,��.UB��_N�6�֭(NW��f[z��A�j�4F�A�i|P5N�'rF�u=G�X�9l�aAU-������!�앚ළ�<6���}V<��)9v�w@B�ŧ�ZM���CڕP��M���]�m?��M[��ox�QN3,w���?WfUA����:�n�DLq��G���1ȓ����:q������)`5����ڎ�ɾ�%b�~i.�%����:@F�V�ƴ������� ��7�@�ss���ev;ш�%�3��������<��Xc��ڶ\��N]���xe$�]r|<�M$��1e�&�������M+�E���d?<�" �����}���m}t҂�]��ݖ��o ��Œ�V��J4%��N�F�E�3�x�Ǖ���7�<�MRT�A)���)./�ٍ��E�F��4M伫쭤K�q�9��{^�^��i&�3�3� ���`3�LJ���᧑�ە�F�+�ɖ��L�8�J��/�w���u�asA(:К��g��j�Z�:�w��U�{��@���@�rb��71�.�+c�\��<��sSo<�?� ��@�DԳ���S?4R�t����O�b���p9�/*s)�~=����(\`�uso�~�&����~<���&j{Gm=���t�>�R�j��(���W�)�7w���ާ�5�#���7���$�_75�,�V���3���{�VcV�Q���lm�K����Ө 2�>u�f��>B�s��������+Z�;|�JlY�_?`�Ǘ�P�70��� -�~�A``����C�3�� ��L{����q� �eې桠`n��!� -�m�ew���.*���E�?���~V&� -ǂ��5���oJ0,Lzin٦Vb%��\�@7���m4���=��W��teήT|;9�L�]�3Xlȱ�Pܨ����8��G�Ө;;ǵ�9Xx8��v��Zʟ���^U@w�ݿTj��^��ƖD�&�y�o��+|m�4�7 za�';Z&V�����E]�/K�,���Ķ|�P�����g���_튡H�X�HO)Zl���5� ��~V�1���[�_���Ysi9�� s�"6�.���"0�D�2�mby$�$d=��q��$ӂU� 9����<�Q�ڜo-}c^ �695A�g��+G揞��09 ��WQa�]�_�Y��{��!8 3��{D�e�����Sq�}�,���0_B��О����.J��h�����~�g h�$��~M�?/ -5�V-Z.%�tH1������ζ�Ѷ�췇���P1��"\�-L|^�����Z ^�zǮ1n�".b�뿢���zs�`�&@�{��Gr�`K��� *�\'�@z]����+�,�,�V�豻#� ڳ�]�����|r?r�Q�/�{�j(?2�*#L��Z�a���u���~���M��jA�0&�mp�S�����,Y��V^�p~����[5�}�<�]�УE��ǀ_Rc�$^�+�h߯d���.wQ���W8&O�ӕ�6��z9�ux�q��UTrd��u�<-��3~�/Al�4�i�H�l�i�IO�| ,e��~Х[p��3쮟�$oǏ.��}�R�X���v���o��G����Za�PX�Q�9�DB����� �`,�֦��R=>��3Q�T��u+��vp��R1����:�@ 2�C�L�rZ��i3i��hW4M1Fȇ0�e��b>I���f\-����֎쥐��03��]�x�z:#�z��H��J�7�������?!`��0w;9���#����N����Y!�endstream +x��{U\�_�%�Npwww� �ݡ�B ++<x���Npww ���2�w���}�i��7U�9k�o���٧ފ�BU�E��� ��p�������\5�@J,��k7�? � �&l��!�0A�f�?������9';9� ;� ǟ5;�?]�U]�����0���CI;Z�9�@` 7''{ �R����bp$��S�f%�rt�rZۀ���u�����p��{��!���A���{G��2�����.���+V��L���]rz0�I������cu�b�l +�YJ9:�%����g�@�ş�����7;����?`+ ��o-Y�9�i���n��� +�!����y�9��9����O��Rjz9�Fr���,}}��ȭ��]�@+������;������߉��C�� �Z������_�`�����f`�'�;+;;9�_������#���_�*f�r6i I ����Q���$Y8���Y8�y�L�E�W�����o����d����ʑ\������-�\\��&9��Ƙ����8���r���!;�������G����`�{Y7{���B�w;����J�D��#�f.�n�����^��@�ߧ�����6�ZH����i�U� �T�-l�>.�p��o���� +��&��p�p��i��\]����(����Rʀ,-� kr �4s��'�m����Ǟ�Пw����)��X �,:Z}�����X+A�����k�W���7R�=�+T� +�]w�r��긍h��24dh�L4����d+<v�|�)k��� �%����a|~jװ�EŽ���$�F�#�?ɣ����'8"Ҋ�*�O����A�������Ǻ��m��R�?�4�<�}�Gn>}����2]X�D���C�_��� vO�p>۔wX=9�|�2rZc*$�l^�9h�Z�d��ÄK*��Av�[�"H�i�����س<�,���~��D��h]���zO:���W�f��Vo�ec� ���Z�pK���A��ZG"~g�z$���w�K���Xu��Y�{ɦ�X�9C�8�h ����.�.W���.V���2�ůesnУ���y�3!gh�}(:�%C�dž���κ������1�֜(�U~�'HN�|JV�QBd�t��Q��>v���hEgM�I�`���y&��"p��<���R��=Ϟdz�Zօp[]c������J�J���W��y�ie��~臐�Y�N0��Ok4wj�����ջ�Z((��b��ҩ�*�*D �{k|̡�MsP +�}��F&���#i�$[:,�T����D�%`.e�cE�A|Ў��%\a����� �����mWP�RL��Z+� 1�J,h�,��C �E��!nˉ {5���S1��Y&4�t�� �-�"W��o~+��avgO��fGnn��ф?�銪��d��ڠj��s��I��ݖ |7���+�,)���*��"2�6��{S�w�W3[zطԃ�͕g�ڈ�?zDkg�����&c�.�x�R�<�Vz=���̭#>��������zƧ�c���P�Ͼ��?B��zP����~��� ,�c�c�(ۛA�B���Yk�O���Ye��!��Ń�k�qjc��>�:"��?{��g�*N�w�P��0����F�oY��G��%���(�c;��~"ôg��j����Y��G�j,ʤ@k� _�OJ��T����X��Uh�[�%Uł�#w��߄�m&��dVr��.�R>;\����d1��$o���� +>�Z��$t]b�~}�Ȣ�,9��1�]��i�u;:����K�SV눲C��S��p�p7��b��Y.������J�]��b����@�p?oG�ד:W�`*nF�����Bc�yUy�h�L�?�rҠ}H,J,ʽ/�إ�>��� īғ������<�sYw���.s�����O�����2��Q���f��ؓ�e)=���n.�U����d����A��N�V��SXj��S~p_%��� ��ml�-�!ѩr�l:��r���3|r�0�&�J���<Zuc�%[lB�b����:�М3i�~�y�:>��u2�ĸ��X���x�Q�%��J���U�H[�89��;���g���k��=�I1����Q��Qݽ�ͥ��d�Oՙ)L��=E�+�U���@V��7h ���p��*�S~v�N�$��dc�ۇ��N�+壬\#�[����{�h�k.�[s���z�25E�r��Xӥ�b�w.��q-�O��TfY�8����)�;ɀI{��R����L~2$~,� �{O�� �nG�]��`�A�����|�[2 ����{�n%He�?�Ӱ@zK;��Z�l�B��zi���L��NC֔8���C`���;�.xp��2cf�'�7ZV���аG�}�`z����e�N��ѫ9mm�h�܄���Y�5�h��]Kە�h�9���A��"{uH.���4j�\�C8*����) j�)�.�s������v~���5��F���y�Z��T��$u�[��.��L�B�)<6�~��W��$$��V�zY��P�MH所������pS� +S,fT(\60��������q�*��M�=�9>�x�@�gvc(w%������Ve'�Q&{`��M#e>�+3�^$1�L�+T4��q�Z/�yn*6n��P ��e��A�5~V=<]�w����ػ���a�N�D�\ѐ�Wm�q�q#��x:)�ylr�����s7��B�[}����Y�l_�� �)fM} ++�f7�%�u�#-��m +.f�Î|/�nH����?X��)�cO�ɸ,���F�� �0D1����*����/(��^��nl��ɨ�����q�`��w���XQ��t�u!M&l�\'M�ʯ�gc�\K@{�ߐ���ų�G��μ��h��f�`PӋ����"F�z1&��` �9M���%����:�Vڝw�1��s��Rӣ�m`'(���y�VM��h6Y�W��Z�y�WpD㗭a��(=}_�[���p�r�m�9�Ԯ���b���Њ�._��k�y�I�3�B�т_�wP�n��_��kԧ��кG��dd�������x�{�9L$W���۰�zL�X*��#�h�`��= Ol�:�o84�۔HGȦz�N���������dJIFr�e�L۷������P�z�:���+��QB�Ѵ��x��B2;�w��|���^q����v��\�Oc�����d��#ܵLK�M/�<�wH���+g{o�j��yA0��'�\�?�$�1��W>=;�Mg�����"#��1���Ju�A�3�h~.��l\\@�.�D��ptT���y�PT%'��s��ٚɉ�{Jy��3Q�Y?��')|�u}���+���h�[Z����Q�CV6�`1���P��p�%#�V��ivJ�0r�� �hF2:�g}'��Ƚ�o�H��E$��Y|U7�AL�:\6O��#� � ([U�=��J��h��F�A�Ş-ق&�(��`G���2�}�9y���7��|�蔦2R�IhQ���/|F�����ό��S�v��1������b0�H�fW5w��ݪ�~ ���w6]�nZ��Ď��l����z�츌����ۖ�~( ��� ��"ڿ@��%��ZATcBs�_h ���8�,���%�m.�]���avZ��g�M�f�-}���� �[Х��ʴ�t�q?�7�hA�g��Ɯ=bo�ŨE"H�0�s����l�h��&£�hHɀP�-�r���K*�G@�J|�h��d�[4��Aߧ�l���*�A��:�8�:�;�@ąnJ1`���%h�n6H�AW!���Y�}p�k���1�0�W��ڠ|w�����l��Uam��u�$�Ť��[ņU(�ˌSY0n�\La�_ܦS-C�L��&�p�J�e�X^Giʮ�\�˼ݩ���� +�5 ��K���g����!� +�0&�җVr��=�LN9�F���Ԟ^�"�_��������Y+H�����f�t ��sK��?�f5mw�l�N������Co��#��A;B�J�ɹ'7d��9Ny��n���9��P@�ly�OmR��~��Ս����^�٬��~N(�bC�y%�ts$�"i��>�Oyof�q��PÙ�we��J!f�4a��`��2�^�q���K��"�;�q��B�!��zoU���,��,�|nZ�]�[v��XQg��&4i0ά1�����|[?_uw#BD��r�y&��d��j�����a�Q� �L��ZJv="�G6�9i��Ovޏx�Ё�#�ߏ��Y��%���G�(Sx�G����+�JG�ڭ`�MaG��&;R(چWj��ޓB�X��T�+��"9���?�Į�(I�g���~��������-��T�I�a���Ob����-Y��._9��ʹ c���Ȟ^�p���Nψ�t[�x�r��qoo\���a�U�b�g+}�: +"��� ��Di5��"z�h��ۖ���;�p�C����n]~H[��UF_!�d�K�Ih�\Ȉ�1�� +����!I¡����D�m����3x��Gf�����9p�M�=H�"��$��R�โ���e-�e��G~��\�I&��˦�\Q!����-�����{�P4��#�G���3�~��#�ӡ���s��0ߐk�w�OZ�p�H��Dl�,��V�֞��e-��m���5�w:�2��A.>�z�� C\�9���A�7���V<�0-�-�J����/�_0�m����W&ɩĚPw���F��)Eοr�ά'��g.�~n��u��R���G��2���W�d-%�*c�]�D������b���KM�),��+����*VŬ�~7���n�|5%���B8>��Z��o]}����'h�f���*���&n�ѰM�I�eA���A�)�h�tB��P�N� ��6�%���z}��k� +���@�عڒ����X'C ��=dTJ"N\��$�� +;�dn�V@%-@�̉�o�&�'ᶓ������?'�b�W�0e�EM���ּTb���hk�x���~gX���U���J�)2$m��%��O�ޤ��L�#�*9d���7�s&"�T�G'�T�=��GM�4NWw% � !�L���n?��tS_湁K�߳*�)qb�&d�\#E�`����r����ߕ^kgd��]�9q$`{`S=�j`R@y��pTG��a��h�{�)قs'�ֵQ�u<bv����� +���@�W�����@�ꮚ��E�����B���aec�P��8�ԱG���lA���R�ͥ{]�P��M�ǐ7��~�} �`h�r& ��[�_jq�� ��.���K�7�S��d�:���gE>��)@�x��?��%��K�+ڋ_�� �j]&�^��lV�4 Y��'�R����2ˉ������\g����e����v.�ҸI�B�~��L��q|��J��ğ�q�d}?" �~z㰎����U�pi�C�0���FԦ�y��m���iޑ��/��_�U-��s����U�I-y�k�I����q��W�[���5���js�(=ř��;�Z�=1�iP����֕��Y�}��$l�z�K� �v��*�$u�ȗս�xh����W��R���W���<e�k��|�L����(�8���E.��Z�d^�j�AH�����Oՙ#9AN��ܫ���(� +���aw�vǘ_���N&��x$-nN��ԷO@Ɇ��k��7 ��03��Cd1�� �;���b��a��-��d�-3]q4�V���n�a�7�� ~|��3ɱ�m�kV�f����F7�|�� 4!��ML/�ג�qNB��U@��� +0�X):�t۸/�fa{�q�.�>(����\�2���Q��ޫrͅj܇,�Ug��o� +����T?q���=�8G�ri ~���V��+�T#��� y�38�@�uU�C���$��r�1D�{x^l�x7�C�&x�b�x\�³x��D^�Mz�E���x�����!&>y���_OZ�S4㧳IML\o�,o�"8X��ըI�2�h����s0��I��:��̫�!}��d?�ta����_ +����UK:�M>����qL]�~������&~|?��W���!��CҚp +��7���<�b�����g�Y_�2����3�����/�p�8��l�i���.d���e]�%��7��Y�C������c7S�lw,�GzL`�Fco�j�(�erX!ky|���G���"5��JG #R�mM��58����>Q"�GA :��ӧ���d�J�����$>ɮx6�m8��%~O۲��!X]_u������n�p�S��n����7�Y8hb�+zm���G�<�e��ӥ�,��*�Fa�\�(z�VI��r�)(K7o�S�~�� �[& [Q;0ܨ;��^e@%��#�F8Z(}�k;� 'j����{$��Ĥ9-<�����2x3P|^ޔ]�v�mz���w�5�B�L�t�͐��xn�� L�PD,(k�BǢ���D*���_�3��kV`�ͰQ+B^;u���8�b��}?+��BQ������hq�����0<��`ס�b<�QМ|���C�֏v \f4w)�ʌM�g�hw�p�o`��\LyB�:(i^��/�B�j�{�=�J��"VC�/�i��Hd|I�yV��^�7TF09+K���5��H�J�z�|g~�� <�S����9�H�Z�@���I� %�d)��9x=�N��٢x(S�,M��s�P����)-��D2͐�Yy�I��cxY)��e!q�A�$�*߽<:���|�����6��j�)�*0m��~z�M��ҏa�����̮]i���C�o�"A�=�� +|2$��)M���ӁЂ�o='&�����EH�.��O�����W��Wly�̷t�o�έS�'ǩ���B5<��yW���55��z�b�K.�f�?G��},0!*�J ~<{�c�ևK2,���82y%�'���+g���&n���1?_�����`j�Aw���o�ʂ��_�0� U�R�ۜwr�N����?o5� +&�g�iY��+}�7ٶF�ւƧ��~�����H��`�hE5�'-�g�h1����qv�J �*Ʒ*ʑo�#y�B��1���t������YA�?L�g_����u}1V�(YvKc��� ^��:�����M�kU� ����,��>��wGҳ������a-O�W�J|��BU���3�O� ��y:9fQ���z2)�=^�胰#/�JI5 +0H +0K9�*M���kIm�_� +��z����S}Ʒ쀸ߕ ��'��k!��)�6����a�`��o�5��(�s>��sJ�J���#��^g����]g��ӣ�|�n:HG-�Aay�����xt{��\�yi�U�7i�.#KOy��p�L�Q@�UG�T.����)]zb�B@�� ��9�y>���N 8�Hg�Vհ9���A�3E&� us�ɿ&�C"��-�y�}|x>:��ի<x�����W�F�}������P����5�?�ҳ������@�����;�3��?C�ڬ��y��C*m�ixM������Z5h�پ2�{� �v mG7e��vo��s�����7pH�E[~�k�]_����/��ad�^�Q�EN�E+����\��n@���A���@�c^�������}�J�swN�+7�Pm��/��5��rf,H�c����>�b�,I�by��C�W�;�)�Ƞ�Q��[��};i�WC�� %u��V�o���M{5�J���)�n~D��#X^`F�*�Q����Z4s�wv�j� +�B犯<ibY�D�ʊAFNݗa�����@�{M���7�Đ@C�Bd�=9��c"����V�6����W��R��/���FfWe��ި�Z�I� �OU��C��m5~}�����y���o�v�-}�>7�ʭw���.�?�/���B�>x� .���k��q�E�qg��@�?(Gf~���k[������� �f ������x9d��%�,�x���7x��B9]���,�'�*8���3������%M �����Ѯ���4��H�O�秂H +i���m�pz��1(ߠ������s���I���S֛I���Т����|*�5��ś���o�͛3=l���i�ϴN����V�E�hȷ\ +����j���"����ž��E �)M�����D��� +,��k���<�2���i�����|��ie}J��2�����у��h ��E��rk��Hw�$܊�FV ��jBC&�����ì����5Ӹ +ʠ'�rXoŮ�9}֦��'ѯ�s����Ի��h�<�dT����F%*t;��b��l&\U��wPb���G:4r��E���&bS�o��?w�s�j�&_U�f�k�I����Ǯc���M̪1��;�H�/�|t��\�<��=��� �����()N�k���+�&��1[a�UP`�V�9˶��*OC+۶�P����F$��B�.3�OiO����W��o6�Je\Ig���z'.� #��\trnZ�MC@,Q]�\}a��(c��ݣB����V�K�a�-j,��%bf3��oux�r?�n�\��7���t��A�� +���x�\ j@1��w���J��Fͥ���yu�n���:�C�CvI��r�Q̫�??р7�b ���5]U�#m:�ʖFQ�G� f�Z���I��_����c���T���/TD탿/Jc��/�sD�r�y��R[��<��\�GΆ�&����f��H�ޗ��Y� +�N@C��c�?!��XK;J�h�%�j����k3�q5��8}q� rQ���]���н^�U-V�{6'�MÚ�ʌi=���7�c��K��4TiǮ]5�z��;�,��:��V�4�H=�X/Rmҗ�D>�5^㊣n*`b��n�ĈB�����g���`��qʉ5���u�=:�o��DX�N�{�3Oc ���S?���;��xs_��mn�XU��z2��نi`�%0B���)EV�C-�<�DR�@q��G�B����ąf�7y�J%$/_��U�Xѓ�������C��=�8��!LV V�}�=g���;^���n1�J�I�3=��;�Q���Y�,����@� ��Xc�5d�KuhF�B��a�3D��=?�h���y����ĵN���r��� p�����&̠|���n��m&�pq�U��@.Ԕ���:���[,�� *1�'R�,w8��i���W��a�N������"= +���w��N=~�0������]@�����.�����.M����)�P)q e"0�E��NA�` +��k�Ds�J�Bde��<$t={V%�WZ]� +�,��P�6MQY��ƪ�ޑ�2�Ǣ��X�E;Iv�!��wI�v�����5�&ӡZ��_c��g��G�8�|�����{ĺϹ��uybSS6��]V*J�V%�s,�p��lx�������{RX���<��st\�ek�Ks�jD,md��cP�]1�� �aRf�钓,�Q�� ށ�jp��(bRn��~f��bnS�x��eۼ���1��=:0�%����<�%�bB�k)��'���A��'p3�r���f�&^�8�������l�-G���.���gǠ0� +�I[>VQ6�-vN�SHр��5w��/v{�Ex�8o��d�+<�N�Sʆbm��Nj���#�o�E�s?qaW���Z���z�Q�Ye� �Y���yp���Ȳ����{�<-J��+��P�����9�6T�S�L(��g] *� ��k5�b���_}_�lc���U](<�>�*xyKr�u��6��"c������T�>/� U@�ϛ��|��Yj�],�e��bmԩYV�*��Ͳ���*n��y��V�E�h�b�N��$4�x�����ߤÂ�X��>:=A��)5��o [z�j�� ��x��Rr�,w���wە�͉���t{�$r��ۂ�^��E�����Ds��FX������0���9��)d|͠���8c��Wc4�'�~���e�X�����J��'�-ѣ]3K�^��l�k��ᕿ���'�6$hhN�NW����E�u�E*Sd���C*�/�>[[�t03Dz����Zb� ҫ[r G?9uT�~P═�v����6��iD��S�x�k��7,3��:���tNJ( 08<s��ğ��ޣz���N �s�Ks]���/e�!�)�1)�h��),����� �c�v4�-��;k�~��#����I���ں�4�wz'j�+|&�+�F��ӎ�����M�t��9�Z�c��p��td6xl|T�����ooζ�_�r��2�%.��ƛ����c�*��o~>�^��KW����!�@+�W�=�MjQ��!��n9}m.'}�K Y>�Š;�/� r�su��L����|�ƍ�PtPOσ�O|�H9������G�يI[�KC��>���Ϣ{u�����#\�r�V��{ix��`|D��/���'����mM��x�+���{,�q+��桌�\�_�&o\ߪ-1{��Tu��CT^~J"A�PO5w\6���h�7��Z\�^^C�ڭз��+V�2K���x�yl�� ��y�t+�&�-Q I�W��[��:��ߴ"���ҋ/�+��_k"`�7��2����K�;V�8kD�A����b�)��^�˦.�]A���g]&6>�r�8v�UT*<1���������D,�e �+��Or,LZqNɆfB9��\�@'���M�Œ�����b�2gG +�F�,JɎ�),6��}nd[z�K�i��I䭭���,,<bP��/M�φ��/*�[��w����.�����Sn�+���2�}���u�n����7�|��GQ{S��o�����\�X�b�ު(?�ּ�҃Tq�/ +w�P$���i�'ͷ��o�t��PtϮ�/�S�,�97���[����B�A�bo�y�Z��6�<�|��JD ?�� ӄU������{4�V�ژg%}m +^��2>1F�g�wǖ"�G͊ox������+�0�.��/k����LK������w3P���5Sq���(��X7WL��ߚ��5P)�Ug$m�P�\�գ�4�}A_�*��|�-��^<��]t�L�vkS�`�y�����S��}.�&.7H�����f�癁�K�k�����{��S�}wv.��8(m���P�dlax�7N���H@o��5��rq������E�2=fgx��Nk�C�M'����O�g3#�S�EgZ��G�e#�IgZK�� �i��N�j��^� �Mg���.�u.x��]��E����W�/�cu*��ϙg� +�4�1�rp�UY"������~�ѿ� �]��{����4���Q+E� +�1 +���L*���*��%��wf��&�ɘb�8)� c��6l�"� ����lW��;t���������m���D��O�+UJxC��n��~�l� Y�IQ-�k3:C�o�Rղ����E���%��0-W�˧`�*j���f�?z�uR*B1�ŖFǢ���h_�(Ӻ�ڃ.@�H�.�ESā�!�gIu��ORpp�W�#����-k1���-Ԕ�t�8���ΐ�x�'���������A���OX��\��f.vH>.�W���_@�_��endstream endobj 2110 0 obj << /Type /Font @@ -22902,14 +22902,14 @@ endobj /FirstChar 2 /LastChar 149 /Widths 5378 0 R -/BaseFont /IKNFGA+NimbusSanL-Regu +/BaseFont /DABSEE+NimbusSanL-Regu /FontDescriptor 2108 0 R >> endobj 2108 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /IKNFGA+NimbusSanL-Regu +/FontName /DABSEE+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 @@ -22929,7 +22929,7 @@ endobj /Filter /FlateDecode >> stream -xڬ�S�em�%��m۶m�v�mgV�Ҷ���m۶������>��}�{V��&�Ę�ܱ#9��*��������������H�����E� G�bn�F�W�CN.�ln�j��3v5�!�47#37%ba!b���!'up�r���r%�RWѤ����O�?&D&^�S�����@D��������������Q�ܜ��ʜ���ΜHTQI[ZA��JRA�H�`�llG��fbgmJ$gmjp1�&�pp&����������\�b ��8��Z�u3�45w�GEG�h�lo������څ�������D��S;7��+�p�7!Gg���u��\\]L��]��FU���<]��]���b�WM�`������ퟒ������u5����{���Ĝ��������o�`�������b ���舜�-�����]\������;�Y'��V�������Z���]]��,`�Y��4u������ϠH,����Cn���?u����6�ꟙ�����������Q���oH"��;���H�o������z����_9��.�����_�%�������,��ƁH��cg���27�����?8�WCM��H��G���o3�� ab`������������������N�+W��;�Y��2�o3�虙���N�����O���Ce0����%��������Di��N��J�/��j^����;����?""�D>�o =+'�߀\��~��h��0��Y����ړH�o�L���?��<��q����?���j0�;^�K�������/��������nn�in +xڬ�S�em�%��m۶m�v�mgV�Ҷ���m۶������>��}�{V��&�Ę�ܱ#9��*��������������H�����E� G�bn�F�W�CN.�ln�j��3v5�!�47#37%ba!b���!'up�r���r%�RWѤ����O�?&D&^�S�����@D��������������Q�ܜ��ʜ���ΜHTQI[ZA��JRA�H�`�llG��fbgmJ$gmjp1�&�pp&����������\�b ��8��Z�u3�45w�GEG�h�lo������څ�������D��S;7��+�p�7!Gg���u��\\]L��]��FU���<]��]���b�WM�`������ퟒ������u5����{���Ĝ��������o�`�������b ���舜�-�����]\������;�Y'��V�������Z���]]��,`�Y��4u������ϠH,����Cn���?u����6�ꟙ�����������Q���oH"��;���H�o������z����_9��.�����_�%�������,��ƁH��cg���27�����?8�WCM��H��G���o3�� ab`������������������N�+W��;�Y��2�o3�虙���N�����O���Ce0����%���ŕ�e�i��N��J�/��j^����;����?""�D>�o =+'�߀\��~��h��0��Y����ړH�o�L���?��<��q����?���j0�;^�K�������/��������nn�in ���`�j�3+õ3odJLw��t$̱�I��0���W���=�*���0���?^����dh���0�(������R�"oStq�3��g\j���.���p0i�O)��~A��t�:CݾR�����8"���7&�w#5��]\R$���P������?¥�M�&�u��� t���Q��h�ý��C���c�ON�Cm/��dY���J���K�w�j?��¸[���N�����t#w��k��x��%�͂l$y��p��������G�[�U�.k�h�8"g��r�Fmwt!��[��2�*ω$��,i��w����]ʙ��;�ga)1\�F����p7ߋ Nˍ����(LJ��\*{u��ĸ��%VxB�0�h����|bl.S�n�[T{M�-�@��]�'��N��$�A��a��=��}1x��@�Yu�}�6�A3�Xdx�H�YY@f'l�U<��EQ�����Z�S�FWW��9:��0��ğ�k�����`�?��[$ p��ԝ�}A��F�������~���k�u"T��u�&����Y�3) ���AYe9q9 m�,z8%�H����zS�J�OM�[�X I��k�#}� w��Bၩѿ����ފ �Ҵ�'�B�As�.�$ݟ7�y�c#��[��K����`��]�7�� x�:�l���x�¹�w5���FX�=RS�}���}��#��#��T�������2=��OջC2]z��"BGWP1z� �PCa���F3J��z}�_}I����I�,FI��6h10�q1��v����B��0��o���h�Ul/��pjg��i������`p�P�t��7*N�8h����3.��YA��x�FAM���K&��7�#�#�O������C͔���=2�,��� 㶢���Q�Ί�l�W�>��vm3rC����Q��e�ۨ�EN �����̢���,{+u�h�TW[�:�]f���\���,t��|x"����DL�cP=�ʩ{�_2� ��ch p��[Y�?�r\j���9�a��y �D�p�F���Q���if=����̰��7�m�S���0\r�%�^ަmS֑��!��gV7��v�=��v��%�Ā�#X������2��<��օ�F� ��^�M�r:,�^����["w�����Jb]���*��m�@ՄQn|�gbxK�m�U{���-�YlƖ�,�d�㫃������ˉ[�$1\��8��z#�$�J��K��T�-r�Yg2[w�Xᙔ֩e]�.���E"7������ U��S!�9 ���T��4}���~O@�}��$���F��6�^��I������=�$=^Z�(ą�"�)d�p��'��MȾ!�oD���+c����ߣ����qo��.�e$[,��.7�3����������B�aé�2R9d��n�ەY���fU�@}r����h:1Z-�s��T�l�:��j�9�{���k�En��01�77$�HWU��P��1�:��5q�r��ж�v�*�u�'-y�QYx�6=�%�F�5� @@ -22986,7 +22986,7 @@ ep �AÜ? �k|j;*��-�e�&k*.��Wt��F7[[������6y�M�J��k�d{��;������S{�؍s���=��ǻ�|���5��*�P���S�t��-~�O��55��ۃ])��z8��ꬲk�zo' ]�(�>/p<v�S'��Ē)��_0?��ԕ,H6�"�.a�ڍS�B>~��D�20J�m�7L��O:>Y6�N��E�$���kX1I�ң���s��X�wP�&AS4-��[���NcD�d�s����J3l]lf�/�<щ�\FZ)G>��x�<7$/�~��ٔ�d*�,\����i �1�k�#�x(�>�R��K��J�6 Me�ٔ�Һ�9]�kS��]<�I�����`Tp$��ojO<��eq[Q����io�+�ڪ^M*�����ʴ8-�i[5�|���Ҥ*~/5[�V����Y�Htq�\G��{����#�s!�+��YKu��8�z��-Q�݅�3T������8cw����i��ft�qݴXb�Of���֥�{̅��Bm��E2/L�Orqj��L����c� �l�UC�y���<4^o����������}2�Adf ��>�5d��*�Δ�odu��Ц�('��Zy�'{��wew�8���2�K$��6�:��o,Oѯ���Ϳ\�Y��'��)6�m�X|�A!�n�Iѧ�_(��|�摸n���!����[��D�g��Ҹ��r��F���)s��?��r>w��>T�l��)|��W뿚R�]��8������%>��� �ȟ���xF�+щ��{l~��VgP#�i�-���?祔��ҧ�҄D-��j�������F�_exP8%��z���{ڇ"+ ��X��ƅ�#Y������g��<]�G�=�I����O�u*z�WҿUI;hM�8qR1���T���R�O�A���|��Ͼ��Z��ɝ���]��XyO��h�|�=��hI���P?p�Z�l}DZ �.ƨ�_�{t�W���o&�B^�����5[��S{MB�R$q�`{[8��oKa`Y��h���>��a����~����j�&"��t����*4��1s��z,̹Exj�Q�ψ�.�'�v:,��Z]�u�C�b��뻃j�]�6��V+�G�r�ug��D^#g��?��#�V~�tK����W�f��B(xϷ$Z#[L>{Ң%�CF�P���8v�"^��5���� �.(�Eߴ�{z^�DV��\�ے@E��4]`hH�Q���{����4n ����K4��O̓@ -�2���O�A-H [��A�^'�(������+�頹W_9�?���6 ��G�!��4��ٱ8/���~a���@����f���i'*�兩4�o���F�{����~Q�:�axb�E�6����+��'���g,��+���nΨ�_�3ʛ�?tH��endstream +�2���O�A-H [��A�^'�(������+�頹W_9�?���6 ��G�!��4��ٱ8/���~a���@����f���i'*�兩4�o���F�{����~Q�:�axb�E�6����+��'���g,��+���nΨ�_�3ʛ�?[|��endstream endobj 1709 0 obj << /Type /Font @@ -22995,14 +22995,14 @@ endobj /FirstChar 34 /LastChar 126 /Widths 5379 0 R -/BaseFont /QYAPHC+NimbusMonL-Regu +/BaseFont /EQYOJA+NimbusMonL-Regu /FontDescriptor 1707 0 R >> endobj 1707 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /QYAPHC+NimbusMonL-Regu +/FontName /EQYOJA+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 @@ -23023,7 +23023,7 @@ endobj >> stream xڬ�UT�Ͳ%��K�pwwwww�����E�N���P��K����ݧO�so�t���Ɨ13fD䌌1��XI�^���(�`�J����P��3qsQq�Sp���WZ�I���b�p���@cW+{1cW @h�XX�����p��QG/g+KW����&5--�Z��0��䯧���=���;����h������Q�Z�V�@�������$�JRA �:�-B����� ge -�wR����^�L�ͬ�)ͅ�/�����4����4:����vV..�V.�gc{g�����7�u3�'��vs�%����w��_�/����������+�oT%1���ji��Ol��0����N3S�J����/�jle�pz���0�rq�5���/���տ�ps��������@cg3[���_������� �ߪ7vt�����ÿv���\]���p�,c����mae��O�Hۛ;����m7ss��������g��&al�`o�0��1*8�� ���S��O����[�o���M�����v��_����p��U0������3������w�����[cg�?�����jlge��r���5����r�W��!��-�*D�����o�����'�L����`nl����eW�7:�Z�����������_05K+S��`�7�7��5���_0*k�Ɉ������6+�� +�wR����^�L�ͬ�)ͅ�/�����4����4:����vV..�V.�gc{g�����7�u3�'��vs�%����w��_�/����������+�oT%1���ji��Ol��0����N3S�J����/�jle�pz���0�rq�5���/���տ�ps��������@cg3[���_������� �ߪ7vt�����ÿv���\]���p�,c����mae��O�Hۛ;����m7ss��������g��&al�`o�0��1*8�� ���S��O����[�o���M�����v��_����p��U0������3������w�����[cg�?�����jlge��r���5����r�W��!��-�*D�����o�����'�L����`nl����eW�7:�Z�����������_05K+S��`�7�7��5���_0j�k��J�����6+�� W5/G �FҔw0�_��DD<>����zN�����u�fa��� �/"��\��:[yt���������+��B#no�`�O��ۛ�m��e�6usv���������c��K�zM��WLyC�3s�\� F��t���G�+��J�kz2#w���ׅ14��|vx-�9~����}���M^���R��nStq�3T f�k��\/�����`�8ܝRV1(�"��bu��~�$u/� ���o�ј�������"��������p�-d�m~,9�;"EL�S>����w�xty���3��#� �Yl��/� T��;Ŀ��J�xe��)�>�ذ�� W�5�>Ώ:R��W|�D�5<����Gh��v��ש~����$ݓ�\�1u�bY��y�;Ec����+2y(��o>�{��>�i�z?]_����ڤ H(�xў�D��eZA��Ĥ�v�1��Ya"dV�~��8��D8�T)ѱi^��#������k�E4������Q�T~ ���\s�Ka�G�o��&�yѰ�xDL`du�A��-W r��Ц$y��ʑ/I�Q�.N���7^Z\Nν���Г<W��ʰ)�N�G�K���pY>��H*vNF8�q�=�0ܷg�o�q/hӸ��D�l^���r�����I&(�r��2yx�o����������.?�W�zS��.���jR�%�z�H�,Q�.|����Pc�o2�Y"I�4H��o��xdsh���vF�]�۟i�um�Q""F���1�������f���i �l�{ %���ngs��w���WS�%�7$�?-����YM���!$���ěz{�ݍ�����|�v�.5�&� �b���9��gӣ.82�Rm��\#�W����Y ����}R�"T� @@ -23079,7 +23079,7 @@ P �w�Ya��� ���E�9�*��W�� ��&�����WTcc����@��X��D�),� �g���:��c�=_@/1h�&_��������d���ij�A 8�ľWfC��ș�&塓�8�J|����HKF�E�}J���z���oc��� c�,ܣ�-���s���pFeC�����*<�S*O�\�g�/0��%Jw�K١�� �k�%w��=>Ic����&�Mu{ͯ���#�4口*��"�pЇ�n�9y -��h֥n��9x�+����بq�MӮC�,�AV��Z�%�]�V�4_�"����L��z^1��D��H(r�J��(ۦ�D�9��Oe;m�I�ֹ�"�n����^�T�.t����R;9��������nx$Sˋz7(S����,ҭ)� ��������B�K'������X"�+}3��DJ�;A�z�������-�l��E�V�������n�%����'"(Z��tUzCjH�����;&�U������bJ{mj��r�����������27S��$����Ɔ�S�/���P�]u_Y����~/�V�,��� �X ʾvy�^����Nff�%���j�����HzD��)1 ��bk;յ��!ïGފ��e�s��/v��X��*lCWN���Hϼj�K��-��i$�&?������ΨC���0~�]$�T0 �.mn�WG�K����> m��X/*o�b��3f">�.Y�A����_ܬ�����SB������M�4Nړ��S=���uK"Q`�sRse����i�g�lb7�+��W��ys��76tW~ �}�W_�,�8��!V����8FL�_t+foǜ�����v�ɌŸ.itxۆ��7W�u��N�%��ϱs�z@k���5F��!��D��n�褩��UE�����~�GJ��b���;���ui'��ʓ�ϣ��ڵ'�7�#�.�RǸU����7�!0����ų��KG� �B���S*b��b9��Ѫ��}\u��$� �W�����a����?\�]���|%!�Z<��:"endstream +��h֥n��9x�+����بq�MӮC�,�AV��Z�%�]�V�4_�"����L��z^1��D��H(r�J��(ۦ�D�9��Oe;m�I�ֹ�"�n����^�T�.t����R;9��������nx$Sˋz7(S����,ҭ)� ��������B�K'������X"�+}3��DJ�;A�z�������-�l��E�V�������n�%����'"(Z��tUzCjH�����;&�U������bJ{mj��r�����������27S��$����Ɔ�S�/���P�]u_Y����~/�V�,��� �X ʾvy�^����Nff�%���j�����HzD��)1 ��bk;յ��!ïGފ��e�s��/v��X��*lCWN���Hϼj�K��-��i$�&?������ΨC���0~�]$�T0 �.mn�WG�K����> m��X/*o�b��3f">�.Y�A����_ܬ�����SB������M�4Nړ��S=���uK"Q`�sRse����i�g�lb7�+��W��ys��76tW~ �}�W_�,�8��!V����8FL�_t+foǜ�����v�ɌŸ.itxۆ��7W�u��N�%��ϱs�z@k���5F��!��D��n�褩��UE�����~�GJ��b���;���ui'��ʓ�ϣ��ڵ'�7�#�.�RǸU����7�!0����ų��KG� �B���S*b��b9��Ѫ��}\u��$� �W�����a����?\�]���|%!�Z<���!endstream endobj 1358 0 obj << /Type /Font @@ -23088,14 +23088,14 @@ endobj /FirstChar 2 /LastChar 122 /Widths 5380 0 R -/BaseFont /QWTJBB+NimbusRomNo9L-ReguItal +/BaseFont /WEWCKH+NimbusRomNo9L-ReguItal /FontDescriptor 1356 0 R >> endobj 1356 0 obj << /Ascent 669 /CapHeight 669 /Descent -193 -/FontName /QWTJBB+NimbusRomNo9L-ReguItal +/FontName /WEWCKH+NimbusRomNo9L-ReguItal /ItalicAngle -15.5 /StemV 78 /XHeight 441 @@ -23115,7 +23115,7 @@ endobj /Filter /FlateDecode >> stream -x��vc�e�fڶ�m۶m۪�mTfUڶ3+m۶QiO}����q���t���q"���g�]{�)�� �:��;ػ�1�3r���\����d���L���l0dd"�fF�V��F�f�� 3S��� ������Cqp�r���tP�)kP����S� ����5<]�,����l���]�@�_;���\-���V�f�E-)y ����@��������flke��21�w1��;8l�q��8؛Z����,!������ꏛ�����_*Z�������˟g��������O \�V�&�n��#7w�������?�?`�.�.&�V���?QE����������.V���?��&n����������������X�f�S+G[#�?���9:[�M������h�fFΦ�f..`�`�U�� �O�9:�z�����p�ru1�5��ab����Ol+{��fE������������͜�.�_3C������������A���OH���]�����?����������������������n���Fv�;�g�����,�E�f����Y�z�����Z��l�lM�U'�j��$B���H��������������%����O����ٛ�9�Zٛ����%�112��N���������Cefo������o��r�ڊ�4��r��P����z9���o��9����/aaO�7;'��������C�������7�?�rF��V���?y32������y��1{ӿ�F�����Ϥ���/������}��d���g�����fu���'�:�g�k-f�Є�N_�P�cI�ja~@�C�z�W��{M(}��g����ǁ4��H�-Ew��U�/ Uo>�&y�a�~ |ƹF�����6�6;����~�;�T�3��U��{~��#�����x�N�F �ڂ�s�䓧G������[��\��xh2w0x����l\m� +x��vc�e�fڶ�m۶m۪�mTfUڶ3+m۶QiO}����q���t���q"���g�]{�)�� �:��;ػ�1�3r���\����d���L���l0dd"�fF�V��F�f�� 3S��� ������Cqp�r���tP�)kP����S� ����5<]�,����l���]�@�_;���\-���V�f�E-)y ����@��������flke��21�w1��;8l�q��8؛Z����,!������ꏛ�����_*Z�������˟g��������O \�V�&�n��#7w�������?�?`�.�.&�V���?QE����������.V���?��&n����������������X�f�S+G[#�?���9:[�M������h�fFΦ�f..`�`�U�� �O�9:�z�����p�ru1�5��ab����Ol+{��fE������������͜�.�_3C������������A���OH���]�����?����������������������n���Fv�;�g�����,�E�f����Y�z�����Z��l�lM�U'�j��$B���H��������������%����O����ٛ�9�Zٛ����%�112��N���������Cefo������o��2"�4��r��P����z9���o��9����/aaO�7;'��������C�������7�?�rF��V���?y32������y��1{ӿ�F�����Ϥ���/������}��d���g�����fu���'�:�g�k-f�Є�N_�P�cI�ja~@�C�z�W��{M(}��g����ǁ4��H�-Ew��U�/ Uo>�&y�a�~ |ƹF�����6�6;����~�;�T�3��U��{~��#�����x�N�F �ڂ�s�䓧G������[��\��xh2w0x����l\m� �8�p�*Tb�3��3w�yt�ݎ4�����S0 �x�鰰a�r�ñF>��������qo���(�"���?����>�!Mm�, T�<�[X�KdQ&�aAY�Sc�W�ߌaR2e��������f1��e���wI��RE'��/Pd���*L���2���$q�\����әE�٦3�Z�eo����N����*��'ѭ����iF8�ߗ �dPZ\��j�դ��t�+:2�P $i�C��{��W6�HlJpT��&��0\vOj]�r�kcWfrr�>%� Tq3���ws%Z�Wɥ�����٢>y��!M�I23qU3l�ҁ~#�*�<Ф���X�f"���~iY�עJ �(�}�%N7͞���Qt]�n��擇_8�o��+���Ԣ*(�ؓO��_$ a�^�-(I��o����ԉ�E�Hf6�9`r �*Y}Q'>T���"}�Ҥ�}^�i���"Eem 8k��qF��;�>:EDl���@+M��>�;1��Y#%��H@>*p�dE�� y�����������U��=p��q}c!�:2w{H:�����-���i}��� �#��Z}��NRU���0�$&їd~` �U%���^O,ȑ��������Tb]u�uÝ=$��KV}T�1�3�=@/3���T*Q����r.ْ�R�g+�F!��}�~L�۫+'qJP��H&���6�)d��O�X�vUaO�*��OJ���Q��E:F;��S��f����ᔠ-��ꆒ��C�|YĢ���(��=g-��[T�ɮ�MEa @@ -23172,7 +23172,7 @@ b8 uC1����Oo��!c����iGnf.�ނ�X���������|n�L�R�����F���ek�{��7P'͚!h�� I�^��}I�ܕyu���i������ӣ�4|��������6��S��dJ�m��o�Q����n�;��99/����0g���d�7s��8�j/-%ύ��2`0��"��f�Pik&m�����Q>U�]�^T��B���E[�5iP;F����H��W5ռg0զ(���w�ߧM�����3Y #�Ʈ �M�ц<��N�,�W���h!��3_c_&�`�:�&�B��hM�X[��ẕ����Tg���o�\��5�͜9����s3��SY�nW༾bڅ�.?���-m���iBȿ��\kv8]NdS��x�Z'��zT�8��g�[pط�b������P)���}�:�:4s矕� -�V�܄d#�h͐�0�}�0�急@����W��`�)�&h�z=�5em���۰cXv��I����P`cc�z�(�3�70��� �[3#gW;#g����'endstream +�V�܄d#�h͐�0�}�0�急@����W��`�)�&h�z=�5em���۰cXv��I����P`cc�z�(�3�70��� �[3#gW;#g��;��endstream endobj 1266 0 obj << /Type /Font @@ -23181,14 +23181,14 @@ endobj /FirstChar 2 /LastChar 125 /Widths 5381 0 R -/BaseFont /PMTZPX+NimbusRomNo9L-Medi +/BaseFont /BBHKCD+NimbusRomNo9L-Medi /FontDescriptor 1264 0 R >> endobj 1264 0 obj << /Ascent 690 /CapHeight 690 /Descent -209 -/FontName /PMTZPX+NimbusRomNo9L-Medi +/FontName /BBHKCD+NimbusRomNo9L-Medi /ItalicAngle 0 /StemV 140 /XHeight 461 @@ -23210,7 +23210,7 @@ endobj stream xڬ�ctf]�&��b۸c۶m���b۶�m���Q����zO�����}~�1���&���؛�XI�^����\��H����P��7qsUq�Wp䖣W1�t���Ò�����Č��<�Ms3���)������ Kut�r�����U4�ii��S� ���?4=]�-�_�������!��U��@+s����9@TQI[ZA@%���4w0w1�(���Y��M�\ͩ�.�����f������K�`pu27���f�ij���d�bo����`� �t1v����`�`j�f�O���J�����_�_0%GW������7���Ŀ�Z���j�W p��ki�h��OI������[;����b��̬]�쌽�����b��4�\�,�3:�����������_����t�?��/�;9�y����_V�3k����,3�ߘ����-�`��iG�3ӿ�fnN��s7w�W�����I�9:�y��-`�C���Xf��#�������[��#��r��\�����_�%��������w��1v���3�9�?�������clom�����֚��N���& 4��a˿�010�[h�*a�in�d 4�X���ٿ��f�.v����W[��LL�E�femj�� ��V�;��� -������5U��uh�7�_�J����7��Q�����<�#"�� �g��гp1���fa��� �/ ��<�]�=��fb�W����ϓ��w0u4�gtT��f�� +������%t�h�7�_�J����7��Q�����<�#"�� �g��гp1���fa��� �/ ��<�]�=��fb�W����ϓ��w0u4�gtT��f�� �Q�����%�_�o��q��ܛ�{��®�8���ddg��G��t�����:�7���9��gD�rW�ׇ2���|vx-�9}����c�Q���_�'�(B٢��=b4(G�<�^����`�8ܛVV1({�$��bu��~� u/ @'{rB�3Mo���FnAm(>;�H>y~��黅8��͋�!�uG��p���Q���à:LN��;2��s(�Jf��ڼ8L������D�y�$kg�P�q��Xi�G�I� =X�Ը6�����O���,P7�."�?]up5�a2u���}�̍.؈�/�u�x��Ӿ�7��G��< ��G7KR*� ��J�+J�k �{���ש!y���h}�Wu���r�pI� @@ -23286,7 +23286,7 @@ Y K�rt�zU�?��M����s�k����,Sp �*���Mf�Ol.�� ��I�:���x�$���:����*����E5��B�+�ctCg�&]����� $ת�s��% ޛ���c{�Q�,�jc����3'�E� מ�U_d�2hi����z�c�}:6�L�-Z�XC$�~���?iD�ȣ���P���¥�� ����᳂��x��H�8i�����Oy�@e�}�%U��,$�䱚'�;�NK����}�驑�Bs�j�Wgzi/�pq�Q �]�NN��L\w,�`[qs��k쥫B6�BF�P`2�<������`.�zߴ �������6ԅԲ+�OQׅCd3�F��Nf�0C�Q�>��6�8Qρ%5���,�Ϗ��b?YVNR�u/�sfY'�}*P����?�=d�I���0;Ջ��K�D\ZXL"<^�J^s Jיw!!7%�]�zk����EV&�W�������<N��9e��@�fPt��L֛�yC4�5��6/��?X�R�WT�ٝ�!^8�0n��9���bf�-��Wkx���gbW��3Yu���x� Ζ/j���H��Fe�G������G������������{�,����mYݰ���߷͈��:��Y.CD��9r��m�L�+�>R5��ʧ���Z�q�+�~��������@g���_]�"GqA�/���?4�n}�k�'��|�oH�Gs��F�������GƇC)Qa4ߏ����<,��],�eu��:�_�t�(���^u�ʯ$WM�ʒ�М���,�(D5U P����g���4�l�5�L��7��t�0��[��(����t'��5��G�k�!NB��Z��L��i�] >�~ݏ'�[ ���X��Kv�4�&��(���h��}����B�=��8H8f�����A��o���4/�:�`_���@s�x��o6WAc�۫����~����7i�, ����3��>_�q�.%�DG�cH���lczѶjVP_1�y��aj��Pl��2�$�#H��Epo)�(�8[����,�g�2Q��6�>�Gt="t32*7�x2�n�:V�F��f��+ds���.���?&�V>"�Ա(�^�4��`'va�*�[\���=���˞�@w��,Lآ�A���v�V>��f�g2,q� jj-��diƜϿL���$8��`&���y�� �6ן���=f1b��u>�O��O-��`��RJ�������B�=/G��ʲ+.^�hs�ă����Z-/��np�4�� �����e�65������C� Y��a��!����ԌG�� �� -"��i�v������1�Oǩ&��D��Rw��X�ϸ;�����\%�e�A����T�<�ETe-�zq:L ��v^@��sl����>�wx7Au�"�lfҨ�S��/ [��Hi]������X���Pt'�}u �C��ߒ�xN�<��&-�B�*81Me܂����k�Q����i�$���R���e����M9�RBL���ݰ��P��"������X������5����H5D�Tlň����4�SN;R�r��sa9�()~18^��k�'����>Ǖ������Y��.�N���L���þc����H%����{�[<��P<���t�����ך�{3��B�/�_�st���n*����6>�h��笚i(���8J�5��S|�G$�:�!�D��=i8���$d+3�#F#�U[�FS��T��-]�3\2�C���5P�d�J����hj��#1�h)ppK �|/��/]�L��<[����s���˭�F�R�>�ƩK�I����k`����d�M�<"�m�F���p��5S��X�q�Њ(��+��<�c�����}�RH�,��M�ϷF�'��P�6Lp�-X�6��w��V�qk�u;�M�Џ�<�^����ҚHb>��,�E�%]�n�8ʻb!��A�z������+� �P�`k)�ח��@L8fn������t~��F;���k3���;ru�ݛ����2\���O���&�t|"��h�~�Lխ���>`��72I�[P���w��1$��^�BG��!��� ���O,��\ݝ�\����`�endstream +"��i�v������1�Oǩ&��D��Rw��X�ϸ;�����\%�e�A����T�<�ETe-�zq:L ��v^@��sl����>�wx7Au�"�lfҨ�S��/ [��Hi]������X���Pt'�}u �C��ߒ�xN�<��&-�B�*81Me܂����k�Q����i�$���R���e����M9�RBL���ݰ��P��"������X������5����H5D�Tlň����4�SN;R�r��sa9�()~18^��k�'����>Ǖ������Y��.�N���L���þc����H%����{�[<��P<���t�����ך�{3��B�/�_�st���n*����6>�h��笚i(���8J�5��S|�G$�:�!�D��=i8���$d+3�#F#�U[�FS��T��-]�3\2�C���5P�d�J����hj��#1�h)ppK �|/��/]�L��<[����s���˭�F�R�>�ƩK�I����k`����d�M�<"�m�F���p��5S��X�q�Њ(��+��<�c�����}�RH�,��M�ϷF�'��P�6Lp�-X�6��w��V�qk�u;�M�Џ�<�^����ҚHb>��,�E�%]�n�8ʻb!��A�z������+� �P�`k)�ח��@L8fn������t~��F;���k3���;ru�ݛ����2\���O���&�t|"��h�~�Lխ���>`��72I�[P���w��1$��^�BG��!��� ���O,��\ݝ�\������endstream endobj 1258 0 obj << /Type /Font @@ -23295,14 +23295,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 5382 0 R -/BaseFont /IWSDMZ+NimbusRomNo9L-Regu +/BaseFont /QOGNZD+NimbusRomNo9L-Regu /FontDescriptor 1256 0 R >> endobj 1256 0 obj << /Ascent 678 /CapHeight 651 /Descent -216 -/FontName /IWSDMZ+NimbusRomNo9L-Regu +/FontName /QOGNZD+NimbusRomNo9L-Regu /ItalicAngle 0 /StemV 85 /XHeight 450 @@ -23325,8 +23325,8 @@ stream x��teP�ݖ.��N������и���!�w�`�=8 ������9S�ί��u�vUW�K������7 ������P�������]� ��pw�2wPf�t[ޝ<H44R.@s7�����P��H-���$�������� @��������O�_)�����t�8�h�?<�`G'{���;���p��A` @JM�@AU@/���:�]���uw0���:��֎.��?������\Y߱$\��W'�%������W��t����@��s���9@�`w������&�����a�{Swtus�t9�ޫ�K��������_�]A�a���{�����_-�{�y����\n@/��jY�V W'���{�w0'��4�]A6�d�pژ�X�����0��M�}�S��NN`�O;���@n�@�5+�{MK���6 $��E���������ӿ�<�.����ax'an����X���T��K��{*����� �����+�����W���%������u�U�������q(�zc��\s{������D=�?�W n��c�p�y�����N��,�h�r��X���g��_�� -�9�ߵ�{����iۂ,��:���!��տ2��o�lj�z -R�L�������������;��C���?��0$%���,|\�.v��������/�� ��O[�������4;�߭��������8X:Z��'Zn�V�����..��}��[�w��%���Hˋ��B�ӳ2�j��ƥ?��r@�9�6hU;��G��4{� cm�|k�^8rz�Qd������Ͼ��S1�`��v�1톰���f�E���+o�������4)y�#���rA8�g��(¡�sB�L�����h���-<:�M:����1<4�s ۷C̔�H#��J�%�9�X�P��7Ƣ�#i�:�7�O��k}��i�`���Pa��{\lv �6Y=��Z��6���R�h_!�~NK�Π�$ٹ�����WP<�Z��/ '�m��Pd۪�N?���*��΅�5�b�T��4����4.R��(����j��,FWy��`�8�Tj(�3u8S�Q�]�D�v�Z�V?q|O�<��5�3I�]�R��@]h]���G��6����f���r�{�-K8:�2Y�Z\�]-^NN΄�cK�������G&�m��hHn�В�f +�9�ߵ�{����iۂ,��:���!��տ2��o�l�ښZ� +L�������������;��C���?��0$%���,|\�.v��������/�� ��O[�������4;�߭��������8X:Z��'Zn�V�����..��}��[�w��%���Hˋ��B�ӳ2�j��ƥ?��r@�9�6hU;��G��4{� cm�|k�^8rz�Qd������Ͼ��S1�`��v�1톰���f�E���+o�������4)y�#���rA8�g��(¡�sB�L�����h���-<:�M:����1<4�s ۷C̔�H#��J�%�9�X�P��7Ƣ�#i�:�7�O��k}��i�`���Pa��{\lv �6Y=��Z��6���R�h_!�~NK�Π�$ٹ�����WP<�Z��/ '�m��Pd۪�N?���*��΅�5�b�T��4����4.R��(����j��,FWy��`�8�Tj(�3u8S�Q�]�D�v�Z�V?q|O�<��5�3I�]�R��@]h]���G��6����f���r�{�-K8:�2Y�Z\�]-^NN΄�cK�������G&�m��hHn�В�f �kW<ǚB�6��~��(p}�#��<��x�F��]��IUb����г"zDC�C����z�o9�7�lP�5�(�lܾ��؞!V�Vq�����yGt�\b ��K��/�F���W�3�S����� e���)O-�:�݄���*g4x)Y�[ˮ��!i�� w?��~��Z���T��#sJs���oѐ�|��w ��Ltl)� qQ��32�]J.C��ʪWI�P��$w>V�Fos��v2�Tb�T� �t�Z�k�ϯ�iK��)��}Pk��R9 {d[ZysC��l�B]�jZ��BW{�,�P�K��YL%�)�Lh�A6ᯝ���}�m�Q|�l�(��*��5���\Y��{VPX��$��;��O,���a�K��u8����k�ƭ���ˇqL�� �9�o�R�|>����a�E���߾��L9�0�3Qs$���؎Ck���@�<��.cיQ���Adѐ���Dd�X����^�(f��������\Ǥ�GƟ��zܻ�I�=Jz~I��w@����Nv��c����iB�T����(ma�϶Vb�v�U ��?�7�P�n�����D5Ěw�ޡ� @@ -23370,7 +23370,7 @@ t ���2V%]��F���iaʯo�48��|�M�p:,e�����Y`v��/;<sP�"�s���|���w�V�N�Rց�9!qؓ���)��8V�'@��k��Dz�� �+=d[!*�R�;%�;���I߷MQs���X����c��?�.n�Ӂ�g-T��7�#O�Ŵ���wX!�۰�)��yA��:���<fL��L��i�����=[)q���;-��+�b&�<;�^����o�=�y`�,om(��C�%H=�+~�n��*/�נ�ǧ5�� ��OW����B7��?|�xb^̖&�9��58 ĥ������k�U`�@d��cxЏN���G_���R�;��+ob�a�p�vDSD%��H�^2�2F�+m��k/��K��|�ƉO�M:e���8�Əس:z,P�T�������y���: =�!8i��r�9*q��fʠc`�Ce:ԥ� �9�LMkF�66��X�~x�{tHx�����BK�ψ8�l�0��8��[�2�ƾ�J�zmO�jUm��6�VuHNj���+�F��r�E��m��t�A�3�u�me�K�?���������E���te���s���d[�Vk]�*I_$��\�t�%%J7��$RB�Ρ�W��"/�I�H�yڈ�m(T����ޒ`��kȣ��Z1���f�a!�4�� y�I�&�3=H��� ���>2���5A�X��x�R��d����~�h͡p�� -�q�/J�y�0��'�1�B�H=g�y�t��=��MH ��V��1wPE����ӝ����JIQ��>b.������������]���]������endstream +�q�/J�y�0��'�1�B�H=g�y�t��=��MH ��V��1wPE����ӝ����JIQ��>b.������������]���]������endstream endobj 1250 0 obj << /Type /Font @@ -23379,14 +23379,14 @@ endobj /FirstChar 2 /LastChar 122 /Widths 5383 0 R -/BaseFont /ORWICT+NimbusSanL-Bold +/BaseFont /LTRSDI+NimbusSanL-Bold /FontDescriptor 1248 0 R >> endobj 1248 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /ORWICT+NimbusSanL-Bold +/FontName /LTRSDI+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 @@ -25829,7 +25829,7 @@ endobj >> endobj 5394 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20091105044451-08'00') +/CreationDate (D:20091118182338-08'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref @@ -25837,1243 +25837,1243 @@ xref 0000000000 65535 f 0000000009 00000 n 0000029229 00000 n -0001179769 00000 n +0001179771 00000 n 0000000048 00000 n 0000000110 00000 n 0000103832 00000 n -0001179684 00000 n +0001179686 00000 n 0000000149 00000 n 0000000184 00000 n 0000417243 00000 n -0001179597 00000 n +0001179599 00000 n 0000000223 00000 n 0000000257 00000 n 0000420361 00000 n -0001179471 00000 n +0001179473 00000 n 0000000297 00000 n 0000000343 00000 n 0000420487 00000 n -0001179397 00000 n +0001179399 00000 n 0000000385 00000 n 0000000430 00000 n 0000420871 00000 n -0001179310 00000 n +0001179312 00000 n 0000000472 00000 n 0000000506 00000 n 0000421188 00000 n -0001179223 00000 n +0001179225 00000 n 0000000548 00000 n 0000000584 00000 n 0000425288 00000 n -0001179136 00000 n +0001179138 00000 n 0000000626 00000 n 0000000657 00000 n 0000430174 00000 n -0001179062 00000 n +0001179064 00000 n 0000000699 00000 n 0000000743 00000 n 0000434637 00000 n -0001178934 00000 n +0001178936 00000 n 0000000783 00000 n 0000000832 00000 n 0000434764 00000 n -0001178821 00000 n +0001178823 00000 n 0000000874 00000 n 0000000910 00000 n 0000435980 00000 n -0001178747 00000 n +0001178749 00000 n 0000000954 00000 n 0000000984 00000 n 0000438236 00000 n -0001178623 00000 n +0001178625 00000 n 0000001028 00000 n 0000001069 00000 n 0000438426 00000 n -0001178549 00000 n +0001178551 00000 n 0000001115 00000 n 0000001148 00000 n 0000439136 00000 n -0001178462 00000 n +0001178464 00000 n 0000001194 00000 n 0000001232 00000 n 0000439586 00000 n -0001178388 00000 n +0001178390 00000 n 0000001278 00000 n 0000001312 00000 n 0000443312 00000 n -0001178301 00000 n +0001178303 00000 n 0000001356 00000 n 0000001392 00000 n 0000443764 00000 n -0001178214 00000 n +0001178216 00000 n 0000001436 00000 n 0000001470 00000 n 0000444606 00000 n -0001178088 00000 n +0001178090 00000 n 0000001514 00000 n 0000001552 00000 n 0000457091 00000 n -0001178014 00000 n +0001178016 00000 n 0000001598 00000 n 0000001636 00000 n 0000457347 00000 n -0001177927 00000 n +0001177929 00000 n 0000001682 00000 n 0000001735 00000 n 0000457538 00000 n -0001177840 00000 n +0001177842 00000 n 0000001781 00000 n 0000001820 00000 n 0000460689 00000 n -0001177753 00000 n +0001177755 00000 n 0000001866 00000 n 0000001914 00000 n 0000460881 00000 n -0001177666 00000 n +0001177668 00000 n 0000001960 00000 n 0000002005 00000 n 0000461073 00000 n -0001177577 00000 n +0001177579 00000 n 0000002051 00000 n 0000002096 00000 n 0000461265 00000 n -0001177486 00000 n +0001177488 00000 n 0000002144 00000 n 0000002190 00000 n 0000461524 00000 n -0001177394 00000 n +0001177396 00000 n 0000002238 00000 n 0000002290 00000 n 0000461717 00000 n -0001177316 00000 n +0001177318 00000 n 0000002338 00000 n 0000002388 00000 n 0000461910 00000 n -0001177225 00000 n +0001177227 00000 n 0000002433 00000 n 0000002487 00000 n 0000465784 00000 n -0001177147 00000 n +0001177149 00000 n 0000002532 00000 n 0000002589 00000 n 0000466369 00000 n -0001177017 00000 n +0001177019 00000 n 0000002632 00000 n 0000002670 00000 n 0000466627 00000 n -0001176938 00000 n +0001176940 00000 n 0000002715 00000 n 0000002753 00000 n 0000472001 00000 n -0001176806 00000 n +0001176808 00000 n 0000002798 00000 n 0000002840 00000 n 0000472194 00000 n -0001176727 00000 n +0001176729 00000 n 0000002888 00000 n 0000002941 00000 n 0000472453 00000 n -0001176595 00000 n +0001176597 00000 n 0000002989 00000 n 0000003023 00000 n 0000473236 00000 n -0001176516 00000 n +0001176518 00000 n 0000003073 00000 n 0000003145 00000 n 0000476494 00000 n -0001176423 00000 n +0001176425 00000 n 0000003195 00000 n 0000003263 00000 n 0000477011 00000 n -0001176330 00000 n +0001176332 00000 n 0000003313 00000 n 0000003363 00000 n 0000478184 00000 n -0001176251 00000 n +0001176253 00000 n 0000003413 00000 n 0000003487 00000 n 0000481759 00000 n -0001176119 00000 n +0001176121 00000 n 0000003535 00000 n 0000003574 00000 n 0000481887 00000 n -0001176040 00000 n +0001176042 00000 n 0000003624 00000 n 0000003679 00000 n 0000482859 00000 n -0001175961 00000 n +0001175963 00000 n 0000003729 00000 n 0000003780 00000 n 0000483768 00000 n -0001175843 00000 n +0001175845 00000 n 0000003828 00000 n 0000003863 00000 n 0000483896 00000 n -0001175764 00000 n +0001175766 00000 n 0000003913 00000 n 0000003967 00000 n 0000486829 00000 n -0001175671 00000 n +0001175673 00000 n 0000004017 00000 n 0000004068 00000 n 0000487349 00000 n -0001175592 00000 n +0001175594 00000 n 0000004118 00000 n 0000004173 00000 n 0000487736 00000 n -0001175499 00000 n +0001175501 00000 n 0000004219 00000 n 0000004259 00000 n 0000491949 00000 n -0001175367 00000 n +0001175369 00000 n 0000004305 00000 n 0000004342 00000 n 0000492271 00000 n -0001175249 00000 n +0001175251 00000 n 0000004391 00000 n 0000004441 00000 n 0000492464 00000 n -0001175170 00000 n +0001175172 00000 n 0000004493 00000 n 0000004548 00000 n 0000497757 00000 n -0001175091 00000 n +0001175093 00000 n 0000004600 00000 n 0000004656 00000 n 0000503933 00000 n -0001175012 00000 n +0001175014 00000 n 0000004705 00000 n 0000004773 00000 n 0000509160 00000 n -0001174933 00000 n +0001174935 00000 n 0000004819 00000 n 0000004854 00000 n 0000510197 00000 n -0001174802 00000 n +0001174804 00000 n 0000004897 00000 n 0000004955 00000 n 0000510390 00000 n -0001174723 00000 n +0001174725 00000 n 0000005001 00000 n 0000005038 00000 n 0000511225 00000 n -0001174630 00000 n +0001174632 00000 n 0000005084 00000 n 0000005127 00000 n 0000514320 00000 n -0001174537 00000 n +0001174539 00000 n 0000005173 00000 n 0000005207 00000 n 0000514963 00000 n -0001174458 00000 n +0001174460 00000 n 0000005253 00000 n 0000005330 00000 n 0000519008 00000 n -0001174366 00000 n +0001174368 00000 n 0000005373 00000 n 0000005452 00000 n 0000520115 00000 n -0001174235 00000 n +0001174237 00000 n 0000005496 00000 n 0000005550 00000 n 0000520436 00000 n -0001174117 00000 n +0001174119 00000 n 0000005597 00000 n 0000005641 00000 n 0000520694 00000 n -0001174038 00000 n +0001174040 00000 n 0000005691 00000 n 0000005730 00000 n 0000523637 00000 n -0001173945 00000 n +0001173947 00000 n 0000005780 00000 n 0000005830 00000 n 0000528173 00000 n -0001173852 00000 n +0001173854 00000 n 0000005880 00000 n 0000005930 00000 n 0000528883 00000 n -0001173773 00000 n +0001173775 00000 n 0000005980 00000 n 0000006022 00000 n 0000529076 00000 n -0001173641 00000 n +0001173643 00000 n 0000006069 00000 n 0000006104 00000 n 0000529269 00000 n -0001173562 00000 n +0001173564 00000 n 0000006154 00000 n 0000006191 00000 n 0000529592 00000 n -0001173483 00000 n +0001173485 00000 n 0000006241 00000 n 0000006309 00000 n 0000534625 00000 n -0001173404 00000 n +0001173406 00000 n 0000006356 00000 n 0000006402 00000 n 0000534947 00000 n -0001173273 00000 n +0001173275 00000 n 0000006446 00000 n 0000006506 00000 n 0000535076 00000 n -0001173194 00000 n +0001173196 00000 n 0000006553 00000 n 0000006592 00000 n 0000537375 00000 n -0001173062 00000 n +0001173064 00000 n 0000006639 00000 n 0000006671 00000 n 0000537893 00000 n -0001172958 00000 n +0001172960 00000 n 0000006721 00000 n 0000006774 00000 n 0000538022 00000 n -0001172879 00000 n +0001172881 00000 n 0000006827 00000 n 0000006889 00000 n 0000538278 00000 n -0001172786 00000 n +0001172788 00000 n 0000006942 00000 n 0000006996 00000 n 0000540712 00000 n -0001172707 00000 n +0001172709 00000 n 0000007049 00000 n 0000007099 00000 n 0000541749 00000 n -0001172614 00000 n +0001172616 00000 n 0000007146 00000 n 0000007177 00000 n 0000546020 00000 n -0001172521 00000 n +0001172523 00000 n 0000007224 00000 n 0000007263 00000 n 0000546409 00000 n -0001172389 00000 n +0001172391 00000 n 0000007310 00000 n 0000007348 00000 n 0000546602 00000 n -0001172324 00000 n +0001172326 00000 n 0000007398 00000 n 0000007452 00000 n 0000547182 00000 n -0001172206 00000 n +0001172208 00000 n 0000007499 00000 n 0000007534 00000 n 0000551472 00000 n -0001172141 00000 n +0001172143 00000 n 0000007584 00000 n 0000007637 00000 n 0000551991 00000 n -0001172024 00000 n +0001172026 00000 n 0000007681 00000 n 0000007731 00000 n 0000552443 00000 n -0001171945 00000 n +0001171947 00000 n 0000007778 00000 n 0000007823 00000 n 0000557623 00000 n -0001171813 00000 n +0001171815 00000 n 0000007870 00000 n 0000007921 00000 n 0000558588 00000 n -0001171734 00000 n +0001171736 00000 n 0000007971 00000 n 0000008034 00000 n 0000561286 00000 n -0001171641 00000 n +0001171643 00000 n 0000008084 00000 n 0000008132 00000 n 0000562196 00000 n -0001171548 00000 n +0001171550 00000 n 0000008182 00000 n 0000008238 00000 n 0000566782 00000 n -0001171469 00000 n +0001171471 00000 n 0000008288 00000 n 0000008340 00000 n 0000567817 00000 n -0001171376 00000 n +0001171378 00000 n 0000008387 00000 n 0000008437 00000 n 0000572345 00000 n -0001171297 00000 n +0001171299 00000 n 0000008484 00000 n 0000008550 00000 n 0000575133 00000 n -0001171164 00000 n +0001171166 00000 n 0000008591 00000 n 0000008644 00000 n 0000575261 00000 n -0001171045 00000 n +0001171047 00000 n 0000008688 00000 n 0000008735 00000 n 0000575452 00000 n -0001170966 00000 n +0001170968 00000 n 0000008782 00000 n 0000008826 00000 n 0000585768 00000 n -0001170873 00000 n +0001170875 00000 n 0000008873 00000 n 0000008923 00000 n 0000585961 00000 n -0001170780 00000 n +0001170782 00000 n 0000008970 00000 n 0000009016 00000 n 0000586735 00000 n -0001170687 00000 n +0001170689 00000 n 0000009063 00000 n 0000009101 00000 n 0000586928 00000 n -0001170594 00000 n +0001170596 00000 n 0000009148 00000 n 0000009194 00000 n 0000590189 00000 n -0001170501 00000 n +0001170503 00000 n 0000009241 00000 n 0000009278 00000 n 0000590829 00000 n -0001170408 00000 n +0001170410 00000 n 0000009325 00000 n 0000009362 00000 n 0000591087 00000 n -0001170315 00000 n +0001170317 00000 n 0000009409 00000 n 0000009453 00000 n 0000595447 00000 n -0001170222 00000 n +0001170224 00000 n 0000009500 00000 n 0000009541 00000 n 0000596283 00000 n -0001170129 00000 n +0001170131 00000 n 0000009588 00000 n 0000009635 00000 n 0000604426 00000 n -0001170036 00000 n +0001170038 00000 n 0000009682 00000 n 0000009731 00000 n 0000605972 00000 n -0001169943 00000 n +0001169945 00000 n 0000009778 00000 n 0000009811 00000 n 0000610006 00000 n -0001169850 00000 n +0001169852 00000 n 0000009858 00000 n 0000009898 00000 n 0000610198 00000 n -0001169757 00000 n +0001169759 00000 n 0000009945 00000 n 0000009987 00000 n 0000610390 00000 n -0001169664 00000 n +0001169666 00000 n 0000010034 00000 n 0000010077 00000 n 0000613547 00000 n -0001169585 00000 n +0001169587 00000 n 0000010124 00000 n 0000010165 00000 n 0000613740 00000 n -0001169453 00000 n +0001169455 00000 n 0000010209 00000 n 0000010253 00000 n 0000613869 00000 n -0001169374 00000 n +0001169376 00000 n 0000010300 00000 n 0000010352 00000 n 0000614190 00000 n -0001169256 00000 n +0001169258 00000 n 0000010399 00000 n 0000010446 00000 n 0000614318 00000 n -0001169177 00000 n +0001169179 00000 n 0000010496 00000 n 0000010553 00000 n 0000618138 00000 n -0001169045 00000 n +0001169047 00000 n 0000010603 00000 n 0000010650 00000 n 0000618267 00000 n -0001168966 00000 n +0001168968 00000 n 0000010703 00000 n 0000010750 00000 n 0000618655 00000 n -0001168887 00000 n +0001168889 00000 n 0000010803 00000 n 0000010870 00000 n 0000619495 00000 n -0001168794 00000 n +0001168796 00000 n 0000010920 00000 n 0000010964 00000 n 0000626970 00000 n -0001168701 00000 n +0001168703 00000 n 0000011014 00000 n 0000011057 00000 n 0000627228 00000 n -0001168622 00000 n +0001168624 00000 n 0000011107 00000 n 0000011155 00000 n 0000631117 00000 n -0001168529 00000 n +0001168531 00000 n 0000011199 00000 n 0000011239 00000 n 0000631630 00000 n -0001168397 00000 n +0001168399 00000 n 0000011283 00000 n 0000011316 00000 n 0000636365 00000 n -0001168318 00000 n +0001168320 00000 n 0000011363 00000 n 0000011411 00000 n 0000641175 00000 n -0001168225 00000 n +0001168227 00000 n 0000011458 00000 n 0000011501 00000 n 0000641368 00000 n -0001168132 00000 n +0001168134 00000 n 0000011548 00000 n 0000011635 00000 n 0000641751 00000 n -0001168014 00000 n +0001168016 00000 n 0000011682 00000 n 0000011745 00000 n 0000646787 00000 n -0001167949 00000 n +0001167951 00000 n 0000011795 00000 n 0000011861 00000 n 0000653521 00000 n -0001167856 00000 n +0001167858 00000 n 0000011905 00000 n 0000011940 00000 n 0000655011 00000 n -0001167763 00000 n +0001167765 00000 n 0000011984 00000 n 0000012017 00000 n 0000658334 00000 n -0001167670 00000 n +0001167672 00000 n 0000012061 00000 n 0000012096 00000 n 0000659295 00000 n -0001167538 00000 n +0001167540 00000 n 0000012140 00000 n 0000012170 00000 n 0000659680 00000 n -0001167459 00000 n +0001167461 00000 n 0000012217 00000 n 0000012260 00000 n 0000663847 00000 n -0001167327 00000 n +0001167329 00000 n 0000012307 00000 n 0000012345 00000 n 0000663976 00000 n -0001167262 00000 n +0001167264 00000 n 0000012395 00000 n 0000012430 00000 n 0000665265 00000 n -0001167169 00000 n +0001167171 00000 n 0000012477 00000 n 0000012523 00000 n 0000666112 00000 n -0001167037 00000 n +0001167039 00000 n 0000012570 00000 n 0000012615 00000 n 0000669003 00000 n -0001166958 00000 n +0001166960 00000 n 0000012665 00000 n 0000012710 00000 n 0000670235 00000 n -0001166879 00000 n +0001166881 00000 n 0000012760 00000 n 0000012798 00000 n 0000670689 00000 n -0001166761 00000 n +0001166763 00000 n 0000012845 00000 n 0000012891 00000 n 0000671143 00000 n -0001166682 00000 n +0001166684 00000 n 0000012941 00000 n 0000012984 00000 n 0000671402 00000 n -0001166549 00000 n +0001166551 00000 n 0000013034 00000 n 0000013078 00000 n 0000674637 00000 n -0001166470 00000 n +0001166472 00000 n 0000013131 00000 n 0000013166 00000 n 0000674829 00000 n -0001166377 00000 n +0001166379 00000 n 0000013219 00000 n 0000013261 00000 n 0000675154 00000 n -0001166284 00000 n +0001166286 00000 n 0000013314 00000 n 0000013353 00000 n 0000677300 00000 n -0001166191 00000 n +0001166193 00000 n 0000013406 00000 n 0000013445 00000 n 0000680056 00000 n -0001166098 00000 n +0001166100 00000 n 0000013498 00000 n 0000013535 00000 n 0000680315 00000 n -0001166005 00000 n +0001166007 00000 n 0000013588 00000 n 0000013630 00000 n 0000680838 00000 n -0001165912 00000 n +0001165914 00000 n 0000013683 00000 n 0000013738 00000 n 0000681094 00000 n -0001165819 00000 n +0001165821 00000 n 0000013791 00000 n 0000013835 00000 n 0000681485 00000 n -0001165726 00000 n +0001165728 00000 n 0000013888 00000 n 0000013926 00000 n 0000681678 00000 n -0001165633 00000 n +0001165635 00000 n 0000013979 00000 n 0000014022 00000 n 0000682068 00000 n -0001165554 00000 n +0001165556 00000 n 0000014075 00000 n 0000014120 00000 n 0000685274 00000 n -0001165475 00000 n +0001165477 00000 n 0000014170 00000 n 0000014214 00000 n 0000685795 00000 n -0001165382 00000 n +0001165384 00000 n 0000014258 00000 n 0000014291 00000 n 0000686115 00000 n -0001165250 00000 n +0001165252 00000 n 0000014335 00000 n 0000014374 00000 n 0000690235 00000 n -0001165171 00000 n +0001165173 00000 n 0000014421 00000 n 0000014469 00000 n 0000691788 00000 n -0001165078 00000 n +0001165080 00000 n 0000014516 00000 n 0000014565 00000 n 0000691979 00000 n -0001164999 00000 n +0001165001 00000 n 0000014612 00000 n 0000014662 00000 n 0000692172 00000 n -0001164867 00000 n +0001164869 00000 n 0000014706 00000 n 0000014744 00000 n 0000695006 00000 n -0001164788 00000 n +0001164790 00000 n 0000014791 00000 n 0000014847 00000 n 0000695329 00000 n -0001164709 00000 n +0001164711 00000 n 0000014894 00000 n 0000014943 00000 n 0000695904 00000 n -0001164616 00000 n +0001164618 00000 n 0000014987 00000 n 0000015032 00000 n 0000696161 00000 n -0001164523 00000 n +0001164525 00000 n 0000015076 00000 n 0000015108 00000 n 0000700507 00000 n -0001164430 00000 n +0001164432 00000 n 0000015152 00000 n 0000015183 00000 n 0000701020 00000 n -0001164298 00000 n +0001164300 00000 n 0000015227 00000 n 0000015278 00000 n 0000706559 00000 n -0001164219 00000 n +0001164221 00000 n 0000015325 00000 n 0000015368 00000 n 0000711204 00000 n -0001164126 00000 n +0001164128 00000 n 0000015415 00000 n 0000015489 00000 n 0000717216 00000 n -0001164033 00000 n +0001164035 00000 n 0000015536 00000 n 0000015589 00000 n 0000717858 00000 n -0001163954 00000 n +0001163956 00000 n 0000015636 00000 n 0000015700 00000 n 0000718051 00000 n -0001163875 00000 n +0001163877 00000 n 0000015744 00000 n 0000015813 00000 n 0000722790 00000 n -0001163742 00000 n +0001163744 00000 n 0000015854 00000 n 0000015902 00000 n 0000723110 00000 n -0001163624 00000 n +0001163626 00000 n 0000015946 00000 n 0000015987 00000 n 0000723239 00000 n -0001163545 00000 n +0001163547 00000 n 0000016034 00000 n 0000016073 00000 n 0000723432 00000 n -0001163452 00000 n +0001163454 00000 n 0000016120 00000 n 0000016167 00000 n 0000724604 00000 n -0001163373 00000 n +0001163375 00000 n 0000016214 00000 n 0000016256 00000 n 0000727728 00000 n -0001163241 00000 n +0001163243 00000 n 0000016300 00000 n 0000016335 00000 n 0000727857 00000 n -0001163176 00000 n +0001163178 00000 n 0000016382 00000 n 0000016464 00000 n 0000734523 00000 n -0001163058 00000 n +0001163060 00000 n 0000016508 00000 n 0000016541 00000 n 0000734652 00000 n -0001162993 00000 n +0001162995 00000 n 0000016588 00000 n 0000016659 00000 n 0000737963 00000 n -0001162859 00000 n +0001162861 00000 n 0000016700 00000 n 0000016745 00000 n 0000738091 00000 n -0001162780 00000 n +0001162782 00000 n 0000016789 00000 n 0000016826 00000 n 0000738480 00000 n -0001162687 00000 n +0001162689 00000 n 0000016870 00000 n 0000016920 00000 n 0000743819 00000 n -0001162594 00000 n +0001162596 00000 n 0000016964 00000 n 0000017005 00000 n 0000751243 00000 n -0001162501 00000 n +0001162503 00000 n 0000017049 00000 n 0000017093 00000 n 0000802720 00000 n -0001162369 00000 n +0001162371 00000 n 0000017137 00000 n 0000017180 00000 n 0000805806 00000 n -0001162251 00000 n +0001162253 00000 n 0000017227 00000 n 0000017268 00000 n 0000806970 00000 n -0001162172 00000 n +0001162174 00000 n 0000017318 00000 n 0000017367 00000 n 0000807227 00000 n -0001162079 00000 n +0001162081 00000 n 0000017417 00000 n 0000017454 00000 n 0000811123 00000 n -0001162000 00000 n +0001162002 00000 n 0000017504 00000 n 0000017548 00000 n 0000811639 00000 n -0001161907 00000 n +0001161909 00000 n 0000017595 00000 n 0000017633 00000 n 0000812094 00000 n -0001161814 00000 n +0001161816 00000 n 0000017680 00000 n 0000017735 00000 n 0000812286 00000 n -0001161721 00000 n +0001161723 00000 n 0000017782 00000 n 0000017818 00000 n 0000816177 00000 n -0001161642 00000 n +0001161644 00000 n 0000017865 00000 n 0000017925 00000 n 0000816694 00000 n -0001161510 00000 n +0001161512 00000 n 0000017969 00000 n 0000018005 00000 n 0000816823 00000 n -0001161431 00000 n +0001161433 00000 n 0000018052 00000 n 0000018098 00000 n 0000822190 00000 n -0001161352 00000 n +0001161354 00000 n 0000018145 00000 n 0000018193 00000 n 0000825357 00000 n -0001161220 00000 n +0001161222 00000 n 0000018237 00000 n 0000018273 00000 n 0000826130 00000 n -0001161116 00000 n +0001161118 00000 n 0000018320 00000 n 0000018359 00000 n 0000826514 00000 n -0001161037 00000 n +0001161039 00000 n 0000018409 00000 n 0000018469 00000 n 0000829063 00000 n -0001160944 00000 n +0001160946 00000 n 0000018519 00000 n 0000018589 00000 n 0000829256 00000 n -0001160851 00000 n +0001160853 00000 n 0000018639 00000 n 0000018699 00000 n 0000829447 00000 n -0001160758 00000 n +0001160760 00000 n 0000018749 00000 n 0000018822 00000 n 0000829639 00000 n -0001160665 00000 n +0001160667 00000 n 0000018872 00000 n 0000018932 00000 n 0000829832 00000 n -0001160572 00000 n +0001160574 00000 n 0000018982 00000 n 0000019034 00000 n 0000830089 00000 n -0001160493 00000 n +0001160495 00000 n 0000019084 00000 n 0000019136 00000 n 0000830282 00000 n -0001160361 00000 n +0001160363 00000 n 0000019180 00000 n 0000019219 00000 n 0000832844 00000 n -0001160282 00000 n +0001160284 00000 n 0000019266 00000 n 0000019310 00000 n 0000833231 00000 n -0001160189 00000 n +0001160191 00000 n 0000019357 00000 n 0000019392 00000 n 0000833488 00000 n -0001160096 00000 n +0001160098 00000 n 0000019439 00000 n 0000019493 00000 n 0000833681 00000 n -0001160017 00000 n +0001160019 00000 n 0000019540 00000 n 0000019582 00000 n 0000837119 00000 n -0001159924 00000 n +0001159926 00000 n 0000019626 00000 n 0000019676 00000 n 0000837573 00000 n -0001159792 00000 n +0001159794 00000 n 0000019720 00000 n 0000019762 00000 n 0000837766 00000 n -0001159713 00000 n +0001159715 00000 n 0000019809 00000 n 0000019856 00000 n 0000839308 00000 n -0001159620 00000 n +0001159622 00000 n 0000019903 00000 n 0000019948 00000 n 0000848114 00000 n -0001159527 00000 n +0001159529 00000 n 0000019995 00000 n 0000020037 00000 n 0000848307 00000 n -0001159434 00000 n +0001159436 00000 n 0000020084 00000 n 0000020129 00000 n 0000848632 00000 n -0001159355 00000 n +0001159357 00000 n 0000020176 00000 n 0000020215 00000 n 0000854023 00000 n -0001159223 00000 n +0001159225 00000 n 0000020259 00000 n 0000020303 00000 n 0000854214 00000 n -0001159144 00000 n +0001159146 00000 n 0000020350 00000 n 0000020385 00000 n 0000857598 00000 n -0001159026 00000 n +0001159028 00000 n 0000020432 00000 n 0000020466 00000 n 0000858111 00000 n -0001158947 00000 n +0001158949 00000 n 0000020516 00000 n 0000020561 00000 n 0000858559 00000 n -0001158868 00000 n +0001158870 00000 n 0000020611 00000 n 0000020663 00000 n 0000861339 00000 n -0001158775 00000 n +0001158777 00000 n 0000020707 00000 n 0000020738 00000 n 0000861979 00000 n -0001158657 00000 n +0001158659 00000 n 0000020782 00000 n 0000020815 00000 n 0000865826 00000 n -0001158578 00000 n +0001158580 00000 n 0000020862 00000 n 0000020899 00000 n 0000866146 00000 n -0001158485 00000 n +0001158487 00000 n 0000020946 00000 n 0000020990 00000 n 0000870097 00000 n -0001158392 00000 n +0001158394 00000 n 0000021037 00000 n 0000021081 00000 n 0000871864 00000 n -0001158313 00000 n +0001158315 00000 n 0000021128 00000 n 0000021175 00000 n 0000874951 00000 n -0001158180 00000 n +0001158182 00000 n 0000021216 00000 n 0000021267 00000 n 0000875079 00000 n -0001158101 00000 n +0001158103 00000 n 0000021311 00000 n 0000021348 00000 n 0000875921 00000 n -0001157969 00000 n +0001157971 00000 n 0000021392 00000 n 0000021439 00000 n 0000876177 00000 n -0001157890 00000 n +0001157892 00000 n 0000021486 00000 n 0000021541 00000 n 0000880092 00000 n -0001157797 00000 n +0001157799 00000 n 0000021588 00000 n 0000021646 00000 n 0000881775 00000 n -0001157704 00000 n +0001157706 00000 n 0000021693 00000 n 0000021741 00000 n 0000885926 00000 n -0001157611 00000 n +0001157613 00000 n 0000021788 00000 n 0000021841 00000 n 0000890940 00000 n -0001157518 00000 n +0001157520 00000 n 0000021888 00000 n 0000021935 00000 n 0000896304 00000 n -0001157439 00000 n +0001157441 00000 n 0000021982 00000 n 0000022059 00000 n 0000896561 00000 n -0001157346 00000 n +0001157348 00000 n 0000022103 00000 n 0000022160 00000 n 0000910478 00000 n -0001157253 00000 n +0001157255 00000 n 0000022204 00000 n 0000022260 00000 n 0000913794 00000 n -0001157174 00000 n +0001157176 00000 n 0000022304 00000 n 0000022371 00000 n 0000917244 00000 n -0001157041 00000 n +0001157043 00000 n 0000022413 00000 n 0000022460 00000 n 0000917436 00000 n -0001156962 00000 n +0001156964 00000 n 0000022505 00000 n 0000022544 00000 n 0000918150 00000 n -0001156869 00000 n +0001156871 00000 n 0000022589 00000 n 0000022665 00000 n 0000918599 00000 n -0001156776 00000 n +0001156778 00000 n 0000022710 00000 n 0000022806 00000 n 0000921332 00000 n -0001156683 00000 n +0001156685 00000 n 0000022851 00000 n 0000022906 00000 n 0000921974 00000 n -0001156590 00000 n +0001156592 00000 n 0000022951 00000 n 0000023009 00000 n 0000922752 00000 n -0001156497 00000 n +0001156499 00000 n 0000023054 00000 n 0000023126 00000 n 0000926863 00000 n -0001156404 00000 n +0001156406 00000 n 0000023171 00000 n 0000023249 00000 n 0000928548 00000 n -0001156325 00000 n +0001156327 00000 n 0000023294 00000 n 0000023413 00000 n 0000932343 00000 n -0001156190 00000 n +0001156192 00000 n 0000023455 00000 n 0000023494 00000 n 0000932600 00000 n -0001156109 00000 n +0001156111 00000 n 0000023539 00000 n 0000023593 00000 n 0000934618 00000 n -0001156027 00000 n +0001156029 00000 n 0000023639 00000 n 0000023703 00000 n 0000937525 00000 n -0001155888 00000 n +0001155890 00000 n 0000023746 00000 n 0000023814 00000 n 0000937655 00000 n -0001155804 00000 n +0001155806 00000 n 0000023860 00000 n 0000023898 00000 n 0000938685 00000 n -0001155705 00000 n +0001155707 00000 n 0000023944 00000 n 0000023988 00000 n 0000943667 00000 n -0001155621 00000 n +0001155623 00000 n 0000024034 00000 n 0000024076 00000 n 0000948604 00000 n -0001155480 00000 n +0001155482 00000 n 0000024119 00000 n 0000024182 00000 n 0000948923 00000 n -0001155396 00000 n +0001155398 00000 n 0000024228 00000 n 0000024260 00000 n 0000949241 00000 n -0001155297 00000 n +0001155299 00000 n 0000024306 00000 n 0000024358 00000 n 0000953239 00000 n -0001155198 00000 n +0001155200 00000 n 0000024404 00000 n 0000024444 00000 n 0000953496 00000 n -0001155099 00000 n +0001155101 00000 n 0000024490 00000 n 0000024533 00000 n 0000957414 00000 n -0001155000 00000 n +0001155002 00000 n 0000024579 00000 n 0000024616 00000 n 0000962609 00000 n -0001154901 00000 n +0001154903 00000 n 0000024662 00000 n 0000024705 00000 n 0000962931 00000 n -0001154802 00000 n +0001154804 00000 n 0000024751 00000 n 0000024799 00000 n 0000963188 00000 n -0001154703 00000 n +0001154705 00000 n 0000024845 00000 n 0000024903 00000 n 0000966244 00000 n -0001154604 00000 n +0001154606 00000 n 0000024949 00000 n 0000024984 00000 n 0000966438 00000 n -0001154505 00000 n +0001154507 00000 n 0000025030 00000 n 0000025065 00000 n 0000966631 00000 n -0001154406 00000 n +0001154408 00000 n 0000025111 00000 n 0000025168 00000 n 0000966954 00000 n -0001154322 00000 n +0001154324 00000 n 0000025214 00000 n 0000025277 00000 n 0000970920 00000 n -0001154223 00000 n +0001154225 00000 n 0000025320 00000 n 0000025349 00000 n 0000971048 00000 n -0001154083 00000 n +0001154085 00000 n 0000025392 00000 n 0000025427 00000 n 0000971178 00000 n -0001154014 00000 n +0001154016 00000 n 0000025477 00000 n 0000025507 00000 n 0000971565 00000 n -0001153874 00000 n +0001153876 00000 n 0000025550 00000 n 0000025572 00000 n 0000971694 00000 n -0001153764 00000 n +0001153766 00000 n 0000025622 00000 n 0000025649 00000 n 0000972147 00000 n -0001153695 00000 n +0001153697 00000 n 0000025702 00000 n 0000025766 00000 n 0000976134 00000 n -0001153555 00000 n +0001153557 00000 n 0000025809 00000 n 0000025831 00000 n 0000976263 00000 n -0001153445 00000 n +0001153447 00000 n 0000025881 00000 n 0000025905 00000 n 0000976715 00000 n -0001153361 00000 n +0001153363 00000 n 0000025955 00000 n 0000025986 00000 n 0000976973 00000 n -0001153277 00000 n +0001153279 00000 n 0000026036 00000 n 0000026065 00000 n 0000977230 00000 n -0001153137 00000 n +0001153139 00000 n 0000026108 00000 n 0000026130 00000 n 0000977359 00000 n -0001153027 00000 n +0001153029 00000 n 0000026180 00000 n 0000026225 00000 n 0000977745 00000 n -0001152943 00000 n +0001152945 00000 n 0000026275 00000 n 0000026305 00000 n 0000978002 00000 n -0001152844 00000 n +0001152846 00000 n 0000026355 00000 n 0000026410 00000 n 0000978519 00000 n -0001152760 00000 n +0001152762 00000 n 0000026460 00000 n 0000026488 00000 n 0000980895 00000 n -0001152620 00000 n +0001152622 00000 n 0000026531 00000 n 0000026553 00000 n 0000981024 00000 n -0001152510 00000 n +0001152512 00000 n 0000026603 00000 n 0000026630 00000 n 0000981412 00000 n -0001152441 00000 n +0001152443 00000 n 0000026680 00000 n 0000026711 00000 n 0000981670 00000 n -0001152301 00000 n +0001152303 00000 n 0000026754 00000 n 0000026776 00000 n 0000981798 00000 n -0001152232 00000 n +0001152234 00000 n 0000026826 00000 n 0000026853 00000 n 0000982253 00000 n -0001152092 00000 n +0001152094 00000 n 0000026896 00000 n 0000026918 00000 n 0000982381 00000 n -0001152023 00000 n +0001152025 00000 n 0000026968 00000 n 0000026999 00000 n 0000984644 00000 n -0001151883 00000 n +0001151885 00000 n 0000027042 00000 n 0000027064 00000 n 0000984773 00000 n -0001151773 00000 n +0001151775 00000 n 0000027114 00000 n 0000027158 00000 n 0000985359 00000 n -0001151704 00000 n +0001151706 00000 n 0000027208 00000 n 0000027234 00000 n 0000986585 00000 n -0001151564 00000 n +0001151566 00000 n 0000027277 00000 n 0000027299 00000 n 0000986714 00000 n -0001151454 00000 n +0001151456 00000 n 0000027349 00000 n 0000027390 00000 n 0000987035 00000 n -0001151370 00000 n +0001151372 00000 n 0000027440 00000 n 0000027468 00000 n 0000988983 00000 n -0001151286 00000 n +0001151288 00000 n 0000027518 00000 n 0000027543 00000 n 0000989305 00000 n -0001151146 00000 n +0001151148 00000 n 0000027586 00000 n 0000027608 00000 n 0000989434 00000 n -0001151077 00000 n +0001151079 00000 n 0000027658 00000 n 0000027681 00000 n 0000990019 00000 n -0001150937 00000 n +0001150939 00000 n 0000027724 00000 n 0000027746 00000 n 0000990148 00000 n -0001150827 00000 n +0001150829 00000 n 0000027796 00000 n 0000027854 00000 n 0000990404 00000 n -0001150758 00000 n +0001150760 00000 n 0000027904 00000 n 0000027943 00000 n 0000990726 00000 n -0001150618 00000 n +0001150620 00000 n 0000027986 00000 n 0000028008 00000 n 0000990855 00000 n -0001150508 00000 n +0001150510 00000 n 0000028058 00000 n 0000028086 00000 n 0000993590 00000 n -0001150439 00000 n +0001150441 00000 n 0000028136 00000 n 0000028162 00000 n 0000994504 00000 n -0001150299 00000 n +0001150301 00000 n 0000028205 00000 n 0000028227 00000 n 0000994632 00000 n -0001150189 00000 n +0001150191 00000 n 0000028277 00000 n 0000028314 00000 n 0000994956 00000 n -0001150120 00000 n +0001150122 00000 n 0000028364 00000 n 0000028406 00000 n 0000995214 00000 n -0001149995 00000 n +0001149997 00000 n 0000028449 00000 n 0000028471 00000 n 0000995343 00000 n -0001149926 00000 n +0001149928 00000 n 0000028521 00000 n 0000028559 00000 n 0000028911 00000 n @@ -27082,25 +27082,25 @@ xref 0000029037 00000 n 0000029101 00000 n 0000029165 00000 n -0001145796 00000 n -0001132012 00000 n -0001145622 00000 n -0001146681 00000 n +0001145798 00000 n +0001132014 00000 n +0001145624 00000 n +0001146683 00000 n 0000030162 00000 n 0000029972 00000 n 0000029366 00000 n 0000030098 00000 n -0001130885 00000 n -0001109039 00000 n -0001130708 00000 n +0001130887 00000 n +0001109041 00000 n +0001130710 00000 n 0000103894 00000 n 0000088232 00000 n 0000030250 00000 n 0000103768 00000 n 0000089180 00000 n -0001108174 00000 n -0001091868 00000 n -0001107997 00000 n +0001108176 00000 n +0001091870 00000 n +0001107999 00000 n 0000089332 00000 n 0000089484 00000 n 0000089640 00000 n @@ -27190,9 +27190,9 @@ xref 0000103287 00000 n 0000103449 00000 n 0000103608 00000 n -0001091022 00000 n -0001072797 00000 n -0001090841 00000 n +0001091024 00000 n +0001072799 00000 n +0001090843 00000 n 0000420297 00000 n 0000420424 00000 n 0000420807 00000 n @@ -27541,9 +27541,9 @@ xref 0000313872 00000 n 0000314040 00000 n 0000314208 00000 n -0001071815 00000 n -0001051628 00000 n -0001071640 00000 n +0001071817 00000 n +0001051630 00000 n +0001071642 00000 n 0000314374 00000 n 0000314540 00000 n 0000314705 00000 n @@ -27772,7 +27772,7 @@ xref 0000401243 00000 n 0000401397 00000 n 0000401549 00000 n -0001146806 00000 n +0001146808 00000 n 0000853959 00000 n 0000854151 00000 n 0000852677 00000 n @@ -27942,9 +27942,9 @@ xref 0000430366 00000 n 0000430430 00000 n 0000430494 00000 n -0001050564 00000 n -0001038351 00000 n -0001050390 00000 n +0001050566 00000 n +0001038353 00000 n +0001050392 00000 n 0000430014 00000 n 0000430558 00000 n 0000430622 00000 n @@ -27955,9 +27955,9 @@ xref 0000434828 00000 n 0000434892 00000 n 0000434956 00000 n -0001037591 00000 n -0001027572 00000 n -0001037413 00000 n +0001037593 00000 n +0001027574 00000 n +0001037415 00000 n 0000435022 00000 n 0000433291 00000 n 0000433450 00000 n @@ -27984,7 +27984,7 @@ xref 0000436108 00000 n 0000436172 00000 n 0000436236 00000 n -0001146931 00000 n +0001146933 00000 n 0000439906 00000 n 0000438046 00000 n 0000436446 00000 n @@ -28183,7 +28183,7 @@ xref 0000467466 00000 n 0000467532 00000 n 0000467596 00000 n -0001147056 00000 n +0001147058 00000 n 0000473557 00000 n 0000470624 00000 n 0000467792 00000 n @@ -28232,9 +28232,9 @@ xref 0000477076 00000 n 0000477140 00000 n 0000477206 00000 n -0001026994 00000 n -0001017012 00000 n -0001026815 00000 n +0001026996 00000 n +0001017014 00000 n +0001026817 00000 n 0000477271 00000 n 0000476207 00000 n 0000477336 00000 n @@ -28403,7 +28403,7 @@ xref 0000499707 00000 n 0000499773 00000 n 0000499839 00000 n -0001147181 00000 n +0001147183 00000 n 0000505754 00000 n 0000503095 00000 n 0000500061 00000 n @@ -28468,9 +28468,9 @@ xref 0000510517 00000 n 0000510580 00000 n 0000510643 00000 n -0001016333 00000 n -0001000621 00000 n -0001016158 00000 n +0001016335 00000 n +0001000622 00000 n +0001016160 00000 n 0000510709 00000 n 0000510773 00000 n 0000510839 00000 n @@ -28590,7 +28590,7 @@ xref 0000529850 00000 n 0000529916 00000 n 0000529980 00000 n -0001147306 00000 n +0001147308 00000 n 0000535268 00000 n 0000532921 00000 n 0000530175 00000 n @@ -28609,9 +28609,9 @@ xref 0000534112 00000 n 0000534176 00000 n 0000534241 00000 n -0000998392 00000 n +0000998393 00000 n 0000995896 00000 n -0000998223 00000 n +0000998224 00000 n 0000534305 00000 n 0000534368 00000 n 0000534432 00000 n @@ -28763,7 +28763,7 @@ xref 0000558653 00000 n 0000556682 00000 n 0000558717 00000 n -0001147431 00000 n +0001147433 00000 n 0000563368 00000 n 0000561032 00000 n 0000558975 00000 n @@ -28960,7 +28960,7 @@ xref 0000587249 00000 n 0000587314 00000 n 0000587378 00000 n -0001147556 00000 n +0001147558 00000 n 0000591346 00000 n 0000589678 00000 n 0000587557 00000 n @@ -29122,7 +29122,7 @@ xref 0000614578 00000 n 0000614642 00000 n 0000614708 00000 n -0001147681 00000 n +0001147683 00000 n 0000620915 00000 n 0000617769 00000 n 0000614952 00000 n @@ -29341,7 +29341,7 @@ xref 0000647302 00000 n 0000647366 00000 n 0000647430 00000 n -0001147806 00000 n +0001147808 00000 n 0000650482 00000 n 0000649076 00000 n 0000647610 00000 n @@ -29569,7 +29569,7 @@ xref 0000677429 00000 n 0000677492 00000 n 0000677555 00000 n -0001147931 00000 n +0001147933 00000 n 0000682327 00000 n 0000679802 00000 n 0000677721 00000 n @@ -29739,7 +29739,7 @@ xref 0000707462 00000 n 0000707527 00000 n 0000707592 00000 n -0001148056 00000 n +0001148058 00000 n 0000713005 00000 n 0000710308 00000 n 0000707774 00000 n @@ -29929,7 +29929,7 @@ xref 0000734912 00000 n 0000734978 00000 n 0000735042 00000 n -0001148181 00000 n +0001148183 00000 n 0000739835 00000 n 0000737709 00000 n 0000735238 00000 n @@ -30109,7 +30109,7 @@ xref 0000812415 00000 n 0000812479 00000 n 0000812543 00000 n -0001148306 00000 n +0001148308 00000 n 0000817792 00000 n 0000815675 00000 n 0000812723 00000 n @@ -30243,7 +30243,7 @@ xref 0000839500 00000 n 0000839565 00000 n 0000839631 00000 n -0001148431 00000 n +0001148433 00000 n 0000845380 00000 n 0000842861 00000 n 0000839811 00000 n @@ -30403,7 +30403,7 @@ xref 0000866275 00000 n 0000866339 00000 n 0000866403 00000 n -0001148556 00000 n +0001148558 00000 n 0000870801 00000 n 0000869416 00000 n 0000866585 00000 n @@ -30554,7 +30554,7 @@ xref 0000892936 00000 n 0000893002 00000 n 0000893068 00000 n -0001148681 00000 n +0001148683 00000 n 0000897012 00000 n 0000895664 00000 n 0000893264 00000 n @@ -30698,7 +30698,7 @@ xref 0000918854 00000 n 0000918919 00000 n 0000918982 00000 n -0001148806 00000 n +0001148808 00000 n 0000922945 00000 n 0000921013 00000 n 0000919189 00000 n @@ -30864,7 +30864,7 @@ xref 0000941892 00000 n 0000941958 00000 n 0000942024 00000 n -0001148931 00000 n +0001148933 00000 n 0000945029 00000 n 0000942957 00000 n 0000942176 00000 n @@ -30976,7 +30976,7 @@ xref 0000962997 00000 n 0000963061 00000 n 0000963254 00000 n -0001149056 00000 n +0001149058 00000 n 0000967211 00000 n 0000965926 00000 n 0000963420 00000 n @@ -31142,7 +31142,7 @@ xref 0000986907 00000 n 0000987101 00000 n 0000987164 00000 n -0001149181 00000 n +0001149183 00000 n 0000990084 00000 n 0000991114 00000 n 0000988729 00000 n @@ -31206,36 +31206,36 @@ xref 0000995600 00000 n 0000995664 00000 n 0000995728 00000 n -0000998634 00000 n -0000998601 00000 n -0000998732 00000 n -0001016715 00000 n -0001027317 00000 n -0001037976 00000 n -0001051136 00000 n -0001072412 00000 n -0001091465 00000 n -0001108636 00000 n -0001131504 00000 n -0001146266 00000 n -0001149279 00000 n -0001149405 00000 n -0001149531 00000 n -0001149657 00000 n -0001149756 00000 n -0001149848 00000 n -0001179841 00000 n -0001238575 00000 n -0001238616 00000 n -0001238656 00000 n -0001238791 00000 n +0000998635 00000 n +0000998602 00000 n +0000998733 00000 n +0001016717 00000 n +0001027319 00000 n +0001037978 00000 n +0001051138 00000 n +0001072414 00000 n +0001091467 00000 n +0001108638 00000 n +0001131506 00000 n +0001146268 00000 n +0001149281 00000 n +0001149407 00000 n +0001149533 00000 n +0001149659 00000 n +0001149758 00000 n +0001149850 00000 n +0001179843 00000 n +0001238577 00000 n +0001238618 00000 n +0001238658 00000 n +0001238793 00000 n trailer << /Size 5395 /Root 5393 0 R /Info 5394 0 R -/ID [<31DC317D40E268BCC32289549078B32E> <31DC317D40E268BCC32289549078B32E>] +/ID [<53BAD8ED1D60E7F0E4D6B5033F709A54> <53BAD8ED1D60E7F0E4D6B5033F709A54>] >> startxref -1239055 +1239057 %%EOF diff --git a/docs/en/txt/Bugzilla-Guide.txt b/docs/en/txt/Bugzilla-Guide.txt index 90a258028..740cdbce6 100644 --- a/docs/en/txt/Bugzilla-Guide.txt +++ b/docs/en/txt/Bugzilla-Guide.txt @@ -1,9 +1,9 @@ -The Bugzilla Guide - 3.5.1 Development Release +The Bugzilla Guide - 3.5.2 Development Release The Bugzilla Team - 2009-11-05 + 2009-11-18 This is the documentation for Bugzilla, a bug-tracking system from mozilla.org. Bugzilla is an enterprise-class piece of software that tracks @@ -172,7 +172,7 @@ Chapter 1. About This Guide 1.3. New Versions - This is the 3.5.1 version of The Bugzilla Guide. It is so named to match the + This is the 3.5.2 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. This version of the guide, like its associated Bugzilla version, is a development version. diff --git a/docs/en/xml/Bugzilla-Guide.xml b/docs/en/xml/Bugzilla-Guide.xml index de777b4db..3333b7e17 100644 --- a/docs/en/xml/Bugzilla-Guide.xml +++ b/docs/en/xml/Bugzilla-Guide.xml @@ -32,9 +32,9 @@ For a devel release, simple bump bz-ver and bz-date --> -<!ENTITY bz-ver "3.5.1"> +<!ENTITY bz-ver "3.5.2"> <!ENTITY bz-nextver "3.6"> -<!ENTITY bz-date "2009-11-05"> +<!ENTITY bz-date "2009-11-18"> <!ENTITY current-year "2009"> <!ENTITY landfillbase "http://landfill.bugzilla.org/bugzilla-tip/"> diff --git a/docs/en/xml/CVS/Entries b/docs/en/xml/CVS/Entries index c01c82974..a9524313b 100644 --- a/docs/en/xml/CVS/Entries +++ b/docs/en/xml/CVS/Entries @@ -1,16 +1,16 @@ -/.cvsignore/1.1/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_1 -/Bugzilla-Guide.xml/1.88/Thu Nov 5 12:26:48 2009//TBUGZILLA-3_5_1 -/about.xml/1.26/Fri Apr 4 06:48:18 2008//TBUGZILLA-3_5_1 -/administration.xml/1.96/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_1 -/conventions.xml/1.12/Fri Apr 4 06:48:20 2008//TBUGZILLA-3_5_1 -/customization.xml/1.47/Mon Aug 10 11:19:24 2009//TBUGZILLA-3_5_1 -/gfdl.xml/1.11/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_1 -/glossary.xml/1.26/Tue Aug 18 11:01:16 2009//TBUGZILLA-3_5_1 -/index.xml/1.6/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_1 -/installation.xml/1.172/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_1 -/modules.xml/1.16/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_1 -/patches.xml/1.25/Fri Apr 4 06:48:25 2008//TBUGZILLA-3_5_1 -/security.xml/1.20/Tue Aug 18 11:01:18 2009//TBUGZILLA-3_5_1 -/troubleshooting.xml/1.14/Sun Oct 18 23:35:00 2009//TBUGZILLA-3_5_1 -/using.xml/1.79/Fri Apr 4 06:48:26 2008//TBUGZILLA-3_5_1 +/.cvsignore/1.1/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_2 +/Bugzilla-Guide.xml/1.89/Thu Nov 19 02:14:27 2009//TBUGZILLA-3_5_2 +/about.xml/1.26/Fri Apr 4 06:48:18 2008//TBUGZILLA-3_5_2 +/administration.xml/1.96/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_2 +/conventions.xml/1.12/Fri Apr 4 06:48:20 2008//TBUGZILLA-3_5_2 +/customization.xml/1.47/Mon Aug 10 11:19:24 2009//TBUGZILLA-3_5_2 +/gfdl.xml/1.11/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_2 +/glossary.xml/1.26/Tue Aug 18 11:01:16 2009//TBUGZILLA-3_5_2 +/index.xml/1.6/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_2 +/installation.xml/1.172/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_2 +/modules.xml/1.16/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_2 +/patches.xml/1.25/Fri Apr 4 06:48:25 2008//TBUGZILLA-3_5_2 +/security.xml/1.20/Tue Aug 18 11:01:18 2009//TBUGZILLA-3_5_2 +/troubleshooting.xml/1.14/Sun Oct 18 23:35:00 2009//TBUGZILLA-3_5_2 +/using.xml/1.79/Fri Apr 4 06:48:26 2008//TBUGZILLA-3_5_2 D diff --git a/docs/en/xml/CVS/Tag b/docs/en/xml/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/en/xml/CVS/Tag +++ b/docs/en/xml/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/en/xml/bugzilla.ent b/docs/en/xml/bugzilla.ent index dc8d522f2..379703a54 100644 --- a/docs/en/xml/bugzilla.ent +++ b/docs/en/xml/bugzilla.ent @@ -27,6 +27,7 @@ <!ENTITY min-authen-radius-ver "any"> <!ENTITY min-soap-lite-ver "0.710.06"> <!ENTITY min-json-rpc-ver "any"> +<!ENTITY min-test-taint-ver "any"> <!ENTITY min-html-parser-ver "3.40"> <!ENTITY min-html-scrubber-ver "any"> <!ENTITY min-email-mime-attachment-stripper-ver "any"> diff --git a/docs/lib/CVS/Tag b/docs/lib/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/docs/lib/CVS/Tag +++ b/docs/lib/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/docs/lib/Pod/CVS/Tag b/docs/lib/Pod/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/docs/lib/Pod/CVS/Tag +++ b/docs/lib/Pod/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/docs/lib/Pod/Simple/CVS/Tag b/docs/lib/Pod/Simple/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/docs/lib/Pod/Simple/CVS/Tag +++ b/docs/lib/Pod/Simple/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/docs/lib/Pod/Simple/HTML/CVS/Entries b/docs/lib/Pod/Simple/HTML/CVS/Entries index 078ea8fcf..5361b7563 100644 --- a/docs/lib/Pod/Simple/HTML/CVS/Entries +++ b/docs/lib/Pod/Simple/HTML/CVS/Entries @@ -1,2 +1,2 @@ -/Bugzilla.pm/1.1/Tue Sep 5 19:00:56 2006//TBUGZILLA-3_5_1 +/Bugzilla.pm/1.1/Tue Sep 5 19:00:56 2006//TBUGZILLA-3_5_2 D diff --git a/docs/lib/Pod/Simple/HTML/CVS/Tag b/docs/lib/Pod/Simple/HTML/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/lib/Pod/Simple/HTML/CVS/Tag +++ b/docs/lib/Pod/Simple/HTML/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries b/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries index 58514c831..15d555f02 100644 --- a/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries +++ b/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries @@ -1,2 +1,2 @@ -/Bugzilla.pm/1.7/Tue Oct 27 20:56:50 2009//TBUGZILLA-3_5_1 +/Bugzilla.pm/1.7/Tue Oct 27 20:56:50 2009//TBUGZILLA-3_5_2 D diff --git a/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag b/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag +++ b/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/editkeywords.cgi b/editkeywords.cgi index 76bba4817..a9b46fef5 100755 --- a/editkeywords.cgi +++ b/editkeywords.cgi @@ -169,8 +169,7 @@ if ($action eq 'delete') { my $keyword = new Bugzilla::Keyword($key_id) || ThrowCodeError('invalid_keyword_id', { id => $key_id }); - $dbh->do('DELETE FROM keywords WHERE keywordid = ?', undef, $keyword->id); - $dbh->do('DELETE FROM keyworddefs WHERE id = ?', undef, $keyword->id); + $keyword->remove_from_db(); delete_token($token); diff --git a/editwhines.cgi b/editwhines.cgi index 37f52349e..e93437647 100755 --- a/editwhines.cgi +++ b/editwhines.cgi @@ -36,6 +36,7 @@ use Bugzilla::Error; use Bugzilla::User; use Bugzilla::Group; use Bugzilla::Token; +use Bugzilla::Whine::Schedule; # require the user to have logged in my $user = Bugzilla->login(LOGIN_REQUIRED); @@ -104,20 +105,11 @@ if ($cgi->param('update')) { # otherwise we could simply delete whatever matched that ID. # # schedules - $sth = $dbh->prepare("SELECT whine_schedules.id " . - "FROM whine_schedules " . - "LEFT JOIN whine_events " . - "ON whine_events.id = " . - "whine_schedules.eventid " . - "WHERE whine_events.id = ? " . - "AND whine_events.owner_userid = ?"); - $sth->execute($eventid, $userid); - my @ids = @{$sth->fetchall_arrayref}; + my $schedules = Bugzilla::Whine::Schedule->match({ eventid => $eventid }); $sth = $dbh->prepare("DELETE FROM whine_schedules " . "WHERE id=?"); - for (@ids) { - my $delete_id = $_->[0]; - $sth->execute($delete_id); + foreach my $schedule (@$schedules) { + $sth->execute($schedule->id); } # queries @@ -129,7 +121,7 @@ if ($cgi->param('update')) { "WHERE whine_events.id = ? " . "AND whine_events.owner_userid = ?"); $sth->execute($eventid, $userid); - @ids = @{$sth->fetchall_arrayref}; + my @ids = @{$sth->fetchall_arrayref}; $sth = $dbh->prepare("DELETE FROM whine_queries " . "WHERE id=?"); for (@ids) { @@ -183,13 +175,10 @@ if ($cgi->param('update')) { # to be altered or deleted # Check schedules for changes - $sth = $dbh->prepare("SELECT id " . - "FROM whine_schedules " . - "WHERE eventid=?"); - $sth->execute($eventid); + my $schedules = Bugzilla::Whine::Schedule->match({ eventid => $eventid }); my @scheduleids = (); - while (my ($sid) = $sth->fetchrow_array) { - push @scheduleids, $sid; + foreach my $schedule (@$schedules) { + push @scheduleids, $schedule->id; } # we need to double-check all of the user IDs in mailto to make @@ -370,30 +359,24 @@ for my $event_id (keys %{$events}) { $events->{$event_id}->{'queries'} = []; # schedules - $sth = $dbh->prepare("SELECT run_day, run_time, mailto_type, mailto, id " . - "FROM whine_schedules " . - "WHERE eventid=?"); - $sth->execute($event_id); - for my $row (@{$sth->fetchall_arrayref}) { - my $mailto_type = $row->[2]; + my $schedules = Bugzilla::Whine::Schedule->match({ eventid => $event_id }); + foreach my $schedule (@$schedules) { + my $mailto_type = $schedule->mailto_is_group ? MAILTO_GROUP + : MAILTO_USER; my $mailto = ''; if ($mailto_type == MAILTO_USER) { - my $mailto_user = new Bugzilla::User($row->[3]); - $mailto = $mailto_user->login; + $mailto = $schedule->mailto->login; } elsif ($mailto_type == MAILTO_GROUP) { - $sth = $dbh->prepare("SELECT name FROM groups WHERE id=?"); - $sth->execute($row->[3]); - $mailto = $sth->fetch->[0]; - $mailto = "" unless Bugzilla::Group::ValidateGroupName( - $mailto, ($user)); + $mailto = $schedule->mailto->name; } + my $this_schedule = { - 'day' => $row->[0], - 'time' => $row->[1], + 'day' => $schedule->run_day, + 'time' => $schedule->run_time, 'mailto_type' => $mailto_type, 'mailto' => $mailto, - 'id' => $row->[4], + 'id' => $schedule->id, }; push @{$events->{$event_id}->{'schedule'}}, $this_schedule; } diff --git a/email_in.pl b/email_in.pl index 1ec2a19df..2d0ebe571 100755 --- a/email_in.pl +++ b/email_in.pl @@ -204,7 +204,7 @@ sub process_bug { foreach my $field (keys %fields) { $cgi->param(-name => $field, -value => $fields{$field}); } - $cgi->param('longdesclength', scalar $bug->longdescs); + $cgi->param('longdesclength', scalar @{ $bug->comments }); $cgi->param('token', issue_hash_token([$bug->id, $bug->delta_ts])); require 'process_bug.cgi'; diff --git a/enter_bug.cgi b/enter_bug.cgi index 071276f1d..ab0108748 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -289,6 +289,7 @@ sub pickos { /\(.*VMS.*\)/ && do {push @os, "OpenVMS";}; /\(.*Win.*\)/ && do { /\(.*Windows XP.*\)/ && do {push @os, "Windows XP";}; + /\(.*Windows NT 6\.1.*\)/ && do {push @os, "Windows 7";}; /\(.*Windows NT 6\.0.*\)/ && do {push @os, "Windows Vista";}; /\(.*Windows NT 5\.2.*\)/ && do {push @os, "Windows Server 2003";}; /\(.*Windows NT 5\.1.*\)/ && do {push @os, "Windows XP";}; @@ -434,17 +435,16 @@ if ($cloned_bug_id) { # We need to ensure that we respect the 'insider' status of # the first comment, if it has one. Either way, make a note # that this bug was cloned from another bug. - # We cannot use $cloned_bug->longdescs because this method - # depends on the "comment_sort_order" user pref, and we - # really want the first comment of the bug. - my $bug_desc = Bugzilla::Bug::GetComments($cloned_bug_id, 'oldest_to_newest'); - my $isprivate = $bug_desc->[0]->{'isprivate'}; + my $bug_desc = $cloned_bug->comments({ order => 'oldest_to_newest' })->[0]; + my $isprivate = $bug_desc->is_private; $vars->{'comment'} = ""; $vars->{'commentprivacy'} = 0; if (!$isprivate || Bugzilla->user->is_insider) { - $vars->{'comment'} = $bug_desc->[0]->{'body'}; + # We use "body" to avoid any format_comment text, which would be + # pointless to clone. + $vars->{'comment'} = $bug_desc->body; $vars->{'commentprivacy'} = $isprivate; } diff --git a/extensions/CVS/Tag b/extensions/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/extensions/CVS/Tag +++ b/extensions/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/extensions/bmp_convert/CVS/Entries b/extensions/bmp_convert/CVS/Entries index d8ce7f79b..089a2eb5a 100644 --- a/extensions/bmp_convert/CVS/Entries +++ b/extensions/bmp_convert/CVS/Entries @@ -1,3 +1,3 @@ -/disabled/1.1/Thu Aug 13 21:32:20 2009//TBUGZILLA-3_5_1 -/info.pl/1.1/Thu Aug 13 21:32:20 2009//TBUGZILLA-3_5_1 +/disabled/1.1/Thu Aug 13 21:32:20 2009//TBUGZILLA-3_5_2 +/info.pl/1.1/Thu Aug 13 21:32:20 2009//TBUGZILLA-3_5_2 D/code//// diff --git a/extensions/bmp_convert/CVS/Tag b/extensions/bmp_convert/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/bmp_convert/CVS/Tag +++ b/extensions/bmp_convert/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/bmp_convert/code/CVS/Entries b/extensions/bmp_convert/code/CVS/Entries index dd77b36dc..833557498 100644 --- a/extensions/bmp_convert/code/CVS/Entries +++ b/extensions/bmp_convert/code/CVS/Entries @@ -1,2 +1,2 @@ -/attachment-process_data.pl/1.1/Thu Aug 13 21:32:23 2009//TBUGZILLA-3_5_1 +/attachment-process_data.pl/1.1/Thu Aug 13 21:32:23 2009//TBUGZILLA-3_5_2 D diff --git a/extensions/bmp_convert/code/CVS/Tag b/extensions/bmp_convert/code/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/bmp_convert/code/CVS/Tag +++ b/extensions/bmp_convert/code/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/CVS/Entries b/extensions/example/CVS/Entries index 2efcf2e93..288f030e7 100644 --- a/extensions/example/CVS/Entries +++ b/extensions/example/CVS/Entries @@ -1,5 +1,5 @@ -/disabled/1.1/Fri Oct 19 07:58:49 2007//TBUGZILLA-3_5_1 -/info.pl/1.1/Mon May 19 18:38:27 2008//TBUGZILLA-3_5_1 +/disabled/1.1/Fri Oct 19 07:58:49 2007//TBUGZILLA-3_5_2 +/info.pl/1.1/Mon May 19 18:38:27 2008//TBUGZILLA-3_5_2 D/code//// D/lib//// D/template//// diff --git a/extensions/example/CVS/Tag b/extensions/example/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/CVS/Tag +++ b/extensions/example/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/code/CVS/Entries b/extensions/example/code/CVS/Entries index 8bcc4060c..b5d3dea8d 100644 --- a/extensions/example/code/CVS/Entries +++ b/extensions/example/code/CVS/Entries @@ -1,24 +1,28 @@ -/attachment-process_data.pl/1.1/Thu Aug 13 02:25:09 2009//TBUGZILLA-3_5_1 -/auth-login_methods.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_1 -/auth-verify_methods.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_1 -/bug-columns.pl/1.1/Thu Aug 21 22:56:49 2008//TBUGZILLA-3_5_1 -/bug-end_of_create.pl/1.2/Mon Jun 22 08:49:56 2009//TBUGZILLA-3_5_1 -/bug-end_of_update.pl/1.1/Wed Nov 5 19:15:07 2008//TBUGZILLA-3_5_1 -/bug-fields.pl/1.1/Thu Aug 21 22:56:49 2008//TBUGZILLA-3_5_1 -/bug-format_comment.pl/1.1/Wed Sep 30 23:42:59 2009//TBUGZILLA-3_5_1 -/buglist-columns.pl/1.1/Sat Jun 28 18:04:55 2008//TBUGZILLA-3_5_1 -/colchange-columns.pl/1.1/Tue Aug 19 21:28:03 2008//TBUGZILLA-3_5_1 -/config-add_panels.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_1 -/config-modify_panels.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_1 -/config.pl/1.1/Mon May 5 23:01:25 2008//TBUGZILLA-3_5_1 -/flag-end_of_update.pl/1.2/Wed Aug 5 12:36:14 2009//TBUGZILLA-3_5_1 -/install-before_final_checks.pl/1.1/Thu Aug 21 22:58:46 2008//TBUGZILLA-3_5_1 -/mailer-before_send.pl/1.1/Mon Oct 20 00:04:45 2008//TBUGZILLA-3_5_1 -/page-before_template.pl/1.1/Thu Aug 6 15:14:50 2009//TBUGZILLA-3_5_1 -/product-confirm_delete.pl/1.2/Thu Dec 18 17:33:35 2008//TBUGZILLA-3_5_1 -/sanitycheck-check.pl/1.1/Mon Sep 21 22:10:11 2009//TBUGZILLA-3_5_1 -/sanitycheck-repair.pl/1.1/Mon Sep 21 22:10:11 2009//TBUGZILLA-3_5_1 -/template-before_process.pl/1.1/Tue Oct 20 23:08:05 2009//TBUGZILLA-3_5_1 -/webservice-error_codes.pl/1.1/Tue May 27 22:09:05 2008//TBUGZILLA-3_5_1 -/webservice.pl/1.2/Fri Oct 19 08:01:51 2007//TBUGZILLA-3_5_1 +/attachment-process_data.pl/1.1/Thu Aug 13 02:25:09 2009//TBUGZILLA-3_5_2 +/auth-login_methods.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 +/auth-verify_methods.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 +/bug-columns.pl/1.1/Thu Aug 21 22:56:49 2008//TBUGZILLA-3_5_2 +/bug-end_of_create.pl/1.2/Mon Jun 22 08:49:56 2009//TBUGZILLA-3_5_2 +/bug-end_of_create_validators.pl/1.1/Wed Nov 18 07:15:23 2009//TBUGZILLA-3_5_2 +/bug-end_of_update.pl/1.1/Wed Nov 5 19:15:07 2008//TBUGZILLA-3_5_2 +/bug-fields.pl/1.1/Thu Aug 21 22:56:49 2008//TBUGZILLA-3_5_2 +/bug-format_comment.pl/1.1/Wed Sep 30 23:42:59 2009//TBUGZILLA-3_5_2 +/buglist-columns.pl/1.1/Sat Jun 28 18:04:55 2008//TBUGZILLA-3_5_2 +/colchange-columns.pl/1.1/Tue Aug 19 21:28:03 2008//TBUGZILLA-3_5_2 +/config-add_panels.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 +/config-modify_panels.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 +/config.pl/1.1/Mon May 5 23:01:25 2008//TBUGZILLA-3_5_2 +/flag-end_of_update.pl/1.2/Wed Aug 5 12:36:14 2009//TBUGZILLA-3_5_2 +/install-before_final_checks.pl/1.1/Thu Aug 21 22:58:46 2008//TBUGZILLA-3_5_2 +/mailer-before_send.pl/1.1/Mon Oct 20 00:04:45 2008//TBUGZILLA-3_5_2 +/object-before_create.pl/1.1/Wed Nov 18 07:11:36 2009//TBUGZILLA-3_5_2 +/object-before_set.pl/1.1/Wed Nov 18 07:17:52 2009//TBUGZILLA-3_5_2 +/object-end_of_create_validators.pl/1.1/Wed Nov 18 07:13:25 2009//TBUGZILLA-3_5_2 +/page-before_template.pl/1.1/Thu Aug 6 15:14:50 2009//TBUGZILLA-3_5_2 +/product-confirm_delete.pl/1.2/Thu Dec 18 17:33:35 2008//TBUGZILLA-3_5_2 +/sanitycheck-check.pl/1.1/Mon Sep 21 22:10:11 2009//TBUGZILLA-3_5_2 +/sanitycheck-repair.pl/1.1/Mon Sep 21 22:10:11 2009//TBUGZILLA-3_5_2 +/template-before_process.pl/1.1/Tue Oct 20 23:08:05 2009//TBUGZILLA-3_5_2 +/webservice-error_codes.pl/1.1/Tue May 27 22:09:05 2008//TBUGZILLA-3_5_2 +/webservice.pl/1.2/Fri Oct 19 08:01:51 2007//TBUGZILLA-3_5_2 D diff --git a/extensions/example/code/CVS/Tag b/extensions/example/code/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/code/CVS/Tag +++ b/extensions/example/code/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/code/bug-end_of_create_validators.pl b/extensions/example/code/bug-end_of_create_validators.pl new file mode 100644 index 000000000..95d64ae85 --- /dev/null +++ b/extensions/example/code/bug-end_of_create_validators.pl @@ -0,0 +1,37 @@ +# -*- 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 Example Plugin. +# +# The Initial Developer of the Original Code is ITA Software +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +use strict; +use warnings; +use Bugzilla; +use Data::Dumper; + +# This code doesn't actually *do* anything, it's just here to show you +# how to use this hook. +my $params = Bugzilla->hook_args->{'params'}; + +# Uncomment this line below to see a line in your webserver's error log +# containing all validated bug field values every time you file a bug. +# warn Dumper($params); + +# This would remove all ccs from the bug, preventing ANY ccs from being +# added on bug creation. +# $params->{cc} = []; diff --git a/extensions/example/code/object-before_create.pl b/extensions/example/code/object-before_create.pl new file mode 100644 index 000000000..5961b6186 --- /dev/null +++ b/extensions/example/code/object-before_create.pl @@ -0,0 +1,33 @@ +# -*- 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 Example Plugin. +# +# The Initial Developer of the Original Code is ITA Software +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> + +use strict; +use warnings; +use Bugzilla; + +my $args = Bugzilla->hook_args; +my $class = $args->{'class'}; +my $params = $args->{'params'}; + +# Note that this is a made-up class, for this example. +if ($class->isa('Bugzilla::ExampleObject')) { + warn "About to create an ExampleObject!"; + warn "Got the following parameters: " . join(', ', keys(%$params)); +} diff --git a/extensions/example/code/object-before_set.pl b/extensions/example/code/object-before_set.pl new file mode 100644 index 000000000..43007efdb --- /dev/null +++ b/extensions/example/code/object-before_set.pl @@ -0,0 +1,34 @@ +# -*- 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 Example Plugin. +# +# The Initial Developer of the Original Code is ITA Software +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +use strict; +use warnings; + +my $args = Bugzilla->hook_args; +my ($object, $field, $value) = @$args{qw(object field value)}; + +# Note that this is a made-up class, for this example. +if ($object->isa('Bugzilla::ExampleObject')) { + warn "The field $field is changing from " . $object->{$field} + . " to $value!"; +} + + diff --git a/extensions/example/code/object-end_of_create_validators.pl b/extensions/example/code/object-end_of_create_validators.pl new file mode 100644 index 000000000..42ed6f776 --- /dev/null +++ b/extensions/example/code/object-end_of_create_validators.pl @@ -0,0 +1,34 @@ +# -*- 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 Example Plugin. +# +# The Initial Developer of the Original Code is ITA Software +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> + +use strict; +use warnings; +use Bugzilla; + +my $args = Bugzilla->hook_args; +my $class = $args->{'class'}; +my $params = $args->{'params'}; + +# Note that this is a made-up class, for this example. +if ($class->isa('Bugzilla::ExampleObject')) { + # Always set example_field to 1, even if the validators said otherwise. + $params->{example_field} = 1; +} + diff --git a/extensions/example/lib/Bugzilla/CVS/Entries b/extensions/example/lib/Bugzilla/CVS/Entries index 2519df254..c4b781dba 100644 --- a/extensions/example/lib/Bugzilla/CVS/Entries +++ b/extensions/example/lib/Bugzilla/CVS/Entries @@ -1,2 +1,2 @@ -/ExampleHook.pm/1.1/Wed Sep 30 23:43:19 2009//TBUGZILLA-3_5_1 +/ExampleHook.pm/1.1/Wed Sep 30 23:43:19 2009//TBUGZILLA-3_5_2 D diff --git a/extensions/example/lib/Bugzilla/CVS/Tag b/extensions/example/lib/Bugzilla/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/lib/Bugzilla/CVS/Tag +++ b/extensions/example/lib/Bugzilla/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/lib/CVS/Entries b/extensions/example/lib/CVS/Entries index 742af7d80..c8f42298f 100644 --- a/extensions/example/lib/CVS/Entries +++ b/extensions/example/lib/CVS/Entries @@ -1,5 +1,5 @@ -/AuthLogin.pm/1.1/Wed Aug 6 23:38:31 2008//TBUGZILLA-3_5_1 -/AuthVerify.pm/1.1/Wed Aug 6 23:38:31 2008//TBUGZILLA-3_5_1 -/ConfigExample.pm/1.1/Mon May 5 23:01:31 2008//TBUGZILLA-3_5_1 -/WSExample.pm/1.4/Tue Mar 31 06:38:01 2009//TBUGZILLA-3_5_1 +/AuthLogin.pm/1.1/Wed Aug 6 23:38:31 2008//TBUGZILLA-3_5_2 +/AuthVerify.pm/1.1/Wed Aug 6 23:38:31 2008//TBUGZILLA-3_5_2 +/ConfigExample.pm/1.1/Mon May 5 23:01:31 2008//TBUGZILLA-3_5_2 +/WSExample.pm/1.4/Tue Mar 31 06:38:01 2009//TBUGZILLA-3_5_2 D/Bugzilla//// diff --git a/extensions/example/lib/CVS/Tag b/extensions/example/lib/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/lib/CVS/Tag +++ b/extensions/example/lib/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/template/CVS/Tag b/extensions/example/template/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/extensions/example/template/CVS/Tag +++ b/extensions/example/template/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/CVS/Tag b/extensions/example/template/en/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/extensions/example/template/en/CVS/Tag +++ b/extensions/example/template/en/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/admin/CVS/Tag b/extensions/example/template/en/admin/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/extensions/example/template/en/admin/CVS/Tag +++ b/extensions/example/template/en/admin/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/admin/sanitycheck/CVS/Entries b/extensions/example/template/en/admin/sanitycheck/CVS/Entries index eaada5ce7..10f9ec8d2 100644 --- a/extensions/example/template/en/admin/sanitycheck/CVS/Entries +++ b/extensions/example/template/en/admin/sanitycheck/CVS/Entries @@ -1,2 +1,2 @@ -/messages-statuses.html.tmpl/1.1/Mon Sep 21 22:10:14 2009//TBUGZILLA-3_5_1 +/messages-statuses.html.tmpl/1.1/Mon Sep 21 22:10:14 2009//TBUGZILLA-3_5_2 D diff --git a/extensions/example/template/en/admin/sanitycheck/CVS/Tag b/extensions/example/template/en/admin/sanitycheck/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/template/en/admin/sanitycheck/CVS/Tag +++ b/extensions/example/template/en/admin/sanitycheck/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/CVS/Tag b/extensions/example/template/en/default/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/extensions/example/template/en/default/CVS/Tag +++ b/extensions/example/template/en/default/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/admin/CVS/Tag b/extensions/example/template/en/default/admin/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/extensions/example/template/en/default/admin/CVS/Tag +++ b/extensions/example/template/en/default/admin/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/admin/params/CVS/Entries b/extensions/example/template/en/default/admin/params/CVS/Entries index 88130a930..80dce6fd0 100644 --- a/extensions/example/template/en/default/admin/params/CVS/Entries +++ b/extensions/example/template/en/default/admin/params/CVS/Entries @@ -1,2 +1,2 @@ -/example.html.tmpl/1.1/Mon May 5 23:01:33 2008//TBUGZILLA-3_5_1 +/example.html.tmpl/1.1/Mon May 5 23:01:33 2008//TBUGZILLA-3_5_2 D diff --git a/extensions/example/template/en/default/admin/params/CVS/Tag b/extensions/example/template/en/default/admin/params/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/template/en/default/admin/params/CVS/Tag +++ b/extensions/example/template/en/default/admin/params/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/pages/CVS/Entries b/extensions/example/template/en/default/pages/CVS/Entries index 7dc14d901..d2d64e653 100644 --- a/extensions/example/template/en/default/pages/CVS/Entries +++ b/extensions/example/template/en/default/pages/CVS/Entries @@ -1,2 +1,2 @@ -/example.html.tmpl/1.1/Thu Aug 6 15:14:55 2009//TBUGZILLA-3_5_1 +/example.html.tmpl/1.1/Thu Aug 6 15:14:55 2009//TBUGZILLA-3_5_2 D diff --git a/extensions/example/template/en/default/pages/CVS/Tag b/extensions/example/template/en/default/pages/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/template/en/default/pages/CVS/Tag +++ b/extensions/example/template/en/default/pages/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/global/CVS/Entries b/extensions/example/template/en/global/CVS/Entries index 099c9c091..1ca520bfb 100644 --- a/extensions/example/template/en/global/CVS/Entries +++ b/extensions/example/template/en/global/CVS/Entries @@ -1,2 +1,2 @@ -/user-error-errors.html.tmpl/1.1/Tue May 27 22:09:22 2008//TBUGZILLA-3_5_1 +/user-error-errors.html.tmpl/1.1/Tue May 27 22:09:22 2008//TBUGZILLA-3_5_2 D diff --git a/extensions/example/template/en/global/CVS/Tag b/extensions/example/template/en/global/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/extensions/example/template/en/global/CVS/Tag +++ b/extensions/example/template/en/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/images/CVS/Entries b/images/CVS/Entries index 8b57d80a2..758ea1714 100644 --- a/images/CVS/Entries +++ b/images/CVS/Entries @@ -1,3 +1,3 @@ -/favicon.ico/1.1/Wed Jul 30 11:13:48 2008/-kb/TBUGZILLA-3_5_1 -/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-3_5_1 +/favicon.ico/1.1/Wed Jul 30 11:13:48 2008/-kb/TBUGZILLA-3_5_2 +/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-3_5_2 D diff --git a/images/CVS/Tag b/images/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/images/CVS/Tag +++ b/images/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/importxml.pl b/importxml.pl index bd4aee186..c08f5c8b2 100755 --- a/importxml.pl +++ b/importxml.pl @@ -512,7 +512,7 @@ sub process_bug { $long_desc{'isprivate'} = $comment->{'att'}->{'isprivate'} || 0; # if one of the comments is private we need to set this flag - if ( $long_desc{'isprivate'} && $exporter->in_group($params->{'insidergroup'})) { + if ( $long_desc{'isprivate'} && $exporter->is_insider) { $private = 1; } my $data = $comment->field('thetext'); @@ -1198,7 +1198,7 @@ sub process_bug { $err .= "No attachment ID specified, dropping attachment\n"; next; } - if (!$exporter->in_group($params->{'insidergroup'}) && $att->{'isprivate'}){ + if (!$exporter->is_insider && $att->{'isprivate'}) { $err .= "Exporter not in insidergroup and attachment marked private.\n"; $err .= " Marking attachment public\n"; $att->{'isprivate'} = 0; @@ -1251,7 +1251,7 @@ sub process_bug { # Insert longdesc and append any errors my $worktime = $bug_fields{'actual_time'} || 0.0; - $worktime = 0.0 if (!$exporter->in_group($params->{'timetrackinggroup'})); + $worktime = 0.0 if (!$exporter->is_timetracker); $long_description .= "\n" . $comments; if ($err) { $long_description .= "\n$err\n"; diff --git a/js/CVS/Entries b/js/CVS/Entries index 71649f93a..392eb931b 100644 --- a/js/CVS/Entries +++ b/js/CVS/Entries @@ -1,11 +1,11 @@ -/TUI.js/1.2/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_1 -/attachment.js/1.7/Mon Sep 21 22:02:28 2009//TBUGZILLA-3_5_1 -/change-columns.js/1.2/Wed Feb 25 22:39:00 2009//TBUGZILLA-3_5_1 -/expanding-tree.js/1.2/Wed Feb 22 22:02:09 2006//TBUGZILLA-3_5_1 -/field.js/1.16/Sun Jun 21 19:33:44 2009//TBUGZILLA-3_5_1 -/global.js/1.3/Fri May 22 00:14:24 2009//TBUGZILLA-3_5_1 -/help.js/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_1 -/params.js/1.1/Thu Aug 2 22:38:44 2007//TBUGZILLA-3_5_1 -/productform.js/1.3/Tue Apr 17 22:08:06 2007//TBUGZILLA-3_5_1 -/util.js/1.8/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_1 +/TUI.js/1.2/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_2 +/attachment.js/1.7/Mon Sep 21 22:02:28 2009//TBUGZILLA-3_5_2 +/change-columns.js/1.2/Wed Feb 25 22:39:00 2009//TBUGZILLA-3_5_2 +/expanding-tree.js/1.2/Wed Feb 22 22:02:09 2006//TBUGZILLA-3_5_2 +/field.js/1.16/Sun Jun 21 19:33:44 2009//TBUGZILLA-3_5_2 +/global.js/1.4/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_2 +/help.js/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_2 +/params.js/1.1/Thu Aug 2 22:38:44 2007//TBUGZILLA-3_5_2 +/productform.js/1.3/Tue Apr 17 22:08:06 2007//TBUGZILLA-3_5_2 +/util.js/1.8/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_2 D/yui//// diff --git a/js/CVS/Tag b/js/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/js/CVS/Tag +++ b/js/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/js/global.js b/js/global.js index 77e40d4c8..2d3974150 100644 --- a/js/global.js +++ b/js/global.js @@ -110,3 +110,12 @@ function check_mini_login_fields( suffix ) { window.alert( mini_login_constants.warning ); return false; } + +function set_language( value ) { + YAHOO.util.Cookie.set('LANG', value, + { + expires: new Date('January 1, 2038'), + path: BUGZILLA.param.cookie_path + }); + window.location.reload() +} diff --git a/js/yui/CVS/Entries b/js/yui/CVS/Entries index afc1f89af..a425e3614 100644 --- a/js/yui/CVS/Entries +++ b/js/yui/CVS/Entries @@ -1,4 +1,4 @@ -/calendar.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_1 -/cookie.js/1.1/Wed Feb 11 19:41:15 2009//TBUGZILLA-3_5_1 -/yahoo-dom-event.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_1 +/calendar.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_2 +/cookie.js/1.1/Wed Feb 11 19:41:15 2009//TBUGZILLA-3_5_2 +/yahoo-dom-event.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_2 D diff --git a/js/yui/CVS/Tag b/js/yui/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/js/yui/CVS/Tag +++ b/js/yui/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/jsonrpc.cgi b/jsonrpc.cgi index 25fb4c175..ad910e79e 100755 --- a/jsonrpc.cgi +++ b/jsonrpc.cgi @@ -27,12 +27,12 @@ use Bugzilla; use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::WebService::Constants; -if (!Bugzilla->feature('jsonrpc')) { - ThrowCodeError('feature_disabled', { feature => 'jsonrpc' }); +BEGIN { + if (!Bugzilla->feature('jsonrpc')) { + ThrowCodeError('feature_disabled', { feature => 'jsonrpc' }); + } } - -# This eval allows runtests.pl to pass. -eval { require Bugzilla::WebService::Server::JSONRPC; }; +use Bugzilla::WebService::Server::JSONRPC; Bugzilla->usage_mode(USAGE_MODE_JSON); diff --git a/lib/CVS/Entries b/lib/CVS/Entries index 0baad04f9..4a9b12d8d 100644 --- a/lib/CVS/Entries +++ b/lib/CVS/Entries @@ -1,2 +1,2 @@ -/README/1.1/Fri Oct 19 06:46:19 2007//TBUGZILLA-3_5_1 +/README/1.1/Fri Oct 19 06:46:19 2007//TBUGZILLA-3_5_2 D diff --git a/lib/CVS/Tag b/lib/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/lib/CVS/Tag +++ b/lib/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/mod_perl.pl b/mod_perl.pl index 1e5c7fc63..8ca691f9c 100755 --- a/mod_perl.pl +++ b/mod_perl.pl @@ -34,12 +34,14 @@ use ModPerl::RegistryLoader (); use CGI (); CGI->compile(qw(:cgi -no_xhtml -oldstyle_urls :private_tempfiles :unique_headers SERVER_PUSH :push)); +use File::Basename (); use Template::Config (); Template::Config->preload(); use Bugzilla (); use Bugzilla::Constants (); use Bugzilla::CGI (); +use Bugzilla::Install::Requirements (); use Bugzilla::Mailer (); use Bugzilla::Template (); use Bugzilla::Util (); @@ -75,9 +77,12 @@ my $rl = new ModPerl::RegistryLoader(); # If we try to do this in "new" it fails because it looks for a # Bugzilla/ModPerl/ResponseHandler.pm $rl->{package} = 'Bugzilla::ModPerl::ResponseHandler'; -# Note that $cgi_path will be wrong if somebody puts the libraries -# in a different place than the CGIs. +my $feature_files = Bugzilla::Install::Requirements::map_files_to_features(); foreach my $file (glob "$cgi_path/*.cgi") { + my $base_filename = File::Basename::basename($file); + if (my $feature = $feature_files->{$base_filename}) { + next if !Bugzilla->feature($feature); + } Bugzilla::Util::trick_taint($file); $rl->handler($file, $file); } diff --git a/post_bug.cgi b/post_bug.cgi index 323e005f4..ed483aec9 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -103,9 +103,6 @@ if (defined $cgi->param('maketemplate')) { umask 0; -# get current time -my $timestamp = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); - # Group Validation my @selected_groups; foreach my $group (grep(/^bit-\d+$/, $cgi->param())) { @@ -160,7 +157,6 @@ my %bug_params; foreach my $field (@bug_fields) { $bug_params{$field} = $cgi->param($field); } -$bug_params{'creation_ts'} = $timestamp; $bug_params{'cc'} = [$cgi->param('cc')]; $bug_params{'groups'} = \@selected_groups; $bug_params{'comment'} = $comment; @@ -176,6 +172,10 @@ my $bug = Bugzilla::Bug->create(\%bug_params); # Get the bug ID back. my $id = $bug->bug_id; +# We do this directly from the DB because $bug->creation_ts has the seconds +# formatted out of it (which should be fixed some day). +my $timestamp = $dbh->selectrow_array( + 'SELECT creation_ts FROM bugs WHERE bug_id = ?', undef, $id); # Set Version cookie, but only if the user actually selected # a version on the page. @@ -229,13 +229,13 @@ if (defined($cgi->upload('data')) || $cgi->param('attachurl')) { # expects to find this exact string. my $new_comment = "Created an attachment (id=" . $attachment->id . ")\n" . $attachment->description . "\n"; - # We can use $bug->longdescs here because we are sure that the bug + # We can use $bug->comments here because we are sure that the bug # description is of type CMT_NORMAL. No need to include it if it's # empty, though. - if ($bug->longdescs->[0]->{'body'} !~ /^\s+$/) { - $new_comment .= "\n" . $bug->longdescs->[0]->{'body'}; + if ($bug->comments->[0]->body !~ /^\s+$/) { + $new_comment .= "\n" . $bug->comments->[0]->body; } - $bug->update_comment($bug->longdescs->[0]->{'id'}, $new_comment); + $bug->update_comment($bug->comments->[0]->id, $new_comment); } else { $vars->{'message'} = 'attachment_creation_failed'; diff --git a/process_bug.cgi b/process_bug.cgi index 36091b892..a4547ad6b 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -168,8 +168,7 @@ if (defined $cgi->param('delta_ts') $vars->{'start_at'} = $cgi->param('longdesclength'); # Always sort midair collision comments oldest to newest, # regardless of the user's personal preference. - $vars->{'comments'} = Bugzilla::Bug::GetComments($first_bug->id, - "oldest_to_newest"); + $vars->{'comments'} = $first_bug->comments({ order => "oldest_to_newest" }); $vars->{'bug'} = $first_bug; # The token contains the old delta_ts. We need a new one. $cgi->param('token', issue_hash_token([$first_bug->id, $first_bug->delta_ts])); @@ -553,7 +552,7 @@ foreach my $bug (@bug_objects) { # status, so we should inform the user about that. if (!is_open_state($new_status) && $changes->{'remaining_time'}) { $vars->{'message'} = "remaining_time_zeroed" - if Bugzilla->user->in_group(Bugzilla->params->{'timetrackinggroup'}); + if Bugzilla->user->is_timetracker; } } diff --git a/query.cgi b/query.cgi index d07773bde..ba8979adc 100755 --- a/query.cgi +++ b/query.cgi @@ -247,7 +247,7 @@ foreach my $val (editable_bug_fields()) { push @chfields, $val; } -if (Bugzilla->user->in_group(Bugzilla->params->{'timetrackinggroup'})) { +if (Bugzilla->user->is_timetracker) { push @chfields, "work_time"; } else { @chfields = grep($_ ne "estimated_time", @chfields); @@ -266,10 +266,8 @@ $vars->{'resolution'} = Bugzilla::Field->new({name => 'resolution'})->legal_valu my @fields = Bugzilla->get_fields({ obsolete => 0 }); # If we're not in the time-tracking group, exclude time-tracking fields. -if (!Bugzilla->user->in_group(Bugzilla->params->{'timetrackinggroup'})) { - foreach my $tt_field (qw(estimated_time remaining_time work_time - percentage_complete deadline)) - { +if (!Bugzilla->user->is_timetracker) { + foreach my $tt_field (TIMETRACKING_FIELDS) { @fields = grep($_->name ne $tt_field, @fields); } } diff --git a/report.cgi b/report.cgi index ca92fafc6..9a618c013 100755 --- a/report.cgi +++ b/report.cgi @@ -331,15 +331,14 @@ exit; sub get_names { my ($names, $isnumeric, $field) = @_; - - # These are all the fields we want to preserve the order of in reports. - my %fields = ('priority' => get_legal_field_values('priority'), - 'bug_severity' => get_legal_field_values('bug_severity'), - 'rep_platform' => get_legal_field_values('rep_platform'), - 'op_sys' => get_legal_field_values('op_sys'), - 'bug_status' => get_legal_field_values('bug_status'), - 'resolution' => [' ', @{get_legal_field_values('resolution')}]); + # These are all the fields we want to preserve the order of in reports. + my %fields; + my @select_fields = Bugzilla->get_fields({ is_select => 1 }); + foreach my $field (@select_fields) { + my @names = map($_->name, @{$field->legal_values}); + $fields{$field->name} = \@names; + } my $field_list = $fields{$field}; my @sorted; @@ -362,6 +361,6 @@ sub get_names { # ...or alphabetically, as appropriate. @sorted = sort(keys(%{$names})); } - + return \@sorted; } diff --git a/show_bug.cgi b/show_bug.cgi index ddb41ffec..64d2e875f 100755 --- a/show_bug.cgi +++ b/show_bug.cgi @@ -109,7 +109,7 @@ if ($cgi->param("field")) { @fieldlist = $cgi->param("field"); } -unless (Bugzilla->user->in_group(Bugzilla->params->{"timetrackinggroup"})) { +unless (Bugzilla->user->is_timetracker) { @fieldlist = grep($_ !~ /(^deadline|_time)$/, @fieldlist); } diff --git a/skins/CVS/Entries b/skins/CVS/Entries index 73d6bc1fc..680580bb7 100644 --- a/skins/CVS/Entries +++ b/skins/CVS/Entries @@ -1,3 +1,3 @@ -/.cvsignore/1.2/Tue Aug 14 21:54:35 2007//TBUGZILLA-3_5_1 +/.cvsignore/1.2/Tue Aug 14 21:54:35 2007//TBUGZILLA-3_5_2 D/contrib//// D/standard//// diff --git a/skins/CVS/Tag b/skins/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/CVS/Tag +++ b/skins/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/contrib/CVS/Tag b/skins/contrib/CVS/Tag index 2ce655efd..1cec2e2b3 100644 --- a/skins/contrib/CVS/Tag +++ b/skins/contrib/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_1 +TBUGZILLA-3_5_2 diff --git a/skins/contrib/Dusk/CVS/Entries b/skins/contrib/Dusk/CVS/Entries index 3e01342eb..e4186e6d6 100644 --- a/skins/contrib/Dusk/CVS/Entries +++ b/skins/contrib/Dusk/CVS/Entries @@ -1,5 +1,5 @@ -/.cvsignore/1.4/Thu Feb 12 02:17:55 2009//TBUGZILLA-3_5_1 -/buglist.css/1.2/Tue Aug 19 10:03:18 2008//TBUGZILLA-3_5_1 -/global.css/1.8/Wed Sep 30 08:58:49 2009//TBUGZILLA-3_5_1 -/index.css/1.1/Thu Feb 12 02:17:56 2009//TBUGZILLA-3_5_1 +/.cvsignore/1.4/Thu Feb 12 02:17:55 2009//TBUGZILLA-3_5_2 +/buglist.css/1.2/Tue Aug 19 10:03:18 2008//TBUGZILLA-3_5_2 +/global.css/1.8/Wed Sep 30 08:58:49 2009//TBUGZILLA-3_5_2 +/index.css/1.1/Thu Feb 12 02:17:56 2009//TBUGZILLA-3_5_2 D/index//// diff --git a/skins/contrib/Dusk/CVS/Tag b/skins/contrib/Dusk/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/contrib/Dusk/CVS/Tag +++ b/skins/contrib/Dusk/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/contrib/Dusk/index/CVS/Entries b/skins/contrib/Dusk/index/CVS/Entries index c6d924ca2..9ee173e01 100644 --- a/skins/contrib/Dusk/index/CVS/Entries +++ b/skins/contrib/Dusk/index/CVS/Entries @@ -1,4 +1,4 @@ -/account.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_1 -/bug.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_1 -/search.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_1 +/account.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_2 +/bug.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_2 +/search.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_2 D diff --git a/skins/contrib/Dusk/index/CVS/Tag b/skins/contrib/Dusk/index/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/contrib/Dusk/index/CVS/Tag +++ b/skins/contrib/Dusk/index/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/standard/CVS/Entries b/skins/standard/CVS/Entries index 29a8dbdf4..0934f8a77 100644 --- a/skins/standard/CVS/Entries +++ b/skins/standard/CVS/Entries @@ -1,20 +1,20 @@ -/IE-fixes.css/1.2/Fri Feb 8 23:18:59 2008//TBUGZILLA-3_5_1 -/admin.css/1.7/Mon Sep 8 20:37:50 2008//TBUGZILLA-3_5_1 -/buglist.css/1.18/Thu Oct 29 04:46:17 2009//TBUGZILLA-3_5_1 -/create_attachment.css/1.3/Fri Oct 23 21:32:06 2009//TBUGZILLA-3_5_1 -/dependency-tree.css/1.3/Sat Jan 6 19:48:10 2007//TBUGZILLA-3_5_1 -/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-3_5_1 -/editusers.css/1.3/Sun May 13 18:58:26 2007//TBUGZILLA-3_5_1 -/global.css/1.68/Fri Oct 23 21:32:06 2009//TBUGZILLA-3_5_1 -/help.css/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_1 -/index.css/1.12/Fri Oct 9 04:38:13 2009//TBUGZILLA-3_5_1 -/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-3_5_1 -/params.css/1.4/Thu Aug 2 22:38:45 2007//TBUGZILLA-3_5_1 -/release-notes.css/1.1/Thu Feb 22 18:41:29 2007//TBUGZILLA-3_5_1 -/show_bug.css/1.12/Thu Feb 12 19:04:53 2009//TBUGZILLA-3_5_1 -/show_multiple.css/1.4/Sun Jun 18 23:11:59 2006//TBUGZILLA-3_5_1 -/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-3_5_1 -/voting.css/1.1/Tue Feb 8 15:49:57 2005//TBUGZILLA-3_5_1 +/IE-fixes.css/1.2/Fri Feb 8 23:18:59 2008//TBUGZILLA-3_5_2 +/admin.css/1.7/Mon Sep 8 20:37:50 2008//TBUGZILLA-3_5_2 +/buglist.css/1.18/Thu Oct 29 04:46:17 2009//TBUGZILLA-3_5_2 +/create_attachment.css/1.3/Fri Oct 23 21:32:06 2009//TBUGZILLA-3_5_2 +/dependency-tree.css/1.3/Sat Jan 6 19:48:10 2007//TBUGZILLA-3_5_2 +/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-3_5_2 +/editusers.css/1.3/Sun May 13 18:58:26 2007//TBUGZILLA-3_5_2 +/global.css/1.69/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_2 +/help.css/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_2 +/index.css/1.12/Fri Oct 9 04:38:13 2009//TBUGZILLA-3_5_2 +/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-3_5_2 +/params.css/1.4/Thu Aug 2 22:38:45 2007//TBUGZILLA-3_5_2 +/release-notes.css/1.1/Thu Feb 22 18:41:29 2007//TBUGZILLA-3_5_2 +/show_bug.css/1.12/Thu Feb 12 19:04:53 2009//TBUGZILLA-3_5_2 +/show_multiple.css/1.4/Sun Jun 18 23:11:59 2006//TBUGZILLA-3_5_2 +/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-3_5_2 +/voting.css/1.1/Tue Feb 8 15:49:57 2005//TBUGZILLA-3_5_2 D/dependency-tree//// D/global//// D/index//// diff --git a/skins/standard/CVS/Tag b/skins/standard/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/standard/CVS/Tag +++ b/skins/standard/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/standard/dependency-tree/CVS/Entries b/skins/standard/dependency-tree/CVS/Entries index a01e3de25..0a90960f3 100644 --- a/skins/standard/dependency-tree/CVS/Entries +++ b/skins/standard/dependency-tree/CVS/Entries @@ -1,5 +1,5 @@ -/bug-item.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_1 -/tree-closed.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_1 -/tree-open.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_1 -/tree.png/1.1/Tue May 23 00:31:35 2006/-kb/TBUGZILLA-3_5_1 +/bug-item.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_2 +/tree-closed.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_2 +/tree-open.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_2 +/tree.png/1.1/Tue May 23 00:31:35 2006/-kb/TBUGZILLA-3_5_2 D diff --git a/skins/standard/dependency-tree/CVS/Tag b/skins/standard/dependency-tree/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/standard/dependency-tree/CVS/Tag +++ b/skins/standard/dependency-tree/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/standard/global.css b/skins/standard/global.css index 64c73c3d5..8eb7cc3b1 100644 --- a/skins/standard/global.css +++ b/skins/standard/global.css @@ -61,6 +61,18 @@ padding: 0.5em; } + #lang_links_container { + float: right; + } + #lang_links_container .links { + border: none; + padding: .5em; + } + + .lang_current { + font-weight: bold; + } + #message { border: 1px solid red; margin: 0.3em 0em; diff --git a/skins/standard/global/CVS/Entries b/skins/standard/global/CVS/Entries index 665e5fb16..3bd03342e 100644 --- a/skins/standard/global/CVS/Entries +++ b/skins/standard/global/CVS/Entries @@ -1,8 +1,8 @@ -/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-3_5_1 -/calendar.png/1.1/Thu Nov 29 02:20:30 2007/-kb/TBUGZILLA-3_5_1 -/down.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_1 -/header.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-3_5_1 -/left.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_1 -/right.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_1 -/up.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_1 +/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-3_5_2 +/calendar.png/1.1/Thu Nov 29 02:20:30 2007/-kb/TBUGZILLA-3_5_2 +/down.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 +/header.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-3_5_2 +/left.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 +/right.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 +/up.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 D diff --git a/skins/standard/global/CVS/Tag b/skins/standard/global/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/standard/global/CVS/Tag +++ b/skins/standard/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/standard/index/CVS/Entries b/skins/standard/index/CVS/Entries index 4e05eed86..e5df3dfd1 100644 --- a/skins/standard/index/CVS/Entries +++ b/skins/standard/index/CVS/Entries @@ -1,4 +1,4 @@ -/account.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_1 -/bug.gif/1.3/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_1 -/search.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_1 +/account.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_2 +/bug.gif/1.3/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_2 +/search.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_2 D diff --git a/skins/standard/index/CVS/Tag b/skins/standard/index/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/standard/index/CVS/Tag +++ b/skins/standard/index/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/skins/standard/yui/CVS/Entries b/skins/standard/yui/CVS/Entries index 7486dde6c..80073efec 100644 --- a/skins/standard/yui/CVS/Entries +++ b/skins/standard/yui/CVS/Entries @@ -1,3 +1,3 @@ -/calendar.css/1.2/Thu Jan 15 01:01:25 2009//TBUGZILLA-3_5_1 -/sprite.png/1.2/Thu Jan 15 01:01:26 2009/-kb/TBUGZILLA-3_5_1 +/calendar.css/1.2/Thu Jan 15 01:01:25 2009//TBUGZILLA-3_5_2 +/sprite.png/1.2/Thu Jan 15 01:01:26 2009/-kb/TBUGZILLA-3_5_2 D diff --git a/skins/standard/yui/CVS/Tag b/skins/standard/yui/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/skins/standard/yui/CVS/Tag +++ b/skins/standard/yui/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/summarize_time.cgi b/summarize_time.cgi index 35ef5f33f..6f9580ac2 100755 --- a/summarize_time.cgi +++ b/summarize_time.cgi @@ -259,7 +259,7 @@ my $vars = {}; Bugzilla->switch_to_shadow_db(); -$user->in_group(Bugzilla->params->{"timetrackinggroup"}) +$user->is_timetracker || ThrowUserError("auth_failure", {group => "time-tracking", action => "access", object => "timetracking_summaries"}); diff --git a/t/001compile.t b/t/001compile.t index 07e47160a..3e4273492 100644 --- a/t/001compile.t +++ b/t/001compile.t @@ -13,11 +13,11 @@ # The Original Code are the Bugzilla Tests. # # The Initial Developer of the Original Code is Zach Lipton -# Portions created by Zach Lipton are -# Copyright (C) 2001 Zach Lipton. All -# Rights Reserved. +# Portions created by Zach Lipton are Copyright (C) 2001 Zach Lipton. +# All Rights Reserved. # # Contributor(s): Zach Lipton <zach@zachlipton.com> +# Max Kanat-Alexander <mkanat@bugzilla.org> ################# @@ -25,91 +25,77 @@ ###Compilation### use strict; +use 5.008001; use lib qw(. lib t); -use Bugzilla::Constants; use Support::Files; - use Test::More tests => scalar(@Support::Files::testitems); -# Need this to get the available driver information -use DBI; -my @DBI_drivers = DBI->available_drivers; - -# Bugzilla requires Perl 5.8.1 now. Checksetup will tell you this if you run it, but -# it tests it in a polite/passive way that won't make it fail at compile time. We'll -# slip in a compile-time failure if it's missing here so a tinderbox on < 5.8.1 won't -# pass and mistakenly let people think Bugzilla works on any perl below 5.8.1. -require 5.008001; - -# Capture the TESTOUT from Test::More or Test::Builder for printing errors. -# This will handle verbosity for us automatically. -my $fh; -{ - local $^W = 0; # Don't complain about non-existent filehandles - if (-e \*Test::More::TESTOUT) { - $fh = \*Test::More::TESTOUT; - } elsif (-e \*Test::Builder::TESTOUT) { - $fh = \*Test::Builder::TESTOUT; - } else { - $fh = \*STDOUT; - } +BEGIN { + use_ok('Bugzilla::Constants'); + use_ok('Bugzilla::Install::Requirements'); + use_ok('Bugzilla'); } -my @testitems = @Support::Files::testitems; -my $perlapp = "\"$^X\""; - -# Test the scripts by compiling them +sub compile_file { + my ($file) = @_; -foreach my $file (@testitems) { - $file =~ s/\s.*$//; # nuke everything after the first space (#comment) - next if (!$file); # skip null entries + # Don't allow CPAN.pm to modify the global @INC, which the version + # shipped with Perl 5.8.8 does. (It gets loaded by + # Bugzilla::Install::CPAN.) + local @INC = @INC; - # Skip mod_perl.pl in all cases. It doesn't compile correctly from the command line. - if ($file eq 'mod_perl.pl') { - ok(1, "Skipping mod_perl.pl"); - next; + if ($file =~ s/\.pm$//) { + $file =~ s{/}{::}g; + use_ok($file); + return; } - # Check that we have a DBI module to support the DB, if this is a database - # module (but not Schema) - if ($file =~ m#Bugzilla/DB/([^/]+)\.pm$# && $file ne "Bugzilla/DB/Schema.pm") { - if (!grep(lc($_) =~ /$1/i, @DBI_drivers)) { - ok(1,$file." - Skipping, as the DBD module not installed"); - next; - } - } + open(my $fh, $file); + my $bang = <$fh>; + close $fh; - open (FILE,$file); - my $bang = <FILE>; - close (FILE); my $T = ""; if ($bang =~ m/#!\S*perl\s+-.*T/) { $T = "T"; } - my $command = "$perlapp -c$T $file 2>&1"; - my $loginfo=`$command`; - #print '@@'.$loginfo.'##'; - if ($loginfo =~ /syntax ok$/im) { - # Special hack due to CPAN.pm on Windows with Cygwin installed throwing - # strings of the form "Set up gcc environment - 3.4.4 (cygming special, - # gdc 0.12, using dmd 0.125)". See bug 416047 for details. - if (ON_WINDOWS - && grep($_ eq $file, 'install-module.pl', 'Bugzilla/Install/CPAN.pm')) - { - $loginfo =~ s/^Set up gcc environment.*?\n//; + + my $perl = qq{"$^X"}; + my $output = `$perl -wc$T $file 2>&1`; + chomp($output); + my $return_val = $?; + $output =~ s/^\Q$file\E syntax OK$//ms; + diag($output) if $output; + ok(!$return_val, $file) or diag('--ERROR'); +} + +my @testitems = @Support::Files::testitems; +my $file_features = map_files_to_features(); + +# Test the scripts by compiling them +foreach my $file (@testitems) { + # These were already compiled, above. + next if ($file eq 'Bugzilla.pm' + or $file eq 'Bugzilla/Constants.pm' + or $file eq 'Bugzilla/Install/Requirements.pm'); + SKIP: { + if ($file eq 'mod_perl.pl') { + skip 'mod_perl.pl cannot be compiled from the command line', 1; } - if ($loginfo ne "$file syntax OK\n") { - ok(0,$file." --WARNING"); - print $fh $loginfo; + my $feature = $file_features->{$file}; + if ($feature and !Bugzilla->feature($feature)) { + skip "$file: $feature not enabled", 1; } - else { - ok(1,$file); + + # Check that we have a DBI module to support the DB, if this + # is a database module (but not Schema) + if ($file =~ m{Bugzilla/DB/([^/]+)\.pm$} + and $file ne "Bugzilla/DB/Schema.pm") + { + my $module = lc($1); + my $dbd = DB_MODULE->{$module}->{dbd}->{module}; + eval("use $dbd; 1") or skip "$file: $dbd not installed", 1; } - } - else { - ok(0,$file." --ERROR"); - print $fh $loginfo; + + compile_file($file); } } - -exit 0; diff --git a/t/CVS/Entries b/t/CVS/Entries index 7190526eb..a78040d2a 100644 --- a/t/CVS/Entries +++ b/t/CVS/Entries @@ -1,13 +1,13 @@ -/001compile.t/1.18/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_1 -/002goodperl.t/1.15/Wed Sep 8 22:46:34 2004//TBUGZILLA-3_5_1 -/003safesys.t/1.6/Sun Dec 5 14:13:27 2004//TBUGZILLA-3_5_1 -/004template.t/1.40/Wed Mar 5 17:19:48 2008//TBUGZILLA-3_5_1 -/005whitespace.t/1.15/Mon Mar 2 21:24:28 2009//TBUGZILLA-3_5_1 -/006spellcheck.t/1.6/Wed Jul 25 14:47:20 2007//TBUGZILLA-3_5_1 -/007util.t/1.13/Thu Jul 16 01:30:52 2009//TBUGZILLA-3_5_1 -/008filter.t/1.31/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_1 -/009bugwords.t/1.8/Wed Feb 25 19:24:46 2009//TBUGZILLA-3_5_1 -/010dependencies.t/1.1/Tue Sep 5 17:02:45 2006//TBUGZILLA-3_5_1 -/011pod.t/1.1/Tue Jul 26 14:23:50 2005//TBUGZILLA-3_5_1 -/012throwables.t/1.6/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_1 +/001compile.t/1.20/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_2 +/002goodperl.t/1.15/Wed Sep 8 22:46:34 2004//TBUGZILLA-3_5_2 +/003safesys.t/1.6/Sun Dec 5 14:13:27 2004//TBUGZILLA-3_5_2 +/004template.t/1.40/Wed Mar 5 17:19:48 2008//TBUGZILLA-3_5_2 +/005whitespace.t/1.15/Mon Mar 2 21:24:28 2009//TBUGZILLA-3_5_2 +/006spellcheck.t/1.6/Wed Jul 25 14:47:20 2007//TBUGZILLA-3_5_2 +/007util.t/1.13/Thu Jul 16 01:30:52 2009//TBUGZILLA-3_5_2 +/008filter.t/1.31/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_2 +/009bugwords.t/1.8/Wed Feb 25 19:24:46 2009//TBUGZILLA-3_5_2 +/010dependencies.t/1.1/Tue Sep 5 17:02:45 2006//TBUGZILLA-3_5_2 +/011pod.t/1.1/Tue Jul 26 14:23:50 2005//TBUGZILLA-3_5_2 +/012throwables.t/1.6/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_2 D/Support//// diff --git a/t/CVS/Tag b/t/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/t/CVS/Tag +++ b/t/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/t/Support/CVS/Entries b/t/Support/CVS/Entries index fab4e586c..279a4e3e6 100644 --- a/t/Support/CVS/Entries +++ b/t/Support/CVS/Entries @@ -1,4 +1,4 @@ -/Files.pm/1.24/Wed Apr 8 08:53:14 2009//TBUGZILLA-3_5_1 -/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-3_5_1 -/Templates.pm/1.15/Tue Jul 4 22:25:47 2006//TBUGZILLA-3_5_1 +/Files.pm/1.25/Tue Nov 10 21:19:48 2009//TBUGZILLA-3_5_2 +/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-3_5_2 +/Templates.pm/1.15/Tue Jul 4 22:25:47 2006//TBUGZILLA-3_5_2 D diff --git a/t/Support/CVS/Tag b/t/Support/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/t/Support/CVS/Tag +++ b/t/Support/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/t/Support/Files.pm b/t/Support/Files.pm index 07f1c2f6c..d24cc2264 100644 --- a/t/Support/Files.pm +++ b/t/Support/Files.pm @@ -25,44 +25,14 @@ package Support::Files; use File::Find; -# exclude_deps is a hash of arrays listing the files to be excluded -# if a module is not available -# @additional_files = (); -%exclude_deps = ( - 'XML::Twig' => ['importxml.pl'], - 'Net::LDAP' => ['Bugzilla/Auth/Verify/LDAP.pm'], - 'Authen::Radius' => ['Bugzilla/Auth/Verify/RADIUS.pm'], - 'Email::Reply' => ['email_in.pl'], - 'Email::MIME::Attachment::Stripper' => ['email_in.pl'], - 'JSON::RPC' => ['Bugzilla/WebService/Server/JSONRPC.pm'] -); - @files = glob('*'); find(sub { push(@files, $File::Find::name) if $_ =~ /\.pm$/;}, 'Bugzilla'); -sub have_pkg { - my ($pkg) = @_; - my ($msg, $vnum, $vstr); - no strict 'refs'; - eval { my $p; ($p = $pkg . ".pm") =~ s!::!/!g; require $p; }; - return !($@); -} - -@exclude_files = (); -foreach $dep (keys(%exclude_deps)) { - if (!have_pkg($dep)) { - push @exclude_files, @{$exclude_deps{$dep}}; - } -} - sub isTestingFile { my ($file) = @_; my $exclude; - foreach $exclude (@exclude_files) { - if ($file eq $exclude) { return undef; } # get rid of excluded files. - } if ($file =~ /\.cgi$|\.pl$|\.pm$/) { return 1; diff --git a/template/CVS/Entries b/template/CVS/Entries index d65293318..9a7fdaf1e 100644 --- a/template/CVS/Entries +++ b/template/CVS/Entries @@ -1,2 +1,2 @@ -/.cvsignore/1.3/Tue May 7 21:33:53 2002//TBUGZILLA-3_5_1 +/.cvsignore/1.3/Tue May 7 21:33:53 2002//TBUGZILLA-3_5_2 D/en//// diff --git a/template/CVS/Tag b/template/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/CVS/Tag +++ b/template/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/CVS/Entries b/template/en/CVS/Entries index 118357248..e3db144a5 100644 --- a/template/en/CVS/Entries +++ b/template/en/CVS/Entries @@ -1,3 +1,3 @@ -/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-3_5_1 +/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-3_5_2 D/default//// D/extension//// diff --git a/template/en/CVS/Tag b/template/en/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/CVS/Tag +++ b/template/en/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/CVS/Entries b/template/en/default/CVS/Entries index 5e0710b1e..8fd4fefdb 100644 --- a/template/en/default/CVS/Entries +++ b/template/en/default/CVS/Entries @@ -1,9 +1,9 @@ -/config.js.tmpl/1.12/Wed Sep 24 02:55:22 2008//TBUGZILLA-3_5_1 -/config.rdf.tmpl/1.17/Thu Jan 29 21:00:24 2009//TBUGZILLA-3_5_1 -/filterexceptions.pl/1.131/Mon Oct 26 11:28:49 2009//TBUGZILLA-3_5_1 -/index.html.tmpl/1.47/Sat Oct 24 05:21:09 2009//TBUGZILLA-3_5_1 -/sidebar.xul.tmpl/1.27/Sun Mar 1 23:42:53 2009//TBUGZILLA-3_5_1 -/welcome-admin.html.tmpl/1.5/Sun Jan 25 22:41:37 2009//TBUGZILLA-3_5_1 +/config.js.tmpl/1.12/Wed Sep 24 02:55:22 2008//TBUGZILLA-3_5_2 +/config.rdf.tmpl/1.17/Thu Jan 29 21:00:24 2009//TBUGZILLA-3_5_2 +/filterexceptions.pl/1.131/Mon Oct 26 11:28:49 2009//TBUGZILLA-3_5_2 +/index.html.tmpl/1.47/Sat Oct 24 05:21:09 2009//TBUGZILLA-3_5_2 +/sidebar.xul.tmpl/1.27/Sun Mar 1 23:42:53 2009//TBUGZILLA-3_5_2 +/welcome-admin.html.tmpl/1.5/Sun Jan 25 22:41:37 2009//TBUGZILLA-3_5_2 D/account//// D/admin//// D/attachment//// diff --git a/template/en/default/CVS/Tag b/template/en/default/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/CVS/Tag +++ b/template/en/default/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/account/CVS/Entries b/template/en/default/account/CVS/Entries index 1a071a2c9..33b9f6377 100644 --- a/template/en/default/account/CVS/Entries +++ b/template/en/default/account/CVS/Entries @@ -1,7 +1,7 @@ -/cancel-token.txt.tmpl/1.16/Thu Jan 8 16:09:56 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.13/Tue Oct 28 21:27:20 2008//TBUGZILLA-3_5_1 -/created.html.tmpl/1.9/Mon Aug 20 18:24:40 2007//TBUGZILLA-3_5_1 -/profile-activity.html.tmpl/1.6/Mon Jul 20 04:17:40 2009//TBUGZILLA-3_5_1 +/cancel-token.txt.tmpl/1.16/Thu Jan 8 16:09:56 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.13/Tue Oct 28 21:27:20 2008//TBUGZILLA-3_5_2 +/created.html.tmpl/1.9/Mon Aug 20 18:24:40 2007//TBUGZILLA-3_5_2 +/profile-activity.html.tmpl/1.6/Mon Jul 20 04:17:40 2009//TBUGZILLA-3_5_2 D/auth//// D/email//// D/password//// diff --git a/template/en/default/account/CVS/Tag b/template/en/default/account/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/account/CVS/Tag +++ b/template/en/default/account/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/account/auth/CVS/Entries b/template/en/default/account/auth/CVS/Entries index c8499230e..c539b03ab 100644 --- a/template/en/default/account/auth/CVS/Entries +++ b/template/en/default/account/auth/CVS/Entries @@ -1,3 +1,3 @@ -/login-small.html.tmpl/1.21/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_1 -/login.html.tmpl/1.23/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_1 +/login-small.html.tmpl/1.21/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_2 +/login.html.tmpl/1.23/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/account/auth/CVS/Tag b/template/en/default/account/auth/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/account/auth/CVS/Tag +++ b/template/en/default/account/auth/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/account/email/CVS/Entries b/template/en/default/account/email/CVS/Entries index 5340486e9..2464d55ed 100644 --- a/template/en/default/account/email/CVS/Entries +++ b/template/en/default/account/email/CVS/Entries @@ -1,6 +1,6 @@ -/change-new.txt.tmpl/1.13/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_1 -/change-old.txt.tmpl/1.14/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_1 -/confirm-new.html.tmpl/1.6/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_1 -/confirm.html.tmpl/1.11/Mon Aug 20 18:24:41 2007//TBUGZILLA-3_5_1 -/request-new.txt.tmpl/1.7/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_1 +/change-new.txt.tmpl/1.13/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 +/change-old.txt.tmpl/1.14/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 +/confirm-new.html.tmpl/1.6/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 +/confirm.html.tmpl/1.11/Mon Aug 20 18:24:41 2007//TBUGZILLA-3_5_2 +/request-new.txt.tmpl/1.7/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/account/email/CVS/Tag b/template/en/default/account/email/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/account/email/CVS/Tag +++ b/template/en/default/account/email/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/account/password/CVS/Entries b/template/en/default/account/password/CVS/Entries index 1de7d4ce3..0ff9ee45d 100644 --- a/template/en/default/account/password/CVS/Entries +++ b/template/en/default/account/password/CVS/Entries @@ -1,3 +1,3 @@ -/forgotten-password.txt.tmpl/1.11/Thu Jan 8 16:10:04 2009//TBUGZILLA-3_5_1 -/set-forgotten-password.html.tmpl/1.8/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_1 +/forgotten-password.txt.tmpl/1.11/Thu Jan 8 16:10:04 2009//TBUGZILLA-3_5_2 +/set-forgotten-password.html.tmpl/1.8/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/account/password/CVS/Tag b/template/en/default/account/password/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/account/password/CVS/Tag +++ b/template/en/default/account/password/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/account/prefs/CVS/Entries b/template/en/default/account/prefs/CVS/Entries index d92a4e65b..c8243f733 100644 --- a/template/en/default/account/prefs/CVS/Entries +++ b/template/en/default/account/prefs/CVS/Entries @@ -1,7 +1,7 @@ -/account.html.tmpl/1.10/Sat Oct 18 16:33:33 2008//TBUGZILLA-3_5_1 -/email.html.tmpl/1.32/Wed Dec 10 18:26:55 2008//TBUGZILLA-3_5_1 -/permissions.html.tmpl/1.14/Fri Aug 8 01:26:38 2008//TBUGZILLA-3_5_1 -/prefs.html.tmpl/1.31/Mon Feb 2 19:21:10 2009//TBUGZILLA-3_5_1 -/saved-searches.html.tmpl/1.21/Tue Sep 15 16:52:09 2009//TBUGZILLA-3_5_1 -/settings.html.tmpl/1.6/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_1 +/account.html.tmpl/1.10/Sat Oct 18 16:33:33 2008//TBUGZILLA-3_5_2 +/email.html.tmpl/1.32/Wed Dec 10 18:26:55 2008//TBUGZILLA-3_5_2 +/permissions.html.tmpl/1.14/Fri Aug 8 01:26:38 2008//TBUGZILLA-3_5_2 +/prefs.html.tmpl/1.31/Mon Feb 2 19:21:10 2009//TBUGZILLA-3_5_2 +/saved-searches.html.tmpl/1.21/Tue Sep 15 16:52:09 2009//TBUGZILLA-3_5_2 +/settings.html.tmpl/1.6/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/account/prefs/CVS/Tag b/template/en/default/account/prefs/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/account/prefs/CVS/Tag +++ b/template/en/default/account/prefs/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/CVS/Entries b/template/en/default/admin/CVS/Entries index 2d7a4933c..0f614361e 100644 --- a/template/en/default/admin/CVS/Entries +++ b/template/en/default/admin/CVS/Entries @@ -1,7 +1,7 @@ -/admin.html.tmpl/1.7/Fri Aug 8 01:26:51 2008//TBUGZILLA-3_5_1 -/confirm-action.html.tmpl/1.3/Mon Feb 2 18:34:38 2009//TBUGZILLA-3_5_1 -/sudo.html.tmpl/1.8/Wed Nov 19 22:08:09 2008//TBUGZILLA-3_5_1 -/table.html.tmpl/1.11/Thu Jun 25 01:01:18 2009//TBUGZILLA-3_5_1 +/admin.html.tmpl/1.7/Fri Aug 8 01:26:51 2008//TBUGZILLA-3_5_2 +/confirm-action.html.tmpl/1.3/Mon Feb 2 18:34:38 2009//TBUGZILLA-3_5_2 +/sudo.html.tmpl/1.8/Wed Nov 19 22:08:09 2008//TBUGZILLA-3_5_2 +/table.html.tmpl/1.11/Thu Jun 25 01:01:18 2009//TBUGZILLA-3_5_2 D/classifications//// D/components//// D/custom_fields//// diff --git a/template/en/default/admin/CVS/Tag b/template/en/default/admin/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/CVS/Tag +++ b/template/en/default/admin/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/classifications/CVS/Entries b/template/en/default/admin/classifications/CVS/Entries index 192fdc86c..1b4140302 100644 --- a/template/en/default/admin/classifications/CVS/Entries +++ b/template/en/default/admin/classifications/CVS/Entries @@ -1,7 +1,7 @@ -/add.html.tmpl/1.6/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_1 -/del.html.tmpl/1.9/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.13/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.1/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_1 -/reclassify.html.tmpl/1.10/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_1 -/select.html.tmpl/1.8/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_1 +/add.html.tmpl/1.6/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 +/del.html.tmpl/1.9/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.13/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.1/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 +/reclassify.html.tmpl/1.10/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 +/select.html.tmpl/1.8/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/classifications/CVS/Tag b/template/en/default/admin/classifications/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/classifications/CVS/Tag +++ b/template/en/default/admin/classifications/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/components/CVS/Entries b/template/en/default/admin/components/CVS/Entries index e32728f20..3501fee26 100644 --- a/template/en/default/admin/components/CVS/Entries +++ b/template/en/default/admin/components/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.13/Mon Jun 1 14:43:18 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.17/Tue Mar 17 16:22:52 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.16/Wed Nov 19 21:01:49 2008//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.7/Thu Jun 25 01:01:19 2009//TBUGZILLA-3_5_1 -/select-product.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.13/Mon Jun 1 14:43:18 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.17/Tue Mar 17 16:22:52 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.16/Wed Nov 19 21:01:49 2008//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.7/Thu Jun 25 01:01:19 2009//TBUGZILLA-3_5_2 +/select-product.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/components/CVS/Tag b/template/en/default/admin/components/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/components/CVS/Tag +++ b/template/en/default/admin/components/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/custom_fields/CVS/Entries b/template/en/default/admin/custom_fields/CVS/Entries index eb9610166..9bc92aac6 100644 --- a/template/en/default/admin/custom_fields/CVS/Entries +++ b/template/en/default/admin/custom_fields/CVS/Entries @@ -1,6 +1,6 @@ -/cf-js.js.tmpl/1.6/Wed Jul 8 09:22:14 2009//TBUGZILLA-3_5_1 -/confirm-delete.html.tmpl/1.1/Wed Feb 6 16:18:13 2008//TBUGZILLA-3_5_1 -/create.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_1 -/list.html.tmpl/1.8/Thu Jun 25 01:01:20 2009//TBUGZILLA-3_5_1 +/cf-js.js.tmpl/1.6/Wed Jul 8 09:22:14 2009//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.1/Wed Feb 6 16:18:13 2008//TBUGZILLA-3_5_2 +/create.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_2 +/list.html.tmpl/1.8/Thu Jun 25 01:01:20 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/custom_fields/CVS/Tag b/template/en/default/admin/custom_fields/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/custom_fields/CVS/Tag +++ b/template/en/default/admin/custom_fields/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/fieldvalues/CVS/Entries b/template/en/default/admin/fieldvalues/CVS/Entries index db458d487..643c32e0d 100644 --- a/template/en/default/admin/fieldvalues/CVS/Entries +++ b/template/en/default/admin/fieldvalues/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.14/Sun Jun 21 19:33:47 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.12/Fri Nov 7 11:34:50 2008//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.15/Fri Jul 17 22:40:09 2009//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.7/Fri Oct 3 01:40:18 2008//TBUGZILLA-3_5_1 -/list.html.tmpl/1.11/Fri Jul 17 22:40:10 2009//TBUGZILLA-3_5_1 -/select-field.html.tmpl/1.4/Mon Aug 20 18:24:46 2007//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.14/Sun Jun 21 19:33:47 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.12/Fri Nov 7 11:34:50 2008//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.15/Fri Jul 17 22:40:09 2009//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.7/Fri Oct 3 01:40:18 2008//TBUGZILLA-3_5_2 +/list.html.tmpl/1.11/Fri Jul 17 22:40:10 2009//TBUGZILLA-3_5_2 +/select-field.html.tmpl/1.4/Mon Aug 20 18:24:46 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/fieldvalues/CVS/Tag b/template/en/default/admin/fieldvalues/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/fieldvalues/CVS/Tag +++ b/template/en/default/admin/fieldvalues/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/flag-type/CVS/Entries b/template/en/default/admin/flag-type/CVS/Entries index 7eec1b47a..3447bb3d8 100644 --- a/template/en/default/admin/flag-type/CVS/Entries +++ b/template/en/default/admin/flag-type/CVS/Entries @@ -1,4 +1,4 @@ -/confirm-delete.html.tmpl/1.10/Mon Feb 2 18:59:18 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.26/Mon Oct 22 21:42:00 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.21/Fri Jul 31 15:57:22 2009//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.10/Mon Feb 2 18:59:18 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.26/Mon Oct 22 21:42:00 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.21/Fri Jul 31 15:57:22 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/flag-type/CVS/Tag b/template/en/default/admin/flag-type/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/flag-type/CVS/Tag +++ b/template/en/default/admin/flag-type/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/groups/CVS/Entries b/template/en/default/admin/groups/CVS/Entries index 5bcca16f7..9477c6863 100644 --- a/template/en/default/admin/groups/CVS/Entries +++ b/template/en/default/admin/groups/CVS/Entries @@ -1,6 +1,6 @@ -/confirm-remove.html.tmpl/1.5/Sun Dec 16 10:32:54 2007//TBUGZILLA-3_5_1 -/create.html.tmpl/1.14/Sat Oct 18 16:33:35 2008//TBUGZILLA-3_5_1 -/delete.html.tmpl/1.14/Tue Aug 18 23:19:57 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.19/Mon Aug 10 11:09:33 2009//TBUGZILLA-3_5_1 -/list.html.tmpl/1.14/Thu Jun 25 01:01:23 2009//TBUGZILLA-3_5_1 +/confirm-remove.html.tmpl/1.5/Sun Dec 16 10:32:54 2007//TBUGZILLA-3_5_2 +/create.html.tmpl/1.14/Sat Oct 18 16:33:35 2008//TBUGZILLA-3_5_2 +/delete.html.tmpl/1.14/Tue Aug 18 23:19:57 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.19/Mon Aug 10 11:09:33 2009//TBUGZILLA-3_5_2 +/list.html.tmpl/1.14/Thu Jun 25 01:01:23 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/groups/CVS/Tag b/template/en/default/admin/groups/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/groups/CVS/Tag +++ b/template/en/default/admin/groups/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/keywords/CVS/Entries b/template/en/default/admin/keywords/CVS/Entries index 66a52af51..3b9fb45b3 100644 --- a/template/en/default/admin/keywords/CVS/Entries +++ b/template/en/default/admin/keywords/CVS/Entries @@ -1,5 +1,5 @@ -/confirm-delete.html.tmpl/1.8/Mon Feb 2 18:59:19 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.9/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.10/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.12/Mon Feb 2 18:59:20 2009//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.8/Mon Feb 2 18:59:19 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.9/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.10/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.12/Mon Feb 2 18:59:20 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/keywords/CVS/Tag b/template/en/default/admin/keywords/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/keywords/CVS/Tag +++ b/template/en/default/admin/keywords/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/milestones/CVS/Entries b/template/en/default/admin/milestones/CVS/Entries index 1c50a0d8d..86f9a77b2 100644 --- a/template/en/default/admin/milestones/CVS/Entries +++ b/template/en/default/admin/milestones/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_1 -/create.html.tmpl/1.8/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.4/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.7/Thu Jun 25 01:01:24 2009//TBUGZILLA-3_5_1 -/select-product.html.tmpl/1.5/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 +/create.html.tmpl/1.8/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.4/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.7/Thu Jun 25 01:01:24 2009//TBUGZILLA-3_5_2 +/select-product.html.tmpl/1.5/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/milestones/CVS/Tag b/template/en/default/admin/milestones/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/milestones/CVS/Tag +++ b/template/en/default/admin/milestones/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/params/CVS/Entries b/template/en/default/admin/params/CVS/Entries index 3c7b32210..f15ecfcfc 100644 --- a/template/en/default/admin/params/CVS/Entries +++ b/template/en/default/admin/params/CVS/Entries @@ -1,20 +1,20 @@ -/admin.html.tmpl/1.5/Wed Dec 10 18:26:56 2008//TBUGZILLA-3_5_1 -/attachment.html.tmpl/1.8/Thu Aug 13 21:32:26 2009//TBUGZILLA-3_5_1 -/auth.html.tmpl/1.5/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_1 -/bugchange.html.tmpl/1.8/Wed Dec 10 18:40:02 2008//TBUGZILLA-3_5_1 -/bugfields.html.tmpl/1.6/Fri Apr 17 22:27:39 2009//TBUGZILLA-3_5_1 -/bugmove.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_1 -/common.html.tmpl/1.7/Thu Oct 16 17:12:10 2008//TBUGZILLA-3_5_1 -/core.html.tmpl/1.13/Fri Oct 9 04:31:13 2009//TBUGZILLA-3_5_1 -/dependencygraph.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_1 -/editparams.html.tmpl/1.8/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_1 -/groupsecurity.html.tmpl/1.7/Tue Mar 31 19:17:03 2009//TBUGZILLA-3_5_1 -/index.html.tmpl/1.3/Thu Jan 15 00:53:22 2009//TBUGZILLA-3_5_1 -/ldap.html.tmpl/1.8/Wed May 21 22:59:24 2008//TBUGZILLA-3_5_1 -/mta.html.tmpl/1.13/Wed Dec 24 03:43:48 2008//TBUGZILLA-3_5_1 -/patchviewer.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_1 -/query.html.tmpl/1.7/Mon Jul 20 04:17:41 2009//TBUGZILLA-3_5_1 -/radius.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_1 -/shadowdb.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_1 -/usermatch.html.tmpl/1.4/Tue Mar 31 19:24:24 2009//TBUGZILLA-3_5_1 +/admin.html.tmpl/1.5/Wed Dec 10 18:26:56 2008//TBUGZILLA-3_5_2 +/attachment.html.tmpl/1.8/Thu Aug 13 21:32:26 2009//TBUGZILLA-3_5_2 +/auth.html.tmpl/1.5/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_2 +/bugchange.html.tmpl/1.8/Wed Dec 10 18:40:02 2008//TBUGZILLA-3_5_2 +/bugfields.html.tmpl/1.6/Fri Apr 17 22:27:39 2009//TBUGZILLA-3_5_2 +/bugmove.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 +/common.html.tmpl/1.8/Wed Nov 18 07:04:57 2009//TBUGZILLA-3_5_2 +/core.html.tmpl/1.13/Fri Oct 9 04:31:13 2009//TBUGZILLA-3_5_2 +/dependencygraph.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 +/editparams.html.tmpl/1.8/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 +/groupsecurity.html.tmpl/1.7/Tue Mar 31 19:17:03 2009//TBUGZILLA-3_5_2 +/index.html.tmpl/1.3/Thu Jan 15 00:53:22 2009//TBUGZILLA-3_5_2 +/ldap.html.tmpl/1.8/Wed May 21 22:59:24 2008//TBUGZILLA-3_5_2 +/mta.html.tmpl/1.13/Wed Dec 24 03:43:48 2008//TBUGZILLA-3_5_2 +/patchviewer.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 +/query.html.tmpl/1.7/Mon Jul 20 04:17:41 2009//TBUGZILLA-3_5_2 +/radius.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 +/shadowdb.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 +/usermatch.html.tmpl/1.4/Tue Mar 31 19:24:24 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/params/CVS/Tag b/template/en/default/admin/params/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/params/CVS/Tag +++ b/template/en/default/admin/params/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/params/common.html.tmpl b/template/en/default/admin/params/common.html.tmpl index c23c2ca9a..5b0d00429 100644 --- a/template/en/default/admin/params/common.html.tmpl +++ b/template/en/default/admin/params/common.html.tmpl @@ -22,6 +22,8 @@ # panel: hash representing the current panel. #%] +[% PROCESS "global/field-descs.none.tmpl" %] + [% sortlist_separator = '---' %] <dl> @@ -115,7 +117,17 @@ [% FOREACH item = param.choices %] <option value="[% item FILTER html %]" [% " selected=\"selected\"" IF item == Param(param.name) %]> - [% item FILTER html %] + [% IF param.name == "defaultseverity" %] + [% display_value("bug_severity", item) FILTER html %] + [% ELSIF param.name == "defaultplatform" %] + [% display_value("rep_platform", item) FILTER html %] + [% ELSIF param.name == "defaultopsys" %] + [% display_value("op_sys", item) FILTER html %] + [% ELSIF param.name == "duplicate_or_move_bug_status" %] + [% display_value("bug_status", item) FILTER html %] + [% ELSE %] + [% item FILTER html %] + [% END %] </option> [% END %] </select> diff --git a/template/en/default/admin/products/CVS/Entries b/template/en/default/admin/products/CVS/Entries index 48199c066..7c4b3c0e0 100644 --- a/template/en/default/admin/products/CVS/Entries +++ b/template/en/default/admin/products/CVS/Entries @@ -1,9 +1,9 @@ -/confirm-delete.html.tmpl/1.12/Wed May 20 23:10:13 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.8/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_1 -/edit-common.html.tmpl/1.11/Wed Sep 30 22:34:31 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.14/Thu Aug 14 16:36:10 2008//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.13/Tue Nov 3 23:48:32 2009//TBUGZILLA-3_5_1 -/list-classifications.html.tmpl/1.4/Thu Sep 20 21:23:44 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.7/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_1 -/updated.html.tmpl/1.9/Wed May 20 23:10:13 2009//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.12/Wed May 20 23:10:13 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.8/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_2 +/edit-common.html.tmpl/1.11/Wed Sep 30 22:34:31 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.14/Thu Aug 14 16:36:10 2008//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.13/Tue Nov 3 23:48:32 2009//TBUGZILLA-3_5_2 +/list-classifications.html.tmpl/1.4/Thu Sep 20 21:23:44 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.7/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_2 +/updated.html.tmpl/1.9/Wed May 20 23:10:13 2009//TBUGZILLA-3_5_2 D/groupcontrol//// diff --git a/template/en/default/admin/products/CVS/Tag b/template/en/default/admin/products/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/products/CVS/Tag +++ b/template/en/default/admin/products/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/products/groupcontrol/CVS/Entries b/template/en/default/admin/products/groupcontrol/CVS/Entries index 55e278a40..c8ae32c2f 100644 --- a/template/en/default/admin/products/groupcontrol/CVS/Entries +++ b/template/en/default/admin/products/groupcontrol/CVS/Entries @@ -1,4 +1,4 @@ -/confirm-edit.html.tmpl/1.9/Mon Aug 20 18:24:52 2007//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.12/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_1 -/updated.html.tmpl/1.4/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_1 +/confirm-edit.html.tmpl/1.9/Mon Aug 20 18:24:52 2007//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.12/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_2 +/updated.html.tmpl/1.4/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/products/groupcontrol/CVS/Tag b/template/en/default/admin/products/groupcontrol/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/products/groupcontrol/CVS/Tag +++ b/template/en/default/admin/products/groupcontrol/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/sanitycheck/CVS/Entries b/template/en/default/admin/sanitycheck/CVS/Entries index 7d5a5700e..6a90be1d0 100644 --- a/template/en/default/admin/sanitycheck/CVS/Entries +++ b/template/en/default/admin/sanitycheck/CVS/Entries @@ -1,3 +1,3 @@ -/list.html.tmpl/1.2/Mon Aug 20 18:24:53 2007//TBUGZILLA-3_5_1 -/messages.html.tmpl/1.11/Mon Sep 21 22:10:18 2009//TBUGZILLA-3_5_1 +/list.html.tmpl/1.2/Mon Aug 20 18:24:53 2007//TBUGZILLA-3_5_2 +/messages.html.tmpl/1.11/Mon Sep 21 22:10:18 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/sanitycheck/CVS/Tag b/template/en/default/admin/sanitycheck/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/sanitycheck/CVS/Tag +++ b/template/en/default/admin/sanitycheck/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/settings/CVS/Entries b/template/en/default/admin/settings/CVS/Entries index 49bc9a90f..79b06f9f8 100644 --- a/template/en/default/admin/settings/CVS/Entries +++ b/template/en/default/admin/settings/CVS/Entries @@ -1,2 +1,2 @@ -/edit.html.tmpl/1.9/Sun Jan 27 23:14:25 2008//TBUGZILLA-3_5_1 +/edit.html.tmpl/1.9/Sun Jan 27 23:14:25 2008//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/settings/CVS/Tag b/template/en/default/admin/settings/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/settings/CVS/Tag +++ b/template/en/default/admin/settings/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/users/CVS/Entries b/template/en/default/admin/users/CVS/Entries index 21d2a4176..746d56bfc 100644 --- a/template/en/default/admin/users/CVS/Entries +++ b/template/en/default/admin/users/CVS/Entries @@ -1,9 +1,9 @@ -/confirm-delete.html.tmpl/1.25/Fri Jan 23 22:22:12 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.5/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.15/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.7/Thu Jun 25 01:01:44 2009//TBUGZILLA-3_5_1 -/listselectvars.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_1 -/responsibilities.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_1 -/search.html.tmpl/1.6/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_1 -/userdata.html.tmpl/1.13/Fri Aug 8 01:26:58 2008//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.25/Fri Jan 23 22:22:12 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.5/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.15/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.7/Thu Jun 25 01:01:44 2009//TBUGZILLA-3_5_2 +/listselectvars.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 +/responsibilities.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 +/search.html.tmpl/1.6/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 +/userdata.html.tmpl/1.13/Fri Aug 8 01:26:58 2008//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/users/CVS/Tag b/template/en/default/admin/users/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/users/CVS/Tag +++ b/template/en/default/admin/users/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/versions/CVS/Entries b/template/en/default/admin/versions/CVS/Entries index f05b66d34..dd94d4bc5 100644 --- a/template/en/default/admin/versions/CVS/Entries +++ b/template/en/default/admin/versions/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.8/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_1 -/create.html.tmpl/1.7/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.7/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_1 -/list.html.tmpl/1.5/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_1 -/select-product.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_1 +/confirm-delete.html.tmpl/1.8/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 +/create.html.tmpl/1.7/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.7/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 +/list.html.tmpl/1.5/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 +/select-product.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/versions/CVS/Tag b/template/en/default/admin/versions/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/versions/CVS/Tag +++ b/template/en/default/admin/versions/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/workflow/CVS/Entries b/template/en/default/admin/workflow/CVS/Entries index 7cc24cb94..a1aca188c 100644 --- a/template/en/default/admin/workflow/CVS/Entries +++ b/template/en/default/admin/workflow/CVS/Entries @@ -1,3 +1,3 @@ -/comment.html.tmpl/1.4/Mon Oct 6 21:09:53 2008//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.7/Wed Sep 30 22:34:50 2009//TBUGZILLA-3_5_1 +/comment.html.tmpl/1.5/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.8/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/admin/workflow/CVS/Tag b/template/en/default/admin/workflow/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/admin/workflow/CVS/Tag +++ b/template/en/default/admin/workflow/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/admin/workflow/comment.html.tmpl b/template/en/default/admin/workflow/comment.html.tmpl index 2fa78f003..a7a6a74c2 100644 --- a/template/en/default/admin/workflow/comment.html.tmpl +++ b/template/en/default/admin/workflow/comment.html.tmpl @@ -49,7 +49,7 @@ <th> </th> [% FOREACH status = statuses %] <th class="col-header[% status.is_open ? " open-status" : " closed-status" %]"> - [% status.name FILTER html %] + [% display_value("bug_status", status.name) FILTER html %] </th> [% END %] </tr> @@ -59,7 +59,7 @@ [% FOREACH status = p.merge(statuses) %] <tr class="highlight"> <th align="right" class="[% status.is_open ? "open-status" : "closed-status" %]"> - [% status.name FILTER html %] + [% display_value("bug_status", status.name) FILTER html %] </th> [% FOREACH new_status = statuses %] diff --git a/template/en/default/admin/workflow/edit.html.tmpl b/template/en/default/admin/workflow/edit.html.tmpl index 787937989..406c08a21 100644 --- a/template/en/default/admin/workflow/edit.html.tmpl +++ b/template/en/default/admin/workflow/edit.html.tmpl @@ -54,7 +54,7 @@ <th> </th> [% FOREACH status = statuses %] <th class="col-header[% status.is_open ? " open-status" : " closed-status" %]"> - [% status.name FILTER html %] + [% display_value("bug_status", status.name) FILTER html %] </th> [% END %] </tr> @@ -64,7 +64,7 @@ [% FOREACH status = p.merge(statuses) %] <tr class="highlight"> <th align="right" class="[% status.is_open ? "open-status" : "closed-status" %]"> - [% status.name FILTER html %] + [% display_value("bug_status", status.name) FILTER html %] </th> [% FOREACH new_status = statuses %] @@ -89,7 +89,7 @@ <p> When [% terms.abug %] is marked as a duplicate of another one or is moved to another installation, the [% terms.bug %] status is automatically set to - <b>[% Param("duplicate_or_move_bug_status") FILTER html %]</b>. All transitions to + <b>[% display_value("bug_status", Param("duplicate_or_move_bug_status")) FILTER html %]</b>. All transitions to this [% terms.bug %] status must then be valid (this is the reason why you cannot edit them above).<br> Note: you can change this setting by visiting the diff --git a/template/en/default/attachment/CVS/Entries b/template/en/default/attachment/CVS/Entries index aa5f8417c..00e8117b0 100644 --- a/template/en/default/attachment/CVS/Entries +++ b/template/en/default/attachment/CVS/Entries @@ -1,17 +1,17 @@ -/cancel-create-dupe.html.tmpl/1.2/Fri Jun 27 19:56:25 2008//TBUGZILLA-3_5_1 -/choose.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_1 -/confirm-delete.html.tmpl/1.7/Mon Mar 9 22:10:17 2009//TBUGZILLA-3_5_1 -/content-types.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_1 -/create.html.tmpl/1.43/Wed Sep 30 22:35:15 2009//TBUGZILLA-3_5_1 -/created.html.tmpl/1.24/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_1 -/createformcontents.html.tmpl/1.4/Fri May 29 00:59:42 2009//TBUGZILLA-3_5_1 -/delete_reason.txt.tmpl/1.3/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_1 -/diff-file.html.tmpl/1.8/Thu Jul 9 15:46:56 2009//TBUGZILLA-3_5_1 -/diff-footer.html.tmpl/1.4/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_1 -/diff-header.html.tmpl/1.23/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.63/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_1 -/list.html.tmpl/1.42/Wed Sep 30 22:39:31 2009//TBUGZILLA-3_5_1 -/midair.html.tmpl/1.2/Fri Feb 8 23:19:10 2008//TBUGZILLA-3_5_1 -/show-multiple.html.tmpl/1.27/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_1 -/updated.html.tmpl/1.22/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_1 +/cancel-create-dupe.html.tmpl/1.2/Fri Jun 27 19:56:25 2008//TBUGZILLA-3_5_2 +/choose.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.7/Mon Mar 9 22:10:17 2009//TBUGZILLA-3_5_2 +/content-types.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 +/create.html.tmpl/1.44/Tue Nov 10 16:00:24 2009//TBUGZILLA-3_5_2 +/created.html.tmpl/1.24/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_2 +/createformcontents.html.tmpl/1.4/Fri May 29 00:59:42 2009//TBUGZILLA-3_5_2 +/delete_reason.txt.tmpl/1.3/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 +/diff-file.html.tmpl/1.8/Thu Jul 9 15:46:56 2009//TBUGZILLA-3_5_2 +/diff-footer.html.tmpl/1.4/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_2 +/diff-header.html.tmpl/1.23/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.63/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_2 +/list.html.tmpl/1.43/Mon Nov 16 16:33:12 2009//TBUGZILLA-3_5_2 +/midair.html.tmpl/1.2/Fri Feb 8 23:19:10 2008//TBUGZILLA-3_5_2 +/show-multiple.html.tmpl/1.27/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_2 +/updated.html.tmpl/1.22/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/attachment/CVS/Tag b/template/en/default/attachment/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/attachment/CVS/Tag +++ b/template/en/default/attachment/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/attachment/create.html.tmpl b/template/en/default/attachment/create.html.tmpl index 72844a36e..a6eb03824 100644 --- a/template/en/default/attachment/create.html.tmpl +++ b/template/en/default/attachment/create.html.tmpl @@ -55,8 +55,7 @@ <em>(optional) Check each existing attachment made obsolete by your new attachment.</em><br> [% IF attachments.size %] [% FOREACH attachment = attachments %] - [% IF ((attachment.isprivate == 0) || (Param("insidergroup") - && user.in_group(Param("insidergroup")))) %] + [% IF ((attachment.isprivate == 0) || user.is_insider) %] <input type="checkbox" id="[% attachment.id %]" name="obsolete" value="[% attachment.id %]"> <a href="attachment.cgi?id=[% attachment.id %]&action=edit">[% attachment.id %]: [% attachment.description FILTER html %]</a><br> @@ -108,7 +107,7 @@ %] </td> </tr> - [% IF (Param("insidergroup") && user.in_group(Param("insidergroup"))) %] + [% IF user.is_insider %] <tr> <th>Privacy:</th> <td> diff --git a/template/en/default/attachment/list.html.tmpl b/template/en/default/attachment/list.html.tmpl index bd597e48b..6453b4e68 100644 --- a/template/en/default/attachment/list.html.tmpl +++ b/template/en/default/attachment/list.html.tmpl @@ -65,7 +65,11 @@ function toggle_display(link) { [% IF attachment.isobsolete %] [% obsolete_attachments = obsolete_attachments + 1 %] [% END %] - <tr class="[% "bz_private" IF attachment.isprivate %] + <tr class="[% "bz_contenttype_" _ attachment.contenttype + FILTER css_class_quote UNLESS attachment.isurl %] + [% " bz_patch" IF attachment.ispatch %] + [% " bz_url" IF attachment.isurl %] + [% " bz_private" IF attachment.isprivate %] [% " bz_tr_obsolete bz_default_hidden" IF attachment.isobsolete %]"> <td valign="top"> diff --git a/template/en/default/bug/CVS/Entries b/template/en/default/bug/CVS/Entries index e81e7817f..6d9d823cf 100644 --- a/template/en/default/bug/CVS/Entries +++ b/template/en/default/bug/CVS/Entries @@ -1,18 +1,18 @@ -/choose.html.tmpl/1.8/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_1 -/comments.html.tmpl/1.43/Wed Sep 30 23:43:47 2009//TBUGZILLA-3_5_1 -/dependency-graph.html.tmpl/1.14/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_1 -/dependency-tree.html.tmpl/1.32/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_1 -/edit.html.tmpl/1.167/Fri Oct 9 04:31:13 2009//TBUGZILLA-3_5_1 -/field-events.js.tmpl/1.2/Sun Jun 21 19:33:48 2009//TBUGZILLA-3_5_1 -/field.html.tmpl/1.32/Wed Sep 30 22:33:18 2009//TBUGZILLA-3_5_1 -/format_comment.txt.tmpl/1.4/Sun Nov 1 20:12:27 2009//TBUGZILLA-3_5_1 -/knob.html.tmpl/1.44/Tue Oct 6 05:38:30 2009//TBUGZILLA-3_5_1 -/navigate.html.tmpl/1.13/Wed Aug 12 01:46:01 2009//TBUGZILLA-3_5_1 -/show-multiple.html.tmpl/1.45/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_1 -/show.html.tmpl/1.28/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_1 -/show.xml.tmpl/1.33/Mon Oct 26 16:16:25 2009//TBUGZILLA-3_5_1 -/summarize-time.html.tmpl/1.16/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_1 -/time.html.tmpl/1.3/Mon Aug 20 18:24:58 2007//TBUGZILLA-3_5_1 +/choose.html.tmpl/1.8/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 +/comments.html.tmpl/1.45/Tue Nov 10 16:31:49 2009//TBUGZILLA-3_5_2 +/dependency-graph.html.tmpl/1.14/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 +/dependency-tree.html.tmpl/1.32/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.170/Tue Nov 10 16:31:49 2009//TBUGZILLA-3_5_2 +/field-events.js.tmpl/1.2/Sun Jun 21 19:33:48 2009//TBUGZILLA-3_5_2 +/field.html.tmpl/1.33/Mon Nov 9 19:12:53 2009//TBUGZILLA-3_5_2 +/format_comment.txt.tmpl/1.5/Tue Nov 10 01:36:05 2009//TBUGZILLA-3_5_2 +/knob.html.tmpl/1.44/Tue Oct 6 05:38:30 2009//TBUGZILLA-3_5_2 +/navigate.html.tmpl/1.13/Wed Aug 12 01:46:01 2009//TBUGZILLA-3_5_2 +/show-multiple.html.tmpl/1.48/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 +/show.html.tmpl/1.28/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_2 +/show.xml.tmpl/1.36/Tue Nov 10 16:31:49 2009//TBUGZILLA-3_5_2 +/summarize-time.html.tmpl/1.16/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_2 +/time.html.tmpl/1.3/Mon Aug 20 18:24:58 2007//TBUGZILLA-3_5_2 D/activity//// D/create//// D/process//// diff --git a/template/en/default/bug/CVS/Tag b/template/en/default/bug/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/bug/CVS/Tag +++ b/template/en/default/bug/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/bug/activity/CVS/Entries b/template/en/default/bug/activity/CVS/Entries index 8939cbab7..78682b096 100644 --- a/template/en/default/bug/activity/CVS/Entries +++ b/template/en/default/bug/activity/CVS/Entries @@ -1,3 +1,3 @@ -/show.html.tmpl/1.11/Thu Aug 6 15:02:57 2009//TBUGZILLA-3_5_1 -/table.html.tmpl/1.19/Mon Oct 26 11:28:50 2009//TBUGZILLA-3_5_1 +/show.html.tmpl/1.11/Thu Aug 6 15:02:57 2009//TBUGZILLA-3_5_2 +/table.html.tmpl/1.20/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/bug/activity/CVS/Tag b/template/en/default/bug/activity/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/bug/activity/CVS/Tag +++ b/template/en/default/bug/activity/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/bug/activity/table.html.tmpl b/template/en/default/bug/activity/table.html.tmpl index a467fe5f2..ae9dbcb80 100644 --- a/template/en/default/bug/activity/table.html.tmpl +++ b/template/en/default/bug/activity/table.html.tmpl @@ -80,15 +80,11 @@ change.fieldname == 'remaining_time' || change.fieldname == 'work_time' %] [% PROCESS formattimeunit time_unit=change.removed %] - [% ELSIF change.fieldname == 'bug_status' %] - [% display_value("bug_status", change.removed) FILTER html %] - [% ELSIF change.fieldname == 'resolution' %] - [% display_value("resolution", change.removed) FILTER html %] [% ELSIF change.fieldname == 'blocked' || change.fieldname == 'dependson' %] [% change.removed FILTER bug_list_link FILTER none %] [% ELSE %] - [% change.removed FILTER email FILTER html %] + [% display_value(change.fieldname, change.removed) FILTER email FILTER html %] [% END %] [% ELSE %] @@ -100,15 +96,11 @@ change.fieldname == 'remaining_time' || change.fieldname == 'work_time' %] [% PROCESS formattimeunit time_unit=change.added %] - [% ELSIF change.fieldname == 'bug_status' %] - [% display_value("bug_status", change.added) FILTER html %] - [% ELSIF change.fieldname == 'resolution' %] - [% display_value("resolution", change.added) FILTER html %] [% ELSIF change.fieldname == 'blocked' || change.fieldname == 'dependson' %] [% change.added FILTER bug_list_link FILTER none %] [% ELSE %] - [% change.added FILTER email FILTER html %] + [% display_value(change.fieldname, change.added) FILTER email FILTER html %] [% END %] [% ELSE %] diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl index 2f9eeebf6..9a04b7147 100644 --- a/template/en/default/bug/comments.html.tmpl +++ b/template/en/default/bug/comments.html.tmpl @@ -94,7 +94,6 @@ [% DEFAULT start_at = 0 mode = "show" %] -[% isinsider = Param("insidergroup") && user.in_group(Param("insidergroup")) %] [% sort_order = user.settings.comment_sort_order.value %] [%# NOTE: (start_at > 0) means we came here from a midair collision, @@ -145,8 +144,9 @@ [%############################################################################%] [% BLOCK a_comment %] - [% IF NOT comment.isprivate || isinsider %] - <div class="bz_comment[% " bz_private" IF comment.isprivate %] + [% RETURN IF comment.is_private AND ! user.is_insider %] + + <div class="bz_comment[% " bz_private" IF comment.is_private %] [% " bz_comment_hilite" IF marks.$count %] [% " bz_first_comment" IF count == description %]"> [% IF count == description %] @@ -168,7 +168,7 @@ </span> [% END %] - [% IF mode == "edit" && isinsider %] + [% IF mode == "edit" && user.is_insider %] <div class="bz_private_checkbox"> <input type="hidden" value="1" name="defined_isprivate_[% comment.id %]"> @@ -176,7 +176,7 @@ name="isprivate_[% comment.id %]" value="1" id="isprivate_[% comment.id %]" onClick="updateCommentPrivacy(this, [% count %])" - [% " checked=\"checked\"" IF comment.isprivate %]> + [% " checked=\"checked\"" IF comment.is_private %]> <label for="isprivate_[% comment.id %]">Private</label> </div> [% END %] @@ -201,11 +201,11 @@ </span> <span class="bz_comment_time"> - [%+ comment.time FILTER time %] + [%+ comment.creation_ts FILTER time %] </span> </div> - [% IF user.in_group(Param('timetrackinggroup')) && + [% IF user.is_timetracker && (comment.work_time > 0 || comment.work_time < 0) %] <br> Additional hours worked: @@ -215,15 +215,9 @@ [%# Don't indent the <pre> block, since then the spaces are displayed in the # generated HTML #%] -[% IF comment.already_wrapped %] - [% wrapped_comment = comment.body %] -[% ELSE %] - [% wrapped_comment = comment.body FILTER wrap_comment %] -[% END %] <pre class="bz_comment_text" [% ' id="comment_text_' _ count _ '"' IF mode == "edit" %]> - [%- wrapped_comment FILTER quoteUrls(bug, comment) -%] + [%- comment.body_full({ wrap => 1 }) FILTER quoteUrls(bug, comment) -%] </pre> </div> - [% END %] [% END %] diff --git a/template/en/default/bug/create/CVS/Entries b/template/en/default/bug/create/CVS/Entries index 9d85f76fb..471e9e5bc 100644 --- a/template/en/default/bug/create/CVS/Entries +++ b/template/en/default/bug/create/CVS/Entries @@ -1,9 +1,9 @@ -/comment-guided.txt.tmpl/1.7/Thu Jan 1 23:11:59 2009//TBUGZILLA-3_5_1 -/comment.txt.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_1 -/confirm-create-dupe.html.tmpl/1.4/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_1 -/create-guided.html.tmpl/1.45/Sun Feb 8 14:21:26 2009//TBUGZILLA-3_5_1 -/create.html.tmpl/1.97/Wed Sep 30 22:35:32 2009//TBUGZILLA-3_5_1 -/created.html.tmpl/1.17/Wed Aug 12 01:43:01 2009//TBUGZILLA-3_5_1 -/make-template.html.tmpl/1.10/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_1 -/user-message.html.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_1 +/comment-guided.txt.tmpl/1.7/Thu Jan 1 23:11:59 2009//TBUGZILLA-3_5_2 +/comment.txt.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 +/confirm-create-dupe.html.tmpl/1.4/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 +/create-guided.html.tmpl/1.45/Sun Feb 8 14:21:26 2009//TBUGZILLA-3_5_2 +/create.html.tmpl/1.100/Wed Nov 18 07:06:47 2009//TBUGZILLA-3_5_2 +/created.html.tmpl/1.17/Wed Aug 12 01:43:01 2009//TBUGZILLA-3_5_2 +/make-template.html.tmpl/1.10/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 +/user-message.html.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 D diff --git a/template/en/default/bug/create/CVS/Tag b/template/en/default/bug/create/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/bug/create/CVS/Tag +++ b/template/en/default/bug/create/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl index 1d3160563..21f7959a2 100644 --- a/template/en/default/bug/create/create.html.tmpl +++ b/template/en/default/bug/create/create.html.tmpl @@ -33,7 +33,7 @@ style_urls = [ 'skins/standard/create_attachment.css', 'skins/standard/yui/calendar.css' ] javascript_urls = [ "js/attachment.js", "js/util.js", "js/yui/calendar.js", - "js/field.js", "js/yui/cookie.js", "js/TUI.js" ] + "js/field.js", "js/TUI.js" ] onload = 'set_assign_to();' %] @@ -345,7 +345,7 @@ TUI_hide_default('expert_fields'); <td> </td> [%# Calculate the number of rows we can use for flags %] [% num_rows = 6 + (Param("useqacontact") ? 1 : 0) + - (user.in_group(Param('timetrackinggroup')) ? 3 : 0) + + (user.is_timetracker ? 3 : 0) + (Param("usebugaliases") ? 1 : 0) %] @@ -427,7 +427,7 @@ TUI_hide_default('expert_fields'); <td colspan="3"> </td> </tr> -[% IF user.in_group(Param('timetrackinggroup')) %] +[% IF user.is_timetracker %] <tr> <th>Estimated Hours:</th> <td colspan="2"> @@ -664,11 +664,8 @@ TUI_hide_default('expert_fields'); [%- FOREACH x = ${sel.name} %] <option value="[% x FILTER html %]" [% " selected=\"selected\"" IF x == default.${sel.name} %]> - [% IF sel.name == "bug_status" %] - [% display_value("bug_status", x) FILTER html %] - [% ELSE %] - [% x FILTER html %] - [% END %]</option> + [% display_value(sel.name, x) FILTER html %] + </option> [% END %] </select> diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl index d5a345182..813e80cb2 100644 --- a/template/en/default/bug/edit.html.tmpl +++ b/template/en/default/bug/edit.html.tmpl @@ -75,7 +75,7 @@ replytext = prefix; [% END %] - [% IF Param("insidergroup") && user.in_group(Param("insidergroup")) %] + [% IF user.is_insider %] if (document.getElementById('isprivate_' + real_id).checked) { document.getElementById('newcommentprivacy').checked = 'checked'; } @@ -115,7 +115,7 @@ return text; } -[% IF user.in_group(Param('timetrackinggroup')) %] +[% IF user.is_timetracker %] var fRemainingTime = [% bug.remaining_time %]; // holds the original value function adjustRemainingTime() { // subtracts time spent from remaining time @@ -142,7 +142,7 @@ <form name="changeform" method="post" action="process_bug.cgi"> <input type="hidden" name="delta_ts" value="[% bug.delta_ts %]"> - <input type="hidden" name="longdesclength" value="[% bug.longdescs.size %]"> + <input type="hidden" name="longdesclength" value="[% bug.comments.size %]"> <input type="hidden" name="id" value="[% bug.bug_id %]"> <input type="hidden" name="token" value="[% issue_hash_token([bug.id, bug.delta_ts]) FILTER html %]"> @@ -213,7 +213,7 @@ [% PROCESS section_restrict_visibility %] - [% IF user.in_group(Param('timetrackinggroup')) %] + [% IF user.is_timetracker %] <br> [% PROCESS section_timetracking %] [% END %] @@ -287,7 +287,7 @@ <hr> <div id="comments"> [% PROCESS bug/comments.html.tmpl - comments = bug.longdescs + comments = bug.comments mode = user.id ? "edit" : "show" %] </div> diff --git a/template/en/default/bug/field.html.tmpl b/template/en/default/bug/field.html.tmpl index 26735950d..bb678d79d 100644 --- a/template/en/default/bug/field.html.tmpl +++ b/template/en/default/bug/field.html.tmpl @@ -70,6 +70,7 @@ id="field_container_[% field.name FILTER html %]" [% " colspan=\"$value_span\"" FILTER none IF value_span %]> [% END %] +[% Hook.process('start_field_column') %] [% IF editable %] [% SWITCH field.type %] [% CASE constants.FIELD_TYPE_FREETEXT %] @@ -210,4 +211,5 @@ [% ELSE %] [% value.join(', ') FILTER html %] [% END %] +[% Hook.process('end_field_column') %] [% '</td>' IF NOT no_tds %] diff --git a/template/en/default/bug/format_comment.txt.tmpl b/template/en/default/bug/format_comment.txt.tmpl index e0881e4e7..8e97d4d08 100644 --- a/template/en/default/bug/format_comment.txt.tmpl +++ b/template/en/default/bug/format_comment.txt.tmpl @@ -23,23 +23,23 @@ #%] [%# INTERFACE: - # comment: A hash containing comment information. - # count: The comment number (on the bug it belongs to) - # author: The Bugzilla::User object of the comment's - # author - # time: The time at which the comment has been - # committed - # body: The comment text - # type: One of the CMT_* constants (not given if none - # applies) - # extra_data: Extra data (type specific) - # already_wrapped: Determines whether the comment is pre-wrapped + # comment: A Bugzilla::Comment object. + # is_bugmail: boolean; True if this comment is going into a plain-text + # bugmail. #%] -[% PROCESS 'global/field-descs.none.tmpl' %] +[%# Please don't use field-descs here. It can slow down Bugzilla. %] +[% PROCESS 'global/variables.none.tmpl' %] + +[% SET comment_body = comment.body %] +[% IF is_bugmail %] + [% comment_body = comment_body.replace( '(Created an attachment \(id=([0-9]+)\))', + '$1' _ "\n" _ ' --> (' _ urlbase + _ 'attachment.cgi?id=$2)' ) %] +[% END %] [% IF comment.type == constants.CMT_DUPE_OF %] -X[% comment.body %] +X[% comment_body %] *** This [% terms.bug %] has been marked as a duplicate of [% terms.bug %] [%+ comment.extra_data %] *** [% ELSIF comment.type == constants.CMT_HAS_DUPE %] @@ -47,14 +47,13 @@ X[% comment.body %] [% ELSIF comment.type == constants.CMT_POPULAR_VOTES %] *** This [% terms.bug %] has been confirmed by popular vote. *** [% ELSIF comment.type == constants.CMT_MOVED_TO %] -X[% comment.body %] +X[% comment_body %] [%+ terms.Bug %] moved to [% Param("move-to-url") %]. If the move succeeded, [% comment.extra_data %] will receive a mail containing the number of the new [% terms.bug %] in the other database. -If all went well, please mark this [% terms.bug %] -[%+ display_value("bug_status", 'VERIFIED') %], and paste in a link to the new [% terms.bug %]. +If all went well, please paste in a link to the new [% terms.bug %]. Otherwise, reopen this [% terms.bug %]. [% ELSE %] -X[% comment.body %] +X[% comment_body %] [% END %] diff --git a/template/en/default/bug/process/CVS/Entries b/template/en/default/bug/process/CVS/Entries index bd8f73d60..b095786c6 100644 --- a/template/en/default/bug/process/CVS/Entries +++ b/template/en/default/bug/process/CVS/Entries @@ -1,7 +1,7 @@ -/bugmail.html.tmpl/1.8/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_1 -/confirm-duplicate.html.tmpl/1.12/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_1 -/header.html.tmpl/1.14/Mon Oct 19 02:13:03 2009//TBUGZILLA-3_5_1 -/midair.html.tmpl/1.25/Tue Sep 22 19:18:32 2009//TBUGZILLA-3_5_1 -/results.html.tmpl/1.14/Mon Oct 19 02:13:04 2009//TBUGZILLA-3_5_1 -/verify-new-product.html.tmpl/1.27/Fri Oct 3 01:53:09 2008//TBUGZILLA-3_5_1 +/bugmail.html.tmpl/1.8/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_2 +/confirm-duplicate.html.tmpl/1.12/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_2 +/header.html.tmpl/1.14/Mon Oct 19 02:13:03 2009//TBUGZILLA-3_5_2 +/midair.html.tmpl/1.25/Tue Sep 22 19:18:32 2009//TBUGZILLA-3_5_2 +/results.html.tmpl/1.14/Mon Oct 19 02:13:04 2009//TBUGZILLA-3_5_2 +/verify-new-product.html.tmpl/1.28/Wed Nov 18 07:18:54 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/bug/process/CVS/Tag b/template/en/default/bug/process/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/bug/process/CVS/Tag +++ b/template/en/default/bug/process/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/bug/process/verify-new-product.html.tmpl b/template/en/default/bug/process/verify-new-product.html.tmpl index 2eeb9277e..1cc186c44 100644 --- a/template/en/default/bug/process/verify-new-product.html.tmpl +++ b/template/en/default/bug/process/verify-new-product.html.tmpl @@ -42,6 +42,7 @@ [% IF verify_bug_groups %] [% exclude_items.push('bit-\d+') %] [% END %] +[% Hook.process('exclude') %] [% PROCESS "global/hidden-fields.html.tmpl" exclude = '^' _ exclude_items.join('|') _ '$' %] @@ -110,6 +111,7 @@ size=10 %] </td> [% END %] + [% Hook.process('field') %] </tr> </table> diff --git a/template/en/default/bug/show-multiple.html.tmpl b/template/en/default/bug/show-multiple.html.tmpl index 473453eb5..177bea14f 100644 --- a/template/en/default/bug/show-multiple.html.tmpl +++ b/template/en/default/bug/show-multiple.html.tmpl @@ -139,7 +139,7 @@ <tr> <th>[% field_descs.bug_severity FILTER html %]:</th> <td class="bz_[% bug.bug_severity FILTER css_class_quote -%]"> - [% bug.bug_severity FILTER html %] + [% display_value("bug_severity", bug.bug_severity) FILTER html %] </td> [% PROCESS rightcell %] @@ -195,7 +195,7 @@ [% PROCESS dependencies name = "blocked" %] [% END %] - [% IF user.in_group(Param("timetrackinggroup")) %] + [% IF user.is_timetracker %] <tr> <th>Time tracking:</th> <td colspan="3"> @@ -289,7 +289,7 @@ <br> [% PROCESS bug/comments.html.tmpl - comments = bug.longdescs %] + comments = bug.comments %] [% END %] @@ -301,7 +301,7 @@ [% BLOCK row %] <tr> <th>[% field_descs.${cell} FILTER html %]:</th> - <td[% " colspan=3" IF fullrow %]>[% bug.${cell} FILTER html %]</td> + <td[% " colspan=3" IF fullrow %]>[% display_value(cell, bug.${cell}) FILTER html %]</td> [% PROCESS rightcell IF !fullrow %] </tr> [% fullrow = 0 %] @@ -357,7 +357,7 @@ </td> [% ELSIF name != "" %] <th class="rightcell">[% field_descs.${name} FILTER html %]:</th> - <td>[% bug.${name} FILTER html %]</td> + <td>[% display_value(name, bug.${name}) FILTER html %]</td> [% ELSE %] <td> </td> <td> </td> diff --git a/template/en/default/bug/show.xml.tmpl b/template/en/default/bug/show.xml.tmpl index 1db320c4f..31e56d299 100644 --- a/template/en/default/bug/show.xml.tmpl +++ b/template/en/default/bug/show.xml.tmpl @@ -65,23 +65,23 @@ [% PROCESS section_flags obj => bug %] [% IF displayfields.long_desc %] - [% FOREACH c = bug.longdescs %] - [% NEXT IF c.isprivate && !user.in_group(Param("insidergroup")) %] - <long_desc isprivate="[% c.isprivate FILTER xml %]"> + [% FOREACH c = bug.comments %] + [% NEXT IF c.is_private && !user.is_insider %] + <long_desc isprivate="[% c.is_private FILTER xml %]"> <commentid>[% c.id FILTER xml %]</commentid> <who name="[% c.author.name FILTER xml %]">[% c.author.email FILTER email FILTER xml %]</who> - <bug_when>[% c.time FILTER time("%Y-%m-%d %T %z") FILTER xml %]</bug_when> - [% IF user.in_group(Param('timetrackinggroup')) && (c.work_time - 0 != 0) %] + <bug_when>[% c.creation_ts FILTER time("%Y-%m-%d %T %z") FILTER xml %]</bug_when> + [% IF user.is_timetracker && (c.work_time - 0 != 0) %] <work_time>[% PROCESS formattimeunit time_unit = c.work_time FILTER xml %]</work_time> [% END %] - <thetext>[% c.body FILTER xml %]</thetext> + <thetext>[% c.body_full FILTER xml %]</thetext> </long_desc> [% END %] [% END %] [% IF displayfields.attachment %] [% FOREACH a = bug.attachments %] - [% NEXT IF a.isprivate && !user.in_group(Param("insidergroup")) %] + [% NEXT IF a.isprivate && !user.is_insider %] <attachment isobsolete="[% a.isobsolete FILTER xml %]" ispatch="[% a.ispatch FILTER xml %]" @@ -151,4 +151,4 @@ [% END %] /> [% END %] -[% END %] \ No newline at end of file +[% END %] diff --git a/template/en/default/bug/votes/CVS/Entries b/template/en/default/bug/votes/CVS/Entries index 568da8867..8091d65ef 100644 --- a/template/en/default/bug/votes/CVS/Entries +++ b/template/en/default/bug/votes/CVS/Entries @@ -1,4 +1,4 @@ -/delete-all.html.tmpl/1.8/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_1 -/list-for-bug.html.tmpl/1.13/Thu Jan 29 21:22:32 2009//TBUGZILLA-3_5_1 -/list-for-user.html.tmpl/1.29/Thu Aug 6 15:02:59 2009//TBUGZILLA-3_5_1 +/delete-all.html.tmpl/1.8/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_2 +/list-for-bug.html.tmpl/1.13/Thu Jan 29 21:22:32 2009//TBUGZILLA-3_5_2 +/list-for-user.html.tmpl/1.29/Thu Aug 6 15:02:59 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/bug/votes/CVS/Tag b/template/en/default/bug/votes/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/bug/votes/CVS/Tag +++ b/template/en/default/bug/votes/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/email/CVS/Entries b/template/en/default/email/CVS/Entries index d61301ea6..aca4f1d27 100644 --- a/template/en/default/email/CVS/Entries +++ b/template/en/default/email/CVS/Entries @@ -1,6 +1,6 @@ -/newchangedmail.txt.tmpl/1.16/Sun Nov 1 20:12:27 2009//TBUGZILLA-3_5_1 -/sanitycheck.txt.tmpl/1.4/Tue Jan 20 20:22:11 2009//TBUGZILLA-3_5_1 -/sudo.txt.tmpl/1.5/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_1 -/votes-removed.txt.tmpl/1.5/Wed Apr 2 17:42:29 2008//TBUGZILLA-3_5_1 -/whine.txt.tmpl/1.8/Wed Sep 30 22:35:37 2009//TBUGZILLA-3_5_1 +/newchangedmail.txt.tmpl/1.17/Tue Nov 10 01:36:05 2009//TBUGZILLA-3_5_2 +/sanitycheck.txt.tmpl/1.4/Tue Jan 20 20:22:11 2009//TBUGZILLA-3_5_2 +/sudo.txt.tmpl/1.5/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_2 +/votes-removed.txt.tmpl/1.5/Wed Apr 2 17:42:29 2008//TBUGZILLA-3_5_2 +/whine.txt.tmpl/1.8/Wed Sep 30 22:35:37 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/email/CVS/Tag b/template/en/default/email/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/email/CVS/Tag +++ b/template/en/default/email/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/email/newchangedmail.txt.tmpl b/template/en/default/email/newchangedmail.txt.tmpl index 9b1443bc2..368c23713 100644 --- a/template/en/default/email/newchangedmail.txt.tmpl +++ b/template/en/default/email/newchangedmail.txt.tmpl @@ -50,7 +50,7 @@ X-Bugzilla-Changed-Fields: [% changedfields %] [%- IF comment.count %] --- Comment #[% comment.count %] from [% comment.author.identity %] [%+ comment.time FILTER time %] --- [% END %] -[%+ FILTER remove('^X') %][% PROCESS bug/format_comment.txt.tmpl %][% END %] +[%+ comment.body_full({ is_bugmail => 1, wrap => 1 }) %] [% END %] -- [%# Protect the trailing space of the signature marker %] diff --git a/template/en/default/flag/CVS/Entries b/template/en/default/flag/CVS/Entries index 33d80f6e7..cb030c08e 100644 --- a/template/en/default/flag/CVS/Entries +++ b/template/en/default/flag/CVS/Entries @@ -1,2 +1,2 @@ -/list.html.tmpl/1.38/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_1 +/list.html.tmpl/1.38/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/flag/CVS/Tag b/template/en/default/flag/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/flag/CVS/Tag +++ b/template/en/default/flag/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/global/CVS/Entries b/template/en/default/global/CVS/Entries index 888acd01d..530cf4f78 100644 --- a/template/en/default/global/CVS/Entries +++ b/template/en/default/global/CVS/Entries @@ -1,30 +1,30 @@ -/banner.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/choose-classification.html.tmpl/1.11/Wed Dec 10 18:43:36 2008//TBUGZILLA-3_5_1 -/choose-product.html.tmpl/1.19/Tue Jun 2 03:49:21 2009//TBUGZILLA-3_5_1 -/code-error.html.tmpl/1.120/Fri Oct 30 01:14:12 2009//TBUGZILLA-3_5_1 -/common-links.html.tmpl/1.25/Thu Aug 13 15:55:11 2009//TBUGZILLA-3_5_1 -/confirm-action.html.tmpl/1.1/Mon Feb 2 18:37:24 2009//TBUGZILLA-3_5_1 -/confirm-user-match.html.tmpl/1.20/Tue Mar 31 19:24:34 2009//TBUGZILLA-3_5_1 -/docslinks.html.tmpl/1.3/Thu Apr 3 19:05:50 2008//TBUGZILLA-3_5_1 -/field-descs.none.tmpl/1.37/Wed Sep 30 22:33:37 2009//TBUGZILLA-3_5_1 -/footer.html.tmpl/1.14/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/header.html.tmpl/1.64/Mon Sep 21 22:03:06 2009//TBUGZILLA-3_5_1 -/help.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/hidden-fields.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/initialize.none.tmpl/1.2/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/js-products.html.tmpl/1.3/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/message.html.tmpl/1.8/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/message.txt.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/messages.html.tmpl/1.93/Sat Oct 24 05:30:21 2009//TBUGZILLA-3_5_1 -/per-bug-queries.html.tmpl/1.14/Fri Aug 21 21:33:31 2009//TBUGZILLA-3_5_1 -/select-menu.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/setting-descs.none.tmpl/1.16/Wed Aug 19 21:40:07 2009//TBUGZILLA-3_5_1 -/site-navigation.html.tmpl/1.27/Wed Aug 12 01:43:13 2009//TBUGZILLA-3_5_1 -/tabs.html.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_1 -/textarea.html.tmpl/1.4/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_1 -/useful-links.html.tmpl/1.60/Tue Feb 24 00:35:39 2009//TBUGZILLA-3_5_1 -/user-error.html.tmpl/1.287/Sat Oct 24 05:30:21 2009//TBUGZILLA-3_5_1 -/user.html.tmpl/1.1/Thu Jan 29 21:22:33 2009//TBUGZILLA-3_5_1 -/userselect.html.tmpl/1.10/Mon Dec 29 00:02:20 2008//TBUGZILLA-3_5_1 -/variables.none.tmpl/1.8/Wed Feb 25 19:24:49 2009//TBUGZILLA-3_5_1 +/banner.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/choose-classification.html.tmpl/1.11/Wed Dec 10 18:43:36 2008//TBUGZILLA-3_5_2 +/choose-product.html.tmpl/1.19/Tue Jun 2 03:49:21 2009//TBUGZILLA-3_5_2 +/code-error.html.tmpl/1.122/Wed Nov 18 14:34:04 2009//TBUGZILLA-3_5_2 +/common-links.html.tmpl/1.25/Thu Aug 13 15:55:11 2009//TBUGZILLA-3_5_2 +/confirm-action.html.tmpl/1.1/Mon Feb 2 18:37:24 2009//TBUGZILLA-3_5_2 +/confirm-user-match.html.tmpl/1.20/Tue Mar 31 19:24:34 2009//TBUGZILLA-3_5_2 +/docslinks.html.tmpl/1.3/Thu Apr 3 19:05:50 2008//TBUGZILLA-3_5_2 +/field-descs.none.tmpl/1.38/Wed Nov 18 07:04:59 2009//TBUGZILLA-3_5_2 +/footer.html.tmpl/1.14/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/header.html.tmpl/1.65/Wed Nov 18 07:06:47 2009//TBUGZILLA-3_5_2 +/help.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/hidden-fields.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/initialize.none.tmpl/1.2/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/js-products.html.tmpl/1.3/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/message.html.tmpl/1.8/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/message.txt.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/messages.html.tmpl/1.93/Sat Oct 24 05:30:21 2009//TBUGZILLA-3_5_2 +/per-bug-queries.html.tmpl/1.14/Fri Aug 21 21:33:31 2009//TBUGZILLA-3_5_2 +/select-menu.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/setting-descs.none.tmpl/1.16/Wed Aug 19 21:40:07 2009//TBUGZILLA-3_5_2 +/site-navigation.html.tmpl/1.27/Wed Aug 12 01:43:13 2009//TBUGZILLA-3_5_2 +/tabs.html.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 +/textarea.html.tmpl/1.4/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_2 +/useful-links.html.tmpl/1.60/Tue Feb 24 00:35:39 2009//TBUGZILLA-3_5_2 +/user-error.html.tmpl/1.287/Sat Oct 24 05:30:21 2009//TBUGZILLA-3_5_2 +/user.html.tmpl/1.1/Thu Jan 29 21:22:33 2009//TBUGZILLA-3_5_2 +/userselect.html.tmpl/1.10/Mon Dec 29 00:02:20 2008//TBUGZILLA-3_5_2 +/variables.none.tmpl/1.8/Wed Feb 25 19:24:49 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/global/CVS/Tag b/template/en/default/global/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/global/CVS/Tag +++ b/template/en/default/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl index 64bd41af3..c1ff61159 100644 --- a/template/en/default/global/code-error.html.tmpl +++ b/template/en/default/global/code-error.html.tmpl @@ -327,7 +327,7 @@ A valid quipid is needed. [% ELSIF error == "no_manual_moved" %] - You cannot set the resolution of [% terms.abug %] to MOVED without + You cannot set the resolution of [% terms.abug %] to [% display_value("resolution", "MOVED") FILTER html %] without moving the [% terms.bug %]. [% ELSIF error == "no_open_bug_status" %] diff --git a/template/en/default/global/field-descs.none.tmpl b/template/en/default/global/field-descs.none.tmpl index 278800594..5012769ca 100644 --- a/template/en/default/global/field-descs.none.tmpl +++ b/template/en/default/global/field-descs.none.tmpl @@ -146,6 +146,7 @@ }, "resolution" => { + "" => "---", # "FIXED" => "NO LONGER AN ISSUE", # "MOVED" => "BYE-BYE", }, diff --git a/template/en/default/global/header.html.tmpl b/template/en/default/global/header.html.tmpl index f8044976d..904a89d45 100644 --- a/template/en/default/global/header.html.tmpl +++ b/template/en/default/global/header.html.tmpl @@ -191,6 +191,7 @@ <![endif]--> <script src="js/yui/yahoo-dom-event.js" type="text/javascript"></script> + <script src="js/yui/cookie.js" type="text/javascript"></script> <script src="js/global.js" type="text/javascript"></script> <script type="text/javascript"> <!-- @@ -199,6 +200,18 @@ YAHOO.util.Event._simpleRemove(window, "unload", YAHOO.util.Event._unload); } + [%# The language selector needs javascript to set its cookie, + # so it is hidden in HTML/CSS by the "bz_default_hidden" class. + # If the browser can run javascript, it will then "unhide" + # the language selector using the following code. + #%] + function unhide_language_selector() { + YAHOO.util.Dom.removeClass( + 'lang_links_container', 'bz_default_hidden' + ); + } + YAHOO.util.Event.onDOMReady(unhide_language_selector); + [%# Make some Bugzilla information available to all scripts. # We don't import every parameter and constant because we # don't want to add a lot of uncached JS to every page. @@ -278,9 +291,26 @@ </tr> </table> -[% PROCESS "global/common-links.html.tmpl" qs_suffix = "_top" %] +<table id="lang_links_container" cellpadding="0" cellspacing="0" + class="bz_default_hidden"><tr><td> +[% IF Bugzilla.languages.size > 1 %] + <ul class="links"> + [% FOREACH lang = Bugzilla.languages.sort %] + <li>[% IF NOT loop.first %]<span class="separator"> | </span>[% END %] + [% IF lang == current_language %] + <span class="lang_current">[% lang FILTER html FILTER upper %]</span> + [% ELSE %] + <a href="#" onclick="set_language('[% lang FILTER none %]');"> + [%- lang FILTER html FILTER upper %]</a> + [% END %] + </li> + [% END %] + </ul> +[% END %] +</td></tr></table> -</div> +[% PROCESS "global/common-links.html.tmpl" qs_suffix = "_top" %] +</div> [%# header %] <div id="bugzilla-body"> diff --git a/template/en/default/list/CVS/Entries b/template/en/default/list/CVS/Entries index 33d5e5aae..66e2319d9 100644 --- a/template/en/default/list/CVS/Entries +++ b/template/en/default/list/CVS/Entries @@ -1,13 +1,13 @@ -/change-columns.html.tmpl/1.20/Wed Feb 25 22:39:20 2009//TBUGZILLA-3_5_1 -/edit-multiple.html.tmpl/1.57/Wed Sep 30 22:35:40 2009//TBUGZILLA-3_5_1 -/list-simple.html.tmpl/1.12/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_1 -/list.atom.tmpl/1.6/Wed Aug 27 23:26:24 2008//TBUGZILLA-3_5_1 -/list.csv.tmpl/1.9/Wed Sep 30 22:35:40 2009//TBUGZILLA-3_5_1 -/list.html.tmpl/1.69/Thu Oct 29 04:46:17 2009//TBUGZILLA-3_5_1 -/list.ics.tmpl/1.11/Thu May 14 11:34:37 2009//TBUGZILLA-3_5_1 -/list.js.tmpl/1.3/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_1 -/list.rdf.tmpl/1.8/Wed Feb 11 15:45:27 2009//TBUGZILLA-3_5_1 -/quips.html.tmpl/1.24/Wed Nov 5 18:38:52 2008//TBUGZILLA-3_5_1 -/server-push.html.tmpl/1.7/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_1 -/table.html.tmpl/1.50/Mon Oct 26 00:22:53 2009//TBUGZILLA-3_5_1 +/change-columns.html.tmpl/1.20/Wed Feb 25 22:39:20 2009//TBUGZILLA-3_5_2 +/edit-multiple.html.tmpl/1.60/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 +/list-simple.html.tmpl/1.12/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 +/list.atom.tmpl/1.7/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 +/list.csv.tmpl/1.9/Wed Sep 30 22:35:40 2009//TBUGZILLA-3_5_2 +/list.html.tmpl/1.71/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 +/list.ics.tmpl/1.11/Thu May 14 11:34:37 2009//TBUGZILLA-3_5_2 +/list.js.tmpl/1.3/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 +/list.rdf.tmpl/1.8/Wed Feb 11 15:45:27 2009//TBUGZILLA-3_5_2 +/quips.html.tmpl/1.24/Wed Nov 5 18:38:52 2008//TBUGZILLA-3_5_2 +/server-push.html.tmpl/1.7/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 +/table.html.tmpl/1.51/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/list/CVS/Tag b/template/en/default/list/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/list/CVS/Tag +++ b/template/en/default/list/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/list/edit-multiple.html.tmpl b/template/en/default/list/edit-multiple.html.tmpl index fa8d3d1ae..11f3491f2 100644 --- a/template/en/default/list/edit-multiple.html.tmpl +++ b/template/en/default/list/edit-multiple.html.tmpl @@ -28,12 +28,15 @@ <input type="hidden" name="token" value="[% token FILTER html %]"> <script type="text/javascript"> - var numelements = document.forms.changeform.elements.length; function SetCheckboxes(value) { - var item; - for (var i=0 ; i<numelements ; i++) { - item = document.forms.changeform.elements[i]; - item.checked = value; + var elements = document.forms.changeform.getElementsByTagName('input'), + numelements = elements.length, + item, i; + for (i = 0; i < numelements; i++) { + item = elements[i]; + if (item.type === 'checkbox' && item.name.match(/^id_/)) { + item.checked = value; + } } } document.write(' <input type="button" name="uncheck_all" value="Uncheck All" onclick="SetCheckboxes(false);">'); @@ -137,7 +140,7 @@ <th><label for="bug_status">Status:</label></th> <td colspan="3">[% PROCESS status_section %]</td> </tr> - [% IF user.in_group(Param("timetrackinggroup")) %] + [% IF user.is_timetracker %] <tr> <th><label for="estimated_time">Estimated Hours:</label></th> <td> @@ -365,7 +368,7 @@ </option> [% FOREACH menuitem = menuitems %] [% IF property %][% menuitem = menuitem.$property %][% END %] - <option value="[% menuitem FILTER html %]">[% menuitem FILTER html %]</option> + <option value="[% menuitem FILTER html %]">[% display_value(menuname, menuitem) FILTER html %]</option> [% END %] </select> [% END %] diff --git a/template/en/default/list/list.atom.tmpl b/template/en/default/list/list.atom.tmpl index 5086a044c..3c504f9c9 100644 --- a/template/en/default/list/list.atom.tmpl +++ b/template/en/default/list/list.atom.tmpl @@ -23,7 +23,7 @@ # This is a template for generating an Atom representation of a buglist. #%] -[% PROCESS global/variables.none.tmpl %] +[% PROCESS "global/field-descs.none.tmpl" %] [% DEFAULT title = "$terms.Bugzilla $terms.Bugs" %] @@ -71,16 +71,16 @@ <td>[% bug.reporter_realname FILTER html %]</td> </tr><tr class="bz_feed_bug_status"> <td>[% columns.bug_status.title FILTER html %]</td> - <td>[% bug.bug_status FILTER html %]</td> + <td>[% display_value("bug_status", bug.bug_status) FILTER html %]</td> </tr><tr class="bz_feed_resolution"> <td>[% columns.resolution.title FILTER html %] </td> - <td>[% bug.resolution FILTER html %]</td> + <td>[% display_value("resolution", bug.resolution) FILTER html %]</td> </tr><tr class="bz_feed_priority"> <td>[% columns.priority.title FILTER html %]</td> - <td>[% bug.priority FILTER html %]</td> + <td>[% display_value("priority", bug.priority) FILTER html %]</td> </tr><tr class="bz_feed_severity"> <td>[% columns.bug_severity.title FILTER html %] </td> - <td>[% bug.bug_severity FILTER html %]</td> + <td>[% display_value("bug_severity", bug.bug_severity) FILTER html %]</td> [% IF Param("usetargetmilestone") %] </tr><tr class="bz_feed_target_milestone"> <td>[% columns.target_milestone.title FILTER html %]</td> diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl index a3e3a767a..1e9a9e998 100644 --- a/template/en/default/list/list.html.tmpl +++ b/template/en/default/list/list.html.tmpl @@ -91,16 +91,8 @@ [% IF shown_types.contains(desc_item.type) || debug %] ([% search_descs.${desc_item.type} FILTER html %]) [% END %] - [% IF desc_item.field == 'bug_status' %] - [% FOREACH status IN desc_item.value.split(',') %] - [%+ display_value("bug_status", status) FILTER html %][% ',' UNLESS loop.last %] - [% END %] - [% ELSIF desc_item.field == 'resolution' %] - [% FOREACH resolution IN desc_item.value.split(',') %] - [%+ display_value("resolution", resolution) FILTER html %][% ',' UNLESS loop.last %] - [% END %] - [% ELSE %] - [%+ desc_item.value FILTER html %] + [% FOREACH val IN desc_item.value.split(',') %] + [%+ display_value(desc_item.field, val) FILTER html %][% ',' UNLESS loop.last %] [% END %] [% IF debug %] (<code>[% desc_item.term FILTER html %]</code>) @@ -198,7 +190,7 @@ <input type="submit" value="XML" id="xml"> </form> - [% IF user.in_group(Param('timetrackinggroup')) %] + [% IF user.is_timetracker %] <form method="post" action="summarize_time.cgi"> <input type="hidden" name="id" value="[% buglist_joined FILTER html %]"> <input type="submit" id="timesummary" value="Time Summary"> diff --git a/template/en/default/list/table.html.tmpl b/template/en/default/list/table.html.tmpl index 6ca90b921..f6a871e19 100644 --- a/template/en/default/list/table.html.tmpl +++ b/template/en/default/list/table.html.tmpl @@ -201,14 +201,7 @@ [% FOREACH column = displaycolumns %] <td [% 'style="white-space: nowrap"' IF NOT abbrev.$column.wrap %]> [% IF abbrev.$column.maxlength %] - <span title=" - [%- IF column == 'bug_status' %] - [%- display_value("bug_status", bug.$column) FILTER html %] - [% ELSIF column == 'resolution' %] - [%- display_value("resolution", bug.$column) FILTER html %] - [% ELSE %] - [%- bug.$column FILTER html %] - [% END %]"> + <span title="[%- display_value(column, bug.$column) FILTER html %]"> [% END %] [% IF abbrev.$column.format_value %] [%- bug.$column FILTER format(abbrev.$column.format_value) FILTER html -%] @@ -216,11 +209,6 @@ column == 'remaining_time' || column == 'estimated_time' %] [% PROCESS formattimeunit time_unit=bug.$column %] - [% ELSIF column == 'bug_status' %] - [%- display_value("bug_status", bug.$column).truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html %] - [% ELSIF column == 'resolution' %] - [%- display_value("resolution", bug.$column).truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html %] - [%# Display the login name of the user if their real name is empty. %] [% ELSIF column.match('_realname$') && bug.$column == '' %] [% SET login_column = column.remove('_realname$') %] @@ -228,7 +216,7 @@ abbrev.$column.ellipsis) FILTER html %] [% ELSE %] - [%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%] + [%- display_value(column, bug.$column).truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%] [% END %] [% IF abbrev.$column.maxlength %] </span> diff --git a/template/en/default/pages/CVS/Entries b/template/en/default/pages/CVS/Entries index 88aff3d22..7c0635134 100644 --- a/template/en/default/pages/CVS/Entries +++ b/template/en/default/pages/CVS/Entries @@ -1,10 +1,10 @@ -/bug-writing.html.tmpl/1.9/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_1 -/fields.html.tmpl/1.18/Wed Sep 30 22:35:41 2009//TBUGZILLA-3_5_1 -/linked.html.tmpl/1.10/Fri Feb 8 23:19:32 2008//TBUGZILLA-3_5_1 -/linkify.html.tmpl/1.9/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_1 -/quicksearch.html.tmpl/1.4/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_1 -/quicksearchhack.html.tmpl/1.8/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_1 -/release-notes.html.tmpl/1.43/Thu Nov 5 12:33:35 2009//TBUGZILLA-3_5_1 -/sudo.html.tmpl/1.3/Fri Aug 8 01:27:20 2008//TBUGZILLA-3_5_1 -/voting.html.tmpl/1.5/Mon Sep 15 22:34:32 2008//TBUGZILLA-3_5_1 +/bug-writing.html.tmpl/1.10/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 +/fields.html.tmpl/1.19/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 +/linked.html.tmpl/1.10/Fri Feb 8 23:19:32 2008//TBUGZILLA-3_5_2 +/linkify.html.tmpl/1.9/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 +/quicksearch.html.tmpl/1.4/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_2 +/quicksearchhack.html.tmpl/1.8/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_2 +/release-notes.html.tmpl/1.44/Wed Nov 18 06:53:45 2009//TBUGZILLA-3_5_2 +/sudo.html.tmpl/1.3/Fri Aug 8 01:27:20 2008//TBUGZILLA-3_5_2 +/voting.html.tmpl/1.5/Mon Sep 15 22:34:32 2008//TBUGZILLA-3_5_2 D diff --git a/template/en/default/pages/CVS/Tag b/template/en/default/pages/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/pages/CVS/Tag +++ b/template/en/default/pages/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/pages/bug-writing.html.tmpl b/template/en/default/pages/bug-writing.html.tmpl index 035876bb1..ec997be0a 100644 --- a/template/en/default/pages/bug-writing.html.tmpl +++ b/template/en/default/pages/bug-writing.html.tmpl @@ -78,8 +78,8 @@ no-one else appears to have reported it, then:</p> it? (e.g. Linux, Windows XP, Mac OS X.)<br> If you know the [% terms.bug %] happens on more than one type of - operating system, choose "All". - If your OS isn't listed, choose Other.</p> + operating system, choose <em>[% display_value("op_sys", "All") FILTER html %]</em>. + If your OS isn't listed, choose <em>[% display_value("op_sys", "Other") FILTER html %]</em>.</p> <p><b>Summary:</b> How would you describe the [% terms.bug %], in approximately 60 or fewer characters?<br> diff --git a/template/en/default/pages/fields.html.tmpl b/template/en/default/pages/fields.html.tmpl index 9e938bbcb..5be28cab7 100644 --- a/template/en/default/pages/fields.html.tmpl +++ b/template/en/default/pages/fields.html.tmpl @@ -19,7 +19,6 @@ # Gervase Markham <gerv@gerv.net> #%] -[% PROCESS global/variables.none.tmpl %] [% PROCESS "global/field-descs.none.tmpl" %] [% INCLUDE global/header.html.tmpl title = "A $terms.Bug's Life Cycle" %] @@ -221,46 +220,46 @@ This field describes the impact of [% terms.abug %]. <table> <tr> - <th>Blocker</th> + <th>[% display_value("bug_severity", "blocker") FILTER html %]</th> <td>Blocks development and/or testing work</td> </tr> <tr> - <th>Critical</th> + <th>[% display_value("bug_severity", "critical") FILTER html %]</th> <td>crashes, loss of data, severe memory leak</td> </tr> <tr> - <th>Major</th> + <th>[% display_value("bug_severity", "major") FILTER html %]</th> <td>major loss of function</td> </tr> <tr> - <th>Normal</th> + <th>[% display_value("bug_severity", "normal") FILTER html %]</th> <td>regular issue, some loss of functionality under specific circumstances</td> </tr> <tr> - <th>Minor</th> + <th>[% display_value("bug_severity", "minor") FILTER html %]</th> <td>minor loss of function, or other problem where easy workaround is present</td> </tr> <tr> - <th>Trivial</th> + <th>[% display_value("bug_severity", "trivial") FILTER html %]</th> <td>cosmetic problem like misspelled words or misaligned text</td> </tr> <tr> - <th>Enhancement</th> + <th>[% display_value("bug_severity", "enhancement") FILTER html %]</th> <td>Request for enhancement</td> </table> @@ -270,23 +269,25 @@ This is the hardware platform against which the [% terms.bug %] was reported. Legal platforms include: <ul> - <li>All (happens on all platforms; cross-platform [% terms.bug %])</li> + <li>[% display_value("rep_platform", "All") FILTER html %] (happens on all platforms; cross-platform [% terms.bug %])</li> - <li>Macintosh</li> + <li>[% display_value("rep_platform", "Macintosh") FILTER html %]</li> - <li>PC</li> + <li>[% display_value("rep_platform", "PC") FILTER html %]</li> </ul> -<b>Note:</b> When searching, selecting the option "All" does not +<b>Note:</b> When searching, selecting the option +<em>[% display_value("rep_platform", "All") FILTER html %]</em> does not select [% terms.bugs %] assigned against any platform. It merely selects [% terms.bugs %] that are -marked as occurring on all platforms, i.e. are designated "All". +marked as occurring on all platforms, i.e. are designated +<em>[% display_value("rep_platform", "All") FILTER html %]</em>. <h2><a name="op_sys">Operating System</a></h2> This is the operating system against which the [% terms.bug %] was reported. Legal operating systems include: <ul> - <li>All (happens on all operating systems; cross-platform + <li>[% display_value("op_sys", "All") FILTER html %] (happens on all operating systems; cross-platform [% terms.bug %])</li> <li>Windows</li> diff --git a/template/en/default/pages/release-notes.html.tmpl b/template/en/default/pages/release-notes.html.tmpl index 601ab6a13..9a838d916 100644 --- a/template/en/default/pages/release-notes.html.tmpl +++ b/template/en/default/pages/release-notes.html.tmpl @@ -59,6 +59,14 @@ <h2><a name="v34_point"></a>Updates In This 3.4.x Release</h2> +<h3>3.4.4</h3> + +<p>This release contains a fix for a security issue. See the + <a href="http://www.bugzilla.org/security/3.4.3/">Security Advisory</a> + for details.</p> + +<p>Additionally, this release fixes a few minor [% terms.bugs %].</p> + <h3>3.4.3</h3> <ul> diff --git a/template/en/default/reports/CVS/Entries b/template/en/default/reports/CVS/Entries index 9191bb334..5dc60e255 100644 --- a/template/en/default/reports/CVS/Entries +++ b/template/en/default/reports/CVS/Entries @@ -1,24 +1,24 @@ -/chart.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_1 -/chart.html.tmpl/1.5/Wed Aug 27 02:32:26 2008//TBUGZILLA-3_5_1 -/chart.png.tmpl/1.6/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_1 -/components.html.tmpl/1.15/Tue Jun 2 03:49:22 2009//TBUGZILLA-3_5_1 -/create-chart.html.tmpl/1.19/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_1 -/delete-series.html.tmpl/1.1/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_1 -/duplicates-simple.html.tmpl/1.5/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_1 -/duplicates-table.html.tmpl/1.15/Sun Sep 6 22:45:56 2009//TBUGZILLA-3_5_1 -/duplicates.html.tmpl/1.19/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_1 -/edit-series.html.tmpl/1.8/Mon Oct 5 09:49:30 2009//TBUGZILLA-3_5_1 -/keywords.html.tmpl/1.10/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_1 -/menu.html.tmpl/1.10/Sat Oct 24 05:21:11 2009//TBUGZILLA-3_5_1 -/old-charts.html.tmpl/1.3/Sun Nov 11 22:03:19 2007//TBUGZILLA-3_5_1 -/report-bar.png.tmpl/1.9/Wed Sep 30 22:35:45 2009//TBUGZILLA-3_5_1 -/report-line.png.tmpl/1.10/Wed Sep 30 22:35:45 2009//TBUGZILLA-3_5_1 -/report-pie.png.tmpl/1.8/Wed Sep 30 22:35:45 2009//TBUGZILLA-3_5_1 -/report-simple.html.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_1 -/report-table.csv.tmpl/1.13/Wed Sep 30 22:35:45 2009//TBUGZILLA-3_5_1 -/report-table.html.tmpl/1.18/Wed Sep 30 22:35:45 2009//TBUGZILLA-3_5_1 -/report.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_1 -/report.html.tmpl/1.16/Thu Jan 29 21:22:37 2009//TBUGZILLA-3_5_1 -/series-common.html.tmpl/1.6/Wed Aug 19 14:46:55 2009//TBUGZILLA-3_5_1 -/series.html.tmpl/1.10/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_1 +/chart.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 +/chart.html.tmpl/1.5/Wed Aug 27 02:32:26 2008//TBUGZILLA-3_5_2 +/chart.png.tmpl/1.6/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 +/components.html.tmpl/1.15/Tue Jun 2 03:49:22 2009//TBUGZILLA-3_5_2 +/create-chart.html.tmpl/1.19/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_2 +/delete-series.html.tmpl/1.1/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_2 +/duplicates-simple.html.tmpl/1.5/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 +/duplicates-table.html.tmpl/1.16/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/duplicates.html.tmpl/1.19/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_2 +/edit-series.html.tmpl/1.8/Mon Oct 5 09:49:30 2009//TBUGZILLA-3_5_2 +/keywords.html.tmpl/1.10/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 +/menu.html.tmpl/1.10/Sat Oct 24 05:21:11 2009//TBUGZILLA-3_5_2 +/old-charts.html.tmpl/1.3/Sun Nov 11 22:03:19 2007//TBUGZILLA-3_5_2 +/report-bar.png.tmpl/1.10/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/report-line.png.tmpl/1.11/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/report-pie.png.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/report-simple.html.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 +/report-table.csv.tmpl/1.14/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/report-table.html.tmpl/1.19/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/report.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 +/report.html.tmpl/1.16/Thu Jan 29 21:22:37 2009//TBUGZILLA-3_5_2 +/series-common.html.tmpl/1.6/Wed Aug 19 14:46:55 2009//TBUGZILLA-3_5_2 +/series.html.tmpl/1.10/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_2 D diff --git a/template/en/default/reports/CVS/Tag b/template/en/default/reports/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/reports/CVS/Tag +++ b/template/en/default/reports/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/reports/duplicates-table.html.tmpl b/template/en/default/reports/duplicates-table.html.tmpl index f651a7fd4..8950f340a 100644 --- a/template/en/default/reports/duplicates-table.html.tmpl +++ b/template/en/default/reports/duplicates-table.html.tmpl @@ -127,9 +127,9 @@ <td><center>[% bug.delta %]</center></td> <td>[% bug.component FILTER html %]</td> - <td><center>[% bug.bug_severity FILTER html %]</center></td> - <td><center>[% bug.op_sys FILTER html %]</center></td> - <td><center>[% bug.target_milestone FILTER html %]</center></td> + <td><center>[% display_value("bug_severity", bug.bug_severity ) FILTER html %]</center></td> + <td><center>[% display_value("op_sys", bug.op_sys ) FILTER html %]</center></td> + <td><center>[% display_value("target_milestone", bug.target_milestone) FILTER html %]</center></td> <td>[% bug.short_desc FILTER html %]</td> </tr> [% END %] diff --git a/template/en/default/reports/report-bar.png.tmpl b/template/en/default/reports/report-bar.png.tmpl index cb9fab24f..649fba426 100644 --- a/template/en/default/reports/report-bar.png.tmpl +++ b/template/en/default/reports/report-bar.png.tmpl @@ -26,28 +26,12 @@ [% col_field_disp = field_descs.$col_field || col_field %] -[% IF col_field == 'bug_status' %] - [% FOR i IN [ 0 .. data.0.0.max ] %] - [% data.0.0.$i = display_value("bug_status", data.0.0.$i) %] - [% END %] +[% FOR i IN [ 0 .. data.0.0.max ] %] + [% data.0.0.$i = display_value(col_field, data.0.0.$i) %] [% END %] -[% IF col_field == 'resolution' %] - [% FOR i IN [ 0 .. data.0.0.max ] %] - [% data.0.0.$i = display_value("resolution", data.0.0.$i) %] - [% END %] -[% END %] - -[% IF row_field == 'bug_status' %] - [% FOR i IN [ 0 .. row_names.max ] %] - [% row_names.$i = display_value("bug_status", row_names.$i) %] - [% END %] -[% END %] - -[% IF row_field == 'resolution' %] - [% FOR i IN [ 0 .. row_names.max ] %] - [% row_names.$i = display_value("resolution", row_names.$i) %] - [% END %] +[% FOR i IN [ 0 .. row_names.max ] %] + [% row_names.$i = display_value(row_field, row_names.$i) %] [% END %] [% FILTER null; diff --git a/template/en/default/reports/report-line.png.tmpl b/template/en/default/reports/report-line.png.tmpl index fc8b418af..0edc0fee7 100644 --- a/template/en/default/reports/report-line.png.tmpl +++ b/template/en/default/reports/report-line.png.tmpl @@ -26,28 +26,12 @@ [% col_field_disp = field_descs.$col_field || col_field %] -[% IF col_field == 'bug_status' %] - [% FOR i IN [ 0 .. data.0.0.max ] %] - [% data.0.0.$i = display_value("bug_status", data.0.0.$i) %] - [% END %] +[% FOR i IN [ 0 .. data.0.0.max ] %] + [% data.0.0.$i = display_value(col_field, data.0.0.$i) %] [% END %] -[% IF col_field == 'resolution' %] - [% FOR i IN [ 0 .. data.0.0.max ] %] - [% data.0.0.$i = display_value("resolution", data.0.0.$i) %] - [% END %] -[% END %] - -[% IF row_field == 'bug_status' %] - [% FOR i IN [ 0 .. row_names.max ] %] - [% row_names.$i = display_value("bug_status", row_names.$i) %] - [% END %] -[% END %] - -[% IF row_field == 'resolution' %] - [% FOR i IN [ 0 .. row_names.max ] %] - [% row_names.$i = display_value("resolution", row_names.$i) %] - [% END %] +[% FOR i IN [ 0 .. row_names.max ] %] + [% row_names.$i = display_value(row_field, row_names.$i) %] [% END %] [% IF cumulate %] diff --git a/template/en/default/reports/report-pie.png.tmpl b/template/en/default/reports/report-pie.png.tmpl index 05a359032..27f5525dd 100644 --- a/template/en/default/reports/report-pie.png.tmpl +++ b/template/en/default/reports/report-pie.png.tmpl @@ -22,16 +22,8 @@ [% col_field_disp = field_descs.$col_field || col_field %] -[% IF col_field == 'bug_status' %] - [% FOR i IN [ 0 .. data.0.0.max ] %] - [% data.0.0.$i = display_value("bug_status", data.0.0.$i) %] - [% END %] -[% END %] - -[% IF col_field == 'resolution' %] - [% FOR i IN [ 0 .. data.0.0.max ] %] - [% data.0.0.$i = display_value("resolution", data.0.0.$i) %] - [% END %] +[% FOR i IN [ 0 .. data.0.0.max ] %] + [% data.0.0.$i = display_value(col_field, data.0.0.$i) %] [% END %] [% FILTER null; diff --git a/template/en/default/reports/report-table.csv.tmpl b/template/en/default/reports/report-table.csv.tmpl index 3694b9b35..4d8b50a85 100644 --- a/template/en/default/reports/report-table.csv.tmpl +++ b/template/en/default/reports/report-table.csv.tmpl @@ -67,12 +67,8 @@ [% END %] [% BLOCK value_display %] - [% SET disp_value = value %] - [% IF field == 'bug_status' %] - [% SET disp_value = display_value("bug_status", value) %] - [% ELSIF field == 'resolution' %] - [% SET disp_value = display_value("resolution", value) %] - [% ELSIF field == 'assigned_to' OR field == 'reporter' + [% SET disp_value = display_value(field, value) %] + [% IF field == 'assigned_to' OR field == 'reporter' OR field == 'qa_contact' %] [% disp_value = value FILTER email %] diff --git a/template/en/default/reports/report-table.html.tmpl b/template/en/default/reports/report-table.html.tmpl index 6c0abe4d3..76b80f893 100644 --- a/template/en/default/reports/report-table.html.tmpl +++ b/template/en/default/reports/report-table.html.tmpl @@ -154,12 +154,8 @@ </table> [% BLOCK value_display %] - [% SET disp_value = value %] - [% IF field == 'bug_status' %] - [% SET disp_value = display_value("bug_status", value) %] - [% ELSIF field == 'resolution' %] - [% SET disp_value = display_value("resolution", value) %] - [% ELSIF field == 'assigned_to' OR field == 'reporter' + [% SET disp_value = display_value(field, value) %] + [% IF field == 'assigned_to' OR field == 'reporter' OR field == 'qa_contact' %] [% disp_value = value FILTER email %] diff --git a/template/en/default/request/CVS/Entries b/template/en/default/request/CVS/Entries index d3e95ce11..0eafaa8ff 100644 --- a/template/en/default/request/CVS/Entries +++ b/template/en/default/request/CVS/Entries @@ -1,3 +1,3 @@ -/email.txt.tmpl/1.23/Thu Sep 3 19:05:33 2009//TBUGZILLA-3_5_1 -/queue.html.tmpl/1.23/Sun Aug 9 20:17:45 2009//TBUGZILLA-3_5_1 +/email.txt.tmpl/1.23/Thu Sep 3 19:05:33 2009//TBUGZILLA-3_5_2 +/queue.html.tmpl/1.23/Sun Aug 9 20:17:45 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/request/CVS/Tag b/template/en/default/request/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/request/CVS/Tag +++ b/template/en/default/request/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/search/CVS/Entries b/template/en/default/search/CVS/Entries index b7878c416..04f3f169b 100644 --- a/template/en/default/search/CVS/Entries +++ b/template/en/default/search/CVS/Entries @@ -1,14 +1,14 @@ -/boolean-charts.html.tmpl/1.19/Sat Dec 6 19:44:48 2008//TBUGZILLA-3_5_1 -/form.html.tmpl/1.60/Tue Oct 27 16:55:35 2009//TBUGZILLA-3_5_1 -/knob.html.tmpl/1.22/Tue Jul 14 03:59:58 2009//TBUGZILLA-3_5_1 -/search-advanced.html.tmpl/1.33/Thu Sep 11 22:09:21 2008//TBUGZILLA-3_5_1 -/search-create-series.html.tmpl/1.14/Sun Nov 11 22:03:21 2007//TBUGZILLA-3_5_1 -/search-help.html.tmpl/1.11/Tue Oct 27 16:55:35 2009//TBUGZILLA-3_5_1 -/search-plugin.xml.tmpl/1.5/Tue Dec 16 22:39:42 2008//TBUGZILLA-3_5_1 -/search-report-graph.html.tmpl/1.13/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_1 -/search-report-select.html.tmpl/1.8/Sat Jan 3 01:08:28 2009//TBUGZILLA-3_5_1 -/search-report-table.html.tmpl/1.14/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_1 -/search-specific.html.tmpl/1.25/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_1 -/tabs.html.tmpl/1.8/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_1 -/type-select.html.tmpl/1.2/Sat Dec 6 21:12:51 2008//TBUGZILLA-3_5_1 +/boolean-charts.html.tmpl/1.19/Sat Dec 6 19:44:48 2008//TBUGZILLA-3_5_2 +/form.html.tmpl/1.64/Wed Nov 18 14:39:34 2009//TBUGZILLA-3_5_2 +/knob.html.tmpl/1.22/Tue Jul 14 03:59:58 2009//TBUGZILLA-3_5_2 +/search-advanced.html.tmpl/1.33/Thu Sep 11 22:09:21 2008//TBUGZILLA-3_5_2 +/search-create-series.html.tmpl/1.14/Sun Nov 11 22:03:21 2007//TBUGZILLA-3_5_2 +/search-help.html.tmpl/1.11/Tue Oct 27 16:55:35 2009//TBUGZILLA-3_5_2 +/search-plugin.xml.tmpl/1.5/Tue Dec 16 22:39:42 2008//TBUGZILLA-3_5_2 +/search-report-graph.html.tmpl/1.13/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_2 +/search-report-select.html.tmpl/1.8/Sat Jan 3 01:08:28 2009//TBUGZILLA-3_5_2 +/search-report-table.html.tmpl/1.14/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_2 +/search-specific.html.tmpl/1.25/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_2 +/tabs.html.tmpl/1.8/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_2 +/type-select.html.tmpl/1.2/Sat Dec 6 21:12:51 2008//TBUGZILLA-3_5_2 D diff --git a/template/en/default/search/CVS/Tag b/template/en/default/search/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/search/CVS/Tag +++ b/template/en/default/search/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/search/form.html.tmpl b/template/en/default/search/form.html.tmpl index c7990fd24..72e1cf033 100644 --- a/template/en/default/search/form.html.tmpl +++ b/template/en/default/search/form.html.tmpl @@ -305,7 +305,7 @@ function doOnSelectProduct(selectmode) { [% END %] [%# Deadline %] - [% IF user.in_group(Param("timetrackinggroup")) %] + [% IF user.is_timetracker %] <tr> <th align="right"> <label for="deadlinefrom" accesskey="l">Dead<u>l</u>ine</label>: @@ -317,7 +317,7 @@ function doOnSelectProduct(selectmode) { value="[% default.deadlineto.0 FILTER html %]"> </td> <td> - <small>(YYYY-MM-DD)</small> + <small>(YYYY-MM-DD or relative dates)</small> </td> </tr> [% END %] @@ -617,19 +617,12 @@ function doOnSelectProduct(selectmode) { [%# This only applies for Resolution really %] <option value="[% value.name OR '---' FILTER html %]" [% " selected" IF lsearch(default.${sel.name}, value.name) != -1 %]> - [% IF sel.name == "bug_status" %] - [% display_value("bug_status", value.name) FILTER html %] - [% ELSIF sel.name == "resolution" %] - [%# Again, resolution has that odd empty value. Replace it with '---' %] - [% display_value("resolution", value.name) OR '---' FILTER html %] - [% ELSE %] - [% value.name FILTER html %] - [% END %] + [% display_value(sel.name, value.name) FILTER html %] </option> [% ELSE %] <option value="[% value OR '---' FILTER html %]" [% " selected" IF lsearch(default.${sel.name}, value) != -1 %]> - [% value FILTER html %] + [% display_value(sel.name, value) FILTER html %] </option> [% END %] [% END %] diff --git a/template/en/default/setup/CVS/Entries b/template/en/default/setup/CVS/Entries index 3dc5ae2c6..7effe7665 100644 --- a/template/en/default/setup/CVS/Entries +++ b/template/en/default/setup/CVS/Entries @@ -1,2 +1,2 @@ -/strings.txt.pl/1.17/Sat Oct 24 05:30:22 2009//TBUGZILLA-3_5_1 +/strings.txt.pl/1.17/Sat Oct 24 05:30:22 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/setup/CVS/Tag b/template/en/default/setup/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/setup/CVS/Tag +++ b/template/en/default/setup/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/whine/CVS/Entries b/template/en/default/whine/CVS/Entries index 2964ab63d..d25116e9f 100644 --- a/template/en/default/whine/CVS/Entries +++ b/template/en/default/whine/CVS/Entries @@ -1,5 +1,5 @@ -/mail.html.tmpl/1.8/Wed Sep 30 22:35:47 2009//TBUGZILLA-3_5_1 -/mail.txt.tmpl/1.8/Wed Sep 30 22:35:47 2009//TBUGZILLA-3_5_1 -/multipart-mime.txt.tmpl/1.7/Tue Apr 7 02:29:36 2009//TBUGZILLA-3_5_1 -/schedule.html.tmpl/1.14/Mon Apr 6 20:57:26 2009//TBUGZILLA-3_5_1 +/mail.html.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/mail.txt.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 +/multipart-mime.txt.tmpl/1.7/Tue Apr 7 02:29:36 2009//TBUGZILLA-3_5_2 +/schedule.html.tmpl/1.14/Mon Apr 6 20:57:26 2009//TBUGZILLA-3_5_2 D diff --git a/template/en/default/whine/CVS/Tag b/template/en/default/whine/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/default/whine/CVS/Tag +++ b/template/en/default/whine/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/template/en/default/whine/mail.html.tmpl b/template/en/default/whine/mail.html.tmpl index d25bcd4dd..cd432514f 100644 --- a/template/en/default/whine/mail.html.tmpl +++ b/template/en/default/whine/mail.html.tmpl @@ -78,9 +78,9 @@ <tr> <td align="left"><a href="[%+ urlbase FILTER html %]show_bug.cgi?id= [%- bug.bug_id %]">[% bug.bug_id %]</a></td> - <td align="left">[% bug.bug_severity FILTER html %]</td> - <td align="left">[% bug.priority FILTER html %]</td> - <td align="left">[% bug.rep_platform FILTER html %]</td> + <td align="left">[% display_value("bug_severity", bug.bug_severity) FILTER html %]</td> + <td align="left">[% display_value("priority", bug.priority) FILTER html %]</td> + <td align="left">[% display_value("rep_platform", bug.rep_platform) FILTER html %]</td> <td align="left">[% bug.$assignee_login_string FILTER html %]</td> <td align="left">[% display_value("bug_status", bug.bug_status) FILTER html %]</td> <td align="left">[% display_value("resolution", bug.resolution) FILTER html %]</td> diff --git a/template/en/default/whine/mail.txt.tmpl b/template/en/default/whine/mail.txt.tmpl index 6df8d4346..415081302 100644 --- a/template/en/default/whine/mail.txt.tmpl +++ b/template/en/default/whine/mail.txt.tmpl @@ -53,9 +53,9 @@ [% FOREACH bug=query.bugs %] [% terms.Bug +%] [%+ bug.bug_id %]: [%+ urlbase %]show_bug.cgi?id=[% bug.bug_id +%] - Priority: [%+ bug.priority -%] - Severity: [%+ bug.bug_severity -%] - Platform: [%+ bug.rep_platform %] + Priority: [%+ display_value("priority", bug.priority) -%] + Severity: [%+ display_value("bug_severity", bug.bug_severity) -%] + Platform: [%+ display_value("rep_platform", bug.rep_platform) %] Assignee: [%+ bug.$assignee_login_string %] Status: [%+ display_value("bug_status", bug.bug_status) %] [%- IF bug.resolution -%] Resolution: [% display_value("resolution", bug.resolution) -%] diff --git a/template/en/extension/CVS/Entries b/template/en/extension/CVS/Entries index 487b1326c..b4174109e 100644 --- a/template/en/extension/CVS/Entries +++ b/template/en/extension/CVS/Entries @@ -1,2 +1,2 @@ -/filterexceptions.pl/1.2/Sat Feb 25 23:10:53 2006//TBUGZILLA-3_5_1 +/filterexceptions.pl/1.2/Sat Feb 25 23:10:53 2006//TBUGZILLA-3_5_2 D diff --git a/template/en/extension/CVS/Tag b/template/en/extension/CVS/Tag index 2ed3f19b0..a91e70ee4 100644 --- a/template/en/extension/CVS/Tag +++ b/template/en/extension/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_1 +NBUGZILLA-3_5_2 diff --git a/xmlrpc.cgi b/xmlrpc.cgi index 994e3a485..8b1e69f28 100755 --- a/xmlrpc.cgi +++ b/xmlrpc.cgi @@ -22,12 +22,12 @@ use Bugzilla; use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::WebService::Constants; -if (!Bugzilla->feature('xmlrpc')) { - ThrowCodeError('feature_disabled', { feature => 'xmlrpc' }); +BEGIN { + if (!Bugzilla->feature('xmlrpc')) { + ThrowCodeError('feature_disabled', { feature => 'xmlrpc' }); + } } -# Use an eval here so that runtests.pl accepts this script even if SOAP-Lite -# is not installed. -eval { require Bugzilla::WebService::Server::XMLRPC; }; +use Bugzilla::WebService::Server::XMLRPC; Bugzilla->usage_mode(USAGE_MODE_XMLRPC); -- GitLab