--- loncom/interface/londocs.pm 2002/10/15 20:50:19 1.27
+++ loncom/interface/londocs.pm 2002/10/16 19:15:55 1.29
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.27 2002/10/15 20:50:19 www Exp $
+# $Id: londocs.pm,v 1.29 2002/10/16 19:15:55 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -29,7 +29,7 @@
package Apache::londocs;
use strict;
-use Apache::Constants qw(:common);
+use Apache::Constants qw(:common :http);
use Apache::lonnet;
use Apache::loncommon;
use Apache::lonratedt;
@@ -42,6 +42,7 @@ my $iconpath;
my %hash;
my $hashtied;
+my %alreadyseen=();
# Mapread read maps into lonratedt::global arrays
# @order and @resources, determines status
@@ -240,6 +241,43 @@ sub untiehash {
$hashtied=0;
}
+# --------------------------------------------------------------- check on this
+
+sub checkonthis {
+ my ($r,$url,$level,$title)=@_;
+ $alreadyseen{$url}=1;
+ $r->rflush();
+ if ($url) {
+ $r->print('
');
+ for (my $i=0;$i<=$level*5;$i++) {
+ $r->print(' ');
+ }
+ $r->print(''.
+ ($title?$title:$url).' ');
+ if ($url=~/^\/res\//) {
+ my $result=&Apache::lonnet::repcopy(
+ &Apache::lonnet::filelocation('',$url));
+ if ($result==OK) {
+ $r->print('ok');
+ $r->rflush();
+ my $dependencies=
+ &Apache::lonnet::metadata($url,'dependencies');
+ foreach (split(/\,/,$dependencies)) {
+ if (($_=~/^\/res\//) && (!$alreadyseen{$_})) {
+ &checkonthis($r,$_,$level+1);
+ }
+ }
+ } elsif ($result==HTTP_SERVICE_UNAVAILABLE) {
+ $r->print('connection down');
+ } elsif ($result==HTTP_NOT_FOUND) {
+ $r->print('not found');
+ } else {
+ $r->print('access denied');
+ }
+ }
+ }
+}
+
# ================================================================ Main Handler
sub handler {
my $r = shift;
@@ -258,32 +296,8 @@ sub handler {
$hashtied=0;
&tiehash();
foreach (keys %hash) {
- if ($_=~/^src\_(.+)$/) {
- my $resid=$1;
- $r->rflush();
- if ($hash{$_}) {
- my $fn=$hash{$_};
- $r->print('
'.
- ($hash{'title_'.$resid}?$hash{'title_'.$resid}:$fn).' ');
- if ($fn=~/^\/res\//) {
- my $result=&Apache::lonnet::repcopy($fn);
- if ($result eq OK) {
- $r->print('ok');
- $r->rflush();
- my $dependencies=
- &Apache::lonnet::metadata($_,'dependencies');
- $r->print('Dependencies: '.$dependencies.'
');
- } elsif ($result eq HTTP_SERVICE_UNAVAILABLE) {
- $r->print(
- 'connection down');
- } elsif ($result eq HTTP_NOT_FOUND) {
- $r->print('not found');
- } else {
- $r->print(
- 'access denied');
- }
- }
- }
+ if (($_=~/^src\_(.+)$/) && (!$alreadyseen{$hash{$_}})) {
+ &checkonthis($r,$hash{$_},0,$hash{'title_'.$1});
}
}
&untiehash();