diff --git a/app/views/attachments/_form_project_new.html.erb b/app/views/attachments/_form_project_new.html.erb
new file mode 100644
index 000000000..09a1ea847
--- /dev/null
+++ b/app/views/attachments/_form_project_new.html.erb
@@ -0,0 +1,77 @@
+
+<% if defined?(container) && container && container.saved_attachments %>
+ <% if isReply %>
+ <% container.saved_attachments.each_with_index do |attachment, i| %>
+
+
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
+ <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+ <%= l(:field_is_public)%>:
+ <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
+
+ <%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
+ <%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
+
+ <% end %>
+ <% else %>
+ <% container.attachments.each_with_index do |attachment, i| %>
+
+
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
+ <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+ <%= l(:field_is_public)%>:
+ <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false, :class => 'is_public_checkbox')%>
+
+ <%= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') %>
+ <%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
+
+ <%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
+
+ <% end %>
+ <% end %>
+<% end %>
+
+
+
+<%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %>
+
+<%#= button_tag "#{l(:button_browse)}", :type=>"button", :onclick=>"file#{container.id}.click()",:class =>"sub_btn",:style => ie8? ? 'display:none' : '' %>
+ <% id ="file#{container.id}"%>
+ 上传附件
+ <%= file_field_tag 'attachments[dummy][file]',
+ :id => "file#{container.id}",
+ :class => 'file_selector',
+ :multiple => true,
+ :onchange => "addInputFiles_board(this, '#{container.id}');",
+ :style => 'display:none',
+ :data => {
+ :max_file_size => Setting.attachment_max_size.to_i.kilobytes,
+ :max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
+ :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
+ :upload_path => uploads_path(:format => 'js'),
+ :description_placeholder => l(:label_optional_description),
+ :field_is_public => l(:field_is_public),
+ :are_you_sure => l(:text_are_you_sure),
+ :file_count => l(:label_file_count),
+ :delete_all_files => l(:text_are_you_sure_all),
+ :lebel_file_uploding => l(:lebel_file_uploding),
+ :containerid => "#{container.id}"
+ } %>
+ <% if container.nil? %>
+ <%= l(:label_no_file_uploaded)%>
+ <% end %>
+
+
+
+<% content_for :header_tags do %>
+ <%= javascript_include_tag 'attachments' %>
+<% end %>
+
+
diff --git a/app/views/boards/_project_new.html.erb b/app/views/boards/_project_new.html.erb
new file mode 100644
index 000000000..44895a48e
--- /dev/null
+++ b/app/views/boards/_project_new.html.erb
@@ -0,0 +1,65 @@
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: true, prettify: false) %>
+<% end %>
+
+<%= error_messages_for 'message' %>
+
+
+
+
+
+ <%if User.current.member_of?(project)%>
+
+ <%= f.check_box :sticky, :value => topic.sticky%>
+ <%= label_tag 'message_sticky', l(:label_board_sticky) %>
+ <%= f.check_box :locked, :value => topic.locked%>
+ <%= label_tag 'message_locked', l(:label_board_locked) %>
+
+
+ <% end %>
+
+
+ <%= text_area :quote,:quote,:style => 'display:none' %>
+ <%= hidden_field_tag :asset_id,params[:asset_id],:required => false,:style => 'display:none' %>
+
+ <%= f.kindeditor :content, :editor_id => 'message_content_editor',
+ :owner_id => topic.nil? ? 0: topic.id,
+ :owner_type => OwnerTypeHelper::MESSAGE,
+ :width => '100%',
+ :height => 300,
+ :minHeight=>300,
+ :class => 'talk_text fl',
+ :input_html => { :id => 'message_content',
+ :class => 'talk_text fl',
+ :maxlength => 5000 },
+ at_id: topic.id, at_type: topic.class.to_s
+ %>
+
+
+
+
+
+
+ <%= render :partial => 'attachments/form_project_new', :locals => {:container => topic, :isReply => @isReply} %>
+
+
+
+
+ <%if !edit_mode %>
+
确定
+
或
+
取消
+ <% else %>
+
确定
+
或
+ <%= link_to "取消",board_message_url(topic.board, topic.root, :r => (topic.parent_id && topic.id)), :class => "fr mr10 mt3"%>
+ <% end %>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/boards/_project_show.html.erb b/app/views/boards/_project_show.html.erb
index 839d587b2..9d08194d8 100644
--- a/app/views/boards/_project_show.html.erb
+++ b/app/views/boards/_project_show.html.erb
@@ -1,278 +1,35 @@
-
-
-
- <% if User.current.language == "zh"%>
- <%= h @board.name %>
- <% else %>
- <%= l(:project_module_boards) %>
- <% end %>
-
- <% if User.current.logged? %>
-
<%= l(:label_message_new) %>
- <% end %>
-
-
- <% if !User.current.logged? %>
-
- <%= l(:label_user_login_project_board) %>
- <%= link_to l(:label_user_login_new), signin_path, :class => "c_blue ml5" %>
-
- <% end %>
-
-
-
-
- <%= render :partial => 'project_new_topic' %>
-
-
-
-
-
-
讨论区共有<%= @topic_count %> 个帖子
- <% if @topics.any? %>
- <% @topics.each do |topic| %>
-
- <%= link_to image_tag(url_to_avatar(topic.author), :width=>"42",:height=>"42"), user_path(topic.author),:class =>'talkmain_pic fl' %>
-
- <% author = topic.author.to_s %>
-
- <%= link_to author, user_path(topic.author), :class =>"talkmain_name fl f14",:title=>author,
- :style=>'max-width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;' %>
-
-
:
-
-
<%= h(topic.subject) %>
-
- <% if topic.editable_by?(User.current) %>
-
<%= l(:button_edit) %>
- <% end %>
- <%= link_to(l(:button_delete), {:controller =>'messages',:action => 'destroy', :id => topic.id, :board_id => topic.board_id, :is_board=>'true'},
- :method => :post,
- :data => {:confirm => l(:text_are_you_sure)},
- :class => 'talk_edit fr',
- :style => ' margin-right: 10px;') if topic.destroyable_by?(User.current) %>
- <% if topic.sticky? %>
-
<%= l(:label_board_sticky)%>
- <% end %>
-
-
-
-
-
- <%= topic.content.html_safe %>
-
-
-
-
- [展开]
-
-
-
-
- <%= link_to_attachments_course topic, :author => false %>
- <%= l(:label_activity_time)%>: <%= format_time topic.created_on %>
-
- <% if User.current.logged? %>
-
<%= l(:button_reply) %>
- <% end %>
-
-
-
- <%= render :partial => 'edit',locals: {:topic => topic} %>
-
-
-
-
- <% reply = Message.new(:subject => "RE: #{topic.subject}")%>
- <% if !topic.locked? && authorize_for('messages', 'reply') %>
-
-
-
-
- <%= form_for reply, :as => :reply, :url => {:controller=>'messages',:action => 'reply', :id => topic.id, :board_id => topic.board_id, :is_board => 'true'},
- :html => {:nhname=>"form",:multipart => true, :id => 'message_form' + topic.id.to_s, :name=>'message-form'} do |f| %>
- <%= render :partial => 'form_project', :locals => {:f => f, :replying => true} %>
-
-
- <% end %>
-
-
-
- <% end %>
-
- <% replies_all = topic.children.includes(:author, :attachments, {:board => :project}).reorder("#{Message.table_name}.id desc").all %>
- <% unless replies_all.empty? %>
-
-
- <% replies_all_i = 0 %>
- <% replies_all.each do |message| %>
- <% replies_all_i=replies_all_i+1 %>
-
- <%= link_to image_tag(url_to_avatar(message.author), :width => '34',:height => '34'), user_path(message.author), :class =>'Msg_pic' %>
-
- <%= link_to_user_header message.author,false,:class => 'fl c_orange f14 ' %>
-
-
- <%= textAreailizable message,:content,:attachments => message.attachments %>
-
-
-
-
-
<%= format_time(message.created_on) %>
- <%= link_to(l(:button_delete),{:controller => 'messages', :action => 'destroy', :id => message.id, :board_id => message.board_id, :is_board => 'true'},
- :method => :post,
- :data => {:confirm => l(:text_are_you_sure)},
- :title => l(:button_delete),
- :class => ' c_dblue fr f14') if message.course_destroyable_by?(User.current) %>
- <%= link_to(l(:button_reply), 'javascript:;',
- :nhname =>'showbtn_child_reply',
- :class => ' c_dblue fr f14',
- :style => 'margin-right: 10px;',
- :title => l(:button_reply)) if !topic.locked? && authorize_for('messages', 'reply') %>
-
-
-
- <% end %>
-
-
- <%if topic.replies_count>2 %>
-
- <% end %>
- <% end %>
-
-
- <% end %>
- <% else %>
-
<%= l(:label_no_data) %>
- <% end %>
-
- <%= pagination_links_full @topic_pages, @topic_count, :per_page_links => false, :remote => false, :flag => true %>
-
-
-
-<%# other_formats_links do |f| %>
- <%#= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
-<%# end %>
- <% html_title @board.name %>
- <% content_for :header_tags do %>
- <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %>
- <% end %>
-
-
-
\ No newline at end of file
+ function reset_topic(){
+ $("#message_subject").val("");
+ $("#subjectmsg").text("");
+ document.getElementById("message_sticky").checked=false;
+ document.getElementById("message_locked").checked=false;
+ $("#topic_attachments").html("<%= escape_javascript(render :partial => 'attachments/form_project_new', :locals => {:container => Message.new, :isReply => @isReply})%>");
+ message_content_editor.html("");
+ $("#topic_editor").toggle();
+ }
+ <% if @is_new%>
+ $(function(){
+ $("#message_subject").focus();
+ });
+ <%end%>
+
+
+
\ No newline at end of file
diff --git a/app/views/boards/_project_show_detail.html.erb b/app/views/boards/_project_show_detail.html.erb
new file mode 100644
index 000000000..c0d020b1d
--- /dev/null
+++ b/app/views/boards/_project_show_detail.html.erb
@@ -0,0 +1,72 @@
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: false, prettify: false) %>
+ <%= javascript_include_tag "init_activity_KindEditor" %>
+<% end %>
+
+
+<% if topics%>
+ <% topics.each do |topic| %>
+
+ <% if topic %>
+ <%= render :partial => 'users/project_message', :locals => {:activity => topic, :user_activity_id => topic.id} %>
+ <% end %>
+ <% end %>
+
+ <% if topics.count == 10 %>
+
+ <%= link_to "点击展开更多",boards_topic_path(@board, :course_id => @board.course.id ,:page => page),:id => "show_more_course_topic",:remote => "true",:class => "loadMore mt10 f_grey"%>
+ <% end %>
+<% end%>
+
+
diff --git a/app/views/boards/show.html.erb b/app/views/boards/show.html.erb
index 5ae3459a5..d6d825d46 100644
--- a/app/views/boards/show.html.erb
+++ b/app/views/boards/show.html.erb
@@ -34,7 +34,7 @@
<% if @project %>
- <%= render :partial => 'project_show', locals: {project: @project} %>
+ <%= render :partial => 'project_show', locals: {:topics => @topics, :page => 0, project: @project} %>
<% elsif @course %>
<%= render :partial => 'course_show', :locals => {:topics => @topics, :page => 0, :course => @course} %>
<% end %>
diff --git a/public/javascripts/project.js b/public/javascripts/project.js
index cc679847a..1e2e71e4e 100644
--- a/public/javascripts/project.js
+++ b/public/javascripts/project.js
@@ -551,4 +551,64 @@ function issueEditShow(){
function issueDetailShow(){
$("#issue_edit").hide();
$("#issue_detail").show();
-}
\ No newline at end of file
+}
+
+//项目讨论区提交
+function regexTopicSubject() {
+ var name = $("#message_subject").val();
+ if(name.length ==0)
+ {
+ $("#subjectmsg").text("标题不能为空");
+ $("#subjectmsg").css('color','#ff0000');
+ $("#message_subject").focus();
+ return false;
+ }
+ else if(name.length <= 255)
+ {
+ $("#subjectmsg").text("填写正确");
+ $("#subjectmsg").css('color','#008000');
+ return true;
+ }
+ else
+ {
+ $("#subjectmsg").text("标题超过255个字符");
+ $("#subjectmsg").css('color','#ff0000');
+ $("#message_subject").focus();
+ return false;
+ }
+}
+
+function regexTopicDescription()
+{
+ var name = message_content_editor.html();
+ if(message_content_editor.isEmpty())
+ {
+ $("#message_content_span").text("描述不能为空");
+ $("#message_content_span").css('color','#ff0000');
+ return false;
+ }
+ else if(name.length >=6000){
+ $("#message_content_span").text("描述最多3000个汉字(或6000个英文字符)");
+ $("#message_content_span").css('color','#ff0000');
+ return false;
+ }
+ else
+ {
+ $("#message_content_span").text("填写正确");
+ $("#message_content_span").css('color','#008000');
+ return true;
+ }
+}
+function submit_topic_project()
+{
+ if(regexTopicSubject() && regexTopicDescription())
+ {
+ alert("Test");
+ message_content_editor.sync();
+ $("#message-form-project").submit();
+ }
+}
+
+function reset_topic(){
+
+}
diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css
index c9d303f1d..672db9bcc 100644
--- a/public/stylesheets/project.css
+++ b/public/stylesheets/project.css
@@ -1094,4 +1094,11 @@ a:hover.link_file_a{ background:url(../images/pic_file.png) 0 -25px no-repeat; c
.weekly{ background:url(../images/public_icon.png) -66px -95px no-repeat; width:18px; height:21px;}
.upload_img img{max-width: 100%;}
-.table_maxWidth table {max-width: 642px;}
\ No newline at end of file
+.table_maxWidth table {max-width: 642px;}
+
+/*新讨论区*/
+select.InputBox, input.InputBox, textarea.InputBox {border: 1px solid #D9D9D9;color: #888;height: 28px;line-height: 28px;padding-left: 5px;font-size: 14px;}
+.w713 {width: 713px;}
+a.BlueCirBtnMini{ display:block;width:40px; height:22px; background-color:#ffffff; line-height:24px; vertical-align:middle; text-align:center; border:1px solid #269ac9; color:#269ac9; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;}
+a.AnnexBtn{ background: url(images/homepage_icon2.png) 0px -343px no-repeat !important; width:70px; height:20px; display:block; padding-left:20px; color:#888888;}
+a:hover.BlueCirBtnMini{ background:#269ac9; color:#fff;}
\ No newline at end of file