CSS patch for gnatsweb

Mike Hoolehan <[email protected]>
Newsgroups gmane.comp.bug-tracking.gnats.general
Message-ID <[email protected]>
Hello, 

please review the following patchfiles to gnatsweb.pl, CUSTOMIZE.vars, and
gnatsweb-site.pl, which together provide for CSS formatting of most gnatsweb
elements from a single CSS stylesheet.

I have modified gnatsweb.pl to place 'class' tags on most elements and text,
modified gnats-site.pl to link to a css page by default, and modified
CUSTOMIZE.vars to eliminate mention of the various colors and style
formatting which have been superseded by CSS formatting.  Finally, I
included a new css sheet that contains all the new styles, which the user
may modify to make his or her own look (though the default look I provided 
looks pretty good, I think).  

Thanks,
Mike Hoolehan

_______________________________________________
Help-gnats mailing list
[email protected]
http://mail.gnu.org/mailman/listinfo/help-gnats
gnatsweb.pl.patch (text/plain, 32.2 KB)
--- gnatsweb.pl.orig	Fri Apr 11 13:59:07 2003
+++ gnatswebcss.pl	Sun Apr 13 15:21:19 2003
@@ -31,11 +31,9 @@ use vars qw($site_gnats_host $site_gnats
 $site_gnatsweb_server_auth $site_no_gnats_passwords
 $no_create_without_access $site_mail_domain $site_post_max
 $description_in_view $help_page_path $site_banner_text
-$site_banner_background $site_banner_foreground
-$site_button_foreground $site_button_background $site_stylesheet
+$site_stylesheet
 $include_audit_trail $popup_menu_becomes_obnoxious
-$scrolling_menu_default_size $site_background
-$site_required_field_color $use_temp_db_prefs_cookie
+$scrolling_menu_default_size $use_temp_db_prefs_cookie
 $global_cookie_expires $global_cookie_path $textwidth
 $site_allow_remote_debug $attachment_delimiter %mark_urls
 $gnats_info_top %site_pr_submission_address $VERSION);
@@ -149,10 +147,6 @@ $help_page_path = './gnatsweb.html';
 
 # Name you want in the page banner and banner colors.
 $site_banner_text = 'GNU Gnatsweb';
-$site_banner_background = '#000000';
-$site_banner_foreground = '#ffffff';
-$site_button_background = '#000000';
-$site_button_foreground = '#ffffff';
 
 # Uncomment the following line and insert stylesheet URL in order to
 # link all generated pages to an external stylesheet. Both absolute
@@ -173,14 +167,6 @@ $popup_menu_becomes_obnoxious = 20;
 # default size for scrolling lists.  overridden for some fields
 $scrolling_menu_default_size = 3;
 
-# Page background color -- not used unless defined.
-#$site_background = '#c0c0c0';
-$site_background = undef;
-
-# Color to use for marking the names of required fields on the Create
-# PR page.
-$site_required_field_color = '#ff0000';
-
 # control the mark_urls routine, which "htmlifies" PRs for view_pr.
 # it adds a lot of usability, but can be slow for huge (100K+) fields.
 # urls = make links clickable
@@ -522,17 +508,29 @@ sub print_stacktrace {
 sub multiselect_menu
 {
   my $size = @{$_[1]} < 4 ? @{$_[1]} : 4;
+  my $style = $_[3];
+  $style = '' if not defined $style;
+
   return $q->scrolling_list(-name=>$_[0], -values=>$_[1], -size=>$size,
-                            -multiple=>'true', -default=>$_[2]);
+                            -multiple=>'true', -default=>$_[2],
+                            -class=>$style);
 }
 
 sub popup_or_scrolling_menu
 {
   my $size=$_[3];
+  my $style=$_[4];
+  
   if (!(defined $size))
   {
     $size = $scrolling_menu_default_size;
-   }
+  }
+  
+  if (!(defined $style))
+  {
+    $style = '';
+  }
+        
 
 # a hack to make responsible field easier to deal with when
 # there are many names in the responsible file
@@ -559,14 +557,16 @@ sub popup_or_scrolling_menu
                                -size=>$size,
                                -values=>$_[1],
 			        -labels=>$labels,
-                               -default=>$_[2]);
+                               -default=>$_[2],
+                               -class=>$style);
   }
   else
   {
     return $q->popup_menu (-name=>$_[0],
                            -values=>$_[1],
 			    -labels=>$labels,
-                           -default=>$_[2]);
+                           -default=>$_[2],
+                           -class=>$style);
 
   }
 }
@@ -919,13 +919,14 @@ sub print_attachments
 
   return unless can_do_mime();
 
-  print "<tr><td valign=top><b>File Attachments:</b></td>\n<td>";
+  print "<tr><td class=\"attachments_fieldname\"><span class=\"attachments_fieldname\">File Attachments:</span></td>\n<td class=\"attachments_fieldvalue\">";
 
   # Add file upload button for adding new attachment.
   if ($mode eq 'sendpr' || $mode eq 'edit') {
     print "Add a file attachment:<br />",
           $q->filefield(-name=>'attached_file',
-                        -size=>50);
+                        -size=>50,
+                        -class=>'attachments_add');
     # that's all we need to do if this is the sendpr page
     return if $mode eq 'sendpr';
   }
@@ -1041,12 +1042,13 @@ sub sendpr
         $q->reset(-name=>'reset')),
         $q->hidden(-name=>'return_url'),
         "<hr />\n",
-        "<table>";
+        "<table class=\"createpr\">";
   my $def_email = $global_prefs{'email'} || '';
-  print "<tr>\n<td width=\"20%\"><b>Reporter's email:</b></td>\n<td>",
+  print "<tr>\n<td width=\"20%\" class=\"createpr_field\"><span class=\"createpr_fieldname\">Reporter's email:</span></td>\n<td class=\"createpr_input\">",
         $q->textfield(-name=>'email',
                       -default=>$def_email,
-                      -size=>$textwidth), "</td>\n</tr>\n";
+                      -size=>$textwidth, 
+                      -class=>'createpr_input'), "</td>\n</tr>\n";
   # keep count of field number, so that javascript hooks can
   # have a way to access fields with dashes in their names
   # they'll need to use PrForm.elements[fieldNumber].value
