--- loncom/interface/lonfeedback.pm 2002/10/28 14:00:18 1.36 +++ loncom/interface/lonfeedback.pm 2003/02/17 17:09:27 1.40 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.36 2002/10/28 14:00:18 www Exp $ +# $Id: lonfeedback.pm,v 1.40 2003/02/17 17:09:27 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -226,15 +226,29 @@ sub resource_output { } sub clear_out_html { - my $message=$ENV{'form.comment'}; - $message=~s/\<\/*m\s*\>//g; - $message=~s/\\<\;/g; - $message=~s/\>/\>\;/g; + my ($message,$override)=@_; + my $cid=$ENV{'request.course.id'}; + if (($ENV{"course.$cid.allow_limited_html_in_feedback"} =~ m/yes/i) || + ($override)) { + # allows
','0','0');
+ } elsif ($ENV{'form.deldisc'}) {
+# --------------------------------------------------------------- Hide for good
+ $r->content_type('text/html');
+ $r->send_http_header;
+
+ my $entry=$ENV{'form.deldisc'};
+
+ my ($symb,$idx)=split(/\:\:\:/,$entry);
+ my ($map,$ind,$url)=split(/\_\_\_/,$symb);
+
+ my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+
+
+ my $currentdeleted=$contrib{'deleted'};
+
+ $currentdeleted.='.'.$idx.'.';
+
+ my %newhash=('deleted' => $currentdeleted);
+
+ &Apache::lonnet::store(\%newhash,$symb,$ENV{'request.course.id'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+
+ &redirect_back($r,&Apache::lonnet::clutter($url),
+ 'Changed discussion status ','0','0');
} elsif ($ENV{'form.preview'}) {
# -------------------------------------------------------- User wants a preview
&show_preview($r);
@@ -509,13 +552,18 @@ sub handler {
# Get output from resource
my $usersaw=&resource_output($feedurl);
+# Get resource answer
+ my $useranswer=&Apache::loncommon::get_student_answers(
+ $symb,$ENV{'user.name'},$ENV{'user.domain'},
+ $ENV{'request.course.id'});
+
# Filter HTML out of message (could be nasty)
- my $message=&clear_out_html;
+ my $message=&clear_out_html($ENV{'form.comment'});
# Assemble email
my ($email,$citations)=&assemble_email($feedurl,$message,$prevattempts,
- $usersaw);
-
+ $usersaw,$useranswer);
+
# Who gets this?
my ($typestyle,%to) = &decide_receiver($feedurl);
+ #
+ my %html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1,
+ BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, DIV=>1, IMG=>1);
+
+ $message =~ s/\<(\/?\s*(\w+)[^\>\<]*)/
+ {($html{uc($2)}&(length($1)<1000))?"\<$1":"\<$1"}/ge;
+ $message =~ s/(\\s*(\w+)[^\<\>]*)\>/
+ {($html{uc($2)}&(length($1)<1000))?"$1\>":"$1\>"}/ge;
+ } else {
+ $message=~s/\<\/*m\s*\>//g;
+ $message=~s/\\<\;/g;
+ $message=~s/\>/\>\;/g;
+ }
return $message;
}
sub assemble_email {
- my ($feedurl,$message,$prevattempts,$usersaw)=@_;
+ my ($feedurl,$message,$prevattempts,$usersaw,$useranswer)=@_;
my $email=<<"ENDEMAIL";
Refers to $feedurl
@@ -246,6 +260,8 @@ $prevattempts
Original screen output (if applicable)
$usersaw
+Correct Answer(s) (if applicable)
+$useranswer
ENDCITE
return ($email,$citations);
}
@@ -422,7 +438,7 @@ sub handler {
# --------------------------- Get query string for limited number of parameters
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['hide','unhide','postdata','preview']);
+ ['hide','unhide','deldisc','postdata','preview']);
if (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) {
# ----------------------------------------------------------------- Hide/unhide
@@ -454,6 +470,33 @@ sub handler {
&redirect_back($r,&Apache::lonnet::clutter($url),
'Changed discussion status