diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb
index 4d6ed296..686070e7 100644
--- a/app/controllers/attachments_controller.rb
+++ b/app/controllers/attachments_controller.rb
@@ -121,7 +121,9 @@ private
@attachment = Attachment.find(params[:id])
# Show 404 if the filename in the url is wrong
raise ActiveRecord::RecordNotFound if params[:filename] && params[:filename] != @attachment.filename
- @project = @attachment.project
+ unless @attachment.container_type == 'Bid' || @attachment.container_type == 'HomeworkAttach'
+ @project = @attachment.project
+ end
rescue ActiveRecord::RecordNotFound
render_404
end
diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb
index e1bf2a71..d8f5e15d 100644
--- a/app/controllers/bids_controller.rb
+++ b/app/controllers/bids_controller.rb
@@ -3,10 +3,13 @@ class BidsController < ApplicationController
#Added by young
menu_item :respond
menu_item :project, :only => :show_project
+ menu_item :homework_respond, :only => :homework_respond
#Ended by young
- before_filter :find_bid, :only => [:show, :show_project, :create, :destroy, :more, :back, :add, :new]
+ before_filter :find_bid, :only => [:show, :show_project, :create, :destroy, :more, :back, :add, :new, :homework_respond, :add_homework]
helper :watchers
+ helper :attachments
+ include AttachmentsHelper
def index
# Modified by nie
# @requirement_title = "4"
@@ -117,6 +120,10 @@ class BidsController < ApplicationController
# @project = Project.where("id in []", a)
@user = @bid.author
@bidding_project = @bid.biding_projects
+ if @bid.homework_type == 1
+ @homework = HomeworkAttach.new
+ @homework_list = @bid.homeworks
+ end
respond_to do |format|
if @bid.reward_type == 3
format.html {
@@ -329,6 +336,8 @@ class BidsController < ApplicationController
@bid.budget = 0
@bid.author_id = User.current.id
@bid.commit = 0
+ @bid.homework_type = params[:bid][:homework_type]
+ @bid.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
# @bid.
if @bid.save
HomeworkForCourse.create(:project_id => params[:course_id], :bid_id => @bid.id)
@@ -342,8 +351,24 @@ class BidsController < ApplicationController
@bid.safe_attributes = params[:bid]
render :action => 'new_bid'
end
+ end
+
+ def add_homework
+ # homework = HomeworkAttach.create(:bid_id => @bid.id, :user_id => User.current.id)
+ # homework.save_attachments(params[:attachments] || (params[:bid] && params[:bid][:uploads]))
+ @homework = HomeworkAttach.new
+ @homework.bid_id = @bid.id
+ @homework.user_id = User.current.id
+ @homework.save_attachments(params[:attachments])
+ @homework.save
+ @homework_list = @bid.homeworks
end
+
+ def homework_respond
+ @user = @bid.author
+ render :layout => 'base_homework'
+ end
def more
@jour = @bid.journals_for_messages
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 49a12984..f84e1d13 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -6,7 +6,7 @@ class CoursesController < ApplicationController
def join
if User.current.logged?
course = Project.find(params[:object_id])
- if params[:course_password] == '123'
+ if params[:course_password].to_i == Course.find_by_extra(course.identifier).state
members = []
members << Member.new(:role_ids => [5], :user_id => User.current.id)
course.members << members
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 76dc567c..40104bbf 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -39,6 +39,8 @@ class ProjectsController < ApplicationController
before_filter :authorize_global, :only => [:new, :create]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
#by young
+ # before_filter :member, :file, :statistics, :watcherlist
+ # modified by fq
before_filter :file, :statistics, :watcherlist
#
accept_rss_auth :index
@@ -518,6 +520,9 @@ class ProjectsController < ApplicationController
# end
def file
+ # if @project.project_type == 1
+ # render :layout => 'base_courses'
+ # end
# @course_tag = params[:course]
# if @course_tag == '1'
# render :layout => 'base_courses'
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 416f2d87..74d495f0 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -132,5 +132,18 @@ module ProjectsHelper
def get_projects_by_tag(tag_name)
Project.tagged_with(tag_name).order('updated_on desc')
end
+
+ # added by fq
+ def homework_type_option
+ type = []
+ option1 = []
+ option2 = []
+ option1 << '提交附件'
+ option1 << 1
+ option2 << '提交项目'
+ option2 << 2
+ type << option1
+ type << option2
+ end
end
diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb
index a97deaec..2baee647 100644
--- a/app/helpers/watchers_helper.rb
+++ b/app/helpers/watchers_helper.rb
@@ -46,9 +46,10 @@ module WatchersHelper
link_to text, url, :remote => true, :method => method, :class => css
end
+ # added by fq
def join_in_course(course, user)
return '' unless user && user.logged?
- joined = user.join_in?(course)
+ joined = user.member_of?(course)
text = joined ? '退出课程' : '加入课程'
url_t = join_path(:object_id => course.id)
url_f = try_join_path(:object_id => course.id)
diff --git a/app/models/bid.rb b/app/models/bid.rb
index a017cb48..5bfde4c8 100644
--- a/app/models/bid.rb
+++ b/app/models/bid.rb
@@ -1,6 +1,6 @@
####by fq
class Bid < ActiveRecord::Base
- #attr_accessible :author_id, :budget, :deadline, :name, :description
+ attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type
include Redmine::SafeAttributes
belongs_to :author, :class_name => 'User', :foreign_key => :author_id
@@ -11,6 +11,9 @@ class Bid < ActiveRecord::Base
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
has_many :homework_for_courses, :dependent => :destroy
has_many :courses, :through => :homework_for_courses, :source => :project
+ has_many :homeworks, :class_name => 'HomeworkAttach', :dependent => :destroy
+
+ acts_as_attachable
NAME_LENGTH_LIMIT = 60
DESCRIPTION_LENGTH_LIMIT = 250
diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb
new file mode 100644
index 00000000..aea68abb
--- /dev/null
+++ b/app/models/homework_attach.rb
@@ -0,0 +1,9 @@
+class HomeworkAttach < ActiveRecord::Base
+ attr_accessible :bid_id, :user_id
+
+ belongs_to :user
+ belongs_to :bid
+
+ acts_as_attachable
+
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index dfdca8a0..22ab9c29 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -57,6 +57,7 @@ class Project < ActiveRecord::Base
has_many :homeworks, :through => :homework_for_courses, :source => :bid, :dependent => :destroy
has_many :students_for_courses, :dependent => :destroy
has_many :student, :through => :students_for_courses, :source => :user
+ # has_one :cour, :class_name => 'Course', :foreign_key => :extra, :dependent => :destroy
# end
#ADDED BY NIE
@@ -1040,6 +1041,7 @@ class Project < ActiveRecord::Base
def update_position_under_parent
set_or_update_position_under(parent)
end
+
def course
@course
end
diff --git a/app/views/bids/_bid_show.html.erb b/app/views/bids/_bid_show.html.erb
index 40760e12..3bbf427e 100644
--- a/app/views/bids/_bid_show.html.erb
+++ b/app/views/bids/_bid_show.html.erb
@@ -19,7 +19,7 @@
<% elsif bid.reward_type == 2%>
<%= l(:label_bids_reward_method) %><%= bid.budget%>
<% else %>
- <%= l(:label_bids_reward_method) %><%= l(:label_bids_credit) %> <%= bid.budget%> <%= l(:label_bids_credit_number) %>
+
<% end %>
diff --git a/app/views/bids/_homework.html.erb b/app/views/bids/_homework.html.erb
new file mode 100644
index 00000000..bc16f535
--- /dev/null
+++ b/app/views/bids/_homework.html.erb
@@ -0,0 +1,17 @@
+
+
+ <%= toggle_link l(:button_bidding), 'put-bid-form' %>
+
+
+
+ <%= render :partial => 'homework_list', :locals => {:homework => @homework_list} %>
+
diff --git a/app/views/bids/_homework_list.html.erb b/app/views/bids/_homework_list.html.erb
new file mode 100644
index 00000000..62f5005c
--- /dev/null
+++ b/app/views/bids/_homework_list.html.erb
@@ -0,0 +1,30 @@
+
+<%= render_flash_messages %>
+
+<% @homework_list.each do |homework|%>
+ <% if homework.attachments.any?%>
+
+
+
+ <%= link_to image_tag(url_to_avatar(homework.user), :class => "avatar"), user_path(homework.user), :class => "avatar" %> |
+
+
+
+ <%= link_to homework.user, user_path(homework.user)%> 提交了作业 |
+
+
+
+
+ <% options = {:author => true} %>
+ <%= render :partial => 'attachments/links',
+ :locals => {:attachments => homework.attachments, :options => options} %>
+ <% end %>
+ |
+
+ |
+
+
+
+
+
+<% end %>
diff --git a/app/views/bids/add_homework.js.erb b/app/views/bids/add_homework.js.erb
new file mode 100644
index 00000000..f553f669
--- /dev/null
+++ b/app/views/bids/add_homework.js.erb
@@ -0,0 +1,4 @@
+$('#bidding_project_list').html('<%= escape_javascript(render(:partial => 'homework_list', :locals => {:homework => @homework_list})) %>');
+$("#project_id").val("请选择项目");
+$("#bid_message").val("#{l(:label_bid_reason)} ");
+$("#put-bid-form").hide();
\ No newline at end of file
diff --git a/app/views/bids/homework_respond.html.erb b/app/views/bids/homework_respond.html.erb
new file mode 100644
index 00000000..e69de29b
diff --git a/app/views/bids/show.html.erb b/app/views/bids/show.html.erb
index d3b52698..916c0a3a 100644
--- a/app/views/bids/show.html.erb
+++ b/app/views/bids/show.html.erb
@@ -20,7 +20,6 @@
<% elsif @bid.reward_type == 2%>
<%= l(:label_bids_reward_method) %><%= @bid.budget%> |
<% else %>
- <%= l(:label_bids_reward_method) %><%= l(:label_bids_credit) %> <%= @bid.budget%> <%= l(:label_bids_credit_number) %> |
<% end %>
@@ -31,7 +30,13 @@
|
- <%= @bid.description %> |
+ <%= @bid.description %>
+ <% if @bid.attachments.any?%>
+ <% options = {:author => true} %>
+ <%= render :partial => 'attachments/links',
+ :locals => {:attachments => @bid.attachments, :options => options} %>
+ <% end %>
+ |
diff --git a/app/views/bids/show_project.html.erb b/app/views/bids/show_project.html.erb
index ba0b9928..3b7af6c9 100644
--- a/app/views/bids/show_project.html.erb
+++ b/app/views/bids/show_project.html.erb
@@ -1,4 +1,7 @@
+<% if @bid.homework_type == 1%>
+<%= render :partial => 'homework' %>
+<% else %>