# $Id$ # List of projects Perl template. # Copyright (C) 2003-2005 Jan Kratochvil # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; exactly version 2 of June 1991 is required # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA package project::Rel; require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; }; our $CVS_ID=q$Id$; use strict; use warnings; use My::Web; use Apache2::Const qw(HTTP_MOVED_PERMANENTLY); Wrequire 'project::Lib'; our $HTML_TEST="download"; our $HTML_TEST_RC=HTTP_MOVED_PERMANENTLY; our $HTML_TEST_QUERY_STRING='project=MyWeb&rel=next'; sub handler { my $W=My::Web->init( "args_check"=>{ "rel"=>'^(?:prev|next)$', "project"=>'^\w+$', }, "header_only"=>1, ); my %item=project::Lib->name_to_hashref(); my @platforms=@project::Lib::platforms; my @projects=(); # Do not sort by platforms: # while (@platforms) { my $platform_sym =shift @platforms; my $platform_name=shift @platforms; push @projects,sort { ($item{$b}{"priority"} <=> $item{$a}{"priority"}) or (lc($item{$a}{"name"}) cmp lc($item{$b}{"name"})); } ( # Do not sort by platform: map({ $item{$_}{"platform"} ne $platform_sym ? () : ($_); } # ) keys(%item) ); } my $target=undef(); for (0..$#projects) { next if $projects[$_] ne $W->{"args"}{"project"}; $target=$projects[$_-1] if $_>0 && $W->{"args"}{"rel"} eq "prev"; $target=$projects[$_+1] if $_<$#projects && $W->{"args"}{"rel"} eq "next"; last if $target; } My::Web->http_moved("./".(!$target ? "" : "$target/"),HTTP_MOVED_PERMANENTLY); } 1;