# Copyright (C) 2007 Alex Schroeder <alex@emacswiki.org>
#
# 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; either version 2 of the License, or
# (at your option) any later version.
#
# 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
$ModulesDescription .= '<p>$Id: archive.pl,v 1.3 2007/07/04 14:52:44 as Exp $</p>';
push(@MyRules, \&ArchiveRule);
sub ArchiveRule {
if ($bol && m/\G(\<archive>)/cgi) {
my ($id) = @_;
my %years = ();
my %months = ();
my $year_now = (localtime($Now))[5]+1900;
for (AllPagesList()) {
$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:')),
$q->ul(
map {
$year = $_;
$html = "";
$html .= $q->li(ScriptLink('action=calendar;year=' . 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)));
}
}