@@ -1073,12 +1075,12 @@ sub sendpr
     # at the top of a given field.
     my $intro = cb("sendpr_intro_$_", $field_number) || '';
 
-    print "<tr><td valign=\"top\" width=\"20%\">";
+    print "<tr><td class=\"createpr_field\" width=\"20%\">";
     fieldinfo ($_, 'flags') & $SENDREQUIRED ?
-	  print "<font color=\"$site_required_field_color\"><b>$_</b></font>" : print "<b>$_</b>";
-    print "<br /><small>\n",
+	  print "<span class=\"createpr_fieldrequired\">$_</span>" : print "<span class=\"createpr_fieldname\">$_</span>";
+    print "<br /><span class=\"createpr_fielddesc\">\n",
           fieldinfo($_, 'desc'),
-	  "</small></td><td>\n", $intro, "\n";
+	  "</span></td><td class=\"createpr_input\">\n", $intro, "\n";
 
     if (fieldinfo($_, 'fieldtype') eq "enum")
     {
@@ -1088,13 +1090,13 @@ sub sendpr
         push(@$values, "unknown") if (!grep /^unknown$/, @$values);
         $default = "unknown";
       }
-      print popup_or_scrolling_menu($_, $values, $default),
+      print popup_or_scrolling_menu($_, $values, $default, undef, 'createpr_input'),
             "</td>\n</tr>\n";
     }
     elsif (fieldinfo ($_, 'fieldtype') eq 'multienum')
     {
       my $defaultsref = parse_multienum($default, $_);
-      print multiselect_menu($_, $values, $defaultsref),
+      print multiselect_menu($_, $values, $defaultsref, 'createpr_input'),
             "</td>\n</tr>\n";
     }
     elsif (fieldinfo($_, 'fieldtype') eq "multitext")
@@ -1103,7 +1105,8 @@ sub sendpr
       print $q->textarea(-name=>$_,
                          -cols=>$textwidth,
                          -rows=>$rows,
-                         -default=>$default),
+                         -default=>$default,
+                         -class=>'createpr_input'),
             "</td>\n</tr>\n";
       # Create file upload button after Description.
       if (/Description/)
@@ -1115,7 +1118,8 @@ sub sendpr
     {
       print $q->textfield(-name=>$_,
                           -size=>$textwidth,
-                          -default=>$default),
+                          -default=>$default,
+                          -class=>'createpr_input'),
             "</td>\n</tr>\n";
     }
     print "\n";
@@ -1541,11 +1545,12 @@ sub edit
         $q->hidden(-name=>'return_url'),
         "<hr>\n";
 
-  print "<table>\n";
-  print "<tr>\n<td><b>Reporter's email:</b></td>\n<td>",
+  print "<table class=\"editpr\">\n";
+  print "<tr>\n<td class=\"editpr_field\"><span class=\"editpr_fieldname\">Reporter's email:</span></td>\n<td class=\"editpr_input\">",
         $q->textfield(-name=>'Reply-To',
                       -default=>$fields{'Reply-To'},
-                      -size=>$textwidth),
+                      -size=>$textwidth,
+                      -class=>'editpr_input'),
         "</td>\n</tr>\n";
 
   # keep count of field number, so that javascript hooks can
@@ -1570,9 +1575,9 @@ sub edit
     # The "intro" provides a way for the site callback to print something
     # at the top of a given field.
     my $intro = cb("edit_intro_$_", $field_number) || '';
-    print "<tr><td valign=\"top\" width=\"20%\"><b>$_:</b><br /><small>\n",
+    print "<tr><td class=\"editpr_field\" width=\"20%\"><span class=\"editpr_fieldname\">$_:<br /><span class=\"editpr_fielddesc\">\n",
           fieldinfo($_, 'desc'),
-	  "</small><td>\n", $intro, "\n";
+	  "</span><td class=\"editpr_input\">\n", $intro, "\n";
 
     if (fieldinfo ($_, 'fieldtype') eq 'enum')
     {
@@ -1583,13 +1588,13 @@ sub edit
 	push(@$values, 'unknown') if (!grep /^unknown$/, @$values);
 	$default = 'unknown';
       }
-      print popup_or_scrolling_menu($_, $values, $default),
+      print popup_or_scrolling_menu($_, $values, $default, undef, 'editpr_input'),
             "</td>\n</tr>\n";
     }
     elsif (fieldinfo ($_, 'fieldtype') eq 'multienum')
     {
       my $defaultsref = parse_multienum($fields{$_}, $_);
-      print multiselect_menu($_, $values, $defaultsref),
+      print multiselect_menu($_, $values, $defaultsref, 'editpr_input'),
       "</td>\n</tr>\n";
     }
     elsif (fieldinfo ($_, 'fieldtype') eq 'multitext')
@@ -1600,7 +1605,8 @@ sub edit
       print $q->textarea(-name=>$_,
                          -cols=>$textwidth,
                          -rows=>$rows,
-                         -default=>$fields{$_}),
+                         -default=>$fields{$_},
+                         -class=>'editpr_input'),
             "</td>\n</tr>\n";
       # Print attachments after Description.
       print_attachments(\%fields, 'edit') if /Description/;
@@ -1609,18 +1615,20 @@ sub edit
     {
       print $q->textfield(-name=>$_,
                           -size=>$textwidth,
-                          -default=>$fields{$_}),
+                          -default=>$fields{$_},
+                          -class=>'editpr_input'),
             "</td>\n</tr>\n";
     }
     if (fieldinfo ($_, 'flags') & $REASONCHANGE)
     {
-      print "<tr><td valign=\"top\"><b>Reason Changed:</b></td>\n<td>",
+      print "<tr><td class=\"editpr_field\"><span class=\"editpr_fieldname\">Reason Changed:</span></td>\n<td>",
             $q->textarea(-name=>"$_-Changed-Why",
                          -default=>'',
                          -override=>1,
                          -cols=>$textwidth,
                          -rows=>2,
-                         -wrap=>'hard'),
+                         -wrap=>'hard',
+                         -class=>'editpr_input'),
             "</td>\n</tr>\n";
     }
     print "\n";
