diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 2bdaddb25..304ab8e02 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -739,7 +739,7 @@ class ProjectsController < ApplicationController rescue Exception => e puts e end - # 删除Trustie班额本库记录 + # 删除Trustie版本库记录 repoisitory = Repository.where(:project_id => @project.id, :type => GITLABTYPE).first repoisitory.delete @project.update_column(:gpid, nil) @@ -799,6 +799,31 @@ class ProjectsController < ApplicationController @project = nil end + REP_TYPE = "Repository::Gitlab" + # Delete @project's repository + def destroy_repository + if is_project_manager?(User.current.id, @project.id) + @gitlab_repository = Repository.where(:project_id => @project, :type => REP_TYPE).first + @is_true = params[:is_true] + if @is_true + begin + g = Gitlab.client + @gitlab_repository.destroy + @gitlab_repository = nil + @project.update_attribute(:gpid, nil) + scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first + @repository = Repository.factory(scm) + @repository.is_default = @project.repository.nil? + g.delete_project(@project.gpid) + rescue Exception => e + puts e + end + end + else + return render_403 + end + end + def show_projects_score respond_to do |format| format.html { render :layout => "base_projects"} diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index ad60f2b70..e481b09a6 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -91,10 +91,11 @@ class PullRequestsController < ApplicationController # 如果分支有改动 if compare_pull_request(source_branch, target_project_id, target_branch) # 如果传送了目标项目ID即向fork源项目发送请求 - if params[:forked_project_id] && params[:source_project] == "forked_project_name" + # if params[:forked_project_id] && params[:source_project] == "forked_project_name" + if params[:target_project_id] target_project_id = params[:forked_project_id].to_i request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch, :target_project_id => target_project_id) - @fork_project_name = Project.find(@project.forked_from_project_id).try(:name) + @fork_project_name = Project.find(target_project_id).try(:name) @fork_pr_message = true if @fork_project_name else request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch) diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 3dff9c414..fb757665f 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -302,6 +302,16 @@ module ProjectsHelper type << option2 end + # 判断用户是否为项目管理员 + def is_project_manager?(user_id, project_id) + @result = false + mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) + unless mem.blank? + @result = mem.first.roles.to_s.include?("Manager") ? true : false + end + return @result + end + # 用来判断用户是否是项目的管理员 # added by william def is_manager?(user_id,project_id) diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb index acece2307..09d9115b4 100644 --- a/app/helpers/watchers_helper.rb +++ b/app/helpers/watchers_helper.rb @@ -333,6 +333,7 @@ module WatchersHelper return '' unless user && user.logged? objects = Array.wrap(objects) watched = objects.any? {|object| object.watched_by?(user)} + watched = true if user.id == @project.user_id @watch_flag = objects.first.instance_of?(Project) id = watcher_css(objects) text = @watch_flag ? @@ -340,8 +341,13 @@ module WatchersHelper url = watch_path(:object_type => objects.first.class.to_s.underscore, :object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort)) method = watched ? 'delete' : 'post' - link_to text, url, :remote => true, :method => method, - :class => "pro_new_topbtn_left fl" ,:id=>id + if user.id != @project.user_id + link_to text, url, :remote => true, :method => method, + :class => "pro_new_topbtn_left fl" ,:id => id + else + link_to "关注", "javascript:void(0)", :remote => true, :method => method, + :class => "pro_new_grey_topbtn_left fl" , :id => id + end end def store_project_link project_id, user_id diff --git a/app/views/projects/_applied_status.html.erb b/app/views/projects/_applied_status.html.erb index ec64a08ae..55190c613 100644 --- a/app/views/projects/_applied_status.html.erb +++ b/app/views/projects/_applied_status.html.erb @@ -3,7 +3,8 @@
  • <%= watcher_link_for_project(@project, User.current) %> - <%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id},:id=>"fans_num", :class => 'pro_new_topbtn fl' %> + <%= link_to "#{@project.watcher_users.count}", {:controller => "projects", :action => "watcherlist", + :id => @project.id}, :id => "fans_num", :class => 'pro_new_topbtn fl', :title => "关注成员列表" %>
  • @@ -12,15 +13,21 @@ <% else %> 等待审批 <% end %> - <%= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员" %> + <%= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员列表" %>
  • <% end %> <% else %> - <% if User.current.id != @project.user_id %> + <% if User.current.login? %> +
  • + <%= watcher_link_for_project(@project, User.current) %> + <%= link_to "#{@project.watcher_users.count}", {:controller => "projects", :action => "watcherlist", + :id => @project.id}, :id => "fans_num", :class => 'pro_new_topbtn fl', :title => "关注成员列表" %> +
  • 已加入 - <%= Member.where(:project_id => @project.id).count %> + + <%= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员列表" %>
  • <%#= link_to "#{Member.where(:project_id => @project.id).count}", project_member_path(@project), :class => 'pro_new_topbtn fl', :title => "项目成员" %> <% end %> @@ -35,8 +42,17 @@ <%= link_to "".html_safe+"Fork", forked_pop_project_path(@project), :class=>"pro_new_topbtn_left fl", :remote => true %> - <%= @project.forked_count.to_i %> + <%= @project.forked_count.to_i %> + +<% else%> +
  • + <%#= link_to "".html_safe+"Fork","#", + :class=>"pro_new_grey_topbtn_left fl"%> + + Fork + + <%= @project.forked_count.to_i %> <% end %> diff --git a/app/views/projects/_project_member_list.html.erb b/app/views/projects/_project_member_list.html.erb index eb2573d03..31a86e8c9 100644 --- a/app/views/projects/_project_member_list.html.erb +++ b/app/views/projects/_project_member_list.html.erb @@ -1,30 +1,31 @@
    -
    - 加入时间 -
    +
      <% members.each do |member| %> -
      - - <%= member.user.nil? ? '' : (image_tag(url_to_avatar(member.user), :width => 32, :height => 32)) %> - - <%= l(:label_user_for_project_grade) %>:<%= format("%.2f" ,read_user_project_scores(member.user,@project)).to_i %> +
    • + <%= link_to image_tag(url_to_avatar(member.user), :width => "50", :height => "50"), user_path(member.user), :alt => "用户头像", :class => "pro_new_users fl mr5" %> +
      + <%= link_to member.user.try(:show_name), user_path(member.user), :class => "pro_new_users mt5 fl" %> + +
      + <%= h time_tag(member.created_on) %> +
      +
    • + <% end %> +
    - <%= l(:label_username)%> - <%= link_to(member.user.name, user_path(member.user),:class => "ml10 c_blue02") %>(<%= rolesToLanguage(member.roles.sort.collect(&:to_s)).join(', ') %>)
    +
    - - <%= format_date(member.created_on)%> -
    -
    - <% end%> - -