Konstrukt::SimplePlugin - Base class for simple Konstrukt plugins.
package Konstrukt::Plugin::my_plugin; use base 'Konstrukt::SimplePlugin'; #(over)write (some of) the methods: init, default-action, other action handlers. #per request initialization sub init { my ($self) = @_; #... } #initialization that is needed before the first time your plugin can be used #write methods for your actions (will be called with page.html?${yourpluginname}_action=some_action) sub some_action :Action { my ($self, $tag, $content, $params) = @_; #... } #will be called when no sub matches the action name sub default :Action { my ($self, $tag, $content, $params) = @_; #... } #...
Basically:
use Konstrukt::Plugin; #import use_plugin my $plugin = use_plugin 'some_plugin'; $plugin->method();
See "Using existing plugins" in Konstrukt::Plugin for more details.
Base class for simple Konstrukt plugins.
Only the methods relevant for creating a simple plugin are documented.
Every method that should be accessible from the client must have a :Action
attribute. Otherwise it cannot be called from the client.
If you want some more control over what your plugin does (e.g. to gain performance) you may want to inherit Konstrukt::Plugin. As SimplePlugin
inherits from Plugin
you may also take more control of your plugin behaviour as you could when developing a Plugin
. The methods aren't documented here to keep it simple, but you may of course read the Plugin docs and apply (most of) them to your SimplePlugin
.
Method that will be called right before the first usage within a request. Here you should do per request initialization work like definition of default settings.
Should be overridden by the inheriting class.
Should be overloaded by your plugin and its backends, if they need installation before the first run.
The installation should be performed according to the current settings like the selected backend and database settings as well as the template path.
Usually in the backend module this method will create database tables for your plugin. The "main" plugin should load the backend plugin on init, that is defined in the settings, and then the install method will be called automatically on the backend module when it gets loaded.
The "main" plugin may create templates that are needed for the output.
Will be called automatically after the plugin has been loaded and init()
ialized, if the setting autoinstall
is true.
You may want to use "plugin_dbi_install_helper" in Konstrukt::Lib for the installation of your DBI backend plugins and "plugin_file_install_helper" in Konstrukt::Lib for the installation of default templates for your plugin, which can be embedded at the end of your plugin module.
Don't confuse this method with "init", which will be called once on every request.
Parameters:
none
You have to write a method for each "action" of your plugin. Your method will then be called with the parameters listed below.
The action will be called with page.html?${yourpluginname}action=some_action
.
You may print
some output here:
print 'something';
Or put out other plugin tags (e.g. templates) by adding nodes to the result:
#put out a template containing another template in a field: my $template = use_plugin 'template'; $self->add_node($template->node('some.template', { some_field => $template->node('some_other.template') }));
Parameters:
my $source = $tag->{tag}->{attributes}->{src};
and the content inside the tag (via the parse tree nodes):
my $node = $tag->{first_child}; while (defined $node) { #do stuff on $node->{content}... $node = $node->{next}; }
The default action handler of this plugin. This method will be called, when no action has been specified. For some more info take a look at "some_action".
This sub should be overridden by the inheriting class.
Parameters:
To keep it simple some methods that evey plugin has are not documented here, as they are of minor relevance for "simple" plugin.
They are defined with good defaults for a simple plugin and you shouldn't need to care about them. If you're interested in this methods nonetheless, read on!
Returns 0 by default.
See "prepare_again" in Konstrukt::Plugin for more details.
Returns 1 by default.
See "execute_again" in Konstrukt::Plugin for more details.
Won't be used by default.
See "prepare" in Konstrukt::Plugin for more details.
Will handle the request internally and dispatch it to your action methods.
See "execute" in Konstrukt::Plugin for more details.
Will be used internally to catch the print
s of your plugin.
Works the same way as in "print_event" in Konstrukt::Plugin::perl.
Copyright 2006 Thomas Wittek (mail at gedankenkonstrukt dot de). All rights reserved.
This document is free software. It is distributed under the same terms as Perl itself.