增加文章二级回复功能
This commit is contained in:
parent
0c891236a8
commit
40a44c3568
|
@ -20,7 +20,7 @@ class OrgDocumentCommentsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def show
|
def show
|
||||||
|
@document = OrgDocumentComment.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@ -48,6 +48,17 @@ class OrgDocumentCommentsController < ApplicationController
|
||||||
@document.save
|
@document.save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_reply_in_doc
|
||||||
|
@document = OrgDocumentComment.find(params[:id]).root
|
||||||
|
@comment = OrgDocumentComment.new(:organization_id => @document.organization_id, :creator_id => User.current.id, :reply_id => params[:id])
|
||||||
|
@comment.content = params[:org_comment][:org_content]
|
||||||
|
@document.children << @comment
|
||||||
|
@document.save
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def find_organization
|
def find_organization
|
||||||
@organization = Organization.find(params[:organization_id])
|
@organization = Organization.find(params[:organization_id])
|
||||||
end
|
end
|
||||||
|
@ -61,4 +72,62 @@ class OrgDocumentCommentsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_reply
|
||||||
|
@org_document_comment = OrgDocumentComment.find(params[:id])
|
||||||
|
@document = @org_document_comment.root
|
||||||
|
org = @org_document_comment.organization
|
||||||
|
@org_document_comment.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def quote
|
||||||
|
@org_comment = OrgDocumentComment.find(params[:id])
|
||||||
|
@subject = @org_comment.content
|
||||||
|
@subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
|
||||||
|
|
||||||
|
@content = "> #{ll(Setting.default_language, :text_user_wrote, User.find(@org_comment.creator_id).realname)}\n> "
|
||||||
|
@temp = OrgDocumentComment.new
|
||||||
|
#@course_id = params[:course_id]
|
||||||
|
@temp.content = "<blockquote>#{ll(Setting.default_language, :text_user_wrote, User.find(@org_comment.creator_id).realname)} <br/>#{@org_comment.content.html_safe}</blockquote>".html_safe
|
||||||
|
respond_to do | format|
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def reply
|
||||||
|
@document = OrgDocumentComment.find(params[:id]).root
|
||||||
|
@quote = params[:quote][:quote]
|
||||||
|
@org_document = OrgDocumentComment.new(:creator_id => User.current.id, :reply_id => params[:id])
|
||||||
|
|
||||||
|
# params[:blog_comment][:sticky] = params[:blog_comment][:sticky] || 0
|
||||||
|
# params[:blog_comment][:locked] = params[:blog_comment][:locked] || 0
|
||||||
|
@org_document.title = params[:org_document_comment][:title]
|
||||||
|
@org_document.content = params[:org_document_comment][:content]
|
||||||
|
@org_document.content = @quote + @org_document.content
|
||||||
|
#@org_document.title = "RE: #{@article.title}" unless params[:blog_comment][:title]
|
||||||
|
@document.children << @org_document
|
||||||
|
# @user_activity_id = params[:user_activity_id]
|
||||||
|
# user_activity = UserActivity.where("act_type='BlogComment' and act_id =#{@article.id}").first
|
||||||
|
# if user_activity
|
||||||
|
# user_activity.updated_at = Time.now
|
||||||
|
# user_activity.save
|
||||||
|
# end
|
||||||
|
# attachments = Attachment.attach_files(@org_document, params[:attachments])
|
||||||
|
# render_attachment_warning_if_needed(@org_document)
|
||||||
|
#@article.save
|
||||||
|
# redirect_to user_blogs_path(:user_id=>params[:user_id])
|
||||||
|
respond_to do |format|
|
||||||
|
format.html {
|
||||||
|
# if params[:course_id] #如果呆了course_id过来了,那么这是要跳到课程大纲去的
|
||||||
|
# redirect_to syllabus_course_path(:id=>params[:course_id])
|
||||||
|
# else
|
||||||
|
redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id)
|
||||||
|
# end
|
||||||
|
|
||||||
|
}
|
||||||
|
format.js
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/user_blog', :locals => {:activity => @article,:user_activity_id =>@user_activity_id}) %>");
|
||||||
|
init_activity_KindEditor_data(<%= @user_activity_id%>,"","87%");
|
|
@ -0,0 +1,31 @@
|
||||||
|
<style type="text/css">
|
||||||
|
/*回复框*/
|
||||||
|
.ReplyToMessageInputContainer .ke-toolbar{display:none;width:400px;border:none;background:none;padding:0px 0px;}
|
||||||
|
.ReplyToMessageInputContainer .ke-toolbar-icon{line-height:26px;font-size:14px;padding-left:26px;}
|
||||||
|
.ReplyToMessageInputContainer .ke-toolbar-icon-url{background-image:url( /images/public_icon.png )}
|
||||||
|
.ReplyToMessageInputContainer .ke-outline{padding:0px 0px;line-height:26px;font-size:14px;}
|
||||||
|
.ReplyToMessageInputContainer .ke-icon-emoticons{background-position:0px -671px;width:50px;height:26px;}
|
||||||
|
.ReplyToMessageInputContainer .ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;}
|
||||||
|
.ReplyToMessageInputContainer .ke-outline{border:none;}
|
||||||
|
.ReplyToMessageInputContainer .ke-inline-block{display: none;}
|
||||||
|
.ReplyToMessageInputContainer .ke-container{float:left;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="ReplyToMessageContainer borderBottomNone"id="reply_to_message_<%= reply.id%>">
|
||||||
|
<div class="homepagePostReplyPortrait mr15 imageFuzzy" id="reply_image_<%= reply.id%>"><%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(User.current), :alt => "用户头像" %></div>
|
||||||
|
<div class="ReplyToMessageInputContainer mb10">
|
||||||
|
<div nhname='new_message_<%= reply.id%>'>
|
||||||
|
<%= form_for @org_comment, :as => :reply, :url => {:controller => 'org_document_comments',:action => 'reply', :id => @org_comment.id}, :method => 'post', :html => {:multipart => true, :id => 'new_form'} do |f| %>
|
||||||
|
<input type="hidden" name="quote[quote]" id="quote_quote">
|
||||||
|
<input type="hidden" name="org_document_comment[title]" id="reply_subject">
|
||||||
|
<textarea placeholder="有问题或有建议,请直接给我留言吧!" style="display: none" nhname='new_message_textarea_<%= reply.id%>' name="org_document_comment[content]"></textarea>
|
||||||
|
<div nhname='toolbar_container_<%= reply.id%>' style="float:left; margin-left: 5px; padding-top:3px;"></div>
|
||||||
|
<a id="new_message_submit_btn_<%= reply.id%>" href="javascript:void(0)" class="blue_n_btn fr" style="display:none;margin-top:2px;">发送</a>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<p nhname='contentmsg_<%= reply.id%>'></p>
|
||||||
|
<% end%>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
|
@ -0,0 +1 @@
|
||||||
|
location.reload();
|
|
@ -37,7 +37,7 @@
|
||||||
<div class="mt5">
|
<div class="mt5">
|
||||||
<a href="javascript:void(0);" class="BlueCirBtnMini fr" onclick="org_document_description_editor.sync();$('#new_org_document_form').submit();">确定</a>
|
<a href="javascript:void(0);" class="BlueCirBtnMini fr" onclick="org_document_description_editor.sync();$('#new_org_document_form').submit();">确定</a>
|
||||||
<span class="fr mr10 mt3">或</span>
|
<span class="fr mr10 mt3">或</span>
|
||||||
<a href="javascript:void(0);" onclick="$('#org_document_editor').hide(); $('#doc_title_hint').hide();" class="fr mr10 mt3">取消</a>
|
<a href="javascript:void(0);" onclick="location=document.referrer;" class="fr mr10 mt3">取消</a>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<% @documents.each do |document| %>
|
<% @documents.each do |document| %>
|
||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
init_activity_KindEditor_data(<%= document.id%>, null, "87%");
|
init_activity_KindEditor_data(<%= OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first.id %>, null, "87%");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<%= render :partial => 'organizations/show_org_document', :locals => {:document => document, :act => OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first} %>
|
<%= render :partial => 'organizations/show_org_document', :locals => {:document => document, :act => OrgActivity.where("org_act_type='OrgDocumentComment'and org_act_id=?", document.id).first} %>
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
if($("#reply_message_<%= @org_comment.id%>").length > 0) {
|
||||||
|
$("#reply_message_<%= @org_comment.id%>").replaceWith("<%= escape_javascript(render :partial => 'org_document_comments/simple_ke_reply_form', :locals => {:reply => @org_comment,:temp =>@temp,:subject =>@subject}) %>");
|
||||||
|
$(function(){
|
||||||
|
$('#reply_subject').val("<%= raw escape_javascript(@subject) %>");
|
||||||
|
$('#quote_quote').val("<%= raw escape_javascript(@temp.content.html_safe) %>");
|
||||||
|
init_activity_KindEditor_data(<%= @org_comment.id%>,null,"85%");
|
||||||
|
});
|
||||||
|
}else if($("#reply_to_message_<%= @org_comment.id %>").length >0) {
|
||||||
|
$("#reply_to_message_<%= @org_comment.id%>").replaceWith("<p id='reply_message_<%= @org_comment.id %>'></p>");
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
//location.reload();
|
|
@ -0,0 +1,147 @@
|
||||||
|
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"init_activity_KindEditor",'blog' %>
|
||||||
|
<script>
|
||||||
|
$(function() {
|
||||||
|
init_activity_KindEditor_data(<%= @document.id%>,null,"85%");
|
||||||
|
showNormalImage('message_description_<%= @document.id %>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<div class="resources mt10" id="organization_document_<%= @document.id %>">
|
||||||
|
<div class="homepagePostBrief">
|
||||||
|
<div class="homepagePostPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(User.find(@document.creator_id)), :width => 45, :heigth => 45), user_path(@document.creator_id) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostDes">
|
||||||
|
<div class="homepagePostTo">
|
||||||
|
<%= link_to User.find(@document.creator_id), user_path(@document.creator.id), :class => "newsBlue mr15" %>
|
||||||
|
TO <%= link_to @document.organization.name, organization_path(@document.organization), :class => "newsBlue" %>
|
||||||
|
|
|
||||||
|
<% if @document.organization.home_id == @document.id %>
|
||||||
|
<span style="color:#269ac9;">首页</span>
|
||||||
|
<% else %>
|
||||||
|
<span style="color:#269ac9;">组织文章</span>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostTitle postGrey"><%= link_to @document.title, org_document_comment_path(:id => @document.id, :organization_id => @document.organization.id) %></div>
|
||||||
|
<div class="homepagePostDate">
|
||||||
|
发布时间:<%= format_activity_day(@document.created_at) %> <%= format_time(@document.created_at, false) %></div>
|
||||||
|
<% unless @document.content.blank? %>
|
||||||
|
<div class="homepagePostIntro">
|
||||||
|
<%= @document.content.html_safe %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<!-- <%# if defined?(home_id) %>
|
||||||
|
<div style="float:right;">最后编辑:<%#= User.find() %></div>
|
||||||
|
<%# end %>-->
|
||||||
|
<% if User.current.admin? || User.current.admin_of_org?(Organization.find(@document.organization_id) || User.current.id == @document.creator_id) %>
|
||||||
|
<div class="homepagePostSetting">
|
||||||
|
<ul>
|
||||||
|
<li class="homepagePostSettingIcon">
|
||||||
|
<ul class="homepagePostSettiongText">
|
||||||
|
<li>
|
||||||
|
<%= form_for('new_form', :url => {:controller => 'organizations', :action => 'set_homepage', :id => @document.organization_id, :home_id => @document.id}, :method => "put", :remote => true) do |f| %>
|
||||||
|
<a href="javascript:void(0);" class="postOptionLink" onclick="$(this).parent().submit();">设为首页</a>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "编辑文章", edit_org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id), :class => "postOptionLink" %>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<%= link_to "删除文章", org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id), :method => 'delete',
|
||||||
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
|
:remote => true, :class => 'postOptionLink' %>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% comments_for_doc = @document.children.reorder("created_at desc") %>
|
||||||
|
<% count = @document.children.count() %>
|
||||||
|
|
||||||
|
<div class="homepagePostReply fl" style="background-color: #f1f1f1;" id="<%= @document.id %>">
|
||||||
|
<% if count > 0 %>
|
||||||
|
<div class="homepagePostReplyBanner">
|
||||||
|
<div class="homepagePostReplyBannerCount">回复(<%= count %>)</div>
|
||||||
|
</div>
|
||||||
|
<div class="" id="reply_div_<%= @document.id %>">
|
||||||
|
<% comments_for_doc.each_with_index do |reply,i| %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function(){
|
||||||
|
showNormalImage('reply_message_description_<%= reply.id %>');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<% user = User.find(reply.creator_id) %>
|
||||||
|
<div class="homepagePostReplyContainer" onmouseover="$('#reply_edit_menu_<%= reply.id%>').show();" onmouseout="$('#reply_edit_menu_<%= reply.id %>').hide();">
|
||||||
|
<div class="homepagePostReplyPortrait">
|
||||||
|
<%= link_to image_tag(url_to_avatar(user), :width => 33,:height => 33), user_path(user) %>
|
||||||
|
</div>
|
||||||
|
<div class="homepagePostReplyDes">
|
||||||
|
<div class="homepagePostReplyContent upload_img break_word" id="reply_message_description_<%= reply.id %>">
|
||||||
|
<%= reply.content.html_safe unless reply.content.nil? %>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top: -7px; margin-bottom: 5px">
|
||||||
|
<%= format_time(reply.created_at) %>
|
||||||
|
<div class="fr" id="reply_edit_menu_<%= reply.id%>" style="display: none">
|
||||||
|
<%= link_to(
|
||||||
|
l(:button_reply),
|
||||||
|
{:controller => 'org_document_comments',:action => 'quote',:user_id=>reply.creator_id, :id => reply.id},
|
||||||
|
:remote => true,
|
||||||
|
:method => 'get',
|
||||||
|
:class => 'fr newsBlue',
|
||||||
|
:title => l(:button_reply)) if User.current.logged? %>
|
||||||
|
<%= link_to(
|
||||||
|
l(:button_delete),
|
||||||
|
{:controller => 'org_document_comments',:action => 'delete_reply', :id => reply.id},
|
||||||
|
:method => :delete,
|
||||||
|
:class => 'fr newsGrey mr10',
|
||||||
|
:data => {:confirm => l(:text_are_you_sure)},
|
||||||
|
:title => l(:button_delete)
|
||||||
|
) if reply.creator_id == User.current.id %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p id="reply_message_<%= reply.id %>"></p>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<% end %>
|
||||||
|
<% if User.current.logged?%>
|
||||||
|
<div class="talkWrapMsg" nhname="about_talk_reply">
|
||||||
|
<em class="talkWrapArrow"></em>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div class="talkConIpt ml5 mb10" id="reply<%= @document.id %>">
|
||||||
|
<%= form_for :org_comment, :url => {:action => 'add_reply_in_doc',:controller => 'org_document_comments', :id => @document.id}, :html => {:multipart => true, :id => 'message_form'} do |f| %>
|
||||||
|
<%= f.kindeditor :org_content,:width=>'99%',:height => '100px;',:editor_id=>'message_content_editor' %>
|
||||||
|
<%= link_to l(:button_cancel), "javascript:void(0)", :onclick => 'message_content_editor.html("");', :class => " grey_btn fr c_white mt10 mr5" %>
|
||||||
|
<%= link_to l(:button_reply), "javascript:void(0)", :onclick => "message_content_editor.sync();$('#message_form').submit();", :class => "blue_btn fr c_white mt10 mb10", :style => "margin-right: 5px;" %>
|
||||||
|
<% end %>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function expand_reply(container, btnid) {
|
||||||
|
var target = $(container);
|
||||||
|
var btn = $(btnid);
|
||||||
|
if (btn.data('init') == '0') {
|
||||||
|
btn.data('init', 1);
|
||||||
|
btn.html('收起回复');
|
||||||
|
target.show();
|
||||||
|
} else {
|
||||||
|
btn.data('init', 0);
|
||||||
|
btn.html('展开更多');
|
||||||
|
target.hide();
|
||||||
|
target.eq(0).show();
|
||||||
|
target.eq(1).show();
|
||||||
|
target.eq(2).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -14,7 +14,7 @@
|
||||||
<span style="color:#269ac9;">组织文章</span>
|
<span style="color:#269ac9;">组织文章</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="homepagePostTitle postGrey"><%= document.title %></div>
|
<div class="homepagePostTitle postGrey"><%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id) %></div>
|
||||||
<div class="homepagePostDate">
|
<div class="homepagePostDate">
|
||||||
发布时间:<%= format_activity_day(document.created_at) %> <%= format_time(document.created_at, false) %></div>
|
发布时间:<%= format_activity_day(document.created_at) %> <%= format_time(document.created_at, false) %></div>
|
||||||
<% unless document.content.blank? %>
|
<% unless document.content.blank? %>
|
||||||
|
|
|
@ -66,6 +66,10 @@ RedmineApp::Application.routes.draw do
|
||||||
resources :org_document_comments do
|
resources :org_document_comments do
|
||||||
member do
|
member do
|
||||||
post 'add_reply'
|
post 'add_reply'
|
||||||
|
get 'quote'
|
||||||
|
post 'reply'
|
||||||
|
post 'add_reply_in_doc'
|
||||||
|
delete 'delete_reply'
|
||||||
end
|
end
|
||||||
collection do
|
collection do
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
class AddCreatedAtToOrgMembers < ActiveRecord::Migration
|
|
||||||
def change
|
|
||||||
add_column :org_members, :created_at, :timestamp
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in New Issue