Konstrukt::Doc::PluginList - Complete list of the plugins that are shipped with this package.
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" / &>
<!-- 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.
show
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.
<!-- the easy way --> <& captcha / &>
<!-- 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.
<form
<input
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
<& date / &>
April 23, 2006 - 10:45:16
Complete documentation: Konstrukt::Plugin::date. =head2 diff
Print out an XHTML table with the difference between two texts
<& diff &> <$ left $> 1 2 3 <$ / $> <$ right $> 1 3 <$ / $> <& / &>
<!-- set another amount of "context" lines --> <& diff context="2" &> ... <& / &>
<!-- define a header for the columns --> <& diff left_header="text a" right_header="text b" &> ... <& / &>
A table showing the difference between the two texts.
Complete documentation: Konstrukt::Plugin::diff. =head2 env
Access to the environment variables
<!-- set value --> <& env var="var_name" set="value" / &> <!-- print out value --> <& env var="var_name" / &>
<!-- set value --> <!-- print out value --> value
Complete documentation: Konstrukt::Plugin::env. =head2 errors
Display the error messages that occured during the page processing
<& errors / &>
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
<!-- add form validation code to your page --> <& formvalidator form="some_dialogue.form" / &>
<!-- the same but explicitly define the JS files --> <& formvalidator form="/some/dialogue.form" script="/formvalidator/formvalidator.js" strings="/formvalidator/formvalidator_strings.js" / &>
<!-- 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" / &> <!-- with optional title attribute --> <& hitstats show="counter" title="some page" / &> <!-- display a counter and use the filename of the current page as the title --> <& hitstats show="counter" / &>
Complete documentation: Konstrukt::Plugin::hitstats. =head2 if
Conditional blocks
<!-- 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%! <& / &>
<!-- 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
We will never <& kill &>agree that we always <& / &>do censoring!
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
<& 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
<& perl &>print "foo"<& / &>
Complete documentation: Konstrukt::Plugin::perl. =head2 perlvar
Access to Perl variables
<!-- 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" / &>
<!-- 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
<& sortlines &> some <!-- comments --> unsorted lines <!-- will be put --> here <!-- on top of the list --> <& / &>
<!-- 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.
<!-- 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. -->
<!-- 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. -->
<!-- using custom connection settings --> <& sql template="..." source="dbi_dsn" user="username" pass="password" &> ... <& / &>
<!-- 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
<!-- set value --> <& svar var="var_name" set="value "/ &> <!-- print out value --> <& svar var="var_name" / &>
Complete documentation: Konstrukt::Plugin::svar. =head2 tags
Tagging plugin
<!-- 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" / &>
Tags: <a href="?action=filter;tags=bar">bar</a>, <a href="?action=filter;tags=foo">foo</a>, ...
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
<& template src="some.template" &> <$ field $>will be inserted in the template<$ / $> <& / &>
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
<& upcase &>upper case<& / &>
UPPER CASE
Complete documentation: Konstrukt::Plugin::upcase. =head2 uriencode
URI-encode the text
<& uriencode &>Some Text<& / &> <& uriencode encode="all" &>Some Text<& / &>
Some%20Text %53%6F%6D%65%20%54%65%78%74
Complete documentation: Konstrukt::Plugin::uriencode. =head2 usermanagement
User management. Extensible with plugins.
<!-- show basic user management --> <& usermanagement::basic / &> <!-- show personal data --> <& usermanagement::personal / &> <!-- show user levels --> <& usermanagement::personal / &> <!-- ... see the docs of each usermanagement plugin -->
#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.
Konstrukt::Doc
To install Konstrukt, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Konstrukt
CPAN shell
perl -MCPAN -e shell install Konstrukt
For more information on module installation, please visit the detailed CPAN module installation guide.