--- loncom/interface/lonfeedback.pm 2003/11/04 03:32:55 1.67 +++ loncom/interface/lonfeedback.pm 2003/11/07 16:37:23 1.68 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.67 2003/11/04 03:32:55 www Exp $ +# $Id: lonfeedback.pm,v 1.68 2003/11/07 16:37:23 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -69,16 +69,40 @@ sub list_discussion { unless ($symb) { return ''; } my $seeid=&Apache::lonnet::allowed('rin',$crs); my $viewgrades=&Apache::lonnet::allowed('vgr',$crs); - my %discussionitems=(); + my @discussionitems=(); 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 $visible=0; + my @depth=(); + my @original=(); + my @index=(); + my @replies=(); + my %alldiscussion=(); + my $maxdepth=0; + if ($contrib{'version'}) { for (my $id=1;$id<=$contrib{'version'};$id++) { my $idx=$id; my $hidden=($contrib{'hidden'}=~/\.$idx\./); my $deleted=($contrib{'deleted'}=~/\.$idx\./); + my $origindex='0.'; + if ($contrib{$idx.':replyto'}) { +# this is a follow-up message + $original[$idx]=$original[$contrib{$idx.':replyto'}]; + $depth[$idx]=$depth[$contrib{$idx.':replyto'}]+1; + $origindex=$index[$contrib{$idx.':replyto'}]; + if ($depth[$idx]>$maxdepth) { $maxdepth=$depth[$idx]; } + } else { +# this is an original message + $original[$idx]=0; + $depth[$idx]=0; + } + if ($replies[$depth[$idx]]) { + $replies[$depth[$idx]]++; + } else { + $replies[$depth[$idx]]=1; + } unless ((($hidden) && (!$seeid)) || ($deleted)) { $visible++; my $message=$contrib{$idx.':message'}; @@ -142,7 +166,15 @@ sub list_discussion { $vgrlink=&Apache::loncommon::submlink('Submissions', $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb); } - $discussionitems{$idx}='

'.$sender.' '.$vgrlink.' ('. +#figure out at what position this needs to print + my $thisindex=$idx; +# if ($ENV{'request.discussions.threaded'}) { + if (1) { + $thisindex=$origindex.substr('00'.$replies[$depth[$idx]],-2,2); + } + $alldiscussion{$thisindex}=$idx; + $index[$idx]=$thisindex; + $discussionitems[$idx]='

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

'.$message. '

'; @@ -153,8 +185,8 @@ sub list_discussion { my $discussion=''; if ($visible) { $discussion.=''; - foreach (sort { $a <=> $b } keys %discussionitems) { - $discussion.="\n"; } $discussion.='
".$discussionitems{$_}. + foreach (sort { $a <=> $b } keys %alldiscussion) { + $discussion.="\n
".$discussionitems[$alldiscussion{$_}]. "
'; @@ -241,6 +273,7 @@ $bodytag
+ Please check at least one of the following feedback types: $options

My question/comment/feedback: