diff --git a/app/logical/post_sets/post.rb b/app/logical/post_sets/post.rb index 40a8fbe9b..6234df2dd 100644 --- a/app/logical/post_sets/post.rb +++ b/app/logical/post_sets/post.rb @@ -55,6 +55,18 @@ module PostSets ::Pool.find_by_name(pool_name) end + def favgroup_name + tag_string.match(/^favgroup:(\S+)$/i).try(:[], 1) + end + + def has_favgroup? + is_single_tag? && favgroup_name && favgroup + end + + def favgroup + ::FavoriteGroup.find_by_name(favgroup_name) + end + def has_deleted? tag_string !~ /status/ && ::Post.tag_match("#{tag_string} status:deleted").exists? end diff --git a/app/models/favorite_group.rb b/app/models/favorite_group.rb index d68bae5d2..1d83ab79f 100644 --- a/app/models/favorite_group.rb +++ b/app/models/favorite_group.rb @@ -84,8 +84,22 @@ class FavoriteGroup < ActiveRecord::Base self.post_ids = post_ids.scan(/\d+/).uniq.join(" ") end + def self.normalize_name(name) + name.gsub(/\s+/, "_") + end + def normalize_name - self.name = name.gsub(/\s+/, "_") + self.name = FavoriteGroup.normalize_name(name) + end + + def self.find_by_name(name) + if name =~ /^\d+$/ + where("id = ?", name.to_i).first + elsif name + where("lower(name) = ?", normalize_name(name).mb_chars.downcase).first + else + nil + end end def initialize_creator diff --git a/app/views/posts/index.html.erb b/app/views/posts/index.html.erb index 415d083c6..5aa6f0585 100644 --- a/app/views/posts/index.html.erb +++ b/app/views/posts/index.html.erb @@ -25,6 +25,8 @@
  • <%= link_to "Wiki", wiki_page_path(@post_set.wiki_page), :id => "show-excerpt-link" %>
  • <% elsif @post_set.has_pool? %>
  • <%= link_to "Pool", pool_path(@post_set.pool), :id => "show-excerpt-link" %>
  • + <% elsif @post_set.has_favgroup? %> +
  • <%= link_to "Favorite Group", favorite_group_path(@post_set.favgroup), :id => "show-excerpt-link" %>
  • <% end %> diff --git a/app/views/posts/partials/index/_excerpt.html.erb b/app/views/posts/partials/index/_excerpt.html.erb index 0ec1b73c9..a22968b83 100644 --- a/app/views/posts/partials/index/_excerpt.html.erb +++ b/app/views/posts/partials/index/_excerpt.html.erb @@ -69,6 +69,12 @@

    <%= link_to "View pool", pool_path(post_set.pool.id) %>

    + <% elsif post_set.has_favgroup? %> +

    + Favorite Group: + <%= link_to post_set.favgroup.pretty_name, favorite_group_path(post_set.favgroup) %> +

    + Creator: <%= link_to_user post_set.favgroup.creator %> <% else %> <% if post_set.tag_string.present? %>

    There is currently no wiki page for the tag "<%= post_set.tag_string %>". You can <%= link_to "create one", new_wiki_page_path(:wiki_page => {:title => post_set.tag_string}) %>.