forked from Gitlink/forgeplus
Update setting api
This commit is contained in:
parent
fc522be5ea
commit
3869529620
|
@ -1,31 +1,57 @@
|
|||
class SettingsController < ApplicationController
|
||||
def show
|
||||
@old_projects_url = nil
|
||||
@old_projects_url = "https://www.trustie.net/users/#{current_user.try(:login)}/projects" if User.current.logged?
|
||||
get_add_menu
|
||||
get_common_menu
|
||||
get_personal_menu
|
||||
end
|
||||
|
||||
@add = Site.add.select(:id, :name, :url, :key)
|
||||
@personal =
|
||||
private
|
||||
def get_add_menu
|
||||
@add = []
|
||||
Site.add.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
||||
hash = {}
|
||||
site.each {|k, v|
|
||||
hash.merge!("#{k}": set_site_url(k, v))
|
||||
}
|
||||
@add << hash
|
||||
end
|
||||
end
|
||||
|
||||
def get_common_menu
|
||||
@common = []
|
||||
Site.common.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
||||
next if site["url"].to_s.include?("current_user") && !User.current.logged?
|
||||
hash = {}
|
||||
site.each {|k, v|
|
||||
hash.merge!("#{k}": set_site_url(k, v))
|
||||
}
|
||||
@common << hash
|
||||
end
|
||||
end
|
||||
|
||||
def get_personal_menu
|
||||
@personal = []
|
||||
if User.current.logged?
|
||||
arr =[]
|
||||
Site.personal.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
||||
hash = {}
|
||||
site.each {|k, v|
|
||||
hash.merge!("#{k}": v.to_s.include?("current_user") ? v.split('current_user').join(current_user&.login) : v)
|
||||
hash.merge!("#{k}": set_site_url(k, v))
|
||||
}
|
||||
arr << hash
|
||||
@personal << hash
|
||||
end
|
||||
else
|
||||
[]
|
||||
end
|
||||
|
||||
@common = []
|
||||
Site.common.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
||||
next if site["url"].to_s.include?("current_user") && !User.current.logged?
|
||||
hash = {}
|
||||
site.each {|k, v|
|
||||
hash.merge!("#{k}": v.to_s.include?("current_user") ? v.split('current_user').join(current_user&.login) : v)
|
||||
}
|
||||
@common << hash
|
||||
end
|
||||
end
|
||||
|
||||
def set_site_url(key, value)
|
||||
value =
|
||||
if value.to_s.include?("current_user")
|
||||
split_arr = value.split('current_user')
|
||||
split_arr.length > 1 ? split_arr.join(current_user&.login) : (split_arr << current_user&.login).join('')
|
||||
else
|
||||
value
|
||||
end
|
||||
|
||||
key.to_s === "url" && !value.to_s.start_with?("http") ? [request.protocol, request.host_with_port, value].join('') : value
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,74 +1,75 @@
|
|||
# == Schema Information
|
||||
#
|
||||
# Table name: projects
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# name :string(255) default(""), not null
|
||||
# description :text(4294967295)
|
||||
# homepage :string(255) default("")
|
||||
# is_public :boolean default("1"), not null
|
||||
# parent_id :integer
|
||||
# created_on :datetime
|
||||
# updated_on :datetime
|
||||
# identifier :string(255)
|
||||
# status :integer default("1"), not null
|
||||
# lft :integer
|
||||
# rgt :integer
|
||||
# inherit_members :boolean default("0"), not null
|
||||
# project_type :integer default("0")
|
||||
# hidden_repo :boolean default("0"), not null
|
||||
# attachmenttype :integer default("1")
|
||||
# user_id :integer
|
||||
# dts_test :integer default("0")
|
||||
# enterprise_name :string(255)
|
||||
# organization_id :integer
|
||||
# project_new_type :integer
|
||||
# gpid :integer
|
||||
# forked_from_project_id :integer
|
||||
# forked_count :integer default("0")
|
||||
# publish_resource :integer default("0")
|
||||
# visits :integer default("0")
|
||||
# hot :integer default("0")
|
||||
# invite_code :string(255)
|
||||
# qrcode :string(255)
|
||||
# qrcode_expiretime :integer default("0")
|
||||
# script :text(65535)
|
||||
# training_status :integer default("0")
|
||||
# rep_identifier :string(255)
|
||||
# project_category_id :integer
|
||||
# project_language_id :integer
|
||||
# license_id :integer
|
||||
# ignore_id :integer
|
||||
# praises_count :integer default("0")
|
||||
# watchers_count :integer default("0")
|
||||
# issues_count :integer default("0")
|
||||
# pull_requests_count :integer default("0")
|
||||
# language :string(255)
|
||||
# versions_count :integer default("0")
|
||||
# issue_tags_count :integer default("0")
|
||||
# closed_issues_count :integer default("0")
|
||||
# open_devops :boolean default("0")
|
||||
# gitea_webhook_id :integer
|
||||
# open_devops_count :integer default("0")
|
||||
# recommend :boolean default("0")
|
||||
# platform :integer default("0")
|
||||
# default_branch :string(255) default("master")
|
||||
# website :string(255)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_projects_on_forked_from_project_id (forked_from_project_id)
|
||||
# index_projects_on_identifier (identifier)
|
||||
# index_projects_on_is_public (is_public)
|
||||
# index_projects_on_lft (lft)
|
||||
# index_projects_on_name (name)
|
||||
# index_projects_on_platform (platform)
|
||||
# index_projects_on_project_type (project_type)
|
||||
# index_projects_on_recommend (recommend)
|
||||
# index_projects_on_rgt (rgt)
|
||||
# index_projects_on_status (status)
|
||||
# index_projects_on_updated_on (updated_on)
|
||||
#
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: projects
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# name :string(255) default(""), not null
|
||||
# description :text(4294967295)
|
||||
# homepage :string(255) default("")
|
||||
# is_public :boolean default("1"), not null
|
||||
# parent_id :integer
|
||||
# created_on :datetime
|
||||
# updated_on :datetime
|
||||
# identifier :string(255)
|
||||
# status :integer default("1"), not null
|
||||
# lft :integer
|
||||
# rgt :integer
|
||||
# inherit_members :boolean default("0"), not null
|
||||
# project_type :integer default("0")
|
||||
# hidden_repo :boolean default("0"), not null
|
||||
# attachmenttype :integer default("1")
|
||||
# user_id :integer
|
||||
# dts_test :integer default("0")
|
||||
# enterprise_name :string(255)
|
||||
# organization_id :integer
|
||||
# project_new_type :integer
|
||||
# gpid :integer
|
||||
# forked_from_project_id :integer
|
||||
# forked_count :integer default("0")
|
||||
# publish_resource :integer default("0")
|
||||
# visits :integer default("0")
|
||||
# hot :integer default("0")
|
||||
# invite_code :string(255)
|
||||
# qrcode :string(255)
|
||||
# qrcode_expiretime :integer default("0")
|
||||
# script :text(65535)
|
||||
# training_status :integer default("0")
|
||||
# rep_identifier :string(255)
|
||||
# project_category_id :integer
|
||||
# project_language_id :integer
|
||||
# license_id :integer
|
||||
# ignore_id :integer
|
||||
# praises_count :integer default("0")
|
||||
# watchers_count :integer default("0")
|
||||
# issues_count :integer default("0")
|
||||
# pull_requests_count :integer default("0")
|
||||
# language :string(255)
|
||||
# versions_count :integer default("0")
|
||||
# issue_tags_count :integer default("0")
|
||||
# closed_issues_count :integer default("0")
|
||||
# open_devops :boolean default("0")
|
||||
# gitea_webhook_id :integer
|
||||
# open_devops_count :integer default("0")
|
||||
# recommend :boolean default("0")
|
||||
# platform :integer default("0")
|
||||
# default_branch :string(255) default("master")
|
||||
# website :string(255)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_projects_on_forked_from_project_id (forked_from_project_id)
|
||||
# index_projects_on_identifier (identifier)
|
||||
# index_projects_on_is_public (is_public)
|
||||
# index_projects_on_lft (lft)
|
||||
# index_projects_on_name (name)
|
||||
# index_projects_on_platform (platform)
|
||||
# index_projects_on_project_type (project_type)
|
||||
# index_projects_on_recommend (recommend)
|
||||
# index_projects_on_rgt (rgt)
|
||||
# index_projects_on_status (status)
|
||||
# index_projects_on_updated_on (updated_on)
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,56 @@ class Site < ApplicationRecord
|
|||
# common: 普通链接
|
||||
enum site_type: { add: 0, personal: 1, common: 2 }
|
||||
|
||||
def self.set_default
|
||||
|
||||
def self.set_default_menu
|
||||
set_add_menu!
|
||||
set_personal_menu!
|
||||
set_common_menu!
|
||||
end
|
||||
|
||||
private
|
||||
def self.set_add_menu!
|
||||
adds= [
|
||||
{name: '新建镜像项目', key: 'add_mirror_project', url: '/projects/mirror/new'},
|
||||
{name: '新建托管项目', key: 'add_common', url: '/projects/deposit/new'},
|
||||
{name: '新建组织', key: 'add_r', url: '/organize/new'}]
|
||||
|
||||
adds.each { |ele|
|
||||
Site.find_or_create_by(key: ele[:key]) do |site|
|
||||
site.name = ele[:name]
|
||||
site.url = ele[:url]
|
||||
site.site_type = Site.site_types[:add]
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def self.set_personal_menu!
|
||||
personals = [
|
||||
{name: '个人中心', key: 'my_page', url: '/users/current_user'},
|
||||
{name: '我的组织', key: 'my_organizes', url: '/users/current_user/organizes'}
|
||||
]
|
||||
|
||||
personals.each { |ele|
|
||||
Site.find_or_create_by(key: ele[:key]) do |site|
|
||||
site.name = ele[:name]
|
||||
site.url = ele[:url]
|
||||
site.site_type = Site.site_types[:personal]
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def self.set_common_menu!
|
||||
commons = [
|
||||
{name: '通知', key: 'notice', url: '/users/current_user/user_messages'},
|
||||
{name: '找回密码', key: 'lost_password', url: '/account/lost_password'},
|
||||
{name: '注册', key: 'register', url: '/login?login=false'}
|
||||
]
|
||||
|
||||
commons.each { |ele|
|
||||
Site.find_or_create_by(key: ele[:key]) do |site|
|
||||
site.name = ele[:name]
|
||||
site.url = ele[:url]
|
||||
site.site_type = Site.site_types[:common]
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -45,11 +45,11 @@ json.setting do
|
|||
|
||||
json.main_site current_laboratory.main_site?
|
||||
json.new_course default_course_links
|
||||
json.old_projects_url @old_projects_url
|
||||
|
||||
|
||||
json.add do
|
||||
json.array! @add, :name, :url, :key
|
||||
# json.array! @add, :name, :url, :key
|
||||
json.array! @add
|
||||
end
|
||||
|
||||
json.personal do
|
||||
|
|
|
@ -8,5 +8,7 @@ class CreateSites < ActiveRecord::Migration[5.2]
|
|||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
Site.set_default_menu
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue