Diff for /loncom/interface/lonfeedback.pm between versions 1.290.2.7.2.1 and 1.298

version 1.290.2.7.2.1, 2012/03/06 21:24:01 version 1.298, 2010/08/14 15:24:46
Line 58  sub discussion_open { Line 58  sub discussion_open {
         return 1;          return 1;
     }      }
 # It was not explicitly open, check if the problem is available.  # It was not explicitly open, check if the problem is available.
 # If the problem is not available, close the discussion  # If the problem is not available, close the discussion 
     if (defined($status) &&      if (defined($status) &&
         !($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER'   !($status eq 'CAN_ANSWER' || $status eq 'CANNOT_ANSWER'
           || $status eq 'OPEN')) {    || $status eq 'OPEN')) {
         return 0;   return 0;
     }      }
 # The problem is available, but check if the instructor explictly closed discussion  # The problem is available, but check if the instructor explictly closed discussion
     if (defined($close) && $close ne '' && $close < time) {      if (defined($close) && $close ne '' && $close < time) {
         return 0;   return 0;
     }      }
     return 1;      return 1;
 }  }
Line 282  sub list_discussion { Line 282  sub list_discussion {
     my %anonhash=();      my %anonhash=();
     my $anoncnt=0;      my $anoncnt=0;
     my $target='';      my $target='';
     unless ($env{'browser.interface'} eq 'textual' ||  
     $env{'environment.remote'} eq 'off' ) {  
  $target='target="LONcom"';  
     }  
   
     my $now = time;      my $now = time;
     $discinfo{$visitkey} = $visit;      $discinfo{$visitkey} = $visit;
Line 425  imscp_v1p1.xsd http://www.imsglobal.org/ Line 421  imscp_v1p1.xsd http://www.imsglobal.org/
             }              }
  } else {   } else {
             my $colspan=$maxdepth+1;              my $colspan=$maxdepth+1;
 #JW  
             $discussion.= &Apache::lonhtmlcommon::scripttag(qq|              $discussion.= &Apache::lonhtmlcommon::scripttag(qq|
    function verifydelete (caller,symb,idx,newflag,previous,groupparm) {     function verifydelete (caller,symb,idx,newflag,previous,groupparm) {
        var symbparm = symb+':::'+idx         var symbparm = symb+':::'+idx
Line 727  END Line 722  END
                 $attachnum += @{$currnewattach};                  $attachnum += @{$currnewattach};
             }              }
         }          }
  if ((&discussion_open($status)) && ($outputtarget ne 'tex')) {   if (&discussion_open($status)) {
             if (($group ne '') && ($mode eq 'board')) {              if (($group ne '') && ($mode eq 'board')) {  
                 if ((&check_group_priv($group,'pgd') eq 'ok') &&                  if (&check_group_priv($group,'pgd') eq 'ok') {
                    ($ressymb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$})) {  
                     $discussion .=                      $discussion .=
  &postingform_display($mode,$ressymb,$now,$subject,   &postingform_display($mode,$ressymb,$now,$subject,
      $comment,$outputtarget,$attachnum,       $comment,$outputtarget,$attachnum,
Line 738  END Line 732  END
      $group,$crstype);       $group,$crstype);
                 }                  }
             } else {              } else {
                 if (&Apache::lonnet::allowed('pch',$env{'request.course.id'}.          $discussion.= 
                     ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {      &postingform_display($mode,$ressymb,$now,$subject,
    $comment,$outputtarget,$attachnum,
                     $discussion.=   $currnewattach,$currdelold,'',$crstype);
                         &postingform_display($mode,$ressymb,$now,$subject,  
                                              $comment,$outputtarget,$attachnum,  
                                              $currnewattach,$currdelold,'',$crstype);  
                 } else {  
                     $discussion.= '<span class="LC_feedback_link">'.  
                                   &mt('This discussion is closed.').'</span>';  
                 }  
             }              }
  }   }
         if (!(&discussion_open($status)) && ($outputtarget ne 'tex')) {      } else {
             $discussion.= '<span class="LC_feedback_link">'.  
                           &mt('This discussion is closed.').'</span>';  
         }  
     } elsif ($outputtarget ne 'tex') {  
         $discussion.='<div class="LC_feedback_link">';          $discussion.='<div class="LC_feedback_link">';
         if (&discussion_open($status) &&          if (&discussion_open($status) &&
             &Apache::lonnet::allowed('pch',              &Apache::lonnet::allowed('pch',
            $env{'request.course.id'}.             $env{'request.course.id'}.
         ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {          ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
     $discussion.= &send_feedback_link($ressymb,$target);      if ($outputtarget ne 'tex') {
             if ($env{'request.role.adv'}) {                  $discussion.= &send_feedback_link($ressymb,$target);
                 my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb);                  if ($env{'request.role.adv'}) {
                 if (defined($close) && $close ne '' && $close < time) {                      my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb);
                     $discussion .= '&nbsp;'.&mt('(Closed for [_1] roles)',                      if (defined($close) && $close ne '' && $close < time) {
                                                 &Apache::lonnet::plaintext('st',$crstype));                          $discussion .= '&nbsp;'.&mt('(Closed for [_1] roles)',
                                                       &Apache::lonnet::plaintext('st',$crstype));
                       }
                 }                  }
             }              }
         } else {   } else {
             $discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>';              if ($outputtarget ne 'tex') {
                   $discussion.= '<span class="LC_feedback_link">'.&mt('This discussion is closed.').'</span>';
               }
         }          }
  $discussion.= &send_message_link($ressymb).'</div>';          if ($outputtarget ne 'tex') {
       $discussion.= &send_message_link($ressymb);
           }
           $discussion.='</div>';
     }      }
     return $discussion;      return $discussion;
 }  }
