diff options
author | Illya Klymov <xanf@xanf.me> | 2019-04-19 12:44:21 +0300 |
---|---|---|
committer | Illya Klymov <xanf@xanf.me> | 2019-07-24 07:33:08 +0300 |
commit | a6ac0a2765f07348f618076b8e550e29c9675b77 (patch) | |
tree | c676b9deb087388c6cb234e00a2b4a3b7308d286 | |
parent | c47412d48369c5e2becb2a7ce786aac73d0b325c (diff) |
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
-rw-r--r-- | app/helpers/dashboard_helper.rb | 15 | ||||
-rw-r--r-- | app/views/admin/dashboard/index.html.haml | 53 | ||||
-rw-r--r-- | changelogs/unreleased/ce-xanf-add-links-to-admin-area.yml | 5 | ||||
-rw-r--r-- | locale/gitlab.pot | 18 | ||||
-rw-r--r-- | spec/helpers/dashboard_helper_spec.rb | 37 |
5 files changed, 85 insertions, 43 deletions
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 <a href=\"%{url}\"/>Kubernetes Clusters</a> 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('<p aria-label="Demo: status on">') + expect(entry).to include('<a href="demo.link">Demo</a>') + 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('<p aria-label="Demo: status on">') + expect(entry).to include('<a href="demo.link">Demo</a>') + end + + it 'returns text if href is not provided' do + entry = feature_entry('Demo', enabled: true) + + expect(entry).to include('<p aria-label="Demo: status on">') + expect(entry).not_to match(/<a[^>]+>/) + 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('<p aria-label="Demo: status off">') + expect(entry).not_to match(/<a[^>]+>/) + expect(entry).to include('Demo') + end + end + end + describe '.has_start_trial?' do subject { helper.has_start_trial? } |