mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
214 lines
9.3 KiB
Text
214 lines
9.3 KiB
Text
<script type="text/javascript">
|
|
function getPage(page) {
|
|
document.location.href = '/browse?page='+page+'&'+$('#search_criteria').serialize();
|
|
}
|
|
|
|
function surf(page) {
|
|
document.location.href = '/surf?page='+page+'&'+$('#search_criteria').serialize();
|
|
}
|
|
</script>
|
|
|
|
<div class="header-Outro with-columns browse-page">
|
|
<div class="row content">
|
|
<div class="col col-100">
|
|
<% if params[:tag] %>
|
|
<h1><a href="/browse">Websites</a> > <%= params[:tag] %></h1>
|
|
<% else %>
|
|
<h1>Sites on Neocities</h1>
|
|
<% end %>
|
|
</div>
|
|
|
|
<form id="search_criteria" action="/browse" method="GET">
|
|
<div class="col col-50 filter">
|
|
<fieldset class="grouping">
|
|
<% unless is_education? %>
|
|
<label class="text-Label" for="sort_by">Sort by:</label>
|
|
<div class="select-Container">
|
|
<select name="sort_by" id="sort_by" class="input-Select">
|
|
<option value="followers" <%= params[:sort_by] == 'followers' ? 'selected' : '' %>>Most Followed</option>
|
|
<option value="special_sauce" <%= params[:sort_by] == 'special_sauce' ? 'selected' : '' %>>Special Sauce (alpha)</option>
|
|
<option value="last_updated" <%= params[:sort_by] == 'last_updated' ? 'selected' : '' %>>Last Updated</option>
|
|
<option value="supporters" <%= params[:sort_by] == 'supporters' ? 'selected' : '' %>>Neocities Supporters</option>
|
|
<option value="featured" <%= params[:sort_by] == 'featured' ? 'selected' : '' %>>Featured</option>
|
|
<option value="tipping_enabled" <%= params[:sort_by] == 'tipping_enabled' ? 'selected' : '' %>>Accepting Tips</option>
|
|
<option value="views" <%= params[:sort_by] == 'views' ? 'selected' : '' %>>Most Views</option>
|
|
<option value="hits" <%= params[:sort_by] == 'hits' ? 'selected' : '' %>>Most Hits</option>
|
|
<option value="newest" <%= params[:sort_by] == 'newest' ? 'selected' : '' %>>Newest</option>
|
|
<option value="oldest" <%= params[:sort_by] == 'oldest' ? 'selected' : '' %>>Oldest</option>
|
|
<option value="random" <%= params[:sort_by] == 'random' ? 'selected' : '' %>>Random</option>
|
|
</select>
|
|
</div>
|
|
|
|
<!--
|
|
<div>
|
|
<input name="is_nsfw" type="checkbox" value="true" <%= params[:is_nsfw].to_s == 'true' ? 'checked' : '' %>> Show 18+ content
|
|
</div>
|
|
-->
|
|
<input class="btn-Action" type="submit" value="Update">
|
|
<% end %>
|
|
</fieldset>
|
|
</div>
|
|
<div class="col col-50 filter">
|
|
<form method="GET" action="browse">
|
|
<fieldset class="grouping">
|
|
<% unless is_education? %>
|
|
<label class="text-Label" for="tag"><span class="hide-on-mobile">Filter by </span>Tag:</label>
|
|
<input class="input-Area typeahead" id="tag" name="tag" type="text" placeholder="pokemon" value="<%= params[:tag] %>" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" dir="auto">
|
|
<input style="vertical-align: -4px;margin-left: 4px;" type="submit" class="btn-Action" value="Filter">
|
|
<% else %>
|
|
<% if params[:tag] %>
|
|
<input name="tag" type="hidden" value="<%= params[:tag] %>">
|
|
<% end %>
|
|
<% end %>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="browse-page">
|
|
|
|
<% if @sites.length == 0 %>
|
|
<div class="row website-Gallery content int-Gall" style="padding-left: 30px;">
|
|
<h3>No active sites found.</h3>
|
|
<p>Try another search, or <a href="/browse">browse all sites</a>!</p>
|
|
</div>
|
|
<% else %>
|
|
<ul class="row website-Gallery content int-Gall">
|
|
<% @sites.each_with_index do |site,i| %>
|
|
<li id="username_<%= site.username %>">
|
|
<a href="<%= site.uri %>"
|
|
class="neo-Screen-Shot"
|
|
title="<%= site.title %>"
|
|
<% if @surfmode %>
|
|
onclick="surf(<%= ((@page-1)*Site::BROWSE_PAGINATION_LENGTH)+i+1 %>); return false"
|
|
<% end %>
|
|
>
|
|
<span class="img-Holder" style="background:url(<%= site.screenshot_url('index.html', '540x405') %>) no-repeat;">
|
|
<img src="/img/placeholder.png" alt="<%= site.title %>" />
|
|
</span>
|
|
</a>
|
|
<div class="title">
|
|
<a href="<%= site.uri %>"
|
|
title="<%= site.title %>"
|
|
<% if @surfmode %>
|
|
onclick="surf(<%= ((@page-1)*Site::BROWSE_PAGINATION_LENGTH)+i+1 %>); return false"
|
|
<% end %>
|
|
><%= site.title.shorten(30) %></a>
|
|
</div>
|
|
<div class="site-info">
|
|
<div class="username">
|
|
<a href="/site/<%= site.username %>" title="Site Profile">
|
|
<i class="fa fa-user"><% if site.supporter? %><i class="fa fa-heart"></i><% end %></i><%= site.username %>
|
|
</a>
|
|
</div>
|
|
<div class="site-stats hide-on-mobile">
|
|
<a href="/site/<%= site.username %>" title="<% if params[:sort_by] == 'hits' %>Hits<% else %>Visitors<% end %>">
|
|
<span>
|
|
<i class="fa fa-eye"></i>
|
|
</span>
|
|
<% if params[:sort_by] == 'hits' %>
|
|
<%= site.hits.format_large_number %>
|
|
<% else %>
|
|
<%= site.views.format_large_number %>
|
|
<% end %>
|
|
</a>
|
|
</div>
|
|
<div class="site-tags">
|
|
<% if @site_tags[site.id].length > 0 %>
|
|
<i class="fa fa-tag" title="Tags"></i>
|
|
<% @site_tags[site.id].each_with_index do |tag, index| %>
|
|
<a class="" href="/browse?tag=<%= Rack::Utils.escape tag %>"><%= tag %></a><% if index != @site_tags[site.id].length - 1 %>,<% end %>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
<% if signed_in? && current_site.is_admin %>
|
|
<div class="admin">
|
|
<button onclick="banSite('<%= site.username.gsub('\'', '') %>', '', this); ">Ban</button>
|
|
<button onclick="banSite('<%= site.username.gsub('\'', '') %>', 'spam', this)">Spam</button>
|
|
<button onclick="banSite('<%= site.username.gsub('\'', '') %>', 'phishing', this)">Phishing</button>
|
|
<!--
|
|
<form action="/admin/banhammer" target="_blank" method="POST" onsubmit="return confirm('Confirm ban of <%= site.username %>');">
|
|
<%== csrf_token_input_html %>
|
|
<input type="hidden" name="usernames" value="<%= site.username %>">
|
|
<button>Ban</button>
|
|
</form>
|
|
|
|
<form action="/admin/banhammer" target="_blank" method="POST" onsubmit="return confirm('Confirm ban of <%= site.username %>');">
|
|
<%== csrf_token_input_html %>
|
|
<input type="hidden" name="usernames" value="<%= site.username %>">
|
|
<input type="hidden" name="classifier" value="spam">
|
|
<button>Spam</button>
|
|
</form>
|
|
|
|
<form action="/admin/banhammer" target="_blank" method="POST" onsubmit="return confirm('Confirm ban of <%= site.username %>');">
|
|
<%== csrf_token_input_html %>
|
|
<input type="hidden" name="usernames" value="<%= site.username %>">
|
|
<input type="hidden" name="classifier" value="phishing">
|
|
<button>Phishing</button>
|
|
</form>
|
|
-->
|
|
<form action="/admin/mark_nsfw" target="_blank" method="POST" onsubmit="return confirm('Confirm NSFW marking of <%= site.username %>');">
|
|
<%== csrf_token_input_html %>
|
|
<input type="hidden" name="username" value="<%= site.username %>">
|
|
<button>Mark NSFW</button>
|
|
</form>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
</li>
|
|
<% end %>
|
|
</ul>
|
|
<% end %>
|
|
|
|
<% if params[:sort_by] != 'random' %>
|
|
<%== erb :'_pagination', layout: false %>
|
|
<% end %>
|
|
|
|
<% unless is_education? %>
|
|
<div class="row content misc">
|
|
<h3>Popular Tags</h3>
|
|
<p class="tagcloud">
|
|
<% Tag.popular_names(100).each_with_index do |tag,i| %>
|
|
<% i = (((i+1).to_f/100) * 10).to_i %>
|
|
<a class="tag<%= i %>" href="/browse?tag=<%= Rack::Utils.escape tag[:name] %>"><%= tag[:name] %></a>
|
|
<% end %>
|
|
</p>
|
|
</div>
|
|
<div class="row content misc">
|
|
<h3>Text Search</h3>
|
|
<form id="searchForm" method="GET" action="https://duckduckgo.com" class="content" onsubmit="return addSiteToSearch()">
|
|
<input name="csrf_token" type="hidden" value="<%= csrf_token %>">
|
|
<fieldset>
|
|
<input id="searchQuery" name="q" type="text" placeholder="keywords" class="input-Area" autocapitalize="off" autocorrect="off" value="<%= flash[:username] %>" style="width: 50%">
|
|
<input class="btn btn-Action" type="submit" value="Search">
|
|
</fieldset>
|
|
</form>
|
|
<p>Search powered by <a href="https://duckduckgo.com/">Duck Duck Go</a></p>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<script>
|
|
function addSiteToSearch() {
|
|
var searchQuery = $('#searchQuery')
|
|
var finalSearchQuery = searchQuery.val() + ' site:neocities.org'
|
|
|
|
window.location = 'https://duckduckgo.com/?q='+encodeURI(finalSearchQuery)
|
|
return false
|
|
}
|
|
</script>
|
|
|
|
|
|
<script>
|
|
function banSite(usernames, classifier, el) {
|
|
$.post('/admin/banhammer', {
|
|
usernames: usernames,
|
|
classifier: classifier,
|
|
csrf_token: '<%= csrf_token %>'
|
|
}, function(data) {
|
|
$(el).css('color', '#3eff00')
|
|
})
|
|
return false;
|
|
}
|
|
</script>
|