NAME
Konstrukt::Doc::FunctionPlugins - Using plugins to add dynamics to your web page
DESCRIPTION
I will only give a brief overview of some of the existing "low level" plugins. For more detailed information about all of the plugins and their configuration take a look at the manual pages of each plugin.
These "low level" plugins perform rather basic tasks and will be used to add some logic to the presentation/templates.
There are also "high level" plugins, which represent complex applications that can be easily and seamlessly integrated into your web site.
If the existing plugins don't offer the funktionality you need, you usually would implement your own application logic as a plugin.
"LOW LEVEL" PLUGINS: FUNCTIONS
captcha
captcha: Put captchas in your forms easily. You can then easily check the answer in your perl code.
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" />
date
date: Displays the current date. Mainly a simple demonstration plugin.
Usage:
<& date / &>
Result:
April 23, 2006 - 10:45:16
diff
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.
env
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
formvalidator
formvalidator: HTML form validator. You can then easily check the correctness of the input in your perl code.
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>
if
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!
<& / &>
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!
kill
kill: Remove content from a website.
Usage:
We will never <& kill &>agree that we always <& / &>do censoring!
Result:
We will never do censoring!
mail::obfuscator
perl: Hide email addresses from SPAM harvesters.
Usage:
<& mail::obfucator name="John Doe" mail="john@doe.com" / &>
Result:
<!-- used to decrypt the email address -->
<script type="text/javascript">
<!--
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;
}
// -->
</script>
<script type="text/javascript">
<!--
document.write(xor_enc(unescape('encrypted link'), 'key to decrypt'));
-->
</script>
<noscript>
John Doe: john<img src="/gfx/layout/s.gif" alt="> add @-character here <" />doe.com
</noscript>
param
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
perl
perl: Embedding perl code in your pages/templates.
Usage:
<& perl &>print "foo"<& / &>
Result:
foo
perlvar
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<& / &>
Result:
<!-- set value -->
<!-- print out value -->
baz
this default will be used
sortlines
sortlines: Sort all lines of contained plaintext
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
sql
sql: Perform SQL queries. Usually combined with templates to display the results.
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 query="SELECT * FROM some_table" template="list_layout.template" / &>
<!-- 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 query="SELECT * FROM some_table" template="list_layout.template" list="some_list_name" / &>
<!-- then you should have a list <+@ some_list_name @+> in your template file. -->
or
<!-- using custom connection settings -->
<& sql query="..." template="..." source="dbi_dsn" user="username" pass="password" / &>
or
<!-- some query that won't return result data -->
<& sql query="DELETE FROM some_table WHERE id=23" / &>
Result:
depends ;)
svar
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
tags
tags: Tagging plugin.
Using the perl interface you can set the tags for some objects.
Usage:
<!-- display all tags as a cloud -->
<& tags template="/tags/cloud.template" limit="30" order="alpha|count" / &>
or
<!-- display all tags for a specified plugin.
limit, order and template are also applicable here -->
<& tags plugin="blog|image|..." / &>
or
<!-- 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>, ...
template
template: Konstrukt templating engine.
For a description see above or at the manual page of this plugin.
upcase
upcase: Convert all text into upper case. Also mainly a demonstration plugin with no particular use...
Usage:
<& upcase &>upper case<& / &>
Result:
UPPER CASE
uriencode
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
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.
SEE ALSO
Next: Konstrukt::Doc::ApplicationPlugins
Previous: Konstrukt::Doc::Templating
Parent: Konstrukt::Doc
See also: Konstrukt::Doc::PluginList