diff --git a/app/assets/images/favicons/discourse.png b/app/assets/images/favicons/discourse.png new file mode 100644 index 00000000000..4795da14fb9 Binary files /dev/null and b/app/assets/images/favicons/discourse.png differ diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index fce2b4609e1..b60c6415684 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -36,7 +36,7 @@ module ApplicationHelper def crawlable_meta_data(opts=nil) opts ||= {} - opts[:image] ||= "#{Discourse.base_url}#{SiteSetting.logo_url}" + opts[:image] ||= "#{Discourse.base_url}#{SiteSetting.logo_small_url}" opts[:url] ||= "#{Discourse.base_url}#{request.fullpath}" # Add opengraph tags @@ -45,8 +45,8 @@ module ApplicationHelper result << tag(:meta, property: 'twitter:card', content: "summary") [:image, :url, :title, :description].each do |property| if opts[property].present? - result << tag(:meta, property: "og:#{property}", content: opts[property]) << "\n" - result << tag(:meta, property: "twitter:#{property}", content: opts[property]) << "\n" + result << tag(:meta, {property: "og:#{property}", content: opts[property]}, nil, false) << "\n" + result << tag(:meta, {property: "twitter:#{property}", content: opts[property]}, nil, false) << "\n" end end diff --git a/app/models/user.rb b/app/models/user.rb index 85ad4bb74ce..27fff15ede7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -320,6 +320,11 @@ class User < ActiveRecord::Base "https://www.gravatar.com/avatar/#{email_hash}.png?s={size}&r=pg&d=identicon" end + # Don't pass this up to the client - it's meant for server side use + def small_avatar_url + "https://www.gravatar.com/avatar/#{email_hash}.png?s=50&r=pg&d=identicon" + end + # return null for local avatars, a template for gravatar def avatar_template User.avatar_template(email) diff --git a/app/views/topics/show.html.erb b/app/views/topics/show.html.erb index cddbc237f34..3c3094ca06a 100644 --- a/app/views/topics/show.html.erb +++ b/app/views/topics/show.html.erb @@ -24,5 +24,7 @@ <% content_for :head do %> <%= auto_discovery_link_tag(@topic_view, {action: :feed, format: :rss}, title: t('rss_posts_in_topic', topic: @topic_view.title), type: 'application/rss+xml') %> - <%= crawlable_meta_data(title: @topic_view.title, description: @topic_view.summary) %> + <%= crawlable_meta_data(title: @topic_view.title, + description: @topic_view.summary, + image: @topic_view.image_url) %> <% end %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 169bd2dc393..fdfee589790 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -5,5 +5,5 @@

<%= t 'powered_by_html' %>

<% content_for :head do %> - <%= crawlable_meta_data(title: @user.username, description: @user.bio_summary) %> + <%= crawlable_meta_data(title: @user.username, description: @user.bio_summary, image: @user.small_avatar_url) %> <% end %> diff --git a/lib/oneboxer/discourse_onebox.rb b/lib/oneboxer/discourse_local_onebox.rb similarity index 98% rename from lib/oneboxer/discourse_onebox.rb rename to lib/oneboxer/discourse_local_onebox.rb index 8933f883d87..5fd7b2c694d 100644 --- a/lib/oneboxer/discourse_onebox.rb +++ b/lib/oneboxer/discourse_local_onebox.rb @@ -2,7 +2,7 @@ require_dependency 'oneboxer/oembed_onebox' require_dependency 'freedom_patches/rails4' module Oneboxer - class DiscourseOnebox < BaseOnebox + class DiscourseLocalOnebox < BaseOnebox include ActionView::Helpers::DateHelper matcher do diff --git a/lib/oneboxer/discourse_remote_onebox.rb b/lib/oneboxer/discourse_remote_onebox.rb new file mode 100644 index 00000000000..34e2c90de5b --- /dev/null +++ b/lib/oneboxer/discourse_remote_onebox.rb @@ -0,0 +1,22 @@ +require_dependency 'oneboxer/oembed_onebox' +require_dependency 'freedom_patches/rails4' + +module Oneboxer + class DiscourseRemoteOnebox < HandlebarsOnebox + + matcher /^https?\:\/\/meta\.discourse\.org\/.*$/ + favicon 'discourse.png' + + def template + template_path('simple_onebox') + end + + def parse(data) + doc = Nokogiri::HTML(data) + open_graph = Oneboxer.parse_open_graph(doc) + open_graph['text'] = open_graph['description'] + open_graph + end + + end +end diff --git a/lib/topic_view.rb b/lib/topic_view.rb index 8883fe307ce..768554feb87 100644 --- a/lib/topic_view.rb +++ b/lib/topic_view.rb @@ -79,6 +79,11 @@ class TopicView Summarize.new(posts.first.cooked).summary end + def image_url + return nil if posts.blank? + posts.first.user.small_avatar_url + end + def filter_posts(opts = {}) if opts[:post_number].present? # Get posts near a post