(refs #115)Add button to toggle http/ssh for wiki repository url box

This commit is contained in:
takezoe
2014-03-14 10:59:42 +09:00
parent 0c683f7243
commit d1c6c763e2
8 changed files with 56 additions and 22 deletions

View File

@@ -36,7 +36,7 @@ trait WikiControllerBase extends ControllerBase {
get("/:owner/:repository/wiki")(referrersOnly { repository =>
getWikiPage(repository.owner, repository.name, "Home").map { page =>
wiki.html.page("Home", page, repository, hasWritePermission(repository.owner, repository.name, context.loginAccount))
wiki.html.page("Home", page, repository, hasWritePermission(repository.owner, repository.name, context.loginAccount), loadSystemSettings())
} getOrElse redirect(s"/${repository.owner}/${repository.name}/wiki/Home/_edit")
})
@@ -44,7 +44,7 @@ trait WikiControllerBase extends ControllerBase {
val pageName = StringUtil.urlDecode(params("page"))
getWikiPage(repository.owner, repository.name, pageName).map { page =>
wiki.html.page(pageName, page, repository, hasWritePermission(repository.owner, repository.name, context.loginAccount))
wiki.html.page(pageName, page, repository, hasWritePermission(repository.owner, repository.name, context.loginAccount), loadSystemSettings())
} getOrElse redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}/_edit")
})
@@ -53,7 +53,7 @@ trait WikiControllerBase extends ControllerBase {
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
JGitUtil.getCommitLog(git, "master", path = pageName + ".md") match {
case Right((logs, hasNext)) => wiki.html.history(Some(pageName), logs, repository)
case Right((logs, hasNext)) => wiki.html.history(Some(pageName), logs, repository, loadSystemSettings())
case Left(_) => NotFound
}
}
@@ -65,7 +65,7 @@ trait WikiControllerBase extends ControllerBase {
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
wiki.html.compare(Some(pageName), from, to, JGitUtil.getDiffs(git, from, to, true).filter(_.newPath == pageName + ".md"), repository,
hasWritePermission(repository.owner, repository.name, context.loginAccount), flash.get("info"))
hasWritePermission(repository.owner, repository.name, context.loginAccount), loadSystemSettings(), flash.get("info"))
}
})
@@ -74,7 +74,7 @@ trait WikiControllerBase extends ControllerBase {
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
wiki.html.compare(None, from, to, JGitUtil.getDiffs(git, from, to, true), repository,
hasWritePermission(repository.owner, repository.name, context.loginAccount), flash.get("info"))
hasWritePermission(repository.owner, repository.name, context.loginAccount), loadSystemSettings(), flash.get("info"))
}
})
@@ -103,7 +103,7 @@ trait WikiControllerBase extends ControllerBase {
get("/:owner/:repository/wiki/:page/_edit")(collaboratorsOnly { repository =>
val pageName = StringUtil.urlDecode(params("page"))
wiki.html.edit(pageName, getWikiPage(repository.owner, repository.name, pageName), repository)
wiki.html.edit(pageName, getWikiPage(repository.owner, repository.name, pageName), repository, loadSystemSettings())
})
post("/:owner/:repository/wiki/_edit", editForm)(collaboratorsOnly { (form, repository) =>
@@ -118,7 +118,7 @@ trait WikiControllerBase extends ControllerBase {
})
get("/:owner/:repository/wiki/_new")(collaboratorsOnly {
wiki.html.edit("", None, _)
wiki.html.edit("", None, _, loadSystemSettings())
})
post("/:owner/:repository/wiki/_new", newForm)(collaboratorsOnly { (form, repository) =>
@@ -146,13 +146,13 @@ trait WikiControllerBase extends ControllerBase {
get("/:owner/:repository/wiki/_pages")(referrersOnly { repository =>
wiki.html.pages(getWikiPageList(repository.owner, repository.name), repository,
hasWritePermission(repository.owner, repository.name, context.loginAccount))
hasWritePermission(repository.owner, repository.name, context.loginAccount), loadSystemSettings())
})
get("/:owner/:repository/wiki/_history")(referrersOnly { repository =>
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
JGitUtil.getCommitLog(git, "master") match {
case Right((logs, hasNext)) => wiki.html.history(None, logs, repository)
case Right((logs, hasNext)) => wiki.html.history(None, logs, repository, loadSystemSettings())
case Left(_) => NotFound
}
}

View File

@@ -15,6 +15,7 @@ import org.eclipse.jgit.patch._
import org.eclipse.jgit.api.errors.PatchFormatException
import scala.collection.JavaConverters._
import scala.Some
import service.RepositoryService.RepositoryInfo
object WikiService {
@@ -40,6 +41,10 @@ object WikiService {
*/
case class WikiPageHistoryInfo(name: String, committer: String, message: String, date: Date)
def httpUrl(repository: RepositoryInfo) = repository.httpUrl.replaceFirst("\\.git\\Z", ".wiki.git")
def sshUrl(repository: RepositoryInfo, settings: SystemSettingsService.SystemSettings) =
repository.sshUrl(settings.sshPort.getOrElse(SystemSettingsService.DefaultSshPort)).replaceFirst("\\.git\\Z", ".wiki.git")
}
trait WikiService {

View File

@@ -4,6 +4,7 @@
diffs: Seq[util.JGitUtil.DiffInfo],
repository: service.RepositoryService.RepositoryInfo,
hasWritePermission: Boolean,
settings: service.SystemSettingsService.SystemSettings,
info: Option[Any])(implicit context: app.Context)
@import context._
@import view.helpers._
@@ -11,7 +12,7 @@
@html.main(s"Compare Revisions - ${repository.owner}/${repository.name}", Some(repository)){
@helper.html.information(info)
@html.header("wiki", repository)
@tab("history", repository)
@tab("history", repository, settings)
<ul class="nav nav-tabs">
<li>
<h1 class="wiki-title"><span class="muted">Compare Revisions</span></h1>

View File

@@ -1,11 +1,12 @@
@(pageName: String,
page: Option[service.WikiService.WikiPageInfo],
repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
repository: service.RepositoryService.RepositoryInfo,
settings: service.SystemSettingsService.SystemSettings)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main(s"${if(pageName.isEmpty) "New Page" else pageName} - ${repository.owner}/${repository.name}", Some(repository)){
@html.header("wiki", repository)
@tab("", repository)
@tab("", repository, settings)
<ul class="nav nav-tabs">
<li>
<h1 class="wiki-title"><span class="muted">Editing</span> @if(pageName.isEmpty){New Page} else {@pageName}</h1>

View File

@@ -1,11 +1,12 @@
@(pageName: Option[String],
commits: List[util.JGitUtil.CommitInfo],
repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
repository: service.RepositoryService.RepositoryInfo,
settings: service.SystemSettingsService.SystemSettings)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main(s"History - ${repository.owner}/${repository.name}", Some(repository)){
@html.header("wiki", repository)
@tab(if(pageName.isEmpty) "history" else "", repository)
@tab(if(pageName.isEmpty) "history" else "", repository, settings)
<ul class="nav nav-tabs">
<li>
<h1 class="wiki-title">

View File

@@ -1,12 +1,13 @@
@(pageName: String,
page: service.WikiService.WikiPageInfo,
repository: service.RepositoryService.RepositoryInfo,
hasWritePermission: Boolean)(implicit context: app.Context)
hasWritePermission: Boolean,
settings: service.SystemSettingsService.SystemSettings)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main(s"${pageName} - ${repository.owner}/${repository.name}", Some(repository)){
@html.header("wiki", repository)
@tab((if(pageName == "Home") "home" else ""), repository)
@tab((if(pageName == "Home") "home" else ""), repository, settings)
<ul class="nav nav-tabs">
<li>
<h1 class="wiki-title">@pageName</h1>

View File

@@ -1,9 +1,12 @@
@(pages: List[String], repository: service.RepositoryService.RepositoryInfo, hasWritePermission: Boolean)(implicit context: app.Context)
@(pages: List[String],
repository: service.RepositoryService.RepositoryInfo,
hasWritePermission: Boolean,
settings: service.SystemSettingsService.SystemSettings)(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main(s"Pages - ${repository.owner}/${repository.name}", Some(repository)){
@html.header("wiki", repository)
@tab("pages", repository)
@tab("pages", repository, settings)
<ul class="nav nav-tabs">
<li>
<h1 class="wiki-title"><span class="muted">Pages</span></h1>

View File

@@ -1,15 +1,37 @@
@(active: String, repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@(active: String,
repository: service.RepositoryService.RepositoryInfo,
settings: service.SystemSettingsService.SystemSettings)(implicit context: app.Context)
@import context._
@import service.WikiService._
@import view.helpers._
<ul class="nav nav-tabs">
<li@if(active == "home" ){ class="active"}><a href="@url(repository)/wiki">Home</a></li>
<li@if(active == "pages" ){ class="active"}><a href="@url(repository)/wiki/_pages">Pages</a></li>
<li@if(active == "history"){ class="active"}><a href="@url(repository)/wiki/_history">Wiki History</a></li>
<li class="pull-right">
@defining(repository.httpUrl.replaceFirst("\\.git$", ".wiki.git")){ repositoryUrl =>
@helper.html.copy("repository-url-copy", repositoryUrl){
<input type="text" value="@repositoryUrl" readonly id="repository-url">
@helper.html.copy("repository-url-copy", httpUrl(repository), true){
@if(settings.ssh){
<div class="btn-group add-on" data-toggle="buttons-radio" style="padding: 0px; border-width: 0px;">
<button type="button" class="btn active" id="repository-url-http">HTTP</button><button type="button" class="btn" id="repository-url-ssh">SSH</button>
</div>
} else {
<span class="add-on">HTTP</span>
}
<input type="text" value="@httpUrl(repository)" readonly id="repository-url">
}
</li>
</ul>
@if(settings.ssh){
<script>
$(function(){
$('#repository-url-http').click(function(){
$('#repository-url').val('@httpUrl(repository)');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
});
$('#repository-url-ssh').click(function(){
$('#repository-url').val('@sshUrl(repository, settings)');
$('#repository-url-copy').attr('data-clipboard-text', $('#repository-url').val());
});
});
</script>
}