JQueryAjaxHelper

%JQREQUIRE{"chili"}% %JQREQUIRE{"autocomplete"}%

This is a set of simple helper applications that can be used in ajax wiki applications, i.e. to fetch properties of dynamically populate jquery.autocomplete enabled input boxes.

Form library

Topic selector

Parameters

  • INPUT_NAME: name of text input field
  • INPUT_VALUE: preselected value
  • EXCLUDE: exclude expression to filter out unwanted topics, see the docu of the excludetopic parameter in VarSEARCH

Implementation

%STARTSECTION{"topicselector"}%<!-- topicselector  -->
<input type="text" class="foswikiInputField" name="%INPUT_NAME%" id="%INPUT_NAME%" autocomplete="%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=topic;contenttype=text/plain;skin=text;baseweb=%BASEWEB%;%IF{"defined EXCLUDE" then="exclude=%EXCLUDE%"}%" size="60" value="%IF{"defined INPUT_VALUE" then="%INPUT_VALUE%"}%" />
<!-- //topicselector -->%ENDSECTION{"topicselector"}%

Test

Select a topic:

Web selector

Parameters

  • INPUT_NAME: name of text input field
  • INPUT_VALUE: preselected value
  • EXCLUDE: exclude expression to filter out unwanted topics, see the docu of the excludetopic parameter in VarSEARCH

Implementation

%STARTSECTION{"webselector"}%<!-- webselector  -->
<input type="text" class="foswikiInputField {matchCase:true}" name="%INPUT_NAME%" id="%INPUT_NAME%" autocomplete="%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=web;contenttype=text/plain;skin=text;%IF{"defined EXCLUDE" then="exclude=%EXCLUDE%"}%" size="60" value="%IF{"defined INPUT_VALUE" then="%INPUT_VALUE%"}%" />
<!-- //webselector -->%ENDSECTION{"webselector"}%

Test

Select a web:

Jump box

Parameters

  • INPUT_NAME: name of text input field, defaults to jumpbox
  • GLOBAL: toggle search for topics in all webs on/off, defaults to off

Implementattion

%STARTSECTION{"jumpbox"}%<!-- jumpbox -->
<input type="text" class="foswikiInputField" name="%IF{"defined INPUT_NAME" then="%INPUT_NAME%" else="jumpbox"}%" id="%IF{"defined INPUT_NAME" then="%INPUT_NAME%" else="jumpbox"}%" autocomplete="off" size="60" />
<script type="text/javascript">
(function($){
  $(function(){
    $("#%IF{"defined INPUT_NAME" then="%INPUT_NAME%" else="jumpbox"}%").autocomplete(
      "%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=topic;contenttype=text/plain;skin=text;%IF{"'%GLOBAL%' = 'on'" then="baseweb=all;format=$web/$topic" else="baseweb=%BASEWEB%;format=$topic"}%"
    ).result(function(event, item) {
      window.location.href="%SCRIPTURLPATH{"view"}%/%IF{"'%GLOBAL%' != 'on'" then="%BASEWEB%/"}%"+item;
    });
  });
})(jQuery);
</script>
<!-- //jumpbox -->%ENDSECTION{"jumpbox"}%

Test

Local Jump:

Global Jump:

User selector

Parameters

  • INPUT_NAME: name of text input field
  • INPUT_VALUE: preselected user
  • MULTIPLE: true/false - select multiple users

Implementation

%STARTSECTION{"userselector"}%<!-- userselector -->
<input type="text" class="foswikiInputField" name="%INPUT_NAME%" id="%INPUT_NAME%" autocomplete="off" size="60" value="%IF{"defined INPUT_VALUE" then="%INPUT_VALUE%"}%" />
<script type="text/javascript">
(function($){
  $(function(){
    $("#%INPUT_NAME%").autocomplete(
      "%SCRIPTURL{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?section=user_fast;contenttype=text/plain;skin=text",
      {
        autoFill:false,
        selectFirst:false,
        scrollHeight:250,
        %IF{"not isempty MULTIPLE" then="multiple: true," else="/* single select */"}%
        formatItem: function(row, index, max, search) {
          return "<table width='100%'><tr><td width='60px'><img width='50' src='"+row[2]+"' /></td><td>"+row[0]+"<br />"+row[1]+"</td></tr></table>";
        }
      }
    );
  });
})(jQuery);
</script>
<!-- //userselector -->%ENDSECTION{"userselector"}%

Test

Find user:

Autocomplete backends

These are best called using a view url of the following format
%SCRIPTURLPATH{"view"}%/%SYSTEMWEB%/JQueryAjaxHelper?contenttype=text/plain;skin=text;section=<backend>;<parameters>

You could also make use of Foswiki:Extensions/RenderPlugin to implement any of the below backends in a more flexible way. Note, that jquery.autocomplete will always add a q url param to the end of this string.

Topic selector

Url parameters

  • q: search term substring typed so far
  • limit: number of search results to return, defaults to 10
  • baseweb: the web where to search for topics
  • format: format of returned values, defaults to $topic
  • exclude: exclude expression to filter out unwanted topics

Implementation

%STARTSECTION{"topic"}%%SEARCH{
  "^%URLPARAM{"q" default="does not exist"}%.*"
  type="regex"
  scope="topic"
  format="<nop>%URLPARAM{"format" default="$topic"}%"
  separator="$n"
  limit="%URLPARAM{"limit" default="10"}%"
  nonoise="on"
  excludetopic="%URLPARAM{"exclude"}%"
  web="%URLPARAM{"baseweb" default="%BASEWEB%"}%"
}%%ENDSECTION{"topic"}%

Web selector

Needs Foswik:Extensions/FlexWebListPlugin

Url parameters

  • q: search term substring typed so far
  • limit: number of search results to return, defaults to 10

Implementation

%STARTSECTION{"web"}%%FLEXWEBLIST{
  include="%URLPARAM{"q" default="does not exist"}%.*"
  exclude="%URLPARAM{"exclude"}%"
  limit="%URLPARAM{"limit" default="10"}%"
  format="<nop>$web"
  separator="$n"
  subheader="$n"
}%%ENDSECTION{"web"}%

User and Group selector

Url parameters

  • q: search term substring typed so far
  • limit: number of search results to return, defaults to 10

Implementation (SEARCH-based)

%STARTSECTION{"user"}%%SEARCH{
   "^%URLPARAM{"q" default="does not exist"}%.*"
   type="regex"
   scope="topic"
   format="$percntUSERINFO{\"$topic\" format=\"<nop>$dollarwikiname|$dollaremails|$percntFORMFIELD{\"Photo\" topic=\"$web.$topic\" default=\"%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/ifixpng/images/pixel.gif\" alttext=\"%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/ifixpng/images/pixel.gif\"}$percnt$n\"}$percnt"
   separator=""
   limit="%URLPARAM{"limit" default="10"}%"
   nonoise="on"
   web="%USERSWEB%"
}%%ENDSECTION{"user"}%

Implementation (DBQUERY-based)

%STARTSECTION{"user_fast"}%%DBQUERY{
   "uc(topic) =~ uc('^%URLPARAM{"q" default="does not exist"}%')"
   format="$percntUSERINFO{\"$topic\" format=\"<nop>$dollarwikiname|$dollaremails|$expand(Photo or '%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/ifixpng/images/pixel.gif')$n\"}$percnt"
   separator=""
   limit="%URLPARAM{"limit" default="10"}%"
   web="%USERSWEB%"
}%%ENDSECTION{"user_fast"}%

Misc

Formfield

Fetch a formfield from a topic asynchronously.

Url parameters

  • source: source topic
  • formfield: name of formfiled to retrieve

Implementation

%STARTSECTION{"formfield"}%%FORMFIELD{
  "%URLPARAM{"formfield" default="does not exist"}%"
  topic="%URLPARAM{"source" default="does not exist"}%"
}%%ENDSECTION{"formfield"}%

User photo

This one returns an <img...> to a user's photo. See the User selector example above.

Url parameters

  • name: name of user
  • height: image height, defaults to 50

Implementation

%STARTSECTION{"userphoto"}%<img src='%FORMFIELD{"Photo" topic="%USERINFO{"%URLPARAM{"name" default="does not exist"}%" format="$wikiusername"}%" default="%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/ifixpng/images/pixel.gif" alttext="%PUBURLPATH%/%SYSTEMWEB%/JQueryPlugin/plugins/ifixpng/images/pixel.gif"}%' alt='%URLPARAM{"name"}%' height='%URLPARAM{"height" default="50"}%' />%ENDSECTION{"userphoto"}%


This topic: System > JQueryPlugin > JQueryAjaxHelper
Topic revision: r2 - 2010-02-20 - 07:59:57 - AdminUser
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding STALklubben? Send feedback