class CoursesController < ApplicationController include CoursesHelper before_filter :require_login, :only => [:join, :unjoin] before_filter :allow_join, :only => [:join] def join if User.current.logged? course = Project.find(params[:object_id]) course_prefs = Course.find_by_extra(course.identifier) if params[:course_password] == course_prefs.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 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 => Project.find(params[:object_id]), :object_id => params[:object_id]} } end end def unjoin if User.current.logged? @member = Member.where('project_id = ? and user_id = ?', params[:object_id], User.current.id) @member.first.destroy joined = StudentsForCourse.where('student_id = ? and course_id = ?', User.current.id, params[:object_id]) joined.each do |join| join.delete 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 => Project.find(params[:object_id]), :object_id => params[:object_id]} } end end private def allow_join if course_endTime_timeout? Project.find(params[:object_id]) respond_to do |format| format.js{ @state = 2 render :partial => 'set_join', :locals => {:user => User.current, :course => Project.find(params[:object_id]), :object_id => params[:object_id] } } end end end end