mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 09:12: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
|
||||
|
||||
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
|
||||
|
||||
def site_likes?(site)
|
||||
|
|
|
@ -18,7 +18,7 @@ class Event < Sequel::Model
|
|||
end
|
||||
|
||||
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
|
||||
|
||||
def add_site_comment(site, message)
|
||||
|
|
|
@ -6,7 +6,7 @@ class SiteChange < Sequel::Model
|
|||
one_to_many :site_change_files
|
||||
|
||||
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
|
||||
|
||||
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>
|
||||
<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.
|
||||
<% else %>
|
||||
<% site.followings.each do |following| %>
|
||||
<a href="/site/<%= following.site.username %>"><img src="<%= site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
||||
<% site.followings_dataset.select(:site_id).all.each do |following| %>
|
||||
<a href="/site/<%= following.site_dataset.select(:username).first.username %>"><img src="<%= site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% 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>
|
||||
<div class="following">
|
||||
<% if site.follows_dataset.count == 0 %>
|
||||
<% if site_followings.empty? %>
|
||||
No followers yet.
|
||||
<% else %>
|
||||
<% site.follows.each do |follow| %>
|
||||
<a href="/site/<%= follow.actioning_site.username %>"><img src="<%= follow.actioning_site.screenshot_path 'index.html', '37x37' %>" class="avatar"></a>
|
||||
<% site.follows_dataset.select(:actioning_site_id).all.each do |follow| %>
|
||||
<% 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 %>
|
||||
</div>
|
||||
|
|
135
views/_news.erb
135
views/_news.erb
|
@ -13,13 +13,16 @@
|
|||
<div class="news-item follow">
|
||||
<div class="title">
|
||||
<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>
|
||||
<% elsif event.site_change_id %>
|
||||
<div class="news-item update">
|
||||
<div class="title">
|
||||
<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 class="content">
|
||||
<div class="files">
|
||||
|
@ -41,23 +44,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<% 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>
|
||||
<% end %>
|
||||
|
@ -68,20 +54,20 @@
|
|||
<div class="content">
|
||||
<div class="comments">
|
||||
<% event.comments.each do |comment| %>
|
||||
<% comment_actioning_site = comment.actioning_site_dataset.select(:username).first %>
|
||||
<div class="comment" id="comment_<%= comment.id %>">
|
||||
<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>
|
||||
<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>
|
||||
<span class="date"><%= comment.created_at.ago %></span>
|
||||
<p><%= comment.message %></p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
|
||||
<% comment_likes_count = comment.comment_likes_dataset.count %>
|
||||
<% 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 %>
|
||||
<% comment_like_count = comment.comment_likes_dataset.count %>
|
||||
<% if comment_like_count > 0 %>
|
||||
<%= comment_like_count %> <%= comment_like_count == 1 ? 'like' : 'likes' %>
|
||||
<% if comment_likes_count > 0 %>
|
||||
<%= comment_likes_count %> <%= comment_likes_count == 1 ? 'like' : 'likes' %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
|
@ -101,100 +87,3 @@
|
|||
<% end %>
|
||||
|
||||
<%== 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">
|
||||
<% event_likes_count = event.likes_dataset.count %>
|
||||
<% 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 %>
|
||||
<% event_like_count = event.likes_dataset.count %>
|
||||
<% if event_like_count > 0 %>
|
||||
<%= event_like_count %> <%= event_like_count == 1 ? 'like' : 'likes' %>
|
||||
<% if event_likes_count > 0 %>
|
||||
<%= event_likes_count %> <%= event_likes_count == 1 ? 'like' : 'likes' %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if current_site %>
|
||||
|
|
|
@ -10,4 +10,4 @@
|
|||
<textarea rows="5" style="width: 100%" maxlength="<%= Site::MAX_COMMENT_SIZE %>">{{ content }}</textarea>
|
||||
<button class="btn-Action">Save</button> <a href="#" onclick="ProfileComment.cancelEditor({{ eventId }}); return false">Cancel</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -13,15 +13,16 @@
|
|||
<div class="stats">
|
||||
<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 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 class="actions">
|
||||
<% if current_site == site %>
|
||||
<a href="/dashboard" class="btn-Action edit"><span><i class="fa fa-pencil"></i> Edit Site</span></a>
|
||||
<% end %>
|
||||
<% if current_site != site %>
|
||||
<a id="followLink" href="#" onclick="Site.toggleFollow(<%= site.id %>, '<%= csrf_token %>')" class="btn-Action <%= current_site.is_following?(site) ? '' : 'follow' %>">
|
||||
<span><%= current_site.is_following?(site) ? 'Unfollow' : 'Follow' %></span>
|
||||
<% is_following = current_site.is_following?(site) %>
|
||||
<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 href="#" class="btn-Action tip"><span>Tip</span></a> -->
|
||||
<% end %>
|
||||
|
@ -59,7 +60,8 @@
|
|||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if site.latest_events.empty? %>
|
||||
<% latest_events = site.latest_events %>
|
||||
<% if latest_events.empty? %>
|
||||
<div>
|
||||
<p>No recent activity.</p>
|
||||
<% if site == current_site %>
|
||||
|
@ -69,7 +71,7 @@
|
|||
<% end %>
|
||||
</div>
|
||||
<% 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 %>
|
||||
|
||||
</div>
|
||||
|
@ -93,7 +95,7 @@
|
|||
|
||||
<%== erb :'_follows', layout: false, locals: {site: site, is_current_site: site == current_site} %>
|
||||
|
||||
<!--
|
||||
<!--
|
||||
<h3>Archives</h3>
|
||||
<div class="archives">
|
||||
<a href=""><img src="http://neocities.org/site_screenshots/codeventurer.jpg"></a>
|
||||
|
@ -112,29 +114,3 @@
|
|||
</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