diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index c31b90f..964d3e6 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -145,6 +145,11 @@ val currentPath = request.getRequestURI.substring(request.getContextPath.length) val baseUrl = settings.baseUrl(request) val host = new java.net.URL(baseUrl).getHost + val userAgent = request.getHeader("User-Agent") match { + case agent if agent.contains("Mac") => "mac" + case agent if agent.contains("Linux") => "linux" + case agent if agent.contains("Win") => "windows" + } /** * Get object from cache. diff --git a/src/main/scala/service/RepositoryService.scala b/src/main/scala/service/RepositoryService.scala index 8e204a8..6033a1f 100644 --- a/src/main/scala/service/RepositoryService.scala +++ b/src/main/scala/service/RepositoryService.scala @@ -329,6 +329,12 @@ def sshUrl(port: Int, userName: String) = s"ssh://${userName}@${host}:${port}/${owner}/${name}.git" + def sshOpenRepoUrl(userAgent: String, port: Int, userName: String) = openRepoUrl(userAgent, sshUrl(port, userName)) + + def httpOpenRepoUrl(userAgent: String) = openRepoUrl(userAgent, httpUrl) + + def openRepoUrl(userAgent: String, openUrl: String) = s"github-${userAgent}://openRepo/${openUrl}" + /** * Creates instance with issue count and pull request count. */ diff --git a/src/main/twirl/menu.scala.html b/src/main/twirl/menu.scala.html index 8076c82..233f4de 100644 --- a/src/main/twirl/menu.scala.html +++ b/src/main/twirl/menu.scala.html @@ -84,6 +84,11 @@ } @id.map { id => + @if(context.userAgent != "linux"){ +
+ Clone in Desktop +
+ }
Download ZIP
@@ -175,12 +180,14 @@ $('#repository-url-http').click(function(){ $('#repository-url-proto').text('HTTP'); $('#repository-url').val('@repository.httpUrl'); + $('#repository-clone-url').attr('href', '@repository.httpOpenRepoUrl(context.userAgent)') $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); }); $('#repository-url-ssh').click(function(){ $('#repository-url-proto').text('SSH'); $('#repository-url').val('@repository.sshUrl(settings.sshPort.getOrElse(service.SystemSettingsService.DefaultSshPort), loginAccount.get.userName)'); + $('#repository-clone-url').attr('href', '@repository.sshOpenRepoUrl(context.userAgent, settings.sshPort.getOrElse(service.SystemSettingsService.DefaultSshPort), loginAccount.get.userName)'); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); }); }