TWiki Plugins | ||||||||
| Line: 7 to 7 | ||||||||
|---|---|---|---|---|---|---|---|---|
Overview | ||||||||
| Changed: | ||||||||
| < < |
You can add Plugins to extend TWiki's functionality, without altering the core program code. A plug-in approach lets you: | |||||||
| > > |
You can add Plugins to extend TWiki"s functionality, without altering the core program code. A plug-in approach lets you: | |||||||
| ||||||||
| Line: 19 to 19 | ||||||||
| TWiki comes with a set of Plugins as part of the standard installation. | ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Line: 38 to 38 | ||||||||
Most Plugins can be installed in three easy steps, with no programming skills required:
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| Special Requests: Some Plugins need certain Perl modules to be preinstalled on the host system. Plugins may also use other resources, like graphics, other modules, applications, templates. In these cases, detailed instructions are in the Plugin documentation. | ||||||||
| Changed: | ||||||||
| < < |
Each Plugin has a standard release page, located in the TWiki:Plugins web at TWiki.org. In addition to the documentation topic (SomePlugin), there's a separate development page.
| |||||||
| > > |
Each Plugin has a standard release page, located in the TWiki:Plugins web at TWiki.org. In addition to the documentation topic (SomePlugin), there"s a separate development page.
| |||||||
| ||||||||
| Line: 54 to 54 | ||||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Line: 68 to 68 | ||||||||
The performance of the system depends on the number of Plugins installed and on the Plugin implementation. Some Plugins impose no measurable performance decrease, some do. For example, outsidePREHandler is an expensive callback function, or a Plugin might use many Perl libraries that need to be initialized with each page view (unless you run mod_perl). It is recommended to measure the performance with and without a new Plugin. Example for Unix:time wget -qO /dev/null http://www.auai.org/cgi-bin/twiki/view/TWiki/AbcPlugin
| ||||||||
| Changed: | ||||||||
| < < |
In case you need to install an "expensive" Plugin and you need its functionality only in one web you can place the Plugin topic into that web. TWiki will initialize the Plugin only if the Plugin topic is found (which won't be the case for other webs.) | |||||||
| > > |
In case you need to install an "expensive" Plugin and you need its functionality only in one web you can place the Plugin topic into that web. TWiki will initialize the Plugin only if the Plugin topic is found (which won"t be the case for other webs.) | |||||||
Managing Plugins | ||||||||
| Changed: | ||||||||
| < < |
When you finish installing a Plugin, you should be able to read the user instructions and go. In fact, some Plugins require additional settings or offer extra options that you have to select. Also, you may want to make a Plugin available only in certain webs, or temporarily disable it. And may want to list all available Plugins in certain topics. You can handle all of these management tasks with simple procedures. | |||||||
| > > |
When you finish #InstallPlugininstalling a Plugin, you should be able to read the user instructions and go. In fact, some Plugins require additional settings or offer extra options that you have to select. Also, you may want to make a Plugin available only in certain webs, or temporarily disable it. And may want to list all available Plugins in certain topics. You can handle all of these management tasks with simple procedures. | |||||||
Setting Preferences | ||||||||
| Line: 128 to 128 | ||||||||
Most Plugins use either the commonTagsHandler or startRenderingHandler for rendering tasks:
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| TWiki:Codev/StepByStepRenderingOrder helps you decide which rendering handler to use. | ||||||||
| Line: 137 to 137 | ||||||||
| ||||||||
| Changed: | ||||||||
| < < |
return "<font color=\"red\">SamplePlugin: Can't load required modules ($@)</font>" if $@;
| |||||||
| > > |
return "<font color=\"red\">SamplePlugin: Can"t load required modules ($@)</font>" if $@;
| |||||||
| ||||||||
| Line: 145 to 145 | ||||||||
| To eliminate the incompatibility problems bound to arise from active open Plugin development, a Plugin versioning system is provided for automatic compatibility checking. | ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
Creating Plugins | ||||||||
| Changed: | ||||||||
| < < |
With a reasonable knowledge of the Perl scripting language, you can create new Plugins or modify and extend existing ones. Basic plug-in architecture uses an Application Programming Interface (API), a set of software instructions that allow external code to interact with the main program. The TWiki Plugin API Plugins by providing a programming interface for TWiki. | |||||||
| > > |
With a reasonable knowledge of the Perl scripting language, you can create new Plugins or modify and extend existing ones. Basic plug-in architecture uses an Application Programming Interface (API), a set of software instructions that allow external code to interact with the main program. The #PluginAPITWiki Plugin API Plugins by providing a programming interface for TWiki. | |||||||
The DefaultPlugin Alternative | ||||||||
| Line: 173 to 173 | ||||||||
The Perl module can be a block of code that connects with TWiki alone, or it can include other elements, like other Perl modules (including other Plugins), graphics, TWiki templates, external applications (ex: a Java applet), or just about anything else it can call.
In particular, files that should be web-accessible (graphics, Java applets ...) are best placed as attachments of the MyFirstPlugin topic. Other needed Perl code is best placed in a lib/TWiki/Plugins/MyFirstPlugin/ directory.
| ||||||||
| Changed: | ||||||||
| < < |
The Plugin API handles the details of connecting your Perl module with main TWiki code. When you're familiar with the Plugin API, you're ready to develop Plugins. | |||||||
| > > |
The Plugin API handles the details of connecting your Perl module with main TWiki code. When you"re familiar with the #PluginAPIPlugin API, you"re ready to develop Plugins. | |||||||
Creating the Perl Module | ||||||||
| Changed: | ||||||||
| < < |
Copy file lib/TWiki/Plugins/EmptyPlugin.pm to <name>Plugin.pm. The EmptyPlugin.pm module contains mostly empty functions, so it does nothing, but it's ready to be used. Customize it. Refer to the Plugin API specs for more information.
| |||||||
| > > |
Copy file lib/TWiki/Plugins/EmptyPlugin.pm to <name>Plugin.pm. The EmptyPlugin.pm module contains mostly empty functions, so it does nothing, but it"s ready to be used. Customize it. Refer to the #PluginAPIPlugin API specs for more information.
| |||||||
If your Plugin uses its own modules and objects, you must include the name of the Plugin in the package name. For example, write Package MyFirstPlugin::Attrs; instead of just Package Attrs;. Then call it using:
| ||||||||
| Line: 188 to 188 | ||||||||
Writing the Documentation Topic | ||||||||
| Changed: | ||||||||
| < < |
The Plugin documentation topic contains usage instructions and version details. It serves the Plugin files as FileAttachments for downloading. (The doc topic is also included in the distribution package.) To create a documentation topic: | |||||||
| > > |
The Plugin documentation topic contains usage instructions and version details. It serves the Plugin files as FileAttachments for downloading. (The doc topic is also included in the #CreatePluginPackagedistribution package.) To create a documentation topic: | |||||||
| ||||||||
| Line: 200 to 200 | ||||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
OUTLINE: Doc Topic Contents | ||||||||
| Changed: | ||||||||
| < < |
Check the Plugins web on TWiki.org for the latest Plugin doc topic template. Here's a quick overview of what's covered: | |||||||
| > > |
Check the Plugins web on TWiki.org for the latest Plugin doc topic template. Here"s a quick overview of what"s covered: | |||||||
| Syntax Rules: <Describe any special text formatting that will be rendered.>" | ||||||||
| Line: 241 to 241 | ||||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Line: 255 to 255 | ||||||||
Where to store Plugin Internal Data | ||||||||
| Changed: | ||||||||
| < < |
In case the Plugin generates data just for internal use, or data which is not specific to a topic, store it in the Plugin's attachment directory. | |||||||
| > > |
In case the Plugin generates data just for internal use, or data which is not specific to a topic, store it in the Plugin"s attachment directory. | |||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||
| Line: 273 to 273 | ||||||||
Where to Store Data for Topics using the Plugin | ||||||||
| Changed: | ||||||||
| < < |
In case the Plugin generates data which is specific to a topic, store it in the topic's attachment directory. | |||||||
| > > |
In case the Plugin generates data which is specific to a topic, store it in the topic"s attachment directory. | |||||||
| Changed: | ||||||||
| < < |
| |||||||
| > > |
| |||||||
| ||||||||