diff --git a/.gitignore b/.gitignore index fdb7a3c6b..22d9e17e6 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ vendor/cache /public/images/avatars /public/files /tags +/config/initializers/gitlab_config.rb diff --git a/app/controllers/blog_comments_controller.rb b/app/controllers/blog_comments_controller.rb index e398501e4..b92223edc 100644 --- a/app/controllers/blog_comments_controller.rb +++ b/app/controllers/blog_comments_controller.rb @@ -57,9 +57,7 @@ class BlogCommentsController < ApplicationController def destroy @article = BlogComment.find(params[:id]) if @article.parent_id.nil? #如果是文章被删,那么跳转到用户博客界面,如果带了course_id过来,那么就要跳转到课程首页 - if params[:course_id] - @article.children.delete - @article.delete + if params[:course_id] #如果带了课程id过来,说明这是课程大纲,不要删除,只需取消课程大纲就ok了 @course = Course.find(params[:course_id]) @course.outline = 0 @course.save @@ -73,7 +71,7 @@ class BlogCommentsController < ApplicationController else#如果是回复被删, if params[:course_id] #如果带了course_id过来了,那么这是要跳到课程大纲去的 @article.delete - redirect_to show_course_outline_course_path(:id=>params[:course_id]) + redirect_to syllabus_course_path(:id=>params[:course_id]) else root = @article.root @article.delete @@ -133,7 +131,7 @@ class BlogCommentsController < ApplicationController respond_to do |format| format.html { if params[:course_id] #如果呆了course_id过来了,那么这是要跳到课程大纲去的 - redirect_to show_course_outline_course_path(:id=>params[:course_id]) + redirect_to syllabus_course_path(:id=>params[:course_id]) else redirect_to user_blog_blog_comment_path(:user_id=>@article.author_id,:blog_id=>@article.blog_id,:id=>@article) end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index c9d632fec..0a3c61c90 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -740,7 +740,7 @@ class CoursesController < ApplicationController end #显示课程大纲 - def show_course_outline + def syllabus @article = BlogComment.find(@course.outline) respond_to do |format| format.html {render :layout => 'base_courses'} diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index f41dbe6c7..06c1a67e4 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -263,7 +263,7 @@ update @course_tag = params[:course] project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT ip = RepositoriesHelper::REPO_IP_ADDRESS - gitlab_address = RepositoriesHelper::REPO_GITLAB_ADDRESS + gitlab_address = Redmine::Configuration['gitlab_address'] if @repository.type.to_s=="Repository::Gitlab" @repos_url = "http://"+gitlab_address.to_s+"/"+@project.owner.to_s+"/"+@repository.identifier+"."+"git" else diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d05f795ce..0d9588d24 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -243,7 +243,7 @@ class UsersController < ApplicationController #status 1 同意 2 拒绝 def dealwith_apply_request @msg = CourseMessage.find(params[:msg_id]) - + #CourseMessage content存的是role 7教辅 9 教师 case params[:agree] when 'Y' apply_user = User.find(@msg.course_message_id) diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index ba99fe454..f32bef51b 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -45,6 +45,11 @@ module RepositoriesHelper end end + def user_commit_rep(mail) + user = User.find_by_mail(mail) + user.nil? ? User.find(2) : User.find_by_mail(mail) + end + def render_properties(properties) unless properties.nil? || properties.empty? content = '' diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 8092bee88..74580632f 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -301,26 +301,46 @@ class CoursesService #@state == 5 您还未登录 #@state == 6 申请成功,请等待审核完毕 #@state == 7 您已经发送过申请了,请耐心等待 + #@state == 8 您已经是该课程的教师了 + #@state == 9 您已经是该课程的教辅了 #@state 其他 未知错误,请稍后再试 def join_course params,current_user course = Course.find_by_id params[:object_id] + @state = 10 if course if course_endTime_timeout? course @state = 2 else if current_user.member_of_course?(course) #如果已经是成员 + member = course.members.where("user_id=#{current_user.id} and course_id=#{course.id}")[0] + roleName = member.roles[0].name if member if params[:course_password] == course.password - #如果加入角色为学生 - if params[:role] == "10" + #如果加入角色为学生 并且当前是学生 + if params[:role] == "10" && roleName == "Student" @state = 3 - elsif current_user.allowed_to?(:as_teacher,course) - @state = 3 - else - Mailer.run.join_course_request(course, User.current, params[:role]) - #如果加入角色为教师或者教辅 - CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> params[:role],:course_message_id=>User.current.id,:course_message_type=>'JoinCourseRequest',:status=>0) - @state = 6 + #如果加入的角色为老师,并且当前已经是老师 + elsif params[:role] == "9" && roleName == "Teacher" + @state = 8 + #如果加入的角色教辅并且当前为教辅 + elsif params[:role] == "7" && roleName == "TeachingAsistant" + @state = 9 + #如果加入角色为教师或者教辅,并且当前是学生,或者是要成为教辅,当前不是教辅,或者要成为教师,当前不是教师。那么要发送请求 + elsif (params[:role] != "10" && roleName == "Student") || (params[:role] == "7" && roleName != "TeachingAsistant" ) || (params[:role] == "9" && roleName != "Teacher" ) + #如果已经发送过消息了,那么就要给个提示 + if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = #{params[:role]} and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0 ").count != 0 + @state = 7 + else + Mailer.run.join_course_request(course, User.current, params[:role]) + CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> params[:role],:course_message_id=>User.current.id,:course_message_type=>'JoinCourseRequest',:status=>0) + @state = 6 + end + #如果加入角色是学生,但是是当前课程的教师或者教辅 + elsif params[:role] == "10" && roleName != "Student" + member.role_ids = [params[:role]] + member.save + StudentsForCourse.create(:student_id => current_user.id, :course_id => params[:object_id]) + @state = 0 end else @state = 1 diff --git a/app/views/courses/join.js.erb b/app/views/courses/join.js.erb index 721367549..2b4927f48 100644 --- a/app/views/courses/join.js.erb +++ b/app/views/courses/join.js.erb @@ -24,6 +24,14 @@ hidden_join_course_form(); <% elsif @state == 7%> alert("您已经发送过申请了,请耐心等待"); hidden_join_course_form(); +<% elsif @state == 8%> +alert("您已经是该课程的教师了"); +hidden_join_course_form(); +window.location.href= "http://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>" +<% elsif @state == 9%> +alert("您已经是该课程的教辅了"); +hidden_join_course_form(); +window.location.href= "http://"+"<%= Setting.host_name%>"+"/courses/" + "<%= @course.id%>" <% else %> alert("未知错误,请稍后再试"); <% end %> diff --git a/app/views/courses/set_course_outline.js.erb b/app/views/courses/set_course_outline.js.erb index af075d2b8..a43a62c7d 100644 --- a/app/views/courses/set_course_outline.js.erb +++ b/app/views/courses/set_course_outline.js.erb @@ -1,8 +1,8 @@ hideModal(); <%if @course.tea_id == User.current.id && @course.outline == 0 %> <% else %> - $("#course_outline_bar").html(' ') + $("#course_outline_bar").html(' ') <%end %> <%if @is_in_show_outline_page && @is_in_show_outline_page == 'Y'%> - window.location.href='<%=show_course_outline_course_path(@course) %>'; + window.location.href='<%=syllabus_course_path(@course) %>'; <% end %> diff --git a/app/views/courses/show_course_outline.html.erb b/app/views/courses/syllabus.html.erb similarity index 97% rename from app/views/courses/show_course_outline.html.erb rename to app/views/courses/syllabus.html.erb index 18a980209..18f5817b0 100644 --- a/app/views/courses/show_course_outline.html.erb +++ b/app/views/courses/syllabus.html.erb @@ -39,14 +39,14 @@ showNormalImage('message_description_<%= @article.id %>'); }); -