diff --git a/src/main/scala/app/AccountController.scala b/src/main/scala/app/AccountController.scala index ca513d4..72244dc 100644 --- a/src/main/scala/app/AccountController.scala +++ b/src/main/scala/app/AccountController.scala @@ -112,7 +112,7 @@ val members = getGroupMembers(account.userName) _root_.account.html.repositories(account, if(account.isGroupAccount) Nil else getGroupsByUserName(userName), - getVisibleRepositories(context.loginAccount, baseUrl, Some(userName)), + getVisibleRepositories(context.loginAccount, context.baseUrl, Some(userName)), context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.isManager })) } } @@ -292,7 +292,7 @@ */ post("/new", newRepositoryForm)(usersOnly { form => LockUtil.lock(s"${form.owner}/${form.name}/create"){ - if(getRepository(form.owner, form.name, baseUrl).isEmpty){ + if(getRepository(form.owner, form.name, context.baseUrl).isEmpty){ val ownerAccount = getAccountByUserName(form.owner).get val loginAccount = context.loginAccount.get val loginUserName = loginAccount.userName diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index 1b2e0f9..34ad4ce 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -141,8 +141,8 @@ val path = settings.baseUrl.getOrElse(request.getServletContext.getContextPath) val currentPath = request.getRequestURI.substring(request.getContextPath.length) - val baseURL = settings.baseUrl.getOrElse(request.getRequestURL.substring(0, request.getRequestURL.length - request.getRequestURI.length)) - val host = new java.net.URL(baseURL).getHost + val baseUrl = settings.baseUrl(request) + val host = new java.net.URL(baseUrl).getHost /** * Get object from cache. diff --git a/src/main/scala/app/DashboardController.scala b/src/main/scala/app/DashboardController.scala index 871dd34..8fe73bf 100644 --- a/src/main/scala/app/DashboardController.scala +++ b/src/main/scala/app/DashboardController.scala @@ -49,7 +49,7 @@ ) val userName = context.loginAccount.get.userName - val repositories = getUserRepositories(userName, baseUrl).map(repo => repo.owner -> repo.name) + val repositories = getUserRepositories(userName, context.baseUrl).map(repo => repo.owner -> repo.name) val filterUser = Map(filter -> userName) val page = IssueSearchCondition.page(request) // @@ -80,7 +80,7 @@ }.copy(repo = repository)) val userName = context.loginAccount.get.userName - val repositories = getUserRepositories(userName, baseUrl).map(repo => repo.owner -> repo.name) + val repositories = getUserRepositories(userName, context.baseUrl).map(repo => repo.owner -> repo.name) val filterUser = Map(filter -> userName) val page = IssueSearchCondition.page(request) diff --git a/src/main/scala/app/IndexController.scala b/src/main/scala/app/IndexController.scala index a51025d..6cc95b6 100644 --- a/src/main/scala/app/IndexController.scala +++ b/src/main/scala/app/IndexController.scala @@ -21,8 +21,8 @@ val loginAccount = context.loginAccount html.index(getRecentActivities(), - getVisibleRepositories(loginAccount, baseUrl), - loginAccount.map{ account => getUserRepositories(account.userName, baseUrl) }.getOrElse(Nil) + getVisibleRepositories(loginAccount, context.baseUrl), + loginAccount.map{ account => getUserRepositories(account.userName, context.baseUrl) }.getOrElse(Nil) ) } diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala index be564ee..7dc634c 100644 --- a/src/main/scala/app/IssuesController.scala +++ b/src/main/scala/app/IssuesController.scala @@ -118,7 +118,7 @@ // notifications Notifier().toNotify(repository, issueId, form.content.getOrElse("")){ - Notifier.msgIssue(s"${baseUrl}/${owner}/${name}/issues/${issueId}") + Notifier.msgIssue(s"${context.baseUrl}/${owner}/${name}/issues/${issueId}") } redirect(s"/${owner}/${name}/issues/${issueId}") @@ -342,13 +342,13 @@ case f => content foreach { f.toNotify(repository, issueId, _){ - Notifier.msgComment(s"${baseUrl}/${owner}/${name}/${ + Notifier.msgComment(s"${context.baseUrl}/${owner}/${name}/${ if(issue.isPullRequest) "pull" else "issues"}/${issueId}#comment-${commentId}") } } action foreach { f.toNotify(repository, issueId, _){ - Notifier.msgStatus(s"${baseUrl}/${owner}/${name}/issues/${issueId}") + Notifier.msgStatus(s"${context.baseUrl}/${owner}/${name}/issues/${issueId}") } } } diff --git a/src/main/scala/app/PullRequestsController.scala b/src/main/scala/app/PullRequestsController.scala index 5e2c6bc..a7c85cd 100644 --- a/src/main/scala/app/PullRequestsController.scala +++ b/src/main/scala/app/PullRequestsController.scala @@ -100,7 +100,7 @@ pulls.html.mergeguide( checkConflictInPullRequest(owner, name, pullreq.branch, pullreq.requestUserName, name, pullreq.requestBranch, issueId), pullreq, - s"${baseUrl}/git/${pullreq.requestUserName}/${pullreq.requestRepositoryName}.git") + s"${context.baseUrl}/git/${pullreq.requestUserName}/${pullreq.requestRepositoryName}.git") } } getOrElse NotFound }) @@ -178,7 +178,7 @@ pullreq.requestUserName, pullreq.requestRepositoryName, pullreq.commitIdTo) // close issue by content of pull request - val defaultBranch = getRepository(owner, name, baseUrl).get.repository.defaultBranch + val defaultBranch = getRepository(owner, name, context.baseUrl).get.repository.defaultBranch if(pullreq.branch == defaultBranch){ commits.flatten.foreach { commit => closeIssuesFromMessage(commit.fullMessage, loginAccount.userName, owner, name) @@ -201,7 +201,7 @@ // notifications Notifier().toNotify(repository, issueId, "merge"){ - Notifier.msgStatus(s"${baseUrl}/${owner}/${name}/pull/${issueId}") + Notifier.msgStatus(s"${context.baseUrl}/${owner}/${name}/pull/${issueId}") } redirect(s"/${owner}/${name}/pull/${issueId}") @@ -214,7 +214,7 @@ get("/:owner/:repository/compare")(referrersOnly { forkedRepository => (forkedRepository.repository.originUserName, forkedRepository.repository.originRepositoryName) match { case (Some(originUserName), Some(originRepositoryName)) => { - getRepository(originUserName, originRepositoryName, baseUrl).map { originRepository => + getRepository(originUserName, originRepositoryName, context.baseUrl).map { originRepository => using( Git.open(getRepositoryDir(originUserName, originRepositoryName)), Git.open(getRepositoryDir(forkedRepository.owner, forkedRepository.name)) @@ -251,7 +251,7 @@ getForkedRepositories(forkedRepository.owner, forkedRepository.name).find(_._1 == originOwner).map(_._2) } }; - originRepository <- getRepository(originOwner, originRepositoryName, baseUrl) + originRepository <- getRepository(originOwner, originRepositoryName, context.baseUrl) ) yield { using( Git.open(getRepositoryDir(originRepository.owner, originRepository.name)), @@ -303,7 +303,7 @@ getForkedRepositories(forkedRepository.owner, forkedRepository.name).find(_._1 == originOwner).map(_._2) } }; - originRepository <- getRepository(originOwner, originRepositoryName, baseUrl) + originRepository <- getRepository(originOwner, originRepositoryName, context.baseUrl) ) yield { using( Git.open(getRepositoryDir(originRepository.owner, originRepository.name)), @@ -356,7 +356,7 @@ // notifications Notifier().toNotify(repository, issueId, form.content.getOrElse("")){ - Notifier.msgPullRequest(s"${baseUrl}/${repository.owner}/${repository.name}/pull/${issueId}") + Notifier.msgPullRequest(s"${context.baseUrl}/${repository.owner}/${repository.name}/pull/${issueId}") } redirect(s"/${repository.owner}/${repository.name}/pull/${issueId}") diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala index d13f9be..6798c0a 100644 --- a/src/main/scala/app/RepositoryViewerController.scala +++ b/src/main/scala/app/RepositoryViewerController.scala @@ -304,7 +304,7 @@ getRepository( repository.repository.originUserName.getOrElse(repository.owner), repository.repository.originRepositoryName.getOrElse(repository.name), - baseUrl), + context.baseUrl), getForkedRepositories( repository.repository.originUserName.getOrElse(repository.owner), repository.repository.originRepositoryName.getOrElse(repository.name)), diff --git a/src/main/scala/service/SystemSettingsService.scala b/src/main/scala/service/SystemSettingsService.scala index ba425a3..fd72b60 100644 --- a/src/main/scala/service/SystemSettingsService.scala +++ b/src/main/scala/service/SystemSettingsService.scala @@ -7,11 +7,7 @@ trait SystemSettingsService { - def baseUrl(implicit request: HttpServletRequest): String = loadSystemSettings().baseUrl.getOrElse { - defining(request.getRequestURL.toString){ url => - url.substring(0, url.length - (request.getRequestURI.length - request.getContextPath.length)) - } - }.replaceFirst("/$", "") + def baseUrl(implicit request: HttpServletRequest): String = loadSystemSettings().baseUrl(request) def saveSystemSettings(settings: SystemSettings): Unit = { defining(new java.util.Properties()){ props => @@ -110,7 +106,13 @@ sshPort: Option[Int], smtp: Option[Smtp], ldapAuthentication: Boolean, - ldap: Option[Ldap]) + ldap: Option[Ldap]){ + def baseUrl(request: HttpServletRequest): String = baseUrl.getOrElse { + defining(request.getRequestURL.toString){ url => + url.substring(0, url.length - (request.getRequestURI.length - request.getContextPath.length)) + } + }.replaceFirst("/$", "") + } case class Ldap( host: String, diff --git a/src/main/twirl/helper/feed.scala.xml b/src/main/twirl/helper/feed.scala.xml index f870ca3..3a8e379 100644 --- a/src/main/twirl/helper/feed.scala.xml +++ b/src/main/twirl/helper/feed.scala.xml @@ -8,10 +8,10 @@ @header(activities: List[model.Activity]) = {tag:@context.host,2013:gitbucket Gitbucket's activities - + Gitbucket - @context.baseURL + @context.baseUrl @datetimeRFC3339(activities.map(_.activityDate).max)} @@ -20,7 +20,7 @@ tag:@context.host,@date(activity.activityDate):activity:@activity.activityId @datetimeRFC3339(activity.activityDate) @datetimeRFC3339(activity.activityDate) - + @activity.activityType @activity.activityUserName