#!/usr/local/bin/perl

use CGI;
use Pg;
use strict;

### Variablen ###

my $superuserid = 'koestho';
my $superuserad = 'http://ancalagon.uni-muenster.de:8080';
my $dbname      = 'vv';

my $benutzer;
my $benutzercode;
my $benutzerebene;
my $semester;
my $semesterbezeichnung;
my $veranstaltungsschluessel;

my $htmldatei;
my $htmltitel;
my $htmlmeldung;
my $htmlverweis = "<A HREF=\"$superuserad\">Zur&uuml;ck zur Semesterauswahl</A>\n";

my $conn;
my $result;
my @row;

my %FORM;

my $feld_schluessel		= 0;
my $feld_titel			= 1;
my $feld_autoren		= 2;
my $feld_status			= 3;
my $feld_dokinhalt		= 4;
my $feld_dozent			= 5;
my $feld_typ			= 6;
my $feld_name			= 7;
my $feld_codozenten		= 8;
my $feld_belegnummer		= 9;
my $feld_uebcodozenten		= 10;
my $feld_uebbelegnummer		= 11;
my $feld_zeit			= 12;
my $feld_ort			= 13;
my $feld_beginn			= 14;
my $feld_zuordnung		= 15;
my $feld_hoererkreis		= 16;
my $feld_inhalt			= 17;
my $feld_vorkenntnisse		= 18;
my $feld_literatur		= 19;
my $feld_leistnachweis		= 20;
my $feld_uebschein		= 21;
my $feld_semschein		= 22;
my $feld_anschluss		= 23;
my $feld_anmeldung		= 24;
my $feld_vorbesprechung		= 25;
my $feld_sonstiges		= 26;
my $feld_wwwadresse		= 27;
my $feld_sprechstunde		= 28;

$semester = 'ss00';
$semesterbezeichnung = 'Sommersemester 2000';

&write_html_veranstaltungsuebersicht_to_outputfile ();

exit;

$semester = 'ss99';
$semesterbezeichnung = 'Sommersemester 1999';

&write_html_veranstaltungsuebersicht_to_outputfile ();
&write_edit_file ();
&write_find_file ();

$veranstaltungsschluessel = 100;
&write_html_veranstaltungsbeschreibung_to_outputfile ();
$veranstaltungsschluessel = 101;
&write_html_veranstaltungsbeschreibung_to_outputfile ();

$semester = 'ws99';
$semesterbezeichnung = 'Wintersemester 1999/00';

$veranstaltungsschluessel = 100;
&write_html_veranstaltungsbeschreibung_to_outputfile ();
$veranstaltungsschluessel = 110;
&write_html_veranstaltungsbeschreibung_to_outputfile ();
$veranstaltungsschluessel = 120;
&write_html_veranstaltungsbeschreibung_to_outputfile ();

&write_html_veranstaltungsuebersicht_to_outputfile ();
&write_edit_file ();
&write_find_file ();

exit;

### Funktionen ###

sub write_html_beginning
{
    print "<HTML>\n";

    print "<HEAD>\n";
    print "<TITLE>WVZ - $htmltitel</TITLE>\n";
    print "</HEAD>\n";

    print "<BODY BACKGROUND=\"\" BGCOLOR=\"#ffffff\" TEXT=\"#000000\" LINK=\"#0000ff\" VLINK=\"#800080\" ALINK=\"#ff0000\">\n";

    print "<H1>";
    print "<FONT COLOR=\"red\">W</FONT>";
    print "<FONT COLOR=\"green\">V</FONT>";
    print "<FONT COLOR=\"blue\">Z</FONT>";
    print "- $htmltitel";
    print "</H1>";
    print "<HR>\n<P>\n";    
}

sub write_html_ending
{
    print "<P>\n<HR>\n";

    print $htmlverweis;
    
    print "</BODY>";
    print "</HTML>";
}

sub write_html_error
{
    $htmltitel = "Fehlermeldung";
    &write_html_beginning ();

    print $htmlmeldung;
    
    &write_html_ending ();
    exit;
}

