public inbox for gnats-devel@sourceware.org
 help / color / mirror / Atom feed
* CSS patch for gnatsweb
@ 2003-04-13 19:46 Mike Hoolehan
  2003-04-15 13:16 ` Yngve Svendsen
  0 siblings, 1 reply; 2+ messages in thread
From: Mike Hoolehan @ 2003-04-13 19:46 UTC (permalink / raw)
  To: help-gnats

[-- Attachment #1: Type: text/plain, Size: 690 bytes --]

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


[-- Attachment #2: gnatsweb.pl.patch --]
[-- Type: text/plain, Size: 32962 bytes --]

--- 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))

[-- Attachment #3: gnatsweb-site.pl.patch --]
[-- Type: text/plain, Size: 580 bytes --]

--- 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';
+

[-- Attachment #4: CUSTOMIZE.vars.patch --]
[-- Type: text/plain, Size: 1163 bytes --]

--- 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,

[-- Attachment #5: common.css --]
[-- Type: text/css, Size: 15455 bytes --]

/*********************************************************************
* 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;
}

[-- Attachment #6: Type: text/plain, Size: 139 bytes --]

_______________________________________________
Help-gnats mailing list
Help-gnats@gnu.org
http://mail.gnu.org/mailman/listinfo/help-gnats

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: CSS patch for gnatsweb
  2003-04-13 19:46 CSS patch for gnatsweb Mike Hoolehan
@ 2003-04-15 13:16 ` Yngve Svendsen
  0 siblings, 0 replies; 2+ messages in thread
From: Yngve Svendsen @ 2003-04-15 13:16 UTC (permalink / raw)
  To: Mike Hoolehan, help-gnats

At 15:17 13.04.2003 -0400, Mike Hoolehan wrote:
>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. I will have a look at this for Gnatsweb 4.1, but I can't promise 
that it will be soon.

Yngve Svendsen
Gnatsweb maintainer



_______________________________________________
Help-gnats mailing list
Help-gnats@gnu.org
http://mail.gnu.org/mailman/listinfo/help-gnats

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-04-15 13:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-13 19:46 CSS patch for gnatsweb Mike Hoolehan
2003-04-15 13:16 ` Yngve Svendsen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).