Resolve "Add Xcode Button in UI"
This commit is contained in:
parent
7eb2f184e6
commit
bc59fc3719
|
@ -238,6 +238,14 @@ module ProjectsHelper
|
|||
"git push --set-upstream #{repository_url}/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)"
|
||||
end
|
||||
|
||||
def show_xcode_link?(project = @project)
|
||||
browser.platform.mac? && project.repository.xcode_project?
|
||||
end
|
||||
|
||||
def xcode_uri_to_repo(project = @project)
|
||||
"xcode://clone?repo=#{CGI.escape(default_url_to_repo(project))}"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def get_project_nav_tabs(project, current_user)
|
||||
|
|
|
@ -42,6 +42,10 @@
|
|||
.project-clone-holder
|
||||
= render "shared/clone_panel"
|
||||
|
||||
- if show_xcode_link?(@project)
|
||||
.project-action-button.project-xcode.inline
|
||||
= render "projects/buttons/xcode_link"
|
||||
|
||||
- if current_user
|
||||
- if can?(current_user, :download_code, @project)
|
||||
= render 'projects/buttons/download', project: @project, ref: @ref
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
%a.btn.btn-default{ href: xcode_uri_to_repo(@project) }
|
||||
= _("Open in Xcode")
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add Open in Xcode link for xcode repositories
|
||||
merge_request:
|
||||
author:
|
||||
type: added
|
|
@ -435,4 +435,46 @@ describe ProjectsHelper do
|
|||
expect(helper.send(:git_user_name)).to eq('John \"A\" Doe53')
|
||||
end
|
||||
end
|
||||
|
||||
describe 'show_xcode_link' do
|
||||
let!(:project) { create(:project) }
|
||||
let(:mac_ua) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' }
|
||||
let(:ios_ua) { 'Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' }
|
||||
|
||||
context 'when the repository is xcode compatible' do
|
||||
before do
|
||||
allow(project.repository).to receive(:xcode_project?).and_return(true)
|
||||
end
|
||||
|
||||
it 'returns false if the visitor is not using macos' do
|
||||
allow(helper).to receive(:browser).and_return(Browser.new(ios_ua))
|
||||
|
||||
expect(helper.show_xcode_link?(project)).to eq(false)
|
||||
end
|
||||
|
||||
it 'returns true if the visitor is using macos' do
|
||||
allow(helper).to receive(:browser).and_return(Browser.new(mac_ua))
|
||||
|
||||
expect(helper.show_xcode_link?(project)).to eq(true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the repository is not xcode compatible' do
|
||||
before do
|
||||
allow(project.repository).to receive(:xcode_project?).and_return(false)
|
||||
end
|
||||
|
||||
it 'returns false if the visitor is not using macos' do
|
||||
allow(helper).to receive(:browser).and_return(Browser.new(ios_ua))
|
||||
|
||||
expect(helper.show_xcode_link?(project)).to eq(false)
|
||||
end
|
||||
|
||||
it 'returns false if the visitor is using macos' do
|
||||
allow(helper).to receive(:browser).and_return(Browser.new(mac_ua))
|
||||
|
||||
expect(helper.show_xcode_link?(project)).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue