========== Gnatsweb 4.0 released ====================================== 2003-07-29 Yngve Svendsen * Makefile: update OTHER_FILES and INSTALL_CGI. * README: Emphasize that Gnatsweb 4.0 needs GNATS 4. Be specific about CGI.pm versions. Fix typos. Change 2002 to 2003 in the copyright notice -- there were no official releases in 2002. * gnatsweb-site-example.pl, test.pl: Change 2002 to 2003 in the copyright notice -- there were no official releases in 2002. * gnatsweb.pl: Change 2002 to 2003 in the copyright notice -- there were no official releases in 2002. Change $VERSION to 4.00. * NEWS: Add. * BETA, TODO: Remove. 2003-05-06 Yngve Svendsen * gnatsweb.pl (edit): Change check for whether field value is a known enumeration value to take into account that 'unknown' may be an already existing, legitimate field value. 2003-04-29 Yngve Svendsen * gnatsweb.pl (sendpr): Set default Submitter-Id field to the value stored in the global cookie. * gnatsweb.pl (submit_stored_query): Separate "submit query" command and query string with ';', not '&'. Fixes PR 469. Fix thanks to Alexey Roytman. * gnatsweb.pl (fix_multiline_val): Prevent whitespace-only values from being entered in multiline fields. * gnatsweb.pl (edit): Rewrite check for whether field value is a known enumeration value -- use foreach instead of grep. Fixes PR 474. * gnatsweb.pl (get_mailto_link): Opera needs the URL in the mailto: link message body encoded only once (sigh, another special case). 2003-01-08 Yngve Svendsen * gnatsweb.pl (get_mailto_link): Correct negation of binding operator from !=~ to !~. Thanks to Alwin Dieperink. ========== Gnatsweb 4.0 beta 4 released =============================== 2002-11-23 Yngve Svendsen * gnatsweb.pl: Set VERSION to 3.99.4. This is beta 4. * Makefile: Add a few forgotten files to OTHER_FILES. * gnatsweb.pl: $site_no_gnats_passwords now has a default value of 0. - CUSTOMIZE.vars: Update accordingly. * BETA: Update for beta 4. Add 2002 to copyright notice. * Makefile, README, gnatsweb-site-example.pl, gnatsweb.pl, test.pl: Add 2002 to copyright notice. 2002-10-31 Yngve Svendsen * gnatsweb.pl (view, edit, submit_stored_query, delete_stored_query): Call error_page() instead of printing out errors ourselves. The stored query error printing didn't even work at all. * gnatsweb.pl (get_reply): Call page_footer and page_end_html after calls to gerror(). Fixes PR 399. 2002-10-29 Yngve Svendsen * gnatsweb.html: Mention that required fields on the Create PR page are emphasized in red, by default. 2002-10-27 Yngve Svendsen * CUSTOMIZE.vars: Document $site_required_field_color. * gnatsweb.pl: New field flag $SENDREQUIRED to mark a field as being set to "inital-entry require" in the dbconfig. - $site_required_field_color: new config variable specifying the color to use when marking required fields on the Create PR page. - (init_fieldinfo): Set it. - (sendpr): Use it to mark required fields. * gnatsweb.pl (query_page): Add missing "print" statement in front of some end table cell and row tags. * gnatsweb.pl (display_query_results): Display `unknown' for enumerated-field values that don't exist. This and the 3 next items are due to Lars Henriksen. * gnatsweb.pl (submitedit): Throw an error if Responsible, Category or Submitter-Id are set to `unknown'. - Remove check for empty username or empty Responsible field. Noone quite understood why it was there. * gnatsweb.pl (edit): Check whether the value set in an enumerated field exists or has been removed from the administrative database (file or dbconfig). If the value has been removed, use the value `unknown'. * gnatsweb.pl (sendpr): Force users to set category to something meaningful by setting default value to `unknown'. * gnatsweb.pl (sendpr, edit): The value being returned from fieldinfo() is a hashref, not a hash. Change @values to $values in all applicable places. 2002-10-25 Yngve Svendsen * gnatsweb.pl (submitnewpr): Remove return statement -- the call client_cmd("$text.") will exit after leaving an error message because $client_would_have_exited has not been set to 1. Spotted and fixed by Lars Henriksen. * gnatsweb.pl (edit, sendpr, view): Get rid of the blank row after "Reporter's E-mail". Takes up space and separating mail headers and GNATS fields has no meaning for users of the interface. 2002-10-15 Yngve Svendsen * gnatsweb.pl (main): Allow passwordless logins in order to support revised authentication mechanism in latest revision of GNATS 4. Change due to Pankaj K. Garg. 2002-10-12 Yngve Svendsen * gnatsweb.pl (submitnewpr): Check PR text before submitting new PR. Previously, it did not check contents, which implied that in a GNATS database where text fields were defined in dbconfig with the `matching' keyword, you could create a PR that would be rejected with a "Field x with contents `y' didn't match any of the required regexps" the first time you edit it, even though you didn't change the text field at all. * gnatsweb.pl (login_page): Add missing after "User Name:". Fixes PR 398. * gnatsweb.pl (submitnewpr): Remove extra newline after PR text. Patch due to Lars Henriksen. * gnatsweb.pl (server_reply, read_server, client_cmd): Print proper headers when needed. Patch by Robert Lupton the Good. * gnatsweb.pl (display_query_results): Add a link at the bottom of the Query Results page which allows the user to reverse the sort order of the currently displayed results. Based on a patch by Lars Henriksen. - gnatsweb.html: Mention the Reverse sort order link. * gnatsweb.html: Change the description of the Query Page to match the new layout and describe a few previously left-out fields. * gnatsweb.pl (query_page): Place the "Originated by You" and "Ignore Closed" checkboxes together with the Submitter-Id and State listboxes resp. Use valign=top in the left-column cells. Change the placement of the "Display Current Date" checkbox. Change the designation "Descending Order" to "Reverse Order". - (advanced_query_page): Change the placement of the "Display Current Date" checkbox. Change the designation "Descending Order" to "Reverse Order". * gnatsweb.pl (get_mailto_link): Quote the URL in the body twice for all non-Netscape browsers. 2002-10-11 Yngve Svendsen * gnatsweb.pl: field2param and param2field are gone. We now operate exclusively both internally and externally with proper dbconfig fieldnames, not lower-case versions. This breaks compatibility of Gnatsweb 2.x and older Gnatsweb 3.x stored queries with this version. site-files may also need a slight change, in that the callbacks edit_intro_'fieldname' and sendpr_intro_'fieldname' need to have 'fieldname' changed from the lower case name to the fieldname set in dbconfig. Changes due to Lars Henriksen. - (submitquery): Use anchored regexp searches for enumerated types. Changes due to Lars Henriksen. * CUSTOMIZE.cb: Explicitly state that the edit_intro_'fieldname' and sendpr_intro_'fieldname' should have 'fieldname' set to the dbconfig fieldname, not the lower case version. * gnatsweb-site-example.pl: Amend the edit_intro_'fieldname' and sendpr_intro_'fieldname' to take the above into account. 2002-09-24 Yngve Svendsen * gnatsweb.pl (submitedit): Remove \n at the end of the edited PR text during submission. Fix by Lars Henriksen, PR 385. * gnatsweb.pl (query_page, advanced_query_page): Add "Descending Order" option to `sort by'. 2002-09-17 Yngve Svendsen * CUSTOMIZE.vars: Document the mark_urls hash. Note to everyone who does checkins: Remember to update the docs when you check in something significant. * gnatsweb.pl (edit, view): Include PR number in page title. Patch by Robert Lupton the Good. * gnatsweb.pl (login_page): Add missing comma to print statement. Fix by Robert Lupton the Good. * gnatsweb.pl (query_page, advanced_query_page): Add `sort by' functionality, based on patch by Robert Lupton the Good. - Move `Originated by You' checkbox so it appears just beneath `Ignore Closed'. - Use real dbconfig fieldnames in the list boxes instead of lower case or builtin fieldnames. 2002-08-10 Gerald Pfeifer * gnatsweb.pl (server_reply): Use
instead of
for future XHTML compliance. (read_server): Ditto. (client_cmd): Ditto. (print_attachments): Ditto. (sendpr): Ditto. (view): Ditto. (edit): Ditto. (advanced_query_page): Ditto. (initialize): Ditto. (change_database): Ditto. (cmd_logout): Ditto. (cmd_login): Ditto. 2002-08-10 Anders Johnson * gnatsweb.pl (server_reply): Print actual reply from server. 2002-07-26 Yngve Svendsen * gnatsweb-site-example.pl (site_callback): Change qfmt field separators in accordance with the new usage of octal charcter 037 as field separator. 2002-06-04 Dirk Bergstrom * gnatsweb.pl (mark_urls): Changed the regexes so it no longer does four passes over the string. Put in a config knob (%mark_urls) to control behavior, and limit size of fields processed. This is theoretically a fix for PR 387 (mark_urls takes over a minute), however, I find no measurable difference in performance before and after the change. oh well, it's still a good patch. 2002-02-22 Dirk Bergstrom * gnatsweb.pl (sendpr, validate_new_pr, submitnewpr, view, edit, submitedit, parsepr, interested_parties): Remove X-GNATS-Notify from gnatsweb. it's not supported by gnatsd, so it's just confusing users. (init_prefs): add a hack to support old "email_add" cookie value. (edit, sendpr): change the name of forms to "PrForm". this is used by a javascript hook in a helper app, and it needs to talk to both forms. (edit): decremented the field count so the javascript hook would work after removing the x-gnats-notify field. 2002-02-09 Yngve Svendsen * gnatsweb.pl (submitquery): Use exact matching when querying on enum or multienum type fields. Should be the behaviour that most people would expect. Fixes PR 322. 2001-12-18 Gerald Pfeifer * gnatsweb.pl (page_start_html): Do not mix classic HTML color tags (BGCOLOR) and CSS. ========== Gnatsweb 4.0 beta 3 released =============================== 2001-12-12 Yngve Svendsen * gnatsweb.pl: Set VERSION to 3.99.3. This is beta 3. 2001-12-04 Yngve Svendsen * gnatsweb.pl (sendpr, validate_email_field, init_prefs): Rename 'email_addr' to 'email' in the global cookie. 2001-12-02 Yngve Svendsen * gnatsweb.pl (submitquery, display_query_results): Use ASCII octal \037 (unit separator) as field separator in the query output format string, instead of '|', which would make Gnatsweb mess up the query results display when a field contained a '|'. 2001-11-30 Yngve Svendsen * gnatsweb.pl (display_query_results): Removed definition of $myurl -- it was never used. * gnatsweb.pl: Implement redirect after 'Store query': - (display_query_results): Add return_url hidden field to form. - (store_query): Add redirect code, notify user that redirect is about to happen. 2001-11-29 Yngve Svendsen * gnatsweb.pl: Implement redirect after 'Create': - (sendpr): Add hidden field 'return_url' to form. - (submitnewpr): Defer call to page_start_html until we know whether we need a customized HTML head. Create global cookie here, not in main. Add code to issue refresh header and call page_start_html with extra arguments for the HTML head section for the MSIE workaround. Add a line to the result page saying that the user will be redirected automatically. - (get_pr_url): Do not include pr=xxx in URL when $pr is 0. - (page_start_html): Add passed arguments (if any) to the call to start_html. Use URL containing return_url parameter in the CREATE link in the button bar. - (main): Remove call to print_header in the 'submit' case. We do this inside the submitnewpr subroutine now. - (submitedit): Do the refresh in the same way as in submitnewpr - the old method emitted bad HTML. - (delete_stored_query): Ditto. * gnatsweb.pl (sendpr, edit): Fix syntax error that prevented table cell and row end tags from being printed. 2001-11-21 Yngve Svendsen * CUSTOMIZING.vars, TROUBLESHOOTING, INSTALL, gnatsweb.html, gnatsweb.pl: Changes to reflect that GNATS development has moved to Savannah. * gnatsweb.pl: Add 'use Text::Tabs'. - (view): Expand tabs to spaces, replace back-to-back occurrences of spaces with " " and a space. This makes browsers render indented code correctly. Thanks to Brad Garcia. 2001-11-19 Yngve Svendsen * gnatsweb.pl: A bit of cleanup, based on suggestions from Dirk Bergstrom: - (init_fieldinfo): Add 'separators' and 'default_sep' hash elements for multienum fields. - (parse_multienum, unparse_multienum): Use them. - (multiselect_menu): New subroutine. Returns a multiselect menu. - (edit, sendpr): Use it. - (query_page): Use // around regexp. - (unparse_multienum): Use join instead of foreach loop. 2001-11-03 Yngve Svendsen * gnatsweb.pl: Initial check-in of multienum support code. - (parse_multienum): Parse a legally separated MultiEnum string by splitting on the multienum separators and returning the result as an array ref. - (unparse_multienum): Collect multienum form values in a single string, values separated by the first character in the multienum separator string for that field. - (submitnewpr, submitedit): Use unparse_multienum on MultiEnum field values from the form. - (edit): Use parse_multienum to pre-fill MultiEnum fields in the form with the old values. We use a multiselect scrolling list. - (query_page, advanced_query_page): Support queries on MultiEnum fields. We use a multiselect scrolling list. - (sendpr): Support entry of values for MultiEnum fields using a multiselect scrolling list. * gnatsweb.pl (delete_stored_query): Use refresh, not redirect, since that confuses Netscape. Add workaround for MSIE's non-handling of refresh headers. * gnatsweb.pl (login_page): Tweak print statement to avoid user strict-related warning. 2001-11-01 Dirk Bergstrom * gnatsweb.pl (one_line_form, view): Change form submission from POST to GET. Postdata expires from cache after some time (i believe it's browser-dependent), and this can cause loss of data in the following scenario: user clicks the create button on the main page, spends half an hour entering PR data, hits submit, and there's an error; user hits "back", but is told that the create form is postdata, and it has expired. all the data they entered is lost, and much frustration ensues. this can also happen with editing and query submission. (edit): Increment number of hardcoded fields in $field_number to account for the addition of return_url. This needs to be done whenever a non-dynamic field is added to the top of the edit or view pages. 2001-10-30 Yngve Svendsen * gnatsweb.pl (get_mailto_link): Remove special handling of Internet Explorer browser -- not all MSIE users use Outlook. Furthermore, newer versions of Outlook do not need the special quoting. - (get_mailto_link): Put Synopsis, as well as category and PR number in the Subject field of the mailto link. 2001-10-23 Yngve Svendsen * gnatsweb.pl ($site_banner_text): Say 'GNU Gnatsweb'. 2001-10-21 Yngve Svendsen * TROUBLESHOOTING: New document. * INSTALL: Update, expand, correct. Mention troubleshooting document. * gnatsweb.pl (advanced_query_page): Use cellspacing=0. * gnatsweb.pl (sendpr): Change name of form from editPrForm to sendPrForm. 2001-10-20 Yngve Svendsen * gnatsweb.pl (get_viewpr_url): Properly escape the 'view audit-trail' command. ========== Gnatsweb 4.0 beta 2 released =============================== 2001-10-17 Yngve Svendsen * $VERSION set to 3.99.2. This is Gnatsweb 4.0 beta 2. * Gnatsweb is finally under the GPL. All significant files, copyright notices and licensing conditions have been added to all code files and the README file. - COPYING: New file containing the GPL. - BETA: New file. 2001-10-17 Dirk Bergstrom * gnatsweb.pl (parse_submitters): Populate %submitter_complete with the human-readable value from the submitters file. (popup_or_scrolling_menu): Use %submitter_complete to provide labels for Submitter-Id field. (main_page): Display current database in change database dropdown. (formstart): Workaround for an exceedingly dumb netscape bug, in which the back arrow is broken after submitting a new PR or an edited PR. (form_start, multipart_form_start): Wrapper functions for formstart(). (send_pr, edit): Use multipart_form_start(). (init_prefs): Added code to save email_addr in the global cookie. This value is used to populate the email field in the create PR screen. This functionality disappeared somewhere after 1.59. 2001-10-15 Yngve Svendsen * INSTALL: Change the treatment of access control to take into account the new 'listdb' level. * CUSTOMIZE.vars: Document the $include_audit_trail variable. 2001-10-12 Yngve Svendsen * Makefile: Silence the test target a bit. * test.pl: Get rid of noise generated when the test script is unable to connect to the GNATS database. Add a note on how to troubleshoot connection problems. * gnatsweb.pl: Strengthen warning about setting config variables in the site file, not in the main script. 2001-10-11 Yngve Svendsen * gnatsweb.pl (split_csl): New subroutine. Splits comma-separated e-mail addresses in such a way that commas in quotes aren't considered separators. Thanks to Arno Unkrig. (fix_email_addrs): Use it. (interested_parties): Likewise. * gnatsweb.html: Document the Display Current Date checkbox in the query pages. * gnatsweb.pl (query_page, advanced_query_page): Add checkbox controlling whether to display the current date on the results page. Default is on. - (display_query_results): Display current date below number of matches if the "Display current date" checkbox on the query page is checked. * gnatsweb.pl: New config variable $include_audit_trail which controls whether the Audit-Trail will be shown by default in the View PR screen. (main_page, get_viewpr_url): Use it. * gnatsweb.pl (popup_or_scrolling_menu): Use both username and full name in the Responsible dialog. - (parse_responsible): New responsible_complete hash. Contains both username and full name. 2001-09-21 Dirk Bergstrom * gnatsweb.pl (main_page): add a '$q->' to a CGI.pm call that i missed on 2001-09-6. 2001-09-12 Yngve Svendsen * gnatsweb.pl: Various very minor changes to get rid of strict warnings. * gnatsweb-site-example.pl: Fix problems with 'open' and 'not closed' examples by switching to custom query format instead of sql2. * CUSTOMIZE.cb, CUSTOMIZE.vars: Update in accordance with the changes below. Make layout a smidgen clearer. * gnatsweb.pl: Change $gnats_info_top to point to a page on sources which contains links to documentation for multiple versions of GNATS. * gnatsweb.pl (login_page): Add a callback which allows printing of a welcome message on the login page. - gnatsweb-site-example.pl: Use it. 2001-09-11 Yngve Svendsen * gnatsweb.pl: Change $VERSION to 3.99. We're in beta now. * INSTALL: Include notes for upgraders. * gnatsweb-site-example.pl: Fix problems with query results table header row when using the 'open' and 'not closed' buttons. * gnatsweb.html: Fairly minor changes to reflect the way GNATS and Gnatsweb 4 work. * Makefile: Add new files to the OTHER_FILES macro. Rewrite install target to back up old installations and to preserve the gnatsweb-site.pl file if already installed. Remove references to gnatsweb-site-sente.pl. 2001-09-10 Yngve Svendsen * gnatsweb-site-sente.pl: Gone -- it was getting a bit long in the tooth and 2.x-specific. * gnatsweb-site-example.html: Fleshed out a bit. * CUSTOMIZE.cb: Callback documentation finished. * gnatsweb.pl (sendpr): Removed get_default_value callback hook. 2001-09-09 Yngve Svendsen * gnatsweb.pl (main): Support cmd callbacks. * CUSTOMIZE, CUSTOMIZE.vars: New documentation on how to customize Gnatsweb. * gnatsweb.pl: $global_cookie_expires was being defined twice. * Makefile (tarball, default, no-debug-statements): Misc. fixes. * gnatsweb.pl: $VERSION now global, so that we can use it in the Makefile. * gnatsweb.pl (client_init): Trap attempts to use a nonexisting $site_gnats_host. * README, TODO: Update for Gnatsweb 4. - INSTALL: Largely rewritten for Gnatsweb 4 - gnatsweb-site.pl: Minimal local configuration file. - Makefile: Install gnatsweb-site.pl, not gnatsweb-site-sente.pl 2001-09-08 Yngve Svendsen * gnatsweb.pl (page_start_html): Reenable the button bar on the main page -- turns out users who are accustomed to it use it almost exclusively. 2001-09-07 Dirk Bergstrom * gnatsweb.pl (get_mailto_link): rewritten to properly html-escape the followup mailto: link contents. * gnatsweb.pl (help_page): Changed bare calls to p() & a() to $q->p() style calls. Missed these yesterday. 2001-09-06 Dirk Bergstrom * gnatsweb.pl: Use CGI qw/-nosticky/; This prevents CGI.pm from appending a bunch of .cgifields to every self_url(). AFAIK, we're not using CGI.pm's sticky field features, so we can do w/o the overhead and the unreasonably long URLs it produces. * gnatsweb.pl: Changed bare calls to CGI.pm routines to qualified calls (ie. submit(foo... becomes $q->submit(foo... ). This allows us to stop importing the :standard and :netscape extensions to CGI.pm. Doing so should improve the startup time and decrease memory footprint. * gnatsweb.pl: Refresh headers choke on semicolon-separated query-strings, so we change semicolons to ampersands in the URL everywhere we use refresh. * gnatsweb.pl (view, edit, submitedit, download_attachment): Added code to strip non-digit characters from $pr. Gnatsd sometimes accepts category/number, and sometimes does the Wrong Thing, and I thought it best to remove the possibility of problems. * gnatsweb.pl (camouflage, set_pref): Removed camouflage()ing of 'user', since the first time I used this version of gnatsweb, it became convinced that my username was 'ag`tavqw'. This migration problem far outweighs the meager benefits of masking the username in the cookie. camouflage()ing the password will still cause migration problems for sites that have used a previous incarnation of gnatsweb, but it might be worth it... * gnatsweb.pl (page_start_html): Don't show logout button if $site_gnatsweb_server_auth is set. Don't show button bar on main page. Changed all the html tags to lowercase, for standards-compliance. * gnatsweb.pl (datemenu, edit): Removed datemenu(), and the one (unreachable) reference to it. It was unused, and probably justifiably so, given the robust date parsing abilities in gnatsd. * gnatsweb.pl (display_query_results): Strip empty params out of $url for the "View for bookmarking" link. * gnatsweb.pl (store_query): Strip empty params out of $query_string before building cookie, to help keep it under the 4K limit. Check (approx) length of cookie, error if it looks like it's going to be over 4K. * gnatsweb.pl (get_mailto_link): Added a new config parameter, %site_pr_submission_address. If set for the current database, get_mailto_link() adds a mailto: link ("submit followup via email") that goes to the local PR submission address and the PR's Reply-To address. The subject is set so that the message gets tacked on to the PR's audit trail. 2001-09-02 Yngve Svendsen * test.pl: Remove parse/unparse tests. These would be very hard to get to work with GNATS 4's customized fields. 2001-08-23 Yngve Svendsen * gnatsweb.pl ($VERSION): Change to 3.98. * gnatsweb.pl (submitedit): Corrected a typo that prevented free-text search against specific fields from working. Thanks to Paul-Andre Panon for spotting this. 2001-08-20 Yngve Svendsen * gnatsweb.pl (edit): Add the attribute wrap=hard to Reason-Changed textareas. Causes input in these fields to be added to the Audit-Trail prewrapped at $textwidth. 2001-08-19 Yngve Svendsen * gnatsweb.pl (parse_categories): No longer exclude 'pending' from the category search list. This restriction made little sense. * gnatsweb.pl: Move the initial declaraion of $GNATS_VERS from the sub initialize to the outermost block so that main_page can access it. - (main_page): Print both the Gnatsweb and GNATS version numbers in the main page footer. * gnatsweb.pl ($use_temp_db_prefs_cookie): New variable. If this is set, the db_prefs cookie is set without an expiry date, generating a browser-stored cookie limited to the current session. This improves security. - (cmd_login): Set cookie expiry only if $use_temp_db_prefs_cookie is false. * gnatsweb.pl (camouflage): New subroutine. If passed a scalar, camouflages it by XORing it with 19 and reversing the string. If passed a hash reference with keys "user" and "password", it camouflages the values of these keys using the same algorithm. - (uncamouflage): The camouflage algorithm is symmetric, so we just call it from here. - (cmd_login): Use camouflage to hide username and password in login cookies. Will only provide a certain measure of security against the most casual and amateurish of prying eyes. - (set_pref): Use uncamouflage to retrieve username and password. 2001-08-18 Yngve Svendsen * gnatsweb.pl (submitquery): Make issuing of the client command EXPR conditional. Certain slightly unusual queries would result in the client command EXPR being sent with no parameter, generating a gnatsd error. * gnatsweb.pl (query_page): Avoid use strict-related warning if $global_prefs{'columns'} was undefined. * gnatsweb.pl (print_stored_queries): Filter out stored queries for other databases than the current one. Change due to Paul-Andre Panon. 2001-08-17 Yngve Svendsen * test.pl: Change query commands to work with gnatsd v4 syntax. Testing now runs, but fails on parse/unparse. May need a rewrite. 2001-08-16 Yngve Svendsen * gnatsweb.pl: Make the $suppress_main variable global - it has to be in order to make gnatsweb.pl callable from the test.pl script. 2001-08-12 Yngve Svendsen * gnatsweb.pl (login_page): Prevent the word "Password" from being printed twice. 2001-08-08 Yngve Svendsen * gnatsweb.pl: ($VERSION): Change to 3.97 -- we're nearly 4.0 feature-complete now. * gnatsweb.pl: Replace the Login Again functionality with a Log Out function: - Replace all occurences of "login again" with "logout". - (main_page): Change the "Login Again" label to "Log Out / Change Database". - (cmd_logout): New subroutine. Clears the db_prefs cookie and redirects the user to the login page. - (main): Call cmd_logout instead of going directly to login_page. * gnatsweb.pl: Add a navigation bar just below the page banner: - $site_button_background and $site_button_foreground. New variables initialized to black and white resp. - (page_start_html): Rewrite to display button bar and generally clean up the code, with clearer style declarations. - (login_page): Call page_start_html with an additional parameter set to '1'. Prevents the button bar from being displayed on this page. 2001-08-07 Yngve Svendsen * gnatsweb.pl (download_attachment): Fix a syntax error which prevented attachment downloading from working properly. * Cleanup to get rid of strict warnings: gnatsweb.pl: Change initial definition of $no_create_without_access from undef to ''. - (submitedit, main, mark_urls, display_query_results, unparsepr): Add some || '' constructs. Fixes a bunch of 'uninitialized value' warnings. - (param2field): Correctly translate 'PR' to 'Number'. Remove warn statement as it makes little sense with GNATS 4 configurable fields. 2001-07-26 Yngve Svendsen * gnatsweb.pl (display_query_results): Use cellspacing 0 and cellpadding 1. Makes table a tad more readable. * gnatsweb.pl (page_start_html): Redesign the banner. Different typeface, different size. This is done so that we no longer need to keep separate styles based on browser and platform - things will look fairly similar across the board. - Also, we now print user and access level info in the banner itself, along with the database name. - (page_heading): Stop printing user and access level info in the heading (it now appears in the banner). We now print the page heading inside a simple

, instead of in a table. This makes for cleaner HTML and less space between heading and page content. - Remove the third parameter in calls to page_heading. This used to control whether to print user and access info in the page heading. 2001-07-18 Yngve Svendsen * gnatsweb.pl (view, edit): Removed the check for non-digit characters introduced below. It is no longer needed since we now treat CODE_NO_PRS_MATCHED as an error. * gnatsweb.pl (store_query): Add checking of query name before we attempt to store it. According to http://home.netscape.com/newsref/std/cookie_spec.html, cookie names must not contain commas, semicolons or spaces, and they must not be blank. * gnatsweb.pl: New variables $print_header_done, $page_start_html_done and $page_heading_done to be used to ensure that we don't print headers, headings and banners twice. (print_header, page_start_html, page_heading): Use these variables. - All direct calls to CGI.pm's header function replaced by calls to print_header. - (gerror): Rewritten to output headers, heading and banner. - (get_reply): We now treat the return code CODE_NO_PRS_MATCHED as an error. Otherwise, users would be able to edit nonexistent PRs. This has the unfortunate side-effect of outputting an error when there are no matches to a query, but I consider that a small price to pay. Tweaked error code formatting. - (popup_or_scrolling_menu): Inserted missing '!' in if statement. - (edit): Switched order of page_heading and readpr. 2001-07-16 Yngve Svendsen * gnatsweb.pl (page_heading): Use -nowrap=>'1' instead of plain nowrap to avoid silly CGI.pm messages in the error_log. * gnatsweb.pl (error_page): New subroutine which replaces the local err_sub routine used in submitedit. We want all error reporting to be done through this subroutine, since it gives us a consistent look. * gnatsweb.pl (popup_or_scrolling_menu): Check if $string is defined by using 'if defined' instead of a numeric comparison. * gnatsweb.pl (advanced_query_page): Add a line below 'Closed After' and 'Closed Before' reminding users to uncheck 'Ignore Closed'. Added a little bit of vertical space between tables. Ported from 2.x branch. * gnatsweb.pl (view, edit): Add a check for non-digit characters in PR numbers. If such characters are found, an appropriate error message is issued. gnatsd will actually accept PR numbers on the format string/xxxx, where xxxx is a number, and return the appropriate PR. However, when edits are submitted to such a PR, a new PR with the "number" 'string/xxxx' would be created, with the same category as the original PR. This is a workaround for that problem. Ported from 2.x branch. * gnatsweb.pl: (page_heading): Set the width of the table containing the page heading and database, username and access level to 100%. Opera would display a too narrow table when the width wasn't explicitly set. * gnatsweb.pl (main): Add an explicit link to the automatic redirection page. Fix due to Mark Kuchel. Ported from 2.x branch. * gnatsweb.pl (login_page_javascript): Use correct