Creating a Plugin Configuration Page
To create a configuration page for a plugin that does not already have the Configure icon displayed in the Administration page, follow these steps:
- Register a
WebappServlet
extension type with arole
attribute set to config in yourplugin.xml
file, as in the following example:<extension type="WebappServlet" role="config" class="com.ex.MyPluginConfigExt"/>
The
class
attribute value should point to an extension of thePluginConfigExtension
class. - When extending the
PluginConfigExtension
class, consider the following notes:- Implement the
getOptionsForm
method to return an HTML form and make sure that contains inputs with thename
attribute the same as the option you want to configure. - Implement the
getOptionsJson
method to return a JSON string that contains the options that you want to make available to the JavaScript code. They will be accessible in your plugin JavaScript code using thesync.options.PluginsOptions.getClientOption(optionName)
method.Note
The JSON should only contain key values, where values are of the type string|number|boolean with no arrays or other objects.Tip
You should not include any sensitive information (e.g. OAuth secrets) in the options returned by this method. - Implement the
getPath
method to return a non-empty string that represents the path for which this extension will be served.For example:
{webapp-context}/plugins-dispatcher/RESULT_OF_GETPATH
- If you need to override the
init
method, make sure you callsuper.init()
. Otherwise, options will not be saved to disk and will be lost when you restart the application. - If you need to override any of the
doPut/doDelete
methods, make sure you call thesaveOptions
method at the end to save the options to disk. - If you need to override the
doGet
method, make sure it responds with the result ofgetOptionsForm
for headerAccept=text/html
, and with the result ofgetOptionsJson
when called with headerAccept=application/json
. Use thegetOption
orgetDefaultOptions
methods to access the current or default options.
Tip
For an implementation example, you can look atcom.oxygenxml.sdksamples.github.GithubPluginConfigExtension
in thewebapp-github-plugin
project. - Implement the