|
|
|
@@ -13,6 +13,8 @@ class ProjectsController < ApplicationController |
|
|
|
def menu_list |
|
|
|
menu = [] |
|
|
|
|
|
|
|
user_is_admin = current_user.admin? || @project.manager?(current_user) |
|
|
|
|
|
|
|
menu.append(menu_hash_by_name("home")) |
|
|
|
menu.append(menu_hash_by_name("code")) if @project.has_menu_permission("code") |
|
|
|
menu.append(menu_hash_by_name("issues")) if @project.has_menu_permission("issues") |
|
|
|
@@ -22,7 +24,8 @@ class ProjectsController < ApplicationController |
|
|
|
menu.append(menu_hash_by_name("wiki")) if @project.has_menu_permission("wiki") && @project.forge? |
|
|
|
menu.append(menu_hash_by_name("resources")) if @project.has_menu_permission("resources") && @project.forge? |
|
|
|
menu.append(menu_hash_by_name("activity")) |
|
|
|
menu.append(menu_hash_by_name("settings")) if (current_user.admin? || @project.manager?(current_user)) && @project.forge? |
|
|
|
menu.append(menu_hash_by_name("settings")) if user_is_admin && @project.forge? |
|
|
|
menu.append(menu_hash_by_name("quit")) if !user_is_admin && @project.member(current_user.id) && @project.forge? |
|
|
|
|
|
|
|
render json: menu |
|
|
|
end |
|
|
|
@@ -88,7 +91,7 @@ class ProjectsController < ApplicationController |
|
|
|
return @branches = [] unless @project.forge? |
|
|
|
|
|
|
|
# result = Gitea::Repository::Branches::ListService.call(@owner, @project.identifier) |
|
|
|
result = Gitea::Repository::Branches::ListNameService.call(@owner, @project.identifier) |
|
|
|
result = Gitea::Repository::Branches::ListNameService.call(@owner, @project.identifier, params[:name]) |
|
|
|
@branches = result.is_a?(Hash) ? (result.key?(:status) ? [] : result["branch_name"]) : result |
|
|
|
end |
|
|
|
|
|
|
|
@@ -177,6 +180,22 @@ class ProjectsController < ApplicationController |
|
|
|
tip_exception(e.message) |
|
|
|
end |
|
|
|
|
|
|
|
def quit |
|
|
|
user_is_admin = current_user.admin? || @project.manager?(current_user) |
|
|
|
if !user_is_admin && @project.member(current_user.id) && @project.forge? |
|
|
|
ActiveRecord::Base.transaction do |
|
|
|
Projects::DeleteMemberInteractor.call(@project.owner, @project, current_user) |
|
|
|
SendTemplateMessageJob.perform_later('ProjectMemberLeft', current_user.id, current_user.id, @project.id) if Site.has_notice_menu? |
|
|
|
render_ok |
|
|
|
end |
|
|
|
else |
|
|
|
render_forbidden('你不能退出该仓库') |
|
|
|
end |
|
|
|
rescue Exception => e |
|
|
|
uid_logger_error(e.message) |
|
|
|
tip_exception(e.message) |
|
|
|
end |
|
|
|
|
|
|
|
def watch_users |
|
|
|
watchers = @project.watchers.includes(:user).order("watchers.created_at desc").distinct |
|
|
|
@watchers_count = watchers.size |
|
|
|
|