#!/usr/bin/perl -w

=head1        DESCRIPTION

        Version:         0.2
        Date:                08.2001
        Author:                m.manno@gmx.net
        Projektverwaltung

        v.3h        Hellweg Projektliste mit Links

=head1 SYNOPSIS

        Projekte muessen umbenannt werden, nicht geloescht
        Ausgabe über Templates


=head1        METHODEN

=head2        Kategorien ausgeben

                prj.pl
                $tmpl_prj_pfad/kategorien.html

=head2        Projekt Liste von Kategorie ausgeben

                prj.pl?do=print_art&kid=
                $tmpl_prj_pfad/artikel.html

        Template Beispiel:
        <TMPL_LOOP NAME=LOOP>
        <tr>
        <td><!-- TMPL_VAR NAME=id --></td>
        <td><!-- TMPL_VAR NAME=titel --></td>
        <td><!-- TMPL_VAR NAME=beschreibung --></td>
        <td><a href="<!-- TMPL_VAR NAME=alink -->" class="M">here</a></td>
        </tr>
        </TMPL_LOOP>

=head2  Suchen

                prj.pl?do=suchen&key=string
                prj.pl?do=suchen
                $tmpl_prj_pfad/suchen.html

        Beispiel:
        <form action="prj.pl" method="POST">
        <input type=hidden name=do value=suchen>
        Stichwort: <input type="text" name="key" size="30" value=""><br>
        <input type="submit" value="senden">
            </form>


=cut


use English;
use strict;
use HTML::Template;
use Time::Local;

# helper classes
use hellweg;
#use baseconf;

# oop
use mm_kategorien;
use mm_artikel;

# init
my $t_base;
my $msg;
$header_send=0;
$query = new CGI;

$dbh = $drh->connect("$database:$hostname", $user, $password)
        or ende ("Verbindung zur DB $database fehlgeschlagen: $!");

my %States = (
        'home'                        => \&home,
        'print_kat'                => \&print_kat,
        'print_art'                => \&print_art,
        'print_one_art'                => \&print_one_art,
        'suchen'                => \&suchen,
        );

my $go;
if ( $go = $query->param("do") ) {
        # strip all but chars/nums and _
        $go =~ s/\W+//g;
} else {
        $go ='home';
}
# korrekte subroutine aufrufen
if ($States{$go}) {
        $States{$go}->();
} else {
        &home;
        warn "strange call '$go'";
}


if (not $header_send) { print $query->header(); $header_send=1; }
# Ausgabe des Templates
# if ($t_base eq undef) {
if (! $t_base) {
    $t_base = HTML::Template->new(filename => "$tmpl_prj_pfad/default.html");
    $t_base->param( msg        => $msg );
}
print $t_base->output;


sub home {
        &print_kat;
        return;
}

sub print_kat {
        my $exp_kid = $query->param('exp_kid');
        my $kat= mm_kategorien->new(db=>$db_prj);
        $kat->select_all;
        my @POOP = $kat->select_all;
        my $tmp;
        foreach $tmp (@POOP) {
                if ( $exp_kid eq $tmp->{'id'} ) {
                        # expand this kat
                        $tmp->{'EXPANDKAT'}=1;
                        my $art= mm_artikel->new(db=>$db_prj_docs);
                        my @POOP2 = $art->select_titel_bykat($exp_kid);
                        my $tmp2;
                        foreach $tmp2 (@POOP2) {
                                $tmp2->{'CGI3'}="prj.pl?do=print_one_art&aid=$tmp2->{'id'}";
                                delete ($tmp2->{'id'});
                        }
                        $tmp->{'LOOP2'}=\@POOP2;
                } else {
                        $tmp->{'CGI2'}="prj.pl?do=print_kat&exp_kid=$tmp->{'id'}";
                }
                $tmp->{'CGI'}="prj.pl?do=print_art&kid=$tmp->{'id'}";
                delete ($tmp->{'id'});
        }

        $t_base = HTML::Template->new(filename => "$tmpl_prj_pfad/kategorien.html");
        $t_base->param( LOOP        =>        \@POOP
                 );

        return 0;

}

sub print_art {
        # by kategorie id
        my $art= mm_artikel->new(db=>$db_prj_docs);
        my $kid;
        if ( $kid = $query->param('kid') ) {
                my @POOP = $art->select_bykat($kid) or $msg='Keine Eintr&auml;ge f&uuml;r diesen Bereich';
                my $tmp;
                foreach $tmp (@POOP) {
                        if ($tmp->{'alink'} eq '' or $tmp->{'alink'} eq 'http://hellweg.org/projekt-docs/') {delete ($tmp->{'alink'});}
                }

                $t_base = HTML::Template->new(filename => "$tmpl_prj_pfad/artikel.html");
                $t_base->param( LOOP        =>        \@POOP, msg => $msg );
        }
    return;

}

sub print_one_art {
        # one artikel by artikel id
        my $art= mm_artikel->new(db=>$db_prj_docs);
        my $aid;
        if ( $aid = $query->param('aid') ) {
                my @POOP = $art->select_byaid2($aid) or $msg='Keine Eintr&auml;ge f&uuml;r diesen Bereich';
                my $tmp;
                foreach $tmp (@POOP) {
                        if ($tmp->{'alink'} eq '' or $tmp->{'alink'} eq 'http://hellweg.org/projekt-docs/') {delete ($tmp->{'alink'});}
                }

                $t_base = HTML::Template->new(filename => "$tmpl_prj_pfad/artikel.html");
                $t_base->param( LOOP        =>        \@POOP, msg => $msg );
        }
    return;

}

sub suchen {
        # by kategorie id
        my $art= mm_artikel->new(db=>$db_prj_docs);
        my $key = $query->param('key');
        # kein key gibt alle
        my @POOP = $art->suche_artikel($key);
        my $kat= mm_kategorien->new(db=>$db_prj);
        $kat->select_all;
        my $tmp;
        foreach $tmp (@POOP) {
                $tmp->{'kategorie'}=$kat->get_kategorie($tmp->{'kategorie'});
        }

        $t_base = HTML::Template->new(filename => "$tmpl_prj_pfad/suchen.html");
        $t_base->param( msg        =>        $msg,
                        LOOP        =>        \@POOP
                 );

    return;

}


=pod

=cut

=head1 SEE ALSO

F<mm_kategorien.pm>,F<mm_artikel.pm>,F<baseconf.pm>,F<basesql.pm>
F<prj.pl> F<admin_prj.pl>

=head1 COPYRIGHT

gpl
07.09.2001        mm

=cut