Diff for /loncom/interface/lonfeedback.pm between versions 1.324 and 1.326

version 1.324, 2012/01/06 18:17:44 version 1.326, 2012/01/06 20:05:59
Line 975  sub build_posting_display { Line 975  sub build_posting_display {
             ($skiptest,$roleregexp,$secregexp,$statusregexp) =               ($skiptest,$roleregexp,$secregexp,$statusregexp) = 
                      &filter_regexp($rolefilter,$sectionpick,$statusfilter);                       &filter_regexp($rolefilter,$sectionpick,$statusfilter);
             $rolematch = $roleregexp.':'.$secregexp.':'.$statusregexp;              $rolematch = $roleregexp.':'.$secregexp.':'.$statusregexp;
         }           }
   # We need to go through this twice, first to get the likes/dislikes, then to actually build the display
           for (my $id=1;$id<=$contrib{'version'};$id++) {
               my $idx=$id;
               next if ($contrib{$idx.':deleted'});
               next if ($contrib{$idx.':hidden'});
               unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx}) || (!$contrib{$idx.':message'})) {
                   push(@theselikes,$likes{$symb.':'.$idx.':likes'});
               }
           }
   # Figure out average likes and standard deviation if there are enough discussions to warrant that
           my $ave=0;
           my $stddev=10000;
           if ($#theselikes>1) {
               my $sum=0;
               my $num=$#theselikes+1;
               foreach my $thislike (@theselikes) {
                   $sum+=$thislike;
               }
               $ave=$sum/$num;
               my $sumsq=0;
               foreach my $thislike (@theselikes) {
                   $sumsq+=($thislike-$ave)*($thislike-$ave);
               }
               $stddev=sqrt($sumsq/$num);
           }
   # Now we know the average likes $ave and the standard deviation $stddev
   # Get the boundaries for markup
           my $oneplus=$ave+$stddev;
           my $twoplus=$ave+2.*$stddev;
           my $oneminus=$ave-$stddev;
           my $twominus=$ave-2.*$stddev;
   #            &Apache::lonnet::logthis(join(',',@theselikes)." Ave $ave StdDev $stddev $twominus $oneminus $oneplus $twoplus");
   #
   # This is now the real loop. Go through all entries, pick up what we need
   # 
  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.':deleted'});
Line 1116  sub build_posting_display { Line 1151  sub build_posting_display {
                                     $sender.='&nbsp;'.&discussion_link($symb,&mt('Unlike'),'unlike',$idx,$$newpostsflag,$prevread,&group_args($group));                                      $sender.='&nbsp;'.&discussion_link($symb,&mt('Unlike'),'unlike',$idx,$$newpostsflag,$prevread,&group_args($group));
                                 }                                  }
                                 my $thislikes=$likes{$symb.':'.$idx.':likes'};                                  my $thislikes=$likes{$symb.':'.$idx.':likes'};
                                 push(@theselikes,$thislikes);  
                                 if ($thislikes>0) {                                   if ($thislikes>0) { 
                                     $sender.='&nbsp;('.&mt("[_1] likes",$thislikes).')';                                      $sender.='&nbsp;('.&mt("[_1] likes",$thislikes).')';
                                 } elsif ($thislikes<0) {                                  } elsif ($thislikes<0) {
Line 1304  sub build_posting_display { Line 1338  sub build_posting_display {
                             if ($$dischash{$toggkey}) {                              if ($$dischash{$toggkey}) {
                                 $$discussionitems[$idx].='&nbsp;&nbsp;'.$ctlink;                                  $$discussionitems[$idx].='&nbsp;&nbsp;'.$ctlink;
                             }                              }
   # Figure out size based on likes
                               my $thislikes=$likes{$symb.':'.$idx.':likes'};
                               my $likesize="100";
                               if ($thislikes>$twoplus) {
                                   $likesize="200";
                               } elsif ($thislikes>$oneplus) {
                                   $likesize="150";
                               }
                               if ($thislikes<$twominus) {
                                   $likesize="50";
                               } elsif ($thislikes<$oneminus) {
                                   $likesize="75";
                               }
                             $$discussionitems[$idx].= '<br /><blockquote>'.                              $$discussionitems[$idx].= '<br /><blockquote>'.
                                     $message.'</blockquote>';                                      "<div style='font-size:$likesize%'>".
                                       $message.
                                       '</div></blockquote>';
                             if ($contrib{$idx.':history'}) {                              if ($contrib{$idx.':history'}) {
                                 my @postversions = ();                                  my @postversions = ();
                                 $$discussionitems[$idx] .= &mt('This post has been edited by the author.');                                  $$discussionitems[$idx] .= &mt('This post has been edited by the author.');
Line 1334  sub build_posting_display { Line 1383  sub build_posting_display {
             }              }
 # end of the loop over all discussion entries  # end of the loop over all discussion entries
  }   }
 # Figure out average likes and standard deviation if there are enough discussions to warrant that  # end of "if there actually are any discussions
         if ($#theselikes>1) {  
             my $sum=0;  
             my $num=$#theselikes+1;  
             foreach my $thislike (@theselikes) {  
                 $sum.=$thislike;  
             }  
             my $ave=$sum/$num;  
             my $sumsq=0;  
             foreach my $thislike (@theselikes) {  
                 $sumsq+=($thislike-$ave)*($thislike-$ave);  
             }  
             my $stddev=sqrt($sumsq/$num);  
 #            &Apache::lonnet::logthis(join(',',@theselikes)." Ave $ave StdDev $stddev");  
         }  
 # end of "if there actually are any discussion  
     }      }
 # end of subroutine "build_posting_display"   # end of subroutine "build_posting_display" 
 }  }

Removed from v.1.324  
changed lines
  Added in v.1.326


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