Add prettiness so we look more like the CD pages on www.d.o v0.3
authorSteve McIntyre <steve@einval.com>
Thu, 14 Apr 2011 20:41:30 +0000 (21:41 +0100)
committerSteve McIntyre <steve@einval.com>
Thu, 14 Apr 2011 20:41:30 +0000 (21:41 +0100)
Add support for reading in various lumps of html that we can scrape
from www.debian.org/CD/

Reference the standard debian.css stylesheet.

Refactor generation a little.

find_file.cgi

index 673d53e..e46b862 100755 (executable)
@@ -26,6 +26,7 @@ use DB_File;
 use CGI;
 
 my $dbdir = "/home/steve/debian/debian-cd/search/search-db";
+my $htmldir = "/home/steve/debian/debian-cd/html";
 my $cdimage_url = "http://cdimage.debian.org/cdimage/";
 my @AREAS;
 my %num_files;
@@ -37,18 +38,61 @@ my @results;
 my @chosen_areas;
 my $l = "";
 my $max_count = 1000;
+my $header1 = "";
+my $header2 = "";
+my $footer1 = "";
+my $footer2 = "";
 
-my $version = "0.2";
+my $version = "0.3";
 my $title_base = "Debian CD search engine";
 
 my $q = new CGI;
 my $mode = "none";
+my $authorname = "Steve McIntyre";
+my $authormail = '93sam@debian.org';
+
+sub read_files ($) {
+    my $lang = shift;
+    
+    open IN, "<", "$htmldir/header1.$lang.html";
+    while(<IN>) { $header1 .= $_; }
+    close(IN);
+    open IN, "<", "$htmldir/header2.$lang.html";
+    while(<IN>) { $header2 .= $_; }
+    close(IN);
+    open IN, "<", "$htmldir/footer1.$lang.html";
+    while(<IN>) { $footer1 .= $_; }
+    close(IN);
+    open IN, "<", "$htmldir/footer2.$lang.html";
+    while(<IN>) { $footer2 .= $_; }
+    close(IN);
+}
+
+sub print_header () {
+    print $q->header;
+}
+
+sub print_html_header ($) {
+    my $title = shift;
+    print $q->start_html(
+       -title=>"$title",
+       -author=>"$authormail",
+       -style=>{'src'=>'http://www.debian.org/debian.css'},
+       );
+    print $header1;
+    print '<p id="breadcrumbs">cdimage-search.debian.org</p>';
+    print $header2;
+    print '<div id="maincol">';
+}
 
 sub print_footer () {
+    print $footer1;
     print
-        $q->hr,
-        $q->address("$title_base version $version"),
-        $q->address("Steve McIntyre <93sam\@debian.org>");
+        $q->address("$title_base version $version\n"),
+        $q->address("$authorname &lt;$authormail&gt;\n"),
+       $q->hr;
+    print $footer2;
+    print '</div> <!-- end footer -->';
 }
 
 # Borrowed from Ikiwiki.pm
@@ -78,11 +122,12 @@ sub log_error ($$) {
     my $errornum = shift;
     my $errortext = shift;
 
-    print $q->header,
-    $q->start_html($title_base),
-    $q->h1($title_base),
-    $q->p("Error: $errortext"),
-    $q->p("<a href=\"" . $q->url . "\">Search again.</a>");
+    print_header();
+    print_html_header("$title_base");
+    print
+       $q->h1($title_base),
+       $q->p("Error: $errortext"),
+       $q->p("<a href=\"" . $q->url . "\">Search again.</a>");
     print_footer();
     print $q->end_html;
     exit 0;
@@ -90,10 +135,11 @@ sub log_error ($$) {
 
 sub blank_form ($) {
     my $error = shift;
-    print
-        $q->header,
-        $q->start_html($title_base),
-        $q->h1("$title_base"), "\n";
+
+    print_header();
+    print_html_header("$title_base");
+    $q->autoEscape(undef);
+    print $q->h1("$title_base"), "\n";
     print $q->p("This tool searches for specified file names contained in Debian CD/DVD images."), "\n";
     print $q->p("Select which set(s) of images you wish to search:"), "\n";
     print $q->start_form(-method=>"GET");
@@ -144,6 +190,7 @@ sub pretty_name ($) {
     return $name;
 }    
 
+read_files("en");
 chdir($dbdir) || log_error(500, "Failed to cd to $dbdir: $!\n");
 opendir(my $dh, ".") || log_error(500, "Failed to open $dbdir: $!\n");
 while (defined($_ = readdir($dh))) {
@@ -207,7 +254,9 @@ foreach my $area (@chosen_areas) {
     dbmclose %fileinfo;
 }
 
-print $q->header,
+print_header();
+print_html_header("$title_base: $count results");
+print
     $q->start_html("$title_base: $count results"),
     $q->h1($title_base), "\n";
 if ($count >= $max_count) {