diff --git a/src/main/scala/gitbucket/core/plugin/Plugin.scala b/src/main/scala/gitbucket/core/plugin/Plugin.scala index 238daed..82c5867 100644 --- a/src/main/scala/gitbucket/core/plugin/Plugin.scala +++ b/src/main/scala/gitbucket/core/plugin/Plugin.scala @@ -132,12 +132,22 @@ /** * Override to add account setting menus. */ - val accountSettingMenus: Seq[(Account, Context) => Option[Link]] = Nil + val accountSettingMenus: Seq[(Context) => Option[Link]] = Nil /** * Override to add account setting menus. */ - def accountSettingMenus(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(Account, Context) => Option[Link]] = Nil + def accountSettingMenus(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(Context) => Option[Link]] = Nil + + /** + * Override to add dashboard tabs. + */ + val dashboardTabs: Seq[(Context) => Option[Link]] = Nil + + /** + * Override to add dashboard tabs. + */ + def dashboardTabs(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[(Context) => Option[Link]] = Nil /** * This method is invoked in initialization of plugin system. @@ -180,6 +190,9 @@ (accountSettingMenus ++ accountSettingMenus(registry, context, settings)).foreach { accountSettingMenu => registry.addAccountSettingMenu(accountSettingMenu) } + (dashboardTabs ++ dashboardTabs(registry, context, settings)).foreach { dashboardTab => + registry.addDashboardTab(dashboardTab) + } } /** diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index 9fe5231..041b24e 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -38,7 +38,8 @@ 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]] + private val accountSettingMenus = new ListBuffer[(Context) => Option[Link]] + private val dashboardTabs = new ListBuffer[(Context) => Option[Link]] def addPlugin(pluginInfo: PluginInfo): Unit = { plugins += pluginInfo @@ -144,11 +145,17 @@ def getSystemSettingMenus: Seq[(Context) => Option[Link]] = systemSettingMenus.toSeq - def addAccountSettingMenu(accountSettingMenu: (Account, Context) => Option[Link]): Unit = { + def addAccountSettingMenu(accountSettingMenu: (Context) => Option[Link]): Unit = { accountSettingMenus += accountSettingMenu } - def getAccountSettingMenus: Seq[(Account, Context) => Option[Link]] = accountSettingMenus.toSeq + def getAccountSettingMenus: Seq[(Context) => Option[Link]] = accountSettingMenus.toSeq + + def addDashboardTab(dashboardTab: (Context) => Option[Link]): Unit = { + dashboardTabs += dashboardTab + } + + def getDashboardTabs: Seq[(Context) => Option[Link]] = dashboardTabs.toSeq } diff --git a/src/main/twirl/gitbucket/core/account/menu.scala.html b/src/main/twirl/gitbucket/core/account/menu.scala.html index 656a94e..a3ee9db 100644 --- a/src/main/twirl/gitbucket/core/account/menu.scala.html +++ b/src/main/twirl/gitbucket/core/account/menu.scala.html @@ -14,7 +14,7 @@ Applications @gitbucket.core.plugin.PluginRegistry().getAccountSettingMenus.map { menu => - @menu(loginAccount.get, context).map { link => + @menu(context).map { link =>