summaryrefslogtreecommitdiffstats
path: root/pttbbs/staticweb/index.pl
blob: cb47572558cea92acda26c034d2322cd2da8e166 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/perl
# $Id: index.pl,v 1.5 2003/07/15 09:07:27 in2 Exp $
use lib qw/./;
use LocalVars;
use CGI qw/:standard/;
use strict;
use Template;
use boardlist;
use b2g;

sub main
{
    my($tmpl, %rh, $bid);

    if( param('gb') ){
    $rh{gb} = 1;
    $rh{encoding} = 'gb2312';
    $rh{lang} = 'zh_CN';
    $rh{charset} = 'gb2312';    }
    else{
    print redirect("/man.pl/$1/")
        if( $ENV{REDIRECT_REQUEST_URI} =~ m|/\?(.*)| );
    $rh{encoding} = 'Big5';
    $rh{lang} = 'zh_TW';
    $rh{charset} = 'big5';
    }

    return redirect('/index.pl/'.($rh{gb}?'?gb=1':''))
    if( $ENV{REQUEST_URI} eq '/' );

    charset('');
    print header();

    ($bid) = $ENV{PATH_INFO} =~ m|.*/(\d+)/$|;
    $bid ||= 0;
    $rh{isroot} = ($bid == 0);

    if( !$brd{$bid} ){
    print "sorry, this bid $bid not found :(";
    return ;
    }

    foreach( @{$brd{$bid}} ){
    next if( $_->[0] == -1 && ! -e "$MANDATA/$_->[1].db" );
    $_->[2] =~ s/([\xA1-\xF9].)/$b2g{$1}/eg if( $rh{gb} );
    push @{$rh{dat}}, $_;
    }

    my $path = '';
    foreach( $ENV{PATH_INFO} =~ m|(\w+)|g ){
    push @{$rh{class}}, {path => "$path/$_/",
                 title => $brd{"$_.title"}};
    $path .= "/$_";
    }

    $tmpl = Template->new({INCLUDE_PATH => '.',
               ABSOLUTE => 0,
               RELATIVE => 0,
               RECURSION => 0,
               EVAL_PERL => 0,
               COMPILE_EXT => '.tmpl',
               COMPILE_DIR => $MANCACHE});
    $tmpl->process('index.html', \%rh);
}

main();
1;