Thread Poard: Hilfe gesucht (65 answers)
Opened by Strat at 2007-06-17 17:11

Strat
 2007-06-19 15:43
#91750 #91750
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich hab's gerade getestet und ein klein wenig erweitert
Code: (dl )
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
68
69
#! /usr/bin/perl
use warnings;
use strict;

my $itemsPerPage = 10;

# some tests
&FormatPages( 199, $_, $itemsPerPage ) for 0..20;
&FormatPages( 1 , $_, $itemsPerPage ) for 0..3;
&FormatPages( 211, $_, $itemsPerPage ) for 21..23;
&FormatPages( 218, $_, $itemsPerPage ) for (1,2,4,6,9,14,19,20,22);
&FormatPages( 0 , 0 , $itemsPerPage );
&FormatPages( 130, 20, $itemsPerPage );
&FormatPages( 81, $_, $itemsPerPage ) for (3..8);

sub FormatPages {
my( $max, $act, $itemsPerPage ) = @_;

my $min = 1;

$max = int( 0.99 + $max / $itemsPerPage );
$act = 1 unless $act;

print "IN: Max: $max, Act: $act, Min: $min, ItemsPerPage: $itemsPerPage\n";

# pick pages to link
my @pages = map { { text => $_, link => 1 } }
grep { $_ >= $min && $_ <= $max }
$act-2 .. $act+2;

# may add first page
if( defined $pages[0]->{text} and $pages[0]->{text} > $min ) {
if( $pages[0]->{text} > $min+2 ) {
unshift( @pages,
{ text => $min, link => 1 },
{ text => '...', link => 0 },
);
} # if
else {
unshift( @pages,
{ text => $_, link => 1 }
) for reverse $min .. $pages[0]->{text}-1;
} # else
} # if

# may add last page
if( defined $pages[0]->{text} and $pages[-1]->{text} < $max ) {
if( $pages[-1]->{text} < $max-2 ) {
push( @pages,
{ text => '...', link => 0 },
{ text => $max, link => 1 },
);
} # if
else {
push( @pages,
{ text => $_, link => 1 }
) for $pages[-1]->{text}+1 .. $max;
} # else
} # if

@pages = () if scalar @pages < 2;

# debug output
print "Output: ", join( ' ', map {
$_->{link} ? "L<$_->{text}>" : "'$_->{text}'"
} @pages ), "\n\n";

# return \@pages;
} # FormatPages

und finde, es sieht gut aus. was meint ihr?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Poard: Hilfe gesucht