Difference: TWikiPlugins (9 vs. 10)

Revision 102001-09-02 - MikeMannix

Line: 1 to 1
 

TWiki Plugins

Changed:
<
<
TWikiPlugins allow you to add new features to TWiki without changing the core program. Using a plug-in approach means that you can:
>
>
Plugin use and development; about the Plugin API.
 
Changed:
<
<
  • add virtually unlimited features while keeping the main TWiki program compact and efficient;
>
>

Overview

You can add Plugins to greatly extend TWiki's functionality, without alering the program core. With a plug-in approach, you can:

  • add virtually unlimited features while keeping the main TWiki code compact and efficient;
 
  • heavily customize an installation and still do clean updates to new versions of TWiki;
  • rapidly develop new TWiki functions in Perl using the Plugin API.
Changed:
<
<
Everything to do with TWiki Plugins - including demos, new releases, downloads, and discussion - is available at TWiki.org, in the TWiki.org Plugins web.
>
>
Everything to do with TWiki Plugins - demos, new releases, downloads, development, general discussion - is available at TWiki.org, in the TWiki.org Plugins web.

Preinstalled Plugins

TWiki comes with three Plugins as part of the standard installation.

  • DefaultPlugin handles some legacy TWiki variables that may be present in long-established sites. This option can be controlled from TWikiPreferences. (Perl programmers can also add rules for simple custom processing.)

  • EmptyPlug is a fully functional module, minus active code; it does nothing and serves as a template for new Plugin development.

  • InterwikiPlugin is preinstalled but can be disabled or removed. Use it for quick linking to to remote sites: TWiki:Plugins expands to TWiki:Plugins on TWiki.org. You can add your own shortcuts and URLs to the existing directory of Wiki-related and other probably useful sites.
 

Installing Plugins

Line: 21 to 35
 
  1. Distribute the files to their proper locations - unzip the zip archive in your TWiki installation directory - if have a standard TWiki installation, this will distribute automatically. Otherwise, place the files according to the directory paths listed on the Plugin top in TWiki:Plugins.
  2. Check the demo example on the Plugin topic: if it's working, the installation was fine!
Changed:
<
<
Some Plugins need certain Perl modules to be pre-installed 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.
>
>
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:
<
<
TWikiPlugin documentation pages are located at TWiki.org, in TWiki:Plugins web. Each Plugin has an doc topic (ex: SomePlugin) and 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.
 
  • Doc page: Read all available info about the Plugin; download the attached distribution files.
Changed:
<
<
  • Dev page: Post feature requests, bug reports and general dev comments; topic title ends in Dev (ex: SomePluginDev).
>
>
  • Dev page: Post feature requests, bug reports and general dev comments; topic title ends in Dev (SomePluginDev).
 
  • User support: Post installation, how to use type questions (and answers, if you have them) in the TWiki:Support web.
Changed:
<
<

Preinstalled Plugins

>
>

On-Site Pretesting

 
Changed:
<
<
TWiki comes with three Plugins as part of the standard installation.
>
>
To test new Plugins on your installation before making them public, you may want to use one of these two approaches:
 
Changed:
<
<
  • DefaultPlugin handles some legacy TWiki variables that may be present in long-established sites. This option can be controlled from TWikiPreferences. (Perl programmers can also add rules for simple custom processing.)
>
>
  • Method 1: Create Production and a Test installation of TWiki.
    • Duplicate the twiki/bin and twiki/lib directories for the Test version, adjusting the paths in the new lib/TWiki.cfg, the twiki/data; the twiki/templates and twiki/pub directories are shared.
    • Test Plugins and other new features in the Test installation until you're satisfied.
    • Copy the modified files to the Production installation. You can update a live TWiki installation and users won't even notice.
 
Changed:
<
<
  • EmptyPlug is a fully functional Plugin module, minus any active code; it does nothing but serve as a template on demand.
>
>
  • Method 2: List the Plugin under Test in the DISABLEDPLUGINS variable in TWikiPreferences. Redefine the DISABLEDPLUGINS variable in the Test web and do the testing there.
 