@@ -1868,45 +1876,49 @@ sub query_page
   {
     if (fieldinfo($_, 'fieldtype') =~ /enum/)
     {
-      print "<tr><td valign=top>$_:</td>\n<td>";
+      print "<tr><td class=\"query_field\"><span class=\"query_field\">$_:</p></td>\n<td class=\"query_input\">";
       my $value_list=fieldinfo($_, 'values');
       my @values=('any', @$value_list);
       if (fieldinfo($_, 'fieldtype') eq 'enum')
       {
-        print popup_or_scrolling_menu ($_, \@values, $values[0]);
+        print popup_or_scrolling_menu ($_, \@values, $values[0], 
+                                           undef, 'query_input');
       }
       elsif (fieldinfo($_, 'fieldtype') eq 'multienum')
       {
         my $size = @values < 4 ? @values : 4;
         print $q->scrolling_list(-name=>$_, -values=>\@values, -size=>$size,
-                                 -multiple=>'true', -defaults=>$values[0]);
+                                 -multiple=>'true', -defaults=>$values[0],
+                                 -class=>'query_input');
       }
       if ($_ eq $STATE_FIELD)
       {
         print "<br />",
               $q->checkbox_group(-name=>'ignoreclosed',
                                  -values=>['Ignore Closed'],
-                                 -defaults=>['Ignore Closed']);
+                                 -defaults=>['Ignore Closed'],
+                                 -class=>'query_input');
       }
       elsif ($_ eq $SUBMITTER_ID_FIELD)
       {
         print "<br />",
               $q->checkbox_group(-name=>'originatedbyme',
                                  -values=>['Originated by You'],
-                                 -defaults=>[]);
+                                 -defaults=>[],
+                                 -class=>'query_input');
       }
       print "</td>\n</tr>\n";
     }
   }
   
   print
-        "<tr>\n<td>$SYNOPSIS_FIELD Search:</td>\n<td>",
-        $q->textfield(-name=>$SYNOPSIS_FIELD,-size=>25),
+        "<tr>\n<td class=\"query_field\"><span class=\"query_field\">$SYNOPSIS_FIELD Search:</span></td>\n<td class=\"query_input\">",
+        $q->textfield(-name=>$SYNOPSIS_FIELD,-size=>25,-class=>"query_input"),
         "</td>\n</tr>\n",
-        "<tr>\n<td>Multi-line Text Search:</td>\n<td>",
-        $q->textfield(-name=>'multitext',-size=>25),
+        "<tr>\n<td class=\"query_field\"><span class=\"query_field\">Multi-line Text Search:</span></td>\n<td class=\"query_input\">",
+        $q->textfield(-name=>'multitext',-size=>25,-class=>'query_input'),
         "</td>\n</tr>\n",
-        "<tr valign=top>\n<td>Column Display:</td>\n<td>";
+        "<tr valign=top>\n<td class=\"query_field\"><span class=\"query_field\">Column Display:</span></td>\n<td class=\"query_input\">";
 
   my @allcolumns;
   foreach (@fieldnames) {
@@ -1927,24 +1939,28 @@ sub query_page
                            -values=>\@allcolumns,
                            -defaults=>\@columns,
                            -multiple=>1,
-                           -size=>5),
+                           -size=>5,
+                           -class=>'query_input'),
         "</td>\n</tr>\n";
 
-  print "<tr valign=top>\n<td>Sort By:</td>\n<td>",
+  print "<tr valign=top>\n<td class=\"query_field\"><span class=\"query_field\">Sort By:</span></td>\n<td class=\"query_input\">",
         $q->scrolling_list(-name=>'sortby',
                            -values=>\@fieldnames,
                            -multiple=>0,
-                           -size=>1),
+                           -size=>1,
+                           -class=>'query_input'),
         "<br />",
         $q->checkbox_group(-name=>'reversesort',
                            -values=>['Reverse Order'],
-                           -defaults=>[]),
+                           -defaults=>[],
+                           -class=>'query_input'),
         "</td>\n</tr>\n";
 
-  print "<tr valign=top>\n<td>Display:</td>\n<td>",
+  print "<tr valign=top>\n<td class=\"query_field\"><span class=\"query_field\">Display:</span></td>\n<td>",
         $q->checkbox_group(-name=>'displaydate',
                -values=>['Current Date'],
-               -defaults=>['Current Date']),
+               -defaults=>['Current Date'],
+               -class=>'query_input'),
         "</td>\n</tr>\n",
         "</table>\n",
         "<hr>\n",
@@ -1966,8 +1982,6 @@ sub advanced_query_page
         hidden_db();
 
   my $width = 30;
