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 @@
<%= @project.name %>
<% else %> diff --git a/app/views/projects/watcherlist.html.erb b/app/views/projects/watcherlist.html.erb index effef316b..65239b53a 100644 --- a/app/views/projects/watcherlist.html.erb +++ b/app/views/projects/watcherlist.html.erb @@ -1,28 +1,17 @@ -