mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
optimize performance for site profile render
This commit is contained in:
parent
13988ad74a
commit
e1eb377a92
8 changed files with 38 additions and 171 deletions
|
@ -5,7 +5,7 @@ class Comment < Sequel::Model
|
||||||
one_to_many :comment_likes
|
one_to_many :comment_likes
|
||||||
|
|
||||||
def liking_site_names
|
def liking_site_names
|
||||||
comment_likes.collect {|comment_like| comment_like.actioning_site.username }
|
comment_likes_dataset.select(:id, :actioning_site_id).all.collect {|comment_like| comment_like.actioning_site_dataset.select(:username).first.username }
|
||||||
end
|
end
|
||||||
|
|
||||||
def site_likes?(site)
|
def site_likes?(site)
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Event < Sequel::Model
|
||||||
end
|
end
|
||||||
|
|
||||||
def liking_site_names
|
def liking_site_names
|
||||||
likes.collect {|like| like.actioning_site.username }
|
likes_dataset.select(:actioning_site_id).all.collect {|like| like.actioning_site_dataset.select(:username).first.username }
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_site_comment(site, message)
|
def add_site_comment(site, message)
|
||||||
|
|
|
@ -6,7 +6,7 @@ class SiteChange < Sequel::Model
|
||||||
one_to_many :site_change_files
|
one_to_many :site_change_files
|
||||||
|
|
||||||
def site_change_filenames(limit=4)
|
def site_change_filenames(limit=4)
|
||||||
site_change_files[0..limit-1].collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1}
|
site_change_files_dataset.select(:filename).limit(limit).all.collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1}
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.record(site, filename)
|
def self.record(site, filename)
|
||||||
|
|
|
@ -1,24 +1,26 @@
|
||||||
<% if (!is_current_site && site.followings_dataset.count > 0) || is_current_site %>
|
<% site_followings = site.followings %>
|
||||||
|
<% if (!is_current_site && !site_followings.empty?) || is_current_site %>
|
||||||
<h3><%= is_current_site ? 'You follow' : 'This site follows' %></h3>
|
<h3><%= is_current_site ? 'You follow' : 'This site follows' %></h3>
|
||||||
<div class="following">
|
<div class="following">
|
||||||
<% if site.followings_dataset.count == 0 %>
|
<% if site_followings.empty? %>
|
||||||
<p>You are not following any sites yet. Add some by <a href="/browse">browsing sites</a> or looking at your tags.
|
<p>You are not following any sites yet. Add some by <a href="/browse">browsing sites</a> or looking at your tags.
|
||||||
<% else %>
|
<% else %>
|
||||||
<% site.followings.each do |following| %>
|
<% site.followings_dataset.select(:site_id).all.each do |following| %>
|
||||||
<a href="/site/<%= following.site.username %>"><img src="<%= site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
<a href="/site/<%= following.site_dataset.select(:username).first.username %>"><img src="<%= site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if (!is_current_site && site.follows_dataset.count > 0) || is_current_site %>
|
<% if (!is_current_site && !site_followings.empty?) || is_current_site %>
|
||||||
<h3>Followers</h3>
|
<h3>Followers</h3>
|
||||||
<div class="following">
|
<div class="following">
|
||||||
<% if site.follows_dataset.count == 0 %>
|
<% if site_followings.empty? %>
|
||||||
No followers yet.
|
No followers yet.
|
||||||
<% else %>
|
<% else %>
|
||||||
<% site.follows.each do |follow| %>
|
<% site.follows_dataset.select(:actioning_site_id).all.each do |follow| %>
|
||||||
<a href="/site/<%= follow.actioning_site.username %>"><img src="<%= follow.actioning_site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
<% follow_actioning_site = follow.actioning_site_dataset.select(:username).first %>
|
||||||
|
<a href="/site/<%= follow_actioning_site.username %>"><img src="<%= follow_actioning_site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
135
views/_news.erb
135
views/_news.erb
|
@ -13,13 +13,16 @@
|
||||||
<div class="news-item follow">
|
<div class="news-item follow">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="icon"></div>
|
<div class="icon"></div>
|
||||||
<a href="/site/<%= event.actioning_site.username %>" class="user"><%= event.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>
|
<% actioning_site_username = event.actioning_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>
|
||||||
</div>
|
</div>
|
||||||
<% elsif event.site_change_id %>
|
<% elsif event.site_change_id %>
|
||||||
<div class="news-item update">
|
<div class="news-item update">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="icon"></div>
|
<div class="icon"></div>
|
||||||
<a href="http://<%= site.username %>.neocities.org" class="user"><%= site.username %>.neocities.org</a> has been updated <span class="date"><%= event.created_at.ago %></span>
|
<% event_site_username = event.site_dataset.select(:username).first.username %>
|
||||||
|
<a href="http://<%= event_site_username %>.neocities.org" class="user"><%= event_site_username %>.neocities.org</a> has been updated <span class="date"><%= event.created_at.ago %></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="files">
|
<div class="files">
|
||||||
|
@ -41,23 +44,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<!--
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">css</span><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail html"><a href=""><img src="http://neocities.org/site_screenshots/codeventurer.jpg"><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail image"><a href=""><img src="/site_thumbnails/victoria/constructioncat2.png.105x63.png"><span class="title">cat.jpg</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -68,20 +54,20 @@
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="comments">
|
<div class="comments">
|
||||||
<% event.comments.each do |comment| %>
|
<% event.comments.each do |comment| %>
|
||||||
|
<% comment_actioning_site = comment.actioning_site_dataset.select(:username).first %>
|
||||||
<div class="comment" id="comment_<%= comment.id %>">
|
<div class="comment" id="comment_<%= comment.id %>">
|
||||||
<img class="avatar" src="<%= comment.actioning_site.screenshot_url('index.html', '82x62') %>">
|
<img class="avatar" src="<%= comment_actioning_site.screenshot_url('index.html', '82x62') %>">
|
||||||
<a href="/site/<%= comment.actioning_site.username %>" class="user"><%= comment.actioning_site.username %></a>
|
<a href="/site/<%= comment_actioning_site.username %>" class="user"><%= comment_actioning_site.username %></a>
|
||||||
<span class="date"><%= comment.created_at.ago %></span>
|
<span class="date"><%= comment.created_at.ago %></span>
|
||||||
<p><%= comment.message %></p>
|
<p><%= comment.message %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
|
<% comment_likes_count = comment.comment_likes_dataset.count %>
|
||||||
<% if current_site %>
|
<% if current_site %>
|
||||||
<a href="#" class="comment_like" id="comment_<%= comment.id %>_like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= comment.liking_site_names.join('<br>') %>" onclick="Comment.toggleLike(<%= comment.id %>, '<%= csrf_token %>'); return false"><%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment.comment_likes_dataset.count > 0 ? " (#{comment.comment_likes_dataset.count})" : '' %></a>
|
<a href="#" class="comment_like" id="comment_<%= comment.id %>_like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= comment.liking_site_names.join('<br>') %>" onclick="Comment.toggleLike(<%= comment.id %>, '<%= csrf_token %>'); return false"><%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment_likes_count > 0 ? " (#{comment_likes_count})" : '' %></a>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% comment_like_count = comment.comment_likes_dataset.count %>
|
<% if comment_likes_count > 0 %>
|
||||||
<% if comment_like_count > 0 %>
|
<%= comment_likes_count %> <%= comment_likes_count == 1 ? 'like' : 'likes' %>
|
||||||
<%= comment_like_count %> <%= comment_like_count == 1 ? 'like' : 'likes' %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
@ -101,100 +87,3 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%== erb :'_news_templates', layout: false %>
|
<%== erb :'_news_templates', layout: false %>
|
||||||
|
|
||||||
<!--
|
|
||||||
<div class="news-item follow">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon"></div>
|
|
||||||
<a href="" class="user">Derp</a> followed <a href="" class="user">Foo's</a> website<span class="date">7h</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item tip">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon"></div>
|
|
||||||
<a href="" class="user">Derp</a> tipped <a href="" class="user">Foo's</a> website: <a href="" class="comment">Wow, great work here! Please keep updating :)</a><span class="date">Apr 23</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item comment">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon"></div>
|
|
||||||
<a href="" class="user">Derp</a> commented on <a href="" class="user">victoria's</a> website: <a href="" class="comment">I had a question - how did you make it so that the...</a>
|
|
||||||
<span class="date">Apr 20</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item follow">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon"></div>
|
|
||||||
<a href="" class="user">Derp</a> followed <a href="" class="user">victoria's</a> website<span class="date">Apr 7</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item update">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon"></div>
|
|
||||||
<a href="" class="user">Derp</a> made an update <span class="date">Apr 7</span>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="files">
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">css</span><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail html"><a href=""><img src="http://neocities.org/site_screenshots/codeventurer.jpg"><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail image"><a href=""><img src="/site_thumbnails/victoria/constructioncat2.png.105x63.png"><span class="title">cat.jpg</span></a></div>
|
|
||||||
</div>
|
|
||||||
<div class="file">
|
|
||||||
<div class="html-thumbnail misc"><a href=""><span class="misc-icon">js</span><span class="title">styles.css</span></a></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="actions"><a href="">Like (1)</a> <a href="">Reply</a></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item comment for-me">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon" style="background-image:url(https://neocities.org/site_screenshots/codeventurer.jpg);"></div>
|
|
||||||
<a href="" class="user">Foo</a>
|
|
||||||
<span class="date">Apr 7</span>
|
|
||||||
<div class="comment">Your site is amazing. Very helpful information. Would love to see more updates if you have time. Your site is amazing. Very helpful information. Would love to see more updates if you have time. </div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="actions"><a href="">Like (1)</a> <a href="">Reply</a></div>
|
|
||||||
<div class="comments">
|
|
||||||
<div class="comment">
|
|
||||||
<img class="avatar" src="https://neocities.org/site_screenshots/victoria.jpg">
|
|
||||||
<a href="" class="user">victoria</a> Indeed, it's great!<span class="date">Apr 7</span>
|
|
||||||
<div class="actions"><a href="">Like (1)</a></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item comment">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon"></div>
|
|
||||||
<a href="" class="user">Derp</a> commented on <a href="" class="user">Foo's</a> website: <a href="" class="comment">I had a question - how did you make it so that the...</a>
|
|
||||||
<span class="date">Apr 7</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="news-item tip for-me">
|
|
||||||
<div class="title">
|
|
||||||
<div class="icon" style="background-image:url(https://neocities.org/site_screenshots/victoria.jpg);"></div>
|
|
||||||
<a href="" class="user">victoria</a> tipped .01 BTC
|
|
||||||
<span class="date">Apr 7</span>
|
|
||||||
<div class="comment">Hey, this looks great!</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="actions"><a href="">Like (1)</a> <a href="">Reply</a></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<div id="event_<%= event.id %>_actions" class="actions">
|
<div id="event_<%= event.id %>_actions" class="actions">
|
||||||
|
<% event_likes_count = event.likes_dataset.count %>
|
||||||
<% if current_site %>
|
<% if current_site %>
|
||||||
<a href="#" id="like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= event.liking_site_names.join('<br>') %>" 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>
|
<a href="#" id="like" data-placement="bottom" data-toggle="tooltip" data-original-title="<%= event.liking_site_names.join('<br>') %>" onclick="new Like(<%= event.id %>, '<%= csrf_token %>').toggleLike(); return false"><%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event_likes_count > 0 ? " (#{event_likes_count})" : '' %></a>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% event_like_count = event.likes_dataset.count %>
|
<% if event_likes_count > 0 %>
|
||||||
<% if event_like_count > 0 %>
|
<%= event_likes_count %> <%= event_likes_count == 1 ? 'like' : 'likes' %>
|
||||||
<%= event_like_count %> <%= event_like_count == 1 ? 'like' : 'likes' %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if current_site %>
|
<% if current_site %>
|
||||||
|
|
|
@ -13,15 +13,16 @@
|
||||||
<div class="stats">
|
<div class="stats">
|
||||||
<div class="stat"><strong><%= site.hits_english %></strong> <span>hits</span></div>
|
<div class="stat"><strong><%= site.hits_english %></strong> <span>hits</span></div>
|
||||||
<div class="stat"><strong><%= site.follows_dataset.count %></strong> <span>followers</span></div>
|
<div class="stat"><strong><%= site.follows_dataset.count %></strong> <span>followers</span></div>
|
||||||
<div class="stat tips"><strong><%= site.tips_dataset.count %></strong> <span>tips</span></div>
|
<!-- <div class="stat tips"><strong><%= site.tips_dataset.count %></strong> <span>tips</span></div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<% if current_site == site %>
|
<% if current_site == site %>
|
||||||
<a href="/dashboard" class="btn-Action edit"><span><i class="fa fa-pencil"></i> Edit Site</span></a>
|
<a href="/dashboard" class="btn-Action edit"><span><i class="fa fa-pencil"></i> Edit Site</span></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if current_site != site %>
|
<% if current_site != site %>
|
||||||
<a id="followLink" href="#" onclick="Site.toggleFollow(<%= site.id %>, '<%= csrf_token %>')" class="btn-Action <%= current_site.is_following?(site) ? '' : 'follow' %>">
|
<% is_following = current_site.is_following?(site) %>
|
||||||
<span><%= current_site.is_following?(site) ? 'Unfollow' : 'Follow' %></span>
|
<a id="followLink" href="#" onclick="Site.toggleFollow(<%= site.id %>, '<%= csrf_token %>')" class="btn-Action <%= is_following ? '' : 'follow' %>">
|
||||||
|
<span><%= is_following ? 'Unfollow' : 'Follow' %></span>
|
||||||
</a>
|
</a>
|
||||||
<!-- <a href="#" class="btn-Action tip"><span>Tip</span></a> -->
|
<!-- <a href="#" class="btn-Action tip"><span>Tip</span></a> -->
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -59,7 +60,8 @@
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if site.latest_events.empty? %>
|
<% latest_events = site.latest_events %>
|
||||||
|
<% if latest_events.empty? %>
|
||||||
<div>
|
<div>
|
||||||
<p>No recent activity.</p>
|
<p>No recent activity.</p>
|
||||||
<% if site == current_site %>
|
<% if site == current_site %>
|
||||||
|
@ -69,7 +71,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%== erb :'_news', layout: false, locals: {site: site, events: site.events_dataset.order(:id.desc).all} %>
|
<%== erb :'_news', layout: false, locals: {site: site, events: latest_events} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -112,29 +114,3 @@
|
||||||
</div>
|
</div>
|
||||||
</div></div>
|
</div></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal hide fade" id="shareModal" tabindex="-1" role="dialog" aria-labelledby="shareModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button class="close" type="button" data-dismiss="modal" aria-hidden="true">x</button>
|
|
||||||
<h3 id="shareModalLabel">Share this Site</h3>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<p>
|
|
||||||
<a href="https://twitter.com/share" class="twitter-share-button" data-text="<%= site.username %>.neocities.org is awesome!" data-via="neocitiesweb" data-count="none">Tweet</a>
|
|
||||||
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<a href="http://www.tumblr.com/share" title="Share on Tumblr" style="display:inline-block; text-indent:-9999px; overflow:hidden; width:61px; height:20px; background:url('http://platform.tumblr.com/v1/share_2.png') top left no-repeat transparent;">Share on Tumblr</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" border="0" /> </a>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button class="btn" data-dismiss="modal" aria-hidden="true">Done</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue