From 936c40b49094a5fef053b5b4b9ba2a532302ec4d Mon Sep 17 00:00:00 2001 From: nwb Date: Tue, 17 Jun 2014 15:06:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BD=9C=E4=B8=9A=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=92=8C=E8=A7=86=E5=9B=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/bids_controller.rb | 5 +- app/controllers/contests_controller.rb | 21 +++++- app/controllers/homework_attach_controller.rb | 34 ++++----- app/models/bid.rb | 2 +- app/views/bids/show_course.html.erb | 11 ++- app/views/bids/show_courseEx.html.erb | 72 +++++++++++++++++++ app/views/homework_attach/new.html.erb | 6 +- config/routes.rb | 2 +- 8 files changed, 122 insertions(+), 31 deletions(-) create mode 100644 app/views/bids/show_courseEx.html.erb diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index d7c54db3..9c4d8cfa 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -8,7 +8,7 @@ class BidsController < ApplicationController menu_item :homework_statistics, :only => :homework_statistics #Ended by young before_filter :find_bid, :only => [:show, :show_project, :create,:destroy,:more,:back,:add,:delete,:new,:show_results,:set_reward, :add_homework, :fork, :create_fork, - :show_course, :show_bid_project, :show_bid_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings] + :show_course, :show_courseEx,:show_bid_project, :show_bid_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings] # added by fq before_filter :require_login, :only => [:join_in_contest, :unjoin_in_contest] # end @@ -448,7 +448,7 @@ class BidsController < ApplicationController # 显示作业课程 # add by nwb - def show_course + def show_courseEx # flash[:notice] = "" @membership = User.current.coursememberships.all(:conditions => Course.visible_condition(User.current)) @option = [] @@ -462,6 +462,7 @@ class BidsController < ApplicationController @user = @bid.author @bidding_project = @bid.biding_projects.all + if params[:student_id].present? @temp = [] @bidding_project.each do |pro| diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb index f50fe191..adadfbf4 100644 --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -74,7 +74,26 @@ class ContestsController < ApplicationController end end - def show_contest + def homework + @offset, @limit = api_offset_and_limit({:limit => 10}) + @bids = @course.homeworks.order('deadline DESC') + @bids = @bids.like(params[:name]) if params[:name].present? + @bid_count = @bids.count + @bid_pages = Paginator.new @bid_count, @limit, params['page'] + + @offset ||= @bid_pages.reverse_offset + unless @offset == 0 + @bids = @bids.offset(@offset).limit(@limit).all.reverse + else + limit = @bid_count % @limit + @bids = @bids.offset(@offset).limit(limit).all.reverse + end + render :layout => 'base_courses' + + end + + + def show_contest @user = @contest.author @jours = @contest.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC') @limit = 10 diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index d10f09ff..2922eea1 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -1,21 +1,21 @@ class HomeworkAttachController < ApplicationController ############################### #判断当前角色权限时需先找到当前操作的project - before_filter :find_project_by_bid_id, :only => [:new] - before_filter :find_project_by_hoemwork_id, :only => [:edit,:update,:destroy,:show,:add_homework_users,:destory_homework_users] + before_filter :find_course_by_bid_id, :only => [:new] + before_filter :find_course_by_hoemwork_id, :only => [:edit,:update,:destroy,:show,:add_homework_users,:destory_homework_users] #判断当前角色是否有操作权限 #勿删 before_filter :authorize, :only => [:new,:edit,:update,:destroy] - def find_project_by_bid_id + def find_course_by_bid_id @bid = Bid.find(params[:id]) - @project = @bid.courses[0] + @course = @bid.courses[0] rescue ActiveRecord::RecordNotFound render_404 end - def find_project_by_hoemwork_id + def find_course_by_hoemwork_id @homework = HomeworkAttach.find(params[:id]) - @project = @homework.bid.courses[0] + @course = @homework.bid.courses[0] end #获取作业的成员 @@ -35,7 +35,7 @@ class HomeworkAttachController < ApplicationController #作业添加成员(参与人员) def add_homework_users - if User.current.admin? || User.current.member_of?(@homework.bid.courses.first) + if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first) #@homework = HomeworkAttach.find(params[:id]) if params[:membership] if params[:membership][:user_ids] @@ -59,7 +59,7 @@ class HomeworkAttachController < ApplicationController #作业删除成员(参与人员) def destory_homework_users #@homework = HomeworkAttach.find(params[:id]) - if User.current.admin? || User.current.member_of?(@homework.bid.courses.first) + if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first) homework_user = @homework.homework_users.where("user_id = #{params[:user_id]}").first homework_user.destroy get_homework_member @homework @@ -73,7 +73,7 @@ class HomeworkAttachController < ApplicationController def create bid = Bid.find params[:bid_id] - if User.current.admin? || User.current.member_of?(bid.courses.first) + if User.current.admin? || User.current.member_of_course?(bid.courses.first) # modify by nwb if bid.homeworks.where("user_id = ?",User.current).count == 0 user_id = params[:user_id] bid_id = params[:bid_id] @@ -97,7 +97,7 @@ class HomeworkAttachController < ApplicationController if @homework.save respond_to do |format| - format.html { redirect_to project_for_bid_path @homework.bid } + format.html { redirect_to course_for_bid_path @homework.bid } format.json { head :no_content } end else @@ -113,7 +113,7 @@ class HomeworkAttachController < ApplicationController def new @bid = Bid.find(params[:id]) - if User.current.admin? || User.current.member_of?(@bid.courses.first) + if User.current.admin? || User.current.member_of_course?(@bid.courses.first) #nwb #该课程的学生的集合(新建不实现功能:添加成员) #@members = @bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id <> #{User.current.id}", {:role_id => [5, 10]}) @@ -138,7 +138,7 @@ class HomeworkAttachController < ApplicationController def get_homework_member_list @homework = HomeworkAttach.find(params[:bid_id]) course = @homework.bid.courses.first - if User.current.admin? || User.current.member_of?(course) + if User.current.admin? || User.current.member_of_course?(course) get_homework_member @homework else raise "error" @@ -163,7 +163,7 @@ class HomeworkAttachController < ApplicationController def edit #@homework = HomeworkAttach.find(params[:id]) - if User.current.admin? || User.current.member_of?(@homework.bid.courses.first) + if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first) #@members = @homework.bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => [5, 10]}) get_homework_member @homework else @@ -174,7 +174,7 @@ class HomeworkAttachController < ApplicationController def update #@homework = HomeworkAttach.find(params[:id]) course = @homework.bid.courses.first - if User.current.admin? || User.current.member_of?(course) + if User.current.admin? || User.current.member_of_course?(course) name = params[:homework_name] description = params[:homework_description] @homework.name = name @@ -184,7 +184,7 @@ class HomeworkAttachController < ApplicationController end if @homework.save respond_to do |format| - format.html { redirect_to project_for_bid_path @homework.bid } + format.html { redirect_to course_for_bid_path @homework.bid } format.json { head :no_content } end else @@ -199,7 +199,7 @@ class HomeworkAttachController < ApplicationController if User.current.admin? || User.current == @homework if @homework.destroy respond_to do |format| - format.html { redirect_to project_for_bid_path @homework.bid } + format.html { redirect_to course_for_bid_path @homework.bid } format.json { head :no_content } end else @@ -212,7 +212,7 @@ class HomeworkAttachController < ApplicationController #显示作业信息 def show #@homework = HomeworkAttach.find(params[:id]) - if User.current.admin? || User.current.member_of?(@homework.bid.courses.first) + if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first) # 打分统计 stars_reates = @homework. rates(:quality) diff --git a/app/models/bid.rb b/app/models/bid.rb index b36efe6f..f65d71fa 100644 --- a/app/models/bid.rb +++ b/app/models/bid.rb @@ -21,7 +21,7 @@ class Bid < ActiveRecord::Base belongs_to :author, :class_name => 'User', :foreign_key => :author_id belongs_to :course has_many :biding_projects, :dependent => :destroy - has_many :courses, :through => :biding_courses + has_many :projects, :through => :biding_projects has_many :courses_member, :class_name => 'User', :through => :courses has_many :journals_for_messages, :as => :jour, :dependent => :destroy has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy diff --git a/app/views/bids/show_course.html.erb b/app/views/bids/show_course.html.erb index 574bd117..aacc011e 100644 --- a/app/views/bids/show_course.html.erb +++ b/app/views/bids/show_course.html.erb @@ -8,10 +8,10 @@ - @@ -22,10 +22,9 @@

