--- /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 '';
}