From f52bd2bcc0b144897181238283e177a821368a88 Mon Sep 17 00:00:00 2001 From: hikaruworld Date: Sun, 10 Aug 2014 12:48:05 +0900 Subject: [PATCH 1/4] support Desktop in Clone --- src/main/scala/app/ControllerBase.scala | 5 +++++ src/main/scala/service/RepositoryService.scala | 6 ++++++ src/main/twirl/menu.scala.html | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index c31b90f7e..964d3e655 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -145,6 +145,11 @@ case class Context(settings: SystemSettingsService.SystemSettings, loginAccount: 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 8e204a867..6033a1fa3 100644 --- a/src/main/scala/service/RepositoryService.scala +++ b/src/main/scala/service/RepositoryService.scala @@ -329,6 +329,12 @@ object RepositoryService { 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 8076c825c..233f4deaa 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 @@ $(function(){ $('#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()); }); } From 7b37d6b571aaa55b32d8dc828d3e7ec681eedb3d Mon Sep 17 00:00:00 2001 From: hikaruworld Date: Wed, 13 Aug 2014 17:08:46 +0900 Subject: [PATCH 2/4] Change to `platform` `userAgent`. --- src/main/scala/app/ControllerBase.scala | 2 +- src/main/scala/service/RepositoryService.scala | 6 +++--- src/main/twirl/menu.scala.html | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index 964d3e655..b86872341 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -145,7 +145,7 @@ case class Context(settings: SystemSettingsService.SystemSettings, loginAccount: 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 { + val platform = 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" diff --git a/src/main/scala/service/RepositoryService.scala b/src/main/scala/service/RepositoryService.scala index 6033a1fa3..4b1d40798 100644 --- a/src/main/scala/service/RepositoryService.scala +++ b/src/main/scala/service/RepositoryService.scala @@ -329,11 +329,11 @@ object RepositoryService { 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 sshOpenRepoUrl(platform: String, port: Int, userName: String) = openRepoUrl(platform, sshUrl(port, userName)) - def httpOpenRepoUrl(userAgent: String) = openRepoUrl(userAgent, httpUrl) + def httpOpenRepoUrl(platform: String) = openRepoUrl(platform, httpUrl) - def openRepoUrl(userAgent: String, openUrl: String) = s"github-${userAgent}://openRepo/${openUrl}" + def openRepoUrl(platform: String, openUrl: String) = s"github-${platform}://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 233f4deaa..27a56c180 100644 --- a/src/main/twirl/menu.scala.html +++ b/src/main/twirl/menu.scala.html @@ -84,9 +84,9 @@ } @id.map { id => - @if(context.userAgent != "linux"){ + @if(context.platform != "linux"){
- Clone in Desktop + Clone in Desktop
}
@@ -180,14 +180,14 @@ $(function(){ $('#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-clone-url').attr('href', '@repository.httpOpenRepoUrl(context.platform)') $('#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-clone-url').attr('href', '@repository.sshOpenRepoUrl(context.platform, settings.sshPort.getOrElse(service.SystemSettingsService.DefaultSshPort), loginAccount.get.userName)'); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); }); } From 08eb21844a4ef0280df86f4a401f837c1d37ed9d Mon Sep 17 00:00:00 2001 From: hikaruworld Date: Wed, 13 Aug 2014 17:16:34 +0900 Subject: [PATCH 3/4] Check the null value of UserAgent --- src/main/scala/app/ControllerBase.scala | 2 ++ src/main/twirl/menu.scala.html | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index b86872341..1f8c1273a 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -146,9 +146,11 @@ case class Context(settings: SystemSettingsService.SystemSettings, loginAccount: val baseUrl = settings.baseUrl(request) val host = new java.net.URL(baseUrl).getHost val platform = request.getHeader("User-Agent") match { + case null => null case agent if agent.contains("Mac") => "mac" case agent if agent.contains("Linux") => "linux" case agent if agent.contains("Win") => "windows" + case _ => null } /** diff --git a/src/main/twirl/menu.scala.html b/src/main/twirl/menu.scala.html index 27a56c180..33d1b7105 100644 --- a/src/main/twirl/menu.scala.html +++ b/src/main/twirl/menu.scala.html @@ -84,7 +84,7 @@
} @id.map { id => - @if(context.platform != "linux"){ + @if(context.platform != "linux" || context.platform != null){
Clone in Desktop
From 70c386a9348075da593bd903071fe2a9a11f91d6 Mon Sep 17 00:00:00 2001 From: hikaruworld Date: Wed, 13 Aug 2014 21:28:27 +0900 Subject: [PATCH 4/4] Disable icone platform is `linux` && `null` --- src/main/twirl/menu.scala.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/twirl/menu.scala.html b/src/main/twirl/menu.scala.html index 33d1b7105..9ea01bdfc 100644 --- a/src/main/twirl/menu.scala.html +++ b/src/main/twirl/menu.scala.html @@ -84,7 +84,7 @@ } @id.map { id => - @if(context.platform != "linux" || context.platform != null){ + @if(context.platform != "linux" && context.platform != null){
Clone in Desktop