- +
<%= link_to_project(course) %> - <%= l(:label_homework) %> (<%= link_to (course.homeworks.count), {:controller => 'projects', :action => 'homework', :id => course.identifier} %>) + <%= link_to_course(course) %> + <%= l(:label_homework) %> (<%= link_to (course.homeworks.count), {:controller => 'courses', :action => 'homework', :id => course.id} %>)     - <%= l(:label_course_news)%> (<%= link_to (course.news.count), {:controller => 'news', :action => 'index', :project_id => course.identifier} %>) + <%= l(:label_course_news)%> (<%= link_to (course.news.count), {:controller => 'news', :action => 'index', :course_id => course.id} %>)
<%= format_time(course.created_on) %> <%= format_time(course.created_at) %> - <% t_course = Course.find_by_extra(course.identifier) %> - 教师:<%= link_to(t_course.teacher.lastname+t_course.teacher.firstname, user_path(t_course.teacher)) %> + 教师:<%= link_to(course.teacher.lastname+course.teacher.firstname, user_path(course.teacher)) %>
diff --git a/app/views/bids/show_courseEx.html.erb b/app/views/bids/show_courseEx.html.erb new file mode 100644 index 00000000..039de6b7 --- /dev/null +++ b/app/views/bids/show_courseEx.html.erb @@ -0,0 +1,72 @@ +<% if @bid.homework_type == Bid::HomeworkFile %> + + <%= render :partial => 'homework' %> + +<% else %> + + + <% if User.current.logged? %> + + + + <% end %> +
+ <%= render :partial => 'project_list', :locals => {:bidding_project => @bidding_project, :bid => @bid} %> +
+<% end %> + diff --git a/app/views/homework_attach/new.html.erb b/app/views/homework_attach/new.html.erb index 618fc15a..99fce0f4 100644 --- a/app/views/homework_attach/new.html.erb +++ b/app/views/homework_attach/new.html.erb @@ -6,9 +6,9 @@ - <%= link_to request.host()+"/courses", :controller => 'projects', :action => 'course'%> -