-  my $heading_bg = '#9fbdf9';
-  my $cell_bg = '#d0d0d0';
 
   print $q->span($q->submit('cmd', 'submit query'),
         " or ",
@@ -1977,26 +1991,26 @@ sub advanced_query_page
 
   ### Text and multitext queries
 
-  print "<table border=1 cellspacing=0 bgcolor=$cell_bg>\n",
+  print "<table class=\"query\">\n",
         "<caption>Search All Text</caption>\n",
-        "<tr bgcolor=$heading_bg>\n",
+        "<tr>\n",
         "<th nowrap>Search these text fields</th>\n",
         "<th nowrap>using regular expression</th>\n",
         "</tr>\n";
-  print "<tr>\n<td>Single-line text fields:</td>\n<td>",
-        $q->textfield(-name=>'text', -size=>$width),
+  print "<tr>\n<td class=\"query_field\"><span class=\"query_field\">Single-line text fields:</span></td>\n<td class=\"query_input\">",
+        $q->textfield(-name=>'text', -size=>$width, -class=>'query_input'),
         "</td>\n</tr>\n",
-        "<tr>\n<td>Multi-line text fields:</td>\n<td>",
-        $q->textfield(-name=>'multitext', -size=>$width),
+        "<tr>\n<td class=\"query_field\"><span class=\"query_field\">Multi-line text fields:</span></td>\n<td class=\"query_input\">",
+        $q->textfield(-name=>'multitext', -size=>$width, -class=>'query_input'),
         "</td>\n</tr>\n",
         "</table>\n";
   print "<div>&nbsp;</div>\n";
 
   ### Date queries
 
-  print "<table border=1 cellspacing=0 bgcolor=$cell_bg>\n",
+  print "<table class=\"query\">\n",
         "<caption>Search By Date</caption>\n",
-        "<tr bgcolor=$heading_bg>\n",
+        "<tr>\n",
         "<th nowrap>Date Search</th>\n",
         "<th nowrap>Example: <tt>1999-04-01 05:00 GMT</tt></th>\n",
         "</tr>\n";
@@ -2005,11 +2019,11 @@ sub advanced_query_page
   {
     if (fieldinfo ($_, 'fieldtype') eq 'date')
     {
-      print "<tr>\n<td>$_ after:</td>\n<td>",
-          $q->textfield(-name=>$_."_after", -size=>$width),
+      print "<tr>\n<td class=\"query_field\"><span class=\"query_field\">$_ after:</span></td>\n<td class=\"query_input\">",
+          $q->textfield(-name=>$_."_after", -size=>$width, -class=>'query_input'),
           "</td>\n</tr>\n";
-      print "<tr>\n<td>$_ before:</td>\n<td>",
-          $q->textfield(-name=>$_."_before", -size=>$width),
+      print "<tr>\n<td class=\"query_field\"><span class=\"query_field\">$_ before:</span></td>\n<td class=\"query_input\">",
+          $q->textfield(-name=>$_."_before", -size=>$width, -class=>'query_input'),
           "</td>\n</tr>\n";
     }
   }
@@ -2021,9 +2035,9 @@ sub advanced_query_page
 
   ### Field queries
 
-  print "<table border=1 cellspacing=0 bgcolor=$cell_bg>\n",
+  print "<table class=\"query\">\n",
         "<caption>Search Individual Fields</caption>\n",
-        "<tr bgcolor=$heading_bg>\n",
+        "<tr>\n",
         "<th nowrap>Search this field</th>\n",
         "<th nowrap>using regular expression, or</th>\n",
         "<th nowrap>using multi-selection</th>\n",
@@ -2033,12 +2047,13 @@ sub advanced_query_page
     print "<tr valign=top>\n";
 
     # 1st column is field name
-    print "<td>$_:</td>\n";
+    print "<td class=\"query_field\"><span class=\"query_field\">$_:</span></td>\n";
 
     # 2nd column is regexp search field
-    print "<td>",
+    print "<td class=\"query_input\">",
           $q->textfield(-name=>$_,
-                        -size=>$width);
+                        -size=>$width, 
+                        -class=>'query_input');
     print "\n";
     # XXX ??? !!! FIXME
     # This should be fixed by allowing a 'not' in front of the fields, so
@@ -2048,12 +2063,13 @@ sub advanced_query_page
       print "<br />",
             $q->checkbox_group(-name=>'ignoreclosed',
                                -values=>['Ignore Closed'],
-                               -defaults=>['Ignore Closed']),
+                               -defaults=>['Ignore Closed'], 
+                               -class=>'query_input'),
     }
     print "</td>\n";
 
     # 3rd column is blank or scrolling multi-select list
-    print "<td>";
+    print "<td class=\"query_input\">";
     if (fieldinfo($_, 'fieldtype') =~ 'enum')
     {
       my $ary_ref = fieldinfo($_, 'values');
@@ -2062,7 +2078,8 @@ sub advanced_query_page
       print $q->scrolling_list(-name=>$_,
                                -values=>$ary_ref,
                                -multiple=>1,
-                               -size=>$size);
+                               -size=>$size, 
+                               -class=>'query_input');
     }
     else
     {
@@ -2073,9 +2090,9 @@ sub advanced_query_page
   print "</table>\n";
   print "<div>&nbsp;</div>\n";
 
-  print "<table border=1 cellspacing=0 bgcolor=$cell_bg>\n",
+  print "<table class=\"query\">\n",
         "<caption>Display</caption>\n",
-        "<tr valign=top>\n<td>Display these columns:</td>\n<td>";
+        "<tr valign=top>\n<td class=\"query_field\"><span class=\"query_field\">Display these columns:</span></td>\n<td class=\"query_input\">";
 
   my @allcolumns;
   foreach (@fieldnames) {
@@ -2096,23 +2113,27 @@ sub advanced_query_page
                            -values=>\@allcolumns,
                            -defaults=>\@columns,
                            -multiple=>1,
-                           -size=>5),
+                           -size=>5, 
+                           -class=>'query_input'),
         "</td>\n</tr>\n";
 
-  print "<tr valign=top>\n<td>Sort By:</td>\n<td>",
+  print "<tr valign=top>\n<td class=\"query_field\"><span class=\"query_field\">Sort By:</span></td>\n<td class=\"query_input\">",
         $q->scrolling_list(-name=>'sortby',
                            -values=>\@fieldnames,
                            -multiple=>0,
-                           -size=>1),
+                           -size=>1, 
+                           -class=>'query_input'),
         "<br />",
         $q->checkbox_group(-name=>'reversesort',
                            -values=>['Reverse Order'],
-                           -defaults=>[]),
+                           -defaults=>[], 
+                           -class=>'query_input'),
         "</td>\n</tr>\n";
-  print "<tr valign=top>\n<td>Display:</td>\n<td>",
+  print "<tr valign=top>\n<td class=\"query_field\"><span class=\"query_field\">Display:</span></td>\n<td class=\"query_input\">",
         $q->checkbox_group(-name=>'displaydate',
                            -values=>['Current Date'],
-                           -defaults=>['Current Date']),
+                           -defaults=>['Current Date'], 
+                           -class=>'query_input'),
         "</td>\n</tr>\n",
         "</td>\n</tr>\n</table>\n";
   print "<div>&nbsp;</div>\n";
@@ -2390,7 +2411,7 @@ sub display_query_results
   print $q->start_form(),
 	hidden_debug(),
         $q->hidden(name=>'cmd', -value=>'view', -override=>1),
-        "<table border=1 cellspacing=0 cellpadding=1><tr>\n";
+        "<table class=\"queryresults\"><tr>\n";
 
   # By default sort by PR number.
   my($sortby) = $q->param('sortby') || $fieldnames[0];
@@ -2417,7 +2438,7 @@ sub display_query_results
     $query_string =~ s/(\w|-)+=;//g;
 
     my $href = $script_name . '?' . $query_string;
