diff --git a/src/main/scala/gitbucket/core/plugin/Plugin.scala b/src/main/scala/gitbucket/core/plugin/Plugin.scala index 3d2b51b..0cb6a64 100644 --- a/src/main/scala/gitbucket/core/plugin/Plugin.scala +++ b/src/main/scala/gitbucket/core/plugin/Plugin.scala @@ -122,6 +122,16 @@ def pullRequestHooks(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[PullRequestHook] = Nil /** + * Override to add repository headers. + */ + val repositoryHeaders: Seq[(RepositoryInfo, Context) => Option[Html]] = Nil + + /** + * Override to add repository headers. + */ + def repositoryHeaders(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(RepositoryInfo, Context) => Option[Html]] = Nil + + /** * Override to add global menus. */ val globalMenus: Seq[(Context) => Option[Link]] = Nil @@ -266,6 +276,9 @@ (pullRequestHooks ++ pullRequestHooks(registry, context, settings)).foreach { pullRequestHook => registry.addPullRequestHook(pullRequestHook) } + (repositoryHeaders ++ repositoryHeaders(registry, context, settings)).foreach { repositoryHeader => + registry.addRepositoryHeader(repositoryHeader) + } (globalMenus ++ globalMenus(registry, context, settings)).foreach { globalMenu => registry.addGlobalMenu(globalMenu) } @@ -287,8 +300,8 @@ (dashboardTabs ++ dashboardTabs(registry, context, settings)).foreach { dashboardTab => registry.addDashboardTab(dashboardTab) } - (issueSidebars ++ issueSidebars(registry, context, settings)).foreach { issueSidebar => - registry.addIssueSidebar(issueSidebar) + (issueSidebars ++ issueSidebars(registry, context, settings)).foreach { issueSidebarComponent => + registry.addIssueSidebar(issueSidebarComponent) } (assetsMappings ++ assetsMappings(registry, context, settings)).foreach { assetMapping => registry.addAssetsMapping((assetMapping._1, assetMapping._2, getClass.getClassLoader)) diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index c87adbf..f06584e 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -44,6 +44,7 @@ private val pullRequestHooks = new ListBuffer[PullRequestHook] pullRequestHooks += new gitbucket.core.util.Notifier.PullRequestHook() + private val repositoryHeaders = new ListBuffer[(RepositoryInfo, Context) => Option[Html]] private val globalMenus = new ListBuffer[(Context) => Option[Link]] private val repositoryMenus = new ListBuffer[(RepositoryInfo, Context) => Option[Link]] private val repositorySettingTabs = new ListBuffer[(RepositoryInfo, Context) => Option[Link]] @@ -128,6 +129,10 @@ def getPullRequestHooks: Seq[PullRequestHook] = pullRequestHooks.toSeq + def addRepositoryHeader(repositoryHeader: (RepositoryInfo, Context) => Option[Html]): Unit = repositoryHeaders += repositoryHeader + + def getRepositoryHeaders: Seq[(RepositoryInfo, Context) => Option[Html]] = repositoryHeaders.toSeq + def addGlobalMenu(globalMenu: (Context) => Option[Link]): Unit = globalMenus += globalMenu def getGlobalMenus: Seq[(Context) => Option[Link]] = globalMenus.toSeq diff --git a/src/main/twirl/gitbucket/core/issues/issueinfo.scala.html b/src/main/twirl/gitbucket/core/issues/issueinfo.scala.html index 4b0fb88..cbd732d 100644 --- a/src/main/twirl/gitbucket/core/issues/issueinfo.scala.html +++ b/src/main/twirl/gitbucket/core/issues/issueinfo.scala.html @@ -148,8 +148,8 @@ <input type="hidden" name="assignedUserName" value=""/> } @issue.map { issue => - @gitbucket.core.plugin.PluginRegistry().getIssueSidebars.map { sidebar => - @sidebar(issue, repository, context) + @gitbucket.core.plugin.PluginRegistry().getIssueSidebars.map { sidebarComponent => + @sidebarComponent(issue, repository, context) } <hr/> <div style="margin-bottom: 14px;"> diff --git a/src/main/twirl/gitbucket/core/menu.scala.html b/src/main/twirl/gitbucket/core/menu.scala.html index c6f5f70..3106881 100644 --- a/src/main/twirl/gitbucket/core/menu.scala.html +++ b/src/main/twirl/gitbucket/core/menu.scala.html @@ -74,6 +74,11 @@ @gitbucket.core.helper.html.information(info) @gitbucket.core.helper.html.error(error) <div class="head"> + <div class="pull-right"> + @gitbucket.core.plugin.PluginRegistry().getRepositoryHeaders.map { repositoryHeaderComponent => + @repositoryHeaderComponent(repository, context) + } + </div> @gitbucket.core.helper.html.repositoryicon(repository, true) <a href="@helpers.url(repository.owner)">@repository.owner</a> / <a href="@helpers.url(repository)" class="strong">@repository.name</a>