Diff for /loncom/interface/lonfeedback.pm between versions 1.330 and 1.333

version 1.330, 2012/01/09 19:56:28 version 1.333, 2012/01/10 14:52:57
Line 1019  sub build_posting_display { Line 1019  sub build_posting_display {
         my $twoplus=$ave+2.*$stddev;          my $twoplus=$ave+2.*$stddev;
         my $oneminus=$ave-$stddev;          my $oneminus=$ave-$stddev;
         my $twominus=$ave-2.*$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  # This is now the real loop. Go through all entries, pick up what we need
 #   # 
Line 1156  sub build_posting_display { Line 1155  sub build_posting_display {
                                 @{$$namesort{$lastname}{$firstname}} = ("$idx");                                  @{$$namesort{$lastname}{$firstname}} = ("$idx");
                             }                              }
                             if ($outputtarget ne 'tex') {                              if ($outputtarget ne 'tex') {
                                   my $karma=&userkarma($contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'});
                                   for (my $i=1;$i<=$karma;$i++) {
                                       $sender.='<img border="0" src="/res/adm/pages/star.gif" alt="'.&mt('Contributor Kudos').'" />';
                                   }
                                 unless ($likes{$symb.':'.$idx.':likers'}=~/\,\Q$thisuser\E\,/) {                                  unless ($likes{$symb.':'.$idx.':likers'}=~/\,\Q$thisuser\E\,/) {
                                     $sender.='&nbsp;'.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsup.png" alt="'.&mt('Like').'" />','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like"));                                      $sender.='&nbsp;'.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsup.png" alt="'.&mt('Like').'" />','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting"));
                                 }                                  }
                                 unless ($likes{$symb.':'.$idx.':unlikers'}=~/\,\Q$thisuser\E\,/) {                                  unless ($likes{$symb.':'.$idx.':unlikers'}=~/\,\Q$thisuser\E\,/) {
                                     $sender.='&nbsp;'.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsdown.png" alt="'.&mt('Unlike').'" />',,'unlike',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Unlike"));                                      $sender.='&nbsp;'.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsdown.png" alt="'.&mt('Unlike').'" />',,'unlike',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Unlike this posting"));
                                 }                                  }
                                 my $thislikes=$likes{$symb.':'.$idx.':likes'};                                  my $thislikes=$likes{$symb.':'.$idx.':likes'};
                                 if ($thislikes>0) {                                   if ($thislikes>0) { 
Line 2683  sub no_redirect_back { Line 2686  sub no_redirect_back {
       'add_entries' => \%onload,);        'add_entries' => \%onload,);
   
   if ($feedurl !~ m{^/adm/feedback}) {     if ($feedurl !~ m{^/adm/feedback}) { 
       $body_options{'rediect'} = [2,$feedurl];        $body_options{'redirect'} = [2,$feedurl];
   }    }
   my $start_page=    my $start_page=
       &Apache::loncommon::start_page('Feedback not sent',undef,        &Apache::loncommon::start_page('Feedback not sent',undef,
Line 2935  sub storefeedbackpoints { Line 2938  sub storefeedbackpoints {
     my %record=('grader_user'   => $env{'user.name'},      my %record=('grader_user'   => $env{'user.name'},
                 'grader_domain' => $env{'user.domain'},                  'grader_domain' => $env{'user.domain'},
                 'points' => $points);                  'points' => $points);
     return &Apache::lonnet::cstore(\%record,'_feedback');      return &Apache::lonnet::cstore(\%record,'_feedback',$course,$udom,$uname);
 }  }
   
 # Store feedback "likes"  # Store feedback "likes"
Line 2955  sub storefeedbacklikes { Line 2958  sub storefeedbacklikes {
                    'likes_domain' => $env{'user.domain'},                     'likes_domain' => $env{'user.domain'},
                    'likes' => $likes,                     'likes' => $likes,
                    'totallikes' => $totallikes);                     'totallikes' => $totallikes);
     return &Apache::lonnet::cstore(\%newrecord,'_feedback');      return &Apache::lonnet::cstore(\%newrecord,'_feedback',$course,$udom,$uname);
 }  }
   
   
Line 3065  sub adddiscuss { Line 3068  sub adddiscuss {
        $newrecord{'subnumber'}=$record{'subnumber'}+1;         $newrecord{'subnumber'}=$record{'subnumber'}+1;
        $status.='<br />'.&mt('Registering').': '.         $status.='<br />'.&mt('Registering').': '.
                &Apache::lonnet::cstore(\%newrecord,'_discussion');                 &Apache::lonnet::cstore(\%newrecord,'_discussion');
          &updatekarma();
     }      }
     } else {      } else {
  $status.='Failed.';   $status.='Failed.';
Line 3088  sub getdiscussionrecords { Line 3092  sub getdiscussionrecords {
   
 sub getdiscussionstats {  sub getdiscussionstats {
     my %record=&getdiscussionrecords(@_);      my %record=&getdiscussionrecords(@_);
     return ($record{'subnumber'},$record{'points'},$record{'totallikes'});      return ($record{'subnumber'},$record{'points'},$record{'totallikes'},$record{'totalvotes'});
   }
   
   # Calculate discussion karma
   
   sub calcdiscussionkarma {    
       my ($subs,$pts,$likes,$votes)=&getdiscussionstats(@_);
       my $karma=0;
       if ($votes>0) {
           $karma=int(.1+5.*(1.-exp(-$subs/10.))*$likes/$votes);
           if ($karma<0) { $karma=0; }
           if ($karma>5) { $karma=5; }
       }
       return $karma;
 }  }
   
   # Update karma
   
   sub updatekarma {
       my ($uname,$udom,$course)=@_;
       unless ($uname) { $uname=$env{'user.name'}; }
       unless ($udom)  { $udom=$env{'user.domain'}; }
       unless ($course) { $course=$env{'request.course.id'}; }
       my $karma=&calcdiscussionkarma($uname,$udom,$course);
       &Apache::lonnet::cstore({ 'karma' => $karma },'_discussion',$course,$udom,$uname);
       &Apache::lonnet::do_cache_new('karma',$uname.':'.$udom.':'.$course,$karma,3600);
       return $karma;
   }
   
   # Retrieve karma
   
   sub userkarma {
       my ($uname,$udom,$course)=@_;
       unless ($uname) { $uname=$env{'user.name'}; }
       unless ($udom)  { $udom=$env{'user.domain'}; }
       unless ($course) { $course=$env{'request.course.id'}; }
       my $hashkey=$uname.':'.$udom.':'.$course;
       my ($karma,$cached)=&Apache::lonnet::is_cached_new('karma',$hashkey);
       if ($cached) {
           return $karma;
       }
       my %userdisc=&getdiscussionrecords($uname,$udom,$course);
       $karma=$userdisc{'karma'};
       &Apache::lonnet::do_cache_new('karma',$hashkey,$karma,3600);
       return $karma;
   }
   
 # Store discussion credit  # Store discussion credit
   
Line 3103  sub storediscussionpoints { Line 3150  sub storediscussionpoints {
     my %record=('grader_user'   => $env{'user.name'},      my %record=('grader_user'   => $env{'user.name'},
                 'grader_domain' => $env{'user.domain'},                  'grader_domain' => $env{'user.domain'},
                 'points' => $points);                  'points' => $points);
     return &Apache::lonnet::cstore(\%record,'_discussion');      return &Apache::lonnet::cstore(\%record,'_discussion',$course,$udom,$uname);
 }  }
   
 # Store discussion "likes"  # Store discussion "likes"
Line 3118  sub storediscussionlikes { Line 3165  sub storediscussionlikes {
     unless ($course) { $course=$env{'request.course.id'}; }      unless ($course) { $course=$env{'request.course.id'}; }
     my %record=&getdiscussionrecords($uname,$udom,$course);      my %record=&getdiscussionrecords($uname,$udom,$course);
     my $totallikes=$record{'totallikes'};      my $totallikes=$record{'totallikes'};
       my $totalvotes=$record{'totalvotes'};
     $totallikes+=$likes;      $totallikes+=$likes;
       $totalvotes++;
     my %newrecord=('likes_user'   => $env{'user.name'},      my %newrecord=('likes_user'   => $env{'user.name'},
                    'likes_domain' => $env{'user.domain'},                     'likes_domain' => $env{'user.domain'},
                    'likes' => $likes,                     'likes' => $likes,
                    'totallikes' => $totallikes);                     'totallikes' => $totallikes,
     return &Apache::lonnet::cstore(\%newrecord,'_discussion');                     'totalvotes' => $totalvotes);
       my $status=&Apache::lonnet::cstore(\%newrecord,'_discussion',$course,$udom,$uname);
       if ($status eq 'ok') {
           &updatekarma($uname,$udom,$course);
       }
       return $status;
 }  }
   
 sub get_discussion_info {  sub get_discussion_info {

Removed from v.1.330  
changed lines
  Added in v.1.333


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