--- loncom/interface/londocs.pm 2002/10/15 20:50:19 1.27
+++ loncom/interface/londocs.pm 2002/11/18 15:21:31 1.37
@@ -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.37 2002/11/18 15:21:31 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
@@ -126,6 +127,18 @@ sub editor {
$Apache::lonratedt::order[$idx+1]=
$Apache::lonratedt::order[$idx];
$Apache::lonratedt::order[$idx]=$i;
+ } elsif ($cmd eq 'rename') {
+ my ($rtitle,@rrest)=split(/\:/,
+ $Apache::lonratedt::resources[
+ $Apache::lonratedt::order[$idx]]);
+ my $comment=$ENV{'form.title'};
+ $comment=~s/\\<\;/g;
+ $comment=~s/\>/\>\;/g;
+ $comment=~s/\:/\:/g;
+ $Apache::lonratedt::resources[
+ $Apache::lonratedt::order[$idx]]=
+ $comment.':'.join(':',@rrest);
+
}
# Store the changed version
&storemap($coursenum,$coursedom,$folder.'.sequence');
@@ -160,7 +173,7 @@ sub editor {
foreach (@Apache::lonratedt::order) {
my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]);
unless ($name) { $name=(split(/\//,$url))[-1]; }
- unless ($name) { $name='EMPTY'; }
+ unless ($name) { $name='NO RESOURCE'; $url='/adm/notfound.html'; }
$r->print(&entryline($idx,$name,$url,$folder,$allowed));
$idx++;
}
@@ -182,7 +195,10 @@ sub entryline {
 |
-Remove |
+
+Remove
+
+Rename
END
}
# Figure out what kind of a resource this is
@@ -240,6 +256,70 @@ 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();
+ 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)));
+ 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 +336,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 +350,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
+
+
+File | Modification Date |
+Version | Differences |
+ENDHEADERS
+ foreach (keys %changes) {
+ if ($changes{$_}>$starttime) {
+ my ($root,$extension)=($_=~/^(.*)\.(\w+)$/);
+ my $currentversion=&Apache::lonnet::getversion($_);
+ my $linkurl=&Apache::lonnet::clutter($_);
+ $r->print(
+ ''.$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(' |
');
+ }
+ }
+ $r->print('
');
+ } else {
+ $r->print('No content modifications yet.
');
+ }
&untiehash();
} else {
# is this a standard course?
@@ -390,7 +532,22 @@ function finishpick() {
('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+
'";this.document.forms.'+form+'.submit();');
}
+
+function changename(folder,index,oldtitle) {
+ var title=prompt('New Title',oldtitle);
+ if (title) {
+ this.document.forms.renameform.title.value=title;
+ this.document.forms.renameform.cmd.value='rename_'+index;
+ this.document.forms.renameform.folder.value=folder;
+ this.document.forms.renameform.submit();
+ }
+}
+
ENDNEWSCRIPT
}
# -------------------------------------------------------------------- Body tag