diff --git a/app/admin.rb b/app/admin.rb index 6ef723c1..287945b0 100644 --- a/app/admin.rb +++ b/app/admin.rb @@ -61,6 +61,21 @@ post '/admin/mark_nsfw' do redirect '/admin' end +post '/admin/feature' do + require_admin + site = Site[username: params[:username]] + + if site.nil? + flash[:error] = 'User not found' + redirect '/admin' + end + + site.featured_at = Time.now + site.save_changes(validate: false) + flash[:success] = 'Site has been featured.' + redirect '/admin' +end + def require_admin redirect '/' unless signed_in? && current_site.is_admin -end \ No newline at end of file +end diff --git a/models/site.rb b/models/site.rb index e06bdf3e..130d842b 100644 --- a/models/site.rb +++ b/models/site.rb @@ -211,6 +211,10 @@ class Site < Sequel::Model end class << self + def featured(limit=5) + select(:id, :username, :title, :domain).exclude(featured_at: nil).order(:featured_at.desc).limit(limit) + end + def valid_email_unsubscribe_token?(email, token) email_unsubscribe_token(email) == token end diff --git a/views/admin.erb b/views/admin.erb index cb0e2df6..d3d3aa82 100644 --- a/views/admin.erb +++ b/views/admin.erb @@ -62,4 +62,17 @@ + +
+
+

Feature Site

+
+ <%== csrf_token_input_html %> +

This site will be featured on the front page and in a special browse section.

+

Site Name:

+

+

+
+
+
diff --git a/views/index.erb b/views/index.erb index 62113bc8..46f5dd00 100644 --- a/views/index.erb +++ b/views/index.erb @@ -210,36 +210,13 @@ -->