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 @@ } -