<%=link_to "主页", home_path %> > <%=link_to l(:label_course_practice), :controller => 'projects', :action => 'course' %> > - <%= link_to(@bid.courses.first.name.to_s, homework_project_path(@bid.courses.first)) if @bid.courses.first%> > + <%= link_to request.host()+"/courses", :controller => 'courses', :action => 'index'%> +

<%=link_to "主页", home_path %> > <%=link_to l(:label_course_practice), :controller => 'courses', :action => 'index' %> > + <%= link_to(@bid.courses.first.name.to_s, homework_course_path(@bid.courses.first)) if @bid.courses.first%> > <%=link_to(@bid.name, respond_path(@bid)) %> > <%= link_to "创建作业", new_homework_attach_path(@bid)%>

diff --git a/config/routes.rb b/config/routes.rb index 3ee5d777..47a2a69f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -633,7 +633,7 @@ RedmineApp::Application.routes.draw do match 'calls/new_bid', :controller => 'bids', :action => 'new_bid' match 'contest/new_contest', :controller => 'bids', :action => 'new_contest' #huang match 'calls/:id/show_project', :controller => 'bids', :action => 'show_project', :as => 'project_for_bid' - match 'calls/:id/show_course', :controller => 'bids', :action => 'show_course', :as => 'course_for_bid' # nwb added + match 'calls/:id/show_course', :controller => 'bids', :action => 'show_courseEx', :as => 'course_for_bid' # nwb added match 'calls/:id/new_exercise_book', :controller => 'homework_attach', :action => 'new', :as => 'new_homework_attach' match 'calls/:id/add', :controller => 'bids', :action => 'add' match 'calls/:id/delete', :controller => 'bids', :action => 'delete'