#!/usr/bin/perl -wT #this is for /usr/internet/infosystems/httpd/cgi-bin or /www/cgi-bin # Copyright: Guido Socher, eedgus # $Revision: 1.4 $, last changed: $Date: 1999/10/06 20:29:11 $ # =head1 Get a new articel number getticket provides a interface to reserve new article numbers. =head1 DESCRIPTION This is a system where editors can themselves pick article numbers in advance. getticket sends out mails. =cut # ------------------------------------------------------- use strict; my %FORM; my %html; # # Location of important files # my $url = "undefined"; # my %LANGUAGES = ( " en" => "English" , " es" => "Spanish" , " fr" => "French" , " de" => "German" ); # my @LANGS; my $NumLANGS=0; # my $dbfile= "ArticleNumbers.txt"; my $langfile="ArticleLanguages.txt"; # my %STATUS; my %TYPES = ( " free" => '<FONT COLOR="red">Untranslated</FONT>', " going" => '<FONT COLOR="blue">In curse</FONT>' , " done" => '<FONT COLOR="seablue" SIZE="-1">Finished</FONT>' ); # #print "Content-type: text/html\n\n"; # &cgi_receive; my $number; my $title; my %TRANSLATORS; my $lang; my %languages; my @line; &readHTMLpage; &printHTMLpage('main'); my $count=0; open(FF,"$langfile")||die "ERROR: languages file doesn't exist\n"; while(<FF>) { next unless (/\w/); chomp; @line=split(/\+\+/); $number = shift @line; chop $number; chop @line; if ( $number eq "000" ) { while ( ($LANGS[$NumLANGS] = shift @line) ) { next unless $LANGS[$NumLANGS] ne ' 00'; $NumLANGS++; } next; } for ( $count=0 ; $count<$NumLANGS ; $count++ ) { if ( $line[$count] ne ' 00' && $line[$count] ne ' ' ) { $STATUS{$number . $LANGS[$count]} = $line[$count]; } } } close FF; &printHTMLpage('tablehead'); print " <TR>\n"; open(FF,"$dbfile")||die "ERROR: can not read db\n"; for ( $count=0 ; $count<$NumLANGS ; $count++ ) { print ' <TD ALIGN="center">' . "\n"; print " <B><I>$LANGUAGES{$LANGS[$count]}</I></B>\n"; print ' </TD>' . "\n"; } print " </TR>\n"; # while(<FF>){ next unless (/\w/ && /^[0-9]/); print "<TR>\n"; chomp; @line=split(/\+\+/); $number = shift @line; chop $number; $title = shift @line; if ( $title eq " ") { $title="Unknown" } print "<TD align=right><tt>$number</tt></TD>\n<TD>$title</TD>\n"; for ( $count=0 ; $count<$NumLANGS ; $count++ ) { $lang=$LANGS[$count]; print "<TD align=center>"; if ( $STATUS{$number . $lang} ) { print $TYPES{$STATUS{$number . $lang}}; }else{ print $TYPES{' free'}; # print '<INPUT TYPE="button" NAME="'; # print $number.$lang; # print '" VALUE="reserve">' , } print "</TD>\n"; } print "</TR>\n"; } close FF; &printHTMLpage('tablefoot'); &printHTMLpage('mainfoot'); #-------------------------------------------------------- sub printHTMLpage($){ my $reqpage = shift; my $tmp; die "ERROR: no such template $reqpage\n" unless ($html{$reqpage}); for (@{$html{$reqpage}}){ print; } } #-------------------------------------------------------- sub readHTMLpage(){ #read and print any text between __ xxx __ and the next __ my $pagename="nix"; while(<DATA>){ if (/^__ (\w+) __/){ $pagename=$1; next; } next if (/^__ /); # the /o is important!! s/\$url/$url/o; push(@{$html{$pagename}},$_); } } #-------------------------------------------------------- sub cgi_receive{ my $buffer = ""; my $pair; my $name; my $value; if ($ENV{'GATEWAY_INTERFACE'} && $ENV{'GATEWAY_INTERFACE'} =~ /CGI/){ if ($ENV{'REQUEST_METHOD'} eq 'GET') { if($ENV{'QUERY_STRING'}){ $buffer = $ENV{'QUERY_STRING'}; } }elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer,$ENV{'CONTENT_LENGTH'}); }else{ die "Unknown REQUEST_METHOD: $ENV{'REQUEST_METHOD'}"; } }else { $buffer = $ARGV[0] if ($ARGV[0]); } # now decode it: # # Split the name-value pairs foreach $pair (split(/\&/, $buffer)){ ($name, $value) = split(/=/, $pair); $value = " " unless ($value); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } } #-------------------------------------------------------- __END__ __ main __ <HTML> <HEAD> <TITLE>LF article ticket number</TITLE> </HEAD> <BODY> <CENTER><H1> <FONT COLOR="#339900"> LinuxFocus article translation status report. </FONT> </H1></CENTER> __ main2 __ <P> The box below should be revisited. It's there in order to avoid rewriting. </P> <center> <FORM METHOD="get" ACTION="$url"> <TABLE BORDER="1" CELLPADDING="5" cellspacing="0" bgcolor="#6495ED" > <TR> <TD ALIGN="center"> Please enter YOUR e-mail address<BR> <INPUT TYPE="text" NAME="email" SIZE=30 VALUE=""> </TD> <TD> Please enter YOUR name<BR> <INPUT TYPE="text" NAME="name" SIZE=30 VALUE=""> </TD> </TR> <TR> <TD> Please enter the article number<BR> <CENTER><INPUT TYPE="text" NAME="number" SIZE=5 VALUE=""></CENTER> </TD> <TD VALIGN="top" ALIGN="center"> <INPUT TYPE="submit" VALUE="Reserve the translation"> </TD> </TR> </TABLE> </FORM> </CENTER> __ mainfoot __ <HR SIZE="2" NOSHADE> <P>Last updated :</P> </BODY> </HTML> __ tablehead __ <HR SIZE="2" NOSHADE> <CENTER> <FORM METHOD="get" ACTION="$url"> <TABLE BORDER ="1" BGCOLOR="lightgreen" CELLSPACING="0"> <TR> <TD ROWSPAN=2> </TD> <TD ROWSPAN="2"> <B><FONT SIZE="+2">Title</FONT></B> </TD> <TD COLSPAN="4" ALIGN="center"> <B><FONT SIZE="+1">Languages</FONT></B> </RTD </TR> __ tablefoot __ </TABLE> </FORM> </CENTER> __ selecthead __ <HR SIZE="2" NOSHADE> <CENTER> <FORM METHOD="get" ACTION="$url"> <TABLE BORDER ="1" BGCOLOR="lightgreen" CELLSPACING="0"> <TR><TD COLSPAN="6" BGCOLOR="seablue" BORDER=2 ALIGN="CENTER"> <INPUT TYPE="submit" VALUE="Selection Finished"> </TD></TR> <TR> <TD ROWSPAN=2> </TD> <TD ROWSPAN="2"> <B><FONT SIZE="+2">Title</FONT></B> </TD> <TD COLSPAN="4" ALIGN="center"> <B><FONT SIZE="+1">Languages</FONT></B> </RTD </TR> __ selectfoot __ <TR><TD COLSPAN="6" BGCOLOR="seablue" BORDER=2 ALIGN="CENTER"> <INPUT TYPE="submit" VALUE="Selection Finished"> </TD></TR> </TABLE> </FORM> </CENTER>