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 "View pool", pool_path(post_set.pool.id) %>
+ <% elsif post_set.has_favgroup? %> +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}) %>.