Like button tweaks (closes #15)

This commit is contained in:
Chris Done 2014-11-13 20:30:44 +01:00
parent 9c229d2d4e
commit 436cdfb15e
3 changed files with 25 additions and 16 deletions

View File

@ -45,6 +45,9 @@ getPackageR pn = do
return (packages, downloads, recentDownloads, nLikes, liked, metadata) return (packages, downloads, recentDownloads, nLikes, liked, metadata)
let likedClass = if liked then "fa-thumbs-up" else "fa-thumbs-o-up" :: Text let likedClass = if liked then "fa-thumbs-up" else "fa-thumbs-o-up" :: Text
likeTitle = if liked
then "You liked this!"
else "I like this!" :: Text
let deps = enumerate (metadataDeps metadata) let deps = enumerate (metadataDeps metadata)
authors = enumerate (parseIdentitiesLiberally (metadataAuthor metadata)) authors = enumerate (parseIdentitiesLiberally (metadataAuthor metadata))

View File

@ -34,9 +34,7 @@ $newline never
<span #likes> <span #likes>
#{nLikes} #{nLikes}
\ likes # \ likes #
$if isJust muid <i .fa .#{likedClass} #like title="#{likeTitle}">
<i .fa.#{likedClass}
onclick="toggleLike(this)"></i>
$if downloads /= 0 $if downloads /= 0
<span .downloads> <span .downloads>
$if downloads /= recentDownloads $if downloads /= recentDownloads

View File

@ -8,26 +8,34 @@ $(function(){
}); });
} }
}); });
}); $('#like').click(function(){
var loggedIn = $('.user-handle').length > 0;
function toggleLike(el) { var $this = $(this);
var $this = $(el);
var action = 'like'; if (loggedIn) {
if ($this.hasClass('fa-thumbs-up')) { var action = 'like';
if ($this.hasClass('fa-thumbs-up')) {
action = 'unlike'; action = 'unlike';
} }
$this.toggleClass('fa-thumbs-up'); $this.toggleClass('fa-thumbs-up');
$this.toggleClass('fa-thumbs-o-up'); $this.toggleClass('fa-thumbs-o-up');
$likes = $('#likes'); $likes = $('#likes');
nLikes = parseInt($likes.text(), 10); nLikes = parseInt($likes.text(), 10);
if (action == 'like') { if (action == 'like') {
$this.attr('title','You liked this!');
$likes.text(nLikes + 1); $likes.text(nLikes + 1);
$.post("@{PackageLikeR pn}"); $.post("@{PackageLikeR pn}");
} else { } else {
$this.attr('title','You disliked this.');
$likes.text(nLikes - 1); $likes.text(nLikes - 1);
$.post("@{PackageUnlikeR pn}"); $.post("@{PackageUnlikeR pn}");
}
} else {
window.location.href = '@{AuthR LoginR}';
} }
} });
});