Skip to content

Commit

Permalink
Item13819: fixed liking subwebs
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelDaum committed Oct 15, 2015
1 parent 4164d76 commit 98211ea
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 31 deletions.
47 changes: 24 additions & 23 deletions data/System/LikePlugin.txt
@@ -1,6 +1,6 @@
%META:TOPICINFO{author="ProjectContributor" comment="" date="1442237590" format="1.1" version="1"}%
%META:TOPICINFO{author="ProjectContributor" date="1444891178" format="1.1" version="1"}%
---+!! %TOPIC%
%$SHORTDESCRIPTION%
%FORMFIELD{"Description"}%

%TOC%

Expand Down Expand Up @@ -215,7 +215,6 @@ same object has been updated. You may notice that when installing this plugin an
will update all others simultaneously as long as they refer to the same object being voted on.

---++ Installation Instructions

%$INSTALL_INSTRUCTIONS%

Note that you will need a database driver for the DBI interface used to store values into an SQL database backend. By default SQLite is used.
Expand Down Expand Up @@ -243,29 +242,31 @@ then use
---++ Change History

%TABLE{columnwidths="7em" tablewidth="100%"}%
| 15 Oct 2015 | normalize web before putting it into an sql query ... fixes counts in subwebs |
| 21 Sep 2015 | initial release |

%META:FILEATTACHMENT{name="LikeSnap15.png" attr="" comment="" date="1444891178" size="906" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap14.png" attr="" comment="" date="1444891178" size="1563" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap13.png" attr="" comment="" date="1444891178" size="2416" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap12.png" attr="" comment="" date="1444891178" size="1461" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap11.png" attr="" comment="" date="1444891178" size="2495" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap10.png" attr="" comment="" date="1444891178" size="900" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap9.png" attr="" comment="" date="1444891178" size="3215" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap8.png" attr="" comment="" date="1444891178" size="4190" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap7.png" attr="" comment="" date="1444891178" size="4078" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap6.png" attr="" comment="" date="1444891178" size="3024" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap5.png" attr="" comment="" date="1444891178" size="2750" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap4.png" attr="" comment="" date="1444891178" size="2792" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap3.png" attr="" comment="" date="1444891178" size="2887" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap2.png" attr="" comment="" date="1444891178" size="2911" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap1.png" attr="" comment="" date="1444891178" size="2704" user="ProjectContributor" version="1"}%
%META:FORM{name="PackageForm"}%
%META:FIELD{name="Author" title="Author" value="Michael Daum"}%
%META:FIELD{name="Version" title="Version" value="%25$VERSION%25"}%
%META:FIELD{name="Copyright" title="Copyright" value="2015 Michael Daum http://michaeldaumconsulting.com"}%
%META:FIELD{name="Description" title="Description" value="%25$SHORTDESCRIPTION%25"}%
%META:FIELD{name="Home" title="Home" value="http://foswiki.org/Extensions/%25$ROOTMODULE%25"}%
%META:FIELD{name="License" title="License" value="GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]])"}%
%META:FIELD{name="Release" title="Release" value="%25$RELEASE%25"}%
%META:FIELD{name="Copyright" value="2015 Michael Daum http://michaeldaumconsulting.com"}%
%META:FIELD{name="License" value="GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]])"}%
%META:FIELD{name="Repository" title="Repository" value="https://github.com/foswiki/%25$ROOTMODULE%25"}%
%META:FIELD{name="Home" value="http://foswiki.org/Extensions/%25$ROOTMODULE%25"}%
%META:FIELD{name="Support" value="http://foswiki.org/Support/%25$ROOTMODULE%25"}%
%META:FILEATTACHMENT{name="LikeSnap15.png" attachment="LikeSnap15.png" attr="" comment="" date="1442237590" size="906" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap14.png" attachment="LikeSnap14.png" attr="" comment="" date="1442237590" size="1563" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap13.png" attachment="LikeSnap13.png" attr="" comment="" date="1442237590" size="2416" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap12.png" attachment="LikeSnap12.png" attr="" comment="" date="1442237590" size="1461" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap11.png" attachment="LikeSnap11.png" attr="" comment="" date="1442237590" size="2495" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap10.png" attachment="LikeSnap10.png" attr="" comment="" date="1442237590" size="900" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap9.png" attachment="LikeSnap9.png" attr="" comment="" date="1442237590" size="3215" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap8.png" attachment="LikeSnap8.png" attr="" comment="" date="1442237590" size="4190" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap7.png" attachment="LikeSnap7.png" attr="" comment="" date="1442237590" size="4078" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap6.png" attachment="LikeSnap6.png" attr="" comment="" date="1442237590" size="3024" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap5.png" attachment="LikeSnap5.png" attr="" comment="" date="1442237590" size="2750" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap4.png" attachment="LikeSnap4.png" attr="" comment="" date="1442237590" size="2792" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap3.png" attachment="LikeSnap3.png" attr="" comment="" date="1442237590" size="2887" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap2.png" attachment="LikeSnap2.png" attr="" comment="" date="1442237590" size="2911" user="ProjectContributor" version="1"}%
%META:FILEATTACHMENT{name="LikeSnap1.png" attachment="LikeSnap1.png" attr="" comment="" date="1442237590" size="2704" user="ProjectContributor" version="1"}%
%META:FIELD{name="Support" title="Support" value="http://foswiki.org/Support/%25$ROOTMODULE%25"}%
%META:FIELD{name="Version" title="Version" value="%25$VERSION%25"}%
4 changes: 2 additions & 2 deletions lib/Foswiki/Plugins/LikePlugin.pm
Expand Up @@ -22,8 +22,8 @@ use Foswiki::Func ();
use Foswiki::Plugins::JQueryPlugin ();
use Foswiki::Contrib::JsonRpcContrib ();

our $VERSION = '1.00';
our $RELEASE = '21 Sep 2015';
our $VERSION = '1.01';
our $RELEASE = '15 Oct 2015';
our $SHORTDESCRIPTION = 'Like-style voting for content';
our $NO_PREFS_IN_TOPIC = 1;
our $core;
Expand Down
26 changes: 20 additions & 6 deletions lib/Foswiki/Plugins/LikePlugin/Core.pm
Expand Up @@ -190,7 +190,6 @@ HERE
return $this->{dbh};
}