sub write_html_beginning_to_outputfile
{
    open (OUTPUT, ">$htmldatei") || die "Cannot open output file $htmldatei.";
   
    print OUTPUT "<HTML>\n";

    print OUTPUT "<HEAD>\n";
    print OUTPUT "<TITLE>WVZ - $htmltitel</TITLE>\n";
    print OUTPUT "</HEAD>\n";

    print OUTPUT "<BODY BACKGROUND=\"\" BGCOLOR=\"#ffffff\" TEXT=\"#000000\" LINK=\"#0000ff\" VLINK=\"#800080\" ALINK=\"#ff0000\">\n";

    print OUTPUT "<H1>";
    print OUTPUT "<FONT COLOR=\"red\">W</FONT>";
    print OUTPUT "<FONT COLOR=\"green\">V</FONT>";
    print OUTPUT "<FONT COLOR=\"blue\">Z</FONT>";
    print OUTPUT "- $htmltitel";
    print OUTPUT "</H1>";
    print OUTPUT "<HR>\n<P>\n";    
}

sub write_html_ending_to_outputfile
{
    print OUTPUT "<P>\n<HR>\n";

    print OUTPUT $htmlverweis;
   
    print OUTPUT "</BODY>";
    print OUTPUT "</HTML>";

    close (OUTPUT);
}

sub write_html_veranstaltungsuebersicht_to_outputfile ()
{
    ### Verbindung mit der Datenbank herstellen
    $conn = Pg::connectdb ("dbname=$dbname");
    die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status;
    
    # print "Hier bin ich!!!";

    ### Einlesen aller Veranstaltungen vorbereiten
    $result = $conn->exec ("SELECT dozent, typ, name, schluessel FROM veranstaltungen$semester WHERE status = 1");
    die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;

    $htmldatei = $semester;
    $htmldatei = $htmldatei . "/";
    $htmldatei = $htmldatei . 'index.html';
    $htmltitel = "Veranstaltungs&uuml;bersicht $semesterbezeichnung";
    # $htmldatei = "uebersicht$semester.html";
    &write_html_beginning_to_outputfile ();

    ### Menuepunkte ausgeben ###
    print OUTPUT "<A HREF=\"$superuserad/$semester/find.html\">";
    print OUTPUT "Veranstaltungen suchen";
    print OUTPUT "</A>";
    print OUTPUT "<P>";
	    
    print OUTPUT "Nur f&uuml;r Zugangsberechtigte:<BR>\n";
    print OUTPUT "<A HREF=\"$superuserad/$semester/edit.html\">";
    print OUTPUT "Veranstaltungsdaten eingeben";
    print OUTPUT "</A>";
    print OUTPUT "<P>";
    print OUTPUT "<HR>";
    print OUTPUT "<P>";    
 
    ### Tabellenkopf ausgeben
    print OUTPUT "<TABLE BORDER CELLPADDING=3>\n";
    print OUTPUT "<TH ALIGN=LEFT>Dozent</TH>\n";
    print OUTPUT "<TH ALIGN=LEFT>Veranstaltung</TH>\n";
    print OUTPUT "<TR>";
    
    ### Tabelle aller Veranstaltungen ausgeben
    while (@row = $result->fetchrow)
    {
 	print OUTPUT "<TD>";
	print OUTPUT "<A HREF=\"$superuserad/$semester/veranstaltung$row[3].html\">";
	print OUTPUT $row[0];
	print OUTPUT "</A>";
	print OUTPUT "</TD>";
	print OUTPUT "\n";

 	print OUTPUT "<TD>";
	print OUTPUT "<A HREF=\"$superuserad/$semester/veranstaltung$row[3].html\">";

        if ($row[1] == 1 or $row[1] == 2)
	{
	    print OUTPUT "Vorlesung ";
        }
        elsif ($row[1] == 11) { print OUTPUT "Seminar "; }
        elsif ($row[1] == 12) { print OUTPUT "Proseminar "; }
        elsif ($row[1] == 13) { print OUTPUT "Oberseminar "; }
        elsif ($row[1] == 14) { print OUTPUT "Diplomandenseminar "; }
        elsif ($row[1] == 15) { print OUTPUT ""; }
        elsif ($row[1] == 21) { print OUTPUT "Arbeitsgemeinschaft "; }
        elsif ($row[1] == 31) { print OUTPUT "Kolloquium "; }
        elsif ($row[1] == 41) { print OUTPUT "Praktikum "; }
        elsif ($row[1] == 42) { print OUTPUT "Blockpraktikum "; }
        elsif ($row[1] == 43) { print OUTPUT "Tagespraktikum "; }
        else
        {
            print OUTPUT "";
        }
	print OUTPUT "$row[2]";
	if ($row[1]==2)
	{
            print OUTPUT " (mit &Uuml;bungen)";
 	}     	

	print OUTPUT "</A>";
	print OUTPUT "</TD>";
	print OUTPUT "\n";

	print OUTPUT "<TR>\n";
    }

    print OUTPUT "</TABLE>";

    &write_html_ending_to_outputfile ();    
}

