(refs #1084)Remove RepositoryUrls

This commit is contained in:
Naoki Takezoe
2016-02-13 01:50:25 +09:00
parent 8145cba111
commit 5b87efa032
11 changed files with 65 additions and 75 deletions

View File

@@ -3,7 +3,6 @@ package gitbucket.core.controller
import gitbucket.core.api.ApiError import gitbucket.core.api.ApiError
import gitbucket.core.model.Account import gitbucket.core.model.Account
import gitbucket.core.service.{AccountService, SystemSettingsService} import gitbucket.core.service.{AccountService, SystemSettingsService}
import gitbucket.core.service.RepositoryService.{RepositoryInfo, RepositoryUrls}
import gitbucket.core.util.ControlUtil._ import gitbucket.core.util.ControlUtil._
import gitbucket.core.util.Directory._ import gitbucket.core.util.Directory._
import gitbucket.core.util.Implicits._ import gitbucket.core.util.Implicits._
@@ -185,8 +184,6 @@ case class Context(settings: SystemSettingsService.SystemSettings, loginAccount:
val currentPath = request.getRequestURI.substring(request.getContextPath.length) val currentPath = request.getRequestURI.substring(request.getContextPath.length)
val baseUrl = settings.baseUrl(request) val baseUrl = settings.baseUrl(request)
val host = new java.net.URL(baseUrl).getHost val host = new java.net.URL(baseUrl).getHost
val urls = (repositoryInfo:RepositoryInfo) => new RepositoryUrls(baseUrl, settings.sshAddress, repositoryInfo.owner, repositoryInfo.name)
val wikiUrls = (repositoryInfo:RepositoryInfo) => new RepositoryUrls(baseUrl, settings.sshAddress, repositoryInfo.owner, repositoryInfo.name + ".wiki")
val platform = request.getHeader("User-Agent") match { val platform = request.getHeader("User-Agent") match {
case null => null case null => null
case agent if agent.contains("Mac") => "mac" case agent if agent.contains("Mac") => "mac"

View File

@@ -1,6 +1,6 @@
package gitbucket.core.service package gitbucket.core.service
import gitbucket.core.service.SystemSettingsService.SshAddress import gitbucket.core.controller.Context
import gitbucket.core.model.{Collaborator, Repository, Account} import gitbucket.core.model.{Collaborator, Repository, Account}
import gitbucket.core.model.Profile._ import gitbucket.core.model.Profile._
import gitbucket.core.util.JGitUtil import gitbucket.core.util.JGitUtil
@@ -398,8 +398,8 @@ object RepositoryService {
def this(repo: JGitUtil.RepositoryInfo, model: Repository, issueCount: Int, pullCount: Int, forkedCount: Int, managers: Seq[String]) = def this(repo: JGitUtil.RepositoryInfo, model: Repository, issueCount: Int, pullCount: Int, forkedCount: Int, managers: Seq[String]) =
this( this(
repo.owner, repo.name, model, repo.owner, repo.name, model,
issueCount, pullCount, issueCount, pullCount, repo.commitCount, forkedCount,
repo.commitCount, forkedCount, repo.branchList, repo.tags, managers) repo.branchList, repo.tags, managers)
/** /**
* Creates instance without issue count and pull request count. * Creates instance without issue count and pull request count.
@@ -407,27 +407,20 @@ object RepositoryService {
def this(repo: JGitUtil.RepositoryInfo, model: Repository, forkedCount: Int, managers: Seq[String]) = def this(repo: JGitUtil.RepositoryInfo, model: Repository, forkedCount: Int, managers: Seq[String]) =
this( this(
repo.owner, repo.name, model, repo.owner, repo.name, model,
0, 0, 0, 0, repo.commitCount, forkedCount,
repo.commitCount, forkedCount, repo.branchList, repo.tags, managers) repo.branchList, repo.tags, managers)
def httpUrl(implicit context: Context): String = RepositoryService.httpUrl(owner, name)
def sshUrl(implicit context: Context): Option[String] = RepositoryService.sshUrl(owner, name)
} }
final class RepositoryUrls(baseUrl:String, sshAddress:Option[SshAddress], owner:String, name:String) { def httpUrl(owner: String, name: String)(implicit context: Context): String = s"${context.baseUrl}/git/${owner}/${name}.git"
def httpUrl:String = def sshUrl(owner: String, name: String)(implicit context: Context): Option[String] =
s"${baseUrl}/git/${owner}/${name}.git" if(context.settings.ssh){
context.loginAccount.flatMap { loginAccount =>
// BETTER make this return an Option and use it in the gui context.settings.sshAddress.map { x => s"ssh://${loginAccount.userName}@${x.host}:${x.port}/${owner}/${name}.git" }
def sshUrl(userName: String):String =
sshAddress.fold("")(adr => s"ssh://${userName}@${adr.host}:${adr.port}/${owner}/${name}.git")
def sshOpenRepoUrl(platform: String, userName: String) =
openRepoUrl(platform, sshUrl(userName))
def httpOpenRepoUrl(platform: String) =
openRepoUrl(platform, httpUrl)
private def openRepoUrl(platform: String, openUrl: String) =
s"github-${platform}://openRepo/${openUrl}"
} }
} else None
def openRepoUrl(openUrl: String)(implicit context: Context): String = s"github-${context.platform}://openRepo/${openUrl}"
case class RepositoryTreeNode(owner: String, name: String, children: List[RepositoryTreeNode])
} }

View File

@@ -139,8 +139,7 @@ object SystemSettingsService {
def sshAddress:Option[SshAddress] = def sshAddress:Option[SshAddress] =
for { for {
host <- sshHost host <- sshHost if ssh
if ssh
} }
yield SshAddress(host, sshPort.getOrElse(DefaultSshPort)) yield SshAddress(host, sshPort.getOrElse(DefaultSshPort))
} }
@@ -228,7 +227,4 @@ object SystemSettingsService {
else value else value
} }
// // TODO temporary flag
// val enablePluginSystem = Option(System.getProperty("enable.plugin")).getOrElse("false").toBoolean
} }

View File

@@ -1,8 +1,9 @@
package gitbucket.core.service package gitbucket.core.service
import java.util.Date import java.util.Date
import gitbucket.core.service.SystemSettingsService.SshAddress import gitbucket.core.controller.Context
import gitbucket.core.model.Account import gitbucket.core.model.Account
import gitbucket.core.service.RepositoryService.RepositoryInfo
import gitbucket.core.util._ import gitbucket.core.util._
import gitbucket.core.util.ControlUtil._ import gitbucket.core.util.ControlUtil._
import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.Git
@@ -14,8 +15,6 @@ import java.io.ByteArrayInputStream
import org.eclipse.jgit.patch._ import org.eclipse.jgit.patch._
import org.eclipse.jgit.api.errors.PatchFormatException import org.eclipse.jgit.api.errors.PatchFormatException
import scala.collection.JavaConverters._ import scala.collection.JavaConverters._
import RepositoryService.RepositoryInfo
import RepositoryService.RepositoryUrls
object WikiService { object WikiService {
@@ -39,6 +38,14 @@ object WikiService {
* @param date the commit date * @param date the commit date
*/ */
case class WikiPageHistoryInfo(name: String, committer: String, message: String, date: Date) case class WikiPageHistoryInfo(name: String, committer: String, message: String, date: Date)
def wikiHttpUrl(repositoryInfo: RepositoryInfo)(implicit context: Context): String
= RepositoryService.httpUrl(repositoryInfo.owner, repositoryInfo.name + ".wiki")
def wikiSshUrl(repositoryInfo: RepositoryInfo)(implicit context: Context): Option[String]
= RepositoryService.sshUrl(repositoryInfo.owner, repositoryInfo.name + ".wiki")
} }
trait WikiService { trait WikiService {

View File

@@ -60,8 +60,6 @@ object Markdown {
pages: List[String]) pages: List[String])
(implicit val context: Context) extends Renderer(options) with LinkConverter with RequestCache { (implicit val context: Context) extends Renderer(options) with LinkConverter with RequestCache {
private val repositoryUrls = context.urls(repository)
override def heading(text: String, level: Int, raw: String): String = { override def heading(text: String, level: Int, raw: String): String = {
val id = generateAnchorName(text) val id = generateAnchorName(text)
val out = new StringBuilder() val out = new StringBuilder()
@@ -137,7 +135,7 @@ object Markdown {
(link, link) (link, link)
} }
val url = repositoryUrls.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/wiki/" + StringUtil.urlEncode(page) val url = repository.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/wiki/" + StringUtil.urlEncode(page)
if(pages.contains(page)){ if(pages.contains(page)){
"<a href=\"" + url + "\">" + escape(label) + "</a>" "<a href=\"" + url + "\">" + escape(label) + "</a>"
} else { } else {
@@ -159,14 +157,14 @@ object Markdown {
} else if(context.currentPath.contains("/tree/")){ } else if(context.currentPath.contains("/tree/")){
val paths = context.currentPath.split("/") val paths = context.currentPath.split("/")
val branch = if(paths.length > 3) paths.drop(4).mkString("/") else repository.repository.defaultBranch val branch = if(paths.length > 3) paths.drop(4).mkString("/") else repository.repository.defaultBranch
repositoryUrls.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/blob/" + branch + "/" + url + (if(isImage) "?raw=true" else "") repository.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/blob/" + branch + "/" + url + (if(isImage) "?raw=true" else "")
} else { } else {
val paths = context.currentPath.split("/") val paths = context.currentPath.split("/")
val branch = if(paths.length > 3) paths.last else repository.repository.defaultBranch val branch = if(paths.length > 3) paths.last else repository.repository.defaultBranch
repositoryUrls.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/blob/" + branch + "/" + url + (if(isImage) "?raw=true" else "") repository.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/blob/" + branch + "/" + url + (if(isImage) "?raw=true" else "")
} }
} else { } else {
repositoryUrls.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/wiki/_blob/" + url repository.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/wiki/_blob/" + url
} }
} }

View File

@@ -128,7 +128,7 @@
</div> </div>
</div> </div>
<p class="muted"> <p class="muted">
Base URL is required if SSH access is enabled. Both of SSH host and Base URL are required if SSH access is enabled.
</p> </p>
<!--====================================================================--> <!--====================================================================-->
<!-- Authentication --> <!-- Authentication -->

View File

@@ -37,7 +37,7 @@
<script src="@assets/vendors/jquery-hotkeys/jquery.hotkeys.js"></script> <script src="@assets/vendors/jquery-hotkeys/jquery.hotkeys.js"></script>
@repository.map { repository => @repository.map { repository =>
@if(!repository.repository.isPrivate){ @if(!repository.repository.isPrivate){
<meta name="go-import" content="@context.baseUrl.replaceFirst("^https?://", "")/@repository.owner/@repository.name git @context.urls(repository).httpUrl" /> <meta name="go-import" content="@context.baseUrl.replaceFirst("^https?://", "")/@repository.owner/@repository.name git @repository.httpUrl" />
} }
} }
</head> </head>

View File

@@ -5,9 +5,9 @@
isNoGroup: Boolean = true, isNoGroup: Boolean = true,
info: Option[Any] = None, info: Option[Any] = None,
error: Option[Any] = None)(body: Html)(implicit context: gitbucket.core.controller.Context) error: Option[Any] = None)(body: Html)(implicit context: gitbucket.core.controller.Context)
@import gitbucket.core.service.SystemSettingsService
@import context._ @import context._
@import gitbucket.core.view.helpers._ @import gitbucket.core.view.helpers._
@import gitbucket.core.service.RepositoryService._
@sidemenu(path: String, name: String, icon: String, label: String, count: Int = 0) = { @sidemenu(path: String, name: String, icon: String, label: String, count: Int = 0) = {
<li @if(active == name){class="active"} @if(!expand){data-toggle="tooltip" data-placement="left" data-original-title="@label"}> <li @if(active == name){class="active"} @if(!expand){data-toggle="tooltip" data-placement="left" data-original-title="@label"}>
@@ -80,10 +80,10 @@
<div class="small"> <div class="small">
<strong id="repository-url-proto">HTTP</strong> <span class="mute">clone URL</span> <strong id="repository-url-proto">HTTP</strong> <span class="mute">clone URL</span>
</div> </div>
@helper.html.copy("repository-url-copy", context.urls(repository).httpUrl){ @helper.html.copy("repository-url-copy", repository.httpUrl){
<input type="text" value="@context.urls(repository).httpUrl" id="repository-url" class="form-control input-sm" readonly> <input type="text" value="@repository.httpUrl" id="repository-url" class="form-control input-sm" readonly>
} }
@if(settings.ssh && loginAccount.isDefined){ @if(repository.sshUrl.isDefined){
<div class="small"> <div class="small">
<span class="mute">You can clone <a href="javascript:void(0);" id="repository-url-http">HTTP</a> or <a href="javascript:void(0);" id="repository-url-ssh">SSH</a>.</span> <span class="mute">You can clone <a href="javascript:void(0);" id="repository-url-http">HTTP</a> or <a href="javascript:void(0);" id="repository-url-ssh">SSH</a>.</span>
</div> </div>
@@ -91,7 +91,7 @@
@id.map { id => @id.map { id =>
@if(context.platform != "linux" && context.platform != null){ @if(context.platform != "linux" && context.platform != null){
<div style="margin-top: 10px;"> <div style="margin-top: 10px;">
<a href="@context.urls(repository).httpOpenRepoUrl(context.platform)" id="repository-clone-url" class="btn btn-sm btn-default btn-block"><i class="octicon octicon-desktop-download"></i>&nbsp;&nbsp;Clone in Desktop</a> <a href="@openRepoUrl(repository.httpUrl)" id="repository-clone-url" class="btn btn-sm btn-default btn-block"><i class="octicon octicon-desktop-download"></i>&nbsp;&nbsp;Clone in Desktop</a>
</div> </div>
} }
<div style="margin-top: 10px;"> <div style="margin-top: 10px;">
@@ -181,18 +181,18 @@ $(function(){
}); });
} }
@if(settings.ssh && loginAccount.isDefined){ @repository.sshUrl.map { sshUrl =>
$('#repository-url-http').click(function(){ $('#repository-url-http').click(function(){
$('#repository-url-proto').text('HTTP'); $('#repository-url-proto').text('HTTP');
$('#repository-url').val('@context.urls(repository).httpUrl'); $('#repository-url').val('@repository.httpUrl');
$('#repository-clone-url').attr('href', '@context.urls(repository).httpOpenRepoUrl(context.platform)') $('#repository-clone-url').attr('href', '@openRepoUrl(repository.httpUrl)')
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
}); });
$('#repository-url-ssh').click(function(){ $('#repository-url-ssh').click(function(){
$('#repository-url-proto').text('SSH'); $('#repository-url-proto').text('SSH');
$('#repository-url').val('@context.urls(repository).sshUrl(loginAccount.get.userName)'); $('#repository-url').val('@sshUrl');
$('#repository-clone-url').attr('href', '@context.urls(repository).sshOpenRepoUrl(context.platform, loginAccount.get.userName)'); $('#repository-clone-url').attr('href', '@openRepoUrl(sshUrl)');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
}); });
} }

View File

@@ -100,21 +100,21 @@
you can perform a manual merge on the command line. you can perform a manual merge on the command line.
</p> </p>
} }
@helper.html.copy("repository-url-copy", context.urls(forkedRepository).httpUrl, true){ @helper.html.copy("repository-url-copy", forkedRepository.httpUrl, true){
<div class="btn-group" data-toggle="buttons-radio"> <div class="btn-group" data-toggle="buttons-radio">
<button class="btn btn-small active" type="button" id="repository-url-http">HTTP</button> <button class="btn btn-small active" type="button" id="repository-url-http">HTTP</button>
@if(settings.ssh && loginAccount.isDefined){ @if(settings.ssh && loginAccount.isDefined){
<button class="btn btn-small" type="button" id="repository-url-ssh" style="border-radius: 0px;">SSH</button> <button class="btn btn-small" type="button" id="repository-url-ssh" style="border-radius: 0px;">SSH</button>
} }
</div> </div>
<input type="text" style="width: 500px;" value="@context.urls(forkedRepository).httpUrl" id="repository-url" readonly /> <input type="text" style="width: 500px;" value="@forkedRepository.httpUrl" id="repository-url" readonly />
} }
<div> <div>
<p> <p>
<span class="strong">Step 1:</span> From your project repository, check out a new branch and test the changes. <span class="strong">Step 1:</span> From your project repository, check out a new branch and test the changes.
</p> </p>
@defining(s"git checkout -b ${pullreq.requestUserName}-${pullreq.requestBranch} ${pullreq.branch}\n" + @defining(s"git checkout -b ${pullreq.requestUserName}-${pullreq.requestBranch} ${pullreq.branch}\n" +
s"git pull ${context.urls(forkedRepository).httpUrl} ${pullreq.requestBranch}"){ command => s"git pull ${forkedRepository.httpUrl} ${pullreq.requestBranch}"){ command =>
@helper.html.copy("merge-command-copy-1", command){ @helper.html.copy("merge-command-copy-1", command){
<pre style="width: 600px; float: left; font-size: 12px; border-radius: 3px 0px 3px 3px;" id="merge-command">@Html(command)</pre> <pre style="width: 600px; float: left; font-size: 12px; border-radius: 3px 0px 3px 3px;" id="merge-command">@Html(command)</pre>
} }
@@ -171,27 +171,26 @@ $(function(){
$('#confirm-merge-form').show(); $('#confirm-merge-form').show();
}); });
@if(settings.ssh && loginAccount.isDefined){ @* @if(settings.ssh && loginAccount.isDefined){ *@
@forkedRepository.sshUrl.map { sshUrl =>
$('#repository-url-http').click(function(){ $('#repository-url-http').click(function(){
// Update URL box // Update URL box
$('#repository-url').val('@context.urls(forkedRepository).httpUrl'); $('#repository-url').val('@forkedRepository.httpUrl');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
// Update command guidance // Update command guidance
$('#merge-command').text($('#merge-command').text().replace( $('#merge-command').text($('#merge-command').text().replace(
'@context.urls(forkedRepository).sshUrl(loginAccount.get.userName)', '@sshUrl', '@forkedRepository.httpUrl'
'@context.urls(forkedRepository).httpUrl'
)); ));
$('#merge-command-copy-1').attr('data-clipboard-text', $('#merge-command').text()); $('#merge-command-copy-1').attr('data-clipboard-text', $('#merge-command').text());
}); });
$('#repository-url-ssh').click(function(){ $('#repository-url-ssh').click(function(){
// Update URL box // Update URL box
$('#repository-url').val('@context.urls(forkedRepository).sshUrl(loginAccount.get.userName)'); $('#repository-url').val('@sshUrl');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
// Update command guidance // Update command guidance
$('#merge-command').text($('#merge-command').text().replace( $('#merge-command').text($('#merge-command').text().replace(
'@context.urls(forkedRepository).httpUrl', '@forkedRepository.httpUrl', '@sshUrl'
'@context.urls(forkedRepository).sshUrl(loginAccount.get.userName)'
)); ));
$('#merge-command-copy-1').attr('data-clipboard-text', $('#merge-command').text()); $('#merge-command-copy-1').attr('data-clipboard-text', $('#merge-command').text());
}); });

View File

@@ -10,10 +10,10 @@
} else { } else {
<h3><strong>Quick setup</strong> — if you've done this kind of thing before</h3> <h3><strong>Quick setup</strong> — if you've done this kind of thing before</h3>
<div class="empty-repo-options"> <div class="empty-repo-options">
via <a href="@context.urls(repository).httpUrl" class="git-protocol-selector">HTTP</a> via <a href="@repository.httpUrl" class="git-protocol-selector">HTTP</a>
@if(settings.ssh && loginAccount.isDefined){ @repository.sshUrl.map { sshUrl =>
or or
<a href="@context.urls(repository).sshUrl(loginAccount.get.userName)" class="git-protocol-selector">SSH</a> <a href="@sshUrl" class="git-protocol-selector">SSH</a>
} }
</div> </div>
<h3 style="margin-top: 30px;">Create a new repository on the command line</h3> <h3 style="margin-top: 30px;">Create a new repository on the command line</h3>
@@ -22,12 +22,12 @@
git init git init
git add README.md git add README.md
git commit -m "first commit" git commit -m "first commit"
git remote add origin <span class="live-clone-url">@context.urls(repository).httpUrl</span> git remote add origin <span class="live-clone-url">@repository.httpUrl</span>
git push -u origin master git push -u origin master
} }
<h3 style="margin-top: 30px;">Push an existing repository from the command line</h3> <h3 style="margin-top: 30px;">Push an existing repository from the command line</h3>
@pre { @pre {
git remote add origin <span class="live-clone-url">@context.urls(repository).httpUrl</span> git remote add origin <span class="live-clone-url">@repository.httpUrl</span>
git push -u origin master git push -u origin master
} }
<script> <script>

View File

@@ -7,7 +7,7 @@
footer: Option[gitbucket.core.service.WikiService.WikiPageInfo])(implicit context: gitbucket.core.controller.Context) footer: Option[gitbucket.core.service.WikiService.WikiPageInfo])(implicit context: gitbucket.core.controller.Context)
@import context._ @import context._
@import gitbucket.core.view.helpers._ @import gitbucket.core.view.helpers._
@import gitbucket.core.service.WikiService._ @import gitbucket.core.service.WikiService.{wikiHttpUrl, wikiSshUrl}
@html.main(s"${pageName} - ${repository.owner}/${repository.name}", Some(repository)){ @html.main(s"${pageName} - ${repository.owner}/${repository.name}", Some(repository)){
@html.menu("wiki", repository){ @html.menu("wiki", repository){
<ul class="nav nav-tabs fill-width"> <ul class="nav nav-tabs fill-width">
@@ -67,10 +67,10 @@
<div class="small"> <div class="small">
<strong>Clone this wiki locally</strong> <strong>Clone this wiki locally</strong>
</div> </div>
@helper.html.copy("repository-url-copy", context.wikiUrls(repository).httpUrl){ @helper.html.copy("repository-url-copy", wikiHttpUrl(repository)){
<input type="text" value="@context.wikiUrls(repository).httpUrl" id="repository-url" class="form-control input-sm" readonly> <input type="text" value="@wikiHttpUrl(repository)" id="repository-url" class="form-control input-sm" readonly>
} }
@if(settings.ssh && loginAccount.isDefined){ @if(wikiSshUrl(repository).isDefined) {
<div class="small"> <div class="small">
<span class="mute">You can clone <a href="javascript:void(0);" id="repository-url-http">HTTP</a> or <a href="javascript:void(0);" id="repository-url-ssh">SSH</a>.</span> <span class="mute">You can clone <a href="javascript:void(0);" id="repository-url-http">HTTP</a> or <a href="javascript:void(0);" id="repository-url-ssh">SSH</a>.</span>
</div> </div>
@@ -106,7 +106,7 @@
</div> </div>
} }
} }
<script> <script><script>
$(function(){ $(function(){
$('#show-more-pages').click(function(e){ $('#show-more-pages').click(function(e){
$('div.page-link').show(); $('div.page-link').show();
@@ -131,13 +131,13 @@ $(function(){
$('#triangle-right').show(); $('#triangle-right').show();
} }
@if(settings.ssh && loginAccount.isDefined){ @wikiSshUrl(repository).map { sshUrl =>
$('#repository-url-http').click(function(){ $('#repository-url-http').click(function(){
$('#repository-url').val('@context.wikiUrls(repository).httpUrl'); $('#repository-url').val('@wikiHttpUrl(repository)');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
}); });
$('#repository-url-ssh').click(function(){ $('#repository-url-ssh').click(function(){
$('#repository-url').val('@context.wikiUrls(repository).sshUrl(loginAccount.get.userName)'); $('#repository-url').val('@sshUrl');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val()); $('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
}); });
} }