----------------------------------- - 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