#                                                                              #
 # File:        shared/Template/Archive.pm                                      #
 #                                                                              #
-# Authors:     Frank Schoenmann <fs@tower.de>, 2001-06-08                      #
+# 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-
 
     my $tmplparam = {
             $assign->{'year'}           => $param->{'year'},
-#           $assign->{'month'}          => $param->{'month'},
-#           $assign->{'monthName'}      => month($param->{'month'})
     };
 
     #
 #
 sub print_month_as_HTML($$$) {
     my ($mainfile, $tempfile, $param) = @_;
+    my $main = new Lock($mainfile);
 
     my $assign = $param->{'assign'};
 
     #
     # check if XML file exists
     #
-    unless (-e $mainfile) {
+    unless (-f $main->filename) {
         print ${$template->scrap(
             $assign->{'error'},
             {
     #
     # try locking and read/parse threads
     #
-    my ($threads, $locked);
-    unless ($locked = lock_file($mainfile) and $threads = get_all_threads($mainfile, KILL_DELETED)) {
+    my $threads;
+    unless ($main->lock (LH_SHARED) and $threads = get_all_threads($mainfile, KILL_DELETED)) {
         print ${$template->scrap(
             $assign->{'error'},
             {
         )};
         return;
     }
-    unlock_file($mainfile);
+    $main -> unlock;
 
     my $tmplparam = {
             $assign->{'year'}           => $param->{'year'},
         $assign->{'monthDocEnd'},
         $tmplparam
     )};
-
-
 }
 
 ### print_thread_as_HTML () ####################################################
     #
     # check if XML file exists
     #
-    unless (-e $mainfile) {
+    unless (-f $mainfile) {
         print ${$template->scrap(
             $assign->{'error'},
             {
 }
 
 
-# keep require happy
+# keep 'require' happy
 1;
 
 #
 #
-### end of Template::Archive ###################################################
+### end of Template::Archive ###################################################
\ No newline at end of file