This topic is designed to be a generic 'helper', reusable for any
DataForm you may have, which makes a UI to create and summarise topics using a given
DataForm.
Foswiki:Extensions.FlexFormPlugin is not enabled. You need this plugin installed and enabled for this helper topic to work.
It provides the following:
- An inline HTML form which can create a new topic using a DataForm that you specify.
- Warns if the user doesn't have permission to create the topic
- A summary table of the topics that use the specified DataForm
- A summary/count in the footer of cell values for formfields that are checkbox/select/radio/textboxlist type.
Example
%INCLUDE{
"%TOPIC%" section="creator"
inweb="%SYSTEMWEB%" topic="FAQAUTOINC0"
form="%SYSTEMWEB%.FAQForm"
action="save"
}%
---++++ Summary
%INCLUDE{
"%TOPIC%" section="summarytable"
inweb="%SYSTEMWEB%" form="%SYSTEMWEB%.FAQForm"
}%
Test:
Summary
%SEARCH{
"form.name='System.FAQForm'"
type="query"
web="System"
nototal="on"
header="|
Topic | %RENDERFORDISPLAY{
form="System.FAQForm"
format="*$name*"
separator=" | "
}% |
Modified |
By |"
format="|
$topic | %RENDERFORDISPLAY{
form="System.FAQForm"
format="$formfield($name)"
separator=" | "
}% | $isodate |
$wikiname |"
footer="||%RENDERFORDISPLAY{
form="System.FAQForm"
format="$percntIF{
\"'$type'=~'^(select|checkbox|radio|textboxlist)'\"
then=\" $dollarpercntCALC{$COUNTITEMS($ABOVE())}$dollarpercnt \"
}$percnt"
separator="|"
}%|||
Total: $ntopics"
}%
Sections
-
creator
- show formfields to create a new topic using a particular form. Variables (see CommandAndCGIScripts for more info):
-
inweb
- web to create topics into
-
topic
- topic name pattern, eg. FooAUTOINC0
-
form
- form to create with
-
redirectto
- redirect somewhere after the entry is created, Eg. MyProject.Congratulations
-
action
- the action to perform on submit: edit
(continue editing the record after submit) or save
(just save)
-
editpart
- when used with action = edit
, editpart
may be set to form
in which case the user is presented with the form part of the topic to edit.
-
templatetopic
- a topic which is used as a template for the newly created topic. Its content & metadata will be copied into the new topic & the edit formfield values will be pre-populated from it.
-
topicparent
- the parent for the newly created topic
-
summarytable
- show a summary of the topics using the form
, with summary of cell values in the footer for checkbox/select/radio/textboxlist formfields
%STARTSECTION{"creator"}%%IF{
"NOT context authenticated OR '%topic%' allows 'CHANGE'"
then="$percntINCLUDE{\"%TOPIC%\" section=\"showcreator\"}$percnt"
else="$percntINCLUDE{\"%TOPIC%\" section=\"showperms\"}$percnt"
}%%ENDSECTION{"creator"}%
%STARTSECTION{"showperms"}%<blockquote class='foswikiHelp'>%I% To create an entry, you need to be
logged as a member of one of the following:
%EXPAND{"$percntALLOWWEBCHANGE$percnt" context="%inweb%.%topic%"}%
</blockquote>%ENDSECTION{"showperms"}%
%STARTSECTION{"showcreator"}%<form method="POST" action="%SCRIPTURLPATH{"%action%"}%/%inweb%/%topic%">
%RENDERFOREDIT{form="%form%"}%
%BUTTON{"%MAKETEXT{"Create"}%" icon="newtopic" type="submit"}%
%CLEAR%
<input type="hidden" name="onlywikiname" value="off" />
<input type="hidden" name="onlynewtopic" value="on" />
<input type="hidden" name="formtemplate" value="%form%"/>
%IF{"defined templatetopic AND templatetopic"
then="<input type='hidden' name='templatetopic' value='%templatetopic%'/>$n"
}%%IF{"defined redirectto AND redirectto"
then="<input type='hidden' name='redirectto' value='%redirectto%'/>$n"
else="<input type='hidden' name='redirectto' value='%BASEWEB%.%BASETOPIC%'/>$n"
}%%IF{"defined editpart AND editpart"
then="<input type='hidden' name='action' value='%editpart%'/>$n"
else="<input type='hidden' name='action' value='form'/>$n"
}%%IF{"defined topicparent AND topicparent"
then="<input type='hidden' name='topicparent' value='%topicparent%'/>$n"
else="<input type='hidden' name='topicparent' value='%BASETOPIC%'/>$n"
}%
</form>%ENDSECTION{"showcreator"}%
%STARTSECTION{"summarytable"}%%SEARCH{
"form.name='%form%'"
type="query"
web="%inweb%"
nototal="on"
header="| *Topic* | %RENDERFORDISPLAY{
form="%form%"
format="*$name*"
separator=" | "
}% | *Modified* | *By* |"
format="| [[$web.$topic][$topic]] | %RENDERFORDISPLAY{
form="%form%"
format="$formfield($name)"
separator=" | "
}% | $isodate | [[$wikiusername][$wikiname]] |"
footer="||%RENDERFORDISPLAY{
form="%form%"
format="$percntIF{
\"'$type'=~'^(select|checkbox|radio|textboxlist)'\"
then=\" $dollarpercntCALC{$COUNTITEMS($ABOVE())}$dollarpercnt \"
}$percnt"
separator="|"
}%|||
*Total:* $ntopics"
}%%ENDSECTION{"summarytable"}%
A test example exists at
https://wiki.trin.org.au/Sandbox/TestTopic56
FlexFormPlugin is used extensively in
WikiWorkbenchContrib. Similar functions as the both above are
RenderSimpleTopicCreator and
RenderTopicsOfType.
--
MichaelDaum - 21 Sep 2011