Update setting api
This commit is contained in:
parent
fc522be5ea
commit
3869529620
|
@ -1,31 +1,57 @@
|
||||||
class SettingsController < ApplicationController
|
class SettingsController < ApplicationController
|
||||||
def show
|
def show
|
||||||
@old_projects_url = nil
|
@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)
|
private
|
||||||
@personal =
|
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?
|
if User.current.logged?
|
||||||
arr =[]
|
|
||||||
Site.personal.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
Site.personal.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
||||||
hash = {}
|
hash = {}
|
||||||
site.each {|k, v|
|
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
|
end
|
||||||
else
|
|
||||||
[]
|
|
||||||
end
|
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
|
||||||
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
|
end
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Project < ApplicationRecord
|
class Project < ApplicationRecord
|
||||||
include Matchable
|
include Matchable
|
||||||
include Publicable
|
include Publicable
|
||||||
|
|
|
@ -17,7 +17,56 @@ class Site < ApplicationRecord
|
||||||
# common: 普通链接
|
# common: 普通链接
|
||||||
enum site_type: { add: 0, personal: 1, common: 2 }
|
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
|
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
|
end
|
||||||
|
|
|
@ -45,11 +45,11 @@ json.setting do
|
||||||
|
|
||||||
json.main_site current_laboratory.main_site?
|
json.main_site current_laboratory.main_site?
|
||||||
json.new_course default_course_links
|
json.new_course default_course_links
|
||||||
json.old_projects_url @old_projects_url
|
|
||||||
|
|
||||||
|
|
||||||
json.add do
|
json.add do
|
||||||
json.array! @add, :name, :url, :key
|
# json.array! @add, :name, :url, :key
|
||||||
|
json.array! @add
|
||||||
end
|
end
|
||||||
|
|
||||||
json.personal do
|
json.personal do
|
||||||
|
|
|
@ -8,5 +8,7 @@ class CreateSites < ActiveRecord::Migration[5.2]
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Site.set_default_menu
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue