%INCLUDE
. The Server section is expanded in
response to an AJAX request from a jQuery plugin.
This page also acts as a library of some commonly-used form inputs. For
example, the Topic selector example can be used
in your own topics to define an HTML form input with the name newtopic
by putting this in your topic:
%JQREQUIRE{"ui::autocomplete"}% %INCLUDE{ "%SYSTEMWEB%.JQueryAjaxHelper" section="topicselector" INPUT_NAME="newtopic" EXCLUDE="Web*" }%
Note that the examples below are implemented using base Foswiki functionality. There are a range of plugins, such as Foswiki:Extensions.RenderPlugin, Foswiki:Extensions.FlexWebListPlugin and Foswiki:Extensions.DBCachePlugin that can be used to simplify or improve these sections when building up your own library of input types. Some examples of the use of these plugins are given at the end of this topic.
topic
section of this topic, which expands to the topic list.
INPUT_NAME
: name (and id) of HTML input field
INPUT_VALUE
: preselected value
PLACEHOLDER
: example value
EXCLUDE
: exclude expression to filter out unwanted topics, see the excludetopic
parameter in VarSEARCH
%STARTSECTION{"topicselector"}%<!-- topicselector --> <input type="text" class="foswikiInputField" name="%INPUT_NAME%" id="%INPUT_NAME%" %IF{"defined PLACEHOLDER" then="placeholder=\"%PLACEHOLDER%\""}% autocomplete="%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=topic;skin=text;contenttype=application/json;baseweb=%BASEWEB%;%IF{"defined EXCLUDE" then="exclude=%EXCLUDE%"}%" size="60" value="%IF{"defined INPUT_VALUE" then="%INPUT_VALUE%"}%" /> <!-- //topicselector -->%ENDSECTION{"topicselector"}%
term
: search term substring typed so far
limit
: number of search results to return, defaults to 10
baseweb
: the web where to search for topics
exclude
: exclude expression to filter out unwanted topics
%STARTSECTION{"topic"}%[%SEARCH{ "^%URLPARAM{"term" default="does not exist"}%.*" type="regex" scope="topic" format="<nop>%URLPARAM{"format" encode="safe,quote" default="{\\"label\\":\\"$topic\\", \\"value\\":\\"$topic\\"}"}%" separator="," limit="%URLPARAM{"limit" default="10"}%" nonoise="on" excludetopic="%URLPARAM{"exclude"}%" web="%URLPARAM{"baseweb" default="%BASEWEB%"}%" }%]%ENDSECTION{"topic"}%
INPUT_NAME
: name of text input field
INPUT_VALUE
: preselected value
PLACEHOLDER
: example value
%STARTSECTION{"webselector"}%<!-- webselector --> <input type="text" class="foswikiInputField" name="%INPUT_NAME%" id="%INPUT_NAME%" %IF{"defined PLACEHOLDER" then="placeholder=\"%PLACEHOLDER%\""}% autocomplete="%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=web;skin=text;contenttype=application/json;%IF{"defined EXCLUDE" then="exclude=%EXCLUDE%"}%" size="60" value="%IF{"defined INPUT_VALUE" then="%INPUT_VALUE%"}%" /> <!-- //webselector -->%ENDSECTION{"webselector"}%
term
: search term substring typed so far
limit
: number of search results to return, defaults to 10
%STARTSECTION{"web"}%[%FLEXWEBLIST{ include="^%URLPARAM{"term" default="does not exist"}%.*" ignorecase="on" limit="%URLPARAM{"limit" default="10"}%" format="\"<nop>$web\"" separator=", " subheader=", " subfooter=" " }%]%ENDSECTION{"web"}%
GLOBAL
: toggle search for topics in all webs on/off, defaults to off
PLACEHOLDER
: Example text
%STARTSECTION{"jumpbox"}%<!-- jumpbox --> <input type="text" class="foswikiInputField jqJumpBox {%IF{ "$GLOBAL = 'on'" then="global: true, baseweb:'all, -%TRASHWEB%'" else="global: false, baseweb:'%BASEWEB%'" }%}" name="topic" %IF{"defined PLACEHOLDER" then="placeholder=\"%PLACEHOLDER%\""}% autocomplete="off" size="60" /> %ADDTOZONE{"script" tag="jumpbox::js" section="jumpbox::js" requires="JQUERYPLUGIN::UI::AUTOCOMPLETE" }% <!-- //jumpbox -->%ENDSECTION{"jumpbox"}%The following section is used by the section above; it adds a special Javascript function to the page.
%STARTSECTION{"jumpbox::js"}%<literal> <script> jQuery(function($){ $(".jqJumpBox").each(function() { var $this = $(this), opts = $.extend({}, $this.metadata()); $this.autocomplete({ source: foswiki.getScriptUrl('view', foswiki.getPreference('SYSTEMWEB'), 'JQueryAjaxHelper', { section: 'topic', skin: 'text', contenttype: 'application/json', baseweb: opts.baseweb, }), select: function(event, ui) { window.location.href = foswiki.getScriptUrl('view', undefined, ui.item.value); } }); }); }); </script> </literal>%ENDSECTION{"jumpbox::js"}%
topic
server section, defined above.
$Foswiki::cfg{AntiSpam}{HideUserDetails}
), then this example will not work unless you are an administrator.INPUT_NAME
: name of text input field
INPUT_VALUE
: preselected user
PLACEHOLDER
: example value
%STARTSECTION{"userselector"}%<!-- userselector --> <input type="text" class="foswikiInputField jqUserSelector" name="%INPUT_NAME%" id="%INPUT_NAME%" %IF{"defined PLACEHOLDER" then="placeholder=\"%PLACEHOLDER%\""}% autocomplete="%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=user;skin=text;contenttype=application/json" size="60" value="%IF{"defined INPUT_VALUE" then="%INPUT_VALUE%"}%" /> %ADDTOZONE{"script" tag="userselector::js" section="userselector::js" requires="JQUERYPLUGIN::UI::AUTOCOMPLETE" }% <!-- //userselector -->%ENDSECTION{"userselector"}%The following section is used by the section above; it adds a special Javascript function to the page.
%STARTSECTION{"userselector::js"}%<literal> <script> jQuery(function($){ $(".jqUserSelector").data("ui-autocomplete")._renderItem = function(ul, item) { if (typeof(item.label) !== 'undefined') { return $("<li></li>") .data("item.autocomplete", item) .append("<a><table width='100%'><tr><td width='60px'><img width='50' src='"+item.img+"' /></td><td>"+item.label+"<br />"+item.email+"</td></tr></table></a>") .appendTo(ul); } }; }); </script> </literal>%ENDSECTION{"userselector::js"}%
term
: search term substring typed so far
limit
: number of search results to return, defaults to 10
%STARTSECTION{"user"}%<literal>[%FORMAT{ "%SEARCH{ ".*%URLPARAM{"term" default="does not exist"}%.*" type="regex" scope="topic" format="$percntIF{\"'$percntGROUPINFO{\"$topic\" format=\"$dollarname, \" limit=\"1\"}$percnt'=''\" then=\"$percntUSERINFO{\"$topic\" format=\"$dollarwikiname, \"}$percnt\" else=\"$percntGROUPINFO{\"$topic\" format=\"$dollarname, \" limit=\"1\"}$percnt\" }$percnt" separator="" limit="%URLPARAM{"limit" default="10"}%" nonoise="on" web="%USERSWEB%" }%" type="string" format=" {\"label\":\"<nop>$item\", \"email\":\"$percntUSERINFO{\"$item\" format=\"$emails\"}$percnt\", \"img\":\"$percntFORMFIELD{\"Photo\" topic=\"%USERSWEB%.$item\" default=\"%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/images/nobody.gif\" alttext=\"%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/images/nobody.gif\" }$percnt\" }" separator=",$n" }%]</literal>%ENDSECTION{"user"}%
%QUERY
asynchronously (requires Foswiki 1.1
or later).
ID
: id of an element to bind an onclick event to
SOURCE
: topic to get the field from
QUERY
: query to perform
%STARTSECTION{"queryfetcher"}%%ADDTOZONE{"script" tag="query::js" requires="JQUERYPLUGIN" text ="<literal> <script> jQuery(function($){ $(\"#%ID%\").click(function() { $.get(foswiki.getScriptUrl('view', foswiki.getPreference('SYSTEMWEB'), 'JQueryAjaxHelper', { section: 'query', source: '%SOURCE%', query: '%QUERY%', skin: 'text' }), function(data) { // This is the function that will be executed when the // data is fetched alert('%QUERY% is ' + data); }); }); }); </script></literal> "}%%ENDSECTION{"queryfetcher"}%
source
: source topic
query
: query to perform
%STARTSECTION{"query"}%<noautolink>%QUERY{ "'%URLPARAM{"source" default="%BASEWEB%.%BASETOPIC%"}%'/%URLPARAM{"query" default="query missing"}%" style="json" }%</noautolink>%ENDSECTION{"query"}%
source
: source topic
formfield
: name of formfiled to retrieve
%STARTSECTION{"formfield"}%%FORMFIELD{ "%URLPARAM{"formfield" default="does not exist"}%" topic="%URLPARAM{"source" default="does not exist"}%" }%%ENDSECTION{"formfield"}%
<img...>
to a user's photo. See the User selector example above.
URL Parameters name
: name of user
height
: image height, defaults to 50
%STARTSECTION{"userphoto"}%<img src='%FORMFIELD{"Photo" topic="%USERINFO{"%URLPARAM{"name" default="does not exist"}%" format="$wikiusername"}%" default="%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/images/nobody.gif" alttext="%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/images/nobody.gif"}%' alt='%URLPARAM{"name"}%' height='%URLPARAM{"height" default="50"}%' />%ENDSECTION{"userphoto"}%
expression
: TML to be evaluated; will be wrapped into %...% before executing it
scope
: optionally defines the topic within which the expression is expanded
%STARTSECTION{"expand"}%%EXPAND{"$percnt%URLPARAM{"expression"}%$percnt" scope="%URLPARAM{"scope" default="%BASEWEB%.%BASETOPIC%"}%"}%%ENDSECTION{"expand"}%