###############################################################################
sub getStatementHandler {
my ($this, $id) = @_;
Expand Down Expand Up @@ -292,10 +291,10 @@ sub LIKE {
push @html5Params, "data-topic='$theTopic'";
push @html5Params, "data-meta-type='$metaType'" if $metaType;
push @html5Params, "data-meta-id='$metaId'" if $metaId;
push @html5Params, "data-like-label='%ENCODE{$likeLabel}%'" if $likeLabel;
push @html5Params, "data-liked-label='%ENCODE{$likedLabel}%'" if $likedLabel;
push @html5Params, "data-dislike-label='%ENCODE{$dislikeLabel}%'" if $dislikeLabel;
push @html5Params, "data-disliked-label='%ENCODE{$dislikedLabel}%'" if $dislikedLabel;
push @html5Params, "data-like-label='".urlEncode($likeLabel)."'" if $likeLabel;
push @html5Params, "data-liked-label='".urlEncode($likedLabel)."'" if $likedLabel;
push @html5Params, "data-dislike-label='".urlEncode($dislikeLabel)."'" if $dislikeLabel;
push @html5Params, "data-disliked-label='".urlEncode($dislikedLabel)."'" if $dislikedLabel;
push @html5Params, "data-likes='$likeCount'";
push @html5Params, "data-dislikes='$dislikeCount'";
push @html5Params, "data-selected-class='%selectionClass%'";
Expand Down Expand Up @@ -347,6 +346,15 @@ sub LIKE {
return Foswiki::Func::decodeFormatTokens($header.$result.$footer);
}

###############################################################################
sub urlEncode {
my $text = shift;

$text =~ s{([^0-9a-zA-Z-_.:~!*#/])}{sprintf('%%%02x',ord($1))}ge;

return $text;
}

###############################################################################
sub getTheme {
my ($this, $name) = @_;
Expand Down Expand Up @@ -457,6 +465,7 @@ sub getLikes {

$type ||= '';
$id ||= '';
$web =~ s/\//./g;

my $sth = $this->getStatementHandler("select_likes");
my ($like, $dislike) = $this->{dbh}->selectrow_array($sth, undef, $web, $topic, $type, $id);
Expand All @@ -474,6 +483,7 @@ sub getLikeOfUser {
$type ||= '';
$id ||= '';
$wikiName ||= Foswiki::Func::getWikiName();
$web =~ s/\//./g;

my $sth = $this->getStatementHandler("select_like_of_user");
my ($likes, $dislikes) = $this->{dbh}->selectrow_array($sth, undef, $web, $topic, $type, $id, $wikiName);
Expand All @@ -488,6 +498,8 @@ sub getLikeOfUser {
sub solrIndexTopicHandler {
my ($this, $indexer, $doc, $web, $topic, $meta, $text) = @_;

$web =~ s/\//./g;

my $sth = $this->getStatementHandler("select_likes");
my ($likes, $dislikes, $totalLikes) = $this->{dbh}->selectrow_array($sth, undef, $web, $topic, "", "");

Expand All @@ -508,14 +520,16 @@ sub solrIndexTopicHandler {
sub dbcacheIndexTopicHandler {
my ($this, $db, $obj, $web, $topic, $meta, $text) = @_;

$web =~ s/\//./g;

my $sth = $this->getStatementHandler("select_likes");
my ($likes, $dislikes, $totalLikes) = $this->{dbh}->selectrow_array($sth, undef, $web, $topic, "", "");

$likes ||= 0;
$dislikes ||= 0;
$totalLikes ||= 0;

#print STDERR "like=$likes, dislike=$dislikes, totalLike=$totalLikes\n";
#print STDERR "web=$web, topic=$topic, like=$likes, dislike=$dislikes, totalLike=$totalLikes\n";

$obj->set("likes", $likes);
$obj->set("dislikes", $dislikes);
Expand Down

0 comments on commit 98211ea

Please sign in to comment.