-    print "\n<th><a href=\"$href\">$_</a></th>\n";
+    print "\n<th class=\"queryresults\"><a class=\"queryresults\" href=\"$href\">$_</a></th>\n";
   }
   # finished the header row
   print "</tr>\n";
@@ -2450,7 +2471,7 @@ sub display_query_results
     print "<tr valign=top>\n";
     my $id = shift @{$_};
 
-    print "<td nowrap><a href=\"" . get_viewpr_url($id, 1) . "\">$id</a>"; 
+    print "<td class=\"queryresults\" nowrap><a href=\"" . get_viewpr_url($id, 1) . "\">$id</a>"; 
     if (can_edit())
     {
       print " <a href=\"" . get_editpr_url($id, 1) . "\"><font size=-1>edit</font></a>";
@@ -2479,7 +2500,7 @@ sub display_query_results
 	  $fieldcontents = mark_urls($fieldcontents);
       }
 
-      print "<td nowrap>$fieldcontents</td>";
+      print "<td class=\"queryresults\" nowrap>$fieldcontents</td>";
       $whichfield++;
     }
     # Pad the remaining, empty columns with &nbsp;'s
@@ -2649,28 +2670,30 @@ sub print_stored_queries
   }
   if (%stored_queries)
   {
-    print "<table cellspacing=0 cellpadding=0 border=0>",
-          "<tr valign=top>",
+    print "\n<table class=\"storedqueries\">",
+          "<tr>",
+          "<td class=\"storedqueries_submit\">",
           $q->start_form(),
-	  hidden_debug(),
-          "<td>",
+	      hidden_debug(),
           hidden_db(),
           $q->submit('cmd', 'submit stored query'),
-          "<td>&nbsp;<td>",
+          "&nbsp;",
           $q->popup_menu(-name=>'queryname',
-                         -values=>[ sort(keys %stored_queries) ]),
+                         -values=>[ sort(keys %stored_queries) ],
+                         -class=>'storedqueries_submit'),
           $q->end_form(),
+          "</td><td class=\"storedqueries_delete\">",
           $q->start_form(),
-	  hidden_debug(),
-          "<td>",
+	      hidden_debug(),
           $q->hidden('return_url', $q->self_url()),
           hidden_db(),
           $q->submit('cmd', 'delete stored query'),
-          "<td>&nbsp;<td>",
+          "&nbsp;",
           $q->popup_menu(-name=>'queryname',
-                         -values=>[ sort(keys %stored_queries) ]),
+                         -values=>[ sort(keys %stored_queries) ],
+                         -class=>'storedqueries_delete'),
           $q->end_form(),
-          "</tr></table>";
+          "</td></tr></table>";
   }
 }
 
@@ -2871,8 +2894,10 @@ sub one_line_form
   my($label, @form_body) = @_;
   my $valign = 'baseline';
   return $q->Tr({-valign=>$valign},
-                $q->td($q->b($label)),
-                $q->td($q->start_form(-method=>'get'), hidden_debug(),
+                $q->td({-class=>'mainpage_field'},
+                       "<span class=\"mainpage_field\">$label</span>"),
+                $q->td({-class=>'mainpage_input'},
+                        $q->start_form(-method=>'get'), hidden_debug(),
 		       hidden_db(), @form_body, $q->end_form()));
 }
 
@@ -2905,7 +2930,7 @@ sub main_page
   page_start_html($page);
   page_heading($page, 'Main Page');
 
-  print '<table>';
+  print '<table class="mainpage">';
 
   my $top_buttons_html = cb('main_page_top_buttons') || '';
   print $top_buttons_html;
@@ -2922,13 +2947,15 @@ sub main_page
                       $q->hidden(-name=>'cmd', -value=>'edit', -override=>1),
                       $q->submit('cmd', 'edit'),
                       '#',
-                      $q->textfield(-size=>6, -name=>'pr'))
+                      $q->textfield(-size=>6, -name=>'pr',
+                                    -class=>'mainpage_input'))
         if can_edit();
   print one_line_form('View Problem Report:',
                       $q->hidden(-name=>'cmd', -value=>$viewcmd, -override=>1),
                       $q->submit('cmd', 'view'),
                       '#',
-                      $q->textfield(-size=>6, -name=>'pr'));
+                      $q->textfield(-size=>6, -name=>'pr',
+                                    -class=>'mainpage_input'));
   print one_line_form('Query Problem Reports:',
                       $q->submit('cmd', 'query'),
                       '&nbsp;', $q->submit('cmd', 'advanced query'));
@@ -2936,10 +2963,11 @@ sub main_page
   {
     print one_line_form('Change Database:',
 		        $q->scrolling_list(-name=>'new_db',
-                               -values=>$global_list_of_dbs,
-			       -default=>$global_prefs{'database'},
-                               -multiple=>0,
-			       -size=>1),
+                                   -values=>$global_list_of_dbs,
+			                       -default=>$global_prefs{'database'},
+                                   -multiple=>0,
+			                       -size=>1,
+			                       -class=>'mainpage_input'),
 			$q->submit('cmd', 'change database') );
   }
   else
@@ -3036,10 +3064,8 @@ sub page_start_html
     return;
   }
 
-  # Call start_html, with -bgcolor if we need to override that.
+  # Call start_html 
   my @args = (-title=>"$title - $site_banner_text");
-  push(@args, -bgcolor=>$site_background)
-        if defined($site_background);
   push(@args, -style=>{-src=>$site_stylesheet})
         if defined($site_stylesheet);
   push(@args, @extra_head_args);
@@ -3047,29 +3073,6 @@ sub page_start_html
 
   # Add the page banner. The $site_banner_text is linked back to the
   # main page.
-  #
-  # Note that the banner uses inline style, rather than a GIF; this
-  # makes installation easier by eliminating the need to install GIFs
-  # into a separate directory.  At least for Apache, you can't serve
-  # GIFs out of your CGI directory.
-  #
-  my $bannerstyle = <<EOF;
-  color: $site_banner_foreground; 
-  font-family: 'Verdana', 'Arial', 'Helvetica', 'sans';   
-  font-weight: light;
-  text-decoration: none;
-EOF
-
-  my $buttonstyle = <<EOF;
-  color: $site_button_foreground;
-  font-family: 'Verdana', 'Arial', 'Helvetica', 'sans';
-  font-size: 8pt;
-  font-weight: normal;
-  text-decoration: none;
-EOF
-
-  my $banner_fontsize1 = "font-size: 14pt; ";
-  my $banner_fontsize2 = "font-size: 8pt; ";
 
   my($row, $row2, $banner);
   my $url = "$script_name";
