diff --git a/src/main/scala/gitbucket/core/plugin/Plugin.scala b/src/main/scala/gitbucket/core/plugin/Plugin.scala index 67ad664..8e9696b 100644 --- a/src/main/scala/gitbucket/core/plugin/Plugin.scala +++ b/src/main/scala/gitbucket/core/plugin/Plugin.scala @@ -100,6 +100,16 @@ def repositoryMenus(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(RepositoryInfo, Context) => Option[Link]] = Nil /** + * Override to add repository setting tabs. + */ + val repositorySettingTabs: Seq[(RepositoryInfo, Context) => Option[Link]] = Nil + + /** + * Override to add repository setting tabs. + */ + def repositorySettingTabs(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(RepositoryInfo, Context) => Option[Link]] = Nil + + /** * Override to add profile tabs. */ val profileTabs: Seq[(Account, Context) => Option[Link]] = Nil @@ -138,6 +148,9 @@ (repositoryMenus ++ repositoryMenus(registry, context, settings)).foreach { repositoryMenu => registry.addRepositoryMenu(repositoryMenu) } + (repositorySettingTabs ++ repositorySettingTabs(registry, context, settings)).foreach { repositorySettingTab => + registry.addRepositorySettingTab(repositorySettingTab) + } (profileTabs ++ profileTabs(registry, context, settings)).foreach { profileTab => registry.addProfileTab(profileTab) } diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index b506908..cbb2288 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -35,6 +35,7 @@ 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]] private val profileTabs = new ListBuffer[(Account, Context) => Option[Link]] def addPlugin(pluginInfo: PluginInfo): Unit = { @@ -123,6 +124,12 @@ def getRepositoryMenus: Seq[(RepositoryInfo, Context) => Option[Link]] = repositoryMenus.toSeq + def addRepositorySettingTab(repositorySettingTab: (RepositoryInfo, Context) => Option[Link]): Unit = { + repositorySettingTabs += repositorySettingTab + } + + def getRepositorySettingTabs: Seq[(RepositoryInfo, Context) => Option[Link]] = repositorySettingTabs.toSeq + def addProfileTab(profileTab: (Account, Context) => Option[Link]): Unit = { profileTabs += profileTab } diff --git a/src/main/twirl/gitbucket/core/settings/menu.scala.html b/src/main/twirl/gitbucket/core/settings/menu.scala.html index 87d2816..860e78f 100644 --- a/src/main/twirl/gitbucket/core/settings/menu.scala.html +++ b/src/main/twirl/gitbucket/core/settings/menu.scala.html @@ -20,6 +20,13 @@ Danger Zone + @gitbucket.core.plugin.PluginRegistry().getRepositorySettingTabs.map { tab => + @tab(repository, context).map { link => + + @link.label + + } + } @body \ No newline at end of file