Deleted:
<
<
  • InterwikiPlugin is included but can be disabled or removed. Use it for quick linking to frequently linked to remote sites. Ex: TWiki:Plugins expands to TWiki:Plugins - on TWiki.org. You can add your own shortcuts and URLs to the existing directory of Wiki-related sites.
 

Managing Plugins

Line: 76 to 92
 
  • SpreadSheetPlugin (2014-09-23, $Rev: 28087 (2014-10-05) $): Add spreadsheet calculation like "$SUM( $ABOVE() )" to TWiki tables or anywhere in topic text
  • BackupRestorePlugin (2013-02-16, $Rev: 26767 (2014-10-05) $): Administrator utility to backup, restore and upgrade a TWiki site
  • ColorPickerPlugin (2013-02-15, $Rev: 26769 (2014-10-05) $): Color picker, packaged for use in TWiki forms and TWiki applications
  • CommentPlugin (2013-02-10, $Rev: 26771 (2014-10-05) $): Quickly post comments to a page without an edit/preview/save cycle
  • DatePickerPlugin (2013-09-04, $Rev: 26773 (2014-10-05) $): Pop-up calendar with date picker, for use in TWiki forms, HTML forms and TWiki plugins
  • EditTablePlugin (2013-12-03, $Rev: 26775 (2014-10-05) $): Edit TWiki tables using edit fields, date pickers and drop down boxes
  • HeadlinesPlugin (2013-11-18, $Rev: 26779 (2014-10-05) $): Show headline news in TWiki pages based on RSS and ATOM news feeds from external sites
  • InterwikiPlugin (2014-10-03, $Rev: 28176 (2014-10-05) $): Write ExternalSite:Page to link to a page on an external site based on aliases defined in a rules topic
  • JQueryPlugin (2014-09-03, $Rev: 28041 (2014-10-05) $): jQuery JavaScript library for TWiki
  • PreferencesPlugin (2014-05-30, $Rev: 27577 (2014-10-05) $): Allows editing of preferences using fields predefined in a form
  • SetGetPlugin (2013-01-28, $Rev: 26789 (2014-10-05) $): Set and get variables in topics, optionally persistently across topic views
  • SlideShowPlugin (2013-04-07, $Rev: 26791 (2014-10-05) $): Create web based presentations based on topics with headings.
  • SmiliesPlugin (2013-01-13, $Rev: 26793 (2014-10-05) $): Render smilies as icons, like  :-)  as smile or  :eek:  as eek!
  • TablePlugin (2014-01-21, $Rev: 26935 (2014-10-05) $): Control attributes of tables and sorting of table columns
  • TagMePlugin (2014-05-15, $Rev: 27386 (2014-10-05) $): Tag wiki content collectively or authoritatively to find content by keywords
  • TinyMCEPlugin: (disabled)
  • TwistyPlugin (2013-03-22, $Rev: 26803 (2014-10-05) $): Twisty section JavaScript library to open/close content dynamically
  • WatchlistPlugin (2014-05-20, $Rev: 27429 (2014-10-05) $): Watch topics of interest and get notified of changes by e-mail
Changed:
<
<
TIP! To test new Plugins on your installation before making them public, you may want to use one of these two approaches:
>
>

The TWiki Plugin API

 
Changed:
<
<
  • Method 1: Create a Production and a Test installation of TWiki. The twiki/data, twiki/templates and twiki/pub directories are shared, and the twiki/bin and twiki/lib directories are separate. Do all tests of Plugins and other new features in the Test installation. When everything works, copy the modified files over to the Production installation. This way, you can update a live TWiki installation and users won't even notice.
>
>
The Application Programming Interface (API) for TWikiPlugins provides the specifications for hooking into the core TWiki code from your external Perl Plugin module. The Plugin API is new to the Production version of TWiki with the TWikiReleaseSpring2001.
 
Changed:
<
<
  • Method 2: List the Plugin under test in the DISABLEDPLUGINS variable in TWikiPreferences. Redefine the DISABLEDPLUGINS variable in the test web and do the testing there.
>
>

Available Core Functions

 
Changed:
<
<

