News Feed

This commit is contained in:
Kyle Drake 2014-06-27 18:15:25 -04:00
parent 70a58176fa
commit fa35da3c12
5 changed files with 46 additions and 76 deletions

3
app.rb
View file

@ -87,7 +87,9 @@ get '/site/:username' do |username|
if current_site && (site.is_blocking?(current_site) || current_site.is_blocking?(site)) if current_site && (site.is_blocking?(current_site) || current_site.is_blocking?(site))
not_found not_found
end end
@title = site.title @title = site.title
@latest_events = site.latest_events
erb :'site', locals: {site: site, is_current_site: site == current_site} erb :'site', locals: {site: site, is_current_site: site == current_site}
end end
@ -125,6 +127,7 @@ end
get '/?' do get '/?' do
if current_site if current_site
require_login require_login
@suggestions = current_site.suggestions
halt erb :'home', locals: {site: current_site} halt erb :'home', locals: {site: current_site}
end end

View file

@ -195,6 +195,7 @@ class Site < Sequel::Model
} }
end end
=begin
def follows_dataset def follows_dataset
super.where(Sequel.~(site_id: blocking_site_ids)) super.where(Sequel.~(site_id: blocking_site_ids))
.where(Sequel.~(actioning_site_id: blocking_site_ids)) .where(Sequel.~(actioning_site_id: blocking_site_ids))
@ -209,6 +210,7 @@ class Site < Sequel::Model
super.where(Sequel.~(site_id: blocking_site_ids)) super.where(Sequel.~(site_id: blocking_site_ids))
.where(Sequel.~(actioning_site_id: blocking_site_ids)) .where(Sequel.~(actioning_site_id: blocking_site_ids))
end end
=end
def blocking_site_ids def blocking_site_ids
@blocking_site_ids ||= blockings_dataset.select(:site_id).all.collect {|s| s.site_id} @blocking_site_ids ||= blockings_dataset.select(:site_id).all.collect {|s| s.site_id}
@ -493,8 +495,13 @@ class Site < Sequel::Model
'Supporter Plan' 'Supporter Plan'
end end
def latest_events def latest_events(limit=10, offset=0)
events_dataset.order(:id.desc).limit(10).all events_dataset.order(:created_at.desc).limit(limit, offset).all
end
def news_feed(limit=10, offset=0)
following_ids = self.followings_dataset.select(:site_id).all.collect {|f| f.site_id}
Event.filter(site_id: following_ids+[self.id]).order(:created_at.desc).limit(limit, offset).all
end end
def title def title
@ -523,6 +530,10 @@ class Site < Sequel::Model
end end
end end
def suggestions(limit=8, offset=0)
Site.where(tags: tags).limit(limit, offset).order(:updated_at.desc).all
end
def screenshot_path(filename, resolution) def screenshot_path(filename, resolution)
File.join(SCREENSHOTS_ROOT, values[:username], "#{filename}.#{resolution}.jpg") File.join(SCREENSHOTS_ROOT, values[:username], "#{filename}.#{resolution}.jpg")
end end

View file

@ -15,7 +15,7 @@
<div class="icon"></div> <div class="icon"></div>
<% actioning_site_username = event.actioning_site_dataset.select(:username).first.username %> <% actioning_site_username = event.actioning_site_dataset.select(:username).first.username %>
<% event_site_username = event.site_dataset.select(:username).first.username %> <% event_site_username = event.site_dataset.select(:username).first.username %>
<a href="/site/<%= actioning_site_username %>" class="user"><%= actioning_site_username %></a> followed <a href="/site/<%= event_site_username %>" class="user"><%= event_site_username %>'s</a> website<span class="date"><%= event.created_at.ago %></span> <a href="/site/<%= actioning_site_username %>" class="user"><%= actioning_site_username %></a> is following <a href="/site/<%= event_site_username %>" class="user"><%= event_site_username %></a>.<span class="date"><%= event.created_at.ago %></span>
</div> </div>
<% elsif event.site_change_id %> <% elsif event.site_change_id %>
<div class="news-item update"> <div class="news-item update">

View file

@ -15,79 +15,36 @@
<div class="content misc-page columns right-col"> <div class="content misc-page columns right-col">
<div class="col-left"> <div class="col-left">
<div class="col col-66"> <div class="col col-66">
<% if current_site.followings_dataset.count == 0 %> <% if current_site.followings_dataset.count > 0 %>
<%== erb :'_news', layout: false, locals: {site: current_site, events: current_site.news_feed} %>
<% else %>
<div class="welcome"> <div class="welcome">
<h4>Welcome to your Neocities news feed!</h4> <h4>Welcome to your Neocities news feed!</h4>
<p>You aren't following any websites yet! Once you do, updates will show up here and you can like and comment on them. Here are some website suggestions based on your tags, or <a href="/browse">check out all the sites on Neocities!</a></p> <p>
You aren't following any websites yet! Once you do, updates will show up here and you can like and comment on them.
<% if @suggestions.length > 0 %>
Here are some website suggestions based on your tags, or <a href="/browse">check out all the sites on Neocities!</a>
<% else %>
Want to find some sites to follow? <a href="/browse">Check out all the sites on Neocities!</a>
<% end %>
</p>
</div> </div>
<div class="site-suggestion"> <% @suggestions.each do |suggested_site| %>
<div class="site-portrait"> <div class="site-suggestion">
<a href="http://dragonquest.neocities.org"> <div class="site-portrait">
<img src="https://neocities.org/site_screenshots/nintendosv/index.html.270x162.jpg"> <a href="http://<%= suggested_site.username %>.neocities.org">
<span class="caption">dragonquest</span> <img src="<%= suggested_site.screenshot_url('index.html', '270x162') %>">
</a> </a>
</div> <span class="caption">
<a class="tag" href="http://neocities.org">Games</a> <a href="/site/<%= suggested_site.username %>"><%= suggested_site.title %></a></span>
<a class="tag" href="http://neocities.org">Anime</a> </div>
<a class="tag" href="http://neocities.org">Art</a> <% suggested_site.tags.each do |tag| %>
<a class="tag" href="http://neocities.org">Cooking</a> <a class="tag" href="/browse?tag=<%= Rack::Utils.escape tag.name %>"><%= tag.name %></a>
</div> <% end %>
</div>
<div class="site-suggestion"> <% end %>
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<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>
<a class="tag" href="http://neocities.org">Anime</a>
<a class="tag" href="http://neocities.org">Art</a>
</div>
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<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>
<a class="tag" href="http://neocities.org">Anime</a>
</div>
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<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>
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<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>
<a class="tag" href="http://neocities.org">Anime</a>
</div>
<div class="site-suggestion">
<div class="site-portrait">
<a href="http://dragonquest.neocities.org">
<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 %> <% end %>
</div> </div>

View file

@ -76,18 +76,17 @@
</div> </div>
<% end %> <% end %>
<% latest_events = site.latest_events %> <% if @latest_events.empty? %>
<% if latest_events.empty? %>
<div> <div>
<p>No recent activity.</p> <p>No recent activity.</p>
<% if site == current_site %> <% if @site == current_site %>
<p> <p>
You should <a href="/dashboard">update your site</a>! You should <a href="/dashboard">update your site</a>!
</p> </p>
<% end %> <% end %>
</div> </div>
<% else %> <% else %>
<%== erb :'_news', layout: false, locals: {site: site, events: latest_events} %> <%== erb :'_news', layout: false, locals: {site: @site, events: @latest_events} %>
<% end %> <% end %>
</div> </div>