166 lines
8.2 KiB
Plaintext
166 lines
8.2 KiB
Plaintext
<% if @topic_view %>
|
|
<div id="topic-title">
|
|
<h1>
|
|
<%= render_topic_title(@topic_view.topic) %>
|
|
</h1>
|
|
|
|
<% if @breadcrumbs.present? %>
|
|
<div class="topic-category" itemscope itemtype="http://schema.org/BreadcrumbList">
|
|
<% @breadcrumbs.each_with_index do |c, i| %>
|
|
<span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
|
|
<a href="<%= @topic_view.topic.category.url %>" class="badge-wrapper bullet" itemprop="item">
|
|
<span class='badge-category-bg' style='background-color: #<%= c[:color] %>'></span>
|
|
<span class='badge-category clear-badge'>
|
|
<span class='category-name' itemprop='name'><%= c[:name] %></span>
|
|
</span>
|
|
</a>
|
|
<meta itemprop="position" content="<%= i + 1 %>" />
|
|
</span>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<% if @tags.present? %>
|
|
<div class="topic-category">
|
|
<div class='discourse-tags list-tags'>
|
|
<% @tags.each_with_index do |tag, i| %>
|
|
<a href='<%= "#{Discourse.base_url}/tag/#{tag.name}" %>' class='discourse-tag' rel="tag"><%= tag.name -%></a><% if i < @tags.size - 1 %>, <% end %>
|
|
<% end %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<%= server_plugin_outlet "topic_header" %>
|
|
|
|
<%- if include_crawler_content? %>
|
|
<div itemscope itemtype='http://schema.org/DiscussionForumPosting'>
|
|
<meta itemprop='headline' content='<%= @topic_view.title %>'>
|
|
<link itemprop='url' href='<%= @topic_view.absolute_url %>'>
|
|
<% if @topic_view.topic.category.present? %>
|
|
<meta itemprop='articleSection' content='<%= @topic_view.topic.category.name %>'>
|
|
<% end %>
|
|
<meta itemprop='keywords' content='<%= @tags.map(&:name).join(', ') %>'>
|
|
<div itemprop='publisher' itemscope itemtype="http://schema.org/Organization">
|
|
<meta itemprop='name' content='<%= SiteSetting.company_name.presence || SiteSetting.title %>'>
|
|
<% if application_logo_url.present? %>
|
|
<div itemprop='logo' itemscope itemtype="http://schema.org/ImageObject">
|
|
<meta itemprop='url' content='<%= application_logo_url %>'>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<% if @topic_view.prev_page %>
|
|
<meta itemprop='datePublished' content='<%= @topic_view.topic.created_at.to_formatted_s(:iso8601) %>'>
|
|
<span itemprop='author' itemscope itemtype="http://schema.org/Person">
|
|
<meta itemprop='name' content='<%= @topic_view.topic.user.username %>'>
|
|
</span>
|
|
<meta itemprop='text' content='<%= @topic_view.topic.excerpt %>'>
|
|
<% end %>
|
|
|
|
<% @topic_view.posts.each do |post| %>
|
|
<% if (u = post.user) %>
|
|
<div id='post_<%= post.post_number %>' <%= post.is_first_post? ? "" : "itemprop='comment' itemscope itemtype='http://schema.org/Comment'".html_safe %> class='topic-body crawler-post'>
|
|
<div class='crawler-post-meta'>
|
|
<span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
|
<a itemprop="url" href='<%= Discourse.base_url %>/u/<%= u.username %>'><span itemprop='name'><%= u.username %></span></a>
|
|
<%= "(#{u.name})" if (SiteSetting.display_name_on_posts && SiteSetting.enable_names? && !u.name.blank?) %>
|
|
<%
|
|
post_custom_fields = @topic_view.post_custom_fields[post.id] || {}
|
|
who_username = post_custom_fields["action_code_who"] || ""
|
|
small_action_href = post_custom_fields["action_code_path"] || ""
|
|
if post.action_code
|
|
%>
|
|
<%= t("js.action_codes.#{post.action_code}", when: "", who: who_username, href: small_action_href).html_safe %>
|
|
<% end %>
|
|
</span>
|
|
|
|
<% if post.is_first_post? %>
|
|
<link itemprop="mainEntityOfPage" href="<%= post.topic.url %>">
|
|
<% end %>
|
|
|
|
<% if post.image_url %>
|
|
<link itemprop="image" href="<%= post.image_url %>">
|
|
<% end %>
|
|
|
|
<span class="crawler-post-infos">
|
|
<time itemprop='datePublished' datetime='<%= post.created_at.to_formatted_s(:iso8601) %>' class='post-time'>
|
|
<%= l post.created_at, format: :long %>
|
|
</time>
|
|
<% if post.version > 1 %>
|
|
<meta itemprop='dateModified' content='<%= post.last_version_at.to_formatted_s(:iso8601) %>'>
|
|
<% else %>
|
|
<meta itemprop='dateModified' content='<%= post.created_at.to_formatted_s(:iso8601) %>'>
|
|
<% end %>
|
|
<span itemprop='position'><%= post.post_number %></span>
|
|
</span>
|
|
</div>
|
|
<div class='post' itemprop='text'>
|
|
<%= post.hidden ? t('flagging.user_must_edit').html_safe : post.cooked.html_safe %>
|
|
</div>
|
|
|
|
<div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter">
|
|
<meta itemprop="interactionType" content="http://schema.org/LikeAction"/>
|
|
<meta itemprop="userInteractionCount" content="<%= post.like_count %>" />
|
|
<span class='post-likes'><%= post.like_count > 0 ? t('post.has_likes', count: post.like_count) : '' %></span>
|
|
</div>
|
|
|
|
<div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter">
|
|
<meta itemprop="interactionType" content="http://schema.org/CommentAction"/>
|
|
<meta itemprop="userInteractionCount" content="<%= post.reply_count %>" />
|
|
</div>
|
|
|
|
<% if @topic_view.link_counts[post.id] && @topic_view.link_counts[post.id].filter { |l| l[:reflection] }.length > 0 %>
|
|
<div class='crawler-linkback-list' itemscope itemtype='http://schema.org/ItemList'>
|
|
<% @topic_view.link_counts[post.id].each_with_index do |link, i| %>
|
|
<% if link[:reflection] && link[:title].present? %>
|
|
<div itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'>
|
|
<a itemprop='url' href="<%=link[:url]%>"><%=link[:title]%></a>
|
|
<meta itemprop='position' content='<%= i+1 %>'>
|
|
</div>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<% if @topic_view.prev_page || @topic_view.next_page %>
|
|
<div role='navigation' itemscope itemtype='http://schema.org/SiteNavigationElement' class="topic-body crawler-post">
|
|
<% if @topic_view.prev_page %>
|
|
<span itemprop='name'><%= link_to t(:prev_page), @topic_view.prev_page_path, rel: 'prev', itemprop: 'url' %></span>
|
|
<% end %>
|
|
<% if @topic_view.next_page %>
|
|
<span itemprop='name'><b><%= link_to t(:next_page), @topic_view.next_page_path, rel: 'next', itemprop: 'url' %></b></span>
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<%= build_plugin_html 'server:topic-show-after-posts-crawler' %>
|
|
<% end %>
|
|
|
|
<% content_for :head do %>
|
|
<%= auto_discovery_link_tag(@topic_view, {action: :feed, slug: @topic_view.topic.slug, topic_id: @topic_view.topic.id}, rel: 'alternate nofollow', title: t('rss_posts_in_topic', topic: @topic_view.title), type: 'application/rss+xml') %>
|
|
<%= raw crawlable_meta_data(title: @topic_view.title, description: @topic_view.summary(strip_images: true), image: @topic_view.image_url, read_time: @topic_view.read_time, like_count: @topic_view.like_count, ignore_canonical: true, published_time: @topic_view.published_time, breadcrumbs: @breadcrumbs, tags: @tags.map(&:name)) %>
|
|
|
|
<% if @topic_view.prev_page || @topic_view.next_page %>
|
|
<% if @topic_view.prev_page %>
|
|
<link rel="prev" href="<%= @topic_view.prev_page_path -%>">
|
|
<% end %>
|
|
<% if @topic_view.next_page %>
|
|
<link rel="next" href="<%= @topic_view.next_page_path -%>">
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|
|
|
|
<% content_for(:title) { @title || "#{gsub_emoji_to_unicode(@topic_view.page_title)} - #{SiteSetting.title}" } %>
|
|
|
|
<% if @topic_view.print %>
|
|
<% content_for :after_body do %>
|
|
<%= preload_script('print-page') %>
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|