--- loncom/interface/londocs.pm 2002/10/15 20:50:19 1.27 +++ loncom/interface/londocs.pm 2002/10/20 18:42:53 1.34 @@ -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.34 2002/10/20 18:42:53 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,75 @@ 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(); + &Apache::lonnet::countacc($url); + $url=~/\.(\w+)$/; + if (&Apache::loncommon::fileembstyle($1) eq 'ssi') { + $r->print('
'); + $r->rflush(); + my $default=''; + if ($1=~/(problem|exam|quiz|assess|survey|form|library)/) { + $default=&Apache::lonnet::getfile( + '/home/httpd/html/res/adm/includes/default_homework.lcpm'); + } + for (my $i=0;$i<=$level*5;$i++) { + $r->print(' '); + } + $r->print('- Rendering: '); + &Apache::lonxml::xmlparse($r,'web', + &Apache::lonnet::getfile( + &Apache::lonnet::filelocation('',$url)),$default); + if (($Apache::lonxml::errorcount) || + ($Apache::lonxml::warningcount)) { + if ($Apache::lonxml::errorcount) { + $r->print(''. + $Apache::lonxml::errorcount.' error(s) '); + } + if ($Apache::lonxml::warningcount) { + $r->print(''. + $Apache::lonxml::warningcount.' warning(s)'); + } + } else { + $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; @@ -256,34 +326,12 @@ sub handler { $r->print('Verify Content'. &Apache::loncommon::bodytag('Verify Course Documents')); $hashtied=0; + undef %alreadyseen; + %alreadyseen=(); &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(); @@ -292,7 +340,91 @@ sub handler { &Apache::loncommon::bodytag('Check Course Document Versions')); $hashtied=0; &tiehash(); - + my %changes=&Apache::lonnet::dump + ('versionupdate',$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, + $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); + my $firstkey=(keys %changes)[0]; + unless ($firstkey=~/^error\:/) { + unless ($ENV{'form.timerange'}) { + $ENV{'form.timerange'}=604800; + } + my $seltext='during the last '.$ENV{'form.timerange'}.' seconds'; + my $startsel=''; + my $monthsel=''; + my $weeksel=''; + my $daysel=''; + if ($ENV{'form.timerange'}==-1) { + $seltext='since start of course'; + $startsel='selected'; + $ENV{'form.timerange'}=time; + } + my $starttime=time-$ENV{'form.timerange'}; + if ($ENV{'form.timerange'}==2592000) { + $seltext='during the last month ('.localtime($starttime).')'; + $monthsel='selected'; + } elsif ($ENV{'form.timerange'}==604800) { + $seltext='during the last week ('.localtime($starttime).')'; + $weeksel='selected'; + } elsif ($ENV{'form.timerange'}==86400) { + $seltext='since yesterday ('.localtime($starttime).')'; + $daysel='selected'; + } + + $r->print(< + + + +

Content changed $seltext

+ + + + +ENDHEADERS + foreach (keys %changes) { + if ($changes{$_}>$starttime) { + my ($root,$extension)=($_=~/^(.*)\.(\w+)$/); + my $currentversion=&Apache::lonnet::getversion($_); + my $linkurl=&Apache::lonnet::clutter($_); + $r->print( + ''. + ''); + } + } + $r->print('
FileModification DateVersionDifferences
'.$linkurl. + ''. + localtime($changes{$_}).''.$currentversion.''); + my $lastold=1; + for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) { + my $url=$root.'.'.$prevvers.'.'.$extension; + if (&Apache::lonnet::metadata($url,'lastrevisiondate')< + $starttime) { + $lastold=$prevvers; + } + } + for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { + my $url=$root.'.'.$prevvers.'.'.$extension; + $r->print('Version '.$prevvers.' ('. + localtime(&Apache::lonnet::metadata($url,'lastrevisiondate')). + ')'); + if (&Apache::loncommon::fileembstyle($extension) eq 'ssi') { + $r->print(' Diffs'); + } + $r->print('
'); + } + $r->print('
'); + } else { + $r->print('

No content modifications yet.

'); + } &untiehash(); } else { # is this a standard course?