sub write_html_veranstaltungsbeschreibung_to_outputfile ()
{
    ### Verbindung mit der Datenbank herstellen
    $conn = Pg::connectdb ("dbname=$dbname");
    die $conn->errorMessage unless PGRES_CONNECTION_OK eq $conn->status;
    # print "connection to $dbname established\n";

    ### Einlesen aller Veranstaltungen vorbereiten
    $result = $conn->exec ("SELECT * FROM veranstaltungen$semester WHERE schluessel = $veranstaltungsschluessel");
    die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
    # print "list of events:\n\n";

    $htmldatei = "$semester/veranstaltung$veranstaltungsschluessel.html";
    $htmltitel = 'Veranstaltungsbeschreibung';
    &write_html_beginning_to_outputfile ();

    ### Tabellenkopf ausgeben
    if (@row = $result->fetchrow)
    {
        print OUTPUT "<H3>";
	print OUTPUT "$row[$feld_dozent]: ";
        if ($row[$feld_typ] == 1 or $row[$feld_typ] == 2)
	{
	    print OUTPUT "Vorlesung ";
        }
        elsif ($row[$feld_typ] == 11) { print OUTPUT "Seminar "; }
        elsif ($row[$feld_typ] == 12) { print OUTPUT "Proseminar "; }
        elsif ($row[$feld_typ] == 13) { print OUTPUT "Oberseminar "; }
        elsif ($row[$feld_typ] == 14) { print OUTPUT "Diplomandenseminar "; }
        elsif ($row[$feld_typ] == 15) { print OUTPUT ""; }
        elsif ($row[$feld_typ] == 21) { print OUTPUT "Arbeitsgemeinschaft "; }
        elsif ($row[$feld_typ] == 31) { print OUTPUT "Kolloquium "; }
        elsif ($row[$feld_typ] == 41) { print OUTPUT "Praktikum "; }
        elsif ($row[$feld_typ] == 42) { print OUTPUT "Blockpraktikum "; }
        elsif ($row[$feld_typ] == 43) { print OUTPUT "Tagespraktikum "; }
        else
        {
            print OUTPUT "";
        }
        print OUTPUT "$row[$feld_name]";
        if ($row[$feld_typ]==2)
	{
            print OUTPUT " (mit &Uuml;bungen)";
 	}     	
    	print OUTPUT "</H3>\n";
    
	if (! $row[$feld_codozenten] eq '')
	{
	    print OUTPUT "gemeinsam mit $row[$feld_codozenten]<BR>\n";
	}
	if (! $row[$feld_uebcodozenten] eq '')
	{
	    print OUTPUT "Übungen dazu gemeinsam mit $row[$feld_uebcodozenten]<BR>\n";
	}
	# print OUTPUT "<P>";

	print OUTPUT "<DL>\n";

	if (! $row[$feld_zeit] eq '')	
	{
	print OUTPUT "<DT><B>Zeit:</B>";
	print OUTPUT "<DD>$row[$feld_zeit]";	
	}

	if (! $row[$feld_ort] eq '')	
	{
	print OUTPUT "<DT><B>Ort:</B>";
	print OUTPUT "<DD>$row[$feld_ort]";	
	}

	if (! $row[$feld_beginn] eq '')	
	{
	print OUTPUT "<DT><B>Beginn:</B>";
	print OUTPUT "<DD>$row[$feld_beginn]";	
	}

	if (! $row[$feld_belegnummer] eq '')	
	{
            print OUTPUT "<DT><B>Belegnummer:</B>";
            print OUTPUT "<DD>";
            if ($row[$feld_typ] == 2)
            {
                print OUTPUT "$row[$feld_belegnummer] (Vorlesung); "; 
                print OUTPUT "$row[$feld_uebbelegnummer] (&Uuml;bungen)"; 
            }
            else
            {
                print OUTPUT "$row[$feld_belegnummer]";
            }
        }

        # print "Schlüssel = $row[$feld_schluessel] ";
        # print "Zuordnung = $row[$feld_zuordnung] ... ";
        if (! $row[$feld_zuordnung] == 0)
	{
            print OUTPUT "<DT><B>Zuordnung:</B><DD>";

            my $zu = $row [$feld_zuordnung];
            $zu = ($zu - ($zu % 1)) / 1;
            $zu = $zu % 4;
               if ($zu == 1) { print OUTPUT "Grundstudium<BR>"; }
            elsif ($zu == 2) { print OUTPUT "Hauptstudium<BR>"; }
            elsif ($zu == 3) { print OUTPUT "Grund- und Hauptstudium<BR>"; }

            $zu = $row [$feld_zuordnung];
            $zu = ($zu - ($zu % 8)) / 8;
            $zu = $zu % 16;
	 print "$zu,";            
	    if ( $zu      == 1) { print OUTPUT "Primarstufe<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Primarstufe, "; }
            $zu = ($zu - ($zu % 2)) / 2;
	 print "$zu,";
               if ( $zu      == 1) { print OUTPUT "Sek I<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Sek I, "; }
            $zu = ($zu - ($zu % 2)) / 2;
	 print "$zu,";  
               if ( $zu      == 1) { print OUTPUT "Sek II<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Sek II, "; }
            $zu = ($zu - ($zu % 2)) / 2;
	 print "$zu,"; 
              if ( $zu      == 1) { print OUTPUT "Diplom<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Diplom, "; }
	 print "\n";

            $zu = $row [$feld_zuordnung];
            $zu = ($zu - ($zu % 256)) / 256;
            $zu = $zu % 32;
               if ( $zu      == 1) { print OUTPUT "Reine Mathematik<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Reine Mathematik, "; }
            $zu = ($zu - ($zu % 2)) / 2;
               if ( $zu      == 1) { print OUTPUT "Angewandte Mathematik<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Angewandte Mathematik, "; }
            $zu = ($zu - ($zu % 2)) / 2;
               if ( $zu      == 1) { print OUTPUT "Informatik<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Informatik, "; }
            $zu = ($zu - ($zu % 2)) / 2;
               if ( $zu      == 1) { print OUTPUT "Wirtschaftsinformatik<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Wirtschaftsinformatik, "; }
            $zu = ($zu - ($zu % 2)) / 2;
               if ( $zu      == 1) { print OUTPUT "Sonstiges<BR>"; }
            elsif (($zu % 2) == 1) { print OUTPUT "Sonstiges, "; }
	}	

	if (! $row[$feld_hoererkreis] eq '')	
	{
	print OUTPUT "<DT><B>H&ouml;rerkreis:</B>";
	print OUTPUT "<DD>$row[$feld_hoererkreis]";
	}	

	if (! $row[$feld_inhalt] eq '')	
	{
	print OUTPUT "<DT><B>Inhalt:</B>";
	print OUTPUT "<DD>$row[$feld_inhalt]";
	}	

	if (! $row[$feld_vorkenntnisse] eq '')	
	{
	print OUTPUT "<DT><B>Vorkenntnisse:</B>";
	print OUTPUT "<DD>$row[$feld_vorkenntnisse]";
	}

	if (! $row[$feld_literatur] eq '')	
	{
	print OUTPUT "<DT><B>Literatur:</B>";
	print OUTPUT "<DD>$row[$feld_literatur]";	
	}
	
	if (! $row[$feld_leistnachweis] eq '')	
	{
	print OUTPUT "<DT><B>Leistungsnachweis:</B>";
	print OUTPUT "<DD>$row[$feld_leistnachweis]";	
	}

	if (! $row[$feld_uebschein] eq '')	
	{
	print OUTPUT "<DT><B>&Uuml;bungsschein:</B>";
	print OUTPUT "<DD>$row[$feld_uebschein]";
	}

	if (! $row[$feld_semschein] eq '')	
	{
	print OUTPUT "<DT><B>Seminarschein:</B>";
	print OUTPUT "<DD>$row[$feld_semschein]";	
	}

	if (! $row[$feld_anschluss] eq '')	
	{
	print OUTPUT "<DT><B>Anschlu&szlig;veranstaltung:</B>";
	print OUTPUT "<DD>$row[$feld_anschluss]";	
	}

	if (! $row[$feld_anmeldung] eq '')	
	{
	print OUTPUT "<DT><B>Anmeldung:</B>";
	print OUTPUT "<DD>$row[$feld_anmeldung]";	
	}
		
	if (! $row[$feld_vorbesprechung] eq '')	
	{
	print OUTPUT "<DT><B>Vorbesprechung:</B>";
	print OUTPUT "<DD>$row[$feld_vorbesprechung]";	
	}

	if (! $row[$feld_sonstiges] eq '')	
	{
	print OUTPUT "<DT><B>Sonstiges:</B>";
	print OUTPUT "<DD>$row[$feld_sonstiges]";	
	}

	if (! $row[$feld_wwwadresse] eq '')	
	{
	print OUTPUT "<DT><B>WWW-Adresse:</B>";
	print OUTPUT "<DD>$row[$feld_wwwadresse]";	
	}

	if (! $row[$feld_sprechstunde] eq '')	
	{
	print OUTPUT "<DT><B>Sprechstunde:</B>";
	print OUTPUT "<DD>$row[$feld_sprechstunde]";
	}

	print OUTPUT "</DL>\n";
    }
    else
    {
        print OUTPUT "FEHLER: Veranstaltung nicht gefunden!\n";
    }
 
    ### Rueckverweis einfuegen ###
    my $temp = $htmlverweis;
    $htmlverweis = "<A HREF=\"$superuserad/$semester/index.html\">Zur&uuml;ck zur Veranstaltungs&uuml;bersicht</A>\n";
    &write_html_ending_to_outputfile ();
    $htmlverweis = $temp;
}