@@ -3078,29 +3081,29 @@ EOF
 
   my $createurl = get_pr_url('create', 0, 1);
 
-  $row = qq(<tr>\n<td><table border="0" cellspacing="0" cellpadding="3" width="100%">);
-  $row .= qq(<tr style="background-color: $site_banner_background">\n<td align="left">);
-  $row .= qq(<span style="$bannerstyle $banner_fontsize1">$global_prefs{'database'}&nbsp;&nbsp;</span>)
+  $row = qq(<tr>\n<td><table class="header" width="100%">);
+  $row .= qq(<tr>\n<td class=\"header_leftbox\">);
+  $row .= qq(<span class=\"header_lefttitle\">$global_prefs{'database'}&nbsp;&nbsp;</span>)
                  if $global_prefs{'database'};
-  $row .= qq(<span style="$bannerstyle $banner_fontsize2">User: $db_prefs{'user'}&nbsp;&nbsp;</span>)
+  $row .= qq(<span class="header_userinfo">User: $db_prefs{'user'}&nbsp;&nbsp;</span>)
                  if $db_prefs{'user'};
-  $row .= qq(<span style="$bannerstyle $banner_fontsize2">Access: $access_level</span>)
+  $row .= qq(<span class="header_userinfo">Access: $access_level</span>)
                  if $access_level;
-  $row .= qq(\n</td>\n<td align="right">
-           <a href="$url" style="$bannerstyle $banner_fontsize1">$site_banner_text</a>
+  $row .= qq(\n</td>\n<td class=\"header_rightbox\">
+           <a href="$url" class=\"header_righttitle\">$site_banner_text</a>
            </td>\n</tr>\n</table></td></tr>\n);
 
   $row2 = qq(<tr>\n<td colspan="2">);
-  $row2 .= qq(<table border="1" cellspacing="0" bgcolor="$site_button_background" cellpadding="3">);
+  $row2 .= qq(<table class="navbutton">);
   $row2 .= qq(<tr>\n);
-  $row2 .= qq(<td><a href="$url" style="$buttonstyle">MAIN PAGE</A></TD>);
-  $row2 .= qq(<td><a href="$createurl" style="$buttonstyle">CREATE</a></td>)
+  $row2 .= qq(<td class="navbutton"><a href="$url" class="navbutton">Main Page</A></TD>);
+  $row2 .= qq(<td class="navbutton"><a href="$createurl" class="navbutton">Create</a></td>)
         if can_create();
-  $row2 .= qq(<td><a href="$url&cmd=query" style="$buttonstyle">QUERY</a></td>);
-  $row2 .= qq(<td><a href="$url&cmd=advanced%20query" style="$buttonstyle">ADV. QUERY</a></td>);
-  $row2 .= qq(<td><a href="$url&cmd=logout" style="$buttonstyle">LOG OUT</a></td>)
+  $row2 .= qq(<td class="navbutton"><a href="$url&cmd=query" class="navbutton">Query</a></td>);
+  $row2 .= qq(<td class="navbutton"><a href="$url&cmd=advanced%20query" class="navbutton">Adv. Query</a></td>);
+  $row2 .= qq(<td class="navbutton"><a href="$url&cmd=logout" class="navbutton">Log Out</a></td>)
         unless ($site_gnatsweb_server_auth);
-  $row2 .= qq(<td><a href="$url&cmd=help" style="$buttonstyle">HELP</a></td>);
+  $row2 .= qq(<td class="navbutton"><a href="$url&cmd=help" class="navbutton">Help</a></td>);
   $row2 .= qq(</tr>\n);
   $row2 .= qq(</table>\n</td>\n</tr>);
 
@@ -3144,7 +3147,7 @@ sub page_heading
     print $html;
     return;
   }
-  print $q->h1({-style=>'font-weight: normal'}, $heading);
+  print $q->h1({-class=>'pagetitle'}, $heading);
 }
 
 # page_footer -
@@ -3895,12 +3898,13 @@ sub login_page
 
   client_init();
   my(@dbs) = client_cmd("dbls");
-  print $q->start_form(), hidden_debug(), "<table>";
+  print $q->start_form(), hidden_debug(), "<table class=\"login\">";
   unless($site_gnatsweb_server_auth) {
-      print "<tr><td><font color=\"red\"><b>User Name</b></font>:</td><td>",
+      print "<tr><td class=\"login_field\"><span class=\"login_field\">User Name:</td><td class=\"login_input\">",
         $q->textfield(-name=>'user',
                       -size=>20,
-                      -default=>$db_prefs{'user'}),
+                      -default=>$db_prefs{'user'},
+                      -class=>'login_input'),
         "</td>\n</tr>\n";
       if ($site_no_gnats_passwords) {
 	  # we're not using gnats passwords, so the password input
@@ -3908,17 +3912,19 @@ sub login_page
 	  # just so other parts of the program don't get confused
 	  print qq*<input type="hidden" name="password" value="not_applicable">*;
       } else {
-	    print "<tr>\n<td>Password:</td>\n<td>",
+	    print "<tr>\n<td class=\"login_field\"><span class=\"login_field\">Password:</span></td>\n<td class=\"login_input\">",
 	    $q->password_field(-name=>'password',
 			       -value=>$db_prefs{'password'},
-			       -size=>20),
+			       -size=>20,
+			       -class=>'login_input'),
             "</td>\n</tr>\n";
       }
   }
-  print "<tr>\n<td>Database:</td>\n<td>",
+  print "<tr>\n<td class=\"login_input\"><span class=\"login_field\">Database:</span></td>\n<td class=\"login_input\">",
         $q->popup_menu(-name=>'database',
                        -values=>\@dbs,
-                       -default=>$global_prefs{'database'}),
+                       -default=>$global_prefs{'database'},
+                       -class=>'login_input'),
         "</td>\n</tr>\n",
         "</table>\n";
   if (defined($return_url))
