1 # frozen_string_literal: true
3 SimpleNavigation
::Configuration.run
do |navigation
|
4 navigation
.items
do |n
|
5 n
.item
:web, safe_join([fa_icon('chevron-left fw'), t('settings.back')]), root_path
7 n
.item
:profile, safe_join([fa_icon('user fw'), t('settings.profile')]), settings_profile_path
, if: -> { current_user
.functional
? } do |s
|
8 s
.item
:profile, safe_join([fa_icon('pencil fw'), t('settings.appearance')]), settings_profile_path
9 s
.item
:featured_tags, safe_join([fa_icon('hashtag fw'), t('settings.featured_tags')]), settings_featured_tags_path
12 n
.item
:preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_path
, if: -> { current_user
.functional
? } do |s
|
13 s
.item
:appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_path
14 s
.item
:notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_path
15 s
.item
:other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_path
18 n
.item
:flavours, safe_join([fa_icon('paint-brush fw'), t('settings.flavours')]), settings_flavours_path
do |flavours
|
19 Themes
.instance
.flavours
.each
do |flavour
|
20 flavours
.item flavour
.to_sym
, safe_join([fa_icon('star fw'), t("flavours.#{flavour}.name", default
: flavour
)]), settings_flavour_path(flavour
)
24 n
.item
:relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_path
, if: -> { current_user
.functional
? }
25 n
.item
:filters, safe_join([fa_icon('filter fw'), t('filters.index.title')]), filters_path
, highlights_on
: %r
{/filters
}, if: -> { current_user
.functional
? }
26 n
.item
:statuses_cleanup, safe_join([fa_icon('history fw'), t('settings.statuses_cleanup')]), statuses_cleanup_path
, if: -> { current_user
.functional
? }
28 n
.item
:security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_path
do |s
|
29 s
.item
:password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_path
, highlights_on
: %r
{/auth/edit
|/settings/delete
|/settings/migration
|/settings/aliases
|/settings/login_activities
|^
/disputes
}
30 s
.item
:two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_path
, highlights_on
: %r
{/settings/two_factor_authentication
|/settings/otp_authentication
|/settings/security_keys
}
31 s
.item
:authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_path
34 n
.item
:data, safe_join([fa_icon('cloud-download fw'), t('settings.import_and_export')]), settings_export_path
do |s
|
35 s
.item
:import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_path
, if: -> { current_user
.functional
? }
36 s
.item
:export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_path
39 n
.item
:invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path
, if: -> { current_user
.can
?(:invite_users) && current_user
.functional
? }
40 n
.item
:development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_path
, if: -> { current_user
.functional
? }
42 n
.item
:trends, safe_join([fa_icon('fire fw'), t('admin.trends.title')]), admin_trends_statuses_path
, if: -> { current_user
.can
?(:manage_taxonomies) } do |s
|
43 s
.item
:statuses, safe_join([fa_icon('comments-o fw'), t('admin.trends.statuses.title')]), admin_trends_statuses_path
, highlights_on
: %r
{/admin/trends
/statuses
}
44 s
.item
:tags, safe_join([fa_icon('hashtag fw'), t('admin.trends.tags.title')]), admin_trends_tags_path
, highlights_on
: %r
{/admin/tags
|/admin/trends
/tags
}
45 s
.item
:links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path
, highlights_on
: %r
{/admin/trends
/links
}
48 n
.item
:moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: -> { current_user
.can
?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks) } do |s
|
49 s
.item
:reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path
, highlights_on
: %r
{/admin/reports
}, if: -> { current_user
.can
?(:manage_reports) }
50 s
.item
:accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin
: 'local'), highlights_on
: %r
{/admin/accounts
|/admin/pending_accounts
|/admin/disputes
|/admin/users
}, if: -> { current_user
.can
?(:manage_users) }
51 s
.item
:invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path
, if: -> { current_user
.can
?(:manage_invites) }
52 s
.item
:follow_recommendations, safe_join([fa_icon('user-plus fw'), t('admin.follow_recommendations.title')]), admin_follow_recommendations_path
, highlights_on
: %r
{/admin/follow_recommendations
}, if: -> { current_user
.can
?(:manage_taxonomies) }
53 s
.item
:instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_path(limited
: whitelist_mode
? ? nil : '1'), highlights_on
: %r
{/admin/instances
|/admin/domain_blocks
|/admin/domain_allows
}, if: -> { current_user
.can
?(:manage_federation) }
54 s
.item
:email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_path
, highlights_on
: %r
{/admin/email_domain_blocks
}, if: -> { current_user
.can
?(:manage_blocks) }
55 s
.item
:ip_blocks, safe_join([fa_icon('ban fw'), t('admin.ip_blocks.title')]), admin_ip_blocks_path
, highlights_on
: %r
{/admin/ip_blocks
}, if: -> { current_user
.can
?(:manage_blocks) }
56 s
.item
:action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_path
, if: -> { current_user
.can
?(:view_audit_log) }
59 n
.item
:admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), nil, if: -> { current_user
.can
?(:view_dashboard, :manage_settings, :manage_rules, :manage_announcements, :manage_custom_emojis, :manage_webhooks, :manage_federation) } do |s
|
60 s
.item
:dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_path
, if: -> { current_user
.can
?(:view_dashboard) }
61 s
.item
:settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_path
, if: -> { current_user
.can
?(:manage_settings) }, highlights_on
: %r
{/admin/settings
}
62 s
.item
:rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path
, highlights_on
: %r
{/admin/rules
}, if: -> { current_user
.can
?(:manage_rules) }
63 s
.item
:roles, safe_join([fa_icon('vcard fw'), t('admin.roles.title')]), admin_roles_path
, highlights_on
: %r
{/admin/roles
}, if: -> { current_user
.can
?(:manage_roles) }
64 s
.item
:announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path
, highlights_on
: %r
{/admin/announcements
}, if: -> { current_user
.can
?(:manage_announcements) }
65 s
.item
:custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_path
, highlights_on
: %r
{/admin/custom_emojis
}, if: -> { current_user
.can
?(:manage_custom_emojis) }
66 s
.item
:webhooks, safe_join([fa_icon('inbox fw'), t('admin.webhooks.title')]), admin_webhooks_path
, highlights_on
: %r
{/admin/webhooks
}, if: -> { current_user
.can
?(:manage_webhooks) }
67 s
.item
:relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_path
, highlights_on
: %r
{/admin/relays
}, if: -> { !whitelist_mode
? && current_user
.can
?(:manage_federation) }
70 n
.item
:sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_path
, link_html
: { target
: 'sidekiq' }, if: -> { current_user
.can
?(:view_devops) }
71 n
.item
:pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_path
, link_html
: { target
: 'pghero' }, if: -> { current_user
.can
?(:view_devops) }
72 n
.item
:logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_path
, link_html
: { 'data-method' => 'delete' }