-----------------------------------
- jTemplates 0.8.4 by tPython -
- http://jtemplates.tpython.com -
-----------------------------------
Tags:
{|CODE|} - evaluate COND
{#if |COND|}..{#elseif |COND|}..{#else}..{#/if}
{#foreach |VAR| as |NAME| [begin=|CODE|] [count=|CODE|] [step=|CODE|]}..{#else}..{#/for}
{#foreach |FUNC| as |NAME| [begin=|CODE|] [end=|CODE|] [count=|CODE|] [step=|CODE|]}..{#else}..{#/for}
{#for |VAR| = |CODE| to |CODE| [step=|CODE|]}..{#else}..{#/for}
{#continue}
{#break}
{#include |NAME| [root=|VAR|]}
{#param name=|NAME| value=|CODE|}
{#var |CODE|}
{#cycle values=|ARRAY|}
{#ldelim}
{#rdelim}
{#literal}..{#/literal}
{*..*} - comment
where:
|CODE| - JavaScript code
|COND| - JavaScript condition
|NAME| - String
|NUMBER| - Number
|ARRAY| - Array
|VAR| - Variable
|FUNC| - Function
--------------------------------------------------------------------------------
Templates:
{#template [=] [=]}
..
{#/template }
Main template:
{#template MAIN}
..
{#/template MAIN}
--------------------------------------------------------------------------------
Tag's details:
|VAR| and |CODE| and |COND| can use:
$T - data
$P - parameters
$Q - HTML Element
|VAR:foreach| & |VAR:for|:
$index
$iteration
$first
$last
$total
$key - key in object
$typeof - type of element
examples:
$T.item$index
$T.item$key
Members:
$T.
examples:
$T.name
$T.id
Tables:
$T[]
examples:
$T[0]
$T[1]
--------------------------------------------------------------------------------
Plugin to jQuery:
jQuery jQuery.fn.setTemplate(String template, [Array includes], [Object settings]);
jQuery jQuery.fn.setTemplate(Template template);
jQuery jQuery.fn.setTemplateURL(String url, [Array includes], [Object settings]);
jQuery jQuery.fn.setTemplateElement(String elementName, [Array includes], [Object settings]);
Template jQuery.createTemplate(String template, [Array includes], [Object settings]);
Template jQuery.createTemplateURL(String url, [Array includes], [Object settings]);
Template jQuery.getTemplate(Element element);
string jQuery.processTemplateToText(Template template, [Object data], [Object parameter]);
Number jQuery.fn.hasTemplate();
jQuery jQuery.fn.removeTemplate();
jQuery jQuery.fn.setParam(String name, Object value);
jQuery jQuery.fn.processTemplate(Object data, [Object parameters]);
jQuery jQuery.fn.processTemplateURL(String url, [Object parameters], [Object options]);
Updater jQuery.fn.processTemplateStart(String url, Array param, Integer interval, [Array args], [Object options]);
jQuery jQuery.fn.processTemplateStop();
jQuery.jTemplatesDebugMode(Boolean value);
--------------------------------------------------------------------------------
Template's settings:
disallow_functions - forbid use functions in data $T [default: false, depend on: clone_data, clone_params]
filter_data - replace chars: <, >, &, ' and " in data $T to HTML entities [default: true, depend on: clone_data]
filter_params - replace chars: <, >, &, ' and " in parameters $P to HTML entities [default: false, depend on: clone_params]
runnable_functions - automatically run function (from data) inside {} [default: false]
clone_data - clone input data [default: true]
clone_params - clone input parameters [default: true]
f_cloneData - Function used to data cloning [default: TemplateUtils.cloneData]
f_escapeString - Function used to escape strings [default: TemplateUtils.escapeHTML]
f_parseJSON - Function used to parse JSON [defaults are: jQuery.parseJSON (when disallow_functions) or TemplateUtils.parseJSON (when not disallow_functions)]
--------------------------------------------------------------------------------
Callbacks and options:
* jQuery.fn.processTemplateURL:
type - 'GET' or 'POST', default: 'GET'
data - Data to be sent to the server. Default: undefined
dataFilter - A function to be used to handle the raw response data of XMLHttpRequest. Default: undefined
async - asynchronous AJAX, default: true
cache - use cache, default: false
timeout - Set a local timeout in ms for the request.
on_success [event] - Run after success
on_error [event] - Run on error
on_complete [event] - Run after success and error
--------------------------------------------------------------------------------
Internal Templates API:
Template::Template(String template, [Array includes], [Array settings]);
void Template::setTemplate(String template, [Array includes]);
String Template::get(Object data, Object parameters, HTMLElement element, Number deep);
void Template::setParam(String name, Object value);
Template.DEBUG_MODE
--------------------------------------------------------------------------------
XHTML with embedded Templates.
How to embedded the template:
1) Simple:
2) Valid XHTML 1.1:
3) Using comment:
--------------------------------------------------------------------------------
Known bugs:
- comments has higher priority than literals
- literal does not work good when template is embedded with XHTML document
- ajax-based methods does not work in Opera Mini with data compression enabled
--------------------------------------------------------------------------------
Changelog:
0.8.4 (25.01.2013):
- fix bug with multiple {#literal}
- small changes
0.8.3 (06.08.2012):
- compability with jQuery up to 1.8/1.9
- fix bug with elseif..else
- small changes
0.8.2 (21.05.2012):
- improve recursive template
- processTemplate no longer create a copy of HTML elements
- remove $Q.version, you can use Template.version
- fixed the problem with some android browsers
- fixed the problem with IE7 and some CSS styles
- fixed the problem with subtemplates in some cases
0.8.1 (31.01.2012):
- fixed bug with #for and IE 6/7, improve performance
- set default type 'GET' for setTemplateURL() and createTemplateURL()
- change: method processTemplateURL use jQuery.ajaxSettings
0.8 (27.11.2011):
- add {#var}
- dedicated environment for eval()
- fix problem with using characters '{' and '}' inside template block {...}
- change default DEBUG_MODE to false
- add loop limit FOREACH_LOOP_LIMIT
- add Template function handler: f_parseJSON with default method TemplateUtils.parseJSON
- some small changes
0.7.8 (02.04.2009):
- add {#break} and {#continue}
- new function: jQuery.processTemplateToText
- new function: jQuery.getTemplate
- restore: #foreach will have access to all content (not only loop variable)
- fix compatibility with jQuery.noConflict
- some other small fixes
0.7.5 (30.08.2008):
- add options and callbacks for processTemplateURL and processTemplateStart
- allow to use instead <[CDATA[ ]]> as template container (due to issue with cascading textarea)
- allow to define own function for clones data and filters strings
- add debug mode (when off - disable most off errors)
- fix a bug with FOREACH over Object and toString
0.7.0 (11.05.2008):
- tag {#for...}
- clone_data & clone_params
- fix a bug with 'runnable functions' and toString in IE
0.6.9 (11.05.2008):
- function as loop in foreach (till function return undefined)
- embedded settings in subtemplates
- remove backwards compatibility
0.6.8 (10.05.2008):
- fix a bug with filtering data in subtemplates
0.6.7 (10.05.2008):
- chainable functions
0.6.6 (06.01.2008):
- fixed bug: {#cycle} not work correctly between templates in multitemplate mode
- code cleanup
0.6.5 (05.01.2008):
- new: embedded templates
- new function: setTemplateElement(String elementName, Array includes, Object settings)
0.6.0 (25.12.2007):
- add #foreach over object
- new |VAR:foreach|:
$key
$typeof
- allow function in data by default (disallow_functions = false)
- automatically run function (from data) inside {} ("runnable function")
- add setting: runnable_functions (default: false)
- fix a bug with pseudo-attributes |VAR:foreach| like: $index, $total...
new syntax for |VAR:foreach|, example:
$T.item.$index -> $T.item$index
0.5.1 (04.12.2007):
- fix bug with #cycle
0.5.0 (19.09.2007):
- update documentations
- add removeTemplate()
0.4.5 (18.09.2007):
- compatibility with jQuery 1.2.1 (does not work with 1.2)
- block {} return empty string instead of 'undefined', so code in {} does not need to return any value
- disable cache in processTemplateURL
- small fixed
0.4.3 (25.08.2007):
- major bugfix with variables scope (thanks to: S. Keshavarzi)
0.4.2 (16.08.2007):
- compatibility with $.noConflict() (need more tests)
0.4.1 (27.07.2007):
- add jQuery.fn.hasTemplate
0.4: (27.07.2007):
- improve security
Add filters to encode HTML entities and detect function in data.
- add settings: disallow_functions, filter_data, filter_params
- jTemplates use clone of data and parameters, so original data won't be changed after processing.
0.3: (17.07.2007):
- LiveRefresh:
- processTemplateStart()
- processTemplateStop()
0.2.2: (14.07.07)
- add {#elseif}
0.2.1: (14.07.07)
- fix issue with include (bug with attribute 'root')
0.2.0: (12.07.07)
- MultiTemplates
- fix bug with literal
- memory usage reduce & speed up
- some more...
--------------------------------------------------------------------------------
--
Tomasz Gloc, 2007-2013