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 %>'); }); -
+
<%= link_to image_tag(url_to_avatar(@article.author),:width=>50,:height => 50,:alt=>'图像' ),user_path(@article.author) %>
<% if User.current && @article.author.id == User.current.id%> -
diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index 305eaaa29..98e8f378d 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -89,11 +89,11 @@ <%if User.current && @course.tea_id == User.current.id && (@course.outline == 0 || BlogComment.where(:id=>@course.outline).count == 0) %> <% elsif User.current && @course.tea_id == User.current.id && @course.outline != 0 && BlogComment.where(:id=>@course.outline).count != 0%> - - <% elsif User.current && @course.tea_id != User.current.id && !@course.is_public? && User.current.member_of_course?(@course)%> - - <% elsif User.current && @course.tea_id != User.current.id && @course.is_public?%> - + + <% elsif User.current && @course.tea_id != User.current.id && !@course.is_public? && User.current.member_of_course?(@course) && @course.outline != 0%> + + <% elsif User.current && @course.tea_id != User.current.id && @course.is_public? && @course.outline != 0%> + <%else%> <%end %> diff --git a/app/views/repositories/_revisions.html.erb b/app/views/repositories/_revisions.html.erb index fe60f8933..837096c89 100644 --- a/app/views/repositories/_revisions.html.erb +++ b/app/views/repositories/_revisions.html.erb @@ -16,15 +16,31 @@ <% show_diff = revisions.size > 1 %> <% line_num = 1 %> <% revisions.each do |changeset| %> - - - <%= h truncate(changeset.id.to_s, :length => 20) %> - - <%= format_time(changeset.created_at) %> - <%= h truncate(changeset.author_name.to_s, :length => 30) %> - <%= textilizable(truncate_at_line_break(changeset.message)) %> - - <% line_num += 1 %> + <% end %> diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 7f9f675d2..81c42c0ea 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -30,8 +30,8 @@
<% if @changesets && !@changesets.empty? %> - <%= image_tag(url_to_avatar(@changesets_latest_coimmit.author_name), :width => "25", :height => "25", :class => "fl portraitRadius mt2 ml4 mr5") %> -
<%=link_to @changesets_latest_coimmit.author_name, user_path(@changesets_latest_coimmit.author_name) %>
+ <%= image_tag(url_to_avatar(user_commit_rep(@changesets_latest_coimmit.author_email)), :width => "25", :height => "25", :class => "fl portraitRadius mt2 ml4 mr5") %> +
<%=link_to user_commit_rep(@changesets_latest_coimmit.author_email), user_path(@changesets_latest_coimmit.author_name) %>
提交于<%= time_tag(@changesets_latest_coimmit.created_at) %>:
<%= @changesets_latest_coimmit.message %>
diff --git a/config/configuration.yml b/config/configuration.yml index 2ac986927..3790045aa 100644 --- a/config/configuration.yml +++ b/config/configuration.yml @@ -200,6 +200,9 @@ default: repository_root_path: '/tmp/htdocs' judge_server: 'http://judge.trustie.net/' + # Git's url + gitlab_address: 'http://gitfast.trustie.net' + # specific configuration options for production environment # that overrides the default ones production: diff --git a/config/initializers/gitlab_config.rb b/config/initializers/gitlab_config.rb index 75edc8eff..c82b2edff 100644 --- a/config/initializers/gitlab_config.rb +++ b/config/initializers/gitlab_config.rb @@ -1,7 +1,7 @@ Gitlab.configure do |config| # config.endpoint = 'http://192.168.41.130:3000/trustie/api/v3' # API endpoint URL, default: ENV['GITLAB_API_ENDPOINT'] # config.private_token = 'cK15gUDwvt8EEkzwQ_63' # user's private token, default: ENV['GITLAB_API_PRIVATE_TOKEN'] - config.endpoint = 'http://git.trustie.net/trustie/api/v3' # API endpoint URL, default: ENV['GITLAB_API_ENDPOINT'] + config.endpoint = 'http://gitfast.trustie.net/api/v3' # API endpoint URL, default: ENV['GITLAB_API_ENDPOINT'] config.private_token = 'fPc_gBmEiSANve8TCfxW' # user's private token, default: ENV['GITLAB_API_PRIVATE_TOKEN'] # Optional # config.user_agent = 'Custom User Agent' # user agent, default: 'Gitlab Ruby Gem [version]' diff --git a/config/routes.rb b/config/routes.rb index 5be734dee..9a6b48da2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -792,7 +792,7 @@ RedmineApp::Application.routes.draw do get 'course_outline' post 'search_course_outline' post 'set_course_outline' - get 'show_course_outline' + get 'syllabus' end collection do match 'join_private_courses', :via => [:get, :post] diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css index b587d5e36..5612a774e 100644 --- a/public/stylesheets/courses.css +++ b/public/stylesheets/courses.css @@ -148,7 +148,7 @@ a.postReplyCancel:hover {color:#ffffff;} .homepagePostSetting ul li:hover ul {display:block;} .homepagePostSettingIcon {background:url(../images/homepage_icon.png) -93px -5px no-repeat; width:20px; height:20px;} .homepagePostSettiongText {width:85px; line-height:2; font-size:12px; color:#616060; background-color:#ffffff; border:1px solid #eaeaea; border-radius:3px; position:absolute; left:-68px; top:20px; padding:5px 0px; display:none;} -.homepagePostSettingIcon:hover {background:url(../images/homepage_icon.png) -93px -44px no-repeat;} +.homepagePostSettingIcon:hover {background:url(../images/homepage_icon.png) -93px -44px no-repeat;cursor: pointer} a.postOptionLink {color:#616060; display:block; width:55px; padding:0px 15px;} a.postOptionLink:hover {color:#ffffff; background-color:#269ac9;} .homepagePostReplyPortrait {float:left; width:33px;} diff --git a/public/stylesheets/repository.css b/public/stylesheets/repository.css index 375b188d3..71cbd47b6 100644 --- a/public/stylesheets/repository.css +++ b/public/stylesheets/repository.css @@ -219,3 +219,60 @@ .mt1 {margin-top:1px;} .mt2 {margin-top:2px;} .commit_content_dec{width: 300px;overflow: hidden; white-space: nowrap;text-overflow: ellipsis;} + +/*提交信息列表*/ +.col-md-10 { + width: 100%; +} +ul.bordered-list { + margin: 5px 0px; + padding: 0px; +} +ul.bordered-list li { + padding: 5px 0px; + border-bottom: 1px solid #EEE; + overflow: hidden; + display: block; + margin: 0px; +} +.commits-row ul li.commit { + padding: 8px 0px; +} +li.commit .commit-row-title { + font-size: 15px; + line-height: 20px; + margin-bottom: 2px; +} +li.commit .commit-row-title .str-truncated { + max-width: 70%; +} +.str-truncated { + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: top; + white-space: nowrap; + max-width: 82%; +} +li.commit .commit-row-title .commit-row-message { + color: #444; +} +.pull-right { + float: right; + color: #777; +} +li.commit .commit-row-title .commit_short_id { + min-width: 65px; + font-family: "Menlo","Liberation Mono","Consolas","DejaVu Sans Mono","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; +} +li.commit .commit-row-info { + color: #777; + line-height: 24px; + font-size: 13px; +} +li.commit .commit-row-info a { + color: #777; +} +li.commit .commit-row-info .committed_ago { + display: inline-block; +} \ No newline at end of file