[LON-CAPA-cvs] cvs: loncom /interface lonfeedback.pm

www lon-capa-cvs@mail.lon-capa.org
Fri, 07 Nov 2003 21:21:17 -0000


www		Fri Nov  7 16:21:17 2003 EDT

  Modified files:              
    /loncom/interface	lonfeedback.pm 
  Log:
  Threaded discussion done (looks like). 
  
  
Index: loncom/interface/lonfeedback.pm
diff -u loncom/interface/lonfeedback.pm:1.68 loncom/interface/lonfeedback.pm:1.69
--- loncom/interface/lonfeedback.pm:1.68	Fri Nov  7 11:37:23 2003
+++ loncom/interface/lonfeedback.pm	Fri Nov  7 16:21:17 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Feedback
 #
-# $Id: lonfeedback.pm,v 1.68 2003/11/07 16:37:23 www Exp $
+# $Id: lonfeedback.pm,v 1.69 2003/11/07 21:21:17 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -81,13 +81,18 @@
     my %alldiscussion=();
     my $maxdepth=0;
 
+    my $target='';
+    unless ($ENV{'browser.interface'} eq 'textual' ||
+	    $ENV{'environment.remote'} eq 'off' ) {
+	$target='target="LONcom"';
+    }
     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'}) {
+	    if (($contrib{$idx.':replyto'}) && ($ENV{'environment.threadeddiscussion'})) {
 # this is a follow-up message
 		$original[$idx]=$original[$contrib{$idx.':replyto'}];
 		$depth[$idx]=$depth[$contrib{$idx.':replyto'}]+1;
@@ -154,7 +159,7 @@
 				   $ENV{'request.course.id'}.
 	($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {
 			    $sender.=' <a href="/adm/feedback?replydisc='.
-				$symb.':::'.$idx.'">'.&mt('Reply').'</a>';
+				$symb.':::'.$idx.'" '.$target.'>'.&mt('Reply').'</a>';
 			}
 		    } else {
 			if ($screenname) {
@@ -168,8 +173,7 @@
 		    }
 #figure out at what position this needs to print
 		    my $thisindex=$idx;
-#		    if ($ENV{'request.discussions.threaded'}) {
-		    if (1) {
+		    if ($ENV{'environment.threadeddiscussion'}) {
 			$thisindex=$origindex.substr('00'.$replies[$depth[$idx]],-2,2);	
 		    }
 		    $alldiscussion{$thisindex}=$idx;
@@ -184,9 +188,24 @@
     }
     my $discussion='';
     if ($visible) {
+# Print a the discusssion
 	$discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">';
+	if ($visible>2) {
+	    my $colspan=$maxdepth+1;
+	    $discussion.='<tr><td bgcolor="DDDDBB" colspan="'.$colspan.'">'.
+  '<a href="/adm/feedback?threadedon='.$symb.'">'.&mt('Threaded View').'</a>&nbsp;&nbsp;'.
+  '<a href="/adm/feedback?threadedoff='.$symb.'">'.&mt('Chronological View').'</a>'.
+  '</td></tr>';
+	}
+
 	foreach (sort { $a <=> $b } keys %alldiscussion) {
-	    $discussion.="\n<tr bgcolor='#CCCCCC'><td>".$discussionitems[$alldiscussion{$_}].
+	    $discussion.="\n<tr>";
+	    my $thisdepth=$depth[$alldiscussion{$_}];
+	    for (1..$thisdepth) {
+		$discussion.='<td>&nbsp;&nbsp;&nbsp;</td>';
+	    }
+	    my $colspan=$maxdepth-$thisdepth+1;
+            $discussion.="<td  bgcolor='#CCCCCC' colspan='".$colspan."'>".$discussionitems[$alldiscussion{$_}].
 		"</td></tr>";
 	}
         $discussion.='</table>';
@@ -218,6 +237,18 @@
                                           '','onLoad="window.focus();"');
   my $title=&Apache::lonnet::gettitle($feedurl);
   if (!$title) { $title = $feedurl; }
+  my $quote='';
+  if ($ENV{'form.replydisc'}) {
+      my ($symb,$idx)=split(/\:\:\:/,$ENV{'form.replydisc'});
+      my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
+					   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+					   $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+      unless (($contrib{'hidden'}=~/\.$idx\./) || ($contrib{'deleted'}=~/\.$idx\./)) { 
+	  my $message=$contrib{$idx.':message'};
+	  $message=~s/\n/\<br \/\>/g;
+	  $quote='<blockquote>'.&Apache::lontexconvert::msgtexconverted($message).'</blockquote>';
+      }
+  }
   my $latexHelp = Apache::loncommon::helpLatexCheatsheet();
   $r->print(<<ENDDOCUMENT);
 <html>
@@ -276,6 +307,7 @@
 <input type="hidden" name="replydisc" value="$ENV{'form.replydisc'}" />
 Please check at least one of the following feedback types:
 $options<hr />
+$quote
 <p>My question/comment/feedback:</p>
 <p>
 $latexHelp
@@ -627,7 +659,7 @@
 # --------------------------- Get query string for limited number of parameters
 
    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
-         ['hide','unhide','deldisc','postdata','preview','replydisc']);
+         ['hide','unhide','deldisc','postdata','preview','replydisc','threadedon','threadedoff']);
 
   if (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) {
 # ----------------------------------------------------------------- Hide/unhide
@@ -659,6 +691,18 @@
 
     &redirect_back($r,&Apache::lonnet::clutter($url),
        &mt('Changed discussion status').'<br />','0','0');
+  } elsif (($ENV{'form.threadedon'}) || ($ENV{'form.threadedoff'})) {
+      if ($ENV{'form.threadedon'}) {
+	  &Apache::lonnet::put('environment',{'threadeddiscussion' => 'on'});
+	  &Apache::lonnet::appenv('environment.threadeddiscussion' => 'on');
+      } else {
+ 	  &Apache::lonnet::del('environment',['threadeddiscussion']);
+	  &Apache::lonnet::delenv('environment\.threadeddiscussion');
+     }
+      my $symb=$ENV{'form.threadedon'}?$ENV{'form.threadedon'}:$ENV{'form.threadedoff'};
+      my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
+      &redirect_back($r,&Apache::lonnet::clutter($url),
+		     &mt('Changed discussion view mode').'<br />','0','0');
   } elsif ($ENV{'form.deldisc'}) {
 # --------------------------------------------------------------- Hide for good
     $r->content_type('text/html');