--- loncom/interface/londocs.pm 2002/09/04 19:24:46 1.18 +++ 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.18 2002/09/04 19:24:46 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 @@ -211,12 +216,30 @@ END $foldertitle; } if ($isfolder) { $url.='&foldername='.$foldertitle; } - $line.=''. - "$title"; + "$title"; 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; @@ -224,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('Verify Content'. + &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('
'. + ($hash{'title_'.$resid}?$hash{'title_'.$resid}:$fn).' '); + if ($fn=~/^\/res\//) { + my $result=&Apache::lonnet::repcopy( + &Apache::lonnet::filelocation('',$fn)); + if ($result==OK) { + $r->print('ok'); + $r->rflush(); + my $dependencies= + &Apache::lonnet::metadata($hash{$_},'dependencies'); + $r->print('Dependencies: '.$dependencies.'
'); + } elsif ($result==HTTP_SERVICE_UNAVAILABLE) { + $r->print( + 'connection down'); + } elsif ($result==HTTP_NOT_FOUND) { + $r->print('not found'); + } else { + $r->print( + 'access denied'); + } + } + } + } + } + &untiehash(); + } elsif ($ENV{'form.versions'}) { + $r->print('Check Versions'. + &Apache::loncommon::bodytag('Check Course Document Versions')); + $hashtied=0; + &tiehash(); + + &untiehash(); + } else { # is this a standard course? my $standard=($ENV{'request.course.uri'}=~/^\/uploaded\//); @@ -232,9 +306,13 @@ sub handler { my $script=''; my $allowed; my $events=''; + my $showdoc=0; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['folder','foldername','showdoc']); - unless ($ENV{'form.showdoc'}) { # got called from remote + ['folder','foldername']); + if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { + $showdoc=$1; + } + unless ($showdoc) { # got called from remote $forcestandard=($ENV{'form.folder'}=~/^default_/); $forcesupplement=($ENV{'form.folder'}=~/^supplemental_/); @@ -246,9 +324,7 @@ sub handler { } } else { # got called in sequence from course $allowed=0; - $forcestandard=1; - $forcesupplement=0; - $script=&Apache::lonxml::registerurl(1,undef); + $script=''.&Apache::lonxml::registerurl(1,undef).' +ENDDOCUMENT + if ($allowed) { + $r->print(< function makenewfolder(targetform,folderseq) { var foldername=prompt('Name of New Folder','New Folder'); if (foldername) { @@ -289,6 +371,20 @@ function makenewext(targetname) { window.open('/adm/rat/extpickframe.html'); } +function makesmppage() { + var title=prompt('Listed Title for the Page'); + this.document.forms.newsmppg.importdetail.value= + title+'=/adm/$udom/$uname/$now/smppg'; + this.document.forms.newsmppg.submit(); +} + +function makebulboard() { + var title=prompt('Listed Title for the Bulletin Board'); + this.document.forms.newbul.importdetail.value= + title+'=/adm/$udom/$uname/$now/bulletinboard'; + this.document.forms.newbul.submit(); +} + function finishpick() { var title=this.document.forms.extimport.title.value; var url=this.document.forms.extimport.url.value; @@ -298,12 +394,24 @@ function finishpick() { '";this.document.forms.'+form+'.submit();'); } - -ENDDOCUMENT -$r->print(&Apache::loncommon::bodytag('Course Documents','',$events)); +ENDNEWSCRIPT + } +# -------------------------------------------------------------------- Body tag + $r->print(''. + &Apache::loncommon::bodytag('Course Documents','',$events)); + unless ($showdoc) { + if ($allowed) { + $r->print(< + + + +ENDCOURSEVERIFY + } # --------------------------------------------------------- Standard documents + $r->print(''); if (($standard) && ($allowed) && (!$forcesupplement)) { - $r->print('

Main Course Documents

'); + $r->print('

Main Course Documents

'); my $folder=$ENV{'form.folder'}; unless ($folder=~/^default/) { $folder='default'; } &editor($r,$coursenum,$coursedom,$folder,$allowed); @@ -361,9 +469,25 @@ value="Syllabus=/public/$coursedom/$cour
+ + - + +
+
+ + + + +
+
+ + + +
@@ -375,11 +499,12 @@ value="$plainname=/adm/$udom/$uname/abou
ENDFORM - $r->print('
'); + $r->print(''); } # ----------------------------------------------------- Supplemental documents if (!$forcestandard) { - $r->print('

Supplemental Course Documents

'); + $r->print( + '

Supplemental Course Documents

'); my $folder=$ENV{'form.folder'}; unless ($folder=~/supplemental/) { $folder='supplemental'; } &editor($r,$coursenum,$coursedom,$folder,$allowed); @@ -447,15 +572,22 @@ value="$plainname=/adm/$udom/$uname/abou - + ENDSUPFORM } } if ($allowed) { $r->print('
'); } - $r->print(''); - return OK; + $r->print(''); + } else { +# -------------------------------------------------------- This is showdoc mode + $r->print("

Uploaded Document

It is recommended that you use an up-to-date virus scanner before handling this file.

". + &entryline(0,"Click to download or use your browser's Save Link function",$showdoc).'

'); + } + } + $r->print(''); + return OK; } 1;