sub write_edit_file ()
{
    $htmldatei = $semester;
    $htmldatei = $htmldatei . "/";
    $htmldatei = $htmldatei . 'edit.html';
    $htmltitel = "Pa&szlig;worteingabe";
    &write_html_beginning_to_outputfile ();

print OUTPUT <<EndHtml;
<FORM ACTION="$superuserad/cgi-bin/dateneingabe.cgi" METHOD="POST">
Bitte geben Sie Ihre Benutzerkennung und Ihr Passwort ein:

<TABLE>

<TR>
<TD>Benutzerkennung:</TD>
<TD><INPUT TYPE="text" NAME="id" SIZE="30" MAXLENGTH="30"></TD>
</TR>

<TR>
<TD>Passwort:</TD>
<TD><INPUT TYPE="password" NAME="passwort" SIZE="30" MAXLENGTH="30"></TD>

</TR>
</TABLE>

<INPUT TYPE="hidden" NAME="stelle" VALUE="1">
<INPUT TYPE="hidden" NAME="semester" VALUE="$semester">
<INPUT TYPE="submit" VALUE="Anmelden"></FORM></TD>
EndHtml
;

    ### Rueckverweis einfuegen ###
    my $temp = $htmlverweis;
    $htmlverweis = "<A HREF=\"$superuserad/$semester/index.html\">Zur&uuml;ck zur Veranstaltungs&uuml;bersicht</A>\n";
    &write_html_ending_to_outputfile ();
    $htmlverweis = $temp;
}

