--- loncom/interface/lonfeedback.pm 2012/01/04 00:08:29 1.316 +++ loncom/interface/lonfeedback.pm 2012/01/04 19:27:04 1.319 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.316 2012/01/04 00:08:29 www Exp $ +# $Id: lonfeedback.pm,v 1.319 2012/01/04 19:27:04 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -296,8 +296,6 @@ sub list_discussion { my $copyresult; my $function = &Apache::loncommon::get_users_function(); - my $color = &Apache::loncommon::designparm($function.'.tabbg', - $env{'user.domain'}); my %lt = &Apache::lonlocal::texthash( 'cuse' => 'My settings for this discussion', 'allposts' => 'All posts', @@ -504,7 +502,7 @@ imscp_v1p1.xsd http://www.imsglobal.org/ my $thisdepth=$depth[$alldiscussion{$post}]; if ($outputtarget ne 'tex' && $outputtarget ne 'export') { for (1..$thisdepth) { - $discussion.='   '; + $discussion.='    '; } } my $colspan=$maxdepth-$thisdepth+1; @@ -2789,8 +2787,11 @@ sub send_msg { } } - - my %record=&Apache::lonnet::restore('_feedback'); +# Records of number of postings, etc, are kept under the "symb" called "_feedback" +# There are two entries within the framework of a course: +# - the URLs for which feedback was provided +# - the total number of contributions + my %record=&getdiscrecords(); my ($temp)=keys(%record); unless ($temp=~/^error\:/) { my %newrecord=(); @@ -2804,6 +2805,66 @@ sub send_msg { return ($status,$sendsomething); } +# Routine to get the complete discussion records + +sub getdiscrecords { + my ($uname,$udom,$course)=@_; + unless ($uname) { $uname=$env{'user.name'}; } + unless ($udom) { $udom=$env{'user.domain'}; } + unless ($course) { $course=$env{'request.course.id'}; } + my %record=&Apache::lonnet::restore('_feedback',$course,$udom,$uname); + return %record; +} + +# Routine to get discussion statistics + +sub getdiscstats { + my %record=&getdiscrecords(@_); + my $subnumber=$record{'subnumber'}; + my $points=0; + my $likes=0; + foreach my $key (keys(%record)) { + if ($key=~/^\d+\:points$/) { + $points+=$record{$key}; + } + if ($key=~/^\d+\:likes$/) { + $likes+=$record{$key}; + } + } + return ($subnumber,$points,$likes); +} + +# Store discussion credit + +sub storediscpoints { + my ($points,$uname,$udom,$course)=@_; + unless ($points) { $points=0; } + unless ($uname) { $uname=$env{'user.name'}; } + unless ($udom) { $udom=$env{'user.domain'}; } + unless ($course) { $course=$env{'request.course.id'}; } + my %record=('grader_user' => $env{'user.name'}, + 'grader_domain' => $env{'user.domain'}, + 'points' => $points); + return &Apache::lonnet::cstore(\%record,'_feedback'); +} + +# Store discussion "likes" + +sub storedisclikes { + my ($likes,$uname,$udom,$course)=@_; + unless ($likes) { $likes=0; } + if ($likes>0) { $likes=1; } + if ($likes<0) { $likes=-1; } + unless ($uname) { $uname=$env{'user.name'}; } + unless ($udom) { $udom=$env{'user.domain'}; } + unless ($course) { $course=$env{'request.course.id'}; } + my %record=('likes_user' => $env{'user.name'}, + 'likes_domain' => $env{'user.domain'}, + 'likes' => $likes); + return &Apache::lonnet::cstore(\%record,'_feedback'); +} + + sub adddiscuss { my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_; my $status='';