--- loncom/interface/lonfeedback.pm 2003/08/06 17:00:30 1.50 +++ loncom/interface/lonfeedback.pm 2003/09/19 16:12:50 1.61 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.50 2003/08/06 17:00:30 albertel Exp $ +# $Id: lonfeedback.pm,v 1.61 2003/09/19 16:12:50 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -52,10 +52,129 @@ use Apache::lonmsg(); use Apache::loncommon(); use Apache::lontexconvert(); +sub list_discussion { + my ($mode,$status,$symb)=@_; + my $discussiononly=0; + if ($mode eq 'board') { $discussiononly=1; } + unless ($ENV{'request.course.id'}) { return ''; } + my $crs='/'.$ENV{'request.course.id'}; + if ($ENV{'request.course.sec'}) { + $crs.='_'.$ENV{'request.course.sec'}; + } + $crs=~s/\_/\//g; + unless ($symb) { + $symb=&Apache::lonnet::symbread(); + } + unless ($symb) { return ''; } + my $seeid=&Apache::lonnet::allowed('rin',$crs); + my $viewgrades=&Apache::lonnet::allowed('vgr',$crs); + my $discussion=''; + my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, + $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, + $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); + if ($contrib{'version'}) { + unless ($discussiononly) { + $discussion.= + '

'; + } + my $idx; + for ($idx=1;$idx<=$contrib{'version'};$idx++) { + my $hidden=($contrib{'hidden'}=~/\.$idx\./); + my $deleted=($contrib{'deleted'}=~/\.$idx\./); + unless ((($hidden) && (!$seeid)) || ($deleted)) { + my $message=$contrib{$idx.':message'}; + $message=~s/\n/\
/g; + $message=&Apache::lontexconvert::msgtexconverted($message); + if ($contrib{$idx.':attachmenturl'}) { + my ($fname,$ft) + =($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/); + $message.='

Attachment: '.$fname.'.'.$ft.''; + } + if ($message) { + if ($hidden) { + $message=''.$message.''; + } + my $screenname=&Apache::loncommon::screenname( + $contrib{$idx.':sendername'}, + $contrib{$idx.':senderdomain'}); + my $plainname=&Apache::loncommon::nickname( + $contrib{$idx.':sendername'}, + $contrib{$idx.':senderdomain'}); + + my $sender='Anonymous'; + if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { + $sender=&Apache::loncommon::aboutmewrapper( + $plainname, + $contrib{$idx.':sendername'}, + $contrib{$idx.':senderdomain'}).' ('. + $contrib{$idx.':sendername'}.' at '. + $contrib{$idx.':senderdomain'}.')'; + if ($contrib{$idx.':anonymous'}) { + $sender.=' [anonymous] '. + $screenname; + } + if ($seeid) { + if ($hidden) { + $sender.=' Make Visible'; + } else { + $sender.=' Hide'; + } + $sender.=' Delete'; + } + } else { + if ($screenname) { + $sender=''.$screenname.''; + } + } + my $vgrlink; + if ($viewgrades) { + $vgrlink=&Apache::loncommon::submlink('Submissions', + $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb); + } + $discussion.='

'.$sender.' '.$vgrlink.' ('. + localtime($contrib{$idx.':timestamp'}). + '):

'.$message. + '

'; + } + } + } + unless ($discussiononly) { + $discussion.='
'; + } + } + if ($discussiononly) { + $discussion.=(< + + + + +
+Note: in anonymous discussion, your name is visible only to +course faculty
+ +

+Attachment (128 KB max size): +

+ +ENDDISCUSS + $discussion.=&generate_preview_button(); + } + return $discussion; +} + sub mail_screen { my ($r,$feedurl,$options) = @_; my $bodytag=&Apache::loncommon::bodytag('Resource Feedback and Discussion', '','onLoad="window.focus();"'); + my $title=&Apache::lonnet::gettitle($feedurl); + if (!$title) { $title = $feedurl; } my $latexHelp = Apache::loncommon::helpLatexCheatsheet(); $r->print(< @@ -105,7 +224,7 @@ sub mail_screen { $bodytag -

$feedurl

+

$title

@@ -246,14 +365,14 @@ sub clear_out_html { # allows


      • #
        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); + BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, DIV=>1, IMG=>1, + M=>1); $message =~ s/\<(\/?\s*(\w+)[^\>\<]*)/ {($html{uc($2)}&&(length($1)<1000))?"\<$1":"\<$1"}/ge; $message =~ s/(\]*)\>/ {($html{uc($2)}&&(length($1)<1000))?"$1\>":"$1\>"}/ge; } else { - $message=~s/\<\/*m\s*\>//g; $message=~s/\/\>\;/g; } @@ -463,7 +582,7 @@ sub handler { my $entry=$ENV{'form.hide'}?$ENV{'form.hide'}:$ENV{'form.unhide'}; my ($symb,$idx)=split(/\:\:\:/,$entry); - my ($map,$ind,$url)=split(/\_\_\_/,$symb); + my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, @@ -493,7 +612,7 @@ sub handler { my $entry=$ENV{'form.deldisc'}; my ($symb,$idx)=split(/\:\:\:/,$entry); - my ($map,$ind,$url)=split(/\_\_\_/,$symb); + my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, @@ -526,7 +645,7 @@ sub handler { unless ($symb) { $symb=$ENV{'form.symb'}; if ($symb) { - my ($map,$id,$url)=split(/\_\_\_/,$symb); + my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb); $feedurl=&Apache::lonnet::clutter($url); } } @@ -618,7 +737,10 @@ sub handler { } } else { # Ambiguous Problem Resource - $r->internal_redirect('/adm/ambiguous'); + if ( &Apache::lonnet::mod_perl_version() == 2 ) { + &Apache::lonnet::cleanenv(); + } + $r->internal_redirect('/adm/ambiguous'); } } return OK; 500 Internal Server Error

        Internal Server Error

        The server encountered an internal error or misconfiguration and was unable to complete your request.

        Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

        More information about this error may be available in the server error log.