From 50d0e9d4db724f5c80f7abaa80246bee62b9f34b Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Thu, 3 Jul 2014 14:03:35 -0500 Subject: [PATCH] shorten titles, DRY up url generation --- ext/string.rb | 9 +++++++++ models/site.rb | 22 +++++++++++++++++++++- views/_news.erb | 25 ++++++++++++++----------- views/_news_actions.erb | 2 +- views/api.erb | 1 + views/browse.erb | 6 +++--- views/dashboard.erb | 8 +++++--- views/home.erb | 4 ++-- views/site.erb | 20 ++++++++++---------- 9 files changed, 66 insertions(+), 31 deletions(-) diff --git a/ext/string.rb b/ext/string.rb index ad9a15ea..032e818b 100644 --- a/ext/string.rb +++ b/ext/string.rb @@ -2,4 +2,13 @@ class String def empty? strip == '' ? true : false end + + def shorten(length, usedots=true) + if usedots + return self if self.length < length + "#{self[0..length-3]}..." + else + self[0..length] + end + end end diff --git a/models/site.rb b/models/site.rb index fd28fdd8..f1a1414c 100644 --- a/models/site.rb +++ b/models/site.rb @@ -1,5 +1,6 @@ require 'tilt' require 'rss' +require 'nokogiri' class Site < Sequel::Model include Sequel::ParanoidDelete @@ -61,6 +62,8 @@ class Site < Sequel::Model BANNED_TIME = 2592000 # 30 days in seconds + TITLE_MAX = 100 + many_to_one :server many_to_many :tags @@ -256,6 +259,15 @@ class Site < Sequel::Model return false end + if filename == 'index.html' + new_title = Nokogiri::HTML(File.read(uploaded.path)).css('title').first.text + + if new_title.length < TITLE_MAX + self.title = new_title + save_changes(validate: false) + end + end + FileUtils.mv uploaded.path, file_path(filename) File.chmod(0640, file_path(filename)) @@ -509,8 +521,16 @@ class Site < Sequel::Model Event.filter(site_id: following_ids+[self.id]).order(:created_at.desc).limit(limit, offset).all end + def host + domain ? domain : "#{username}.neocities.org" + end + def title - values[:title] || "#{values[:username]}.neocities.org" + if values[:title].nil? || values[:title].empty? + domain ? domain : "#{username}.neocities.org" + else + values[:title] + end end def hits_english diff --git a/views/_news.erb b/views/_news.erb index 81c6c3f4..ee0c4952 100644 --- a/views/_news.erb +++ b/views/_news.erb @@ -13,29 +13,32 @@
- <% actioning_site_username = event.actioning_site_dataset.select(:username).first.username %> - <% event_site_username = event.site_dataset.select(:username).first.username %> - <%= actioning_site_username %> is following <%= event_site_username %>.<%= event.created_at.ago %> -
+ <% actioning_site = event.actioning_site_dataset.select(:username, :title, :domain).first %> + <% event_site = event.site_dataset.select(:username, :title, :domain).first %> + <%= actioning_site.title.shorten(40) %> + is following + <%= event_site.title.shorten(40) %> + <%= event.created_at.ago %> +
<% elsif event.site_change_id %>
- <% event_site_username = event.site_dataset.select(:username).first.username %> - <%= event_site_username %>.neocities.org has been updated. <%= event.created_at.ago %> + <% event_site = event.site_dataset.select(:username, :title, :domain).first %> + <%= event_site.title %> has been updated. <%= event.created_at.ago %>
<% site_change_filenames = event.site_change.site_change_filenames %> <% unless site_change_filenames.empty? %>
- <% event.site_change.site_change_filenames.each do |f| %> + <% site_change_filenames.each do |f| %>
- + <% if site_change_file_display_class(f) == 'html' %> - + <% elsif site_change_file_display_class(f) == 'image' %> - + <% elsif site_change_file_display_class(f) == 'misc' %> <%= File.extname(f).sub('.', '') %> @@ -70,7 +73,7 @@ <%= comment.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= comment_likes_count > 0 ? " (#{comment_likes_count})" : '' %> <% else %> <% if comment_likes_count > 0 %> - <%= comment_likes_count %> <%= comment_likes_count == 1 ? 'like' : 'likes' %> + <%= comment_likes_count %> <%= comment_likes_count == 1 ? 'like' : 'likes' %> <% end %> <% end %> diff --git a/views/_news_actions.erb b/views/_news_actions.erb index 0b8a4f40..34a880cd 100644 --- a/views/_news_actions.erb +++ b/views/_news_actions.erb @@ -4,7 +4,7 @@ <%= event.site_likes?(current_site) ? 'Unlike' : 'Like' %><%= event_likes_count > 0 ? " (#{event_likes_count})" : '' %> <% else %> <% if event_likes_count > 0 %> - <%= event_likes_count %> <%= event_likes_count == 1 ? 'like' : 'likes' %> + <%= event_likes_count %> <%= event_likes_count == 1 ? 'like' : 'likes' %> <% end %> <% end %> <% if current_site %> diff --git a/views/api.erb b/views/api.erb index 1f43fed0..ec688c67 100644 --- a/views/api.erb +++ b/views/api.erb @@ -33,6 +33,7 @@
  • Node.js / JavaScript
  • Ruby - contributed by Chris Fung
  • Go - contributed by Peter Hellberg
  • +
  • R (statistical language) - contributed by Sean Kross

  • diff --git a/views/browse.erb b/views/browse.erb index ccd9ca41..9bb35ed8 100644 --- a/views/browse.erb +++ b/views/browse.erb @@ -61,14 +61,14 @@