--- /tmp/archive.pl 2007-07-04 17:25:57.219459076 +0200 +++ archive.pl 2007-07-04 19:14:01.883782862 +0200 @@ -25,21 +25,36 @@ sub NewArchiveGetHeader { my ($id) = @_; print OldArchiveGetHeader(@_); - my %dates = (); + my %years = (); + my %months = (); + my $year_now = (localtime($Now))[5]+1900; for (AllPagesList()) { - $dates{$1} = 1 if /^(\d\d\d\d-\d\d)-\d\d/; + $months{$1}++ if /^$year_now-(\d\d)-\d\d/; + $years{$1}++ if /^(\d\d\d\d)-\d\d-\d\d/; } + print $q->div({-class=>'archive'}, $q->p($q->span(T('Archive:')), - map { - my ($year, $month) = split(/-/, $_); - if (defined(&month_name)) { - ScriptLink('action=collect;match=' . UrlEncode("^$year-$month"), - month_name($month) . ' ' . $year); - } else { - ScriptLink('action=index;match=' . UrlEncode("^$year-$month"), - "$year-$month"); - } - } sort keys %dates)); + $q->ul( + map { + $year = $_; + $html = ""; + $html .= $q->li(ScriptLink('action=collect;match=' . UrlEncode("^$year"), $year)); + if ($year == $year_now) { + $html .= $q->ul( + map { + $month = $_; + if (defined(&month_name)) { + $q->li(ScriptLink('action=collect;match=' . UrlEncode("^$year-$month"), + month_name($month))); + } else { + $q->li(ScriptLink('action=index;match=' . UrlEncode("^$year-$month"), + "$month")); + } + + } reverse sort keys %months); + } + $html; + } reverse sort keys %years))); return ''; }