(refs #1161)Add new extension point to add repository setting tab

This commit is contained in:
Naoki Takezoe
2016-04-04 23:38:01 +09:00
parent e44fed09fa
commit 6903b096f5
3 changed files with 27 additions and 0 deletions

View File

@@ -99,6 +99,16 @@ abstract class Plugin {
*/
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.
*/
@@ -138,6 +148,9 @@ abstract class Plugin {
(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)
}

View File

@@ -35,6 +35,7 @@ class PluginRegistry {
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 @@ class PluginRegistry {
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
}

View File

@@ -20,6 +20,13 @@
<li@if(active=="danger"){ class="active"}>
<a href="@url(repository)/settings/danger">Danger Zone</a>
</li>
@gitbucket.core.plugin.PluginRegistry().getRepositorySettingTabs.map { tab =>
@tab(repository, context).map { link =>
<li@if(active==link.id){ class="active"}>
<a href="@url(repository)/@link.path">@link.label</a>
</li>
}
}
</ul>
@body
</div>