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 %>