Diff for /loncom/interface/lonfeedback.pm between versions 1.77 and 1.78

version 1.77, 2004/02/13 15:03:39 version 1.78, 2004/04/28 21:13:13
Line 55  sub list_discussion { Line 55  sub list_discussion {
  $symb=&Apache::lonnet::symbread();   $symb=&Apache::lonnet::symbread();
     }      }
     unless ($symb) { return ''; }      unless ($symb) { return ''; }
   
       my %dischash = &Apache::lonnet::restore($symb,$ENV{'request.course.id'}.'_discuss',$ENV{'user.domain'},$ENV{'user.name'});
       my %readids = ();
       my $showonlyunread;
       foreach my $key (keys %dischash) {
           if ($key eq 'showonlyunread') {
               $showonlyunread = $dischash{$key};
           } else {
               if ($dischash{$key} eq 'read') {
                   $readids{$key} = 1;
               }
           }
       }
   
     my $seeid=&Apache::lonnet::allowed('rin',$crs);      my $seeid=&Apache::lonnet::allowed('rin',$crs);
     my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs)      my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs)
  && ($symb=~/\.(problem|exam|quiz|assess|survey|form)$/));   && ($symb=~/\.(problem|exam|quiz|assess|survey|form)$/));
Line 107  sub list_discussion { Line 121  sub list_discussion {
  my $message=$contrib{$idx.':message'};   my $message=$contrib{$idx.':message'};
  $message=~s/\n/\<br \/\>/g;   $message=~s/\n/\<br \/\>/g;
  $message=&Apache::lontexconvert::msgtexconverted($message);   $message=&Apache::lontexconvert::msgtexconverted($message);
                   my $subject=$contrib{$idx.':subject'};
                   if (defined($subject)) {
                       $subject=~s/\n/\<br \/\>/g;
                       $subject=&Apache::lontexconvert::msgtexconverted($subject);
                   }
  if ($contrib{$idx.':attachmenturl'}) {   if ($contrib{$idx.':attachmenturl'}) {
     my ($fname,$ft)      my ($fname,$ft)
                         =($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/);                          =($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/);
Line 161  sub list_discussion { Line 180  sub list_discussion {
     $ressymb.':::'.$idx.'" '.$target.'>'.&mt('Reply').'</a>';      $ressymb.':::'.$idx.'" '.$target.'>'.&mt('Reply').'</a>';
     }      }
     my $vgrlink;      my $vgrlink;
                       my $ctlink;
                       if ($readids{$idx} == 1) {
                           $ctlink = '<b>'.&mt('Mark unread').'?</b>&nbsp;'.
                               '<input type="checkbox" name="'.
                               'postunread_'.$idx.'" />';
                       } else {
                           $ctlink = '<b>'.&mt('Mark read').'?</b>&nbsp;'.
                               '<input type="checkbox" name="'.
                               'postread_'.$idx.'" />';
                       }
     if ($viewgrades) {      if ($viewgrades) {
  $vgrlink=&Apache::loncommon::submlink('Submissions',   $vgrlink=&Apache::loncommon::submlink('Submissions',
             $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb);              $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb);
Line 172  sub list_discussion { Line 201  sub list_discussion {
     }      }
     $alldiscussion{$thisindex}=$idx;      $alldiscussion{$thisindex}=$idx;
     $index[$idx]=$thisindex;      $index[$idx]=$thisindex;
     $discussionitems[$idx]='<p><b>'.$sender.'</b> '.$vgrlink.' ('.                      $discussionitems[$idx]='<p><table border="0" width="100%">'.
  localtime($contrib{$idx.':timestamp'}).                          '<tr><td align="left"><b>'.$subject.'</b>&nbsp;&nbsp;'.
  '):<blockquote>'.$message.                          $sender.'</b> '.$vgrlink.' ('.
  '</blockquote></p>';                          localtime($contrib{$idx.':timestamp'}).
         }                          ')</td><td align="right">&nbsp;&nbsp;'.$ctlink.'</td></tr>';
     }                       if ($showonlyunread && $readids{$idx}) {
                           $discussionitems[$idx] .= '<tr><td colspan="2" align="right"><i><font size="-1">Check "Show all posts?" or "Mark unread?", then "Save read settings" to display message</font></i></td></tr></table>';
                       } else {
                           $discussionitems[$idx] .= '</table><blockquote>'.$message.'</blockquote></p>';
                       }
                   }
               }
  }   }
     }      }
     my $discussion='';      my $discussion='';
     if ($visible) {      if ($visible) {
 # Print a the discusssion  # Print a the discusssion
           $discussion .= '<form name="readchoices" method="post" action="/adm/feedback?chgreads='.$symb.'">';
  $discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">';   $discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">';
  if ($visible>2) {   if ($visible>2) {
     my $colspan=$maxdepth+1;      my $colspan=$maxdepth+1;
   my $showoption = '<tr><td align="right" bgcolor="#FFFFFF" colspan="'.$colspan.'">';
               my $showflag = 'all';
               if ($showonlyunread) {
                   $showoption .= '<b>Show all posts?</b><input type="checkbox"
   name="allposts" value="1"></td></tr>';
               } else {
                   $showoption .= '<b>Show only unread posts?</b><input type="checkbox" name="onlyunread" value="1"></td></tr>';
               }
               $discussion.=$showoption;
     $discussion.='<tr><td bgcolor="DDDDBB" colspan="'.$colspan.'">'.      $discussion.='<tr><td bgcolor="DDDDBB" colspan="'.$colspan.'">'.
   '<a href="/adm/feedback?threadedon='.$symb.'">'.&mt('Threaded View').'</a>&nbsp;&nbsp;'.              '<table border="0" width="100%" bgcolor="#DDDDBB"><tr><td align="left">'.
   '<a href="/adm/feedback?threadedoff='.$symb.'">'.&mt('Chronological View').'</a>'.              '<a href="/adm/feedback?threadedon='.$symb.'">'.&mt('Threaded View').'</a>&nbsp;&nbsp;'.
   '</td></tr>';              '<a href="/adm/feedback?threadedoff='.$symb.'">'.&mt('Chronological View').'</a>&nbsp;&nbsp;</td>'.
               '<td align="right"><a href="/adm/feedback?markread='.$symb.'">'.&mt('Mark all read').'</a>&nbsp;&nbsp;'.
               '<a href="/adm/feedback?markunread='.$symb.'">'.&mt('Mark all unread').'</a>&nbsp;&nbsp;'.
               '</td></tr></table></td></tr>';
  }   }
   
  foreach (sort { $a <=> $b } keys %alldiscussion) {   foreach (sort { $a <=> $b } keys %alldiscussion) {
Line 199  sub list_discussion { Line 247  sub list_discussion {
  $discussion.='<td>&nbsp;&nbsp;&nbsp;</td>';   $discussion.='<td>&nbsp;&nbsp;&nbsp;</td>';
     }      }
     my $colspan=$maxdepth-$thisdepth+1;      my $colspan=$maxdepth-$thisdepth+1;
             $discussion.="<td  bgcolor='#CCCCCC' colspan='".$colspan."'>".$discussionitems[$alldiscussion{$_}].              $discussion.='<td  bgcolor="#CCCCCC" colspan="'.$colspan.'">'.
  "</td></tr>";                           $discussionitems[$alldiscussion{$_}].
                    '</td></tr>';
  }   }
         $discussion.='</table>';          my $colspan=$maxdepth+1;
           $discussion.='<tr><td bgcolor="#FFFFFF" align="right" colspan="'.
           $colspan.'"><br /><input type="hidden" name="storereads" value="0">'.            '<input type="hidden" name="discsymb" value="'.$symb.'">'.
           '<input type="button" name="readoptions" '.
           'value="Save read settings" onClick="this.form.storereads.value=1;this.form.submit();"></td></tr>';
           $discussion .= '</table><br /><br /></form>';
     }      }
     if ($discussiononly) {      if ($discussiononly) {
  $discussion.=(<<ENDDISCUSS);   $discussion.=(<<ENDDISCUSS);
Line 214  sub list_discussion { Line 268  sub list_discussion {
 <br />  <br />
 <font size="1">Note: in anonymous discussion, your name is visible only to  <font size="1">Note: in anonymous discussion, your name is visible only to
 course faculty</font><br />  course faculty</font><br />
   <b>Title:</b>&nbsp;<input type="text" name="subject" value="" size="30" /><br /><br />
 <textarea name="comment" cols="60" rows="10" wrap="hard"></textarea>  <textarea name="comment" cols="60" rows="10" wrap="hard"></textarea>
 <p>  <p>
 Attachment (128 KB max size): <input type="file" name="attachment" />  Attachment (128 KB max size): <input type="file" name="attachment" />
Line 241  sub mail_screen { Line 296  sub mail_screen {
   my $title=&Apache::lonnet::gettitle($feedurl);    my $title=&Apache::lonnet::gettitle($feedurl);
   if (!$title) { $title = $feedurl; }    if (!$title) { $title = $feedurl; }
   my $quote='';    my $quote='';
     my $subject = '';
   if ($ENV{'form.replydisc'}) {    if ($ENV{'form.replydisc'}) {
       my ($symb,$idx)=split(/\:\:\:/,$ENV{'form.replydisc'});        my ($symb,$idx)=split(/\:\:\:/,$ENV{'form.replydisc'});
       my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},        my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
Line 250  sub mail_screen { Line 306  sub mail_screen {
   my $message=$contrib{$idx.':message'};    my $message=$contrib{$idx.':message'};
   $message=~s/\n/\<br \/\>/g;    $message=~s/\n/\<br \/\>/g;
   $quote='<blockquote>'.&Apache::lontexconvert::msgtexconverted($message).'</blockquote>';    $quote='<blockquote>'.&Apache::lontexconvert::msgtexconverted($message).'</blockquote>';
             $subject = 'Re: '.$contrib{$idx.':subject'};
       }        }
   }    }
   my $latexHelp = Apache::loncommon::helpLatexCheatsheet();    my $latexHelp = Apache::loncommon::helpLatexCheatsheet();
Line 315  $quote Line 372  $quote
 <p>My question/comment/feedback:</p>  <p>My question/comment/feedback:</p>
 <p>  <p>
 $latexHelp  $latexHelp
   Title: <input type="text" name="subject" size="30" value="$subject" /></p>
   <p>
 <textarea name="comment" cols="60" rows="10" wrap="hard">  <textarea name="comment" cols="60" rows="10" wrap="hard">
 </textarea></p>  </textarea></p>
 <p>  <p>
Line 588  sub send_msg { Line 647  sub send_msg {
 }  }
   
 sub adddiscuss {  sub adddiscuss {
     my ($symb,$email,$anon,$attachmenturl)=@_;      my ($symb,$email,$anon,$attachmenturl,$subject)=@_;
     my $status='';      my $status='';
     if (&Apache::lonnet::allowed('pch',$ENV{'request.course.id'}.      if (&Apache::lonnet::allowed('pch',$ENV{'request.course.id'}.
         ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {          ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {
Line 601  sub adddiscuss { Line 660  sub adddiscuss {
                    $ENV{'environment.middlename'}.' '.                     $ENV{'environment.middlename'}.' '.
                                    $ENV{'environment.lastname'}.' '.                                     $ENV{'environment.lastname'}.' '.
                                    $ENV{'enrironment.generation'},                                     $ENV{'enrironment.generation'},
                  'attachmenturl'=> $attachmenturl);                   'attachmenturl'=> $attachmenturl,
                    'subject'      => $subject);
     if ($ENV{'form.replydisc'}) {      if ($ENV{'form.replydisc'}) {
  $contrib{'replyto'}=(split(/\:\:\:/,$ENV{'form.replydisc'}))[1];   $contrib{'replyto'}=(split(/\:\:\:/,$ENV{'form.replydisc'}))[1];
     }      }
Line 641  sub show_preview { Line 701  sub show_preview {
     my $message=&clear_out_html($ENV{'form.comment'});      my $message=&clear_out_html($ENV{'form.comment'});
     $message=~s/\n/\<br \/\>/g;      $message=~s/\n/\<br \/\>/g;
     $message=&Apache::lontexconvert::msgtexconverted($message);      $message=&Apache::lontexconvert::msgtexconverted($message);
       my $subject=&clear_out_html($ENV{'form.subject'});
       $subject=~s/\n/\<br \/\>/g;
       $subject=&Apache::lontexconvert::msgtexconverted($subject);
     $r->print('<table border="2"><tr><td>'.      $r->print('<table border="2"><tr><td>'.
          '<b>Subject:</b> '.$subject.'<br /><br />'.
        $message.'</td></tr></table>');         $message.'</td></tr></table>');
 }  }
   
Line 649  sub generate_preview_button { Line 713  sub generate_preview_button {
     my $pre=&mt("Show Preview");      my $pre=&mt("Show Preview");
     return(<<ENDPREVIEW);      return(<<ENDPREVIEW);
 <form name="preview" action="/adm/feedback?preview=1" method="post" target="preview">  <form name="preview" action="/adm/feedback?preview=1" method="post" target="preview">
   <input type="hidden" name="subject">
 <input type="hidden" name="comment" />  <input type="hidden" name="comment" />
 <input type="button" value="$pre"  <input type="button" value="$pre"
 onClick="this.form.comment.value=document.mailform.comment.value;this.form.submit();" />  onClick="this.form.comment.value=document.mailform.comment.value;this.form.subject.value=document.mailform.subject.value;this.form.submit();" />
 </form>  </form>
 ENDPREVIEW  ENDPREVIEW
 }  }
Line 667  sub handler { Line 732  sub handler {
 # --------------------------- Get query string for limited number of parameters  # --------------------------- Get query string for limited number of parameters
   
    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
          ['hide','unhide','deldisc','postdata','preview','replydisc','threadedon','threadedoff']);  #         ['hide','unhide','deldisc','postdata','preview','replydisc','threadedon','threadedoff']);
            ['hide','unhide','deldisc','postdata','preview','replydisc','threadedon','threadedoff','markread','markunread','storereads','onlyunread','allposts','chgreads']);
   
   if (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) {    if (($ENV{'form.markread'}) || ($ENV{'form.markunread'})) {
   # ----------------------------------------------------------------- Modify read/unread for all
         &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;
         my $symb=$ENV{'form.markread'}?$ENV{'form.markread'}:$ENV{'form.markunread'};
         my $ressymb = $symb;
         my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
         $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
         my %contrib=&Apache::lonnet::restore($ressymb,$ENV{'request.course.id'},
                             $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
                             $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
         my %readinghash = ();
                                                                                    
         if ($contrib{'version'}) {
             for (my $id=1;$id<=$contrib{'version'};$id++) {
                 my $msgid = $id.':message';
                 if (defined($contrib{$msgid})) {
                     if ($ENV{'form.markread'}) {
                         $readinghash{$id} = 'read';
                     } else {
                          $readinghash{$id} = 'unread';
                     }
                 }
             }
             if ($ENV{'form.allposts'}) {
                 $readinghash{'showonlyunread'} = 0;
             } elsif ($ENV{'form.onlyunread'}) {
                 $readinghash{'showonlyunread'} = 1;
             }
             &Apache::lonnet::cstore(\%readinghash,$symb,$ENV{'request.course.id'}.'_discuss',$ENV{'user.domain'},$ENV{'user.name'});
         }
                                                                                    
         &redirect_back($r,&Apache::lonnet::clutter($url),&mt('Changed reading status'),'0','0');
         return OK;
     } else {
         my $symb = $ENV{'form.discsymb'};
         my %readinghash = ();
         my $chgcount = 0;
         foreach my $key (keys %ENV) {
             if ($key =~ m/^form\.postunread_(\d+)/) {
                 $readinghash{$1} = 'unread';
                 $chgcount ++;
             } elsif ($key =~ m/^form\.postread_(\d+)/) {
                 $readinghash{$1} = 'read';
                 $chgcount ++;
             }
         }
         if ($ENV{'form.allposts'}) {
             $readinghash{'showonlyunread'} = 0;
             $chgcount ++;
         } elsif ($ENV{'form.onlyunread'}) {
             $readinghash{'showonlyunread'} = 1;
             $chgcount ++;
         }
                                                                                    
         if ($chgcount > 0) {
             &Apache::lonnet::cstore(\%readinghash,$symb,$ENV{'request.course.id'}.'_discuss',$ENV{'user.domain'},$ENV{'user.name'});
         }
     }
   
     if ($ENV{'form.chgreads'}) {
         &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;
         my ($map,$ind,$url)=&Apache::lonnet::decode_symb($ENV{'form.chgreads'});
         &redirect_back($r,&Apache::lonnet::clutter($url),
          &mt('Changed read status').'<br />','0','0');
     } elsif (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) {
 # ----------------------------------------------------------------- Hide/unhide  # ----------------------------------------------------------------- Hide/unhide
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
Line 698  sub handler { Line 830  sub handler {
      $ENV{'course.'.$ENV{'request.course.id'}.'.num'});       $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
   
     &redirect_back($r,&Apache::lonnet::clutter($url),      &redirect_back($r,&Apache::lonnet::clutter($url),
        &mt('Changed discussion status').'<br />','0','0');         &mt('Changed read status').'<br />','0','0');
   } elsif (($ENV{'form.threadedon'}) || ($ENV{'form.threadedoff'})) {    } elsif (($ENV{'form.threadedon'}) || ($ENV{'form.threadedoff'})) {
       &Apache::loncommon::content_type($r,'text/html');        &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;        $r->send_http_header;
Line 839  sub handler { Line 971  sub handler {
   
       my $numpost=0;        my $numpost=0;
       if ($ENV{'form.discuss'}) {        if ($ENV{'form.discuss'}) {
   $typestyle.=&adddiscuss($symb,$message,0,$attachmenturl);            my $subject = &clear_out_html($ENV{'form.subject'});
     $typestyle.=&adddiscuss($symb,$message,0,$attachmenturl,$subject);
   $numpost++;    $numpost++;
       }        }
   
       if ($ENV{'form.anondiscuss'}) {        if ($ENV{'form.anondiscuss'}) {
   $typestyle.=&adddiscuss($symb,$message,1,$attachmenturl);            my $subject = &clear_out_html($ENV{'form.subject'});
     $typestyle.=&adddiscuss($symb,$message,1,$attachmenturl,$subject);
   $numpost++;    $numpost++;
       }        }
   

Removed from v.1.77  
changed lines
  Added in v.1.78


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>