1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672
|
========== Gnatsweb 4.0 released ======================================
2003-07-29 Yngve Svendsen <yngve.svendsen@sun.com>
* 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 <yngve.svendsen@sun.com>
* 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 <yngve.svendsen@sun.com>
* 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 <yngve.svendsen@sun.com>
* 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 <yngve.svendsen@sun.com>
* 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 <yngve.scary@trick.or.treat>
* 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 <yngve.svendsen@sun.com>
* gnatsweb.html: Mention that required fields on the Create PR
page are emphasized in red, by default.
2002-10-27 Yngve Svendsen <yngve.svendsen@sun.com>
* 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 <yngve.svendsen@sun.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 </td> 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <pfeifer@dbai.tuwien.ac.at>
* gnatsweb.pl (server_reply): Use <br /> instead of <br> 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 <anders@wischip.com>
* gnatsweb.pl (server_reply): Print actual reply from server.
2002-07-26 Yngve Svendsen <yngvesv@math.ntnu.no>
* 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 <dirk@juniper.net>
* 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 <dirk@juniper.net>
* 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 <yngve.svendsen@clustra.com>
* 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 <pfeifer@dbai.tuwien.ac.at>
* 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 <yngve.svendsen@clustra.com>
* gnatsweb.pl: Set VERSION to 3.99.3. This is beta 3.
2001-12-04 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl (sendpr, validate_email_field, init_prefs): Rename
'email_addr' to 'email' in the global cookie.
2001-12-02 Yngve Svendsen <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <dirk@juniper.net>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* gnatsweb.pl ($site_banner_text): Say 'GNU Gnatsweb'.
2001-10-21 Yngve Svendsen <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* gnatsweb.pl (get_viewpr_url): Properly escape the 'view
audit-trail' command.
========== Gnatsweb 4.0 beta 2 released ===============================
2001-10-17 Yngve Svendsen <yngve.svendsen@clustra.com>
* $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 <dirk@juniper.net>
* 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 <yngves@gnu.org>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngves@gnu.org>
* 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 <dirk@juniper.net>
* gnatsweb.pl (main_page): add a '$q->' to a CGI.pm call that i
missed on 2001-09-6.
2001-09-12 Yngve Svendsen <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <dbergstr@crawler.juniper.net>
* 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 <dbergstr@crawler.juniper.net>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* gnatsweb.pl (login_page): Prevent the word "Password" from being
printed twice.
2001-08-08 Yngve Svendsen <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <H1>, 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 <yngve.svendsen@clustra.com>
* 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 <yngve.svendsen@clustra.com>
* 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 <SCRIPT
LANGUAGE>.
* gnatsweb.pl (submitquery): If there's a query name, include it
in the page heading. Ported from 2.x branch.
* gnatsweb.pl (store_query): Gnatsweb will no longer allow you to
store a query if this would result in more than 20 cookies.
Otherwise random cookies get dropped and things start acting
weird. 20 is a magical number as defined in
http://home.netscape.com/newsref/std/cookie_spec.html. Ported from
2.x branch.
* gnatsweb-pl (display_query_results): Added a 'View for
bookmarking' link, which reloads the same query so that you can
bookmark it in your browser. Ported from 2.x branch.
* gnatsweb.pl (submitedit): Modifying the CC list (X-GNATS-Notify
header) was not working if X-GNATS-Notify existed but was empty.
Problem turned out to be a couple of extraneous spaces in the
field substitution regexps.
* gnatsweb.pl: Change the example value of $site_mail_domain from
@juniper.net to something nonexistent.
* Implement redirects after edits (ported from 2.x branch):
gnatsweb.pl (get_pr_url): New subroutine. Returns a URL which
will take one to the specified $pr and with a specified $cmd.
(get_editpr_url, get_viewpr_url): Rewrite to use get_pr_url.
(get_script_name): New subroutine. Same as script_name(), but
includes 'database=xxx' parameter.
(view, edit): Pass hidden variable return_url.
(submitedit): New local subroutine err_sub. Makes it easier to
postpone calling print_header. Rewrite all error messages in
submitedit to use this routine.
(submitedit): After submitting edits, users are now redirected
back to the page where they were before the edit.
(display_query_results): Change to use get_viewpr_url and
get_editpr_url so that we get the return_url parameter as part of
the URL.
(print_header): New subroutine. Print HTTP header unless it's been
printed already.
(main): Don't call header() before calling submitedit(). Let
submitedit itself take care of printing the headers it needs.
2001-07-15 Yngve Svendsen <yngve.svendsen@clustra.com>
* test.pl: Don't use 'diff -u' during 'make test'; not everyone
has GNU diff. Ported from 2.x branch.
* gnatsweb.pl (decode_attachment): Fix a problem where attachments
containing a double newline in the body would be truncated
during decoding. Fix due to Omar Rashad.
* gnatsweb.pl (parsepr): Strip leading space characters from each
line of the attachments. Fixes attachment handling, which has
been broken almost since GNATS 4.0 development started.
* gnatsweb.pl (download_attachment): Insert a conditional to send
the header based on HTTP_USER_AGENT. MS Internet Explorer 5.5
would attempt to save downloaded attachments under the same name
as the Gnatsweb script file, typically gnatsweb.pl. This is
because MSIE handles the HTTP header "Content-Disposition:
attachment" wrongly. It needs "file" instead of "attachment".
* gnatsweb.pl (submitedit): Check whether fields that are
specified in dbconfig as requiring a 'Reason Changed' have the
reason specified.
2001-07-08 Yngve Svendsen <yngve.svendsen@clustra.com>
* $VERSION increased to 3.96.
2001-07-08 Dirk Bergstrom <dirk@juniper.net>
* gnatsweb.pl: now runs with "use strict;". while combing though
the code to properly declare and scope variables, i found several
flags and routines that were unused; they were removed. some
routines were massaged to accomodate lexical scoping:
- the sortby_field(_num) subs were inlined.
- can_do_mime is wrapped in a do{} block to capture the cached value.
- $default was removed from date_menu.
* gnatsweb.pl: configuration switches gathered together at the top
of the file, keeping all the hardcoded global values in one place.
* gnatsweb.pl (popup_or_scrolling_menu): category
dropdown/scrolling list now includes descriptions. the
descriptions from the categories file are now displayed, instead
of just the (sometimes cryptic) codes.
* gnatsweb.pl: uses warn() to write errors to the server logfile
whenever an error is generated, a message is emitted to STDERR,
containing a diagnostic message, the username, the database, and a
stacktrace.
* gnatsweb.pl (send_pr, edit): the create and edit PR pages now
keep track of field number, so that javascript hooks can be
applied. forms are also named. gnats field names customarily
include dashes, and javascript names cannot include dashes, so it
was impossible to write a javascript routine that could examine or
change a field value. to get around this, the code keeps track of
the field number (starting at zero), and passes this value to the
cb() callback. this way, the callback can generate javascript on
the fly, for things like client-side validitity checking.
* gnatsweb.pl (send_pr, edit): field descriptions are printed in
the create and edit pages (and optionally on the view PR page,
though that tends to look overly cluttered), using the field
descriptions from the dbconfig file. this necessitated setting
the column width of the left column to 20%, so that the
descriptions would wrap.
* gnatsweb.pl (view): tidied up logic for
[edit] or [view audit-trail] or send email to interested parties
so that the last 'or' doesn't show up when users w/o edit access
are viewing the audit trail.
* gnatsweb.pl (page_start_html): database name now displayed in
header.
* gnatsweb.pl (mark_urls): replaced with a more rigorous
version. now does email addresses, and turns references to PRs
into view_pr_urls. this is used on just about every field in
the view-pr page, and on many fields in the query-results
page.
* gnatsweb.pl (client_exit): improved handling of errors and
exceptions from gnatsd. $suppress_client_exit is now actually
honored, so that submitedit() and initialize() can recover
gracefully from problems. this is particularly important in
submitedit() -- if we shut down the connection to gnatsd on an
edit error, the lock on the PR will not be properly cleared. this
fixes a problem with stale PR lockfiles.
* gnatsweb.pl (submitquery): dates are returned from queries as
ISO-8601-like dates (yyyy-mm-dd hh:mm:ss tz), using the query
format %{%Y-%m-%d %H:%M:%S %Z}D. This makes sorting query results
by date actually work.
* gnatsweb.pl (submitquery): empty parameters are stripped from
the query-string on the query-results page. in a gnats db with
many fields, the query-string will become very long, filled up
with ...&field_name=&other_field=&third_field=&.... this is a
problem, since IE5 truncates query-strings at ~2048 characters.
* gnatsweb.pl (advanced_query_page): applied yngve's fix of v2.33
to the advanced query page.
* gnatsweb.pl: added explicit return statements to several subs
for readability.
* gnatsweb.pl (param2field): now looks thru @fieldnames for a
matching field. the old, algorithmic, behavior would fail on
fields with multiple consecutive capitalized letters (ie: ID-Num
would come back as Id-Num) and fields containing underscores
(ie: Project_Number would come back as Project-Number). if there
is no matching gnats fieldname, it falls back to the old behavior.
* gnatsweb.pl ($sn): global variable $sn renamed $script_name for
clarity.
* gnatsweb.pl: Responsible field always displayed as a mailto:
link
* gnatsweb.pl (send_html): removed the die() on file open failure.
it seemed better to simply return, and let the caller decide what
to do, especially since help_page already had error handling coded
in...
* gnatsweb.pl (can_edit, can_create): now use the access levels
defined in gnatsd.h
* gnatsweb.pl: added $no_create_without_access flag. useful
primarily for web-only sites which wish to limit PR creation to
users with a minimum access level. allows for view-without-create
access.
* gnatsweb.pl: gnatsd/gnatsweb can be set up for web-only access.
if you want to set up a more tightly secured installation, you can
allow only localhost connections to gnatsd, restrict logins to the
host, and require all users to go thru gnatsweb. this option
assumes that the web server is doing authentication, and that the
REMOTE_USER environment variable is correctly set. with this
switch set, the "login again" button is replaced by a "change
database" button.
* gnatsweb.pl (change_database): added to support web-only access
* gnatsweb.pl: gnatsweb can be set up to ignore the gnats
password. the gnats network mode is quite cavalier about
passwords, and some sites may elect not to use gnats passwords.
if so, there's no point in gnatsweb asking for them. if this
switch is set, the "login again" page does not prompt for a
password.
* gnatsweb.pl (parse_config): removed this sub, since it is
unused, and the %config hash is unused. i have no clue why it's
here -- it may be a relic from gnats 3.113, which, iirc, has a
"config" file...
* gnatsweb.pl ($site_mailer): removed, as it was unused
* gnatsweb.pl (submitedit): removed $ok flag, since it was
superfluous. the "last LOCKED;" statements in the error handling
blocks serve the same purpose
* gnatsweb.pl (%db_pref): changed db_pref hash element 'email' to
'email_addr'. otherwise, whatever value user entered into the
"Reporter's Email" field on the "Create PR" page would get stuck
as their email address (because set_pref overrides %cvals{'foo'}
with $q->param('foo')...)
* gnatsweb.pl (initialize): substantially rewritten. the old
version issued a CHDB first, then attempted to set the user name
(and thus get access) with USER. this could lead to a deadlock
situation where the user was "in" a database they didn't have
access to, and thus login_page() couldn't display a list of
databases so the user could change to one they *did* have access
to. access level defaulted to 'edit'. the new version starts off
by caching the results of DBLS, so that any failures down the line
won't leave us in a deadlock. then it does a CHDB, using the
three-argument form (db-name, user-name, password), which will
fail if the user does not have access to the selected database.
from the response to the CHDB command, it extracts the
access-level the user is granted in that database, and sets the
global $access_level variable
(access_level defaults to view, instead of edit). finally, if the
access_level is less than view (ie, submit, none or deny), the
user is given the login page.
* gnatsweb.pl (main, cmd_login): moved login code from command
switch in main() to it's own sub. this makes main() much cleaner.
since i added a bunch of code to the login, it seemed best to move
it to it's own sub. cmd_login() also does some sanity-checking on
the user name -- i discovered that users were entering PR numbers
in the login field, because they were so used to just typing away
in the first field they saw...
* gnatsweb.pl (login_page): now displays an optional message,
given as second parameter, useful for passing authentication
errors to the user. only displays the necessary fields, depending
on $site_gnats_browser_auth and $site_no_gnats_passwords.
* gnatsweb.pl: debug flags allow for browser viewing of
communications with gnatsd. if the $site_allow_remote_debug flag
is set, setting the 'debug' param will allow you to see the
conversation between gnatsweb and gnatsd. setting it to 'cmd'
will show just gnatsweb's commands, 'reply' will show just
gnatsd's replies, and 'all' will show both. this is useful mostly
for developers and gnats admins. unfortunately, there's no good
way to limit use of debug params to users with admin privileges,
since much of what you might want to snoop happens *before* access
level is determined.
* gnatsweb.pl (hidden_debug): added to forms to preserve state of
debug params. this allows debugging during queries and
create/edit submits.
* gnatsweb.pl (main_page): now exit()s when finished. so that we
can call it from the big switch in main() when users try to do
something they aren't allowed to do.
* gnatsweb.pl (main): if access level is less than 'edit', users
cannot submit edits to PRs. previously, users w/o edit privileges
did not see the "edit" button on the main page, but gnatsweb did
not explicitly prevent them from submitting an edit
(ie, with a manually created form). this loophole is now closed.
* gnatsweb.pl (main): $gnatsweb_site_file is read and eval'd,
rather than pulled in using do(), to facilitate using strict
(using do(), the included file is not in the including file's
lexical scope). errors generate a warn()ing to the server log as
well as a die (which will go to the browser, via
CGI::Carp::FatalsToBrowser).
* gnatsweb-site-sente.pl: configuration switches from gnatsweb.pl
duplicated at the top of the file, since this is the recommended
place for them...
* gnatsweb-site-sente.pl (site_callback): cleaned up the if
blocks, removed unsupported callbacks. added documentation for
the suported callbacks.
2001-06-26 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl (help_page): Fix a serious security hole where an
attacker would be able to read any file on the system or run any
command to which the web server process user had access to by
submitting a rogue help_file parameter in the URL. help_file is
now hardcoded to 'gnatsweb.html'.
2001-04-05 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl (query_page): Shift 'number' out of the array of
selectable column names (@fieldnames) to prevent user from
selecting it. That would cause the 'number' column to be
repeated twice, since NUMBER_FIELD is explicitly added to the
search format in submitquery. The best solution would be to
remove the explicit addition, but that messes up column sorting.
However, since the only drawback of the current fix is that we
force the inclusion of PR numbers in the query results listing,
this doesn't seem to matter much.
* gnatsweb.pl (help_page): If present, return the gnatsweb.html
document installed with Gnatsweb, stripped with send_html, as
help text. Ported from Gnatsweb 2.x branch.
* gnatsweb.pl (send_html): New subroutine that strips off
everything outside <BODY> and </BODY> in an HTML document and
returns the contents. Ported from Gnatsweb 2.x branch.
* gnatsweb.html: Clean up HTML, fix spelling, remove some <I>'s
and <B>'s that made the text less readable. Some slight
rephrasing in order to clarify things.
2001-04-04 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl (display_query_results): Use the provided 'nonempty'
routine to pad empty cells with 's instead of the if used in
the last checkin. This only takes care of the cases where the empty
cells are not at the end of a row.
* gnatsweb.pl (display_query_results): When there are one or more
empty cells at the end of a query result row, the remaining cells
are padded with 's.
2001-03-29 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl (display_query_results): Add an if clause in order to
print an if a field is empty. This is needed because most
browsers won't render the border of an empty field.
* gnatsweb.pl: Make output more amenable to CSS stylesheet formatting.
Add paragraph tags and enclose stuff that doesn't belong inside
paragraphs in DIV tags. Use heading tags instead of font size tags for
headings. Also correct some rather bad HTML problems with missing
endtags for paragraph and table tags all over the place. These caused
Netscape Navigator to refuse to use stylesheet styling in query results
table cells. This should also improve browser rendering performance.
Improved HTML source code formatting by adding lots of \n's
* gnatsweb.pl (main_page): Remove Matt's and Kenneth's e-mail
addresses. They do not seem to be valid anymore.
* gnatsweb.pl (main_page): Collect the two query buttons on one
line in order to conserve vertical space.
2001-03-24 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gnatsweb.pl (login_page_javascript): Use correct <SCRIPT LANGUAGE>.
Fix the Javascript code and improve the warning messages if cookies
are not enabled.
2001-03-22 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl (display_query_results): Apply escapeHTML to
$fieldcontents before printing.
2001-03-21 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gnatsweb.pl ($VERSION): Bump to 3.95.
2001-03-21 Yngve Svendsen <yngve.svendsen@clustra.com>
* gnatsweb.pl: New configuration variable $site_stylesheet.
(page_start_html): Use it.
2001-03-11 Tommi Virtanen <tv@debian.org>
* gnatsweb.pl (decode_attachment): Editing bugs with attached files
used to bomb out trying to chomp a constant string.
2000-02-08 Tom Tromey <tromey@cygnus.com>
Turn URLs in PR text into real URLs:
* cgi-bin/gnatsweb.pl (mark_urls): New function.
(view): Use it.
(edit): Likewise.
2001-02-03 Mark Kuchel <mark@kuchel.net>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gnatsweb.pl (login_page_javascript): Properly warn about cookies
being required, both if Javascript is enabled and if it is disabled.
2001-01-22 Mark Kuchel <mark@kuchel.net>
* gnatsweb.pl (main): Generate proper cookie paths.
2001-01-11 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gnatsweb.pl (help_page): Simplify the welcome text and make it
more generic.
2000-12-29 Mark Kuchel <mark@kuchel.net>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gnatsweb.pl (main): Add an explicit link to the automatic
redirection page.
========== Starting immediately, we have to use GNU ChangeLogs =====
========== gnatsweb 2.6 released ===================================
1999-11-30 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Enhancement: If user does not have cookies enabled, they now get
a warning on the Login page. Previously, you would have to submit
the login page before you got the warning, then you would have to
go back and resubmit the page. A little JavaScript goes a long
way.
1999-11-27 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Enhancement: If DEFAULT_RELEASE is set in the gnats config file,
then it is now used as the default value in new PR's.
Patch by Brian Cameron <Brian.Cameron@Eng.Sun.COM>.
* Bug fix: In "send email" link, include GNATS_ADDR.
Patch by Jason Molenda <jsm@cygnus.com>.
* Enhancement: Reversed the default sort, so that new PR's appear
before older ones. Added some more debug prints.
Patch by Tim Riker <TimR@CalderaSystems.com>.
1999-11-18 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New features: Now the site_callback can
- supply default values for various things until they are
specified and stored in the user's cookies: Reporter's
email...(more coming?). This facilitates that first PR for new
people.
- print new buttons at top+bottome of main page.
- print stuff at the top of individual fields on the sendpr and
editpr pages.
See gnatsweb-site-sente.pl for examples.
* Bug fix: The default list of columns displayed for a query was
empty; now it isn't. You can still get the empty list if you
explicitly turn off all columns.
========== gnatsweb 2.6 beta2 released ===================================
1999-11-17 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New feature: Now all links and forms contain the database param,
so that you can keep multiple databases open in multiple browser
windows.
========== gnatsweb 2.6 beta released ===================================
1999-11-14 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New feature? Cookies are now stored with path=/. I don't know
if this'll help IE users or not; I actually did it to share
cookies between my test web and my main web. You should still be
able to get to your stored queries, and even delete them.
* New feature: If you follow a URL such as
http://www.x.com/cgi-bin/gnatsweb.pl?cmd=view&database=main&pr=1269
and you are forced to login, then after logging in you will be
redirected to the requested age. I tried doing this with a
redirect but that didn't work; had to use a somewhat ugly
zero-delay refresh. If you can figure that out I'd be grateful.
* New feature: Split cookies into a global cookie (column
preference and email addr) and a db-specific cookie. That way you
don't have to keep typing in different passwords if you change
db's.
* Code reorg: Cleaned up the main proc especially w.r.t. the
cookie-setting stuff. Now all of the preference settings happen
at once, and there is only one 'switch' over all of the commands.
However, if you don't have cookies enabled I probably broke the
detection of this error.
1999-11-13 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New feature: Added a button to delete stored queries.
Patch by Robert Lupton the Good <rhl@astro.princeton.edu>.
* Bug fix (get_mailto_link): MSIE users need special handling in
the mailto: link.
Patch by <ralph_pursifull@am.exch.hp.com>.
========== gnatsweb 2.5 released ===================================
1999-10-16 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Bug fix: Attachment file names are now stripped of any path
elements, so that the browser doesn't prompt you to save,
e.g. c:\windows\system.ini
* New feature: In the Query Results page, there is now an edit
link next to the view link, if you have edit priviledges.
1999-10-13 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New feature: If you have an "unknown" category, then gnatsweb
will use it as the default, and issue an error if somebody tries
to submit a PR with Category=unknown.
Patch by Robert Lupton the Good <rhl@astro.princeton.edu>.
1999-10-01 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Bug fix: When parsing a PR with a description field containing
From:, gnatsweb would erroneously save that as the originator's
email address.
Patch by Elgin Lee <ehl@terisa.com>.
1999-09-28 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Bug fix: For release-based gnats, "target" should have been
"quarter".
1999-09-24 Ken Cox <kenstir@special-sauce.senteinc.com>
* Bug fix (main): Gnatsweb was not handling failed logins
correctly. Thanks to Robert Abatecola <robert@tsgus.com>
for the fix.
========== gnatsweb 2.5 beta2 ======================================
1999-09-23 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Bug fix: An extra blank attachment was getting added during
edit. Now it isn't.
* New feature: Can now delete file attachments.
* Enhancement: gnatsweb-site.pl can now set $site_post_max.
If this is set, and a post exceeds this limit, then gnatsweb will
fail with an error. This prevents somebody from swamping your
server by attaching a huge file.
* Enhancement: Now sets cookie only when the cookie values
change. This makes it much less annoying for people who have
cookie prompting turned on.
Patch by Ronald J. Kimball <rkimball@vgi.com> and
Robert Abatecola <robert@tsgus.com>.
1999-09-20 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New feature: gnatsweb-site.pl can now override basic color
selections without using the complicated site_callback method. I
do this so that I can tell visually when I'm running a test
version of gnatsweb and when I'm running the production version.
See $site_background, $site_banner_foreground,
$site_banner_background.
========== gnatsweb 2.5 beta ======================================
1999-09-19
* New feature: Experimental support for file
attachments in the Unformatted field. Use MIME::Base64 package
because it makes life easy. Looked at but did not use MIME-tools
for creating and parsing the attachments, because it required that
too many packages be installed (it contains 21 packages and it
requires 5 more). For this to work you need CGI.pm-2.56 and
any version of MIME::Base64.
This I consider this support experimental because
- it's tested, but not all that thoroughly
- it requires you to get new perl packages
CGI.pm-2.56
MIME::Base64
- there is as yet no way to delete file attachments
- uploading a big file can cause the appearance that gnatsweb
is hung. I think a workaround is to set $CGI::POST_MAX
but I haven't tried it.
* Enhancement: Added 'send email' link to edit page. Used to be
present only on view page.
* Enhancement: Added submit + reset buttons to top of
Create PR form.
* Enhancement (test.pl): Die if loading gnatsweb.pl or
gnatsweb-site has errors.
Patch from Ronald J. Kimball <rkimball@vgi.com>
* Enhancement (validate_email_field): Used regexp donated by
rkimball@vgi.com to allow @ in email addresses only if it's
followed by what looks more or less like a domain name.
* Bug fix (submit_stored_query): Must use full (not relative) URL
in redirect, to work around bug interacting with Netscape
Enterprise Server 3.5.1.
Patch from Elgin Lee <ehl@terisa.com>.
* Bug fix (initialize): Keyword query should have been 'kywd' not
'keyw'.
Patch from Elgin Lee <ehl@terisa.com>.
* Bug fix (sendpr): Removed "CC" capability, as it was causing too
much confusion. That field would only send a copy of the initial
PR, but wouldn't put you on the X-Gnats-Notify list; everyone here
thought it would. Now there are only "Reporter's email" and "CC
these people on PR status email". Also, the latter list gets a
copy of the initial PR. Hopefully that will clear up the
confusion.
* Bug fix (sendpr): The X-Gnats-Notify field was not handling
lists of email addresses properly. Now it is.
Patch from James Lin <james@jeditech.com>.
* Bug fix (submitedit): Really fixed the following bug:
When sending mail, use email address in
responsible file as From, if present.
Reported by Jason Molenda <jsm@cygnus.com>.
Thanks, Carl Lindberg for pointing this out.
========== gnatsweb 2.4 released ======================================
1999-07-27 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Enhancement?: Added HTML help (gnatsweb.html) provided by Matt.
As yet, there is no way to get to this help file from within
gnatsweb. A patch to do this would be appreciated. Note that to
keep installation drop-dead simple, this HTML help should be
served up by gnatsweb itself, not installed in a separate file
(which for an Apache server would need to be installed into a
separate directory).
* Requested enhancement: Use version number (not revision number)
on main page.
* Bug fix (get_reply): Gnatsweb was mangling some gnatsd error
messages so as to make them ungrammatical.
Reported by Jason Molenda <jsm@cygnus.com>.
* Bug fix (submitedit): When sending mail, use email address in
responsible file as From, if present.
Reported by Jason Molenda <jsm@cygnus.com>.
1999-06-25 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Requested enhancement:
(sendpr): Description text area is larger (8 lines) Environment is
smaller (2 lines).
* Bug fixes:
(display_query_results): Carl Lindberg fixed a bug in the results
display when using apache + mod_perl.
(validate_email_field): Carl Lindberg made a change to allow
non-qualified email addresses.
* Speed enhancement:
Removed 'use POSIX' since it's not needed.
1999-06-13 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* New feature:
The "send email to interested parties" link now includes in the
body of the message the URL which you can use to view the PR in
question.
* Bug fix:
The "send email to interested parties" link is now properly URL
encoded.
1999-05-30 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Bug fix:
X-gnatsweb-version header was being thrown away by GNATS. Changed
to `X-Send-Pr-Version: gnatsweb-$VERSION' so that it wouldn't be.
Reported by rickm.
1999-05-13 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* Bug fix:
Replaced font() with $q->font() for old CGI.pm's.
========== gnatsweb 2.3 released ======================================
1999-05-08 Ken Cox <kenstir@special-sauce.senteinc.com>
* Requested enhancement: Reporter's email address is now shown on
the view and edit pages.
* Bug fixes:
(initialize): Fixed bug reported by Thomas A Peterson
<tap@htc.honeywell.com>: If a user has logged in, then somebody
changes their gnatsd password, then gnatsweb got stuck; it would
try the old password without presenting the login screen. Now for
the 'chdb' and 'user' commands, failure takes you to the login
screen.
(main): Use 'warn' to report compilation errors in
'gnats-site.pl'. Previously these errors were not being reported
anywhere.
(everywhere): Use '$q->escapeHTML' instead of 'CGI::escapeHTML',
as the latter was not working for folks with old CGI.pm's.
* Audit-Trail feature (submitedit): Since no conclusion was
reached on the gnats mailing list re: the redesigned Audit-Trail
format and how to change all of the programs to support it, I
implemented a gnatsweb-only feature. In the site_callback you can
set a field's AUDITINCLUDE flag; if the flag is set then changes
in that field are recorded in the Audit-Trail. Multitext fields
are indented when their old/new values are printed. By default,
the only fields which have the AUDITINCLUDE flag set are
Responsible and State.
1999-04-25 Ken Cox <kenstir@special-sauce.senteinc.com>
* Bug fixes:
(interested_parties): Fixed notify problems reported by someone.
Since MLPR is not working as expected, do the work in this sub.
(trim_responsible): Fixed bug reported by Matt. Don't lowercase
the Responsible name address, don't confuse Responsible with email
addresses.
* View PR page: Display a mailto link for sending email to all
interested parties.
1999-04-21 Ken Cox <kenstir@special-sauce.senteinc.com>
* PR Notify lists: Now editors can add themselves to the list of
people who get notified when a PR changes state, by changing
"X-GNATS-Notify". This is also available when creating a new PR.
* New PR validation: submitnewpr() now performs more error
checking on a new PR before mailing it.
* Bug fixes:
test.pl: Fixed tests so that they don't fail for lines beginning
with '.'. RickM #22.
(initialize): Removed 'pending' from category list.
(submitedit): No longer gives an error if it trims old-style
'Responsible: kenstir (Ken Cox)' to 'Responsible: kenstir'.
(praddr): Patch from Carl to support blank responsible field.
1999-04-17 Ken Cox <kenstir@special-sauce.senteinc.com>
* Better test harness: Does query, then uses those PR's for
parsepr/unparsepr test.
* In email notifications, include database name in URL.
========== gnatsweb 2.2 released ======================================
1999-04-17 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* site_callback: New reason 'initialize', lets the site_callback
muck with the global data structures if desired.
Suggested by Carl_Lindberg@BLaCKSMITH.com.
* Advanced Query page:
- Added reset button. RickM #8.
- Sort category, submitter_id, responsible lists. RickM #5.
- Reordered date queries on Advanced Query page, as requested by
RickM #6.
- Added GNATS_RELEASE_BASED date queries.
* Create PR page: Submitter-Id and Originator are now visible;
Submitter-Id is treated as an enumerated field. Both are
remembered via the cookie.
* Misc fixes:
- New PR no longer escapes leading '.' characters. RickM #23.
- No more blank cells in query results table.
- Check 2 common places for sendmail, before bombing
out with a helpful message. Fixes reports of gnatsweb install
trouble on solaris.
- Can now display and sort by Confidential, Release, Submitter-Id.
RickM bug #3, #10.
* Use scrolling_list instead of checkbox_group on query page. Was
beginning to have too many unaligned checkboxes.
* New $site_release_based var controls display of fields added by
compiling gnats with -DGNATS_RELEASE_BASED
Incorporates spirit of patches by Paul Traina <pst@juniper.net>.
1999-04-14 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* gnatsweb.pl: Replaced CGI function calls with method
invocations, e.g. Tr() with $q->Tr(). This is more in keeping
with mg's style, and clears up problems which Martin Apel
<apel@tecmath.de> had using perl 5.004_04.
1999-04-13 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* gnatsweb.pl (view): Only print 'edit' button on View page if
user can edit. RickM bug #1.
1999-04-12 Kenneth H. Cox <kenstir@abraham.senteinc.com>
* gnatsweb.pl (submitedit): Don't complain if you can't get the
email address of the old Responsible; it may have been invalid, or
they may have left the company.
Reported by Carl_Lindberg@BLaCKSMITH.com.
(edit): When editing a PR, trim Responsible field as if it were an
email address Carl reports that his PR's from gnats 3.2 look this
way.
(sendpr, edit): Shift 'all' off of @responsible and @state.
Reported by Carl.
========== gnatsweb 2.1 released ======================================
* Fixed Advanced Query page: multi-selection listboxes weren't working;
was querying for "|kenstir". Patch suggested by
Carl_Lindberg@BLaCKSMITH.com.
* site_callback() extended. Now called for additional reasons:
page_footer -- can print extra stuff near the bottom of the
page, e.g. to add buttons on the view page
page_end_html -- can extend the absolute end of the page
Requested by Carl_Lindberg@BLaCKSMITH.com.
* --- INCOMPATIBILE CHANGES to site_callback() ---
- When the $reason is 'page_heading', the argument list is different.
See gnatsweb-site-sente.pl for example. Changed for consistency.
- No need for reason 'view_postlude'; can be done with 'page_footer'.
Changes in 2.0:
* Stored queries.
* Query results can be sorted by clicking on a column heading.
* Advanced query page for access to full power of gnats.
* Integrated with Matt Gerassimoff's "gnats.pl" for gnatsd hipness.
|