--- loncom/publisher/londiff.pm 2001/12/04 15:34:57 1.6 +++ loncom/publisher/londiff.pm 2003/08/13 15:20:11 1.12 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to show differences between file versions # -# $Id: londiff.pm,v 1.6 2001/12/04 15:34:57 albertel Exp $ +# $Id: londiff.pm,v 1.12 2003/08/13 15:20:11 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -41,6 +41,8 @@ # 03/31,04/03 Gerd Kortemeyer) # # 05/02/01,05/09 Gerd Kortemeyer +# +### package Apache::londiff; @@ -50,6 +52,8 @@ use File::Copy; use Algorithm::Diff qw(diff); use Apache::Constants qw(:common :http :methods); use Apache::loncacc; +use Apache::lonnet(); +use Apache::loncommon(); sub handler { @@ -57,24 +61,18 @@ sub handler { # Get query string for limited number of parameters - map { - my ($name, $value) = split(/=/,$_); - $value =~ tr/+/ /; - $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - if (($name eq 'filename') || ($name eq 'versiontwo') || - ($name eq 'versionone')) { - unless ($ENV{'form.'.$name}) { - $ENV{'form.'.$name}=$value; - } - } - } (split(/&/,$ENV{'QUERY_STRING'})); - + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, + ['filename','versiontwo','versionone']); # Get the files my $cuname=$ENV{'user.name'}; my $cudom=$ENV{'user.domain'}; - unless (($cuname,$cudom)= + if ($ENV{'form.filename'}=~/^\/res\//) { + ($cudom,$cuname,$ENV{'form.filename'})= + ($ENV{'form.filename'}=~/^\/res\/(\w+)\/(\w+)\/(.*)$/); + } else { + unless (($cuname,$cudom)= &Apache::loncacc::constructaccess($ENV{'form.filename'}, $r->dir_config('lonDefDomain'))) { $r->log_reason($cuname.' at '.$cudom. @@ -82,6 +80,7 @@ sub handler { ' - not authorized', $r->filename); return HTTP_NOT_ACCEPTABLE; + } } my $efn=$ENV{'form.filename'}; @@ -96,7 +95,7 @@ sub handler { $r->print('
');
if ($ENV{'form.versionone'} eq 'priv') {
my $fn='/home/'.$cuname.'/public_html/'.$efn;
if (-e $fn) {
@@ -119,22 +119,22 @@ sub handler {
$f1[$#f1+1]=$line;
}
}
- $r->print('Construction Space Version
');
+ $r->print('Construction Space Version');
} else {
my $fn=
'/home/httpd/html//res/'.$cudom.'/'.$cuname.'/';
if ($ENV{'form.versionone'}) {
my ($main,$suffix)=($efn=~/^(.+)\.(\w+)$/);
$fn.=$main.'.'.$ENV{'form.versionone'}.'.'.$suffix;
- $r->print('Version '.$ENV{'form.versionone'}.'
');
+ $r->print('Version '.$ENV{'form.versionone'}.'');
} else {
$fn.=$efn;
- $r->print('Current Version
');
+ $r->print('Current Version');
}
@f1=split(/\n/,&Apache::lonnet::getfile($fn));
}
- $r->print('versus');
+ $r->print('
versus
');
if ($ENV{'form.versiontwo'} eq 'priv') {
my $fn='/home/'.$cuname.'/public_html/'.$efn;
@@ -146,21 +146,21 @@ sub handler {
$f2[$#f2+1]=$line;
}
}
- $r->print('Construction Space Version
');
+ $r->print('Construction Space Version');
} else {
my $fn=
'/home/httpd/html/res/'.$cudom.'/'.$cuname.'/';
if ($ENV{'form.versiontwo'}) {
my ($main,$suffix)=($efn=~/^(.+)\.(\w+)$/);
$fn.=$main.'.'.$ENV{'form.versiontwo'}.'.'.$suffix;
- $r->print('Version '.$ENV{'form.versiontwo'}.'
');
+ $r->print('Version '.$ENV{'form.versiontwo'}.'');
} else {
$fn.=$efn;
- $r->print('Current Version
');
+ $r->print('Current Version');
}
@f2=split(/\n/,&Apache::lonnet::getfile($fn));
}
-
+ $r->print('