X-Git-Url: http://git.jankratochvil.net/?p=www.jankratochvil.net.git;a=blobdiff_plain;f=project%2FIndex.html.pl;h=6c82b46787247633ea9843b75dfb1a33e136a187;hp=2e42b10ff2a72c0e8486c9f4d025e25853db9d11;hb=7727ab02734783b8fd3082b55976f6b818f7529f;hpb=87881612a38624ab579efed6e93749b0e2b42fc7 diff --git a/project/Index.html.pl b/project/Index.html.pl index 2e42b10..6c82b46 100755 --- a/project/Index.html.pl +++ b/project/Index.html.pl @@ -27,56 +27,22 @@ use warnings; BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,)[0]]}; eval "use lib '$top_dir'"; close F; } use My::Web; -require 'CGI'; -require 'My::Project'; - -use constant ENTRIES=>"CVS/Entries"; -use constant ENTRIES_LOG=>"CVS/Entries.Log"; +Wrequire 'My::Project'; My::Web->init( "__PACKAGE__"=>__PACKAGE__, "title"=>'Project List', + "section"=>"Projects", + "rel_up"=>top_dir(), + "rel_start"=>top_dir(), ); My::Web->heading(); -my $CGI=CGI->new(); - -print <<'HERE'; -

Project List of Jan Kratochvil

- -

- - -

-HERE - -my %dirs; -for my $ENTRIES (ENTRIES,ENTRIES_LOG) { - local *E; - next if !open E,$ENTRIES; - while () { - chomp; - do { $dirs{$1}=1; next; } if m#^(?:A )?D/([^/]*)/#; - next if m#^/([^/]*)/# ; - next if /^D$/; - warn "File $ENTRIES contains invalid line \"$_\": $!"; - } - close E; - } +print My::Project->views("Detailed"); +print My::Project->platforms(undef()); -my %item; -for my $dir (keys(%dirs)) { - require "project::${dir}::ListItem"; - my $item=eval('\@project::'.$dir.'::ListItem::ListItem'); - do { warn "Broken project/$dir/ListItem.pm"; next; } if !defined $item; - $item{$dir}={ My::Project::project_arr_to_hash(@$item) }; - } +my %item=( My::Project::item_hash_read() ); # $col{"name"}{"show"}=1 # $col{"name"}{"format"}=sub { "<".$_[0].">"; } @@ -94,68 +60,25 @@ $col{"name"}{"format"}=sub { return "".$_[0].""; }; -$col{"license"}{"format"}=sub { - my %known=( - "PD"=>"PD", - "GPL"=>"GPL", - "LGPL"=>"LGPL", - ); - return $known{$_[0]} if $known{$_[0]}; - return $_[0]; - }; - -$col{"online-demo"}{"format"}=\&format_url; -$col{"download"}{"format"}=\&format_url; -$col{"name"}{""}="Project Name"; -$col{"summary"}{""}="Abstract"; -$col{"license"}{""}="Copying"; -$col{"maintenance"}{""}="State"; -$col{"language"}{""}="Language"; - -# Fill in cols not contained in @col_order -if (0) { - my %col_order=map(($_=>1),@col_order); - push @col_order,map({ ($col_order{$_} ? () : $_); } keys(%{{ map(($_=>1),map((keys(%{$item{$_}})),keys(%item)))}})); +my @platforms=@My::Project::platforms; +while (@platforms) { + my $platform_sym =shift @platforms; + my $platform_name=shift @platforms; + print ''; + print "

$platform_name

"; + print '
'."\n"; + my @projects=sort { + ($item{$b}{"priority"} <=> $item{$a}{"priority"}) + or + (lc($item{$a}{"name"}) cmp lc($item{$b}{"name"})); + } map({ $item{$_}{"platform"} ne $platform_sym ? () : ($_); } keys(%item)); + for my $project (@projects) { + print "

".a_href("/project/$project/",$item{$project}{"name"}.": ".$item{$project}{"summary"})."

\n"; + print "
\n"; + print $item{$project}{"description"}; + print "
\n"; + } } -print ''."\n"; - print ''; - for my $col (@col_order) { - next if defined $col{$col}{"show"} && !$col{$col}{"show"}; - print ''; - } - print ''."\n"; - my @rows_ordered=sort { - for my $order_by (@row_order,"name") { - my $order_by=$order_by; - my $minus=($order_by=~s/^(-)//)[0]; - my $r=($item{$a}{$order_by} cmp $item{$b}{$order_by}); - $r=-$r if $minus; - return $r if $r; - } - return 0; - } keys(%item); - for my $row (@rows_ordered) { - print ''; - for my $col (@col_order) { - next if defined $col{$col}{"show"} && !$col{$col}{"show"}; - print ''; - } - print ''."\n"; - if ($CGI->param("description_opt")) { - print ''; - print ''; - print ''."\n"; - print ''."\n"; - } - } -print '
'.($col{$col}{""} || "[$col]").'
'; - if (!$col{$col}{"format"}) { - print(($item{$row}{$col} || "")); - } - else { - print(&{$col{$col}{"format"}}($item{$row}{$col},$row)); - } - print '
'.$item{$row}{"description"}.'
 
'."\n"; My::Web->footer();