diff options
author | Stan Hu <stanhu@gmail.com> | 2018-12-24 07:58:24 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-12-24 08:02:19 +0300 |
commit | 4a8b4d8a515152a2dfd1eb9d400222d5c2892fff (patch) | |
tree | 6c8a91c0142ae11e6cd8e20a73805518dbdb8e2a /app | |
parent | 751217987b0782115140e4c2858d91a4b596463a (diff) |
Fix missing Git clone button when protocol restriction setting enabled
If Git clones are restricted to either HTTP or SSH-only in the
application settings, the clone button would not show. The refactoring
in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/22196 broke
this.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/55676
Diffstat (limited to 'app')
-rw-r--r-- | app/helpers/application_settings_helper.rb | 12 | ||||
-rw-r--r-- | app/views/projects/buttons/_clone.html.haml | 33 |
2 files changed, 27 insertions, 18 deletions
diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb index 72731d969a2..5a7c005fd06 100644 --- a/app/helpers/application_settings_helper.rb +++ b/app/helpers/application_settings_helper.rb @@ -26,6 +26,18 @@ module ApplicationSettingsHelper end end + def all_protocols_enabled? + Gitlab::CurrentSettings.enabled_git_access_protocol.blank? + end + + def ssh_enabled? + all_protocols_enabled? || enabled_protocol == 'ssh' + end + + def http_enabled? + all_protocols_enabled? || enabled_protocol == 'http' + end + def enabled_project_button(project, protocol) case protocol when 'ssh' diff --git a/app/views/projects/buttons/_clone.html.haml b/app/views/projects/buttons/_clone.html.haml index d453a3a9dac..53d427ec40a 100644 --- a/app/views/projects/buttons/_clone.html.haml +++ b/app/views/projects/buttons/_clone.html.haml @@ -1,25 +1,22 @@ - project = project || @project .git-clone-holder.js-git-clone-holder.input-group - - if allowed_protocols_present? - .input-group-text.clone-dropdown-btn.btn - %span.js-clone-dropdown-label - = enabled_project_button(project, enabled_protocol) - - else - %a#clone-dropdown.input-group-text.btn.btn-primary.btn-xs.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } } - %span.append-right-4.js-clone-dropdown-label - = _('Clone') - = sprite_icon("arrow-down", css_class: "icon") + %a#clone-dropdown.input-group-text.btn.btn-primary.btn-xs.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } } + %span.append-right-4.js-clone-dropdown-label + = _('Clone') + = sprite_icon("arrow-down", css_class: "icon") %form.p-3.dropdown-menu.dropdown-menu-right.dropdown-menu-large.dropdown-menu-selectable.clone-options-dropdown.qa-clone-options - %li.pb-2 - %label.label-bold - = _('Clone with SSH') - .input-group - = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control qa-ssh-clone-url", readonly: true, aria: { label: 'Project clone URL' } - .input-group-append - = clipboard_button(target: '#ssh_project_clone', title: _("Copy URL to clipboard"), class: "input-group-text btn-default btn-clipboard") - = render_if_exists 'projects/buttons/geo' - %li + - if ssh_enabled? + %li.pb-2 + %label.label-bold + = _('Clone with SSH') + .input-group + = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control qa-ssh-clone-url", readonly: true, aria: { label: 'Project clone URL' } + .input-group-append + = clipboard_button(target: '#ssh_project_clone', title: _("Copy URL to clipboard"), class: "input-group-text btn-default btn-clipboard") + = render_if_exists 'projects/buttons/geo' + %li + - if http_enabled? %label.label-bold = _('Clone with %{http_label}') % { http_label: gitlab_config.protocol.upcase } .input-group |