diff --git a/src/main/scala/gitbucket/core/plugin/CompletionProposalProvider.scala b/src/main/scala/gitbucket/core/plugin/CompletionProposalProvider.scala deleted file mode 100644 index 26f918e..0000000 --- a/src/main/scala/gitbucket/core/plugin/CompletionProposalProvider.scala +++ /dev/null @@ -1,27 +0,0 @@ -package gitbucket.core.plugin - -import gitbucket.core.controller.Context -import gitbucket.core.service.RepositoryService.RepositoryInfo - -trait CompletionProposalProvider { - - val id: String - val prefix: String - val suffix: String = " " - val context: Seq[String] - - def values(repository: RepositoryInfo): Seq[String] - def template(implicit context: Context): String = "value" - def additionalScript(implicit context: Context): String = "" - -} - -class UserCompletionProposalProvider extends CompletionProposalProvider { - override val id: String = "user" - override val prefix: String = "@" - override val context: Seq[String] = Seq("issues") - override def values(repository: RepositoryInfo): Seq[String] = Nil - override def template(implicit context: Context): String = "'@' + value" - override def additionalScript(implicit context: Context): String = - s"""$$.get('${context.path}/_user/proposals', { query: '' }, function (data) { user = data.options; });""" -} \ No newline at end of file diff --git a/src/main/scala/gitbucket/core/plugin/Plugin.scala b/src/main/scala/gitbucket/core/plugin/Plugin.scala index f115f50..dd3fcb0 100644 --- a/src/main/scala/gitbucket/core/plugin/Plugin.scala +++ b/src/main/scala/gitbucket/core/plugin/Plugin.scala @@ -170,14 +170,14 @@ def textDecorators(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[TextDecorator] = Nil /** - * Override to add completion proposal provider. + * Override to add suggestion provider. */ - val completionProposalProviders: Seq[CompletionProposalProvider] = Nil + val suggestionProviders: Seq[SuggestionProvider] = Nil /** - * Override to add completion proposal provider. + * Override to add suggestion provider. */ - def completionProposalProviders(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[CompletionProposalProvider] = Nil + def suggestionProviders(registry: PluginRegistry, context: ServletContext, settings: SystemSettings): Seq[SuggestionProvider] = Nil /** * This method is invoked in initialization of plugin system. @@ -229,8 +229,8 @@ (textDecorators ++ textDecorators(registry, context, settings)).foreach { textDecorator => registry.addTextDecorator(textDecorator) } - (completionProposalProviders ++ completionProposalProviders(registry, context, settings)).foreach { completionProposalProvider => - registry.addCompletionProposalProvider(completionProposalProvider) + (suggestionProviders ++ suggestionProviders(registry, context, settings)).foreach { suggestionProvider => + registry.addSuggestionProvider(suggestionProvider) } } diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index c1fcf96..7de9503 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -44,8 +44,8 @@ private val assetsMappings = new ListBuffer[(String, String, ClassLoader)] private val textDecorators = new ListBuffer[TextDecorator] - private val completionProposalProviders = new ListBuffer[CompletionProposalProvider] - completionProposalProviders += new UserCompletionProposalProvider() + private val suggestionProviders = new ListBuffer[SuggestionProvider] + suggestionProviders += new UserNameSuggestionProvider() def addPlugin(pluginInfo: PluginInfo): Unit = plugins += pluginInfo @@ -137,9 +137,9 @@ def getTextDecorators: Seq[TextDecorator] = textDecorators.toSeq - def addCompletionProposalProvider(completionProposalProvider: CompletionProposalProvider): Unit = completionProposalProviders += completionProposalProvider + def addSuggestionProvider(suggestionProvider: SuggestionProvider): Unit = suggestionProviders += suggestionProvider - def getCompletionProposalProviders: Seq[CompletionProposalProvider] = completionProposalProviders.toSeq + def getSuggestionProviders: Seq[SuggestionProvider] = suggestionProviders.toSeq } /** diff --git a/src/main/scala/gitbucket/core/plugin/SuggestionProvider.scala b/src/main/scala/gitbucket/core/plugin/SuggestionProvider.scala new file mode 100644 index 0000000..95b9bbc --- /dev/null +++ b/src/main/scala/gitbucket/core/plugin/SuggestionProvider.scala @@ -0,0 +1,27 @@ +package gitbucket.core.plugin + +import gitbucket.core.controller.Context +import gitbucket.core.service.RepositoryService.RepositoryInfo + +trait SuggestionProvider { + + val id: String + val prefix: String + val suffix: String = " " + val context: Seq[String] + + def values(repository: RepositoryInfo): Seq[String] + def template(implicit context: Context): String = "value" + def additionalScript(implicit context: Context): String = "" + +} + +class UserNameSuggestionProvider extends SuggestionProvider { + override val id: String = "user" + override val prefix: String = "@" + override val context: Seq[String] = Seq("issues") + override def values(repository: RepositoryInfo): Seq[String] = Nil + override def template(implicit context: Context): String = "'@' + value" + override def additionalScript(implicit context: Context): String = + s"""$$.get('${context.path}/_user/proposals', { query: '' }, function (data) { user = data.options; });""" +} \ No newline at end of file diff --git a/src/main/twirl/gitbucket/core/helper/attached.scala.html b/src/main/twirl/gitbucket/core/helper/attached.scala.html index 0571b7d..9bea4f1 100644 --- a/src/main/twirl/gitbucket/core/helper/attached.scala.html +++ b/src/main/twirl/gitbucket/core/helper/attached.scala.html @@ -9,14 +9,14 @@ @defining("(id=\")([\\w\\-]*)(\")".r.findFirstMatchIn(textarea.body).map(_.group(2))){ textareaId =>