diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala index 07b275a..b04b31b 100644 --- a/src/main/scala/app/IssuesController.scala +++ b/src/main/scala/app/IssuesController.scala @@ -397,8 +397,7 @@ condition, filter, repository, - hasWritePermission(owner, repoName, context.loginAccount), - PluginSystem.buttons("issues")) + hasWritePermission(owner, repoName, context.loginAccount)) } } diff --git a/src/main/scala/plugin/Plugin.scala b/src/main/scala/plugin/Plugin.scala index 57d2c02..f4a7c1a 100644 --- a/src/main/scala/plugin/Plugin.scala +++ b/src/main/scala/plugin/Plugin.scala @@ -14,7 +14,7 @@ def globalMenus : List[GlobalMenu] def repositoryActions : List[RepositoryAction] def globalActions : List[Action] - def buttons(name: String) : List[Button] + def javaScripts : List[JavaScript] } object PluginConnectionHolder { diff --git a/src/main/scala/plugin/PluginSystem.scala b/src/main/scala/plugin/PluginSystem.scala index 488c1b7..159fbc3 100644 --- a/src/main/scala/plugin/PluginSystem.scala +++ b/src/main/scala/plugin/PluginSystem.scala @@ -85,7 +85,7 @@ def globalMenus : List[GlobalMenu] = pluginsMap.values.flatMap(_.globalMenus).toList def repositoryActions : List[RepositoryAction] = pluginsMap.values.flatMap(_.repositoryActions).toList def globalActions : List[Action] = pluginsMap.values.flatMap(_.globalActions).toList - def buttons(name: String) : List[Button] = pluginsMap.values.flatMap(_.buttons(name)).toList + def javaScripts : List[JavaScript] = pluginsMap.values.flatMap(_.javaScripts).toList // Case classes to hold plug-ins information internally in GitBucket case class PluginRepository(id: String, url: String) @@ -94,6 +94,7 @@ case class Action(path: String, function: (HttpServletRequest, HttpServletResponse) => Any) case class RepositoryAction(path: String, function: (HttpServletRequest, HttpServletResponse, RepositoryInfo) => Any) case class Button(label: String, href: String) + case class JavaScript(filter: String => Boolean, script: String) /** * Checks whether the plugin is updatable. diff --git a/src/main/scala/plugin/ScalaPlugin.scala b/src/main/scala/plugin/ScalaPlugin.scala index 0b2718d..d5ba827 100644 --- a/src/main/scala/plugin/ScalaPlugin.scala +++ b/src/main/scala/plugin/ScalaPlugin.scala @@ -18,13 +18,13 @@ private val globalMenuList = ListBuffer[GlobalMenu]() private val repositoryActionList = ListBuffer[RepositoryAction]() private val globalActionList = ListBuffer[Action]() - private val buttonMap = MutableMap[String, ListBuffer[Button]]() + private val javaScriptList = ListBuffer[JavaScript]() def repositoryMenus : List[RepositoryMenu] = repositoryMenuList.toList def globalMenus : List[GlobalMenu] = globalMenuList.toList def repositoryActions : List[RepositoryAction] = repositoryActionList.toList def globalActions : List[Action] = globalActionList.toList - def buttons(name: String) : List[Button] = buttonMap.get(name).map(_.toList).getOrElse(Nil) + def javaScripts : List[JavaScript] = javaScriptList.toList def addRepositoryMenu(label: String, name: String, url: String, icon: String)(condition: (Context) => Boolean): Unit = { repositoryMenuList += RepositoryMenu(label, name, url, icon, condition) @@ -42,12 +42,8 @@ repositoryActionList += RepositoryAction(path, function) } - def addButton(name: String, label: String, href: String): Unit = { - if(!buttonMap.contains(name)){ - buttonMap.put(name, ListBuffer[Button]()) - } - val list = buttonMap(name) - list += Button(label, href) + def addJavaScript(filter: String => Boolean, script: String): Unit = { + javaScriptList += JavaScript(filter, script) } } diff --git a/src/main/twirl/issues/list.scala.html b/src/main/twirl/issues/list.scala.html index 6450eb1..0e41fba 100644 --- a/src/main/twirl/issues/list.scala.html +++ b/src/main/twirl/issues/list.scala.html @@ -12,13 +12,12 @@ condition: service.IssuesService.IssueSearchCondition, filter: String, repository: service.RepositoryService.RepositoryInfo, - hasWritePermission: Boolean, - buttons: List[plugin.PluginSystem.Button])(implicit context: app.Context) + hasWritePermission: Boolean)(implicit context: app.Context) @import context._ @import view.helpers._ @html.main(s"Issues - ${repository.owner}/${repository.name}", Some(repository)){ @html.menu("issues", repository){ - @tab("issues", false, repository, buttons) + @tab("issues", false, repository)