From d9b33238e98c56dc7dda60f7ea0f8d22dd3f2faa Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Fri, 30 May 2014 21:18:55 -0700 Subject: [PATCH] continued work on site profile, tag adding --- app.rb | 9 +++++- ext/NilClass.rb | 5 +++ ext/string.rb | 5 +++ migrations/030_fix_event_timestamp.rb | 11 +++++++ models/event.rb | 2 +- models/site.rb | 8 ++++- views/_news.erb | 2 +- views/_news_actions.erb | 4 +-- views/_tags.erb | 33 ++++++++++++++++++-- views/site.erb | 45 ++++++++++++++++++++++++--- 10 files changed, 110 insertions(+), 14 deletions(-) create mode 100644 ext/NilClass.rb create mode 100644 ext/string.rb create mode 100644 migrations/030_fix_event_timestamp.rb diff --git a/app.rb b/app.rb index 26976881..c03d261f 100644 --- a/app.rb +++ b/app.rb @@ -214,6 +214,13 @@ post '/site/:site_id/toggle_follow' do |site_id| {result: (current_site.toggle_follow(site) ? 'followed' : 'unfollowed')}.to_json end +post '/tags/add' do + require_login + current_site.new_tags = params[:tags] + current_site.save validate: false + redirect request.referer +end + get '/browse' do @current_page = params[:current_page] @current_page = @current_page.to_i @@ -899,7 +906,7 @@ post '/event/:event_id/delete' do |event_id| content_type :json event = Event[id: event_id] - if event.site_id == current_site.id || event.owned_by?(current_site) + if event.site_id == current_site.id || event.created_by?(current_site) event.delete return {result: 'success'}.to_json end diff --git a/ext/NilClass.rb b/ext/NilClass.rb new file mode 100644 index 00000000..4560b84b --- /dev/null +++ b/ext/NilClass.rb @@ -0,0 +1,5 @@ +class NilClass + def empty? + true + end +end diff --git a/ext/string.rb b/ext/string.rb new file mode 100644 index 00000000..ad9a15ea --- /dev/null +++ b/ext/string.rb @@ -0,0 +1,5 @@ +class String + def empty? + strip == '' ? true : false + end +end diff --git a/migrations/030_fix_event_timestamp.rb b/migrations/030_fix_event_timestamp.rb new file mode 100644 index 00000000..7f9f3263 --- /dev/null +++ b/migrations/030_fix_event_timestamp.rb @@ -0,0 +1,11 @@ +Sequel.migration do + up { + DB.drop_column :events, :created_at + DB.add_column :events, :created_at, :timestamp, index: true + } + + down { + DB.drop_column :events, :created_at + DB.add_column :events, :created_at, :integer, index: true + } +end diff --git a/models/event.rb b/models/event.rb index 1ff42a3b..214a7d89 100644 --- a/models/event.rb +++ b/models/event.rb @@ -13,7 +13,7 @@ class Event < Sequel::Model many_to_one :actioning_site, key: :actioning_site_id, class: :Site def created_by?(site) - return true if profile_comment && profile_comment.actioning_site_id == site.id + return true if actioning_site_id == site.id false end diff --git a/models/site.rb b/models/site.rb index 9f0d80c5..5b43ea78 100644 --- a/models/site.rb +++ b/models/site.rb @@ -279,12 +279,18 @@ class Site < Sequel::Model def after_save if @new_tag_strings @new_tag_strings.each do |new_tag_string| - add_tag Tag[name: new_tag_string] || Tag.create(name: new_tag_string) + add_tag_name new_tag_string end end super end + def add_tag_name(name) + if tags_dataset.filter(name: name).first.nil? + add_tag Tag[name: name] || Tag.create(name: name) + end + end + def after_create DB['update servers set slots_available=slots_available-1 where id=?', self.server.id].first super diff --git a/views/_news.erb b/views/_news.erb index 53810238..65611d8a 100644 --- a/views/_news.erb +++ b/views/_news.erb @@ -13,7 +13,7 @@
<% end %> diff --git a/views/_news_actions.erb b/views/_news_actions.erb index 0b1d1618..511692d9 100644 --- a/views/_news_actions.erb +++ b/views/_news_actions.erb @@ -9,10 +9,8 @@ <% end %> <% if current_site %> Reply - <% if event.created_by? current_site %> - <% if event.profile_comment_id %> + <% if event.profile_comment_id && event.created_by?(current_site) %> Edit - <% end %> <% end %> <% if event.created_by?(current_site) || event.site_id == current_site.id %> Delete diff --git a/views/_tags.erb b/views/_tags.erb index dc49993c..ecd6fec0 100644 --- a/views/_tags.erb +++ b/views/_tags.erb @@ -1,10 +1,37 @@ <% if (!is_current_site && site.tags_dataset.count > 0) || is_current_site %>

Tags

- <% if site.tags_dataset.count == 0 %> -

You don't have any tags yet. Add some! + <% if is_current_site && site.tags_dataset.count == 0 %> +

You don't have any tags yet. Add some! <% else %> <% site.tags.each do |tag| %> <%= tag.name %> <% end %> + + <% if is_current_site %> +

+ Add Tags +
+ <% end %> <% end %> -<% end %> +<% end %> + + \ No newline at end of file diff --git a/views/site.erb b/views/site.erb index b8fe6c36..5e207d48 100644 --- a/views/site.erb +++ b/views/site.erb @@ -33,7 +33,7 @@ Tip <% end %> - +
@@ -79,6 +79,28 @@
Created<%= site.created_at.strftime('%B %-d, %Y') %>
+ <%== erb :'_follows', layout: false, locals: {site: site, is_current_site: site == current_site} %> + +

Share

+
+

+ + +

+ +

+ +

+ +

+ submit to reddit +

+ +

+

+

+
+ - <%== erb :'_follows', layout: false, locals: {site: site, is_current_site: site == current_site} %> - <%== erb :'_tags', layout: false, locals: {site: site, is_current_site: site == current_site} %>
@@ -101,12 +121,28 @@
+ + + + + \ No newline at end of file