From a6ac0a2765f07348f618076b8e550e29c9675b77 Mon Sep 17 00:00:00 2001 From: Illya Klymov Date: Fri, 19 Apr 2019 12:44:21 +0300 Subject: Add links in admin area overview Introduces new `feature_entry` helper for dashboard. This helper reduces code duplication when listing available features and relevant links to configuration sections --- app/helpers/dashboard_helper.rb | 15 ++++++ app/views/admin/dashboard/index.html.haml | 53 ++++------------------ .../unreleased/ce-xanf-add-links-to-admin-area.yml | 5 ++ locale/gitlab.pot | 18 ++++++++ spec/helpers/dashboard_helper_spec.rb | 37 +++++++++++++++ 5 files changed, 85 insertions(+), 43 deletions(-) create mode 100644 changelogs/unreleased/ce-xanf-add-links-to-admin-area.yml diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 42732eb93dd..d71af08a656 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true module DashboardHelper + include IconsHelper + def assigned_issues_dashboard_path issues_dashboard_path(assignee_username: current_user.username) end @@ -25,6 +27,19 @@ module DashboardHelper false end + def feature_entry(title, href: nil, enabled: true) + enabled_text = enabled ? 'on' : 'off' + label = "#{title}: status #{enabled_text}" + link_or_title = href && enabled ? tag.a(title, href: href) : title + + tag.p(aria: { label: label }) do + concat(link_or_title) + concat(tag.span(class: ['light', 'float-right']) do + concat(boolean_to_icon(enabled)) + end) + end + end + private def get_dashboard_nav_links diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index 581f6ae0714..c29ecb43fe6 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -76,51 +76,17 @@ .info-well .well-segment.admin-well.admin-well-features %h4 Features - - sign_up = "Sign up" - %p{ "aria-label" => "#{sign_up}: status " + (allow_signup? ? "on" : "off") } - = sign_up - %span.light.float-right - = boolean_to_icon allow_signup? - - ldap = "LDAP" - %p{ "aria-label" => "#{ldap}: status " + (Gitlab.config.ldap.enabled ? "on" : "off") } - = ldap - %span.light.float-right - = boolean_to_icon Gitlab.config.ldap.enabled - - gravatar = "Gravatar" - %p{ "aria-label" => "#{gravatar}: status " + (gravatar_enabled? ? "on" : "off") } - = gravatar - %span.light.float-right - = boolean_to_icon gravatar_enabled? - - omniauth = "OmniAuth" - %p{ "aria-label" => "#{omniauth}: status " + (Gitlab::Auth.omniauth_enabled? ? "on" : "off") } - = omniauth - %span.light.float-right - = boolean_to_icon Gitlab::Auth.omniauth_enabled? - - reply_email = "Reply by email" - %p{ "aria-label" => "#{reply_email}: status " + (Gitlab::IncomingEmail.enabled? ? "on" : "off") } - = reply_email - %span.light.float-right - = boolean_to_icon Gitlab::IncomingEmail.enabled? + = feature_entry(_('Sign up'), href: admin_application_settings_path(anchor: 'js-signup-settings')) + = feature_entry(_('LDAP'), enabled: Gitlab.config.ldap.enabled) + = feature_entry(_('Gravatar'), href: admin_application_settings_path(anchor: 'js-account-settings'), enabled: gravatar_enabled?) + = feature_entry(_('OmniAuth'), href: admin_application_settings_path(anchor: 'js-signin-settings'), enabled: Gitlab::Auth.omniauth_enabled?) + = feature_entry(_('Reply by email'), enabled: Gitlab::IncomingEmail.enabled?) = render_if_exists 'admin/dashboard/elastic_and_geo' - - container_reg = "Container Registry" - %p{ "aria-label" => "#{container_reg}: status " + (Gitlab.config.registry.enabled ? "on" : "off") } - = container_reg - %span.light.float-right - = boolean_to_icon Gitlab.config.registry.enabled - - gitlab_pages = 'GitLab Pages' - - gitlab_pages_enabled = Gitlab.config.pages.enabled - %p{ "aria-label" => "#{gitlab_pages}: status " + (gitlab_pages_enabled ? "on" : "off") } - = gitlab_pages - %span.light.float-right - = boolean_to_icon gitlab_pages_enabled - - gitlab_shared_runners = 'Shared Runners' - - gitlab_shared_runners_enabled = Gitlab.config.gitlab_ci.shared_runners_enabled - %p{ "aria-label" => "#{gitlab_shared_runners}: status " + (gitlab_shared_runners_enabled ? "on" : "off") } - = gitlab_shared_runners - %span.light.float-right - = boolean_to_icon gitlab_shared_runners_enabled + = feature_entry(_('Container Registry'), href: ci_cd_admin_application_settings_path(anchor: 'js-registry-settings'), enabled: Gitlab.config.registry.enabled) + = feature_entry(_('Gitlab Pages'), href: help_instance_configuration_url, enabled: Gitlab.config.pages.enabled) + = feature_entry(_('Shared Runners'), href: admin_runners_path, enabled: Gitlab.config.gitlab_ci.shared_runners_enabled) .col-md-4 .info-well .well-segment.admin-well @@ -130,7 +96,8 @@ .float-right = version_status_badge %p - GitLab + %a{ href: admin_application_settings_path } + GitLab %span.float-right = Gitlab::VERSION = "(#{Gitlab.revision})" diff --git a/changelogs/unreleased/ce-xanf-add-links-to-admin-area.yml b/changelogs/unreleased/ce-xanf-add-links-to-admin-area.yml new file mode 100644 index 00000000000..9eb692c948b --- /dev/null +++ b/changelogs/unreleased/ce-xanf-add-links-to-admin-area.yml @@ -0,0 +1,5 @@ +--- +title: Add links to relevant configuration areas in admin area overview +merge_request: 29306 +author: +type: added diff --git a/locale/gitlab.pot b/locale/gitlab.pot index df53015390c..833c8c9fe11 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -4971,6 +4971,9 @@ msgstr "" msgid "Gitea Import" msgstr "" +msgid "Gitlab Pages" +msgstr "" + msgid "Given access %{time_ago}" msgstr "" @@ -5031,6 +5034,9 @@ msgstr "" msgid "Graph" msgstr "" +msgid "Gravatar" +msgstr "" + msgid "Gravatar enabled" msgstr "" @@ -5963,6 +5969,9 @@ msgstr "" msgid "Kubernetes service integration has been disabled. Fields on this page are not used by GitLab, you can configure your Kubernetes clusters using the new Kubernetes Clusters page" msgstr "" +msgid "LDAP" +msgstr "" + msgid "LFS" msgstr "" @@ -7154,6 +7163,9 @@ msgstr "" msgid "OfSearchInADropdown|Filter" msgstr "" +msgid "OmniAuth" +msgstr "" + msgid "Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source." msgstr "" @@ -8898,6 +8910,9 @@ msgstr "" msgid "Replace all label(s)" msgstr "" +msgid "Reply by email" +msgstr "" + msgid "Reply to comment" msgstr "" @@ -9706,6 +9721,9 @@ msgstr "" msgid "Sign out" msgstr "" +msgid "Sign up" +msgstr "" + msgid "Sign-in restrictions" msgstr "" diff --git a/spec/helpers/dashboard_helper_spec.rb b/spec/helpers/dashboard_helper_spec.rb index 023238ee0ae..49e23366355 100644 --- a/spec/helpers/dashboard_helper_spec.rb +++ b/spec/helpers/dashboard_helper_spec.rb @@ -22,6 +22,43 @@ describe DashboardHelper do end end + describe '#feature_entry' do + context 'when implicitly enabled' do + it 'considers feature enabled by default' do + entry = feature_entry('Demo', href: 'demo.link') + + expect(entry).to include('

') + expect(entry).to include('Demo') + end + end + + context 'when explicitly enabled' do + it 'returns a link' do + entry = feature_entry('Demo', href: 'demo.link', enabled: true) + + expect(entry).to include('

') + expect(entry).to include('Demo') + end + + it 'returns text if href is not provided' do + entry = feature_entry('Demo', enabled: true) + + expect(entry).to include('

') + expect(entry).not_to match(/]+>/) + end + end + + context 'when disabled' do + it 'returns text without link' do + entry = feature_entry('Demo', href: 'demo.link', enabled: false) + + expect(entry).to include('

') + expect(entry).not_to match(/]+>/) + expect(entry).to include('Demo') + end + end + end + describe '.has_start_trial?' do subject { helper.has_start_trial? } -- cgit v1.2.1