diff --git a/src/main/scala/gitbucket/core/plugin/Plugin.scala b/src/main/scala/gitbucket/core/plugin/Plugin.scala index 8e9696b..238daed 100644 --- a/src/main/scala/gitbucket/core/plugin/Plugin.scala +++ b/src/main/scala/gitbucket/core/plugin/Plugin.scala @@ -120,6 +120,26 @@ def profileTabs(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(Account, Context) => Option[Link]] = Nil /** + * Override to add system setting menus. + */ + val systemSettingMenus: Seq[(Context) => Option[Link]] = Nil + + /** + * Override to add system setting menus. + */ + def systemSettingMenus(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(Context) => Option[Link]] = Nil + + /** + * Override to add account setting menus. + */ + val accountSettingMenus: Seq[(Account, Context) => Option[Link]] = Nil + + /** + * Override to add account setting menus. + */ + def accountSettingMenus(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(Account, Context) => Option[Link]] = Nil + + /** * This method is invoked in initialization of plugin system. * Register plugin functionality to PluginRegistry. */ @@ -154,6 +174,12 @@ (profileTabs ++ profileTabs(registry, context, settings)).foreach { profileTab => registry.addProfileTab(profileTab) } + (systemSettingMenus ++ systemSettingMenus(registry, context, settings)).foreach { systemSettingMenu => + registry.addSystemSettingMenu(systemSettingMenu) + } + (accountSettingMenus ++ accountSettingMenus(registry, context, settings)).foreach { accountSettingMenu => + registry.addAccountSettingMenu(accountSettingMenu) + } } /** diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index cbb2288..9fe5231 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -37,6 +37,8 @@ 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]] + private val systemSettingMenus = new ListBuffer[(Context) => Option[Link]] + private val accountSettingMenus = new ListBuffer[(Account, Context) => Option[Link]] def addPlugin(pluginInfo: PluginInfo): Unit = { plugins += pluginInfo @@ -136,6 +138,18 @@ def getProfileTabs: Seq[(Account, Context) => Option[Link]] = profileTabs.toSeq + def addSystemSettingMenu(systemSettingMenu: (Context) => Option[Link]): Unit = { + systemSettingMenus += systemSettingMenu + } + + def getSystemSettingMenus: Seq[(Context) => Option[Link]] = systemSettingMenus.toSeq + + def addAccountSettingMenu(accountSettingMenu: (Account, Context) => Option[Link]): Unit = { + accountSettingMenus += accountSettingMenu + } + + def getAccountSettingMenus: Seq[(Account, Context) => Option[Link]] = accountSettingMenus.toSeq + } /** diff --git a/src/main/twirl/gitbucket/core/account/menu.scala.html b/src/main/twirl/gitbucket/core/account/menu.scala.html index fedff60..656a94e 100644 --- a/src/main/twirl/gitbucket/core/account/menu.scala.html +++ b/src/main/twirl/gitbucket/core/account/menu.scala.html @@ -13,6 +13,13 @@