event like support

This commit is contained in:
Kyle Drake 2014-05-01 14:09:45 -07:00
parent cf6bf7f031
commit eba4a6e3f5
7 changed files with 138 additions and 66 deletions

8
app.rb
View file

@ -857,6 +857,14 @@ post '/api/:name' do
api_not_found
end
post '/event/:event_id/toggle_like' do |event_id|
require_login
content_type :json
event = Event[id: event_id]
liked_response = event.toggle_site_like(current_site) ? 'liked' : 'unliked'
{result: liked_response, event_like_count: event.likes_dataset.count}.to_json
end
def require_admin
redirect '/' unless signed_in? && current_site.is_admin
end

View file

@ -6,4 +6,26 @@ class Event < Sequel::Model
one_to_one :site_change
many_to_one :profile_comment
one_to_many :likes
def site_likes?(site)
likes_dataset.filter(actioning_site_id: site.id).count > 0
end
def site_like(site)
add_like actioning_site_id: site.id
end
def site_unlike(site)
likes_dataset.filter(actioning_site_id: site.id).delete
end
def toggle_site_like(site)
if site_likes? site
site_unlike site
false
else
site_like site
true
end
end
end

View file

@ -0,0 +1,27 @@
var Like = function(eventId, csrfToken) {
this.eventId = eventId
this.csrfToken = csrfToken
this.link = $('#event_'+this.eventId+'_actions a#like')
}
Like.prototype.toggleLike = function() {
console.log('herp?')
var self = this
$.post('/event/'+this.eventId+'/toggle_like', {csrf_token: this.csrfToken}, function(res) {
console.log(res)
console.log(self.link.text('butts'))
if(res.result == 'liked')
self.link.text('Unlike ('+res.event_like_count+')')
if(res.result == 'unliked') {
var linkText = 'Like'
if(res.event_like_count > 0)
linkText += ' ('+res.event_like_count+')'
self.link.text(linkText)
}
})
}

View file

@ -1,3 +1,4 @@
<script src="/assets/scripts/news/like.js"></script>
<% events.each do |event| %>
<% if event.profile_comment_id %>
<%== erb :'_news_profile_comment', layout: false, locals: {profile_comment: event.profile_comment} %>

11
views/_news_actions.erb Normal file
View file

@ -0,0 +1,11 @@
<div id="event_<%= event.id %>_actions" class="actions">
<% if current_site %>
<a href="#" id="like" onclick="new Like(<%= event.id %>, '<%= csrf_token %>').toggleLike(); return false"><%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event.likes_dataset.count > 0 ? " (#{event.likes_dataset.count})" : '' %></a>
<% else %>
<% event_like_count = event.likes_dataset.count %>
<% if event_like_count > 0 %>
<%= event_like_count %> <%= event_like_count == 1 ? 'like' : 'likes' %>
<% end %>
<% end %>
<a href="">Reply</a>
</div>

View file

@ -5,4 +5,6 @@
<span class="date"><%= profile_comment.created_at.ago %></span>
<div class="comment"><%= profile_comment.message %></div>
</div>
<%== erb :'_news_actions', layout: false, locals: {event: profile_comment.event} %>
</div>

View file

@ -24,7 +24,7 @@
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<img src="http://neocities.org/site_screenshots/dragonquest.jpg">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg">
<span class="caption">dragonquest</span>
</a>
</div>
@ -37,7 +37,7 @@
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<img src="http://neocities.org/site_screenshots/dragonquest.jpg">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg">
<span class="caption">dragonquest</span>
</a>
</div>
@ -49,7 +49,7 @@
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<img src="http://neocities.org/site_screenshots/dragonquest.jpg">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg">
<span class="caption">dragonquest</span>
</a>
</div>
@ -60,7 +60,7 @@
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<img src="http://neocities.org/site_screenshots/dragonquest.jpg">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg">
<span class="caption">dragonquest</span>
</a>
</div>
@ -70,7 +70,7 @@
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<img src="http://neocities.org/site_screenshots/dragonquest.jpg">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg">
<span class="caption">dragonquest</span>
</a>
</div>
@ -81,17 +81,18 @@
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<img src="http://neocities.org/site_screenshots/dragonquest.jpg">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg">
<span class="caption">dragonquest</span>
</a>
</div>
<a class="tag" href="http://neocities.org">Games</a>
</div>
<% end %>
</div>
<div class="col col-33">
<p class="site-url"><a href="http://<%= site.username %>.neocities.org" target="_blank">http://<%= site.username %>.neocities.org</a></p>
<p class="site-url"><a href="//<%= site.username %>.neocities.org" target="_blank"><%= site.username %>.neocities.org</a></p>
<div class="stats">
<div class="col col-50">
<% if site.updated_at %>