--- loncom/interface/lonfeedback.pm 2001/02/09 21:53:08 1.7
+++ loncom/interface/lonfeedback.pm 2001/02/13 18:18:40 1.9
@@ -11,12 +11,15 @@
#
# 3/1,2/3,2/5,2/6,2/8 Gerd Kortemeyer
# 2/9 Guy Albertelli
+# 2/10 Gerd Kortemeyer
+# 2/13 Guy Albertelli
package Apache::lonfeedback;
use strict;
use Apache::Constants qw(:common);
use Apache::lonmsg();
+use Apache::loncommon();
sub mail_screen {
my ($r,$feedurl,$options) = @_;
@@ -85,7 +88,8 @@ sub fail_redirect {
-Sorry, no recipients ...
+
+Sorry, no recipients ...
ENDFAILREDIR
@@ -101,6 +105,7 @@ sub redirect_back {
+
$typestyle
Sent $sendsomething message(s).
$status
@@ -116,18 +121,19 @@ sub no_redirect_back {
ENDNOREDIR
- if ($feedurl ne '/adm/feedback') {
+ if ($feedurl!~/^\/adm\/feedback/) {
$r->print('');
}
- $r->print (<print (<
-Sorry, no feedback possible on this resource ...
+
+Sorry, no feedback possible on this resource ...
-ENDNOREDIR
+ENDNOREDIRTWO
}
sub screen_header {
@@ -139,7 +145,7 @@ sub screen_header {
}
if ($ENV{'course.'.$ENV{'request.course.id'}.'.question.email'}) {
$options.=
- '
Question about resource content';
+ '
Question about resource content';
}
if ($ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'}) {
$options.=
@@ -154,47 +160,6 @@ sub screen_header {
return $options;
}
-sub get_previous_attempt {
- my ($feedurl)=@_;
- my $symb=&Apache::lonnet::symbread($feedurl);
- my $prevattempts='';
- if ($symb) {
- my $answer=&Apache::lonnet::reply(
- "restore:".$ENV{'user.domain'}.':'.$ENV{'user.name'}.':'.
- $ENV{'request.course.id'}.':'.
- &Apache::lonnet::escape($symb),
- $ENV{'user.home'});
- my %returnhash=();
- map {
- my ($name,$value)=split(/\=/,$_);
- $returnhash{&Apache::lonnet::unescape($name)}=
- &Apache::lonnet::unescape($value);
- } split(/\&/,$answer);
- my %lasthash=();
- my $version;
- for ($version=1;$version<=$returnhash{'version'};$version++) {
- map {
- $lasthash{$_}=$returnhash{$version.':'.$_};
- } split(/\:/,$returnhash{$version.':keys'});
- }
- $prevattempts='History | ';
- map {
- $prevattempts.=''.$_.' | ';
- } keys %lasthash;
- for ($version=1;$version<=$returnhash{'version'};$version++) {
- $prevattempts.='Attempt '.$version.' | ';
- map {
- $prevattempts.=''.$returnhash{$version.':'.$_}.' | ';
- } keys %lasthash;
- }
- $prevattempts.='
---|
Current | ';
- map {
- $prevattempts.=''.$lasthash{$_}.' | ';
- } keys %lasthash;
- $prevattempts.='
---|
';
- }
-}
-
sub resource_output {
my ($feedurl) = @_;
my $usersaw=&Apache::lonnet::ssi($feedurl);
@@ -237,26 +202,26 @@ sub decide_receiver {
my $typestyle='';
my %to=();
if ($ENV{'form.author'}) {
- $typestyle.='Author Feedback
';
+ $typestyle.='Submitting as Author Feedback
';
$feedurl=~/^\/res\/(\w+)\/(\w+)\//;
$to{$2.':'.$1}=1;
}
if ($ENV{'form.question'}) {
- $typestyle.='Question
';
+ $typestyle.='Submitting as Question
';
map {
$to{$_}=1;
} split(/\,/,
$ENV{'course.'.$ENV{'request.course.id'}.'.question.email'});
}
if ($ENV{'form.course'}) {
- $typestyle.='Comment
';
+ $typestyle.='Submitting as Comment
';
map {
$to{$_}=1;
} split(/\,/,
$ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'});
}
if ($ENV{'form.policy'}) {
- $typestyle.='Policy
';
+ $typestyle.='Submitting as Policy Feedback
';
map {
$to{$_}=1;
} split(/\,/,
@@ -271,8 +236,8 @@ sub send_msg {
my $sendsomething=0;
map {
if ($_) {
- unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$_),'Feedback '.$feedurl,
- $email,$citations) eq 'ok') {
+ unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$_),
+ 'Feedback '.$feedurl,$email,$citations) eq 'ok') {
$status.='
Error sending message to '.$_.'
';
} else {
#$status.='
Message sent to '.$_.'
';
@@ -285,16 +250,29 @@ sub send_msg {
sub handler {
my $r = shift;
- $r->content_type('text/html');
- $r->send_http_header;
- return OK if $r->header_only;
+ if ($r->header_only) {
+ $r->content_type('text/html');
+ $r->send_http_header;
+ return OK;
+ }
my $feedurl=$ENV{'form.postdata'};
$feedurl=~s/^http\:\/\///;
$feedurl=~s/^$ENV{'SERVER_NAME'}//;
$feedurl=~s/^$ENV{'HTTP_HOST'}//;
+
+ my $symb=&Apache::lonnet::symbread($feedurl);
+ my $goahead=1;
+ if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form)$/) {
+ unless ($symb) { $goahead=0; }
+ }
+
+ if ($goahead) {
+# Go ahead with feedback, no ambiguous reference
+ $r->content_type('text/html');
+ $r->send_http_header;
- if (
+ if (
(
($feedurl=~m:^/res:) && ($feedurl!~m:^/res/adm:)
)
@@ -312,7 +290,9 @@ sub handler {
} else {
# Get previous user input
- my $prevattempts=&get_previous_attempt($feedurl);
+ my $prevattempts=&Apache::loncommon::get_previous_attempt(
+ $symb,$ENV{'user.name'},$ENV{'user.domain'},$ENV{'user.home'},
+ $ENV{'request.course.id'});
# Get output from resource
my $usersaw=&resource_output($feedurl);
@@ -321,7 +301,8 @@ sub handler {
my $message=&clear_out_html;
# Assemble email
- my ($email,$citations)=&assemble_email($feedurl,$message,$prevattempts,$usersaw);
+ my ($email,$citations)=&assemble_email($feedurl,$message,$prevattempts,
+ $usersaw);
# Who gets this?
my ($typestyle,%to) = &decide_receiver($feedurl);
@@ -330,12 +311,16 @@ sub handler {
my ($status,$numsent)=&send_msg($feedurl,$email,$citations,%to);
# Receipt screen and redirect back to where came from
- &redirect_back($r,$feedurl,$typestyle,$status,$numsent);
+ &redirect_back($r,$feedurl,$typestyle,$numsent,$status);
}
- } else {
+ } else {
# Unable to give feedback
&no_redirect_back($r,$feedurl);
+ }
+ } else {
+# Ambiguous Problem Resource
+ $r->internal_redirect('/adm/ambiguous');
}
return OK;
}