mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-16 06:06:56 +08:00
99 lines
2.6 KiB
Ruby
99 lines
2.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class NavigationsController < ApplicationController
|
|
include ApplicationHelper
|
|
|
|
def top_menu
|
|
render json: {
|
|
root_url: root_path,
|
|
team_switch_url: switch_users_settings_teams_path,
|
|
current_team: current_team&.id,
|
|
search_url: search_path,
|
|
teams: teams,
|
|
settings: [],
|
|
help_menu: help_menu_links,
|
|
settings_menu: settings_menu_links,
|
|
user_menu: user_menu_links,
|
|
user: user
|
|
}
|
|
end
|
|
|
|
def navigator_state
|
|
current_user.update_simple_setting(key: 'navigator_collapsed', value: params[:state] == 'collapsed')
|
|
|
|
width = params[:width].to_i
|
|
current_user.update_simple_setting(key: 'navigator_width', value: width) if width.positive?
|
|
end
|
|
|
|
private
|
|
|
|
def teams
|
|
current_user.teams.order(:name).map do |t|
|
|
[
|
|
t.id,
|
|
t.name
|
|
]
|
|
end
|
|
end
|
|
|
|
def user
|
|
{
|
|
name: current_user.full_name,
|
|
avatar_url: avatar_path(current_user, :icon_small),
|
|
sign_out_url: destroy_user_session_path,
|
|
preferences_url: preferences_url
|
|
}
|
|
end
|
|
|
|
def help_menu_links
|
|
links = [
|
|
{ name: I18n.t('left_menu_bar.support_links.support'), url: Constants::SUPPORT_URL },
|
|
{ name: I18n.t('left_menu_bar.support_links.tutorials'), url: Constants::TUTORIALS_URL },
|
|
{ name: I18n.t('left_menu_bar.academy'), url: Constants::ACADEMY_BL_LINK }
|
|
]
|
|
|
|
private_methods.select { |i| i.to_s[/^help_menu_links_[a-z]*_extension$/] }.each do |method|
|
|
links = __send__(method, links)
|
|
end
|
|
|
|
links
|
|
end
|
|
|
|
def settings_menu_links
|
|
links = [
|
|
{
|
|
name: I18n.t('users.settings.sidebar.teams'), url: teams_path
|
|
}, {
|
|
name: I18n.t('users.settings.sidebar.account_nav.addons'), url: addons_path
|
|
}
|
|
]
|
|
|
|
if can_create_acitivity_filters?
|
|
links.push({ name: I18n.t('users.settings.sidebar.webhooks'), url: users_settings_webhooks_path })
|
|
end
|
|
|
|
private_methods.select { |i| i.to_s[/^settings_menu_links_[a-z]*_extension$/] }.each do |method|
|
|
links = __send__(method, links)
|
|
end
|
|
|
|
links
|
|
end
|
|
|
|
def user_menu_links
|
|
links = [
|
|
{
|
|
name: I18n.t('users.settings.sidebar.account_nav.profile'), url: edit_user_registration_path
|
|
}, {
|
|
name: I18n.t('users.settings.sidebar.account_nav.preferences'), url: preferences_path
|
|
}, {
|
|
name: I18n.t('users.settings.sidebar.account_nav.connected_accounts'), url: connected_accounts_path
|
|
}
|
|
]
|
|
|
|
private_methods.select { |i| i.to_s[/^user_menu_links_[a-z]*_extension$/] }.each do |method|
|
|
links = __send__(method, links)
|
|
end
|
|
|
|
links
|
|
end
|
|
end
|