gnatsweb-site.pl.patch (text/plain, 580 B)
--- gnatsweb-site.orig.pl	Sun Apr 13 15:11:27 2003
+++ gnatsweb-site.css.pl	Sun Apr 13 15:12:13 2003
@@ -11,3 +11,10 @@ $site_gnats_host = 'localhost';
 # The port which the GNATS server is running on.
 # Default installations of GNATS run on port 1529.
 $site_gnats_port = '1529';
+
+#When this variable is set to point to a CSS stylesheet, all Gnatsweb
+#pages are linked to this stylesheet.  You can either specify an
+#absolute URL like 'http://gnats.example.com/stylesheet.css' or a URL
+#relative to the document root of your web server.
+$site_stylesheet = 'common.css';
+
CUSTOMIZE.vars.patch (text/plain, 1.1 KB)
--- CUSTOMIZE.vars	Sun Apr 13 15:08:10 2003
+++ CUSTOMIZEcss.vars	Sun Apr 13 15:09:15 2003
@@ -128,14 +128,6 @@ relative to the directory where gnatsweb
 
 
 $site_banner_text = 'GNU Gnatsweb';
-$site_banner_background = '#000000';
-$site_banner_foreground = '#ffffff';
-$site_button_background = '#000000';
-$site_button_foreground = '#ffffff';
-These variables control the name that will be shown in the banner on
-top of each page in addition to the database name, and the foreground
-and background colors of the banner and the associated button bar.
-
 
 $site_stylesheet = undef;
 When this variable is set to point to a CSS stylesheet, all Gnatsweb
@@ -161,17 +153,6 @@ Specifies the default size for scrolling
 is overridden for some fields.
 
 
