added humanized tag strings

This commit is contained in:
albert
2012-10-30 17:58:52 -04:00
parent 1ec6738aca
commit 26f7e904c2
3 changed files with 54 additions and 3 deletions

View File

@@ -455,8 +455,32 @@ class Post < ActiveRecord::Base
tag_string =~ /(?:^| )#{tag}(?:$| )/
end
def tag_categories
@tag_categories ||= Tag.categories_for(tag_array)
end
def copyright_tags
typed_tags("copyright")
end
def character_tags
typed_tags("character")
end
def artist_tags
typed_tags("artist")
end
def typed_tags(name)
@typed_tags ||= {}
@typed_tags[name] ||= begin
tag_array.select do |tag|
tag_categories[tag] == Danbooru.config.tag_category_mapping[name]
end
end
end
def essential_tag_string
tag_categories = Tag.categories_for(tag_array)
tag_array.each do |tag|
if tag_categories[tag] == Danbooru.config.tag_category_mapping["copyright"]
return tag
@@ -852,6 +876,9 @@ class Post < ActiveRecord::Base
def reload(options = nil)
super
reset_tag_array_cache
@tag_categories = nil
@typed_tags = nil
self
end
end

View File

@@ -27,6 +27,30 @@ class PostPresenter < Presenter
PostPresenter.preview(@post)
end
def humanized_tag_string
@post.tag_string.split(/ /).join(", ").tr("_", " ")
end
def humanized_essential_tag_string
string = []
if @post.character_tags.any?
string << @post.character_tags.slice(0, 5).to_sentence
end
if @post.copyright_tags.any?
string << "from"
string << @post.copyright_tags.slice(0, 5).to_sentence
end
if @post.artist_tags.any?
string << "by"
string << @post.artist_tags.to_sentence
end
string.join(" ").tr("_", " ")
end
def image_html(template)
return template.content_tag("p", "This image was deleted.") if @post.is_deleted? && !CurrentUser.user.is_janitor?
return template.content_tag("p", "You need a privileged account to see this image.") if !Danbooru.config.can_user_see_post?(CurrentUser.user, @post)

View File

@@ -92,8 +92,8 @@
<meta name="post-is-deleted" content="<%= @post.is_deleted? %>">
<meta name="post-is-flagged" content="<%= @post.is_flagged? %>">
<meta name="config-large-width" content="<%= Danbooru.config.large_image_width %>">
<meta property="og:title" content="Check out this image on <%= Danbooru.config.app_name %>: <%= @post.essential_tag_string %>">
<meta property="og:description" content="Check out this image on <%= Danbooru.config.app_name %>: <%= @post.essential_tag_string %>">
<meta property="og:title" content="<%= @post.presenter.humanized_essential_tag_string %> - <%= Danbooru.config.app_name %>">
<meta property="og:description" content="<%= @post.presenter.humanized_tag_string %> - <%= Danbooru.config.app_name %>">
<meta property="og:image" content="<%= @post.preview_file_url %>">
<% end %>