--- loncom/interface/londocs.pm 2002/09/13 20:01:04 1.23
+++ loncom/interface/londocs.pm 2002/10/18 13:47:57 1.32
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.23 2002/09/13 20:01:04 www Exp $
+# $Id: londocs.pm,v 1.32 2002/10/18 13:47:57 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -29,15 +29,21 @@
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;
+my %alreadyseen=();
+
# Mapread read maps into lonratedt::global arrays
# @order and @resources, determines status
# sets @order - pointer to resources in right order
@@ -218,6 +224,60 @@ 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;
+}
+
+# --------------------------------------------------------------- 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;
@@ -225,6 +285,109 @@ 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('
File | Modification Date | +Version | Differences |
---|---|---|---|
'.$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')).
+ ') '); + } + $r->print(' |
No content modifications yet.
'); + } + &untiehash(); + } else { # is this a standard course? my $standard=($ENV{'request.course.uri'}=~/^\/uploaded\//); @@ -327,9 +490,18 @@ ENDNEWSCRIPT $r->print(''. &Apache::loncommon::bodytag('Course Documents','',$events)); unless ($showdoc) { + if ($allowed) { + $r->print(<Main Course Documents'); my $folder=$ENV{'form.folder'}; unless ($folder=~/^default/) { $folder='default'; } &editor($r,$coursenum,$coursedom,$folder,$allowed); @@ -417,11 +589,12 @@ value="$plainname=/adm/$udom/$uname/abou |
It is recommended that you use an up-to-date virus scanner before handling this file.