diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss index b52f93702..8719d767e 100644 --- a/app/assets/stylesheets/admin.scss +++ b/app/assets/stylesheets/admin.scss @@ -210,4 +210,8 @@ input.form-control { padding: 0.75rem 0.1rem; vertical-align: top; border-top: 1px solid #dee2e6; +} + +.table .thead-light th{ + white-space: nowrap; } \ No newline at end of file diff --git a/app/controllers/api/v1/projects_controller.rb b/app/controllers/api/v1/projects_controller.rb index bc51362ae..810c40171 100644 --- a/app/controllers/api/v1/projects_controller.rb +++ b/app/controllers/api/v1/projects_controller.rb @@ -15,6 +15,5 @@ class Api::V1::ProjectsController < Api::V1::BaseController def blame @result_object = Api::V1::Projects::BlameService.call(@project, params[:sha], params[:filepath], current_user&.gitea_token) - puts @result_object end end \ No newline at end of file diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 37a41ff75..ad8e790da 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -16,9 +16,9 @@ class Api::V1::UsersController < Api::V1::BaseController # 60s内不能重复发送 send_email_limit_cache_key = "send_email_60_second_limit:#{mail}" - tip_exception(-1, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key) + tip_exception(-2, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key) send_email_control = LimitForbidControl::SendEmailCode.new(mail) - tip_exception(-1, '邮件发送太频繁,请稍后再试') if send_email_control.forbid? + tip_exception(-2, '邮件发送太频繁,请稍后再试') if send_email_control.forbid? begin UserMailer.update_email(mail, verification_code).deliver_now @@ -39,17 +39,17 @@ class Api::V1::UsersController < Api::V1::BaseController def check_password password = params[:password] - return render_error("8~16位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD - return render_error("密码错误") unless @observe_user.check_password?(password) + return render_error(-5, "8~16位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD + return render_error(-5, "密码错误") unless @observe_user.check_password?(password) render_ok end def check_email mail = strip(params[:email]) - return render_error("邮件格式有误") unless mail =~ CustomRegexp::EMAIL + return render_error(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL exist_owner = Owner.find_by(mail: mail) - return render_error('邮箱已被使用') if exist_owner + return render_error(-2, '邮箱已被使用') if exist_owner render_ok end @@ -58,12 +58,13 @@ class Api::V1::UsersController < Api::V1::BaseController mail = strip(params[:email]) code_type = params[:code_type] - return render_error("邮件格式有误") unless mail =~ CustomRegexp::EMAIL + return render_error(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL verifi_code = VerificationCode.where(email: mail, code: code, code_type: code_type).last + return render_ok if code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试 - return render_error("验证码不正确") if verifi_code&.code != code - return render_error("验证码已失效") if !verifi_code&.effective? + return render_error(-6, "验证码不正确") if verifi_code&.code != code + return render_error(-6, "验证码已失效") if !verifi_code&.effective? render_ok end diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index d25097a19..e81b68807 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -273,7 +273,7 @@ class PullRequestsController < ApplicationController def get_relatived @project_tags = @project.issue_tags&.select(:id,:name, :color).as_json - @project_versions = @project.versions&.select(:id,:name, :status).as_json + @project_versions = @project.versions.opening&.select(:id,:name, :status).as_json @project_members = @project.all_developers @project_priories = IssuePriority&.select(:id,:name, :position).as_json end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 5ee1fdde3..e32b31017 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -147,9 +147,19 @@ class RepositoriesController < ApplicationController end def tags - result = Gitea::Repository::Tags::ListService.call(current_user&.gitea_token, @owner.login, @project.identifier, {page: params[:page], limit: params[:limit]}) + if params[:only_name].present? + result = Gitea::Repository::Tags::ListNameService.call(@owner, @project.identifier, params[:name]) - @tags = result.is_a?(Hash) && result.key?(:status) ? [] : result + @tags = result.is_a?(Hash) && result.key?(:status) ? [] : result + else + name_result = Gitea::Repository::Tags::ListNameService.call(@owner, @project.identifier, params[:name]) + + @tag_names = result.is_a?(Hash) && result.key?(:status) ? [] : name_result + + result = Gitea::Repository::Tags::ListService.call(current_user&.gitea_token, @owner.login, @project.identifier, {page: params[:page], limit: params[:limit]}) + + @tags = result.is_a?(Hash) && result.key?(:status) ? [] : result + end end def contributors diff --git a/app/helpers/tag_chosen_helper.rb b/app/helpers/tag_chosen_helper.rb index dcf3c457c..520b868fa 100644 --- a/app/helpers/tag_chosen_helper.rb +++ b/app/helpers/tag_chosen_helper.rb @@ -123,7 +123,7 @@ module TagChosenHelper cache_key = "project-#{project.id}/all_milestones/size-#{project.versions.size}/#{project.versions.maximum('updated_on')}" Rails.cache.fetch(cache_key) do - project.versions.select(:id, :name, :status).collect do |event| + project.versions.opening.select(:id, :name, :status).collect do |event| { id: event.id, name: event.name, diff --git a/app/models/project_language.rb b/app/models/project_language.rb index 09b0b80f2..0770a1efa 100644 --- a/app/models/project_language.rb +++ b/app/models/project_language.rb @@ -13,5 +13,5 @@ class ProjectLanguage < ApplicationRecord include Projectable - validates :name, uniqueness: true + validates :name, uniqueness: { message: "已存在" } end diff --git a/app/queries/projects/list_my_query.rb b/app/queries/projects/list_my_query.rb index f275d63a5..6c7f38d9c 100644 --- a/app/queries/projects/list_my_query.rb +++ b/app/queries/projects/list_my_query.rb @@ -29,6 +29,8 @@ class Projects::ListMyQuery < ApplicationQuery projects = projects.where(user_id: user.id) elsif params[:category].to_s == "watched" #我关注的 projects = projects.where.not(user_id: user.id).joins(:watchers).where(watchers: {watchable_type: "Project", user_id: user.id}) + elsif params[:category].to_s == 'only_watched' + projects = projects.joins(:watchers).where(watchers: {watchable_type: "Project", user_id: user.id}) elsif params[:category].to_s == "forked" #我fork的 fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id) projects = projects.where(id: fork_ids) diff --git a/app/services/api/v1/users/projects/list_service.rb b/app/services/api/v1/users/projects/list_service.rb index 91e25a933..8b3bffef0 100644 --- a/app/services/api/v1/users/projects/list_service.rb +++ b/app/services/api/v1/users/projects/list_service.rb @@ -53,6 +53,8 @@ class Api::V1::Users::Projects::ListService < ApplicationService projects = Project.from("( #{normal_projects} UNION #{org_projects} ) AS projects").distinct when 'watched' projects = projects.where.not(user_id: observe_user.id).joins(:watchers).where(watchers: {watchable_type: "Project", user_id: observe_user.id}) + when 'only_watched' + projects = projects.where.joins(:watchers).where(watchers: {watchable_type: "Project", user_id: observe_user.id}) when 'forked' fork_ids = observe_user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id) projects = projects.where(id: fork_ids) diff --git a/app/services/gitea/repository/tags/list_name_service.rb b/app/services/gitea/repository/tags/list_name_service.rb new file mode 100644 index 000000000..0857ca11c --- /dev/null +++ b/app/services/gitea/repository/tags/list_name_service.rb @@ -0,0 +1,23 @@ +class Gitea::Repository::Tags::ListNameService < Gitea::ClientService + attr_reader :user, :repo, :name + + def initialize(user, repo, name=nil) + @user = user + @repo = repo + @name = name + end + + def call + response = get(url, params) + render_200_response(response) + end + + private + def params + Hash.new.merge(token: user.gitea_token, name: name) + end + + def url + "/repos/#{user.login}/#{repo}/tag_name_set".freeze + end +end diff --git a/app/services/pull_requests/merge_service.rb b/app/services/pull_requests/merge_service.rb index 463412120..cffaebd8b 100644 --- a/app/services/pull_requests/merge_service.rb +++ b/app/services/pull_requests/merge_service.rb @@ -24,6 +24,9 @@ class PullRequests::MergeService < ApplicationService result = Gitea::PullRequest::MergeService.call(@current_user.gitea_token, @owner.login, @repo.identifier, @pull.gitea_number, gitea_merge_pull_params) @status, @message = result + if @status.to_i == 409 + @message = "代码冲突,请重新提交合并请求" + end end def gitea_merge_pull_params diff --git a/app/views/admins/project_ignores/_form.html.erb b/app/views/admins/project_ignores/_form.html.erb index 9a6ded0ba..2aa8b7ed9 100644 --- a/app/views/admins/project_ignores/_form.html.erb +++ b/app/views/admins/project_ignores/_form.html.erb @@ -13,7 +13,7 @@
- <%= f.text_field :name, class: "form-control input-lg", maxlength: "60", placeholder: "请输入忽略文件的全称" %> + <%= f.text_field :name, class: "form-control input-lg", maxlength: "60", placeholder: "请输入忽略文件的全称", required: true%>
@@ -25,7 +25,7 @@
- <%= f.text_area :content,class:"form-control", rows: "10", cols: "20",placeholer: "忽略文件的简要介绍,不得超过500字" %> + <%= f.text_area :content,class:"form-control", rows: "10", cols: "20",placeholer: "忽略文件的简要介绍,不得超过500字", required: true %>
diff --git a/app/views/admins/project_licenses/_form.html.erb b/app/views/admins/project_licenses/_form.html.erb index 115b67935..c6ec55504 100644 --- a/app/views/admins/project_licenses/_form.html.erb +++ b/app/views/admins/project_licenses/_form.html.erb @@ -13,7 +13,7 @@
- <%= f.text_field :name, class: "form-control input-lg", maxlength: "60", placeholder: "请输入开源许可证的全称" %> + <%= f.text_field :name, class: "form-control input-lg", maxlength: "60", placeholder: "请输入开源许可证的全称", required: true %>
@@ -25,7 +25,7 @@
- <%= f.text_area :content,class:"form-control", rows: "10", cols: "20",placeholer: "许可证的简要介绍,不得超过500字" %> + <%= f.text_area :content,class:"form-control", rows: "10", cols: "20",placeholer: "许可证的简要介绍,不得超过500字", required: true %>
diff --git a/app/views/admins/projects/shared/_list.html.erb b/app/views/admins/projects/shared/_list.html.erb index c2d300c2d..720b08dac 100644 --- a/app/views/admins/projects/shared/_list.html.erb +++ b/app/views/admins/projects/shared/_list.html.erb @@ -14,7 +14,7 @@ 成员 管理员 <%= sort_tag('创建时间', name: 'created_on', path: admins_projects_path) %> - 操作 + 操作 diff --git a/app/views/repositories/tags.json.jbuilder b/app/views/repositories/tags.json.jbuilder index eaf11058e..4f5bb4330 100644 --- a/app/views/repositories/tags.json.jbuilder +++ b/app/views/repositories/tags.json.jbuilder @@ -1,5 +1,6 @@ -json.array! @tags do |tag| - if tag.present? +json.total_count @tag_names.present? ? @tag_names.count : @tags.count +json.tags @tags do |tag| + if tag.present? && tag.is_a?(Hash) json.name tag['name'] json.id tag['id'] json.zipball_url render_zip_url(@owner, @repository, tag['name']) @@ -22,6 +23,8 @@ json.array! @tags do |tag| json.partial! 'commit_author', user: render_cache_commit_author(tag['commit']['author']), name: tag['commit']['author']['name'] end end + else + json.name tag end end diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index d1023ce2a..623a4d1c9 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -223,6 +223,8 @@ zh-CN: platform: '直播平台' live_time: '开播时间' duration: '直播时长' + project_language: + name: '项目语言' license: name: '许可证名称' content: '许可证内容'