-$site_background = undef; 
-The default background color for all Gnatsweb pages.  If no value is
-given, Gnatsweb leaves it up to the browser to decide which background
-color to use.
-
-
-$site_required_field_color = '#ff0000';
-Color to use for marking the names of required fields on the Create PR
-page.  Default is pure red.
-
-
 %mark_urls = (
          'urls'       => 1,
          'emails'     => 1,
common.css (text/css, 15.1 KB)
/*********************************************************************
* common.css 
*
* Copyright 1998, 1999, 2001, 2002
* - The Free Software Foundation Inc.
*
* GNU Gnatsweb is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* GNU Gnatsweb is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Gnatsweb; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* $Id$
*
**********************************************************************/






/*********************************************************************
   Generic settings (most of these are overridden below)
**********************************************************************/
BODY {
  background-color: #FFFFFF;
}
P,LI,TD,TH,DT,DD {  /* Set font for most things */
  font-size: 10pt;
  font-family: Verdana, Helvetica, sans-serif;
}
TABLE {  /* Default settings for tables */
  background-color: #CCCCCC;  /* this makes between cell area grey */
}

TD { /* Default settings for stuff in table cells  */
  background-color: #DDDDFF;
  vertical-align: middle;
}
TH { /* Default settings for stuff in table headings  */
  background-color: #000000;
  color: #FFFFFF;
}
H1 {  /*  Generic Headings */
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 16pt;
  font-style: normal;
  font-weight: bold;
  color: #000000;
}
H2 {
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 12pt;
  font-style: normal;
  font-weight: bold;
  color: #000000;
}
H3 {
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 12pt;
  font-style: normal;
  font-weight: bold;
}
/*  Generic Horiz. Rules */
HR { 
    color: #000000;
    background-color: #000000;
    height: 4px;
}
A:link    { color: #000099; }  /*  Generic Link Colors   */
A:active  { color: #EE0000; }
A:visited { color: #000099; }       
A:hover   { color: #EE0000; }
TH A:link    { color: #DDDDFF; }  /* Links in TH are different colors */
TH A:visited { color: #DDDDDD; }
TH A:hover   { color: #FF0000; }
TH A:active  { color: #FFFFFF; }

H1.pagetitle {   /* the page title format */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 14pt;
  font-weight: bold;
}


/*********************************************************************
   Header 
     -- the top of the page
**********************************************************************/
TABLE.header {
  background-color: #DDDDFF;  /* this makes between cell area grey */
}
TD.header_leftbox {   /* the left title */
  background-color: #DDDDFF;
  padding-right: 6px;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
SPAN.header_lefttitle {
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 12pt;
  font-weight: bold;
}
SPAN.header_userinfo { /* the user: mike, access: edit part */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 8pt;
  font-style: italic;
}
TD.header_rightbox {   /* the right title */
  background-color: #DDDDFF;
  padding-right: 6px;
  padding-left: 6px;
  vertical-align: middle;
  text-align: right;
}
SPAN.header_righttitle {
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 12pt;
  font-weight: bold;
}
A.header_righttitle { /* the right title is a link... */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 12pt;
  font-weight: bold;
  text-decoration: none;
}
A.header_righttitle:link { /* the right title is a link... */
  color: #000000;
}
A.header_righttitle:hover { /* the right title is a link... */
  color: #000000;
}
A.header_righttitle:visited { /* the right title is a link... */
  color: #000000;
}
A.header_righttitle:active { /* the right title is a link... */
  color: #000000;
}





/*********************************************************************
   Navigation Buttons 
      -the row of navigation buttons beneath the header
**********************************************************************/
TABLE.navbutton {
  background-color: #DDDDDD;
}
TD.navbutton {  /* the cell containing the link */
  background-color: #000000;
  vertical-align: middle;
  padding-right: 6px;
  padding-left: 6px;
  padding-bottom: 4px;
}
A.navbutton { /* the link iteself */
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 9pt;
  font-weight: bold;
  text-transform: lowercase; /* if want nav in uppercase, change this */
}
A.navbutton:link    { color: #DDDDFF; }
A.navbutton:visited { color: #DDDDFF; }
A.navbutton:hover   { color: #FF0000; }
A.navbutton:active  { color: #DDDDFF; }



/*********************************************************************
   Main page 
      - the first page that comes up after login
**********************************************************************/
TABLE.mainpage {
  background-color: #999999;  /* this makes between cell area grey */
}
TD.mainpage_field {   /*  the left sides of the table */
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle;
  text-align: right;
}
SPAN.mainpage_field {  /* the left sides of the table */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
TD.mainpage_input {   /* the right sides of the table */
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
INPUT.mainpage_input {  /* styles for form input */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
SELECT.mainpage_input { /* styles for form input */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
TEXTAREA.mainpage_input { /* styles for form input */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}


/*********************************************************************
   The Query & Advanced Query Pages  
     --same styles for both query and adv query page
**********************************************************************/
TABLE.query {
  background-color: #999999;  /* this makes between cell area grey */
}
TABLE.query CAPTION {  /* on adv query, there are captions above tables */
  font-size: 12pt;
  font-family: Verdana, Helvetica, sans-serif;
  color: #000000;
  font-weight: bold;
}
TABLE.query TH {  /* and table headings  */
  font-size: 10pt;
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #000000;
  padding-bottom: 4px;
}
TD.query_field {   /* the left side of the query boxes */
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle;
  text-align: right;
}
SPAN.query_field {  /* the left side of the query boxes */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
TD.query_input {   /* the right side of the query boxes */
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
INPUT.query_input {   /* styles for form input */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
SELECT.query_input { /* styles for form input */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
TEXTAREA.query_input {  /*  styles for form input */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}



/*********************************************************************
   Query Results Page  
     --the list of pr results you get after a query
**********************************************************************/
TABLE.queryresults {
  background-color: #999999;  /* this makes between cell area grey */
}
TH.queryresults {  /* the column headers */
  font-size: 10pt;
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #000000;
  padding-bottom: 4px;
}
TH.queryresults A:link {  /* text in headers are links */
  color: #DDDDFF;
}
TH.queryresults A:visited {
  color: #DDDDFF;
}
TH.queryresults A:hover {
  color: #FF0000;
}
TH.queryresults A:active {
  color: #FF0000;
}
TD.queryresults {  /* a cell containing pr values */
  font-size: 9pt;
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
  padding-bottom: 4px;
}
TD.queryresults A:link {  /* there can be links in there */
  color: #0000FF;
}
TD.queryresults A:visited {
  color: #0000FF;
}
TD.queryresults A:hover {
  color: #FF0000;
}
TD.queryresults A:active {
  color: #FF0000;
}



/*********************************************************************
   The Create PR Page 
      -creating a new pr page
**********************************************************************/
TABLE.createpr {
  background-color: #999999;  /* this makes between cell area grey */
}
TD.createpr_field {   /* the left side of query boxes */
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle;
  text-align: right;
}
SPAN.createpr_fieldname {   /* the left side of query boxes */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
SPAN.createpr_fieldrequired { /* if a field is required */
  color: #FF0000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
SPAN.createpr_fielddesc {  /* the little descriptions of fields */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 8pt;
  font-style: italic;
}
TD.createpr_input {   /* the right side of query boxes */
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
INPUT.createpr_input {  /* form input style */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
SELECT.createpr_input {  /* form input style */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
TEXTAREA.createpr_input {  /* form input style */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
/*  the following four format the attachments box on create pr only */
TABLE.createpr TR TD.attachments_fieldname {
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle;
  text-align: right;
}
TABLE.createpr TR TD SPAN.attachments_fieldname {
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
TABLE.createpr TR TD.attachments_fieldvalue {
  color: #000000;
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
TABLE.createpr TR TD INPUT.attachments_add {
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}




/*********************************************************************
   The Edit PR Page 
     --editing an existing pr page
**********************************************************************/
TABLE.editpr {
  background-color: #999999;  /* this makes between cell area grey */
}
TD.editpr_field {   /* the left side of query boxes */
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle;
  text-align: right;
}
SPAN.editpr_fieldname {  /* the left side of query boxes */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
SPAN.editpr_fielddesc { /* the little descriptions of fields */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 8pt;
  font-weight: normal;
  font-style: italic;
}
TD.editpr_input {   /* the right side of query boxes */
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
INPUT.editpr_input {   /* the right side of query boxes */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
SELECT.editpr_input {   /* the right side of query boxes */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
TEXTAREA.editpr_input {   /* the right side of query boxes */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
/*  the following four format the attachments box on edit pr only */
TABLE.editpr TR TD.attachments_fieldname {
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle;
  text-align: right;
}
TABLE.editpr TR TD SPAN.attachments_fieldname {
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
TABLE.editpr TR TD.attachments_fieldvalue {
  color: #000000;
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle;
  text-align: left;
}
TABLE.editpr TR TD INPUT.attachments_add {
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}

/*********************************************************************
   Stored queries
    --the list of stored queries that shows up on bottom of page
    --the list of stored queries that shows up on bottom of page
    --the list of stored queries that shows up on bottom of page
    --the list of stored queries that shows up on bottom of page
*********************************************************************/
TABLE.storedqueries {
  background-color: #999999;  /* this makes between cell area grey */
  vertical-align: middle;
}
TD.storedqueries_submit { /* the cell containing the submit query stuff */
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-left: 6px;
  padding-right: 6px;
  vertical-align: middle; /* doesn't work, maybe cause of <form> in td */
  text-align: center;
}
TD.storedqueries_delete {  /* the cell containing delete query stuff */
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-left: 6px;
  padding-right: 6px;
  vertical-align: middle; /* doesn't work, maybe cause of <form> in td */
  text-align: center;
}
SELECT.storedqueries_submit {  /* form input for submit query list */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
SELECT.storedqueries_delete { /* form input for delete query list */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}




/*********************************************************************
   Login Page
      -- the login page
*********************************************************************/
TABLE.login {
  background-color: #999999;  /* this makes between cell area grey */
  vertical-align: middle;
}
TD.login_field {   /* the left side of login table */
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-right: 6px;
  vertical-align: middle; 
  text-align: right;
}
SPAN.login_field { /* the left side of login table */
  color: #000000;
  font-family: Verdana, Helvetica, sans-serif;
  font-size: 10pt;
  font-weight: bold;
}
TD.login_input {  /* right side of login table */
  color: #FFFF00;
  background-color: #DDDDFF;
  padding-left: 6px;
  vertical-align: middle; 
  text-align: left;
}
SELECT.login_input { /* form input on login page */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
INPUT.login_input { /* form input on login page */
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #EEEEFF;
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.