diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index ef9204f04..4ddf5186d 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -26,21 +26,31 @@ class CoursesController < ApplicationController def join if User.current.logged? course = Course.find(params[:object_id]) - if params[:course_password] == course.password - members = [] - members << Member.new(:role_ids => [10], :user_id => User.current.id) - course.members << members - - StudentsForCourse.create(:student_id => User.current.id, :course_id => params[:object_id]) - @state = 0 + unless User.current.member_of_course? course + if params[:course_password] == course.password + members = [] + members << Member.new(:role_ids => [10], :user_id => User.current.id) + course.members << members + + StudentsForCourse.create(:student_id => User.current.id, :course_id => params[:object_id]) + @state = 0 + else + @state = 1 + end else - @state = 1 + @state = 3 end end respond_to do |format| # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} format.js { render :partial => 'set_join', :locals => {:user => User.current, :course => Course.find(params[:object_id]), :object_id => params[:object_id]} } end + rescue Exception => e + @state = 4 + respond_to do |format| + # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_join', :locals => {:user => User.current, :course => nil, :object_id => nil} } + end end def unjoin @@ -61,9 +71,7 @@ class CoursesController < ApplicationController end def join_private_courses - respond_to do |format| - # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} format.js end end diff --git a/app/views/courses/_join_private_course.html.erb b/app/views/courses/_join_private_course.html.erb index 592c79ba1..60223922f 100644 --- a/app/views/courses/_join_private_course.html.erb +++ b/app/views/courses/_join_private_course.html.erb @@ -36,7 +36,7 @@ } -

请输入相关信息

+

加入公开课程或私有课程

<%= form_tag({:controller => 'courses', :action => 'join'}, @@ -46,6 +46,7 @@
课程ID: <%= text_field_tag 'object_id', nil, :style=>'width:80%'%> + (课程ID是课程的网址中出现的序号)
密码   : diff --git a/app/views/courses/_set_join.js.erb b/app/views/courses/_set_join.js.erb index a4b5dd3c6..8b5c1fb36 100644 --- a/app/views/courses/_set_join.js.erb +++ b/app/views/courses/_set_join.js.erb @@ -1,4 +1,6 @@ -$("#<%=object_id%>").replaceWith('<%= escape_javascript join_in_course_for_list(course, user) %>'); +<% if object_id%> + $("#<%=object_id%>").replaceWith('<%= escape_javascript join_in_course_for_list(course, user) %>'); +<% end %> <% if @state %> <% if @state == 0 %> alert("加入成功") @@ -6,7 +8,11 @@ $("#<%=object_id%>").replaceWith('<%= escape_javascript join_in_course_for_list( alert("密码错误") <% elsif @state == 2 %> alert("课程已过期\n请联系课程管理员重启课程。(在配置课程处)") - <% else %> + <% elsif @state == 3 %> + alert("您已经加入了课程"); + <% elsif @state == 3 %> + alert("您已经的课程不存在") + <% else %> alert("未知错误,请稍后再试") <% end %> <% end %> diff --git a/app/views/welcome/_more_course.html.erb b/app/views/welcome/_more_course.html.erb index d48050a63..a5464c27c 100644 --- a/app/views/welcome/_more_course.html.erb +++ b/app/views/welcome/_more_course.html.erb @@ -5,6 +5,6 @@ <% end %>      <% end %> -<%= link_to "加入课程", join_private_courses_courses_path ,:remote => true, :class => 'icon icon-add' %> +<%= link_to l(:label_course_join_student), join_private_courses_courses_path ,:remote => true, :class => 'icon icon-add' %>      <%= link_to l(:label_more), {:controller => 'courses', :action => 'index', :school_id => school_id} %> \ No newline at end of file