--- loncom/interface/lonfeedback.pm 2012/01/10 00:54:05 1.331
+++ loncom/interface/lonfeedback.pm 2012/01/10 14:52:57 1.333
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.331 2012/01/10 00:54:05 www Exp $
+# $Id: lonfeedback.pm,v 1.333 2012/01/10 14:52:57 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1019,7 +1019,6 @@ sub build_posting_display {
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
#
@@ -1156,6 +1155,10 @@ sub build_posting_display {
@{$$namesort{$lastname}{$firstname}} = ("$idx");
}
if ($outputtarget ne 'tex') {
+ my $karma=&userkarma($contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'});
+ for (my $i=1;$i<=$karma;$i++) {
+ $sender.='';
+ }
unless ($likes{$symb.':'.$idx.':likers'}=~/\,\Q$thisuser\E\,/) {
$sender.=' '.&discussion_link($symb,'','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting"));
}
@@ -2683,7 +2686,7 @@ sub no_redirect_back {
'add_entries' => \%onload,);
if ($feedurl !~ m{^/adm/feedback}) {
- $body_options{'rediect'} = [2,$feedurl];
+ $body_options{'redirect'} = [2,$feedurl];
}
my $start_page=
&Apache::loncommon::start_page('Feedback not sent',undef,
@@ -3065,6 +3068,7 @@ sub adddiscuss {
$newrecord{'subnumber'}=$record{'subnumber'}+1;
$status.='
'.&mt('Registering').': '.
&Apache::lonnet::cstore(\%newrecord,'_discussion');
+ &updatekarma();
}
} else {
$status.='Failed.';
@@ -3112,6 +3116,27 @@ sub updatekarma {
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
@@ -3148,7 +3173,11 @@ sub storediscussionlikes {
'likes' => $likes,
'totallikes' => $totallikes,
'totalvotes' => $totalvotes);
- return &Apache::lonnet::cstore(\%newrecord,'_discussion',$course,$udom,$uname);
+ my $status=&Apache::lonnet::cstore(\%newrecord,'_discussion',$course,$udom,$uname);
+ if ($status eq 'ok') {
+ &updatekarma($uname,$udom,$course);
+ }
+ return $status;
}
sub get_discussion_info {