144 lines
5.7 KiB
Text
144 lines
5.7 KiB
Text
<%= board_breadcrumb(@message) %>
|
|
|
|
<div class="contextual">
|
|
<%= content_tag('span', watcher_link(@topic, User.current), :id => 'watcher') %>
|
|
<% voted = User.current.voted_for?(@topic) %>
|
|
<%= link_to(
|
|
voted ? l(:button_questions_unvote) : l(:button_questions_vote),
|
|
{:controller => 'questions', :action => 'vote', :id => @topic},
|
|
:class => 'icon ' + (voted ? 'icon-vote' : 'icon-unvote')
|
|
) if User.current.allowed_to?(:vote_messages, @project) %>
|
|
|
|
<%= link_to(
|
|
l(:button_quote),
|
|
{:action => 'quote', :id => @topic},
|
|
:remote => true,
|
|
:method => 'get',
|
|
:class => 'icon icon-comment',
|
|
:remote => true) if !@topic.locked? && authorize_for('messages', 'reply') %>
|
|
<%= link_to(
|
|
l(:button_edit),
|
|
{:action => 'edit', :id => @topic},
|
|
:class => 'icon icon-edit'
|
|
) if @message.editable_by?(User.current) %>
|
|
<%= link_to(
|
|
l(:button_delete),
|
|
{:action => 'destroy', :id => @topic},
|
|
:method => :post,
|
|
:data => {:confirm => l(:text_are_you_sure)},
|
|
:class => 'icon icon-del'
|
|
) if @message.destroyable_by?(User.current) %>
|
|
</div>
|
|
|
|
<div class="message details">
|
|
<h2><%=h @topic.subject %></h2>
|
|
<%= avatar(@topic.author, :size => "32") %>
|
|
<p class="author"><%= link_to_user @topic.author %><br>
|
|
<%= l(:label_questions_added_time, :value => time_tag(@topic.created_on)).html_safe %>
|
|
</p>
|
|
<div class="wiki">
|
|
<%= textilizable(@topic, :content) %>
|
|
</div>
|
|
<%= link_to_attachments @topic, :author => false %>
|
|
|
|
</div>
|
|
<br />
|
|
|
|
<% unless @replies.empty? %>
|
|
<h3 class="comments"><%= l(:label_reply_plural) %> (<%= @reply_count %>)</h3>
|
|
<% @replies.each do |message| %>
|
|
<div class="message reply" id="<%= "message-#{message.id}" %>">
|
|
<div class="contextual">
|
|
<% liked = User.current.voted_for?(message) %>
|
|
<%= link_to(
|
|
message.count_votes_up > 0 ? "(#{message.count_votes_up})" : "",
|
|
{:controller => 'questions', :action => 'vote', :id => message},
|
|
:class => 'vote icon ' + (liked ? 'icon-vote' : 'icon-unvote')
|
|
) if true || User.current.allowed_to?(:vote_messages, @project) %>
|
|
<%= link_to(
|
|
image_tag('comment.png'),
|
|
{:action => 'quote', :id => message},
|
|
:remote => true,
|
|
:method => 'get',
|
|
:title => l(:button_quote)) if !@topic.locked? && authorize_for('messages', 'reply') %>
|
|
<%= link_to(
|
|
image_tag('edit.png'),
|
|
{:action => 'edit', :id => message},
|
|
:title => l(:button_edit)
|
|
) if message.editable_by?(User.current) %>
|
|
<%= link_to(
|
|
image_tag('delete.png'),
|
|
{:action => 'destroy', :id => message},
|
|
:method => :post,
|
|
:data => {:confirm => l(:text_are_you_sure)},
|
|
:title => l(:button_delete)
|
|
) if message.destroyable_by?(User.current) %>
|
|
</div>
|
|
<% if Setting.gravatar_enabled? %>
|
|
<div class="avatar">
|
|
<%= message_avatar = avatar(message.author, :size => "32") %>
|
|
</div>
|
|
<% end %>
|
|
<div class="reply-details <%= 'use-avatar' unless message_avatar.blank? %>">
|
|
<h4 class="author"><%= authoring message.created_on, message.author %></h4>
|
|
<div class="wiki"><%= textilizable message, :content, :attachments => message.attachments %></div>
|
|
<%= link_to_attachments message, :author => false %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
<p class="pagination"><%= pagination_links_full @reply_pages, @reply_count, :per_page_links => false %></p>
|
|
<% end %>
|
|
|
|
<% if !@topic.locked? && authorize_for('messages', 'reply') %>
|
|
<p><%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %></p>
|
|
<div id="reply" style="display:none;">
|
|
<%= form_for @reply, :as => :reply, :url => {:action => 'reply', :id => @topic}, :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
|
<%= render :partial => 'form', :locals => {:f => f, :replying => true} %>
|
|
<%= submit_tag l(:button_submit) %>
|
|
<%= preview_link({:controller => 'messages', :action => 'preview', :board_id => @board}, 'message-form') %>
|
|
<% end %>
|
|
<div id="preview" class="wiki"></div>
|
|
</div>
|
|
<% end %>
|
|
|
|
|
|
<% content_for :sidebar do %>
|
|
<h3><%= l(:label_questions_message) %></h3>
|
|
<ul class="question-meta">
|
|
<li class="votes icon icon-vote">
|
|
<%= l(:label_questions_votes, :count => @topic.count_votes_up - @topic.count_votes_down ) %>
|
|
</li>
|
|
<li class="views icon icon-view">
|
|
<%= l(:label_questions_views, :count => @topic.view_count ) %>
|
|
</li>
|
|
<% unless @topic.tags.blank? %>
|
|
<li class="tags icon icon-tag">
|
|
<%=
|
|
@topic.tags.collect do |tag|
|
|
link_to tag, {:controller => "questions", :action => "topics", :project_id => @project, :tag => tag.name}
|
|
end.join(', ').html_safe
|
|
%>
|
|
</li>
|
|
<% end %>
|
|
</ul>
|
|
|
|
<h3><%= l(:label_questions_related_messages) %></h3>
|
|
<ul class="related-topics">
|
|
<%# Board.all.map(&:topics).flatten.first(5).each do |topic| %>
|
|
<% tokens = @topic.subject.strip.scan(%r{((\s|^)"[\s\w]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')} || "" %>
|
|
<% if ActiveRecord::VERSION::MAJOR >= 4 %>
|
|
<% related_topics = Message.where(tokens.map{ |t| "subject LIKE '%#{t}%'" }.join(' OR ')).to_a.compact if tokens %>
|
|
<% else %>
|
|
<% related_topics = Message.search(tokens, @project, :limit => 5)[0].select{|m| m != @topic && m.parent_id == nil }.compact if tokens %>
|
|
<% end %>
|
|
<% related_topics.each do |topic| %>
|
|
<li class="related-topic">
|
|
<%= link_to h(topic.subject), { :controller => 'messages', :action => 'show', :board_id => topic.board, :id => topic } %>
|
|
</li>
|
|
<% end if related_topics %>
|
|
</ul>
|
|
|
|
|
|
<% end %>
|
|
|
|
<% html_title @topic.subject %>
|