--- loncom/interface/lonfeedback.pm 2001/12/19 17:17:46 1.19 +++ loncom/interface/lonfeedback.pm 2002/09/11 13:36:50 1.31 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.19 2001/12/19 17:17:46 albertel Exp $ +# $Id: lonfeedback.pm,v 1.31 2002/09/11 13:36:50 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -39,8 +39,10 @@ # 2/13 Guy Albertelli # 7/25 Gerd Kortemeyer # 7/26 Guy Albertelli -# 7/26,8/10,10/1,11/5,11/6 Gerd Kortemeyer - +# 7/26,8/10,10/1,11/5,11/6,12/27,12/29 Gerd Kortemeyer +# YEAR=2002 +# 1/1,1/16 Gerd Kortemeyer +# package Apache::lonfeedback; @@ -51,6 +53,8 @@ use Apache::loncommon(); sub mail_screen { my ($r,$feedurl,$options) = @_; + my $bodytag=&Apache::loncommon::bodytag('Resource Feedback and Discussion', + '','onLoad="window.focus();"'); $r->print(< @@ -98,9 +102,7 @@ sub mail_screen { } - - -

Feedback

+$bodytag

$feedurl

@@ -195,14 +197,17 @@ sub screen_header { '
'. 'Question/Comment/Feedback about course policy'; } + if ($ENV{'request.course.id'}) { + if (&Apache::lonnet::allowed('pch', + $ENV{'request.course.id'}. + ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) { $options.='
'. 'Contribution to course discussion of resource'; - } - if ($ENV{'request.course.id'}) { $options.='
'. 'Anonymous contribution to course discussion of resource'. ' (name only visible to course faculty)'; + } } return $options; } @@ -255,24 +260,27 @@ sub decide_receiver { } if ($ENV{'form.question'}) { $typestyle.='Submitting as Question
'; - map { + foreach (split(/\,/, + $ENV{'course.'.$ENV{'request.course.id'}.'.question.email'}) + ) { $to{$_}=1; - } split(/\,/, - $ENV{'course.'.$ENV{'request.course.id'}.'.question.email'}); + } } if ($ENV{'form.course'}) { $typestyle.='Submitting as Comment
'; - map { + foreach (split(/\,/, + $ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'}) + ) { $to{$_}=1; - } split(/\,/, - $ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'}); + } } if ($ENV{'form.policy'}) { $typestyle.='Submitting as Policy Feedback
'; - map { + foreach (split(/\,/, + $ENV{'course.'.$ENV{'request.course.id'}.'.policy.email'}) + ) { $to{$_}=1; - } split(/\,/, - $ENV{'course.'.$ENV{'request.course.id'}.'.policy.email'}); + } } return ($typestyle,%to); } @@ -281,16 +289,17 @@ sub send_msg { my ($feedurl,$email,$citations,%to)=@_; my $status=''; my $sendsomething=0; - map { + foreach (keys %to) { if ($_) { + my $declutter=&Apache::lonnet::declutter($feedurl); unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$_), - 'Feedback '.$feedurl,$email,$citations) eq 'ok') { + 'Feedback ['.$declutter.']',$email,$citations) eq 'ok') { $status.='
Error sending message to '.$_.'
'; } else { $sendsomething++; } } - } keys %to; + } my %record=&Apache::lonnet::restore('_feedback'); my ($temp)=keys %record; @@ -309,9 +318,17 @@ sub send_msg { sub adddiscuss { my ($symb,$email,$anon)=@_; my $status=''; + if (&Apache::lonnet::allowed('pch',$ENV{'request.course.id'}. + ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) { + my %contrib=('message' => $email, 'sendername' => $ENV{'user.name'}, - 'senderdomain' => $ENV{'user.domain'}); + 'senderdomain' => $ENV{'user.domain'}, + 'screenname' => $ENV{'environment.screenname'}, + 'plainname' => $ENV{'environment.firstname'}.' '. + $ENV{'environment.middlename'}.' '. + $ENV{'environment.lastname'}.' '. + $ENV{'enrironment.generation'}); if ($anon) { $contrib{'anonymous'}='true'; } @@ -320,6 +337,11 @@ sub adddiscuss { &Apache::lonnet::store(\%contrib,$symb,$ENV{'request.course.id'}, $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); + my %storenewentry=($symb => time); + $status.='
Updating discussion time: '. + &Apache::lonnet::put('discussiontimes',\%storenewentry, + $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, + $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); } my %record=&Apache::lonnet::restore('_discussion'); my ($temp)=keys %record; @@ -327,7 +349,11 @@ sub adddiscuss { my %newrecord=(); $newrecord{'resource'}=$symb; $newrecord{'subnumber'}=$record{'subnumber'}+1; - $status.=' '.&Apache::lonnet::cstore(\%newrecord,'_discussion'); + $status.='
Registering: '. + &Apache::lonnet::cstore(\%newrecord,'_discussion'); + } + } else { + $status.='Failed.'; } return $status.'
'; } @@ -342,16 +368,8 @@ 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 'hide') || ($name eq 'unhide')) { - unless ($ENV{'form.'.$name}) { - $ENV{'form.'.$name}=$value; - } - } - } (split(/&/,$ENV{'QUERY_STRING'})); + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, + ['hide','unhide','postdata']); if (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) { # ----------------------------------------------------------------- Hide/unhide @@ -381,9 +399,8 @@ sub handler { $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); - &redirect_back($r,'/res/'.$url,'Changed discussion status

','0'); - - + &redirect_back($r,&Apache::lonnet::clutter($url), + 'Changed discussion status

','0'); } else { # ------------------------------------------------------------- Normal feedback my $feedurl=$ENV{'form.postdata'}; @@ -392,6 +409,13 @@ sub handler { $feedurl=~s/^$ENV{'HTTP_HOST'}//; my $symb=&Apache::lonnet::symbread($feedurl); + unless ($symb) { + $symb=$ENV{'form.symb'}; + if ($symb) { + my ($map,$id,$url)=split(/\_\_\_/,$symb); + $feedurl=&Apache::lonnet::clutter($url); + } + } my $goahead=1; if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form)$/) { unless ($symb) { $goahead=0; } @@ -408,6 +432,8 @@ sub handler { ) || ($ENV{'request.course.id'} && ($feedurl!~m:^/adm:)) + || + ($ENV{'request.course.id'} && ($symb=~/^bulletin\_\_\_/)) ) { # --------------------------------------------------- Print login screen header unless ($ENV{'form.sendit'}) { @@ -469,7 +495,3 @@ sub handler { 1; __END__ - - - -