2020-03-09 00:40:16 +08:00
|
|
|
module ProjectsHelper
|
2021-03-17 11:52:36 +08:00
|
|
|
def menu_hash_by_name(name)
|
|
|
|
|
{
|
|
|
|
|
menu_name: name
|
|
|
|
|
}
|
|
|
|
|
end
|
2020-03-09 00:40:16 +08:00
|
|
|
|
|
|
|
|
def render_zh_project_type(project_type)
|
|
|
|
|
case project_type
|
|
|
|
|
when 'common' then "开源托管项目"
|
2020-06-24 16:16:10 +08:00
|
|
|
when 'sync_mirror' then "镜像托管项目"
|
|
|
|
|
when 'mirror' then "开源镜像项目"
|
2020-03-09 00:40:16 +08:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2021-06-22 09:39:44 +08:00
|
|
|
def render_zip_url(owner, repository, archive)
|
|
|
|
|
[base_url, archive_repositories_path(owner&.login, repository, "#{archive}.zip")].join
|
2020-03-09 00:40:16 +08:00
|
|
|
end
|
|
|
|
|
|
2021-06-22 09:39:44 +08:00
|
|
|
def render_tar_url(owner, repository, archive)
|
|
|
|
|
[base_url, archive_repositories_path(owner&.login, repository, "#{archive}.tar.gz")].join
|
2020-03-09 00:40:16 +08:00
|
|
|
end
|
|
|
|
|
|
2021-09-10 10:52:21 +08:00
|
|
|
def render_download_file_url(owner, repository, filepath, ref)
|
|
|
|
|
[base_url, "/api/#{owner&.login}/#{repository.identifier}/raw?filepath=#{filepath}&ref=#{ref}"].join
|
|
|
|
|
end
|
|
|
|
|
|
2020-03-09 00:40:16 +08:00
|
|
|
def render_http_url(project)
|
|
|
|
|
[gitea_domain, project.owner.login, "#{project.identifier}.git"].join('/')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def gitea_domain
|
2022-06-23 11:33:11 +08:00
|
|
|
GiteaService.gitea_config[:domain]
|
2020-03-09 00:40:16 +08:00
|
|
|
end
|
|
|
|
|
|
2020-05-29 19:04:14 +08:00
|
|
|
def find_user_by_login_or_mail(identifier)
|
|
|
|
|
(User.find_by_login identifier) || (User.find_by_mail identifier)
|
|
|
|
|
end
|
2020-06-29 16:05:22 +08:00
|
|
|
|
2020-09-08 15:29:19 +08:00
|
|
|
def json_response(project, user)
|
2021-08-18 15:40:50 +08:00
|
|
|
repo = Repository.includes(:mirror).select(:id, :is_mirror, :mirror_url, :source_clone_url).find_by(project: project)
|
2020-10-22 18:00:31 +08:00
|
|
|
|
2020-06-29 18:26:22 +08:00
|
|
|
tmp_json = {}
|
|
|
|
|
unless project.common?
|
|
|
|
|
tmp_json = tmp_json.merge({
|
2021-08-18 15:40:50 +08:00
|
|
|
is_mirror: repo.is_mirror ? true : false,
|
2020-06-29 18:26:22 +08:00
|
|
|
mirror_status: repo.mirror_status,
|
|
|
|
|
mirror_num: repo.mirror_num,
|
2021-05-07 14:06:40 +08:00
|
|
|
mirror_url: repo.remote_mirror_url,
|
2020-06-29 18:26:22 +08:00
|
|
|
first_sync: repo.first_sync?
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
tmp_json = tmp_json.merge({
|
2020-10-22 18:00:31 +08:00
|
|
|
identifier: render_identifier(project),
|
2020-06-29 16:05:22 +08:00
|
|
|
name: project.name,
|
2020-10-22 18:00:31 +08:00
|
|
|
platform: project.platform,
|
2020-06-29 16:05:22 +08:00
|
|
|
id: project.id,
|
2020-07-15 09:43:30 +08:00
|
|
|
repo_id: repo.id,
|
2020-09-08 15:29:19 +08:00
|
|
|
open_devops: (user.blank? || user.is_a?(AnonymousUser)) ? false : project.open_devops?,
|
2020-06-30 10:44:58 +08:00
|
|
|
type: project.numerical_for_project_type,
|
2021-08-18 15:40:50 +08:00
|
|
|
author: render_owner(project),
|
|
|
|
|
project_category_id: project.project_category_id,
|
|
|
|
|
project_language_id: project.project_language_id,
|
|
|
|
|
license_id: project.license_id,
|
|
|
|
|
ignore_id: project.ignore_id
|
2020-06-29 18:26:22 +08:00
|
|
|
}).compact
|
2020-10-19 22:59:41 +08:00
|
|
|
|
2020-06-29 18:26:22 +08:00
|
|
|
render json: tmp_json
|
2020-06-29 16:05:22 +08:00
|
|
|
end
|
2020-10-19 22:59:41 +08:00
|
|
|
|
2020-10-30 15:47:09 +08:00
|
|
|
def render_owner(project)
|
|
|
|
|
if project.educoder?
|
|
|
|
|
{
|
|
|
|
|
login: project.project_educoder.owner,
|
|
|
|
|
name: project.project_educoder.owner,
|
2021-01-26 17:44:04 +08:00
|
|
|
type: 'Educoder',
|
2020-10-30 15:47:09 +08:00
|
|
|
image_url: project.project_educoder.image_url
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
login: @owner.login,
|
|
|
|
|
name: @owner.real_name,
|
2021-01-26 17:44:04 +08:00
|
|
|
type: @owner.type,
|
2020-10-30 15:47:09 +08:00
|
|
|
image_url: url_to_avatar(@owner)
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2020-10-22 18:00:31 +08:00
|
|
|
def render_identifier(project)
|
|
|
|
|
project.educoder? ? project.project_educoder&.repo_name&.split('/')[1] : project.identifier
|
|
|
|
|
end
|
|
|
|
|
|
2020-10-19 22:59:41 +08:00
|
|
|
def render_author(project)
|
2020-10-22 18:00:31 +08:00
|
|
|
project.educoder? ? project.project_educoder&.repo_name&.split('/')[0] : project.owner.login
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render_educoder_avatar_url(project_educoder)
|
2020-10-23 00:16:41 +08:00
|
|
|
[Rails.application.config_for(:configuration)['educoder']['cdn_url'], project_educoder&.image_url].join('/')
|
2020-10-22 18:00:31 +08:00
|
|
|
end
|
2020-03-09 00:40:16 +08:00
|
|
|
end
|