sub write_find_file ()
{
    $htmldatei = $semester;
    $htmldatei = $htmldatei . "/";
    $htmldatei = $htmldatei . 'find.html';
    $htmltitel = "Suchanfrage eingeben";
    &write_html_beginning_to_outputfile ();

print OUTPUT <<EndHtml;

<FORM ACTION="$superuserad/cgi-bin/datenausgabe.cgi" METHOD="POST">

<TABLE BORDER=4>

<TR>
<TH ALIGN=Left>Veranstaltungstyp:
<TH ALIGN=Left>
<SELECT Name="typ">
  <OPTION SELECTED VALUE="alle">Alle
  <OPTION VALUE="0">Vorlesung
  <OPTION VALUE="1">Seminar
  <OPTION VALUE="2">Arbeitsgemeinschaft
  <OPTION VALUE="3">Kolloquium
  <OPTION VALUE="4">Praktikum
  <OPTION VALUE="5">Sonstiges
</SELECT>

<TH ALIGN=Left>Zuordnung:
<TH ALIGN=Left>
<INPUT TYPE="CHECKBOX" NAME="zuordnunggs" VALUE="gs" CHECKED> Grundstudium<BR>
<INPUT TYPE="CHECKBOX" NAME="zuordnunghs" VALUE="hs" CHECKED> Hauptstudium<BR>

<TR>
<TH ALIGN=Left>Veranstalter:
<TH ALIGN=Left><INPUT TYPE="text" NAME="dozent" SIZE=30>

<TH ALIGN=Left>Studiengang:
<TH ALIGN=Left>
<INPUT TYPE=CHECKBOX NAME="zuordnungp"  VALUE="p"  CHECKED> Primarstufe<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungs1" VALUE="s1" CHECKED> Sekundarstufe I<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungs2" VALUE="s2" CHECKED> Sekundarstufe II<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungd"  VALUE="d"  CHECKED> Diplom<BR>

<TR>
<TH ALIGN=Left>Wochentag:
<TH ALIGN=Left>
<SELECT Name="tag">
  <OPTION SELECTED VALUE="alle">Alle
  <OPTION VALUE="mo"> Montag
  <OPTION VALUE="di"> Dienstag
  <OPTION VALUE="mi"> Mittwoch
  <OPTION VALUE="do"> Donnerstag
  <OPTION VALUE="fr"> Freitag
  <OPTION VALUE="sa"> Samstag
  <OPTION VALUE="so"> Sonntag
  <OPTION VALUE="block"> Blockveranstaltung
</SELECT>

<TH ALIGN=Left>Bereich:
<TH ALIGN=Left>
<INPUT TYPE=CHECKBOX NAME="zuordnungrm" VALUE="rm" CHECKED>Reine Mathematik<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungam" VALUE="am" CHECKED>Angewandte Mathematik<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungif" VALUE="if" CHECKED>Informatik<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungwi" VALUE="wi" CHECKED>Wirtschaftsinformatik<BR>
<INPUT TYPE=CHECKBOX NAME="zuordnungso" VALUE="so" CHECKED>Sonstiges<BR>

<TR>
<TH ALIGN=Left>Anfangszeit:
<TH ALIGN=Left><INPUT TYPE="text" NAME="anfangszeit" SIZE=30>

<TH ALIGN=Left><BR>
<TH ALIGN=Left><BR>

</TABLE>

<INPUT TYPE="hidden" NAME="semester" VALUE="$semester">
<INPUT TYPE="submit" VALUE="Suche ausführen">

</FORM>

EndHtml
;

    ### Rueckverweis einfuegen ###
    my $temp = $htmlverweis;
    $htmlverweis = "<A HREF=\"$superuserad/$semester/index.html\">Zur&uuml;ck zur Veranstaltungs&uuml;bersicht</A>\n";
    &write_html_ending_to_outputfile ();
    $htmlverweis = $temp;
}

