version 1.290.2.7.2.2, 2012/03/07 01:26:48
|
version 1.290.2.7.2.3, 2012/03/09 15:09:39
|
Line 956 sub build_posting_display {
|
Line 956 sub build_posting_display {
|
my $thisuser=$env{'user.name'}.':'.$env{'user.domain'}; |
my $thisuser=$env{'user.name'}.':'.$env{'user.domain'}; |
# Array with likes to figure out averages, etc. |
# Array with likes to figure out averages, etc. |
my @theselikes=(); |
my @theselikes=(); |
|
# Hashes containing likes and unlikes for this user. |
|
my %userlikes=(); |
|
my %userunlikes=(); |
# Is the user allowed to see the real name behind anonymous postings? |
# Is the user allowed to see the real name behind anonymous postings? |
my $see_anonymous = |
my $see_anonymous = |
&Apache::lonnet::allowed('rin',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')); |
&Apache::lonnet::allowed('rin',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')); |
Line 993 sub build_posting_display {
|
Line 996 sub build_posting_display {
|
next if ($contrib{$idx.':deleted'}); |
next if ($contrib{$idx.':deleted'}); |
next if ($contrib{$idx.':hidden'}); |
next if ($contrib{$idx.':hidden'}); |
unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx}) || (!$contrib{$idx.':message'})) { |
unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx}) || (!$contrib{$idx.':message'})) { |
push(@theselikes,$likes{$symb.':'.$idx.':likes'}); |
if ($likes{$symb.':'.$idx.':likes'} ne '') { |
|
push(@theselikes,$likes{$symb.':'.$idx.':likes'}); |
|
if (ref($likes{$symb.':'.$idx.':likers'}) eq 'HASH') { |
|
if (exists($likes{$symb.':'.$idx.':likers'}{$thisuser})) { |
|
$userlikes{$idx} = 1; |
|
} |
|
} |
|
if (ref($likes{$symb.':'.$idx.':unlikers'}) eq 'HASH') { |
|
if (exists($likes{$symb.':'.$idx.':unlikers'}{$thisuser})) { |
|
$userunlikes{$idx} = 1; |
|
} |
|
} |
|
} |
} |
} |
} |
} |
# Figure out average likes and standard deviation if there are enough discussions to warrant that |
# Figure out average likes and standard deviation if there are enough |
|
# discussions to warrant that |
my $ave=0; |
my $ave=0; |
my $stddev=10000; |
my $stddev=10000; |
if ($#theselikes>1) { |
if ($#theselikes>1) { |
Line 1053 sub build_posting_display {
|
Line 1069 sub build_posting_display {
|
} else { |
} else { |
$$replies[$$depth[$idx]]=1; |
$$replies[$$depth[$idx]]=1; |
} |
} |
unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx})) { |
unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx})) { |
$$visible++; |
$$visible++; |
if ($contrib{$idx.':history'}) { |
if ($contrib{$idx.':history'}) { |
if ($contrib{$idx.':history'} =~ /:/) { |
if ($contrib{$idx.':history'} =~ /:/) { |
Line 1390 sub build_posting_display {
|
Line 1406 sub build_posting_display {
|
$message. |
$message. |
'</div></blockquote>'; |
'</div></blockquote>'; |
# Put in the like and unlike buttons |
# Put in the like and unlike buttons |
unless ($likes{$symb.':'.$idx.':likers'}=~/\,\Q$thisuser\E\,/) { |
if ($userlikes{$idx}) { |
$$discussionitems[$idx].=' '.&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")); |
|
} else { |
|
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsup_gray.png" alt="'.&mt('You like this posting').'" />'; |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsup_gray.png" alt="'.&mt('You like this posting').'" />'; |
} |
|
unless ($likes{$symb.':'.$idx.':unlikers'}=~/\,\Q$thisuser\E\,/) { |
|
$$discussionitems[$idx].=' '.&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")); |
|
} else { |
} else { |
|
$$discussionitems[$idx].=' '.&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")); |
|
} |
|
if ($userunlikes{$idx}) { |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsdown_gray.png" alt="'.&mt('You unlike this posting').'" />'; |
$$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsdown_gray.png" alt="'.&mt('You unlike this posting').'" />'; |
|
} else { |
|
$$discussionitems[$idx].=' '.&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 1513 sub get_post_contents {
|
Line 1529 sub get_post_contents {
|
my $sender = $$plainname; |
my $sender = $$plainname; |
if ($$showaboutme) { |
if ($$showaboutme) { |
$sender = &Apache::loncommon::aboutmewrapper( |
$sender = &Apache::loncommon::aboutmewrapper( |
$$plainname, |
$$plainname, |
$$contrib{$idx.':sendername'}, |
$$contrib{$idx.':sendername'}, |
$$contrib{$idx.':senderdomain'}); |
$$contrib{$idx.':senderdomain'}); |
} |
} |
if ($seeid) { |
if ($seeid) { |
$sender .= ' ('. $$contrib{$idx.':sendername'}.':'. |
$sender .= ' ('.$$contrib{$idx.':sendername'}.':'. |
$$contrib{$idx.':senderdomain'}.')'; |
$$contrib{$idx.':senderdomain'}.')'; |
} |
} |
my $attachmenturls = $$contrib{$idx.':attachmenturl'}; |
my $attachmenturls = $$contrib{$idx.':attachmenturl'}; |
Line 3919 ENDREDIR
|
Line 3935 ENDREDIR
|
my $entry=$env{'form.like'}?$env{'form.like'}:$env{'form.unlike'}; |
my $entry=$env{'form.like'}?$env{'form.like'}:$env{'form.unlike'}; |
my ($symb,$idx)=split(/\:\:\:/,$entry); |
my ($symb,$idx)=split(/\:\:\:/,$entry); |
($symb,my $feedurl)=&get_feedurl_and_clean_symb($symb); |
($symb,my $feedurl)=&get_feedurl_and_clean_symb($symb); |
|
|
# |
# |
# Likes and unlikes are in db-file "disclikes" of the course |
# Likes and unlikes are in db-file "disclikes" of the course |
# The prefix is the $symb to identify the resource discussion, |
# The prefix is the $symb to identify the resource discussion, |
Line 3929 ENDREDIR
|
Line 3946 ENDREDIR
|
$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'}, |
'^'.$prefix); |
'^'.$prefix); |
# Get all who like or unlike this |
# Get current like or unlike status for the $idx for this user. |
my $currentlikers=$contrib{$prefix.'likers'}; |
my $thisuser=$env{'user.name'}.':'.$env{'user.domain'}; |
my $currentunlikers=$contrib{$prefix.'unlikers'}; |
my ($userlikes,$userunlikes); |
|
if (ref($contrib{$prefix.'likers'}) eq 'HASH') { |
|
if (exists($contrib{$prefix.'likers'}{$thisuser})) { |
|
$userlikes = 1; |
|
} |
|
} |
|
if (ref($contrib{$prefix.'unlikers'}) eq 'HASH') { |
|
if (exists($contrib{$prefix.'unlikers'}{$thisuser})) { |
|
$userunlikes = 1; |
|
} |
|
} |
|
|
# Get the current "likes" count |
# Get the current "likes" count |
my $likes=$contrib{$prefix.'likes'}; |
my $likes=$contrib{$prefix.'likes'}; |
# Find out if they already voted |
# Find out if they already voted |
# Users cannot like a post twice, or unlike it twice. They can change their mind, though |
# Users cannot like a post twice, or unlike it twice. |
|
# They can change their mind, though. |
my $alreadyflag=0; |
my $alreadyflag=0; |
my $thisuser=$env{'user.name'}.':'.$env{'user.domain'}; |
my $thisuser=$env{'user.name'}.':'.$env{'user.domain'}; |
if ($env{'form.like'}) { |
if ($env{'form.like'}) { |
if ($currentlikers=~/\,\Q$thisuser\E\,/) { |
if ($userlikes) { |
$alreadyflag=1; |
$alreadyflag=1; |
|
} elsif ($userunlikes) { |
|
delete($contrib{$prefix.'unlikers'}{$thisuser}); |
|
$likes++; |
} else { |
} else { |
if ($currentunlikers=~/\,\Q$thisuser\E\,/) { |
if (ref($contrib{$prefix.'likers'}) eq 'HASH') { |
$currentunlikers=~s/\,\Q$thisuser\E\,//g; |
$contrib{$prefix.'likers'}{$thisuser} = 1; |
} else { |
} else { |
$currentlikers.=','.$thisuser.','; |
$contrib{$prefix.'likers'} = {$thisuser => 1}; |
} |
} |
$likes++; |
$likes++; |
} |
} |
} else { |
} else { |
if ($currentunlikers=~/\,\Q$thisuser\E\,/) { |
if ($userunlikes) { |
$alreadyflag=1; |
$alreadyflag=1; |
|
} elsif ($userlikes) { |
|
delete($contrib{$prefix.'likers'}{$thisuser}); |
|
$likes--; |
} else { |
} else { |
if ($currentlikers=~/\,\Q$thisuser\E\,/) { |
if (ref($contrib{$prefix.'unlikers'}) eq 'HASH') { |
$currentlikers=~s/\,\Q$thisuser\E\,//g; |
$contrib{$prefix.'unlikers'}{$thisuser} = 1; |
} else { |
} else { |
$currentunlikers.=','.$thisuser.','; |
$contrib{$prefix.'unlikers'} = {$thisuser => 1}; |
} |
} |
$likes--; |
$likes--; |
} |
} |
Line 3965 ENDREDIR
|
Line 4000 ENDREDIR
|
# $alreadyflag would be 1 if they tried to double-like or double-unlike |
# $alreadyflag would be 1 if they tried to double-like or double-unlike |
unless ($alreadyflag) { |
unless ($alreadyflag) { |
my %newhash=($prefix.'likes' => $likes, |
my %newhash=($prefix.'likes' => $likes, |
$prefix.'likers' => $currentlikers, |
$prefix.'likers' => $contrib{$prefix.'likers'}, |
$prefix.'unlikers' => $currentunlikers); |
$prefix.'unlikers' => $contrib{$prefix.'unlikers'}); |
# Store data in db-file "disclikes" |
# Store data in db-file "disclikes" |
if (&Apache::lonnet::put('disclikes', |
if (&Apache::lonnet::put('disclikes', |
\%newhash, |
\%newhash, |
Line 4200 ENDREDIR
|
Line 4235 ENDREDIR
|
$override = 1; |
$override = 1; |
} |
} |
my $message=&clear_out_html($env{'form.comment'},$override); |
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, |