# #
# File: shared/Template/Archive.pm #
# #
-# Authors: Frank Schoenmann <fs@tower.de>, 2001-06-04 #
+# Authors: André Malo <nd@o3media.de> #
+# Frank Schönmann <fs@tower.de> #
# #
# Description: archive display #
# #
################################################################################
use strict;
+use vars qw(
+ @EXPORT
+);
-use Lock qw(:READ);
+use Lock;
use Encode::Posting;
use Encode::Plain; $Encode::Plain::utf8 = 1;
use Posting::_lib qw(
use Template::_conf;
use Template::_thread;
+################################################################################
+#
+# Version check
+#
+# last modified:
+# $Date$ (GMT)
+# by $Author$
+#
+sub VERSION {(q$Revision$ =~ /([\d.]+)\s*$/)[0] or '0.0'}
+
################################################################################
#
# Export
#
use base qw(Exporter);
-@Template::Archive::EXPORT = qw(
+@EXPORT = qw(
+ print_overview_as_HTML
+ print_year_as_HTML
print_month_as_HTML
print_thread_as_HTML
);
+### print_overview_as_HTML () ##################################################
+#
+# archive entry
+#
+# Params: $arcdir main archive directory
+# $tempfile template filename
+# $param hash reference
+# Return: -none-
+#
+sub print_overview_as_HTML($$$) {
+ my ($arcdir, $tempfile, $param) = @_;
+
+ my $assign = $param->{'assign'};
+
+ my $template = new Template $tempfile;
+
+ #
+ # archiveDocStart
+ #
+ print ${$template->scrap(
+ $assign->{'archiveDocStart'}
+ )};
+
+ #
+ # globbing to find year directories
+ #
+ for (<$arcdir????>) {
+ s/$arcdir//;
+ print ${$template->scrap(
+ $assign->{'archiveDocEntry'},
+ {
+ $assign->{'year'} => $_
+ }
+
+ )};
+ }
+
+# for (my $month = 1; $month <= 12; $month++) {
+# if (-e $yeardir.$month.'/') {
+# print ${$template->scrap(
+# $assign->{'yearDocEntry'},
+# {
+# $assign->{'year'} => $param->{'year'},
+# $assign->{'month'} => $month,
+# $assign->{'monthName'} => month($month)
+# }
+# )};
+# }
+# }
+
+ #
+ # archiveDocEnd
+ #
+ print ${$template->scrap(
+ $assign->{'archiveDocEnd'}
+ )};
+}
### print_year_as_HTML () ######################################################
#
# yearly overview over months
#
-# Params:
+# Params: $yeardir directory, which contains month directories
# $tempfile template filename
# $param hash reference
# Return: -none-
#
+sub print_year_as_HTML($$$) {
+ my ($yeardir, $tempfile, $param) = @_;
+
+ my $assign = $param->{'assign'};
+
+ my $template = new Template $tempfile;
+
+ #
+ # check if this year's archive exist
+ #
+ unless (-e $yeardir) {
+ print ${$template->scrap(
+ $assign->{'error'},
+ {
+ $assign->{'errorText'} => "Es existieren keine Nachrichten für dieses Jahr."
+ }
+ )};
+ }
+
+ my $tmplparam = {
+ $assign->{'year'} => $param->{'year'},
+ };
+
+ #
+ # yearDocStart
+ #
+ print ${$template->scrap(
+ $assign->{'yearDocStart'},
+ $tmplparam
+ )};
+ for (my $month = 1; $month <= 12; $month++) {
+ if (-e $yeardir.$month.'/') {
+ print ${$template->scrap(
+ $assign->{'yearDocEntry'},
+ {
+ $assign->{'year'} => $param->{'year'},
+ $assign->{'month'} => $month,
+ $assign->{'monthName'} => month($month)
+ }
+ )};
+ }
+ }
+
+ #
+ # yearDocEnd
+ #
+ print ${$template->scrap(
+ $assign->{'yearDocEnd'},
+ $tmplparam
+ )};
+}
### print_month_as_HTML () #####################################################
#
#
sub print_month_as_HTML($$$) {
my ($mainfile, $tempfile, $param) = @_;
+ my $main = new Lock($mainfile);
my $assign = $param->{'assign'};
my $template = new Template $tempfile;
- my ($threads, $locked);
- unless ($locked = lock_file($mainfile) and $threads = get_all_threads($mainfile, KILL_DELETED)) {
+ #
+ # check if XML file exists
+ #
+ unless (-f $main->filename) {
print ${$template->scrap(
- $assign->{'errorLocking'}
+ $assign->{'error'},
+ {
+ $assign->{'errorText'} => "Es existieren keine Nachrichten für diesen Monat."
+ }
)};
return;
}
- unlock_file($mainfile);
+
+ #
+ # try locking and read/parse threads
+ #
+ my $threads;
+ unless ($main->lock (LH_SHARED) and $threads = get_all_threads($mainfile, KILL_DELETED)) {
+ print ${$template->scrap(
+ $assign->{'error'},
+ {
+ $assign->{'errorText'} => "Fehler beim Locking."
+ }
+ )};
+ return;
+ }
+ $main -> unlock;
my $tmplparam = {
$assign->{'year'} => $param->{'year'},
#
# thread overview
#
- for (sort keys %$threads) {
+ for (sort {$a <=> $b} keys %$threads) {
print ${$template->scrap(
$assign->{'monthThreadEntry'},
{
$assign->{'monthDocEnd'},
$tmplparam
)};
-
-
}
### print_thread_as_HTML () ####################################################
my $template = new Template $tempfile;
+ #
+ # check if XML file exists
+ #
+ unless (-f $mainfile) {
+ print ${$template->scrap(
+ $assign->{'error'},
+ {
+ $assign->{'errorText'} => "Der gewünschte Thread existiert nicht."
+ }
+ )};
+ return;
+ }
+
my $view = get_view_params ({
'adminDefault' => $param->{'adminDefault'}
});
print ${$template->scrap(
$assign->{'threadDocStart'},
- $tmplparam
+ $tmplparam,
+ 1
)};
#
my $header = get_message_header($mnode);
my $body = get_message_body($xml, 'm'.$_->{'mid'});
- my $text = message_field (
+ my $text = message_field(
$body,
{
'quoteChars' => plain($view->{'quoteChars'}),
$assign->{'msgCategory'} => plain($header->{'category'}),
$assign->{'msgSubject'} => plain($header->{'subject'}),
$assign->{'msgBody'} => $text
- }
+ },
+ 1
)};
}
#
print ${$template->scrap(
$assign->{'threadDocEnd'},
- $tmplparam
+ $tmplparam,
+ 1
)};
}
-# keep require happy
+# keep 'require' happy
1;
#
#
-### end of Template::Archive ###################################################
+### end of Template::Archive ###################################################
\ No newline at end of file