Diff for /loncom/interface/lonfeedback.pm between versions 1.55 and 1.68

version 1.55, 2003/09/15 13:38:19 version 1.68, 2003/11/07 16:37:23
Line 51  use Apache::Constants qw(:common); Line 51  use Apache::Constants qw(:common);
 use Apache::lonmsg();  use Apache::lonmsg();
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lontexconvert();  use Apache::lontexconvert();
   use Apache::lonlocal;
   
 sub list_discussion {  sub list_discussion {
     my ($discussiononly,$symb)=@_;      my ($mode,$status,$symb)=@_;
       my $discussiononly=0;
       if ($mode eq 'board') { $discussiononly=1; }
     unless ($ENV{'request.course.id'}) { return ''; }      unless ($ENV{'request.course.id'}) { return ''; }
     my $crs='/'.$ENV{'request.course.id'};      my $crs='/'.$ENV{'request.course.id'};
     if ($ENV{'request.course.sec'}) {      if ($ENV{'request.course.sec'}) {
Line 66  sub list_discussion { Line 69  sub list_discussion {
     unless ($symb) { return ''; }      unless ($symb) { return ''; }
     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);
     my $discussion='';      my @discussionitems=();
     my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},      my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},    $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
   $ENV{'course.'.$ENV{'request.course.id'}.'.num'});    $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'}) {      if ($contrib{'version'}) {
  unless ($discussiononly) {   for (my $id=1;$id<=$contrib{'version'};$id++) {
     $discussion.=      my $idx=$id;
  '<address><hr />';  
  }  
  my $idx;  
  for ($idx=1;$idx<=$contrib{'version'};$idx++) {  
     my $hidden=($contrib{'hidden'}=~/\.$idx\./);      my $hidden=($contrib{'hidden'}=~/\.$idx\./);
     my $deleted=($contrib{'deleted'}=~/\.$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)) {      unless ((($hidden) && (!$seeid)) || ($deleted)) {
    $visible++;
  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);
  if ($contrib{$idx.':attachmenturl'}) {   if ($contrib{$idx.':attachmenturl'}) {
     my ($fname,$ft)      my ($fname,$ft)
                         =($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/);                          =($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/);
     $message.='<p>Attachment: <a href="'.      $message.='<p>'.&mt('Attachment').': <a href="'.
  &Apache::lonnet::tokenwrapper(   &Apache::lonnet::tokenwrapper(
                                              $contrib{$idx.':attachmenturl'}).                                               $contrib{$idx.':attachmenturl'}).
  '"><tt>'.$fname.'.'.$ft.'</tt></a>';   '"><tt>'.$fname.'.'.$ft.'</tt></a></p>';
  }   }
  if ($message) {   if ($message) {
     if ($hidden) {      if ($hidden) {
Line 102  sub list_discussion { Line 127  sub list_discussion {
     $contrib{$idx.':sendername'},      $contrib{$idx.':sendername'},
     $contrib{$idx.':senderdomain'});      $contrib{$idx.':senderdomain'});
           
     my $sender='Anonymous';      my $sender=&mt('Anonymous');
     if ((!$contrib{$idx.':anonymous'}) || ($seeid)) {      if ((!$contrib{$idx.':anonymous'}) || ($seeid)) {
  $sender=&Apache::loncommon::aboutmewrapper(   $sender=&Apache::loncommon::aboutmewrapper(
  $plainname,   $plainname,
Line 111  sub list_discussion { Line 136  sub list_discussion {
  $contrib{$idx.':sendername'}.' at '.   $contrib{$idx.':sendername'}.' at '.
  $contrib{$idx.':senderdomain'}.')';   $contrib{$idx.':senderdomain'}.')';
  if ($contrib{$idx.':anonymous'}) {   if ($contrib{$idx.':anonymous'}) {
     $sender.=' [anonymous] '.      $sender.=' ['.&mt('anonymous').'] '.
  $screenname;   $screenname;
  }   }
  if ($seeid) {   if ($seeid) {
     if ($hidden) {      if ($hidden) {
  $sender.=' <a href="/adm/feedback?unhide='.   $sender.=' <a href="/adm/feedback?unhide='.
     $symb.':::'.$idx.'">Make Visible</a>';      $symb.':::'.$idx.'">'.&mt('Make Visible').'</a>';
     } else {      } else {
  $sender.=' <a href="/adm/feedback?hide='.   $sender.=' <a href="/adm/feedback?hide='.
     $symb.':::'.$idx.'">Hide</a>';      $symb.':::'.$idx.'">'.&mt('Hide').'</a>';
     }                           }                     
     $sender.=' <a href="/adm/feedback?deldisc='.      $sender.=' <a href="/adm/feedback?deldisc='.
  $symb.':::'.$idx.'">Delete</a>';   $symb.':::'.$idx.'">'.&mt('Delete').'</a>';
    }
    if (&Apache::lonnet::allowed('pch',
      $ENV{'request.course.id'}.
    ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {
       $sender.=' <a href="/adm/feedback?replydisc='.
    $symb.':::'.$idx.'">'.&mt('Reply').'</a>';
  }   }
     } else {      } else {
  if ($screenname) {   if ($screenname) {
Line 135  sub list_discussion { Line 166  sub list_discussion {
  $vgrlink=&Apache::loncommon::submlink('Submissions',   $vgrlink=&Apache::loncommon::submlink('Submissions',
             $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb);              $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb);
     }      }
     $discussion.='<p><b>'.$sender.'</b> '.$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]='<p><b>'.$sender.'</b> '.$vgrlink.' ('.
  localtime($contrib{$idx.':timestamp'}).   localtime($contrib{$idx.':timestamp'}).
  '):<blockquote>'.$message.   '):<blockquote>'.$message.
  '</blockquote></p>';   '</blockquote></p>';
         }          }
     }       } 
  }   }
  unless ($discussiononly) {      }
     $discussion.='</address>';      my $discussion='';
       if ($visible) {
    $discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">';
    foreach (sort { $a <=> $b } keys %alldiscussion) {
       $discussion.="\n<tr bgcolor='#CCCCCC'><td>".$discussionitems[$alldiscussion{$_}].
    "</td></tr>";
  }   }
           $discussion.='</table>';
     }      }
     if ($discussiononly) {      if ($discussiononly) {
  $discussion.=(<<ENDDISCUSS);   $discussion.=(<<ENDDISCUSS);
Line 156  sub list_discussion { Line 201  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 />
 <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" />
 </p>  </p>
Line 179  sub mail_screen { Line 224  sub mail_screen {
 <head>  <head>
 <title>The LearningOnline Network with CAPA</title>  <title>The LearningOnline Network with CAPA</title>
 <meta http-equiv="pragma" content="no-cache"></meta>  <meta http-equiv="pragma" content="no-cache"></meta>
 <script>  <script type="text/javascript">
   //<!--
     function gosubmit() {      function gosubmit() {
         var rec=0;          var rec=0;
         if (typeof(document.mailform.elements.author)!="undefined") {          if (typeof(document.mailform.elements.author)!="undefined") {
Line 219  sub mail_screen { Line 265  sub mail_screen {
             alert('Please check a feedback type.');              alert('Please check a feedback type.');
  }   }
     }      }
   //-->
 </script>  </script>
 </head>  </head>
 $bodytag  $bodytag
 <h2><tt>$title</tt></h2>  <h2><tt>$title</tt></h2>
 <form action="/adm/feedback" method="post" name="mailform"  <form action="/adm/feedback" method="post" name="mailform"
 enctype="multipart/form-data">  enctype="multipart/form-data">
 <input type=hidden name=postdata value="$feedurl">  <input type="hidden" name="postdata" value="$feedurl" />
   <input type="hidden" name="replydisc" value="$ENV{'form.replydisc'}" />
 Please check at least one of the following feedback types:  Please check at least one of the following feedback types:
 $options<hr>  $options<hr />
 My question/comment/feedback:<p>  <p>My question/comment/feedback:</p>
   <p>
 $latexHelp  $latexHelp
 <textarea name=comment cols=60 rows=10 wrap=hard>  <textarea name="comment" cols="60" rows="10" wrap="hard">
 </textarea><p>  </textarea></p>
   <p>
 Attachment (128 KB max size): <input type="file" name="attachment" />  Attachment (128 KB max size): <input type="file" name="attachment" />
 </p>  </p>
 <p>  <p>
 <input type="hidden" name="sendit" value="1" />  <input type="hidden" name="sendit" value="1" />
 <input type=button value="Send Feedback" onClick='gosubmit();' />  <input type="button" value="Send Feedback" onClick='gosubmit();' />
 </p>  </p>
 </form>  </form>
 ENDDOCUMENT  ENDDOCUMENT
Line 247  sub fail_redirect { Line 297  sub fail_redirect {
   my ($r,$feedurl) = @_;    my ($r,$feedurl) = @_;
   $r->print (<<ENDFAILREDIR);    $r->print (<<ENDFAILREDIR);
 <head><title>Feedback not sent</title>  <head><title>Feedback not sent</title>
 <meta http-equiv="pragma" content="no-cache"></meta>  <meta http-equiv="pragma" content="no-cache" />
 <meta HTTP-EQUIV="Refresh" CONTENT="2; url=$feedurl">  <meta HTTP-EQUIV="Refresh" CONTENT="2; url=$feedurl" />
 </head>  </head>
 <html>  <html>
 <body bgcolor="#FFFFFF">  <body bgcolor="#FFFFFF">
 <img align=right src=/adm/lonIcons/lonlogos.gif>  <img align="right" src="/adm/lonIcons/lonlogos.gif" />
 <b>Sorry, no recipients  ...</b>  <b>Sorry, no recipients  ...</b>
 </body>  </body>
 </html>  </html>
Line 264  sub redirect_back { Line 314  sub redirect_back {
   $r->print (<<ENDREDIR);    $r->print (<<ENDREDIR);
 <head>  <head>
 <title>Feedback sent</title>  <title>Feedback sent</title>
 <meta http-equiv="pragma" content="no-cache"></meta>  <meta http-equiv="pragma" content="no-cache" />
 <meta HTTP-EQUIV="Refresh" CONTENT="2; url=$feedurl">  <meta HTTP-EQUIV="Refresh" CONTENT="2; url=$feedurl">
 </head>  </head>
 <html>  <html>
 <body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { this.document.reldt.submit(); self.close(); }'>  <body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { this.document.reldt.submit(); self.close(); }'>
 <img align=right src=/adm/lonIcons/lonlogos.gif>  <img align="right" src="/adm/lonIcons/lonlogos.gif" />
 $typestyle  $typestyle
 <b>Sent $sendsomething message(s), and $sendposts post(s).</b>  <b>Sent $sendsomething message(s), and $sendposts post(s).</b>
 <font color=red>$status</font>  <font color="red">$status</font>
 <form name="reldt" action="$feedurl" target="loncapaclient">  <form name="reldt" action="$feedurl" target="loncapaclient">
 </form>  </form>
 </body>  </body>
Line 284  sub no_redirect_back { Line 334  sub no_redirect_back {
   my ($r,$feedurl) = @_;    my ($r,$feedurl) = @_;
   $r->print (<<ENDNOREDIR);    $r->print (<<ENDNOREDIR);
 <head><title>Feedback not sent</title>  <head><title>Feedback not sent</title>
 <meta http-equiv="pragma" content="no-cache"></meta>  <meta http-equiv="pragma" content="no-cache" />
 ENDNOREDIR  ENDNOREDIR
   
   if ($feedurl!~/^\/adm\/feedback/) {     if ($feedurl!~/^\/adm\/feedback/) { 
Line 295  ENDNOREDIR Line 345  ENDNOREDIR
 </head>  </head>
 <html>  <html>
 <body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { self.close(); }'>  <body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { self.close(); }'>
 <img align=right src=/adm/lonIcons/lonlogos.gif>  <img align="right" src="/adm/lonIcons/lonlogos.gif" />
 <b>Sorry, no feedback possible on this resource  ...</b>  <b>Sorry, no feedback possible on this resource  ...</b>
 </body>  </body>
 </html>  </html>
Line 303  ENDNOREDIRTWO Line 353  ENDNOREDIRTWO
 }  }
   
 sub screen_header {  sub screen_header {
   my ($feedurl) = @_;      my ($feedurl) = @_;
   my $msgoptions='';      my $msgoptions='';
   my $discussoptions='';      my $discussoptions='';
   if (($feedurl=~/^\/res\//) && ($feedurl!~/^\/res\/adm/)) {      unless ($ENV{'form.replydisc'}) {
     $msgoptions=    if (($feedurl=~/^\/res\//) && ($feedurl!~/^\/res\/adm/)) {
       '<p><input type=checkbox name=author> Feedback to resource author';      $msgoptions= 
   }   '<p><input type="checkbox" name="author" /> '.
   if (&feedback_available(1)) {   &mt('Feedback to resource author').'</p>';
     $msgoptions.=   }
     '<br><input type=checkbox name=question> Question about resource content';   if (&feedback_available(1)) {
   }      $msgoptions.=
   if (&feedback_available(0,1)) {   '<br /><input type="checkbox" name="question" /> '.
     $msgoptions.=   &mt('Question about resource content');
       '<br><input type=checkbox name=course> '.   }
  'Question/Comment/Feedback about course content';   if (&feedback_available(0,1)) {
   }      $msgoptions.=
   if (&feedback_available(0,0,1)) {   '<br /><input type="checkbox" name="course" /> '.
     $msgoptions.=   &mt('Question/Comment/Feedback about course content');
       '<br><input type=checkbox name=policy> '.   }
  'Question/Comment/Feedback about course policy';   if (&feedback_available(0,0,1)) {
   }      $msgoptions.=
    '<br /><input type="checkbox" name="policy" /> '.
   if ($ENV{'request.course.id'}) {   &mt('Question/Comment/Feedback about course policy');
       if (&Apache::lonnet::allowed('pch',   }
         $ENV{'request.course.id'}.      }
         ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {      if ($ENV{'request.course.id'}) {
     $discussoptions='<input type="checkbox" name="discuss" onClick="this.form.anondiscuss.checked=false;"> '.   if (&Apache::lonnet::allowed('pch',
  'Contribution to course discussion of resource';       $ENV{'request.course.id'}.
     $discussoptions.='<br><input type="checkbox" name="anondiscuss" onClick="this.form.discuss.checked=false;"> '.       ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:''))) {
  'Anonymous contribution to course discussion of resource'.      $discussoptions='<input type="checkbox" name="discuss" onClick="this.form.anondiscuss.checked=false;" /> '.
         ' <i>(name only visible to course faculty)</i>';   &mt('Contribution to course discussion of resource');
       $discussoptions.='<br /><input type="checkbox" name="anondiscuss" onClick="this.form.discuss.checked=false;" /> '.
    &mt('Anonymous contribution to course discussion of resource').
    ' <i>('.&mt('name only visible to course faculty').')</i>';
       }        }
   }      }
   if ($msgoptions) { $msgoptions='<h2>Sending Messages</h2>'.$msgoptions; }      if ($msgoptions) { $msgoptions='<h2>'.&mt('Sending Messages').'</h2>'.$msgoptions; }
   if ($discussoptions) {       if ($discussoptions) { 
      $discussoptions='<h2>Discussion Contributions</h2>'.$discussoptions; }   $discussoptions='<h2>'.&mt('Discussion Contributions').'</h2>'.$discussoptions; }
   return $msgoptions.$discussoptions;      return $msgoptions.$discussoptions;
 }  }
   
 sub resource_output {  sub resource_output {
Line 363  sub clear_out_html { Line 416  sub clear_out_html {
       # allows <B> <I> <P> <A> <LI> <OL> <UL> <EM> <BR> <TT> <STRONG>         # allows <B> <I> <P> <A> <LI> <OL> <UL> <EM> <BR> <TT> <STRONG> 
       # <BLOCKQUOTE> <DIV .*> <DIV> <IMG>        # <BLOCKQUOTE> <DIV .*> <DIV> <IMG>
       my %html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1,        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+)[^\>\<]*)/        $message =~ s/\<(\/?\s*(\w+)[^\>\<]*)/
   {($html{uc($2)}&&(length($1)<1000))?"\<$1":"\&lt;$1"}/ge;    {($html{uc($2)}&&(length($1)<1000))?"\<$1":"\&lt;$1"}/ge;
       $message =~ s/(\<?\s*(\w+)[^\<\>]*)\>/        $message =~ s/(\<?\s*(\w+)[^\<\>]*)\>/
   {($html{uc($2)}&&(length($1)<1000))?"$1\>":"$1\&gt;"}/ge;    {($html{uc($2)}&&(length($1)<1000))?"$1\>":"$1\&gt;"}/ge;
   } else {    } else {
       $message=~s/\<\/*m\s*\>//g;  
       $message=~s/\</\&lt\;/g;        $message=~s/\</\&lt\;/g;
       $message=~s/\>/\&gt\;/g;        $message=~s/\>/\&gt\;/g;
   }    }
Line 387  ENDEMAIL Line 440  ENDEMAIL
     my $citations=<<"ENDCITE";      my $citations=<<"ENDCITE";
 <h2>Previous attempts of student (if applicable)</h2>  <h2>Previous attempts of student (if applicable)</h2>
 $prevattempts  $prevattempts
 <p><hr>  <br /><hr />
 <h2>Original screen output (if applicable)</h2>  <h2>Original screen output (if applicable)</h2>
 $usersaw  $usersaw
 <h2>Correct Answer(s) (if applicable)</h2>  <h2>Correct Answer(s) (if applicable)</h2>
Line 434  sub decide_receiver { Line 487  sub decide_receiver {
     }       } 
   }    }
   if ($ENV{'form.course'}||$course) {    if ($ENV{'form.course'}||$course) {
     $typestyle.='Submitting as Comment<br>';      $typestyle.='Submitting as Comment<br />';
     foreach (split(/\,/,      foreach (split(/\,/,
    $ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'})     $ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'})
      ) {       ) {
Line 443  sub decide_receiver { Line 496  sub decide_receiver {
     }       } 
   }    }
   if ($ENV{'form.policy'}||$policy) {    if ($ENV{'form.policy'}||$policy) {
     $typestyle.='Submitting as Policy Feedback<br>';      $typestyle.='Submitting as Policy Feedback<br />';
     foreach (split(/\,/,      foreach (split(/\,/,
    $ENV{'course.'.$ENV{'request.course.id'}.'.policy.email'})     $ENV{'course.'.$ENV{'request.course.id'}.'.policy.email'})
      ) {       ) {
Line 474  sub send_msg { Line 527  sub send_msg {
       unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$_),        unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$_),
                'Feedback ['.$declutter.']',$email,$citations,$feedurl,                 'Feedback ['.$declutter.']',$email,$citations,$feedurl,
                 $attachmenturl)=~/ok/) {                  $attachmenturl)=~/ok/) {
  $status.='<br>Error sending message to '.$_.'<br>';   $status.='<br />'.&mt('Error sending message to').' '.$_.'<br />';
       } else {        } else {
  $sendsomething++;   $sendsomething++;
       }        }
Line 488  sub send_msg { Line 541  sub send_msg {
        $newrecord{'resource'}=$feedurl;         $newrecord{'resource'}=$feedurl;
        $newrecord{'subnumber'}=$record{'subnumber'}+1;         $newrecord{'subnumber'}=$record{'subnumber'}+1;
        unless (&Apache::lonnet::cstore(\%newrecord,'_feedback') eq 'ok') {         unless (&Apache::lonnet::cstore(\%newrecord,'_feedback') eq 'ok') {
    $status.='<br>Not registered<br>';     $status.='<br />'.&mt('Not registered').'<br />';
        }         }
     }      }
                 
Line 510  sub adddiscuss { Line 563  sub adddiscuss {
                                    $ENV{'environment.lastname'}.' '.                                     $ENV{'environment.lastname'}.' '.
                                    $ENV{'enrironment.generation'},                                     $ENV{'enrironment.generation'},
                  'attachmenturl'=> $attachmenturl);                   'attachmenturl'=> $attachmenturl);
       if ($ENV{'form.replydisc'}) {
    $contrib{'replyto'}=(split(/\:\:\:/,$ENV{'form.replydisc'}))[1];
       }
     if ($anon) {      if ($anon) {
  $contrib{'anonymous'}='true';   $contrib{'anonymous'}='true';
     }      }
Line 519  sub adddiscuss { Line 575  sub adddiscuss {
                      $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},                       $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
      $ENV{'course.'.$ENV{'request.course.id'}.'.num'});       $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
         my %storenewentry=($symb => time);          my %storenewentry=($symb => time);
         $status.='<br>Updating discussion time: '.          $status.='<br />'.&mt('Updating discussion time').': '.
         &Apache::lonnet::put('discussiontimes',\%storenewentry,          &Apache::lonnet::put('discussiontimes',\%storenewentry,
                      $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},                       $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
      $ENV{'course.'.$ENV{'request.course.id'}.'.num'});       $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
Line 530  sub adddiscuss { Line 586  sub adddiscuss {
        my %newrecord=();         my %newrecord=();
        $newrecord{'resource'}=$symb;         $newrecord{'resource'}=$symb;
        $newrecord{'subnumber'}=$record{'subnumber'}+1;         $newrecord{'subnumber'}=$record{'subnumber'}+1;
        $status.='<br>Registering: '.         $status.='<br />'.&mt('Registering').': '.
                &Apache::lonnet::cstore(\%newrecord,'_discussion');                 &Apache::lonnet::cstore(\%newrecord,'_discussion');
     }      }
     } else {      } else {
  $status.='Failed.';   $status.='Failed.';
     }      }
     return $status.'<br>';         return $status.'<br />';   
 }  }
   
 # ----------------------------------------------------------- Preview function  # ----------------------------------------------------------- Preview function
Line 551  sub show_preview { Line 607  sub show_preview {
 }  }
   
 sub generate_preview_button {  sub generate_preview_button {
       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="comment" />  <input type="hidden" name="comment" />
 <input type="button" value="Show Preview"  <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.submit();" />
 </form>  </form>
 ENDPREVIEW  ENDPREVIEW
Line 570  sub handler { Line 627  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']);           ['hide','unhide','deldisc','postdata','preview','replydisc']);
   
   if (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) {    if (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) {
 # ----------------------------------------------------------------- Hide/unhide  # ----------------------------------------------------------------- Hide/unhide
Line 601  sub handler { Line 658  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),
        'Changed discussion status<p>','0','0');         &mt('Changed discussion status').'<br />','0','0');
   } elsif ($ENV{'form.deldisc'}) {    } elsif ($ENV{'form.deldisc'}) {
 # --------------------------------------------------------------- Hide for good  # --------------------------------------------------------------- Hide for good
     $r->content_type('text/html');      $r->content_type('text/html');
Line 628  sub handler { Line 685  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),
        'Changed discussion status<p>','0','0');         &mt('Changed discussion status').'<br />','0','0');
   } elsif ($ENV{'form.preview'}) {    } elsif ($ENV{'form.preview'}) {
 # -------------------------------------------------------- User wants a preview  # -------------------------------------------------------- User wants a preview
       &show_preview($r);        &show_preview($r);
Line 638  sub handler { Line 695  sub handler {
   $feedurl=~s/^http\:\/\///;    $feedurl=~s/^http\:\/\///;
   $feedurl=~s/^$ENV{'SERVER_NAME'}//;    $feedurl=~s/^$ENV{'SERVER_NAME'}//;
   $feedurl=~s/^$ENV{'HTTP_HOST'}//;    $feedurl=~s/^$ENV{'HTTP_HOST'}//;
     $feedurl=~s/\?.+$//;
   
   my $symb=&Apache::lonnet::symbread($feedurl);    my $symb;
     if ($ENV{'form.replydisc'}) {
         $symb=(split(/\:\:\:/,$ENV{'form.replydisc'}))[0];
         my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb);
         $feedurl=&Apache::lonnet::clutter($url);
     } else {
         $symb=&Apache::lonnet::symbread($feedurl);
     }
   unless ($symb) {    unless ($symb) {
       $symb=$ENV{'form.symb'};        $symb=$ENV{'form.symb'};
       if ($symb) {        if ($symb) {
Line 735  sub handler { Line 800  sub handler {
    }     }
   } else {    } else {
 # Ambiguous Problem Resource  # Ambiguous Problem Resource
       if ( Apache::exists_config_define("MODPERL2") ) {        if ( &Apache::lonnet::mod_perl_version() == 2 ) {
   &Apache::lonnet::cleanenv();    &Apache::lonnet::cleanenv();
       }        }
       $r->internal_redirect('/adm/ambiguous');        $r->internal_redirect('/adm/ambiguous');

Removed from v.1.55  
changed lines
  Added in v.1.68


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