Line 804  sub action_links_bar { Line 794  sub action_links_bar {
                      '<table width="100%" class="LC_disc_action_table"><tr>'.                       '<table width="100%" class="LC_disc_action_table"><tr>'.
                      '<td class="LC_disc_action_left">';                       '<td class="LC_disc_action_left">';
     my $escsymb=&escape($ressymb);      my $escsymb=&escape($ressymb);
     if ($visible) {      if ($visible>2) {
         $discussion .= '<a href="/adm/feedback?cmd=threadedon&amp;symb='.$escsymb;          $discussion .= '<a href="/adm/feedback?cmd=threadedon&amp;symb='.$escsymb;
         if ($newpostsflag) {          if ($newpostsflag) {
             $discussion .= '&amp;previous='.$prevread;              $discussion .= '&amp;previous='.$prevread;
Line 852  sub action_links_bar { Line 842  sub action_links_bar {
 sub postingform_display {  sub postingform_display {
     my ($mode,$ressymb,$now,$subject,$comment,$outputtarget,$attachnum,      my ($mode,$ressymb,$now,$subject,$comment,$outputtarget,$attachnum,
         $currnewattach,$currdelold,$group,$crstype) = @_;          $currnewattach,$currdelold,$group,$crstype) = @_;
       if ($outputtarget eq 'tex') { return ''; }
     my $newattachmsg;      my $newattachmsg;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
               'note' => 'Note: in anonymous discussion, your name is visible only to course faculty',                'note' => 'Note: in anonymous discussion, your name is visible only to course faculty',
Line 867  sub postingform_display { Line 858  sub postingform_display {
     if (&Apache::lonhtmlcommon::htmlareabrowser()) {      if (&Apache::lonhtmlcommon::htmlareabrowser()) {
         $postingform = &Apache::lonhtmlcommon::htmlareaselectactive();          $postingform = &Apache::lonhtmlcommon::htmlareaselectactive();
         $textareaclass = 'class="LC_richDefaultOff"';          $textareaclass = 'class="LC_richDefaultOff"';
         if ($env{'request.course.id'}) {  
             unless (($env{'course.'.$env{'request.course.id'}.'.allow_limited_html_in_feedback'} =~ /^\s*yes\s*$/i) || ($env{'form.sendmessageonly'})) {  
                 undef($textareaclass);  
             }  
         }  
     }      }
     $postingform .= (<<ENDDISCUSS);      $postingform .= (<<ENDDISCUSS);
 <form action="/adm/feedback" method="post" name="mailform" enctype="multipart/form-data"> <input type="submit" name="discuss" value="$lt{'podi'}" />  <form action="/adm/feedback" method="post" name="mailform" enctype="multipart/form-data"> <input type="submit" name="discuss" value="$lt{'podi'}" />
Line 904  ENDDISCUSS Line 890  ENDDISCUSS
     }      }
     $postingform .= "</form>\n";      $postingform .= "</form>\n";
     $postingform .= &generate_attachments_button('',$attachnum,$ressymb,      $postingform .= &generate_attachments_button('',$attachnum,$ressymb,
                                                  $now,$currnewattach,                                                       $now,$currnewattach,
                                                  $currdelold,'',$mode,                                                       $currdelold,'',$mode,
                                                  $blockblog);                                                       $blockblog);
     if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) {      if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) {
         $newattachmsg = '<br /><b>'.$lt{'newa'}.'</b><br />';          $newattachmsg = '<br /><b>'.$lt{'newa'}.'</b><br />';
         if (@{$currnewattach} > 1) {          if (@{$currnewattach} > 1) {
             $newattachmsg .= '<ol>';               $newattachmsg .= '<ol>';
             foreach my $item (@{$currnewattach}) {               foreach my $item (@{$currnewattach}) {
                 $item =~ m#.*/([^/]+)$#;                  $item =~ m#.*/([^/]+)$#;
                 $newattachmsg .= '<li><a href="'.$item.'">'.$1.'</a></li>'."\n";                  $newattachmsg .= '<li><a href="'.$item.'">'.$1.'</a></li>'."\n";
             }               }
             $newattachmsg .= '</ol>'."\n";               $newattachmsg .= '</ol>'."\n";
         } else {           } else {
             $$currnewattach[0] =~ m#.*/([^/]+)$#;               $$currnewattach[0] =~ m#.*/([^/]+)$#;
             $newattachmsg .= '<a href="'.$$currnewattach[0].'">'.$1.'</a><br />'."\n";               $newattachmsg .= '<a href="'.$$currnewattach[0].'">'.$1.'</a><br />'."\n";
         }           }
     }      }
     $postingform .= $newattachmsg;      $postingform .= $newattachmsg;
     $postingform .= &generate_preview_button();      $postingform .= &generate_preview_button();
Line 943  sub build_posting_display { Line 929  sub build_posting_display {
     if ((@{$grouppick} == 0) || (grep(/^all$/,@{$grouppick}))) {      if ((@{$grouppick} == 0) || (grep(/^all$/,@{$grouppick}))) {
         $skip_group_check = 1;          $skip_group_check = 1;
     }      }
     my (%deletions,%hiddens);  
     if ($contrib{'deleted'}) {  
        my $deleted = $contrib{'deleted'};  
        $deleted =~ s/^\.//;  
        $deleted =~ s/\.$//;  
        %deletions = map { $_ => 1 } (split(/\.\./,$deleted));  
     }  
     if ($contrib{'hidden'}) {  
        my $hidden = $contrib{'hidden'};  
        $hidden =~ s/^\.//;  
        $hidden =~ s/\.$//;  
        %hiddens = map { $_ => 1 } (split(/\.\./,$hidden));  
     }  
     if ($contrib{'version'}) {      if ($contrib{'version'}) {
         my $oldest = $contrib{'1:timestamp'};          my $oldest = $contrib{'1:timestamp'};
         if ($prevread eq '0') {          if ($prevread eq '0') {
Line 969  sub build_posting_display { Line 942  sub build_posting_display {
         }           } 
  for (my $id=1;$id<=$contrib{'version'};$id++) {   for (my $id=1;$id<=$contrib{'version'};$id++) {
     my $idx=$id;      my $idx=$id;
             next if ($contrib{$idx.':deleted'});  
             next if ($contrib{$idx.':hidden'});  
             my $posttime = $contrib{$idx.':timestamp'};              my $posttime = $contrib{$idx.':timestamp'};
             if ($prevread <= $posttime) {              if ($prevread <= $posttime) {
                 $$newpostsflag = 1;                  $$newpostsflag = 1;
             }              }
       my $hidden=($contrib{'hidden'}=~/\.$idx\./);
             my $studenthidden=($contrib{'studenthidden'}=~/\.$idx\./);              my $studenthidden=($contrib{'studenthidden'}=~/\.$idx\./);
       my $deleted=($contrib{'deleted'}=~/\.$idx\./);
     my $origindex='0.';      my $origindex='0.';
             my $numoldver=0;              my $numoldver=0;
     if ($contrib{$idx.':replyto'}) {      if ($contrib{$idx.':replyto'}) {
Line 999  sub build_posting_display { Line 972  sub build_posting_display {
     } else {      } else {
  $$replies[$$depth[$idx]]=1;   $$replies[$$depth[$idx]]=1;
     }      }
     unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx})) {      unless ((($hidden) && (!$seeid)) || ($deleted)) {
  $$visible++;   $$visible++;
                 if ($contrib{$idx.':history'}) {                  if ($contrib{$idx.':history'}) {
                     if ($contrib{$idx.':history'} =~ /:/) {                      if ($contrib{$idx.':history'} =~ /:/) {
Line 1014  sub build_posting_display { Line 987  sub build_posting_display {
                 my %subjects = ();                  my %subjects = ();
                 my %attachtxt = ();                  my %attachtxt = ();
                 my %allattachments = ();                  my %allattachments = ();
                 my ($screenname,$plainname,$showaboutme);                  my ($screenname,$plainname);
                 my $sender = &mt('Anonymous');                  my $sender = &mt('Anonymous');
 # Anonymous users getting number within a discussion  # Anonymous users getting number within a discussion
 # Since idx is in static order, this should give the same sequence every time.   # Since idx is in static order, this should give the same sequence every time. 
Line 1024  sub build_posting_display { Line 997  sub build_posting_display {
     $$anonhash{$key}=&mt('Anonymous').' '.$anoncnt;      $$anonhash{$key}=&mt('Anonymous').' '.$anoncnt;
  }   }
                 my ($message,$subject,$vgrlink,$ctlink);                  my ($message,$subject,$vgrlink,$ctlink);
                 &get_post_contents(\%contrib,$idx,$seeid,$outputtarget,\%messages,\%subjects,\%allattachments,\%attachtxt,$imsfiles,\$screenname,\$plainname,\$showaboutme,$numoldver);                  &get_post_contents(\%contrib,$idx,$seeid,$outputtarget,\%messages,\%subjects,\%allattachments,\%attachtxt,$imsfiles,\$screenname,\$plainname,$numoldver);
   
   
 # Set up for sorting by subject  # Set up for sorting by subject
Line 1033  sub build_posting_display { Line 1006  sub build_posting_display {
                     $message.=$attachtxt{$numoldver};                      $message.=$attachtxt{$numoldver};
                     $subject=$subjects{$numoldver};                      $subject=$subjects{$numoldver};
                     if ($message) {                      if ($message) {
           if ($hiddens{$idx}) {            if ($hidden) {
     $message='<font color="#888888">'.$message.'</font>';      $message='<font color="#888888">'.$message.'</font>';
                             if ($studenthidden) {                              if ($studenthidden) {
                                 $message .='<br /><br />Deleted by poster (student).';                                  $message .='<br /><br />Deleted by poster (student).';
Line 1054  sub build_posting_display { Line 1027  sub build_posting_display {
                             }                              }
                         }                          }
         if (!$contrib{$idx.':anonymous'} || $see_anonymous) {          if (!$contrib{$idx.':anonymous'} || $see_anonymous) {
                             if ($showaboutme) {      $sender=&Apache::loncommon::aboutmewrapper(
                                 $sender = &Apache::loncommon::aboutmewrapper(   $plainname,
                                               $plainname,   $contrib{$idx.':sendername'},
                                               $contrib{$idx.':sendername'},   $contrib{$idx.':senderdomain'}).' ('.
                                               $contrib{$idx.':senderdomain'});   $contrib{$idx.':sendername'}.':'.
                             } else {   $contrib{$idx.':senderdomain'}.')';
                                 $sender = $plainname;  
                             }  
                             if ($see_anonymous) {  
                                 $sender .= ' ('.$contrib{$idx.':sendername'}.':'.  
                                            $contrib{$idx.':senderdomain'}.')';  
                             }  
                             $sender = '<b>'.$sender.'</b>';                              $sender = '<b>'.$sender.'</b>';
     if ($contrib{$idx.':anonymous'}) {      if ($contrib{$idx.':anonymous'}) {
         $sender.=' <font color="red"><b>['.$$anonhash{$key}.']</b></font> '.          $sender.=' <font color="red"><b>['.$$anonhash{$key}.']</b></font> '.
Line 1103  sub build_posting_display { Line 1070  sub build_posting_display {
                             } else {                              } else {
                                 @{$$namesort{$lastname}{$firstname}} = ("$idx");                                  @{$$namesort{$lastname}{$firstname}} = ("$idx");
                             }                              }
                             if ($outputtarget ne 'tex') {                              if ((&editing_allowed($escsymb.':::'.$idx,$group)) && ($outputtarget ne 'tex')) {
                                 if (&editing_allowed($escsymb.':::'.$idx,$group)) {                                  if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) {
                                     if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) {                                      $sender.=' <a href="/adm/feedback?editdisc='.
                                         $sender.=' <a href="/adm/feedback?editdisc='.                                           $escsymb.':::'.$idx;
                                              $escsymb.':::'.$idx;                                      if ($$newpostsflag) {
                                         if ($$newpostsflag) {                                          $sender .= '&amp;previous='.$prevread;
                                             $sender .= '&amp;previous='.$prevread;                                      }
                                         }      $sender .= &group_args($group);
         $sender .= &group_args($group);                                      $sender .= '" '.$target.'>'.&mt('Edit').'</a>';
                                         $sender .= '" '.$target.'>'.&mt('Edit').'</a>';  
                                                                           
                                         unless ($seeid) {                                      unless ($seeid) {
                                             my $grpargs = &group_args($group);                                          my $grpargs = &group_args($group);
                                             $sender.=" <a href=\"javascript:verifydelete('studentdelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')";                                          $sender.=" <a href=\"javascript:verifydelete('studentdelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')";
                                             $sender .= '">'.&mt('Delete').'</a>';                                          $sender .= '">'.&mt('Delete').'</a>';
                                         }  
                                     }                                      }
                                 }                                  }
                                 if ($seeid) {                              } 
             if ($hiddens{$idx}) {      if (($seeid) && ($outputtarget ne 'tex')) {
                                         unless ($studenthidden) {          if ($hidden) {
                     $sender.=' <a href="/adm/feedback?unhide='.                                      unless ($studenthidden) {
                     $escsymb.':::'.$idx;                  $sender.=' <a href="/adm/feedback?unhide='.
                                             if ($$newpostsflag) {                  $escsymb.':::'.$idx;
                                                 $sender .= '&amp;previous='.$prevread;  
                                             }  
                                             $sender .= '">'.&mt('Make Visible').'</a>';  
                                         }  
             } else {  
         $sender.=' <a href="/adm/feedback?hide='.  
             $escsymb.':::'.$idx;  
                                         if ($$newpostsflag) {                                          if ($$newpostsflag) {
                                             $sender .= '&amp;previous='.$prevread;                                              $sender .= '&amp;previous='.$prevread;
                                         }                                          }
         $sender .= &group_args($group);                                          $sender .= '">'.&mt('Make Visible').'</a>';
                                         $sender .= '">'.&mt('Hide').'</a>';                                      }
             }          } else {
                                     my $grpargs = &group_args($group);      $sender.=' <a href="/adm/feedback?hide='.
             $sender.=           $escsymb.':::'.$idx;
                                         " <a href=\"javascript:verifydelete('seeiddelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')\">";                                      if ($$newpostsflag) {
                                     $sender .= &mt('Delete').'</a>';                                          $sender .= '&amp;previous='.$prevread;
                                 }                                      }
       $sender .= &group_args($group);
                                       $sender .= '">'.&mt('Hide').'</a>';
           }
                                   my $grpargs = &group_args($group);
           $sender.= 
                                       " <a href=\"javascript:verifydelete('seeiddelete','$escsymb','$idx','$$newpostsflag','$prevread','$grpargs')\">";
                                   $sender .= &mt('Delete').'</a>';
                             }                              }
         } else {          } else {
     if ($screenname) {      if ($screenname) {
Line 1172  sub build_posting_display { Line 1137  sub build_posting_display {
                                 @{$$namesort{'__anon'}{'__anon'}} = ("$idx");                                  @{$$namesort{'__anon'}{'__anon'}} = ("$idx");
                             }                              }
         }          }
                         if ($outputtarget ne 'tex') {          if ((&discussion_open($status)) && ($outputtarget ne 'tex')) {
                             if (&discussion_open($status)) {                              if (($group ne '') && 
                                 if (($group ne '') &&                                   (&check_group_priv($group,'pgd') eq 'ok')) {
                                     (&check_group_priv($group,'pgd') eq 'ok')) {                                   $sender.=' <a href="/adm/feedback?replydisc='.
                                      $sender.=' <a href="/adm/feedback?replydisc='.                                            $escsymb.':::'.$idx;
                                               $escsymb.':::'.$idx;                                  if ($$newpostsflag) {
                                     if ($$newpostsflag) {                                      $sender .= '&amp;previous='.$prevread;
                                         $sender .= '&amp;previous='.$prevread;  
                                     }  
                                     $sender .= &group_args($group);  
                                     $sender .= '" '.$target.'>'.&mt('Reply').'</a>';  
                                 } elsif (&Apache::lonnet::allowed('pch',   
      $env{'request.course.id'}.  
      ($env{'request.course.sec'}?'/'.  
                                       $env{'request.course.sec'}:''))) {  
              $sender.=' <a href="/adm/feedback?replydisc='.  
                       $escsymb.':::'.$idx;  
                                     if ($$newpostsflag) {  
                                         $sender .= '&amp;previous='.$prevread;  
                                     }  
                                     $sender .= '" '.$target.'>'.&mt('Reply').'</a>';  
                                 }                                  }
                                   $sender .= &group_args($group);
                                   $sender .= '" '.$target.'>'.&mt('Reply').'</a>';
                               } elsif (&Apache::lonnet::allowed('pch', 
    $env{'request.course.id'}.
    ($env{'request.course.sec'}?'/'.
                                     $env{'request.course.sec'}:''))) {
            $sender.=' <a href="/adm/feedback?replydisc='.
                     $escsymb.':::'.$idx;
                                   if ($$newpostsflag) {
                                       $sender .= '&amp;previous='.$prevread;
                                   }
                                   $sender .= '" '.$target.'>'.&mt('Reply').'</a>';
                             }                              }
                             if ($viewgrades) {                          }
           if (($viewgrades) && ($outputtarget ne 'tex')) {
         $vgrlink=&Apache::loncommon::submlink(&mt('Submissions'),          $vgrlink=&Apache::loncommon::submlink(&mt('Submissions'),
                                 $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$ressymb);                              $contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$ressymb);
             }          }
                             if ($$dischash{$readkey}=~/\.$idx\./) {                          if (($$dischash{$readkey}=~/\.$idx\./) && ($outputtarget ne 'tex')) { 
                                 $ctlink = '<label><b>'.&mt('Mark unread').'?</b>&nbsp;<input type="checkbox" name="postunread_'.$idx.'" /></label>';                              $ctlink = '<label><b>'.&mt('Mark unread').'?</b>&nbsp;<input type="checkbox" name="postunread_'.$idx.'" /></label>';
                             } else {                          } else {
                                 $ctlink = '<label><b>'.&mt('Mark read').'?</b>&nbsp;<input type="checkbox" name="postread_'.$idx.'" /></label>';                              $ctlink = '<label><b>'.&mt('Mark read').'?</b>&nbsp;<input type="checkbox" name="postread_'.$idx.'" /></label>';
                             }  
                         }                          }
                     }                      }
 #figure out at what position this needs to print  #figure out at what position this needs to print
Line 1220  sub build_posting_display { Line 1183  sub build_posting_display {
                 if ($outputtarget eq 'export') {                  if ($outputtarget eq 'export') {
                     %{$$imsitems{$idx}} = ();                      %{$$imsitems{$idx}} = ();
                     $$imsitems{$idx}{'isvisible'}='true';                      $$imsitems{$idx}{'isvisible'}='true';
                     if ($hiddens{$idx}) {                      if ($hidden) {
                         $$imsitems{$idx}{'isvisible'}='false';                          $$imsitems{$idx}{'isvisible'}='false';
                     }                      }
                     $$imsitems{$idx}{'title'}=$subjects{$numoldver};                      $$imsitems{$idx}{'title'}=$subjects{$numoldver};
Line 1402  sub filter_regexp { Line 1365  sub filter_regexp {
   
   
 sub get_post_contents {  sub get_post_contents {
     my ($contrib,$idx,$seeid,$type,$messages,$subjects,$allattachments,$attachtxt,$imsfiles,$screenname,$plainname,$showaboutme,$numver) = @_;      my ($contrib,$idx,$seeid,$type,$messages,$subjects,$allattachments,$attachtxt,$imsfiles,$screenname,$plainname,$numver) = @_;
     my $discussion = '';      my $discussion = '';
     my $start=$numver;      my $start=$numver;
     my $end=$numver + 1;      my $end=$numver + 1;
Line 1420  sub get_post_contents { Line 1383  sub get_post_contents {
                                         $$contrib{$idx.':sendername'},                                          $$contrib{$idx.':sendername'},
                                         $$contrib{$idx.':senderdomain'});                                          $$contrib{$idx.':senderdomain'});
     $$screenname=$$contrib{$idx.':screenname'};      $$screenname=$$contrib{$idx.':screenname'};
     $$showaboutme = &Apache::lonnet::usertools_access($$contrib{$idx.':sendername'},  
                                                       $$contrib{$idx.':senderdomain'},      my $sender=&Apache::loncommon::aboutmewrapper(
                                                       'aboutme');                                   $$plainname,
     my $sender = $$plainname;                                   $$contrib{$idx.':sendername'},
     if ($$showaboutme) {                                   $$contrib{$idx.':senderdomain'}).' ('.
         $sender = &Apache::loncommon::aboutmewrapper(                                   $$contrib{$idx.':sendername'}.':'.
                                                      $$plainname,                                   $$contrib{$idx.':senderdomain'}.')';
                                                      $$contrib{$idx.':sendername'},  
                                                      $$contrib{$idx.':senderdomain'});  
     }  
     if ($seeid) {  
         $sender .= ' ('. $$contrib{$idx.':sendername'}.':'.  
                    $$contrib{$idx.':senderdomain'}.')';  
     }  
     my $attachmenturls = $$contrib{$idx.':attachmenturl'};      my $attachmenturls = $$contrib{$idx.':attachmenturl'};
     my @postversions = ();      my @postversions = ();
     if ($type eq 'allversions' || $type eq 'export') {      if ($type eq 'allversions' || $type eq 'export') {
Line 1734  END Line 1690  END
   if (&Apache::lonhtmlcommon::htmlareabrowser()) {    if (&Apache::lonhtmlcommon::htmlareabrowser()) {
       $textareaheader = &Apache::lonhtmlcommon::htmlareaselectactive();        $textareaheader = &Apache::lonhtmlcommon::htmlareaselectactive();
       $textareaclass = 'class="LC_richDefaultOff"';        $textareaclass = 'class="LC_richDefaultOff"';
       if ($env{'request.course.id'}) {  
           unless (($env{'course.'.$env{'request.course.id'}.'.allow_limited_html_in_feedback'} =~ /^\s*yes\s*$/i) || ($env{'form.sendmessageonly'})) {  
               undef($textareaclass);  
           }  
       }  
   }    }
   
   # Breadcrumbs    # Breadcrumbs
Line 1789  $latexHelp Line 1740  $latexHelp
 <p>  <p>
 $lt{'title'}: <input type="text" name="subject" size="30" value="$subject" /></p>  $lt{'title'}: <input type="text" name="subject" size="30" value="$subject" /></p>
 <p>  <p>
 <textarea name="comment" id="comment" cols="60" rows="10"  $textareaclass>$comment  <textarea name="comment" id="comment" cols="60" rows="10" $textareaclass>$comment
 </textarea></p>  </textarea></p>
 END  END
     if ( ($env{'form.editdisc'}) || ($env{'form.replydisc'}) ) {      if ( ($env{'form.editdisc'}) || ($env{'form.replydisc'}) ) {
Line 2315  sub print_showposters { Line 2266  sub print_showposters {
     my $group = $env{'form.group'};      my $group = $env{'form.group'};
     my $ressymb = &wrap_symb($symb);      my $ressymb = &wrap_symb($symb);
     if (($group ne '') &&      if (($group ne '') &&
         ($ressymb =~ m|^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$|)) {          ($ressymb =~ m|^bulletin___ \d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$|)) {
         if (&check_group_priv($group,'dgp') eq 'ok') {          if (&check_group_priv($group,'dgp') eq 'ok') {
             $seeid = 1;              $seeid = 1;
         }          }
Line 2589  sub redirect_back { Line 2540  sub redirect_back {
   &Apache::lonenc::check_encrypt(\$feedurl);    &Apache::lonenc::check_encrypt(\$feedurl);
   my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');    my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');
   my %onload;    my %onload;
   if ($env{'environment.remote'} ne 'off') {  
       $onload{'onload'} =  
   "if (window.name!='loncapaclient') { this.document.reldt.submit(); self.window.close(); }";  
   }  
   my $start_page=    my $start_page=
       &Apache::loncommon::start_page('Feedback sent',undef,        &Apache::loncommon::start_page('Feedback sent',undef,
      {'redirect'    => [0,$feedurl],       {'redirect'    => [0,$feedurl],
Line 2626  sub no_redirect_back { Line 2573  sub no_redirect_back {
   my $nofeed=&mt('Sorry, no feedback possible on this resource ...');    my $nofeed=&mt('Sorry, no feedback possible on this resource ...');
     
   my %onload;    my %onload;
   if ($env{'environment.remote'} ne 'off') {  
       $onload{'onload'} =   
   "if (window.name!='loncapaclient') { self.window.close(); }";  
   }  
   
   my %body_options = ('only_body'   => 1,    my %body_options = ('only_body'   => 1,
       'bgcolor'     => '#FFFFFF',        'bgcolor'     => '#FFFFFF',
Line 2656  ENDNOREDIRTWO Line 2599  ENDNOREDIRTWO
 }  }
   
 sub screen_header {  sub screen_header {
     my ($feedurl,$symb,$group) = @_;      my ($feedurl,$symb) = @_;
     my $crscontent = &mt('Question/Comment/Feedback about course content');      my $crscontent = &mt('Question/Comment/Feedback about course content');
     my $crspolicy = &mt('Question/Comment/Feedback about course policy');      my $crspolicy = &mt('Question/Comment/Feedback about course policy');
     my $contribdisc = &mt('Contribution to course discussion of resource');      my $contribdisc = &mt('Contribution to course discussion of resource');
Line 2705  sub screen_header { Line 2648  sub screen_header {
     }      }
     if (($env{'request.course.id'}) && (!$env{'form.sendmessageonly'})) {      if (($env{'request.course.id'}) && (!$env{'form.sendmessageonly'})) {
         my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('boards');          my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('boards');
         my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};          if (!$blocked && &discussion_open(undef,$symb) && 
         my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      &Apache::lonnet::allowed('pch',
         my $realsymb = $symb;  
         if ($symb=~/^bulletin___/) {  
             my $filename=(&Apache::lonnet::decode_symb($symb))[2];  
             $filename=~s|^adm/wrapper/||;  
             $realsymb=&Apache::lonnet::symbread($filename);  
         }  
         if (!$blocked && &discussion_open(undef,$realsymb) &&   
     (&Apache::lonnet::allowed('pch',  
      $env{'request.course.id'}.       $env{'request.course.id'}.
      ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) ||       ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
             (($group ne '') && ($symb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$}) && (&check_group_priv($group,'pgd') eq 'ok')))) {  
     $discussoptions='<label><input type="radio" name="discuss" value="nonanon" checked="checked" /> '.      $discussoptions='<label><input type="radio" name="discuss" value="nonanon" checked="checked" /> '.
  $contribdisc.   $contribdisc.
         '</label><br /><label><input type="radio" name="discuss" value="anon" /> '.          '</label><br /><label><input type="radio" name="discuss" value="anon" /> '.
Line 2768  sub clear_out_html { Line 2702  sub clear_out_html {
       # <BLOCKQUOTE> <DIV .*> <DIV> <IMG> <M> <SPAN> <H1> <H2> <H3> <H4> <SUB>        # <BLOCKQUOTE> <DIV .*> <DIV> <IMG> <M> <SPAN> <H1> <H2> <H3> <H4> <SUB>
       # <SUP> <TABLE> <TR> <TD> <TH> <TBODY>        # <SUP> <TABLE> <TR> <TD> <TH> <TBODY>
       %html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1,        %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, PRE=>1, DIV=>1, IMG=>1,       BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, PRE=>1, DIV=>1, IMG=>1,
              M=>1, CHEM=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>1,       M=>1, CHEM=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>1,  
      H1=>1, H2=>1, H3=>1, H4=>1, H5=>1, H6=>1,        H1=>1, H2=>1, H3=>1, H4=>1, H5=>1, H6=>1, 
      TABLE=>1, TR=>1, TD=>1, TH=>1, TBODY=>1);       TABLE=>1, TR=>1, TD=>1, TH=>1, TBODY=>1);
   }    }
Line 2856  sub send_msg { Line 2790  sub send_msg {
 }  }
   
 sub adddiscuss {  sub adddiscuss {
     my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_;      my ($symb,$email,$anon,$attachmenturl,$subject)=@_;
     my $status='';      my $status='';
     my $realsymb;      my $realsymb;
     if ($symb=~/^bulletin___/) {      if ($symb=~/^bulletin___/) {
Line 2864  sub adddiscuss { Line 2798  sub adddiscuss {
  $filename=~s|^adm/wrapper/||;   $filename=~s|^adm/wrapper/||;
  $realsymb=&Apache::lonnet::symbread($filename);   $realsymb=&Apache::lonnet::symbread($filename);
     }      }
     my ($cnum,$cdom);  
     if ($env{'request.course.id'}) {  
         $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
         $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
     }  
     if (&discussion_open(undef,$realsymb) &&      if (&discussion_open(undef,$realsymb) &&
         (&Apache::lonnet::allowed('pch',$env{'request.course.id'}.   &Apache::lonnet::allowed('pch',$env{'request.course.id'}.
          ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) ||          ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
          (($group ne '') && (&check_group_priv($group,'pgd') eq 'ok') &&  
          ($symb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$})))) {  
   
     my %contrib=('message'      => $email,      my %contrib=('message'      => $email,
                  'sendername'   => $env{'user.name'},                   'sendername'   => $env{'user.name'},
Line 3575  sub handler { Line 3502  sub handler {
           my %attachmsgs = ();            my %attachmsgs = ();
           my %allattachments = ();            my %allattachments = ();
           my %imsfiles = ();            my %imsfiles = ();
           my ($screenname,$plainname,$showaboutme);            my ($screenname,$plainname);
           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'});
           $r->print(&get_post_contents(\%contrib,$idx,$seeid,'allversions',\%messages,\%subjects,\%allattachments,\%attachmsgs,\%imsfiles,\$screenname,\$plainname,\$showaboutme));            $r->print(&get_post_contents(\%contrib,$idx,$seeid,'allversions',\%messages,\%subjects,\%allattachments,\%attachmsgs,\%imsfiles,\$screenname,\$plainname));
       }        }
       $r->print(&Apache::loncommon::end_page());        $r->print(&Apache::loncommon::end_page());
       return OK;        return OK;
Line 3652  sub handler { Line 3579  sub handler {
       $r->send_http_header;        $r->send_http_header;
       my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');        my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');
       my %onload;        my %onload;
       if ($env{'environment.remote'} ne 'off') {  
   $onload{'onload'} =  
       "if (window.name!='loncapaclient') { this.document.reldt.submit(); self.window.close(); }";  
       }  
   
       my $start_page=        my $start_page=
   &Apache::loncommon::start_page('New posts marked as read',undef,    &Apache::loncommon::start_page('New posts marked as read',undef,
Line 3922  ENDREDIR Line 3845  ENDREDIR
                   return OK;                    return OK;
               }                }
           }            }
   my $options=&screen_header($feedurl,$symb,$group);    my $options=&screen_header($feedurl,$symb);
   if ($options) {    if ($options) {
       &mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'});        &mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'});
   } else {    } else {
Line 3978  ENDREDIR Line 3901  ENDREDIR
           }            }
       }        }
 # Filter HTML out of message (could be nasty)  # Filter HTML out of message (could be nasty)
       my $override;        my $message=&clear_out_html($env{'form.comment'});
       if ($env{'form.discuss'} =~ /^(?:author|question|course|policy)$/) {  
           $override = 1;  
       }  
       my $message=&clear_out_html($env{'form.comment'},$override);  
   
 # Assemble email  # Assemble email
       my ($email,$citations)=&assemble_email($message,$prevattempts,        my ($email,$citations)=&assemble_email($message,$prevattempts,
Line 4004  ENDREDIR Line 3923  ENDREDIR
   my $subject = &clear_out_html($env{'form.subject'});    my $subject = &clear_out_html($env{'form.subject'});
   my $anonmode=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} );    my $anonmode=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} );
   $typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl,    $typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl,
   $subject,$group);    $subject);
   $numpost++;    $numpost++;
       }        }
   

Removed from v.1.290.2.7.2.1  
changed lines
  Added in v.1.298


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