mirror of
https://github.com/neocities/neocities.git
synced 2025-07-25 03:48:22 +02:00
further cleanups to app.rb
This commit is contained in:
parent
4cbcc3a5e9
commit
60e6697529
10 changed files with 261 additions and 279 deletions
62
app/browse.rb
Normal file
62
app/browse.rb
Normal file
|
@ -0,0 +1,62 @@
|
|||
get '/browse/?' do
|
||||
params.delete 'tag' if params[:tag].nil? || params[:tag].empty?
|
||||
site_dataset = browse_sites_dataset
|
||||
site_dataset = site_dataset.paginate @current_page, Site::BROWSE_PAGINATION_LENGTH
|
||||
@page_count = site_dataset.page_count || 1
|
||||
@sites = site_dataset.all
|
||||
erb :browse
|
||||
end
|
||||
|
||||
def browse_sites_dataset
|
||||
@current_page = params[:current_page]
|
||||
@current_page = @current_page.to_i
|
||||
@current_page = 1 if @current_page == 0
|
||||
|
||||
site_dataset = Site.filter(is_banned: false, is_crashing: false).filter(site_changed: true)
|
||||
|
||||
if current_site
|
||||
if !current_site.blocking_site_ids.empty?
|
||||
site_dataset.where!(Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocking_site_ids))
|
||||
end
|
||||
|
||||
if current_site.blocks_dataset.count
|
||||
site_dataset.where!(
|
||||
Sequel.~(Sequel.qualify(:sites, :id) => current_site.blocks_dataset.select(:actioning_site_id).all.collect {|s| s.actioning_site_id})
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
case params[:sort_by]
|
||||
when 'hits'
|
||||
site_dataset.order!(:hits.desc, :site_updated_at.desc)
|
||||
when 'views'
|
||||
site_dataset.order!(:views.desc, :site_updated_at.desc)
|
||||
when 'newest'
|
||||
site_dataset.order!(:created_at.desc, :views.desc)
|
||||
when 'oldest'
|
||||
site_dataset.order!(:created_at, :views.desc)
|
||||
when 'random'
|
||||
site_dataset.where! 'random() < 0.01'
|
||||
when 'last_updated'
|
||||
params[:sort_by] = 'last_updated'
|
||||
site_dataset.order!(:site_updated_at.desc, :views.desc)
|
||||
else
|
||||
if params[:tag]
|
||||
params[:sort_by] = 'views'
|
||||
site_dataset.order!(:views.desc, :site_updated_at.desc)
|
||||
else
|
||||
params[:sort_by] = 'last_updated'
|
||||
site_dataset.order!(:site_updated_at.desc, :views.desc)
|
||||
end
|
||||
end
|
||||
|
||||
site_dataset.where! ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
|
||||
|
||||
if params[:tag]
|
||||
site_dataset = site_dataset.association_join(:tags).select_all(:sites)
|
||||
site_dataset.where! ['tags.name = ?', params[:tag]]
|
||||
site_dataset.where! ['tags.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)]
|
||||
end
|
||||
|
||||
site_dataset
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue