--- loncom/interface/londocs.pm 2002/10/10 17:17:11 1.25 +++ loncom/interface/londocs.pm 2002/10/16 18:48:12 1.28 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.25 2002/10/10 17:17:11 www Exp $ +# $Id: londocs.pm,v 1.28 2002/10/16 18:48:12 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,15 +29,20 @@ 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; use Apache::lonratsrv; use Apache::lonxml; +use GDBM_File; my $iconpath; +my %hash; + +my $hashtied; + # Mapread read maps into lonratedt::global arrays # @order and @resources, determines status # sets @order - pointer to resources in right order @@ -218,6 +223,23 @@ END return $line; } +# ---------------------------------------------------------------- tie the hash + +sub tiehash { + $hashtied=0; + if ($ENV{'request.course.fn'}) { + if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.".db", + &GDBM_READER(),0640)) { + $hashtied=1; + } + } +} + +sub untiehash { + if ($hashtied) { untie %hash; } + $hashtied=0; +} + # ================================================================ Main Handler sub handler { my $r = shift; @@ -225,6 +247,57 @@ sub handler { $r->send_http_header; return OK if $r->header_only; + + if ($ENV{'form.verify'}) { + + my $loaderror=&Apache::lonnet::overloaderror($r); + if ($loaderror) { return $loaderror; } + + $r->print('<html><head><title>Verify Content</title></head>'. + &Apache::loncommon::bodytag('Verify Course Documents')); + $hashtied=0; + my %alreadyseen=(); + &tiehash(); + foreach (keys %hash) { + if (($_=~/^src\_(.+)$/) && (!$alreadyseen{$hash{$_}})) { + $alreadyseen{$hash{$_}}=1; + my $resid=$1; + $r->rflush(); + if ($hash{$_}) { + my $fn=$hash{$_}; + $r->print('<br /><a href="'.$fn.'" target="cat">'. + ($hash{'title_'.$resid}?$hash{'title_'.$resid}:$fn).'</a> '); + if ($fn=~/^\/res\//) { + my $result=&Apache::lonnet::repcopy( + &Apache::lonnet::filelocation('',$fn)); + if ($result==OK) { + $r->print('<font color="green">ok</font>'); + $r->rflush(); + my $dependencies= + &Apache::lonnet::metadata($hash{$_},'dependencies'); + $r->print('Dependencies: '.$dependencies.'<br />'); + } elsif ($result==HTTP_SERVICE_UNAVAILABLE) { + $r->print( + '<font color="red"><b>connection down</b></font>'); + } elsif ($result==HTTP_NOT_FOUND) { + $r->print('<font color="red"><b>not found</b></font>'); + } else { + $r->print( + '<font color="red"><b>access denied</b></font>'); + } + } + } + } + } + &untiehash(); + } elsif ($ENV{'form.versions'}) { + $r->print('<html><head><title>Check Versions</title></head>'. + &Apache::loncommon::bodytag('Check Course Document Versions')); + $hashtied=0; + &tiehash(); + + &untiehash(); + } else { # is this a standard course? my $standard=($ENV{'request.course.uri'}=~/^\/uploaded\//); @@ -329,7 +402,7 @@ ENDNEWSCRIPT unless ($showdoc) { if ($allowed) { $r->print(<<ENDCOURSEVERIFY); -<form name="courseverify"> +<form action="/adm/coursedocs" method="post" name="courseverify"> <input type="submit" name="verify" value="Verify Content" /> <input type="submit" name="versions" value="Check Resource Versions" /> </form> @@ -512,8 +585,9 @@ ENDSUPFORM $r->print("<h1>Uploaded Document</h1><p>It is recommended that you use an up-to-date virus scanner before handling this file.</p><p><table>". &entryline(0,"Click to download or use your browser's Save Link function",$showdoc).'</table></p>'); } - $r->print('</body></html>'); - return OK; + } + $r->print('</body></html>'); + return OK; } 1;