206 lines
8.9 KiB
Text
206 lines
8.9 KiB
Text
- breadcrumb_title _("Dashboard")
|
|
- page_title _("Dashboard")
|
|
- billable_users_url = help_page_path('subscriptions/self_managed/index', anchor: 'billable-users')
|
|
- billable_users_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer nofollow">'.html_safe % { url: billable_users_url }
|
|
|
|
= render_if_exists 'shared/manual_quarterly_reconciliation_banner'
|
|
= render_if_exists 'shared/submit_license_usage_data_banner'
|
|
= render_if_exists 'shared/qrtly_reconciliation_alert'
|
|
= render 'admin/dashboard/security_newsletter_callout'
|
|
|
|
- if @notices
|
|
- @notices.each do |notice|
|
|
.js-vue-alert{ 'v-cloak': true, data: { variant: notice[:type],
|
|
dismissible: true.to_s } }
|
|
= notice[:message].html_safe
|
|
|
|
- if @license.present?
|
|
.license-panel.gl-mt-5
|
|
= render_if_exists 'admin/licenses/summary'
|
|
= render_if_exists 'admin/licenses/breakdown'
|
|
|
|
.admin-dashboard.gl-mt-3
|
|
.h3.gl-mb-5.gl-mt-0= _('Instance overview')
|
|
.row
|
|
- component_params = { body_options: { class: 'gl-display-flex gl-justify-content-space-between gl-align-items-center gl-p-6' },
|
|
footer_options: { class: 'gl-bg-transparent'} }
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new(**component_params) do |c|
|
|
= c.body do
|
|
%span
|
|
.d-flex.align-items-center
|
|
= sprite_icon('project', size: 16, css_class: 'gl-text-gray-700')
|
|
%h3.gl-m-0.gl-ml-3= approximate_count_with_delimiters(@counts, Project)
|
|
.gl-mt-3.text-uppercase= s_('AdminArea|Projects')
|
|
= link_to(s_('AdminArea|New project'), new_project_path, class: "btn gl-button btn-default")
|
|
= c.footer do
|
|
.d-flex.align-items-center
|
|
= link_to(s_('AdminArea|View latest projects'), admin_projects_path)
|
|
= sprite_icon('chevron-right', size: 12, css_class: 'gl-text-gray-700 gl-ml-2')
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new(**component_params) do |c|
|
|
= c.body do
|
|
%span
|
|
.d-flex.align-items-center
|
|
= sprite_icon('users', size: 16, css_class: 'gl-text-gray-700')
|
|
%h3.gl-m-0.gl-ml-3= approximate_count_with_delimiters(@counts, User)
|
|
%span.gl-outline-0.gl-ml-3{ tabindex: "0", data: { container: "body",
|
|
toggle: "popover",
|
|
placement: "top",
|
|
html: "true",
|
|
trigger: "focus",
|
|
content: s_("AdminArea|All users created in the instance, including users who are not %{billable_users_link_start}billable users%{billable_users_link_end}.").html_safe % { billable_users_link_start: billable_users_link_start, billable_users_link_end: '</a>'.html_safe },
|
|
} }
|
|
= sprite_icon('question-o', size: 16, css_class: 'gl-text-blue-600')
|
|
.gl-mt-3.text-uppercase
|
|
= s_('AdminArea|Users')
|
|
= link_to(s_('AdminArea|Users statistics'), admin_dashboard_stats_path, class: "text-capitalize gl-ml-2")
|
|
= link_to(s_('AdminArea|New user'), new_admin_user_path, class: "btn gl-button btn-default")
|
|
= c.footer do
|
|
.d-flex.align-items-center
|
|
= link_to(s_('AdminArea|View latest users'), admin_users_path)
|
|
= sprite_icon('chevron-right', size: 12, css_class: 'gl-text-gray-700 gl-ml-2')
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new(**component_params) do |c|
|
|
= c.body do
|
|
%span
|
|
.d-flex.align-items-center
|
|
= sprite_icon('group', size: 16, css_class: 'gl-text-gray-700')
|
|
%h3.gl-m-0.gl-ml-3= approximate_count_with_delimiters(@counts, Group)
|
|
.gl-mt-3.text-uppercase= s_('AdminArea|Groups')
|
|
= link_to(s_('AdminArea|New group'), new_admin_group_path, class: "btn gl-button btn-default")
|
|
= c.footer do
|
|
.d-flex.align-items-center
|
|
= link_to(s_('AdminArea|View latest groups'), admin_groups_path)
|
|
= sprite_icon('chevron-right', size: 12, css_class: 'gl-text-gray-700 gl-ml-2')
|
|
.row
|
|
.col-md-4.gl-mb-6
|
|
#js-admin-statistics-container
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new do |c|
|
|
= c.body do
|
|
%h4= s_('AdminArea|Features')
|
|
= feature_entry(_('Sign up'),
|
|
href: general_admin_application_settings_path(anchor: 'js-signup-settings'),
|
|
enabled: allow_signup?)
|
|
|
|
= feature_entry(_('LDAP'),
|
|
enabled: Gitlab.config.ldap.enabled,
|
|
doc_href: help_page_path('administration/auth/ldap/index.md'))
|
|
|
|
= feature_entry(_('Gravatar'),
|
|
href: general_admin_application_settings_path(anchor: 'js-account-settings'),
|
|
enabled: gravatar_enabled?)
|
|
|
|
= feature_entry(_('OmniAuth'),
|
|
href: general_admin_application_settings_path(anchor: 'js-signin-settings'),
|
|
enabled: Gitlab::Auth.omniauth_enabled?,
|
|
doc_href: help_page_path('integration/omniauth'))
|
|
|
|
= feature_entry(_('Reply by email'),
|
|
enabled: Gitlab::IncomingEmail.enabled?,
|
|
doc_href: help_page_path('administration/reply_by_email'))
|
|
|
|
= render_if_exists 'admin/dashboard/elastic_and_geo'
|
|
|
|
= feature_entry(_('Container Registry'),
|
|
href: ci_cd_admin_application_settings_path(anchor: 'js-registry-settings'),
|
|
enabled: Gitlab.config.registry.enabled,
|
|
doc_href: help_page_path('user/packages/container_registry/index'))
|
|
|
|
= feature_entry(_('GitLab Pages'),
|
|
enabled: Gitlab.config.pages.enabled,
|
|
doc_href: help_instance_configuration_url)
|
|
|
|
= feature_entry(_('Shared Runners'),
|
|
href: admin_runners_path,
|
|
enabled: Gitlab.config.gitlab_ci.shared_runners_enabled)
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new do |c|
|
|
= c.body do
|
|
%h4
|
|
= s_('AdminArea|Components')
|
|
- if show_version_check?
|
|
.float-right
|
|
.js-gitlab-version-check{ data: { "size": "lg" } }
|
|
= link_to(sprite_icon('question'), "https://gitlab.com/gitlab-org/gitlab/-/blob/master/CHANGELOG.md", class: 'gl-ml-2', target: '_blank', rel: 'noopener noreferrer')
|
|
%p
|
|
= link_to _('GitLab'), general_admin_application_settings_path
|
|
%span.float-right
|
|
= link_to_version
|
|
%p
|
|
= _('GitLab Shell')
|
|
%span.float-right
|
|
= Gitlab::Shell.version
|
|
%p
|
|
= _('GitLab Workhorse')
|
|
%span.float-right
|
|
= gitlab_workhorse_version
|
|
%p
|
|
= _('GitLab API')
|
|
%span.float-right
|
|
= API::API::version
|
|
- if Gitlab.config.pages.enabled
|
|
%p
|
|
= _('GitLab Pages')
|
|
%span.float-right
|
|
= Gitlab::Pages::VERSION
|
|
- if Gitlab::Kas.enabled?
|
|
%p
|
|
= _('GitLab KAS')
|
|
%span.gl-float-right
|
|
= Gitlab::Kas.version
|
|
|
|
= render_if_exists 'admin/dashboard/geo'
|
|
|
|
%p
|
|
= _('Ruby')
|
|
%span.float-right
|
|
#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
|
|
%p
|
|
= _('Rails')
|
|
%span.float-right
|
|
#{Rails::VERSION::STRING}
|
|
%p
|
|
= ApplicationRecord.database.human_adapter_name
|
|
%span.float-right
|
|
= ApplicationRecord.database.version
|
|
%p
|
|
= _('Redis')
|
|
%span.float-right
|
|
= @redis_versions&.join(", ")
|
|
%p
|
|
= link_to _("Gitaly Servers"), admin_gitaly_servers_path
|
|
.row
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new do |c|
|
|
= c.body do
|
|
%h4= s_('AdminArea|Latest projects')
|
|
- @projects.each do |project|
|
|
.gl-display-flex.gl-py-3
|
|
.gl-mr-auto.gl-overflow-hidden.gl-text-overflow-ellipsis
|
|
= link_to project.full_name, admin_project_path(project)
|
|
%span.gl-white-space-nowrap.gl-text-right
|
|
#{time_ago_with_tooltip(project.created_at)}
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new do |c|
|
|
= c.body do
|
|
%h4= s_('AdminArea|Latest users')
|
|
- @users.each do |user|
|
|
.gl-display-flex.gl-py-3
|
|
.gl-mr-auto.gl-overflow-hidden.gl-text-overflow-ellipsis
|
|
= link_to [:admin, user] do
|
|
= user.name
|
|
%span.gl-white-space-nowrap.gl-text-right
|
|
#{time_ago_with_tooltip(user.created_at)}
|
|
.col-md-4.gl-mb-6
|
|
= render Pajamas::CardComponent.new do |c|
|
|
= c.body do
|
|
%h4= s_('AdminArea|Latest groups')
|
|
- @groups.each do |group|
|
|
.gl-display-flex.gl-py-3
|
|
.gl-mr-auto.gl-overflow-hidden.gl-text-overflow-ellipsis
|
|
= link_to [:admin, group] do
|
|
= group.full_name
|
|
%span.gl-white-space-nowrap.gl-text-right
|
|
#{time_ago_with_tooltip(group.created_at)}
|