From 029eb1a19538484944abdde5b493d36f43b8f95b Mon Sep 17 00:00:00 2001
From: sw <939547590@qq.com>
Date: Fri, 16 May 2014 11:02:25 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=9B=9E=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/homework_attach_controller.rb | 27 ++++
app/models/homework_attach.rb | 4 +-
app/models/journals_for_message.rb | 1 +
app/views/attachments/_app_link.html.erb | 9 +-
app/views/bids/_homework_list.html.erb | 15 +-
app/views/bids/show_project.html.erb | 7 +-
app/views/homework_attach/show.html.erb | 148 ++++++++++++++++++
app/views/softapplications/_new_message.erb | 10 +-
config/routes.rb | 2 +-
9 files changed, 208 insertions(+), 15 deletions(-)
create mode 100644 app/controllers/homework_attach_controller.rb
create mode 100644 app/views/homework_attach/show.html.erb
diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb
new file mode 100644
index 000000000..cfa84071b
--- /dev/null
+++ b/app/controllers/homework_attach_controller.rb
@@ -0,0 +1,27 @@
+class HomeworkAttachController < ApplicationController
+ #显示作业信息
+ def show
+ @homework = HomeworkAttach.find(params[:id])
+ # 打分统计
+ stars_reates = @homework.
+ rates(:quality)
+ stars_reates_count = stars_reates.count == 0 ? 1 : stars_reates.count
+ stars_status = stars_reates.select("stars, count(*) as scount").
+ group("stars")
+ @stars_status_map = Hash.new(0.0)
+ stars_status.each do |star_status|
+ percent = (star_status.scount * 1.0/ stars_reates_count) * 100.to_f
+ percent_m = format("%.2f", percent)
+ @stars_status_map["star#{star_status.stars.to_i}".to_sym] =
+ percent_m.to_s + "%"
+ end
+ @jours = @homework.journals_for_messages.order("created_on DESC")
+ end
+
+ def destroyjours
+ @homework = HomeworkAttach.find(params[:homework_id])
+ JournalsForMessage.delete_message(params[:object_id])
+ redirect_to homework_attach_path(@homework)
+ end
+end
+
diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb
index fb743ab5c..b8e559dff 100644
--- a/app/models/homework_attach.rb
+++ b/app/models/homework_attach.rb
@@ -2,9 +2,11 @@ class HomeworkAttach < ActiveRecord::Base
include Redmine::SafeAttributes
belongs_to :user
belongs_to :bid
+ has_many :journals_for_messages, :as => :jour, :dependent => :destroy
+ seems_rateable :allow_update => true, :dimensions => :quality
safe_attributes "bid_id",
"user_id"
acts_as_attachable
-
+
end
diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb
index 2c4f10886..575737401 100644
--- a/app/models/journals_for_message.rb
+++ b/app/models/journals_for_message.rb
@@ -21,6 +21,7 @@ class JournalsForMessage < ActiveRecord::Base
belongs_to :jour, :polymorphic => true
belongs_to :user
+ belongs_to :homework_attach
belongs_to :at_user, :class_name => "User", :foreign_key => 'reply_id'
acts_as_event :title => Proc.new {|o| "#{l(:label_my_message)}"},
diff --git a/app/views/attachments/_app_link.html.erb b/app/views/attachments/_app_link.html.erb
index ecef4dda3..6934b76e1 100644
--- a/app/views/attachments/_app_link.html.erb
+++ b/app/views/attachments/_app_link.html.erb
@@ -1,10 +1,15 @@
-<% for attachment in attachments %><%= link_to_attachment attachment, :class => 'icon icon-attachment', :download => true -%>
- <% if attachment.is_text? %>
+<% for attachment in attachments %>
+ <% if attachments.count > 1 && attachment != attachments.first%>
+
+ <% end %>
+ <%= link_to_attachment attachment, :class => 'icon icon-attachment', :download => true -%>
+ <% if attachment.is_text? %>
<%= link_to image_tag('magnifier.png'),
:controller => 'attachments', :action => 'show',
:id => attachment, :filename => attachment.filename %>
<% end %>
<%= h(" - #{attachment.description}") unless attachment.description.blank? %>
(<%= number_to_human_size attachment.filesize %>)
+
<% end -%>
diff --git a/app/views/bids/_homework_list.html.erb b/app/views/bids/_homework_list.html.erb
index 8f87a6b37..f3658cd2a 100644
--- a/app/views/bids/_homework_list.html.erb
+++ b/app/views/bids/_homework_list.html.erb
@@ -25,8 +25,19 @@
<%= image_tag(url_to_avatar(homework.user), :class => "avatar")%> |
+ 作业 :
+ <% filename = "" %>
+ <% homework.attachments.map do |attachment| %>
+ <% filename = attachment.filename %>
+ <% if homework.attachments.count > 1%>
+ <% filename += "等#{homework.attachments.count}个文件" %>
+ <% end %>
+ <% break %>
+ <% end %>
+ <%= link_to filename , homework_attach_path(homework)%>
+
- <%= link_to homework.user, user_path(homework.user)%> 已提交 |
+ 发布人: <%= link_to homework.user, user_path(homework.user)%> |
<% if Time.parse(@bid.deadline.to_s) < Time.parse(homework.attachments[0].created_on.to_s) %>
迟交
@@ -36,7 +47,7 @@
|
<% if display_id %>
- <%= l(:label_bidding_user_studentcode) %> :<%= homework.user.user_extensions.student_id%>
+ <%= l(:label_bidding_user_studentcode) %> : <%= homework.user.user_extensions.student_id%>
<% end %>
|
diff --git a/app/views/bids/show_project.html.erb b/app/views/bids/show_project.html.erb
index d22ddded6..02ef72e7c 100644
--- a/app/views/bids/show_project.html.erb
+++ b/app/views/bids/show_project.html.erb
@@ -60,7 +60,6 @@
$("#put-bid-form").hide();
}
-
<% if User.current.logged? %>
@@ -89,15 +88,15 @@
<%= f.text_area :bid_message, :id => "bid_message", :required => true, :rows => 4, :cols => 40, :placeholder => l(:label_bid_reason), :style => "resize: none;", :class => 'noline'%> |
- <% end %>
+ <% end %>
<%= submit_tag l(:button_add), :name => nil , :class => "enterprise",
:onmouseout => "this.style.backgroundPosition = 'left top'",
:onmouseover => "this.style.backgroundPosition = 'left -30px'"%>
- <%= submit_tag l(:button_cancel), :name => nil, :onclick => "cancel();",
+ <%= submit_tag l(:button_cancel), :name => nil, :onclick => "cancel();",
:type => 'button', :class => "enterprise", :onmouseout => "this.style.backgroundPosition = 'left top'",
- :onmouseover => "this.style.backgroundPosition = 'left -30px'" %>
+ :onmouseover => "this.style.backgroundPosition = 'left -30px'" %>
|
diff --git a/app/views/homework_attach/show.html.erb b/app/views/homework_attach/show.html.erb
new file mode 100644
index 000000000..93e3d0a70
--- /dev/null
+++ b/app/views/homework_attach/show.html.erb
@@ -0,0 +1,148 @@
+<%= render_flash_messages %>
+
+<%= notice %>
+
+
+
+
+ |
+
+
+
+ 作业基础信息<%=@count %> |
+
+
+ 发布人员:<%= link_to @homework.user, user_path(@homework.user)%> |
+ 发布时间:<%=format_time @homework.created_at %> |
+
+
+
+
+ 作业下载:
+ <% options = {:author => true } %>
+ <%= render :partial => 'attachments/app_link', :locals => {:attachments => @homework.attachments, :options => options} %>
+ |
+ 所属任务:<%= link_to(@homework.bid.name, project_for_bid_path(@homework.bid))%> |
+
+
+
+ 平均评分:
+ <%= rating_for @homework, :static => true, dimension: :quality, class: 'rateable div_inline' %>
+ |
+
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+ 作业描述: |
+
+ <% @homework.attachments.map do |attachment| %>
+ <% if attachment.description != nil && attachment.description != "" %>
+
+
+ <%= attachment.description %>
+ |
+
+ <% end %>
+ <% end %>
+
+ |
+
+
+
+
+
+ 作业得分:
+
+
+ 得分比例
+
+ <% 100.step(20,-20) do |star| %>
+
+ <%= @stars_status_map["star#{(star/20).to_s}".to_sym] %>
+
+ <% end %>
+
+
+
+ 最终得分
+
+ <%= rating_for @homework, :static => true, dimension: :quality, class: 'rateable div_inline' %>
+
+
+
+ 打分总人数
+
+
+ <%= @homework.raters(:quality).count%>
+
+
+
+
+
+
+
+
+ 作业评论:
+ 评分:
+ <%= rating_for @homework, dimension: :quality, class: 'rateable div_inline' %>
+ (您可以重新打分,打分结果以最后一次打分为主!)
+
+
+
+
+
+
+ <% if User.current.logged? %>
+ <% else %>
+ <% end %>
+
+
+
+
+ <% for journal in @jours%>
+ -
+ <%= image_tag(url_to_avatar(journal.user), :class => "avatar") %>
+
+ <%= link_to journal.user, user_path(journal.user)%>
+ <% label = l(:label_contest_requirement) %>
+
<%= textilizable journal.notes%>
+ <%= l(:label_bids_published) %>
+ <%= time_tag(journal.created_on).html_safe %>
+ <%= l(:label_bids_published_ago) %>
+
+ <% ids = 'project_respond_form_'+ journal.id.to_s%>
+
+ <% if journal.user==User.current|| User.current.admin? %>
+ <%= link_to(l(:label_bid_respond_delete), {:controller => 'words', :action => 'destroy', :object_id => journal, :user_id => journal.user},
+ :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+
+<%#= link_to '返回竞赛页面', show_softapplication_contest_path(@softapplication.contest) %>
+
diff --git a/app/views/softapplications/_new_message.erb b/app/views/softapplications/_new_message.erb
index 321c7911f..ff63a3675 100644
--- a/app/views/softapplications/_new_message.erb
+++ b/app/views/softapplications/_new_message.erb
@@ -15,7 +15,7 @@
}
-<%= form_for('softapplication_message',
+<%= form_for('softapplication_message',
:remote => true, :method => :post,
:url => {:controller => 'softapplications',
:action => 'create_message',
@@ -23,19 +23,19 @@
:sta => sta}
) do |f|%>
-
+
<%= render :partial => 'pre_show', :locals => {:content => @content} %>
-
+
<% if User.current.logged? %>
<%= f.text_area 'message', :rows => 3, :cols => 65, :placeholder => l(:label_my_respond), :style => "resize: none;", :class => 'noline'%> |
-
+
<%= f.text_field :reference_user_id, :style=>"display:none"%>
-
+
diff --git a/config/routes.rb b/config/routes.rb
index a5dc322cf..f0bdfede8 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -22,7 +22,7 @@ RedmineApp::Application.routes.draw do
resources :apply_project_masters
delete 'apply_project_masters', :to => 'apply_project_masters#delete'
-
+ resources :homework_attach
resources :open_source_projects do
collection do
match 'search', via: [:get, :post]
From 63af60d7b676ae28ce16254bc880246e10d8d5fa Mon Sep 17 00:00:00 2001
From: yanxd
Date: Sat, 17 May 2014 10:44:01 +0800
Subject: [PATCH 2/5] =?UTF-8?q?edit=20=E5=9B=BE=E6=A0=87=E4=B8=A2=E5=A4=B1?=
=?UTF-8?q?=20bid=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E4=BF=9D=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/bids_controller.rb | 4 ++--
public/images/edit.png | Bin 0 -> 522 bytes
2 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 public/images/edit.png
diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb
index 1ae04fa08..2273de4e4 100644
--- a/app/controllers/bids_controller.rb
+++ b/app/controllers/bids_controller.rb
@@ -732,9 +732,9 @@ class BidsController < ApplicationController
def update
@bid = Bid.find(params[:id])
@project = @bid.courses.first#Project.find(params[:course_id])
- if @bid.update_attributes(params[:bid])
+ @bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
+ if @bid.update_attributes(params[:bid]) && @bid.save
flash[:notice] = l(:label_update_homework_succeed)
- #@project = Project.find(params[:course_id])
redirect_to project_homework_path(@project)
else
@bid.safe_attributes = params[:bid]
diff --git a/public/images/edit.png b/public/images/edit.png
new file mode 100644
index 0000000000000000000000000000000000000000..8335716fd5f9994eca802b8b14fb43c667bcc034
GIT binary patch
literal 522
zcmV+l0`>igP)Pft(g&!0d4|DQhl|Nrg@{~ubrZp3Q+~ymoxxm8*H4N^pv1Yip)*8iT
zxaN1O|Nnnp_5bP)+t({+c&Ek2#xlS#b^{t;j635SH*4VjT
z*<#CZXO|5F$dCp79t`2(;b06m;ObIawo8j`bN;_O^Zx&%B%tP+|GVZnojSDGvFh|1
zI|h&eGrK(D8Zitwy}-`$|HbSB|394j|NrT#ubU=2AKo#?$-T4Mhhb8qH-<(G1NP2z
zY6WXP6?Ab`x9hCl3ZDR=0#P6q#-$m>03hf8sxH@A9c8}B$+01(K)x;zYXPwd5c2~u
zFA#G9F$WN{0Wk{@GZRe8Kt+l`EDOYvKr8~p0zk|SGl-(B3^afV01ba!p4w(>hyVZp
M07*qoM6N<$f^G@~i~s-t
literal 0
HcmV?d00001
From f79679f05a09ff694eb09cf68727d928544d631d Mon Sep 17 00:00:00 2001
From: sw <939547590@qq.com>
Date: Sat, 17 May 2014 11:15:27 +0800
Subject: [PATCH 3/5] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A?=
=?UTF-8?q?=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA=E6=95=88=E6=9E=9C=202.?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BD=9C=E4=B8=9A=E4=BA=92=E8=AF=84=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=203.=E5=A2=9E=E5=8A=A0=E4=BD=9C=E4=B8=9A=E7=95=99?=
=?UTF-8?q?=E8=A8=80=E3=80=81=E7=95=99=E8=A8=80=E5=88=A0=E9=99=A4=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E4=BB=A5=E5=8F=8A=E7=9B=B8=E5=85=B3=E6=93=8D=E4=BD=9C?=
=?UTF-8?q?=E5=90=8E=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=88=B7=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/homework_attach_controller.rb | 28 +++++-
app/models/homework_attach.rb | 5 +
app/views/homework_attach/_addjour.html.erb | 93 +++++++++++++++++++
app/views/homework_attach/_pre_show.html.erb | 11 +++
app/views/homework_attach/_showjour.html.erb | 64 +++++++++++++
app/views/homework_attach/addjours.js.erb | 4 +
app/views/homework_attach/destroy.js.erb | 11 +++
app/views/homework_attach/show.html.erb | 35 ++-----
app/views/words/_message.html.erb | 2 +-
config/routes.rb | 1 +
10 files changed, 220 insertions(+), 34 deletions(-)
create mode 100644 app/views/homework_attach/_addjour.html.erb
create mode 100644 app/views/homework_attach/_pre_show.html.erb
create mode 100644 app/views/homework_attach/_showjour.html.erb
create mode 100644 app/views/homework_attach/addjours.js.erb
create mode 100644 app/views/homework_attach/destroy.js.erb
diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb
index cfa84071b..cf0276d97 100644
--- a/app/controllers/homework_attach_controller.rb
+++ b/app/controllers/homework_attach_controller.rb
@@ -16,12 +16,32 @@ class HomeworkAttachController < ApplicationController
percent_m.to_s + "%"
end
@jours = @homework.journals_for_messages.order("created_on DESC")
+ @limit = 10
+ @feedback_count = @jours.count
+ @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
+ @offset ||= @feedback_pages.offset
+ @jour = @jours[@offset, @limit]
end
- def destroyjours
- @homework = HomeworkAttach.find(params[:homework_id])
- JournalsForMessage.delete_message(params[:object_id])
- redirect_to homework_attach_path(@homework)
+ def destroy
+ @journal_destroyed = JournalsForMessage.delete_message(params[:object_id])
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def addjours
+ @homework = HomeworkAttach.find(params[:jour_id])
+ @homework.addjours User.current.id, params[:new_form][:user_message],0
+ @jours = @homework.journals_for_messages.order("created_on DESC")
+ @limit = 10
+ @feedback_count = @jours.count
+ @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
+ @offset ||= @feedback_pages.offset
+ @jour = @jours[@offset, @limit]
+ respond_to do |format|
+ format.js
+ end
end
end
diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb
index b8e559dff..2e5ade8b3 100644
--- a/app/models/homework_attach.rb
+++ b/app/models/homework_attach.rb
@@ -9,4 +9,9 @@ class HomeworkAttach < ActiveRecord::Base
"user_id"
acts_as_attachable
+ def addjours user_id,message,status = 0
+ jfm = self.journals_for_messages.build(:user_id => user_id,:notes =>message,:status => status)
+ jfm.save
+ jfm
+ end
end
diff --git a/app/views/homework_attach/_addjour.html.erb b/app/views/homework_attach/_addjour.html.erb
new file mode 100644
index 000000000..a5e7bed66
--- /dev/null
+++ b/app/views/homework_attach/_addjour.html.erb
@@ -0,0 +1,93 @@
+
+
+
+
+
+<%= form_for('new_form', :remote => true, :method => :post,
+ :url => {:controller => 'homework_attach',
+ :action => 'addjours',
+ :jour_id => homework_attach.id,
+ :sta => sta}) do |f|%>
+
+
+ <%= render :partial => 'words/pre_show', :locals => {:content => @content} %>
+
+
+ <% if User.current.logged? %>
+
+
+ <%= f.text_area 'user_message', :rows => 3, :cols => 65, :value => "#{l(:label_leave_a_message)}",
+ :onfocus => "clearInfo('new_form_user_message','#{l(:label_leave_a_message)}')",
+ :onblur => "showInfo('new_form_user_message','#{l(:label_leave_a_message)}')",
+ :style => "resize: none;", :class => 'noline'%> |
+
+
+ <%= f.text_field :reference_user_id, :style=>"display:none"%>
+
+
+ <%= submit_tag l(:button_leave_meassge),
+ :name => nil , :class => "enterprise",
+ :onmouseout => "this.style.backgroundPosition = 'left top'",
+ :onmouseover => "this.style.backgroundPosition = 'left -31px'"%>
+ <%= submit_tag l(:button_clear), :name => nil, :class => "enterprise",
+ :onclick => "clearMessage('new_form_user_message');",
+ :onmouseout => "this.style.backgroundPosition = 'left top'",
+ :onmouseover => "this.style.backgroundPosition = 'left -31px'" %> |
+
+
+ <% else %>
+
+ <%= l(:label_user_login_tips) %>
+ <%= link_to l(:label_user_login_new), signin_path %>
+
+ <% end %>
+<% end %>
diff --git a/app/views/homework_attach/_pre_show.html.erb b/app/views/homework_attach/_pre_show.html.erb
new file mode 100644
index 000000000..1fb643183
--- /dev/null
+++ b/app/views/homework_attach/_pre_show.html.erb
@@ -0,0 +1,11 @@
+
+<% unless content.nil?%>
+
+
+ <%= textilizable content %> |
+
+
+ <%= hidden_field_tag 'reference_content', params[:reference_content], :value => content%> |
+
+
+<% end %>
diff --git a/app/views/homework_attach/_showjour.html.erb b/app/views/homework_attach/_showjour.html.erb
new file mode 100644
index 000000000..f810082c9
--- /dev/null
+++ b/app/views/homework_attach/_showjour.html.erb
@@ -0,0 +1,64 @@
+
+<% if jour.size > 0 %>
+
+ <% for journal in jour%>
+ -
+ <%= image_tag(url_to_avatar(journal.user), :class => "avatar") %>
+
+ <%= link_to journal.user, user_path(journal.user)%>
+ <% label = l(:label_contest_requirement) %>
+
<%= textilizable journal.notes%>
+ <%= l(:label_bids_published) %>
+ <%= time_tag(journal.created_on).html_safe %>
+ <%= l(:label_bids_published_ago) %>
+
+ <% ids = 'project_respond_form_'+ journal.id.to_s%>
+
+
+ <% if journal.user==User.current|| User.current.admin? %>
+ <%= link_to(l(:label_bid_respond_delete), {:controller => 'homework_attach', :action => 'destroy', :object_id => journal, :user_id => journal.user},
+ :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %>
+ <% end %>
+
+
+
+
+ <% end %>
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/homework_attach/addjours.js.erb b/app/views/homework_attach/addjours.js.erb
new file mode 100644
index 000000000..e463237e5
--- /dev/null
+++ b/app/views/homework_attach/addjours.js.erb
@@ -0,0 +1,4 @@
+$('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour =>@jour, :state => false} )) %>');
+$('#pre_show').html('<%= escape_javascript(render(:partial => 'pre_show', :locals => {:content => nil})) %>');
+$('#new_form_user_message').val("");
+$('#new_form_reference_user_id').val("");
\ No newline at end of file
diff --git a/app/views/homework_attach/destroy.js.erb b/app/views/homework_attach/destroy.js.erb
new file mode 100644
index 000000000..f3d9a7bef
--- /dev/null
+++ b/app/views/homework_attach/destroy.js.erb
@@ -0,0 +1,11 @@
+<% if @journal_destroyed.nil? %>
+ alert('<%=l(:notice_failed_delete)%>');
+<% elsif (['Principal','Project', 'Bid', 'Contest', 'Softapplication','HomeworkAttach'].include? @journal_destroyed.jour_type)%>
+ var destroyedItem = $('#word_li_<%=@journal_destroyed.id%>')
+ destroyedItem.fadeOut(600,function(){
+ destroyedItem.remove();
+ });
+<% else %>
+ $('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour => @jour, :state => false})) %>');
+ $('#new_form_reference_user_id').val("");
+<% end %>
diff --git a/app/views/homework_attach/show.html.erb b/app/views/homework_attach/show.html.erb
index 93e3d0a70..1400176c2 100644
--- a/app/views/homework_attach/show.html.erb
+++ b/app/views/homework_attach/show.html.erb
@@ -1,4 +1,4 @@
-<%= render_flash_messages %>
+
|