#!/usr/bin/perl use CGI qw(:standard); # use CGI::Carp qw(fatalsToBrowser); require ("/httpd/htdocs/site.cfg"); require ("/httpd/htdocs/katalog/dir.pm"); $query = new CGI; $database = "datafile.txt"; print $query->header( -type=>'text/html', -charset=>'ISO-8859-2', -expires=>'now'); &get_base; &get_files; &get_nested; &get_paths; &return_html($path); &start_table; &menu_objects; &print_nested; &print_base; &close_all; #----------# POBIERA ZAWARTOSC BAZY #------------# sub get_base { open(DB, $database); @lines = ; close (DB); } #----------# CZYTA KATALOGI ZAGNIEZDZONE #------------# sub get_nested { opendir(DIR, "."); while ($nestdir = readdir(DIR)) { push(@nested,$nestdir) if -d $nestdir && $nestdir !~ /\./; } closedir(DIR); # katalogi zagniezdzone } #----------# GENERUJE ZMIENNE SCIEZKI #------------# sub get_paths { use Cwd; $path = cwd; # oddaje samą ściezkę wewnątrz katalogu $path =~ s/$path_dir\///; @path = split(/\//,$path); # oczyszcza ścieżkę z pseudo-spacji $clean_path = $path; $clean_path =~ s/_/ /g; @clean_path = split(/\//,$clean_path); # czyszczenie do tytułu $clean_path =~ s/\//: /g; $title = "Katalog: $clean_path"; # zwraca ostatni katalog w ciągu ściezki $last_dir = $clean_path[$#clean_path]; # nieaktywna wersja językowa katalogu #$lng = $ENV{'QUERY_STRING'}; } sub tree_path { print "   Brama >\n Katalog >\n"; $num = 0; foreach (@path) { print " "; print "$clean_path[$num] >\n"; $longpath .= "/$path[$num]"; $num++; } print " \n"; } #--------------# KOLEJNOSC MENU #--------------# sub menu_objects { #print "\n \n"; &give_last_added; if (@lines) { &last_added_here; } &searcher; #print "\n \n
\n"; #------------# STARTUJE ZAWARTOSC #-------------# print "\n"; &tree_path; print "

  $last_dir

\n"; } #----------# KATALOGI ZAGNIEZDZONE #------------# sub print_nested { if (@nested) { @nested = sort(@nested); print< Kategorie \n \n
    \n\n"; } } if (@lines) { print<
    Strony EOF } print "\n\n"; } print "
    \n" unless (@nested); print @include; } #----------# WYDRUK REKORDOW BAZY #------------# sub print_base { print "\n
      \n"; @lines = reverse sort @lines; foreach (@lines) { chomp; ($time,$url,$name,$desc,$lang,$worth) = split(/\|/); &humantime; print "\n\n
    1. \n $name"; if ($worth) { print "\"Szczególnie"; } print "
      \n
      $desc
      \n ". "$url
      \n ". "$lang, $my_czas

      ". "
      "; } } #----------# ZAMYKANIE STRONY - STOPKA #------------# sub close_all { print @seealso; print @header3; } #----------# PODRZEDNE FUNKCJE #------------# ############# OSTATNIO DODANO W KATALOGU sub give_last_added { if (-e "$path_dir/last.dat") { @last_added = &open_file("$path_dir/last.dat"); &menu_cell; ($time,$url,$name,$desc,$lang,$lpath) = split(/\|/,$last_added[0]); &humantime($time); print< Najnowsze

      $name:
      $desc, $lang, $my_czas

      EOF } } ############# OSTATNIE W TYM DZIALE sub last_added_here { ($time,$url,$name,$desc,$lang,$worth) = split(/\|/,$lines[$#lines]); &humantime; #&menu_cell; print< ... w dziale
      $name: $desc, $lang, $my_czas

      \n"; } sub open_file { open(FILE, $_[0]) || die "Cannot read: $_[0] = $! "; my @file = ; close(FILE); return @file; } ############# SPRAWDZA ZAGNIEZDZONE sub check_nested { my @subdirs; opendir(DIR, $_[0]); while ($_ = readdir(DIR)) { if (-d "$_[0]/$_" && $_ !~ /\./ && $_ !~ "admin") { push(@subdirs,$_) } else {} } closedir(DIR); return @subdirs; } ############# NAGLOWEK KOMORKI W MENU sub menu_cell { print< EOF } ############# CZAS UNIX NA LUDZKI sub humantime { # Parsing human time values @my_czas = localtime($time); # $my_czas[3]++; $my_czas[4]++; if (length($my_czas[4]) == 1) { $my_czas[4] = "0$my_czas[4]" } $my_czas[5] += +1900; $my_czas = "$my_czas[3]. $my_czas[4]. $my_czas[5]"; #print $my_czas; } ############# KROI ZA DŁUGIE LINKI sub too_long { if (length($_[0]) > 35) { $_[0] =~ s/([a-zA-Z_]+)(\/)([a-zA-Z_]+)/$1$2
      $3/g; } return $_[0]; }