NAME
Konstrukt::Doc::PluginList - Complete list of the plugins that are shipped with this package.
PLUGINS
blog
Konstrukt blogging engine
<& blog / &>
Complete documentation: Konstrukt::Plugin::blog.=head2 bookmarks
Bookmark management for registered users
You may simply integrate it by putting
<& bookmarks / &>
somewhere in your website.
Complete documentation: Konstrukt::Plugin::bookmarks.=head2 browserstats
Browser statistics plugin
Usage:
<!-- add browser request to the db -->
<& browserstats / &>
or
<!-- display the overall top browsers -->
<& browserstats show="all" / &>
or
<!-- display the top browsers grouped by year -->
<!-- month and day will also work, if the data is stored in such a fine granularity -->
<!-- the display aggregation should not be finer than the setting browserstats/aggregate -->
<& browserstats show="year" / &>
Result:
A table displaying the statistics, if the attribute show
is set. Nothing otherwise.
Complete documentation: Konstrukt::Plugin::browserstats.=head2 calendar
Management of private and public calendar items
You may simply integrate it by putting
<& calendar / &>
somewhere in your website.
Complete documentation: Konstrukt::Plugin::calendar.=head2 captcha
Put captchas in your forms easily.
Tag interface
Usage:
<!-- the easy way -->
<& captcha / &>
or
<!-- defining your own settings that may differ from the defaults -->
<& captcha type="text" template="/templates/captcha/text.template" / &>
Result: (Something like this)
<script type="text/javascript">
var enctext = "%50%0A%3A%21%44%38%4C%0C%0D%0E%31%6C%13%2F%0D%12%18%00%3C%30%6E%2D%02%11%1B%06%26%73%11%38%15%12%09%5E%76%39%58%28%08%07%02%41%74%32%5D%2D%1F%11%51%41%2C%29%5D%6E%4C%14%0D%0F%21%34%0C%6E%5D%16%06%01%23%73%11%63%52%68";
var key = "lcTQ1Llb";
function xor_enc(text, key) {
var result = '';
for(i = 0; i < text.length; i++)
result += String.fromCharCode(key.charCodeAt(i % key.length) ^ text.charCodeAt(i));
return result;
}
document.write(xor_enc(unescape(enctext), key));
</script>
<noscript>
<label>Antispam:</label>
<div>
<p>Please type the text '1tjbw' into this field:</p>
<input name="captcha_answer" />
</div>
</noscript>
<input name="captcha_hash" type="hidden" value="3452c4fb13505c5ffa256f2352851ed2b9286af70c3f9ed65e3e888690e1ee69" />
The captcha tag will usually be embedded in an existing <form
>. It will only generate the question (using a template) and two <input
> HTML-tags that will accept the answer and pass a hash of the correct answer to the server.
Perl interface
It's very easy to add a captcha-check to your plugins:
my $template = use_plugin 'template';
if ((use_plugin 'captcha')->check()) {
#captcha solved!
#your code...
} else {
#captcha not solved!
#e.g. put error message and ask again:
$self->add_node($template->node('error_message.template'));
$self->add_node($template->node('template_with_input_form_and_captcha_tag.template'));
}
Complete documentation: Konstrukt::Plugin::captcha.=head2 date
Displays the current date
Usage:
<& date / &>
Result:
April 23, 2006 - 10:45:16
Complete documentation: Konstrukt::Plugin::date.=head2 diff
Print out an XHTML table with the difference between two texts
Usage:
<& diff &>
<$ left $>
1
2
3
<$ / $>
<$ right $>
1
3
<$ / $>
<& / &>
or
<!-- set another amount of "context" lines -->
<& diff context="2" &>
...
<& / &>
or
<!-- define a header for the columns -->
<& diff left_header="text a" right_header="text b" &>
...
<& / &>
Result:
A table showing the difference between the two texts.
Complete documentation: Konstrukt::Plugin::diff.=head2 env
Access to the environment variables
Usage:
<!-- set value -->
<& env var="var_name" set="value" / &>
<!-- print out value -->
<& env var="var_name" / &>
Result:
<!-- set value -->
<!-- print out value -->
value
Complete documentation: Konstrukt::Plugin::env.=head2 errors
Display the error messages that occured during the page processing
Usage:
<& errors / &>
Result:
A list of the errors, that occurred during the processing of the file, if any.
Complete documentation: Konstrukt::Plugin::errors.=head2 formvalidator
HTML form validator
Usage:
<!-- add form validation code to your page -->
<& formvalidator form="some_dialogue.form" / &>
or
<!-- the same but explicitly define the JS files -->
<& formvalidator
form="/some/dialogue.form"
script="/formvalidator/formvalidator.js"
strings="/formvalidator/formvalidator_strings.js"
/ &>
Result:
<!-- add form validation code to your page -->
<script type="text/javascript" src="/formvalidator/formvalidator.js"></script>
<script type="text/javascript" src="/formvalidator/formvalidator_strings.js"></script>
<script type="text/javascript">
<!-- JS definitions of your form ... -->
</script>
Complete documentation: Konstrukt::Plugin::formvalidator.=head2 guestbook
Konstrukt guestbook
<& guestbook / &>
Complete documentation: Konstrukt::Plugin::guestbook.=head2 hitstats
Hit statistics plugin
<!-- count hit. use the specified title -->
<& hitstats title="some page" / &>
<!-- count hit. use the current filename as title -->
<& hitstats / &>
<!-- display the overall top sites -->
<& hitstats show="all" / &>
<!-- display the top sites grouped by year -->
<!-- month and day will also work, if the data is stored in such a fine granularity -->
<!-- the display aggregation should not be finer than the setting hitstats/aggregate -->
<& hitstats show="year" / &>
<!-- only display the top 20 sites -->
<& hitstats show="all" limit="20" / &>
<!-- display a counter for the current site -->
<& hitstats show="counter" / &>
<!-- with optional title attribute -->
<& hitstats show="counter" title="some page" / &>
Complete documentation: Konstrukt::Plugin::hitstats.=head2 if
Conditional blocks
Usage:
<!-- will put out "elsif1" -->
<& if condition="0" &>
<$ then $>then<$ / $>
<$ elsif condition="1" $>elsif1<$ / $>
<$ elsif condition="1" $>elsif2<$ / $>
<$ else $>else<$ / $>
<& / &>
<!-- shortcut, when only using "then" and no elsif or else -->
<!-- will put out "The condition is true!" -->
<& if condition="2 > 1" &>
The condition is true!
<& / &>
<!-- dynamic conditions -->
<!-- non-dynamic conditions will only be checked once and then get cached -->
<& if condition="int rand 2" dynamic="1" &>
The condition is true with a chance of 50%!
<& / &>
Result:
<!-- will put out "elsif1" -->
elsif1
<!-- shortcut, when only using "then" and no elsif or else -->
<!-- will put out "The condition is true!" -->
The condition is true!
<!-- dynamic conditions -->
<!-- non-dynamic conditions will only be checked once and then get cached -->
The condition is true with a chance of 50%!
Complete documentation: Konstrukt::Plugin::if.=head2 kill
Remove content from a website
Usage:
We will never <& kill &>agree that we always <& / &>do censoring!
Result:
We will never do censoring!
Complete documentation: Konstrukt::Plugin::kill.=head2 log
Konstrukt logging facilities.
<!-- add a log entry.
key1-5 are optional. -->
<& log
action="put"
type="login"
description="user 'foo' logged in"
key1="some additional info"
key2="some additional info"
key3="some additional info"
key4="some additional info"
key5="some additional info"
/ &>
<!-- display log entries -->
<& log
type="log type"
keycount="number of additional keys to display"
orderby="column"
limit="42"
/ &>
Complete documentation: Konstrukt::Plugin::log.=head2 param
Displays the value of a specified HTTP parameter
Usage:
<& param key="param_name" &>default value if not defined<& / &>
Result: (when invoked like: /page.html?param_name=foo)
foo
Complete documentation: Konstrukt::Plugin::param.=head2 perl
Embedding perl code in your pages/templates
Usage:
<& perl &>print "foo"<& / &>
Result:
foo
Complete documentation: Konstrukt::Plugin::perl.=head2 perlvar
Access to Perl variables
Usage:
<!-- set value -->
<& perlvar var="$Foo::Bar" set="baz" / &>
<!-- print out value -->
<& perlvar var="$Foo::Bar" / &>
<& perlvar var="undef" &>this default will be used<& / &>
<!-- unset value -->
<& perlvar var="$Foo::Bar" unset="1" / &>
Result:
<!-- set value -->
<!-- print out value -->
baz
this default will be used
<!-- unset value -->
Complete documentation: Konstrukt::Plugin::perlvar.=head2 sortlines
Sort all lines of plaintext nodes
Usage:
<& sortlines &>
some
<!-- comments -->
unsorted
lines
<!-- will be put -->
here
<!-- on top of the list -->
<& / &>
Result:
<!-- comments -->
<!-- will be put -->
<!-- on top of the list -->
here
lines
some
unsorted
Complete documentation: Konstrukt::Plugin::sortlines.=head2 sql
Perform SQL queries. Usually combined with templates to display the results.
SELECT queries
Usage:
<!-- put query results into a template using the dbi default settings defined in your konstrukt.settings
see the Konstrukt::DBI documentation for the configuration of the default settings -->
<& sql template="list_layout.template" &>
SELECT * FROM some_table
<& / &>
<!-- you must have a list <+@ sql @+> in your template file to which the results are passed.
the fields inside the list should be named like the columns in your query. -->
or
<!-- but you may also define the listname yourself -->
<& sql template="list_layout.template" list="some_list_name" &>
SELECT * FROM some_table
<& / &>
<!-- then you should have a list <+@ some_list_name @+> in your template file. -->
or
<!-- using custom connection settings -->
<& sql template="..." source="dbi_dsn" user="username" pass="password" &>
...
<& / &>
Other queries
<!-- some query that won't return result data -->
<& sql &>DELETE FROM some_table WHERE id=23<& / &>
Complete documentation: Konstrukt::Plugin::sql.=head2 svar
Access to session values
Usage:
<!-- set value -->
<& svar var="var_name" set="value "/ &>
<!-- print out value -->
<& svar var="var_name" / &>
Result:
<!-- set value -->
<!-- print out value -->
value
Complete documentation: Konstrukt::Plugin::svar.=head2 tags
Tagging plugin
Tag interface
Usage:
<!-- display all tags as a cloud -->
<& tags template="/tags/cloud.template" limit="30" order="alpha|count" / &>
<!-- display all tags for a specified plugin.
limit, order and template are also applicable here -->
<& tags plugin="blog|image|..." / &>
<!-- list tags for a specified entry only.
show, limit, order are ignored. the template attribute is applicable -->
<& tags plugin="blog" entry="42" / &>
Result:
Tags: <a href="?action=filter;tags=bar">bar</a>,
<a href="?action=filter;tags=foo">foo</a>, ...
Perl interface
my $tags = use_plugin 'tags';
#get all tags
my $all_tags = $tags->get();
#get all tags for a specified plugin
my $all_blog_tags = $tags->get('blog');
#get tags for a specified content entry (blog entry #42)
my $all_entry_tags = $tags->get('blog', 42);
#get all entries for a specified tag query
my $entries = $tags->get_entries('must have all this tags');
#get all blog entries matching the query
my $entries = $tags->get_entries('must have all this tags', 'blog');
#simple OR sets are also possible
my $entries = $tags->get_entries('must have all this tags {and one of those}');
#set tags
$tags->set('blog', 42, 'some tags here');
#delete all tags for a specified entry
$tags->delete('blog', 42);
Complete documentation: Konstrukt::Plugin::tags.=head2 template
Konstrukt templating engine
Tag interface
<& template src="some.template" &>
<$ field $>will be inserted in the template<$ / $>
<& / &>
Perl interface
use_plugin 'template';
$self->add_node($template->node('path/to/some.template', {
field1 => 'value1',
some_list => [
{ field1 => 'a', field2 => 'b' },
{ field1 => 'c', field2 => 'd' },
...
]
}));
Complete documentation: Konstrukt::Plugin::template.=head2 upcase
Convert all text into upper case
Usage:
<& upcase &>upper case<& / &>
Result:
UPPER CASE
Complete documentation: Konstrukt::Plugin::upcase.=head2 uriencode
URI-encode the text
Usage:
<& uriencode &>Some Text<& / &>
<& uriencode encode="all" &>Some Text<& / &>
Result:
Some%20Text
%53%6F%6D%65%20%54%65%78%74
Complete documentation: Konstrukt::Plugin::uriencode.=head2 usermanagement
User management. Extensible with plugins.
Tag interface
<!-- show basic user management -->
<& usermanagement::basic / &>
<!-- show personal data -->
<& usermanagement::personal / &>
<!-- show user levels -->
<& usermanagement::personal / &>
<!-- ... see the docs of each usermanagement plugin -->
Perl interface
#within your plugin's init sub you should use the wanted modules
use Konstrukt::Plugin;
sub init {
#...
#example for the basic plugin. the usage of the others is similar.
$self->{user_basic} = use_plugin 'usermanagement::basic' or return undef;
}
#then you may use the plugin
sub my_method {
my $uid = $self->{user_basic}->id();
}
Complete documentation: Konstrukt::Plugin::usermanagement.=head2 wiki
Plugin to convert wiki markup and manage wiki content
<& wiki &>
= Headline
some text
<& / &>
<& wiki page="FooBar" / &>
Complete documentation: Konstrukt::Plugin::wiki.=head1 AUTHOR
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.