Creating Plugins

>
>
The lib/TWiki/Func.pm implements ALL official Plugin functions. Plugins should ONLY use functions published in this module.
 
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.
>
>
DevALERT: If you use functions not in Func.pm, you run the risk of creating security holes. Also, your Plugin will likely break and require updating when you upgrade to a new version of TWiki.
 
Changed:
<
<

Anatomy of a Plugin

>
>
  • For best performance, enable only the functions you really need. NOTE: outsidePREHandler and insidePREHandler are particularly expensive.
 
Changed:
<
<
A basic TWiki Plugin consists of two elements:
>
>

Predefined Hooks

 
Changed:
<
<
  • a Perl module, ex: YourPlugin.pm
  • a documentation topic, ex: YourPlugin.txt
>
>
In addition to TWiki core functions, Plugins can use predefined hooks, or call backs, listed in the lib/TWiki/Plugins/EmptyPlugin.pm module.
 
Changed:
<
<
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.
>
>
  • All but the initPlugin are disabled. To enable a call back, remove DISABLE_ from the function name.
 
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.
>
>

Plugin Version Detection

 
Changed:
<
<

TWiki Plugin API

>
>
To eliminate the incompatibility problems bound to arise from active open Plugin development, a Plugin versioning system and an API GetVersion detection routine are provided for automatic compatibility checking.
 
Changed:
<
<
The Application Programming Interface (API) for TWikiPlugins provides the specifications for hooking into the core TWiki code from your external Perl Plugin module. The Plugin API is new to the Production version of TWiki with the TWikiReleaseSpring2001.
>
>
  • All modules require a $VERSION='0.000' variable, beginning at 1.000.
 
Changed:
<
<
The lib/TWiki/Func.pm implements ALL official Plugin functions. Plugins should ONLY use functions published in this module.
>
>
  • The initPlugin handler checks all dependencies and returns TRUE if the initialization is OK or FALSE if something went wrong.
    • The Plugin initialization code does not register a Plugin that returns FALSE (or that has no initPlugin handler).
 
Changed:
<
<
DevALERT: If you use functions not in Func.pm, you run the risk of creating security holes. Also, your Plugin will likely break and require updating when you upgrade to a new version of TWiki.
>
>
 
Deleted:
<
<
In addition to TWiki core functions, Plugins can use predefined hooks, or call backs, listed in the lib/TWiki/Plugins/EmptyPlugin.pm module.
 
Changed:
<
<
  • All but the initPlugin are disabled. To enable a call back, remove DISABLE_ from the function name.
>
>

Creating Plugins

 
Changed:
<
<
  • For improve performance, enable only the functions you really need. NOTE: outsidePREHandler and insidePREHandler are particularly expensive.
>
>
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.
 

The DefaultPlugin Alternative

  • DefaultPlugin can handle some outdated TWiki variables, found, for example, in sites recently updated from an old version. Settings are in TWikiPreferences. You can also add your own simple custom processing rules here, though in all but very simple cases, writing a new Plugin is preferable.
Added:
>
>

Anatomy of a Plugin

A basic TWiki Plugin consists of two elements:

  • a Perl module, ex: YourPlugin.pm
  • a documentation topic, ex: YourPlugin.txt

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.

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.

 

Creating the Perl Module

Copy file (EmptyPlugin.pm to <name>Plugin.pm EmptyPlugin.pm contains no executable code, so it does nothing, but it's ready to be used. Customize it. Refer to the Plugin API specs for more information.

Line: 177 to 203
 
  1. Attach the distribution zip file to the topic, ex: YourPlugin.zip.
  2. Link from the doc page to a new, blank page named after the Plugin, and ending in Dev, ex: YourPluginDev. This is the discussion page for future development. (User support for Plugins is handled in TWiki:Support.)
Changed:
<
<
-- MikeMannix - 26 Aug 2001
>
>
-- AndreaSterbini - 29 May 2001
-- MikeMannix - 01 Sep 2001
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 1999-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Note: Please contribute updates to this topic on TWiki.org at TWiki:TWiki.TWikiPlugins.