<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://docs.joomla.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://docs.joomla.org/api.php?action=feedcontributions&amp;user=Jlleblanc&amp;feedformat=atom</id>
		<title>Joomla! Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://docs.joomla.org/api.php?action=feedcontributions&amp;user=Jlleblanc&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Special:Contributions/Jlleblanc"/>
		<updated>2013-06-20T09:18:21Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.3</generator>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-31T02:57:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Roadmap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
* For now, communication will occur on the Joomla CMS Development Google Group: https://groups.google.com/group/joomla-dev-cms If we end up needing more space, we may create a separate group in the future.&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
Loads of beautiful JavaScript!&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
Primary communication will occur on the Joomla CMS Development list. The JUX site will also be used for specific tasking and discussion.&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
===Ultimate Goal===&lt;br /&gt;
Make Joomla an enjoyable and preferable tool for JavaScript programmers to use.&lt;br /&gt;
&lt;br /&gt;
===Intermediate Goals===&lt;br /&gt;
* Come up with JavaScript coding standards for the Joomla project, based on existing ones&lt;br /&gt;
* Integrate jQuery with noConflict mode enabled by default&lt;br /&gt;
* Replace frontend MooTools dependencies with jQuery code&lt;br /&gt;
* Add JavaScript library management and CDNs&lt;br /&gt;
* Replace code that interpolates JavaScript and PHP&lt;br /&gt;
* Unit test JavaScript in Joomla&lt;br /&gt;
&lt;br /&gt;
===jQuery Integration Plan===&lt;br /&gt;
The overall goal for integrating jQuery is to maintain backwards compatibility in a predictable fashion, while having a plan for upgrading as newer versions come out. While jQuery has broken backwards compatibility in the 1.x series, it always happens with minor releases and not patch releases. They are planning on removing things in 2.0 while deprecating them now: http://blog.jquery.com/2011/11/22/call-for-jquery-1-8-ideas/&lt;br /&gt;
&lt;br /&gt;
For Joomla, the general policy should be to stay with a specific minor release of jQuery for a specific minor release of Joomla. That is, if jQuery 1.7.x is still current, Joomla 3.0 will adopt it. If jQuery 1.8 comes out before Joomla 3.1 is released, Joomla 3.0 will continue to stay on the 1.7.x branch of jQuery. If Joomla 3.0.1 ships with jQuery 1.7.2 and then jQuery 1.7.3 comes out, 1.7.3 would be rolled into Joomla 3.0.1 after testing core functionality.&lt;br /&gt;
&lt;br /&gt;
Rare exceptions to the general policy could be made in the event of a security issue or some other such pressing need.&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-30T02:19:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Announcements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
* For now, communication will occur on the Joomla CMS Development Google Group: https://groups.google.com/group/joomla-dev-cms If we end up needing more space, we may create a separate group in the future.&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
Loads of beautiful JavaScript!&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
Primary communication will occur on the Joomla CMS Development list. The JUX site will also be used for specific tasking and discussion.&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
===Ultimate Goal===&lt;br /&gt;
Make Joomla an enjoyable and preferable tool for JavaScript programmers to use.&lt;br /&gt;
&lt;br /&gt;
===Intermediate Goals===&lt;br /&gt;
* Come up with JavaScript coding standards for the Joomla project, based on existing ones&lt;br /&gt;
* Integrate jQuery with noConflict mode enabled by default&lt;br /&gt;
* Replace frontend MooTools dependencies with jQuery code&lt;br /&gt;
* Add JavaScript library management and CDNs&lt;br /&gt;
* Replace code that interpolates JavaScript and PHP&lt;br /&gt;
* Unit test JavaScript in Joomla&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-27T01:12:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Deliverables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/organizations/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
* For now, communication will occur on the Joomla CMS Development Google Group: https://groups.google.com/group/joomla-dev-cms If we end up needing more space, we may create a separate group in the future.&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
Loads of beautiful JavaScript!&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
Primary communication will occur on the Joomla CMS Development list. The JUX site will also be used for specific tasking and discussion.&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
===Ultimate Goal===&lt;br /&gt;
Make Joomla an enjoyable and preferable tool for JavaScript programmers to use.&lt;br /&gt;
&lt;br /&gt;
===Intermediate Goals===&lt;br /&gt;
* Come up with JavaScript coding standards for the Joomla project, based on existing ones&lt;br /&gt;
* Integrate jQuery with noConflict mode enabled by default&lt;br /&gt;
* Replace frontend MooTools dependencies with jQuery code&lt;br /&gt;
* Add JavaScript library management and CDNs&lt;br /&gt;
* Replace code that interpolates JavaScript and PHP&lt;br /&gt;
* Unit test JavaScript in Joomla&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-27T01:07:42Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Communications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/organizations/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
* For now, communication will occur on the Joomla CMS Development Google Group: https://groups.google.com/group/joomla-dev-cms If we end up needing more space, we may create a separate group in the future.&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
Primary communication will occur on the Joomla CMS Development list. The JUX site will also be used for specific tasking and discussion.&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
===Ultimate Goal===&lt;br /&gt;
Make Joomla an enjoyable and preferable tool for JavaScript programmers to use.&lt;br /&gt;
&lt;br /&gt;
===Intermediate Goals===&lt;br /&gt;
* Come up with JavaScript coding standards for the Joomla project, based on existing ones&lt;br /&gt;
* Integrate jQuery with noConflict mode enabled by default&lt;br /&gt;
* Replace frontend MooTools dependencies with jQuery code&lt;br /&gt;
* Add JavaScript library management and CDNs&lt;br /&gt;
* Replace code that interpolates JavaScript and PHP&lt;br /&gt;
* Unit test JavaScript in Joomla&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-27T01:05:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Roadmap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/organizations/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
* For now, communication will occur on the Joomla CMS Development Google Group: https://groups.google.com/group/joomla-dev-cms If we end up needing more space, we may create a separate group in the future.&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
===Ultimate Goal===&lt;br /&gt;
Make Joomla an enjoyable and preferable tool for JavaScript programmers to use.&lt;br /&gt;
&lt;br /&gt;
===Intermediate Goals===&lt;br /&gt;
* Come up with JavaScript coding standards for the Joomla project, based on existing ones&lt;br /&gt;
* Integrate jQuery with noConflict mode enabled by default&lt;br /&gt;
* Replace frontend MooTools dependencies with jQuery code&lt;br /&gt;
* Add JavaScript library management and CDNs&lt;br /&gt;
* Replace code that interpolates JavaScript and PHP&lt;br /&gt;
* Unit test JavaScript in Joomla&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-25T16:03:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Announcements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/organizations/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
* For now, communication will occur on the Joomla CMS Development Google Group: https://groups.google.com/group/joomla-dev-cms If we end up needing more space, we may create a separate group in the future.&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-25T15:53:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Announcements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
* There is now a JavaScript GitHub group: https://github.com/organizations/Joomla-JavaScript&lt;br /&gt;
* Much of our work overlaps with JUX. Join here as well: http://ux.joomla.org/&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-25T15:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Announcements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
There is now a JavaScript GitHub group: https://github.com/organizations/Joomla-JavaScript&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-25T15:51:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Meetings */ Added notes from JAB 12&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
===J! and Beyond 2012===&lt;br /&gt;
&lt;br /&gt;
====Managing jQuery noConflict, potential solutions:====&lt;br /&gt;
* add at the end of jQuery javascript file&lt;br /&gt;
* load no_conflict.js&lt;br /&gt;
* patch submitted by Beat: pre/post JavaScript&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* clean up library manager plugin&lt;br /&gt;
* JSLint - add to the unit tests&lt;br /&gt;
* JavaScript compression&lt;br /&gt;
* Stop writing JavaScript in PHP!&lt;br /&gt;
* Idea: module parameters for adding CSS and JavaScript (rather than adding it in the HTML body)&lt;br /&gt;
* Ordering: Ability to add a declaration before or after&lt;br /&gt;
&lt;br /&gt;
====Caching====&lt;br /&gt;
* Browser Caching - ?#342384623749873 &amp;lt;--- cache bust&lt;br /&gt;
* Joomla Caching - addScriptDeclaration: doesn't cache properly.&lt;br /&gt;
* Different behavior in modules vs. components&lt;br /&gt;
&lt;br /&gt;
====Where to load JavaScript?====&lt;br /&gt;
* Add JavaScript at the END of the document.&lt;br /&gt;
* OR: use defer for asynchronous loading.&lt;br /&gt;
&lt;br /&gt;
====Possibility: add code on the client side to detect whether libraries are loaded.====&lt;br /&gt;
* Would need to document&lt;br /&gt;
* Or: Joomla.library('nameoflibrary', '1.0', 'libraryurl');&lt;br /&gt;
* Just use Require.js (or don't, it's madness, has ordering issues because it's asynchronous)&lt;br /&gt;
* Just use the plugin Joe authored. Or the patch Beat submitted.&lt;br /&gt;
&lt;br /&gt;
====Stop====&lt;br /&gt;
* writing inline JavaScript! (causes &amp;quot;flashes&amp;quot;) (although Geraint disagrees (and so does Peter (and Danielle)))&lt;br /&gt;
* Don't code onClick events directly into markup! Use stopPropagation.&lt;br /&gt;
* Geraint brings up a good point: maybe you need to do something before DOMready... but it's on the level of eval()&lt;br /&gt;
&lt;br /&gt;
====MooTools====&lt;br /&gt;
* Optimize: We're currently loading everything.&lt;br /&gt;
* As long as we're still using it, use it modularly, the way it was intended.&lt;br /&gt;
* Might have to be done server side.&lt;br /&gt;
* Look at LABjs.&lt;br /&gt;
&lt;br /&gt;
====Follow up====&lt;br /&gt;
* Start a GitHub branch&lt;br /&gt;
* Start a Google Group - or do it on the CMS list.&lt;br /&gt;
* Sort out 2.5 issues from 3.0 features&lt;br /&gt;
* Look at replacing frontend MooTools&lt;br /&gt;
* Get email addresses&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-09T15:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* External resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
===Code Quality / Utilities ===&lt;br /&gt;
* JSHint: http://www.jshint.com/ https://github.com/jshint/node-jshint/&lt;br /&gt;
* JSLint: http://www.jslint.com/&lt;br /&gt;
* Node.js: http://nodejs.org&lt;br /&gt;
* Travis: http://travis-ci.org/&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
&lt;br /&gt;
* MooTools: http://mootools.net/&lt;br /&gt;
* jQuery: http://jquery.com/&lt;br /&gt;
* Zepto: http://zeptojs.com/&lt;br /&gt;
&lt;br /&gt;
* Bootstrap: http://twitter.github.com/bootstrap/&lt;br /&gt;
* Sencha: http://www.sencha.com/&lt;br /&gt;
&lt;br /&gt;
* Underscore: http://documentcloud.github.com/underscore/&lt;br /&gt;
* Backbone: http://documentcloud.github.com/backbone/&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
* J! and Beyond 2012: TBA&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-09T14:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Meetings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
* J! and Beyond 2012: TBA&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JavaScript_Working_Group</id>
		<title>JavaScript Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JavaScript_Working_Group"/>
				<updated>2012-05-09T14:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Coordinators &amp;amp; PLT Contact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JavaScript Working Group is a Production Working Group. It is responsible for establishing standards for JavaScript and seeing that the JavaScript and/or JS frameworks are integrated and maintained.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
* The coordinator for this working group is Joe LeBlanc.&lt;br /&gt;
* The PLT Contact for this working group is Andy Tarr.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Production_Working_Groups</id>
		<title>Production Working Groups</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Production_Working_Groups"/>
				<updated>2012-05-09T14:51:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* JavaScript Working Group */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Producing a world-leading software product like Joomla requires the contribution of time and attention from a large number of different people.  One of the issues we come across repeatedly is how to direct potential contributors to areas of the project where they can have the most rewarding and fun experience by being able to work on stuff that matters to them.  The Production Working Groups idea is a scheme to encourage groups of people to come together to work on specific areas that we think require particular attention and work.  Each of these teams will be led by one or more community members who will foster collaboration within the group and communicate on a regular basis with the Production Leadership Team (PLT).&lt;br /&gt;
&lt;br /&gt;
If you are interested in helping out with the work of any of the teams listed, then simply contact the relevant coordinator.&lt;br /&gt;
&lt;br /&gt;
Community members are free to propose new working groups by following the procedure outlined on this page.  The PLT will review the proposal and probably ask further questions.  If approved, the new working group will be listed here and you are all set to go.  Each group can choose to use whatever resources and communications channels that make sense for them and this page may include links to further information, ongoing communications or other items of relevance to the team.&lt;br /&gt;
&lt;br /&gt;
Working groups will exist until the job they were set up to do has been completed.  Which means that some teams, like the Bug Squad, will be permanent, while others will form and disband in the space of a single release cycle.&lt;br /&gt;
&lt;br /&gt;
These working groups must follow our expected values of openness, inclusion and collaboration.  They must follow the [http://opensourcematters.org/mission-vision-values.html mission, vision and values] of the Joomla project and additionally we would need the working group coordinators to sign the [http://developer.joomla.org/contributor-agreements.html Joomla Contributor Agreement (JCA)].  Ordinary working groups would not be required to sign, although they are welcome to do so of course.  Regular communication between the working group coordinators and the PLT is expected and it would be great if the teams could blog periodically so that the wider community can be kept in touch with progress.&lt;br /&gt;
&lt;br /&gt;
==Current Production Working Groups==&lt;br /&gt;
The following is a list of all current production working groups in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
===Bug Squad===&lt;br /&gt;
For further information see [[Bug Squad|Bug Squad]].&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
===Database Working Group===&lt;br /&gt;
There's plenty of work to do to improve the way that Joomla works with databases.  We need database experts who can look at optimising queries, improving the data model and making Joomla work across multiple databases.  If you are a database junkie and you'd like to help then contact Mark Dexter.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
===Documentation Working Group===&lt;br /&gt;
The [[Documentation Working Group|Documentation Working Group]] is a standing team of people dedicated to improving Joomla's documentation.  This includes both user and developer documentation.  Our primary focus is this wiki, but we are also responsible for maintaining [http://api.joomla.org api.joomla.org] and other resources.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
===Internet of Things Working Group===&lt;br /&gt;
This working group is looking into using the Joomla Platform to simplify and open source the &amp;quot;internet of things&amp;quot;.  Using several popular input/output devices to allow the world to connect to the internet and back to the world; for the device's data to be easily displayed on Joomla sites and Joomla sites to &amp;quot;talk back&amp;quot; to the environment.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Phil Walton (mailto:phil@jthings.co.uk)&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information go to [http://www.jthings.co.uk www.jthings.co.uk]&lt;br /&gt;
&lt;br /&gt;
===JavaScript Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Joe LeBlanc&lt;br /&gt;
* PLT Contact: Andy Tarr (mailto:andrea.tarr@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information see [[JavaScript Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Joomla Security Strike Team===&lt;br /&gt;
This team is for experienced Joomla users and developers who want to help test and fix reported security issues. If you are interested in helping, please contact Mark Dexter. Thanks!&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
===Multi-site Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Christophe Demko (mailto:christophe.demko@joomla.org).&lt;br /&gt;
* PLT Contact: Christophe Demko (mailto:christophe.demko@joomla.org).&lt;br /&gt;
&lt;br /&gt;
For further information see [[Multi-site Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Message Queue Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information see: [[Message Queue Working Group]].&lt;br /&gt;
&lt;br /&gt;
===Search Working Group===&lt;br /&gt;
Now that Finder has been integrated into Joomla 2.5 in the form of [[:Category:Smart Search|Smart Search]], the time has come to look forward to Joomla 3.x and how we want search to work in that series.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information see [[Search Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Translations Working Group===&lt;br /&gt;
For further information see [[Translations Working Group]].&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Jean-Marie Simonet&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
===Unified Content Model Working Group===&lt;br /&gt;
This is a working group for looking at how the CMS could take advantage of UCM.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
For further information see [[Unified Content Model Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Unit Tests for CMS Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Michael Babker&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
For further information see [[Unit Tests for CMS Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Update and Migration Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
For further information see [[Update and Migration Working Group]]&lt;br /&gt;
&lt;br /&gt;
===User Experience Working Group===&lt;br /&gt;
The [[User Experience Working Group|User Experience Working Group]] is a standing team focused on the Joomla User Experience. This includes the Joomla administrator user interface, sample templates, sample data and any other related aspects. For further information see [http://ux.joomla.org/ The Joomla User Experience Portal].&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Ron Severdia (mailto:ron.severdia@joomla.org)&lt;br /&gt;
* PLT Contact: Ron Severdia (mailto:ron.severdia@joomla.org)&lt;br /&gt;
&lt;br /&gt;
===Web Services Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
For further information see [[Web Services Working Group]]&lt;br /&gt;
&lt;br /&gt;
==Proposing a new working group==&lt;br /&gt;
If you would like to propose a new working group to be added to this list, please follow this procedure:-&lt;br /&gt;
* choose a title for the working group.&lt;br /&gt;
* write a brief overview of the job that the working group will do.&lt;br /&gt;
* list the success criteria for the working group.&lt;br /&gt;
* list the initial coordinator (or coordinators if more than one), with contact email address(es).&lt;br /&gt;
* send your proposal to Chris Davenport [mailto:chris.davenport@joomla.org] who will ensure that your proposal is considered by the PLT.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://developer.joomla.org/news/359-new-production-working-groups.html Announcement on developer.joomla.org]&lt;br /&gt;
* [http://community.joomla.org/blogs/community/1496-join-or-start-a-production-working-group.html Announcement blog post]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Working_Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Production_Working_Groups</id>
		<title>Production Working Groups</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Production_Working_Groups"/>
				<updated>2012-05-09T14:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* JavaScript Working Group */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Producing a world-leading software product like Joomla requires the contribution of time and attention from a large number of different people.  One of the issues we come across repeatedly is how to direct potential contributors to areas of the project where they can have the most rewarding and fun experience by being able to work on stuff that matters to them.  The Production Working Groups idea is a scheme to encourage groups of people to come together to work on specific areas that we think require particular attention and work.  Each of these teams will be led by one or more community members who will foster collaboration within the group and communicate on a regular basis with the Production Leadership Team (PLT).&lt;br /&gt;
&lt;br /&gt;
If you are interested in helping out with the work of any of the teams listed, then simply contact the relevant coordinator.&lt;br /&gt;
&lt;br /&gt;
Community members are free to propose new working groups by following the procedure outlined on this page.  The PLT will review the proposal and probably ask further questions.  If approved, the new working group will be listed here and you are all set to go.  Each group can choose to use whatever resources and communications channels that make sense for them and this page may include links to further information, ongoing communications or other items of relevance to the team.&lt;br /&gt;
&lt;br /&gt;
Working groups will exist until the job they were set up to do has been completed.  Which means that some teams, like the Bug Squad, will be permanent, while others will form and disband in the space of a single release cycle.&lt;br /&gt;
&lt;br /&gt;
These working groups must follow our expected values of openness, inclusion and collaboration.  They must follow the [http://opensourcematters.org/mission-vision-values.html mission, vision and values] of the Joomla project and additionally we would need the working group coordinators to sign the [http://developer.joomla.org/contributor-agreements.html Joomla Contributor Agreement (JCA)].  Ordinary working groups would not be required to sign, although they are welcome to do so of course.  Regular communication between the working group coordinators and the PLT is expected and it would be great if the teams could blog periodically so that the wider community can be kept in touch with progress.&lt;br /&gt;
&lt;br /&gt;
==Current Production Working Groups==&lt;br /&gt;
The following is a list of all current production working groups in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
===Bug Squad===&lt;br /&gt;
For further information see [[Bug Squad|Bug Squad]].&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
===Database Working Group===&lt;br /&gt;
There's plenty of work to do to improve the way that Joomla works with databases.  We need database experts who can look at optimising queries, improving the data model and making Joomla work across multiple databases.  If you are a database junkie and you'd like to help then contact Mark Dexter.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
===Documentation Working Group===&lt;br /&gt;
The [[Documentation Working Group|Documentation Working Group]] is a standing team of people dedicated to improving Joomla's documentation.  This includes both user and developer documentation.  Our primary focus is this wiki, but we are also responsible for maintaining [http://api.joomla.org api.joomla.org] and other resources.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
===Internet of Things Working Group===&lt;br /&gt;
This working group is looking into using the Joomla Platform to simplify and open source the &amp;quot;internet of things&amp;quot;.  Using several popular input/output devices to allow the world to connect to the internet and back to the world; for the device's data to be easily displayed on Joomla sites and Joomla sites to &amp;quot;talk back&amp;quot; to the environment.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Phil Walton (mailto:phil@jthings.co.uk)&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information go to [http://www.jthings.co.uk www.jthings.co.uk]&lt;br /&gt;
&lt;br /&gt;
===JavaScript Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Joe LeBlanc&lt;br /&gt;
* PLT Contact: Andy Tarr&lt;br /&gt;
&lt;br /&gt;
For further information see [[JavaScript Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Joomla Security Strike Team===&lt;br /&gt;
This team is for experienced Joomla users and developers who want to help test and fix reported security issues. If you are interested in helping, please contact Mark Dexter. Thanks!&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
===Multi-site Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Christophe Demko (mailto:christophe.demko@joomla.org).&lt;br /&gt;
* PLT Contact: Christophe Demko (mailto:christophe.demko@joomla.org).&lt;br /&gt;
&lt;br /&gt;
For further information see [[Multi-site Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Message Queue Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information see: [[Message Queue Working Group]].&lt;br /&gt;
&lt;br /&gt;
===Search Working Group===&lt;br /&gt;
Now that Finder has been integrated into Joomla 2.5 in the form of [[:Category:Smart Search|Smart Search]], the time has come to look forward to Joomla 3.x and how we want search to work in that series.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: Chris Davenport (mailto:chris.davenport@joomla.org)&lt;br /&gt;
&lt;br /&gt;
For further information see [[Search Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Translations Working Group===&lt;br /&gt;
For further information see [[Translations Working Group]].&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Jean-Marie Simonet&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
===Unified Content Model Working Group===&lt;br /&gt;
This is a working group for looking at how the CMS could take advantage of UCM.&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
For further information see [[Unified Content Model Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Unit Tests for CMS Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Michael Babker&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
For further information see [[Unit Tests for CMS Working Group]]&lt;br /&gt;
&lt;br /&gt;
===Update and Migration Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: Mark Dexter (mailto:mark.dexter@community.joomla.org).&lt;br /&gt;
&lt;br /&gt;
For further information see [[Update and Migration Working Group]]&lt;br /&gt;
&lt;br /&gt;
===User Experience Working Group===&lt;br /&gt;
The [[User Experience Working Group|User Experience Working Group]] is a standing team focused on the Joomla User Experience. This includes the Joomla administrator user interface, sample templates, sample data and any other related aspects. For further information see [http://ux.joomla.org/ The Joomla User Experience Portal].&lt;br /&gt;
&lt;br /&gt;
* Coordinator: Ron Severdia (mailto:ron.severdia@joomla.org)&lt;br /&gt;
* PLT Contact: Ron Severdia (mailto:ron.severdia@joomla.org)&lt;br /&gt;
&lt;br /&gt;
===Web Services Working Group===&lt;br /&gt;
&lt;br /&gt;
* Coordinator: To be determined.&lt;br /&gt;
* PLT Contact: To be determined.&lt;br /&gt;
&lt;br /&gt;
For further information see [[Web Services Working Group]]&lt;br /&gt;
&lt;br /&gt;
==Proposing a new working group==&lt;br /&gt;
If you would like to propose a new working group to be added to this list, please follow this procedure:-&lt;br /&gt;
* choose a title for the working group.&lt;br /&gt;
* write a brief overview of the job that the working group will do.&lt;br /&gt;
* list the success criteria for the working group.&lt;br /&gt;
* list the initial coordinator (or coordinators if more than one), with contact email address(es).&lt;br /&gt;
* send your proposal to Chris Davenport [mailto:chris.davenport@joomla.org] who will ensure that your proposal is considered by the PLT.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://developer.joomla.org/news/359-new-production-working-groups.html Announcement on developer.joomla.org]&lt;br /&gt;
* [http://community.joomla.org/blogs/community/1496-join-or-start-a-production-working-group.html Announcement blog post]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Working_Groups]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Pizza_Bugs_and_Fun_2011</id>
		<title>Pizza Bugs and Fun 2011</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Pizza_Bugs_and_Fun_2011"/>
				<updated>2011-11-28T16:13:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* North America */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Image:pbf.png|right]]&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
We are announcing a Joomla! Pizza Bug and Fun 2011 event scheduled for Saturday, December 10, 2011. The event is global for virtual participants with local venues where ever they are organized. The official start time is 9am in each time zone. Help us prepare Joomla! 2.5 for release early in January 2012!&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* '''Bugs''' : We will be working through the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 CMS Issue Tracker] where there are trackers needing patches and/or testing.&lt;br /&gt;
&lt;br /&gt;
* '''Features''' : There are features that need some coding and/or testing before they will be ready for 2.5. Finder and the multi-database are two such features. The [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8549 CMS Feature Tracker] has trackers of testing and coding that needs to be done.&lt;br /&gt;
&lt;br /&gt;
* '''Documentation''' : We still have documentation that needs to be done. If you want to help out writing documentation, you're also more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
Pizza: OSM is offering pizza and soda for pre-registered groups. We aren’t setting a specific maximum, but please don’t go crazy with it. Get enough so there’s plenty for everyone, but not a week’s worth of pizza and soda leftovers for everyone. Contact Andrea Tarr (andrea.tarr@joomla.org) before the event to register and get details.&lt;br /&gt;
&lt;br /&gt;
Communication: We have set up a Skype chat for all attendees of the PBF. Skype is invitation only. To get an invitation, email your Skype name to Andy Tarr (andrea.tarr@joomla.org). To make sure you can get in, get your invitation and log in before the day of the PBF.&lt;br /&gt;
&lt;br /&gt;
More information will be available here shortly. The main contact is Andy Tarr at andrea.tarr@joomla.org.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc.&lt;br /&gt;
&lt;br /&gt;
If you set up a location please send contact information to Andy Tarr (andrea.tarr@joomla.org). Feel free to contact her with any questions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
 Lancaster UK&lt;br /&gt;
 Hosted by Dean Marshall Consultancy Ltd&lt;br /&gt;
 CityLab, Dalton Square, Lancaster, Lancashire, LA1 1PP&lt;br /&gt;
 Tel: 01524 63492  or use our [http://www.deanmarshall.co.uk/contact-us.html | Online contact form]&lt;br /&gt;
 More details to follow.&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
 New England JUG&lt;br /&gt;
 Marlboro College Graduate Center&lt;br /&gt;
 28 Vernon Street&lt;br /&gt;
 Brattleboro, VT 05301  &lt;br /&gt;
 http://www.joomlanewengland.org&lt;br /&gt;
 Contact: Andy Tarr (andrea.tarr@joomla.org)&lt;br /&gt;
&lt;br /&gt;
 Texas&lt;br /&gt;
 HubAustin&lt;br /&gt;
 4930 S. Congress Ave, Ste 307&lt;br /&gt;
 Austin, TX 78745&lt;br /&gt;
 http://www.meetup.com/joomlaaustin/events/41979952/&lt;br /&gt;
&lt;br /&gt;
 Washington, DC&lt;br /&gt;
 PICnet&lt;br /&gt;
 1605 Connecticut Ave, NW 3FL&lt;br /&gt;
 Washington, DC 20009&lt;br /&gt;
&lt;br /&gt;
 Charlotte, NC&lt;br /&gt;
 [http://joomlacharlotte.org/index.php/events/pizza-bugs-fun-2011 Charlotte Joomla! User Group]&lt;br /&gt;
 Meetup Information posted shortly on event page&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Sydney, Australia 6pm-9pm&lt;br /&gt;
Hosted by Tim Plummer&lt;br /&gt;
InterfaceFLOR (usual Sydney JUG venue)&lt;br /&gt;
101 Chalmers Street, Surry Hills, NSW&lt;br /&gt;
http://www.meetup.com/Joomla-User-Group-Sydney/events/42114152/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
 Tel Aviv, Israel&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
====Skype Chat====&lt;br /&gt;
We have set up a Skype chat for all attendees of the PBF. Skype is invitation only. To get an invitation, email your Skype name to Andy Tarr (andrea.tarr@joomla.org). To make sure you can get in, get your invitation and log in before the day of the PBF.&lt;br /&gt;
&lt;br /&gt;
If you don't already have Skype, you can download it for free from [http://skype.com Skype].&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]]. Please be aware that the registration process requires a valid email address. This is the same login for updating Joomla documentation.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_2011#Organization.2C_logistics_and_communications Organization, logistics and communications section] for detail on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else's.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun 2011/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British English.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Pizza_Bugs_and_Fun_2011</id>
		<title>Pizza Bugs and Fun 2011</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Pizza_Bugs_and_Fun_2011"/>
				<updated>2011-11-22T00:51:51Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* North America */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Image:pbf.png|right]]&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
We are announcing a Joomla! Pizza Bug and Fun 2011 event scheduled for Saturday, December 10, 2011. The event is global for virtual participants with local venues where ever they are organized. The official start time is 9am in each time zone. Help us prepare Joomla! 2.5 for release early in January 2012!&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* '''Bugs''' : We will be working through the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 CMS Issue Tracker] where there are trackers needing patches and/or testing.&lt;br /&gt;
&lt;br /&gt;
* '''Features''' : There are features that need some coding and/or testing before they will be ready for 2.5. Finder and the multi-database are two such features. The [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8549 CMS Feature Tracker] has trackers of testing and coding that needs to be done.&lt;br /&gt;
&lt;br /&gt;
* '''Documentation''' : We still have documentation that needs to be done. If you want to help out writing documentation, you're also more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
More information will be available here shortly. The main contact is Andy Tarr at andrea.tarr@joomla.org.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc. If you have any questions regarding this, feel free to contact Andy Tarr (andrea.tarr@joomla.org).&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
 Lancaster UK&lt;br /&gt;
 Hosted by Dean Marshall Consultancy Ltd&lt;br /&gt;
 CityLab, Dalton Square, Lancaster, Lancashire, LA1 1PP&lt;br /&gt;
 Tel: 01524 63492  or use our [http://www.deanmarshall.co.uk/contact-us.html | Online contact form]&lt;br /&gt;
 More details to follow.&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
 New England JUG&lt;br /&gt;
&lt;br /&gt;
 Austin, TX&lt;br /&gt;
 HubAustin&lt;br /&gt;
 4930 S. Congress Ave, Ste 307&lt;br /&gt;
 Austin, TX 78745&lt;br /&gt;
 http://www.meetup.com/joomlaaustin/events/41979952/&lt;br /&gt;
&lt;br /&gt;
 Washington, DC&lt;br /&gt;
 PICnet&lt;br /&gt;
 1605 Connecticut Ave, NW 3FL&lt;br /&gt;
 Washington, DC 20009&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
 Tel Aviv, Israel&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
====Skype Chat====&lt;br /&gt;
We will be setting up a Skype chat for all attendees of the PBF. Skype is invitation only. To get an invitation, email your Skype name to Andy Tarr (andrea.tarr@joomla.org). This chat will be open by the end of November. To make sure you can get in, get your invitation and log in before the day of the PBF.&lt;br /&gt;
&lt;br /&gt;
If you don't already have Skype, you can download it for free from [http://skype.com Skype].&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]]. Please be aware that the registration process requires a valid email address. This is the same login for updating Joomla documentation.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_2011#Organization.2C_logistics_and_communications Organization, logistics and communications section] for detail on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else's.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun 2011/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British/Australian English.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Pizza_Bugs_and_Fun_2011</id>
		<title>Pizza Bugs and Fun 2011</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Pizza_Bugs_and_Fun_2011"/>
				<updated>2011-11-19T21:21:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Taking bugs, tasks and pizza */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Image:pbf.png|right]]&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
We announce the Joomla! Pizza Bug and Fun 2011 event scheduled for Saturday, December 10, 2011. This  event will help prepare Joomla! 2.5 for release early in January 2012.&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* '''Bugs''' : We will be working through the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 CMS Issue Tracker] where there are trackers needing patches and/or testing.&lt;br /&gt;
&lt;br /&gt;
* '''Features''' : There are features that need some coding and/or testing before they will be ready for 2.5. Finder and the multi-database are two such features. The [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8549 CMS Feature Tracker] has trackers of testing and coding that needs to be done.&lt;br /&gt;
&lt;br /&gt;
* '''Documentation''' : We still have documentation that needs to be done. If you want to help out writing documentation, you're also more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
More information will be available here shortly. The main contact is Andy Tarr at andrea.tarr@joomla.org.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc. If you have any questions regarding this, feel free to contact Andy Tarr (andrea.tarr@joomla.org).&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
 Lancaster UK&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
 New England JUG&lt;br /&gt;
&lt;br /&gt;
 Austin, TX&lt;br /&gt;
 HubAustin&lt;br /&gt;
 4930 S. Congress Ave, Ste 307&lt;br /&gt;
 Austin, TX 78745&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
 Tel Aviv, Israel&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
====Skype Chat====&lt;br /&gt;
We will be setting up a Skype chat for all attendees of the PBF. Skype is invitation only. To get an invitation, email your Skype name to Andy Tarr (andrea.tarr@joomla.org). This chat will be open by the end of November. To make sure you can get in, get your invitation and log in before the day of the PBF.&lt;br /&gt;
&lt;br /&gt;
If you don't already have Skype, you can download it for free from [http://skype.com Skype].&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]].  Please be aware that the registration process requires a valid email address.  If you are traveling to one of the physical locations you are advised to ensure that you have registered on this wiki and have a valid login before you travel. You don't need access to your email account after registration.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
Pizza can be ordered at a shop near by :-)&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_2011#Organization.2C_logistics_and_communications Organization, logistics and communications section] for detail on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else's.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun 2011/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British/Australian English.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Pizza_Bugs_and_Fun_2011</id>
		<title>Pizza Bugs and Fun 2011</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Pizza_Bugs_and_Fun_2011"/>
				<updated>2011-11-19T21:18:24Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* North America */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Image:pbf.png|right]]&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
We announce the Joomla! Pizza Bug and Fun 2011 event scheduled for Saturday, December 10, 2011. This  event will help prepare Joomla! 2.5 for release early in January 2012.&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* '''Bugs''' : We will be working through the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 CMS Issue Tracker] where there are trackers needing patches and/or testing.&lt;br /&gt;
&lt;br /&gt;
* '''Features''' : There are features that need some coding and/or testing before they will be ready for 2.5. Finder and the multi-database are two such features. The [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8549 CMS Feature Tracker] has trackers of testing and coding that needs to be done.&lt;br /&gt;
&lt;br /&gt;
* '''Documentation''' : We still have documentation that needs to be done. If you want to help out writing documentation, you're also more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
More information will be available here shortly. The main contact is Andy Tarr at andrea.tarr@joomla.org.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc. If you have any questions regarding this, feel free to contact Andy Tarr (andrea.tarr@joomla.org).&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
 Lancaster UK&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
 New England JUG&lt;br /&gt;
&lt;br /&gt;
 Austin, TX&lt;br /&gt;
 HubAustin&lt;br /&gt;
 4930 S. Congress Ave, Ste 307&lt;br /&gt;
 Austin, TX 78745&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
 Tel Aviv, Israel&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
====Skype Chat====&lt;br /&gt;
We will be setting up a Skype chat for all attendees of the PBF. Skype is invitation only. To get an invitation, email your Skype name to Andy Tarr (andrea.tarr@joomla.org). This chat will be open by the end of November. To make sure you can get in, get your invitation and log in before the day of the PBF.&lt;br /&gt;
&lt;br /&gt;
If you don't already have Skype, you can download it for free from [http://skype.com Skype].&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]].  Please be aware that the registration process requires a valid email address.  If you are traveling to one of the physical locations you are advised to ensure that you have registered on this wiki and have a valid login before you travel. You don't need access to your email account after registration.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
Pizza can be ordered at a shop near by :-)&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_2#Organization.2C_logistics_and_communications Organization, logistics and communications section] for detail on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else's.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun 2011/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British/Australian English.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Pizza_Bugs_and_Fun_2011</id>
		<title>Pizza Bugs and Fun 2011</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Pizza_Bugs_and_Fun_2011"/>
				<updated>2011-11-19T21:17:33Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* North America */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Image:pbf.png|right]]&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
We announce the Joomla! Pizza Bug and Fun 2011 event scheduled for Saturday, December 10, 2011. This  event will help prepare Joomla! 2.5 for release early in January 2012.&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
* '''Bugs''' : We will be working through the [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8103 CMS Issue Tracker] where there are trackers needing patches and/or testing.&lt;br /&gt;
&lt;br /&gt;
* '''Features''' : There are features that need some coding and/or testing before they will be ready for 2.5. Finder and the multi-database are two such features. The [http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=8549 CMS Feature Tracker] has trackers of testing and coding that needs to be done.&lt;br /&gt;
&lt;br /&gt;
* '''Documentation''' : We still have documentation that needs to be done. If you want to help out writing documentation, you're also more than welcome.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
More information will be available here shortly. The main contact is Andy Tarr at andrea.tarr@joomla.org.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc. If you have any questions regarding this, feel free to contact Andy Tarr (andrea.tarr@joomla.org).&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
 Lancaster UK&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
 New England JUG&lt;br /&gt;
&lt;br /&gt;
 Austin, TX&lt;br /&gt;
HubAustin&lt;br /&gt;
4930 S. Congress Ave, Ste 307&lt;br /&gt;
Austin, TX 78745&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
 No venue registered&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
 Tel Aviv, Israel&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
====Skype Chat====&lt;br /&gt;
We will be setting up a Skype chat for all attendees of the PBF. Skype is invitation only. To get an invitation, email your Skype name to Andy Tarr (andrea.tarr@joomla.org). This chat will be open by the end of November. To make sure you can get in, get your invitation and log in before the day of the PBF.&lt;br /&gt;
&lt;br /&gt;
If you don't already have Skype, you can download it for free from [http://skype.com Skype].&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]].  Please be aware that the registration process requires a valid email address.  If you are traveling to one of the physical locations you are advised to ensure that you have registered on this wiki and have a valid login before you travel. You don't need access to your email account after registration.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
Pizza can be ordered at a shop near by :-)&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_2#Organization.2C_logistics_and_communications Organization, logistics and communications section] for detail on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else's.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun 2011/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British/Australian English.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Manifest_files</id>
		<title>Manifest files</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Manifest_files"/>
				<updated>2011-10-13T01:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: removing &amp;quot;major edit&amp;quot; tag after a month&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{incomplete}}&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
==Introduction==&lt;br /&gt;
Within Joomla there are manifest files for all of the extensions. These files include the general installation information as well as parameters for the configuration of the [[extension]] itself. Since Joomla! 1.6 {{JVer|1.6}}, there are very few differences between the manifest file formats for the different [[Extension types (technical definitions)|types of extensions]], allowing each type to access the full power of the Joomla! installer.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions==&lt;br /&gt;
The file must be named &amp;lt;tt&amp;gt;manifest.xml&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;&amp;lt;extension_name&amp;gt;.xml&amp;lt;/tt&amp;gt; and located in the root directory of the installation package.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&lt;br /&gt;
=== Root element ===&lt;br /&gt;
The primary tag of the installation file is: &lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&amp;lt;extension&amp;gt;&amp;lt;/extension&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This starting and closing tags are now valid for all extensions. The new tag &amp;lt;extension&amp;gt; replaces the old &amp;lt;install&amp;gt;&amp;lt;/install&amp;gt; from Joomla {{JVer|1.5}}. The following attributes are allowed within the tag:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 150px&amp;quot; | Attribute || style=&amp;quot;width: 150px&amp;quot; | Values || Applicable&amp;amp;nbsp;to || Description&lt;br /&gt;
|-&lt;br /&gt;
| type || &amp;lt;code&amp;gt;component&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;plugin&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; || All extensions&lt;br /&gt;
| This attribute describes the type of the extension for the installer. Based on this type further requirements to sub-tags apply.&lt;br /&gt;
|-&lt;br /&gt;
| version&lt;br /&gt;
| &amp;lt;code&amp;gt;1.6&amp;lt;/code&amp;gt; || All extensions&lt;br /&gt;
| String that identifies the version of Joomla for which this extension is developed. For Joomla 1.6 a version higher than 1.5 is required.&lt;br /&gt;
|-&lt;br /&gt;
| method&lt;br /&gt;
| &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;upgrade&amp;lt;/code&amp;gt; || All extensions&lt;br /&gt;
| The default value install will be also used if the method attribute is not used. In these cases the installer will gracefully stop if he finds any existing file/folder of the new extension&lt;br /&gt;
|-&lt;br /&gt;
| client&lt;br /&gt;
| &amp;lt;code&amp;gt;site&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;administrator&amp;lt;/code&amp;gt; || Modules&lt;br /&gt;
| The client allows to specify for which application client the new module is available.&lt;br /&gt;
|-&lt;br /&gt;
| group&lt;br /&gt;
| ''string'' || Plugins&lt;br /&gt;
| The group name specifies for which group of plugins the new plugin is available. The existing groups are the folder names within the directory &amp;lt;tt&amp;gt;/plugins&amp;lt;/tt&amp;gt;. The installer will create new folder names for group names that do not exist yet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
&lt;br /&gt;
The following elements can be used to insert metadata. None of these elements are required; if they are present, they must be a child of the root element.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; raw component name (e.g. &amp;lt;code&amp;gt;com_banners&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;author&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; author's name (e.g. &amp;lt;code&amp;gt;Joomla! Project&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;creationDate&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; date of creation or release (e.g. &amp;lt;code&amp;gt;April 2006&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;copyright&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; a copyright statement (e.g. &amp;lt;code&amp;gt;(C) 2005 - 2011 Open Source Matters. All rights reserved.&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;license&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; a license statement (e.g. &amp;lt;code&amp;gt;NU General Public License version 2 or later; see LICENSE.txt&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;authorEmail&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; author's email address (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;admin@joomla.org&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;authorUrl&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; URL to the author's website (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;www.joomla.org&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;version&amp;gt;&amp;lt;code&amp;gt; &amp;amp;ndash; the version number of the extension (e.g. &amp;lt;code&amp;gt;1.6.0&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;description&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;ndash; the description of the component. This is a translatable field. (e.g. &amp;lt;code&amp;gt;COM_BANNERS_XML_DESCRIPTION&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Front-end files ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;files folder=&amp;quot;from-folder&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;filename&amp;gt;example.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;folder&amp;gt;examples&amp;lt;/folder&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files to copy to the front-end directory should be placed in the &amp;lt;code&amp;gt;&amp;lt;files&amp;gt;&amp;lt;/code&amp;gt; element. You can use the optional &amp;lt;code&amp;gt;folder&amp;lt;/code&amp;gt; attribute to specify a directory '''in the ZIP package''' to copy '''from'''. Each file to copy must be represented by a &amp;lt;code&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/code&amp;gt; element. If you want to copy an entire folder at once, you can define it as a &amp;lt;code&amp;gt;&amp;lt;folder&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Administration section ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;administration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The administration section is defined in the &amp;lt;code&amp;gt;&amp;lt;administration&amp;gt;&amp;lt;/code&amp;gt; element. Since only [[Component|components]] apply to both the [[Site (Application)|site]] and the [[Administrator (Application)|administrator]], '''only component manifests can include this element'''.&lt;br /&gt;
&lt;br /&gt;
==== Back-end files ====&lt;br /&gt;
&lt;br /&gt;
Files to copy to the back-end directory should be placed in the &amp;lt;code&amp;gt;&amp;lt;files&amp;gt;&amp;lt;/code&amp;gt; element under the &amp;lt;code&amp;gt;&amp;lt;administration&amp;gt;&amp;lt;/code&amp;gt;. You can use the optional &amp;lt;code&amp;gt;folder&amp;lt;/code&amp;gt; attribute to specify a directory '''in the ZIP package''' to copy '''from'''. See ''Front-end files'' for further rules.&lt;br /&gt;
&lt;br /&gt;
==== Menu links and submenus ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;menu&amp;gt;COM_EXAMPLE&amp;lt;/menu&amp;gt;&lt;br /&gt;
        &amp;lt;submenu&amp;gt;&lt;br /&gt;
            &amp;lt;menu link=&amp;quot;anoption=avalue&amp;quot;&amp;gt;COM_EXAMPLE_ANOPTION&amp;lt;/menu&amp;gt;&lt;br /&gt;
        &amp;lt;/submenu&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The text for the main menu item for the component is defined in the &amp;lt;code&amp;gt;&amp;lt;menu&amp;gt;&amp;lt;code&amp;gt; item, a child of &amp;lt;code&amp;gt;&amp;lt;administration&amp;gt;&amp;lt;/code&amp;gt;. A &amp;lt;code&amp;gt;&amp;lt;submenu&amp;gt;&amp;lt;/code&amp;gt; element may also be present (also a child of &amp;lt;code&amp;gt;&amp;lt;administration&amp;gt;&amp;lt;/code&amp;gt;), which may contain more menu items defined by &amp;lt;code&amp;gt;&amp;lt;menu&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, each &amp;lt;code&amp;gt;&amp;lt;menu&amp;gt;&amp;lt;/code&amp;gt; item can define the following attributes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 150px&amp;quot; | Attribute || Description&lt;br /&gt;
|-&lt;br /&gt;
| link || A link to send the user to when the menu item is clicked&lt;br /&gt;
|-&lt;br /&gt;
| view || (optional) The name of the view to load. E.g. &amp;lt;code&amp;gt;&amp;lt;menu view=&amp;quot;cpanel&amp;quot;&amp;gt;COM_EXAMPLE&amp;lt;/menu&amp;gt;&amp;lt;/code&amp;gt; in com_example's XML manifest would cause the URL of the menu item to be index.php?option=com_example&amp;amp;view=cpanel&lt;br /&gt;
|-&lt;br /&gt;
| img || The (relative) path to an image (16x16 pixels) to appear beside the menu item&lt;br /&gt;
|-&lt;br /&gt;
| alt ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The value inside the tag is the menu's label. Unlike Joomla! 1.5, you can not use a natural language string. For example, if you would enter &amp;quot;Example Component&amp;quot; instead of COM_EXAMPLE, it would result in your component name appearing as example-component in the menu and you would be unable to provide a translation. In order to provide a translation you need to create a file named en-GB.com_example.sys.ini in administrator/languages/en-GB (you can use the manifest's &amp;lt;code&amp;gt;&amp;lt;languages&amp;gt;&amp;lt;/code&amp;gt; tag to copy it during installation) or in administrator/components/com_example/language/en-GB. In the latter case, you must not include the translation file in the &amp;lt;code&amp;gt;&amp;lt;languages&amp;gt;&amp;lt;/code&amp;gt; tag. As long as you have placed the language directory in your &amp;lt;code&amp;gt;&amp;lt;files&amp;gt;&amp;lt;/code&amp;gt; tag, it will be copied along when the component is being installed.&lt;br /&gt;
&lt;br /&gt;
The contents of that file should be:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
COM_EXAMPLE=&amp;quot;Example Component&amp;quot;&lt;br /&gt;
COM_EXAMPLE_ANOPTION=&amp;quot;Another Option&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that the language string must be enclosed in double quotes, as per Joomla!'s translation standards. Important note: Joomla! 1.6 and later sorts the Component menu items based on the actual translation of the key you supply in your XML manifest. This means that the sorting order is correct no matter what you call your translation key and no matter which language the site is being displayed in. Essentially, Joomla! 1.6 fixed the wrong sorting of the Components menu for the majority (non-English speaking!) of Joomla! users experienced under Joomla! 1.5.&lt;br /&gt;
&lt;br /&gt;
{{Needsinfo|what does alt do?}}&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
The &amp;lt;code&amp;gt;&amp;lt;config&amp;gt;&amp;lt;/code&amp;gt; element, a child of the root, describes the configuration options for the extension. If applicable, the options will be shown by the appropriate Manager (Plugin Manager, Module Manager or Template Manager). '''Configuration options can also be defined in a separate file named &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt;. Its root element should be &amp;lt;code&amp;gt;&amp;lt;config&amp;gt;&amp;lt;/code&amp;gt;.'''&lt;br /&gt;
&lt;br /&gt;
{{:XML JForm form definitions}}&lt;br /&gt;
&lt;br /&gt;
=== SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;install&amp;gt;&lt;br /&gt;
        &amp;lt;sql&amp;gt;&lt;br /&gt;
            &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;example.install.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
        &amp;lt;/sql&amp;gt;&lt;br /&gt;
    &amp;lt;/install&amp;gt;&lt;br /&gt;
    &amp;lt;uninstall&amp;gt;&lt;br /&gt;
        &amp;lt;sql&amp;gt;&lt;br /&gt;
            &amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;example.uninstall.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
        &amp;lt;/sql&amp;gt;&lt;br /&gt;
    &amp;lt;/uninstall&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute SQL during installation and/or uninstallation using the &amp;lt;code&amp;gt;&amp;lt;install&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;uninstall&amp;gt;&amp;lt;/code&amp;gt; elements, respectively. An &amp;lt;code&amp;gt;&amp;lt;sql&amp;gt;&amp;lt;/code&amp;gt; element should appear as a child of these elements. &amp;lt;code&amp;gt;&amp;lt;sql&amp;gt;&amp;lt;/code&amp;gt; can contain any number of &amp;lt;code&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/code&amp;gt; elements, each defining a single SQL file to execute. Their database driver types are described by the &amp;lt;code&amp;gt;driver&amp;lt;/code&amp;gt; attribute, their character sets by the &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
=== Script file ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;scriptfile&amp;gt;example.script.php&amp;lt;/scriptfile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''script file''' (PHP code that is run before, during and/or after installation, uninstallation and upgrading) can be defined using a &amp;lt;code&amp;gt;&amp;lt;scriptfile&amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
=== Update servers ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;updateservers&amp;gt;&lt;br /&gt;
        &amp;lt;server type=&amp;quot;extension&amp;quot; priority=&amp;quot;1&amp;quot; name=&amp;quot;Extension Update Site&amp;quot;&amp;gt;http://example.com/extension.xml&amp;lt;/server&amp;gt;&lt;br /&gt;
        &amp;lt;server type=&amp;quot;collection&amp;quot; priority=&amp;quot;2&amp;quot; name=&amp;quot;Collection Update Site&amp;quot;&amp;gt;http://example.com/collection.xml&amp;lt;/server&amp;gt;&lt;br /&gt;
    &amp;lt;/updateservers&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update servers can be defined in the &amp;lt;code&amp;gt;&amp;lt;updateservers&amp;gt;&amp;lt;/code&amp;gt; element, a child of the root. This element may contain one or more &amp;lt;code&amp;gt;&amp;lt;server&amp;gt;&amp;lt;/code&amp;gt; element, each describing a location to fetch updates from. Each &amp;lt;code&amp;gt;&amp;lt;server&amp;gt;&amp;lt;/code&amp;gt; item can define the following attributes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 150px&amp;quot; | Attribute || style=&amp;quot;width: 150px&amp;quot; | Values || Description&lt;br /&gt;
|-&lt;br /&gt;
| type || &amp;lt;code&amp;gt;extension&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;collection&amp;lt;/code&amp;gt; || The update server type&lt;br /&gt;
|-&lt;br /&gt;
| priority || ''integer'' || The priority of the update server&lt;br /&gt;
|-&lt;br /&gt;
| name || ''string'' || The name of the update server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
For a real-life example, see [http://joomlacode.org/gf/project/joomla/scmsvn/?action=browse&amp;amp;path=%2Fdevelopment%2Ftags%2F1.6.x%2F1.6.5%2Fadministrator%2Fcomponents%2Fcom_banners%2Fbanners.xml&amp;amp;view=markup the manifest of the Banner component in version 1.6.5].&lt;br /&gt;
&lt;br /&gt;
The Joomla testing process uses several extensions to test whether the installer works correctly. The latest versions of the manifests of these extensions are:&lt;br /&gt;
&lt;br /&gt;
* [http://svn.joomla.org/project/cms/development/trunk/tests/_data/installer_packages/com_alpha/alpha.xml com_alpha manifest]&lt;br /&gt;
* [http://svn.joomla.org/project/cms/development/trunk/tests/_data/installer_packages/mod_alpha/mod_alpha.xml mod_alpha manifest]&lt;br /&gt;
* [http://svn.joomla.org/project/cms/development/trunk/tests/_data/installer_packages/plg_system_alpha/alpha.xml plg_system_alpha manifest]&lt;br /&gt;
* [http://svn.joomla.org/project/cms/development/trunk/tests/_data/installer_packages/tpl_simple/templateDetails.xml tpl_simple manifest]&lt;br /&gt;
* [http://svn.joomla.org/project/cms/development/trunk/tests/_data/installer_packages/lng_xx-XX/xx-XX.xml lng_xx-XX manifest]&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:akede|Alex Kempkens]]&lt;br /&gt;
*[[User:dperaza|Daniel Peraza]]&lt;br /&gt;
*[[User:nikosdion|Nicholas K. Dionysopoulos]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Specifications]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Standard_form_field_types</id>
		<title>Standard form field types</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Standard_form_field_types"/>
				<updated>2011-09-13T22:47:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: As of this edit, the usergroup parameter provides a drop down list rather than a set of checkboxes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Numerous types of [[form field]] are built into Joomla!. The following table lists these standard types and their availability.&lt;br /&gt;
&lt;br /&gt;
{{JVer|1.5}} Please note that many of these fields are available as [[Parameter|parameter types]] in Joomla! 1.5. For a list of parameter types, see [[Standard parameter types]]. For a comparison between form field and parameter types, see [[Standard form field and parameter types]].&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;vertical-align:top; border:1px solid Sienna; background-color:Cornsilk;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:Wheat; font-weight:bold; text-align: left;&amp;quot;&lt;br /&gt;
!width=15%|Type&lt;br /&gt;
!width=70%|Description&lt;br /&gt;
!width=15%|Availability&lt;br /&gt;
|-&lt;br /&gt;
|[[Accesslevel form field type|accesslevel]]&lt;br /&gt;
|provides a drop down list of viewing access levels.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Cachehandler form field type|cachehandler]]&lt;br /&gt;
|provides a list of available cache handling options.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Calendar form field type|calendar]]&lt;br /&gt;
|provides a text box for entry of a date. An icon next to the text box provides a link to a pop-up calendar, which can also be used to enter the date value.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Category form field type|category]]&lt;br /&gt;
|provides a drop down list of categories for an extension.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Checkbox form field type|checkbox]]&lt;br /&gt;
|provides a single checkbox to be checked or unchecked&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Checkboxes form field type|checkboxes]]&lt;br /&gt;
|provides unlimited checkboxes that can be used for multi-select.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Combo form field type|combo]]&lt;br /&gt;
|provides a combo box field.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Componentlayout form field type|componentlayout]]&lt;br /&gt;
|provides a grouped list of core and template alternate layouts for a component item.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Contentlanguage form field type|contentlanguage]]&lt;br /&gt;
|provides a list of installed content languages for use in conjunction with the language switcher plugin.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Editor form field type|editor]]&lt;br /&gt;
|provides an editor area field.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Editors form field type|editors]]&lt;br /&gt;
|provides a drop down list of the available WYSIWYG editors.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[File form field type|file]]&lt;br /&gt;
|&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Filelist form field type|filelist]]&lt;br /&gt;
|provides a drop down list of files from a specified directory.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Folderlist form field type|folderlist]]&lt;br /&gt;
|provides a drop down list of folders from a specified directory.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Groupedlist form field type|groupedlist]]&lt;br /&gt;
|provides a drop down list of items organized into groups.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Helpsite form field type|helpsite]]&lt;br /&gt;
|provides a drop down list of the help sites for your Joomla installation.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Hidden form field type|hidden]]&lt;br /&gt;
|provides a hidden field for saving a form field whose value cannot be altered directly by a user in the Administrator (it can be altered in code or by editing the ''params.ini'' file).&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Imagelist form field type|imagelist]]&lt;br /&gt;
|provides a drop down list of image files in a specified directory.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Integer form field type|integer]]&lt;br /&gt;
|provides a drop down list of integers between a minimum and maximum.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Language form field type|language]]&lt;br /&gt;
|provides a drop down list of the installed languages for the Front-end or Back-end.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[List form field type|list]]&lt;br /&gt;
|provides a drop down list of custom-defined entries.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Media form field type|media]]&lt;br /&gt;
|provides modal access to the media manager for insertion of images with upload for users with appropriate permissions.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Menu form field type|menu]]&lt;br /&gt;
|provides a drop down list of the available menus from your Joomla site.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Menuitem form field type|menuitem]]&lt;br /&gt;
|provides a drop down list of the available menu items from your Joomla site.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Modulelayout form field type|modulelayout]]&lt;br /&gt;
|provides a list of alternative layout for a module grouped by core and template.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Password form field type|password]]&lt;br /&gt;
|provides a text box for entry of a password.  The password characters will be obscured as they are entered.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Radio form field type|radio]]&lt;br /&gt;
|provides radio buttons to select different options.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Rules form field type|rules]]&lt;br /&gt;
|provides a matrix of group by action options for managing access control. Display depends on context.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Sessionhandler form field type|sessionhandler]]&lt;br /&gt;
|provides a drop down list of session handler options.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Spacer form field type|spacer]]&lt;br /&gt;
|provides a visual separator between form fields.  It is purely a visual aid and no value is stored.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[SQL form field type|sql]]&lt;br /&gt;
|provides a drop down list of entries obtained by running a query on the Joomla Database.  The first results column returned by the query provides the values for the drop down box.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Templatestyle form field type|templatestyle]]&lt;br /&gt;
|provides a drop down list of template styles.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Text form field type|text]]&lt;br /&gt;
|provides a text box for data entry.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Textarea form field type|textarea]]&lt;br /&gt;
|provides a text area for entry of multi-line text.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Timezone form field type|timezone]]&lt;br /&gt;
|provides a drop down list of time zones.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[User form field type|user]]&lt;br /&gt;
|provides a modal list of users.&lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|-&lt;br /&gt;
|[[Usergroup form field type|usergroup]]&lt;br /&gt;
|provides a drop down list of user groups. &lt;br /&gt;
|{{JVer|1.6}} and newer&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Joomla_CodeSniffer</id>
		<title>Joomla CodeSniffer</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Joomla_CodeSniffer"/>
				<updated>2011-07-23T00:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Why? */ We don't need to preach: if you're going to say why, just say why.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(This page needs expanded installation instructions, especially for Windows-based systems.)&lt;br /&gt;
&lt;br /&gt;
== A Nose For Joomla ==&lt;br /&gt;
&lt;br /&gt;
This is a custom coding standard for the PHP CodeSniffer that attempts to codify and enforce the Joomla coding standards.&lt;br /&gt;
&lt;br /&gt;
==Why?==&lt;br /&gt;
&lt;br /&gt;
- Coherent and consisting coding practice makes the files look more professional. Conflicting styles in the same project (or worse, the same file) not only look sloppy, they encourage further sloppiness.&lt;br /&gt;
&lt;br /&gt;
- When all code complies with the same standard, bad code is easier for everyone to spot.&lt;br /&gt;
&lt;br /&gt;
- It makes it easier for someone new to a particular file in the project to find and fix errors, or extend functionality.&lt;br /&gt;
&lt;br /&gt;
- If there is no consistent standard maintained, the sometimes developers will reformat the code to suit themselves. This causes a wide range of changes in the code repository, and if there is a later problem, a significant change could be lost in the chaff produced by a diff.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
First you'll need to install phpcs (http://pear.php.net/package/PHP_CodeSniffer/download/). This set of files is intended to work with phpcs version 1.3, so behavior with any other version is undefined.&lt;br /&gt;
&lt;br /&gt;
Then download and unzip the [http://joomlacode.org/gf/project/jcodesniffer/ Joomla CodeSniffer], and copy the contents of it into /path/to/PHP_CodeSniffer/Standards/Joomla. (The path on some systems is /usr/lib/php/PHP/PHP_CodeSniffer but this varies from system to system. Use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pear config-get php_dir&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to find out where the PEAR directory is on your system, then add &amp;quot;/PHP/PHP_CodeSniffer&amp;quot; to it.)&lt;br /&gt;
&lt;br /&gt;
You invoke the custom standard by&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;phpcs --standard=Joomla --tab-width=4 file/to/sniff&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further documentation on the use of phpcs can be found at: [http://pear.php.net/package/PHP_CodeSniffer/docs]&lt;br /&gt;
&lt;br /&gt;
==IDE integration==&lt;br /&gt;
&lt;br /&gt;
[[Image:eclipse_pti.png|left|thumb|200px|1) Eclipse PTI]]&lt;br /&gt;
While everybody loves the console as it is with no doubt the most effective way to do whatever you need to do.. sometimes even linux gurus need a little bit of comfort.&lt;br /&gt;
&lt;br /&gt;
Fortunately there is a plugin available for eclipse (tested) and netbeans (not tested) that integrates the CodeSniffer in our favorite IDE, so any coding standard violations are shown like &amp;quot;normal&amp;quot; errors (see screen shot 1).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Installation is a breeze and follows the usual pattern:&lt;br /&gt;
# &amp;lt;tt&amp;gt;Help =&amp;gt; Install new Software...&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;Work with:&amp;lt;/tt&amp;gt; Fill in one of the update site URLs found here: http://www.phpsrc.org/&lt;br /&gt;
# Select the desired tools&lt;br /&gt;
# Restart Eclipse.&lt;br /&gt;
&lt;br /&gt;
[[Image:eclipse_pti_settings.png|right|thumb|150px|2) Eclipse PTI settings]]&lt;br /&gt;
You are now able to sniff for code violations against common standards like PEAR or Zend etc.&lt;br /&gt;
&lt;br /&gt;
To sniff against your own standards, all you have to do is specify their location and activate them (see screen shot 2)&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tt&amp;gt;Window =&amp;gt; Preferences&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;PHP Tools =&amp;gt; PHP CodeSniffer&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Happy sniffing&lt;br /&gt;
&lt;br /&gt;
* http://www.phpsrc.org/ PTI - PHP tools integration for Eclipse&lt;br /&gt;
* http://github.com/beberlei/netbeans-php-enhancements/ Netbeans enhancements&lt;br /&gt;
* http://hakre.wordpress.com/2010/03/06/php-code-sniffer-eclipse-and-wordpress/ - Excellent article. Just change &amp;quot;Wordpress&amp;quot; for &amp;quot;Joomla!&amp;quot; ;)&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JTable</id>
		<title>JTable</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JTable"/>
				<updated>2011-01-07T14:43:31Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: Added a summary of JTable's auto-population functionality in Joomla 1.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''JTable''' is an abstract class that forms the basis for all database table classes.  Some of the methods listed will be overridden by the child class so you should check the child class documentation for further information.&lt;br /&gt;
&lt;br /&gt;
Each physical database table created should have a corresponding class derived from '''JTable''' to represent it.  '''JTable''' provides many methods to make common manipulations to the table much simpler.  For example, one of the most common operations you will need to perform is to read a table row into memory given a value for the primary key.  This can be done easily using the [[JTable/load|load]] method.  The table row can then be just as easily updated using the [[JTable/save|save]] method, which also performs any predefined sanity checks on the table fields.&lt;br /&gt;
&lt;br /&gt;
===Availability===&lt;br /&gt;
{{JVer|1.5|From Joomla 1.5}} {{JVer|1.6|With additional functionality in Joomla 1.6}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
/joomla/database/table.php&lt;br /&gt;
&lt;br /&gt;
===Extends===&lt;br /&gt;
* [[JObject]]&lt;br /&gt;
&lt;br /&gt;
===Extended by===&lt;br /&gt;
* [[JTableARO]]&lt;br /&gt;
* [[JTableAROGroup]]&lt;br /&gt;
* [[JTableAsset]] {{JVer|1.6|From 1.6}}&lt;br /&gt;
* [[JTableCategory]]&lt;br /&gt;
* [[JTableComponent]]&lt;br /&gt;
* [[JTableContent]]&lt;br /&gt;
* [[JTableMenu]]&lt;br /&gt;
* [[JTableMenuTypes]]&lt;br /&gt;
* [[JTableModule]]&lt;br /&gt;
* [[JTableNested]] {{JVer|1.6|From 1.6}}&lt;br /&gt;
* [[JTablePlugin]]&lt;br /&gt;
* [[JTableSection]]&lt;br /&gt;
* [[JTableSession]]&lt;br /&gt;
* [[JTableTree]] {{JVer|1.6|From 1.6}}&lt;br /&gt;
* [[JTableUser]]&lt;br /&gt;
&lt;br /&gt;
===Automatically Generated Properties===&lt;br /&gt;
{{JVer|1.6|From 1.6}}&lt;br /&gt;
As of Joomla 1.6, JTable properties are automatically generated based on the schema of the specified table. When you specify a table in a class that extends JTable, the field names are read from the table and set as properties. When using Joomla 1.5, you must manually declare all table columns as properties of the class that extends JTable.&lt;br /&gt;
&lt;br /&gt;
===Reserved Database Field Names===&lt;br /&gt;
Some of the optional features of JTable require the existence of specially-named fields in the database table.  If you require this additional functionality you should ensure that these named fields are present in the table.  These field names should be considered reserved as any attempts to use them for purposes other than those supported by JTable may result in conflict.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field name&lt;br /&gt;
!Methods using the field name&lt;br /&gt;
|-&lt;br /&gt;
|checked_out&lt;br /&gt;
|[[JTable/checkOut|checkOut]], [[JTable/checkIn|checkIn]], [[JTable/isCheckedOut|isCheckedOut]]&lt;br /&gt;
|-&lt;br /&gt;
|checked_out_time&lt;br /&gt;
|[[JTable/checkOut|checkOut]], [[JTable/checkIn|checkIn]], [[JTable/isCheckedOut|isCheckedOut]]&lt;br /&gt;
|-&lt;br /&gt;
|hits&lt;br /&gt;
|[[JTable/hit|hit]]&lt;br /&gt;
|-&lt;br /&gt;
|ordering&lt;br /&gt;
|[[JTable/getNextOrder|getNextOrder]], [[JTable/reorder|reorder]], [[JTable/move|move]]&lt;br /&gt;
|-&lt;br /&gt;
|published&lt;br /&gt;
|[[JTable/publish|publish]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Check-in/check-out====&lt;br /&gt;
Joomla tables implement a simple mechanism for preventing a [[wikipedia:race condition|race condition]] while editing rows in a database.  This depends on the existence of database fields called &amp;quot;checked_out&amp;quot; and &amp;quot;checked_out_time&amp;quot; and if these fields are present '''JTable''' will automatically support this mechanism so that it can be easily used in your tables too.  In addition to the [[JTable/checkOut|checkOut]] and [[JTable/checkIn|checkIn]] methods, there is a [[JTable/isCheckedOut|isCheckedOut]] method to determine if a given table row is currently checked out by another user.&lt;br /&gt;
&lt;br /&gt;
====Hit counter====&lt;br /&gt;
Some Joomla tables contain a field called &amp;quot;hits&amp;quot; which records the number of times that a table row has been accessed.  '''JTable''' provides a simple method to increment this field: [[JTable/hit|hit]].&lt;br /&gt;
&lt;br /&gt;
====Ordering====&lt;br /&gt;
Many Joomla tables support a user-defined ordering of the rows.&lt;br /&gt;
&lt;br /&gt;
To be written.&lt;br /&gt;
&lt;br /&gt;
====Publish/Unpublish====&lt;br /&gt;
To be written.&lt;br /&gt;
&lt;br /&gt;
===Get and Set Methods===&lt;br /&gt;
Properties which do not have specific get or set methods listed here can be retrieved or set using the inherited [[JObject/get|JObject-&amp;gt;get]] method.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Get method&lt;br /&gt;
!Set method&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getAssetNamePrefix|getAssetNamePrefix]]&lt;br /&gt;
|&lt;br /&gt;
|Abstract method to return the name prefix to use for the asset table.  {{JVer|1.6|From 1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getAssetSection|getAssetSection]]&lt;br /&gt;
|&lt;br /&gt;
|Abstract method to return the access section name for the asset table.  {{JVer|1.6|From 1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getAssetTitle|getAssetTitle]]&lt;br /&gt;
|&lt;br /&gt;
|Abstract method to return the title to use for the asset table.  {{JVer|1.6|From 1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getDBO|getDBO]]&lt;br /&gt;
|[[JTable/setDBO|setDBO]]&lt;br /&gt;
|Method to set/get the [[JDatabase]] connector object associated with the table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getTableName|getTableName]]&lt;br /&gt;
|&lt;br /&gt;
|Method to get the name of the database table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getKeyName|getKeyName]]&lt;br /&gt;
|&lt;br /&gt;
|Method to get the primary key field name for the table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Other Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/__construct|construct]]&lt;br /&gt;
|Object constructor to set table and key field&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/addIncludePath|addIncludePath]]&lt;br /&gt;
|Add a filesystem path where '''JTable''' should search for table class files.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/bind|bind]]&lt;br /&gt;
|Binds an associative array or object to the '''JTable''' instance.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/canDelete|canDelete]]&lt;br /&gt;
|Checks whether dependencies exist for this object in the database schema.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/check|check]]&lt;br /&gt;
|Perform sanity checks on the '''JTable''' instance properties.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/checkin|checkin]]&lt;br /&gt;
|Checks a row in if the necessary instance properties and table fields exist.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/checkout|checkout]]&lt;br /&gt;
|Checks a row out if the necessary instance properties and table fields exist.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/delete|delete]]&lt;br /&gt;
|Deletes a row from the database table by primary key value.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getInstance|getInstance]]&lt;br /&gt;
|Static method to get an instance of a '''JTable''' class.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getNextOrder|getNextOrder]]&lt;br /&gt;
|Gets the next ordering value for a group of rows defined by an SQL WHERE clause.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/hit|hit]]&lt;br /&gt;
|Increments the hits for a row if the necessary instance property and table field exists.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/isCheckedOut|isCheckedOut]]&lt;br /&gt;
|Determines if a row is checked out and therefore un-editable by a user.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/load|load]]&lt;br /&gt;
|Loads a row from the database by primary key and binds the fields to the '''JTable''' instance properties.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/move|move]]&lt;br /&gt;
|Moves a row in the ordering sequence of a group of rows defined by an SQL WHERE clause.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/publish|publish]]&lt;br /&gt;
|Sets the publishing state for a row or list of rows in the database table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/reorder|reorder]]&lt;br /&gt;
|Compacts the ordering values of rows in a group of rows defined by an SQL WHERE clause.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/reset|reset]]&lt;br /&gt;
|Resets class properties to the defaults set in the class definition.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/save|save]]&lt;br /&gt;
|Provides a shortcut to binding, checking and storing a '''JTable''' instance to the database table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/store|store]]&lt;br /&gt;
|Stores a row in the database from the '''JTable''' instance properties.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/toXML|toXML]]&lt;br /&gt;
|Exports the '''JTable''' instance properties to an XML string.&lt;br /&gt;
|}&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( 'joomla.database.table' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Extending the JTable Class for new database tables===&lt;br /&gt;
The JTable Class can easily be extended in order to make the table object represent any table in your database.&lt;br /&gt;
A good start how to learn about creating Child Classes for the JTable Class is to take a look at the fourth part of the [http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_4_-_Creating_an_Administrator_Interface#Creating_the_Table_Class MVC Tutorial]&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
* [http://api.joomla.org/Joomla-Framework/Table/JTable.html JTable on api.joomla.org]&lt;br /&gt;
* [[How to use the JTable class]]&lt;br /&gt;
* [[How to use the database classes in your script]]&lt;br /&gt;
* [[Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface]]&lt;br /&gt;
* [[How to connect to an external database]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]][[Category:Framework]][[Category:JTable]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JTable</id>
		<title>JTable</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JTable"/>
				<updated>2010-12-14T18:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* See also */ added link to JTable class tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''JTable''' is an abstract class that forms the basis for all database table classes.  Some of the methods listed will be overridden by the child class so you should check the child class documentation for further information.&lt;br /&gt;
&lt;br /&gt;
Each physical database table created should have a corresponding class derived from '''JTable''' to represent it.  '''JTable''' provides many methods to make common manipulations to the table much simpler.  For example, one of the most common operations you will need to perform is to read a table row into memory given a value for the primary key.  This can be done easily using the [[JTable/load|load]] method.  The table row can then be just as easily updated using the [[JTable/save|save]] method, which also performs any predefined sanity checks on the table fields.&lt;br /&gt;
&lt;br /&gt;
===Availability===&lt;br /&gt;
{{JVer|1.5|From Joomla 1.5}} {{JVer|1.6|With additional functionality in Joomla 1.6}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
/joomla/database/table.php&lt;br /&gt;
&lt;br /&gt;
===Extends===&lt;br /&gt;
* [[JObject]]&lt;br /&gt;
&lt;br /&gt;
===Extended by===&lt;br /&gt;
* [[JTableARO]]&lt;br /&gt;
* [[JTableAROGroup]]&lt;br /&gt;
* [[JTableAsset]] {{JVer|1.6|From 1.6}}&lt;br /&gt;
* [[JTableCategory]]&lt;br /&gt;
* [[JTableComponent]]&lt;br /&gt;
* [[JTableContent]]&lt;br /&gt;
* [[JTableMenu]]&lt;br /&gt;
* [[JTableMenuTypes]]&lt;br /&gt;
* [[JTableModule]]&lt;br /&gt;
* [[JTableNested]] {{JVer|1.6|From 1.6}}&lt;br /&gt;
* [[JTablePlugin]]&lt;br /&gt;
* [[JTableSection]]&lt;br /&gt;
* [[JTableSession]]&lt;br /&gt;
* [[JTableTree]] {{JVer|1.6|From 1.6}}&lt;br /&gt;
* [[JTableUser]]&lt;br /&gt;
&lt;br /&gt;
===Reserved Database Field Names===&lt;br /&gt;
Some of the optional features of JTable require the existence of specially-named fields in the database table.  If you require this additional functionality you should ensure that these named fields are present in the table.  These field names should be considered reserved as any attempts to use them for purposes other than those supported by JTable may result in conflict.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Field name&lt;br /&gt;
!Methods using the field name&lt;br /&gt;
|-&lt;br /&gt;
|checked_out&lt;br /&gt;
|[[JTable/checkOut|checkOut]], [[JTable/checkIn|checkIn]], [[JTable/isCheckedOut|isCheckedOut]]&lt;br /&gt;
|-&lt;br /&gt;
|checked_out_time&lt;br /&gt;
|[[JTable/checkOut|checkOut]], [[JTable/checkIn|checkIn]], [[JTable/isCheckedOut|isCheckedOut]]&lt;br /&gt;
|-&lt;br /&gt;
|hits&lt;br /&gt;
|[[JTable/hit|hit]]&lt;br /&gt;
|-&lt;br /&gt;
|ordering&lt;br /&gt;
|[[JTable/getNextOrder|getNextOrder]], [[JTable/reorder|reorder]], [[JTable/move|move]]&lt;br /&gt;
|-&lt;br /&gt;
|published&lt;br /&gt;
|[[JTable/publish|publish]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Check-in/check-out====&lt;br /&gt;
Joomla tables implement a simple mechanism for preventing a [[wikipedia:race condition|race condition]] while editing rows in a database.  This depends on the existence of database fields called &amp;quot;checked_out&amp;quot; and &amp;quot;checked_out_time&amp;quot; and if these fields are present '''JTable''' will automatically support this mechanism so that it can be easily used in your tables too.  In addition to the [[JTable/checkOut|checkOut]] and [[JTable/checkIn|checkIn]] methods, there is a [[JTable/isCheckedOut|isCheckedOut]] method to determine if a given table row is currently checked out by another user.&lt;br /&gt;
&lt;br /&gt;
====Hit counter====&lt;br /&gt;
Some Joomla tables contain a field called &amp;quot;hits&amp;quot; which records the number of times that a table row has been accessed.  '''JTable''' provides a simple method to increment this field: [[JTable/hit|hit]].&lt;br /&gt;
&lt;br /&gt;
====Ordering====&lt;br /&gt;
Many Joomla tables support a user-defined ordering of the rows.&lt;br /&gt;
&lt;br /&gt;
To be written.&lt;br /&gt;
&lt;br /&gt;
====Publish/Unpublish====&lt;br /&gt;
To be written.&lt;br /&gt;
&lt;br /&gt;
===Get and Set Methods===&lt;br /&gt;
Properties which do not have specific get or set methods listed here can be retrieved or set using the inherited [[JObject/get|JObject-&amp;gt;get]] method.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Get method&lt;br /&gt;
!Set method&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getAssetNamePrefix|getAssetNamePrefix]]&lt;br /&gt;
|&lt;br /&gt;
|Abstract method to return the name prefix to use for the asset table.  {{JVer|1.6|From 1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getAssetSection|getAssetSection]]&lt;br /&gt;
|&lt;br /&gt;
|Abstract method to return the access section name for the asset table.  {{JVer|1.6|From 1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getAssetTitle|getAssetTitle]]&lt;br /&gt;
|&lt;br /&gt;
|Abstract method to return the title to use for the asset table.  {{JVer|1.6|From 1.6}}&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getDBO|getDBO]]&lt;br /&gt;
|[[JTable/setDBO|setDBO]]&lt;br /&gt;
|Method to set/get the [[JDatabase]] connector object associated with the table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getTableName|getTableName]]&lt;br /&gt;
|&lt;br /&gt;
|Method to get the name of the database table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getKeyName|getKeyName]]&lt;br /&gt;
|&lt;br /&gt;
|Method to get the primary key field name for the table&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Other Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/__construct|construct]]&lt;br /&gt;
|Object constructor to set table and key field&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/addIncludePath|addIncludePath]]&lt;br /&gt;
|Add a filesystem path where '''JTable''' should search for table class files.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/bind|bind]]&lt;br /&gt;
|Binds an associative array or object to the '''JTable''' instance.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/canDelete|canDelete]]&lt;br /&gt;
|Checks whether dependencies exist for this object in the database schema.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/check|check]]&lt;br /&gt;
|Perform sanity checks on the '''JTable''' instance properties.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/checkin|checkin]]&lt;br /&gt;
|Checks a row in if the necessary instance properties and table fields exist.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/checkout|checkout]]&lt;br /&gt;
|Checks a row out if the necessary instance properties and table fields exist.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/delete|delete]]&lt;br /&gt;
|Deletes a row from the database table by primary key value.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getInstance|getInstance]]&lt;br /&gt;
|Static method to get an instance of a '''JTable''' class.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/getNextOrder|getNextOrder]]&lt;br /&gt;
|Gets the next ordering value for a group of rows defined by an SQL WHERE clause.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/hit|hit]]&lt;br /&gt;
|Increments the hits for a row if the necessary instance property and table field exists.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/isCheckedOut|isCheckedOut]]&lt;br /&gt;
|Determines if a row is checked out and therefore un-editable by a user.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/load|load]]&lt;br /&gt;
|Loads a row from the database by primary key and binds the fields to the '''JTable''' instance properties.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/move|move]]&lt;br /&gt;
|Moves a row in the ordering sequence of a group of rows defined by an SQL WHERE clause.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/publish|publish]]&lt;br /&gt;
|Sets the publishing state for a row or list of rows in the database table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/reorder|reorder]]&lt;br /&gt;
|Compacts the ordering values of rows in a group of rows defined by an SQL WHERE clause.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/reset|reset]]&lt;br /&gt;
|Resets class properties to the defaults set in the class definition.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/save|save]]&lt;br /&gt;
|Provides a shortcut to binding, checking and storing a '''JTable''' instance to the database table.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/store|store]]&lt;br /&gt;
|Stores a row in the database from the '''JTable''' instance properties.&lt;br /&gt;
|-&lt;br /&gt;
|[[JTable/toXML|toXML]]&lt;br /&gt;
|Exports the '''JTable''' instance properties to an XML string.&lt;br /&gt;
|}&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( 'joomla.database.table' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Extending the JTable Class for new database tables===&lt;br /&gt;
The JTable Class can easily be extended in order to make the table object represent any table in your database.&lt;br /&gt;
A good start how to learn about creating Child Classes for the JTable Class is to take a look at the fourth part of the [http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_4_-_Creating_an_Administrator_Interface#Creating_the_Table_Class MVC Tutorial]&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
* [http://api.joomla.org/Joomla-Framework/Table/JTable.html JTable on api.joomla.org]&lt;br /&gt;
* [[How to use the JTable class]]&lt;br /&gt;
* [[How to use the database classes in your script]]&lt;br /&gt;
* [[Developing a Model-View-Controller Component - Part 4 - Creating an Administrator Interface]]&lt;br /&gt;
* [[How to connect to an external database]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]][[Category:Framework]][[Category:JTable]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/International_Enhancements_for_Version_1.6</id>
		<title>International Enhancements for Version 1.6</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/International_Enhancements_for_Version_1.6"/>
				<updated>2010-09-14T14:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* The new .sys.ini */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
Language and International Enhancements for Version 1.6&lt;br /&gt;
&lt;br /&gt;
===3-Letter Language Prefixes for Installation===&lt;br /&gt;
&lt;br /&gt;
In version 1.5, we are limited to language prefixes of 2 letters at installation time. i.e fr-FR and not fra-FR. In all other areas of Joomla!, we can use 3-letter language prefixes. Many languages in the world can't be accomodated with a 2 letters prefix. ISO gives each langage a prefix. For example &amp;quot;ast&amp;quot; for Asturian (Spain), &amp;quot;sla&amp;quot; for Montenegrian (Montenegro) etc. See http://www.loc.gov/standards/iso639-2/php/code_list.php&lt;br /&gt;
&lt;br /&gt;
Joomla tries to propose a specific language for installing depending on the browser's settings. Let's say a browser is set to use Slovenian as preferred language (sl). If, among the installation languages proposed by Joomla, we have a 3 letters ISO code language which tag starts by &amp;quot;sl&amp;quot;  - the prefix- (for example for Montenegrin sla-ME) and IF the sl-SI Slovenian language pack is not present among J! languages, then a Slovenian would be presented with a Montenegrian first install screen.&lt;br /&gt;
&lt;br /&gt;
No browsers as of today include 3-letters ISO languages. The only solution to prevent this is to default all 3 letters code Joomla! languages to English in the first install screen. At that point, you can choose the correct language for installation.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;br /&gt;
* http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&amp;amp;tracker_item_id=19270&lt;br /&gt;
&lt;br /&gt;
The issue is not present when a user installs a customised distribution of Joomla as the installation language can be defined in the localise.xml file.&lt;br /&gt;
&lt;br /&gt;
=== Default Latin Transliteration ===&lt;br /&gt;
&lt;br /&gt;
Transliteration is used in Joomla! to automatically create or modify non-compliant aliases into ASCII strings. These aliases are used for creating SEF URLs. I.e the title of an article or menu item can be &amp;quot;Émergé&amp;quot;, the auto alias will transliterate it into &amp;quot;emerge&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In 1.5, this transliteration would not know how to manage for Latin supplement, Extended A letters used in some central European countries and people had to modify manually their aliases when created automatically.&lt;br /&gt;
&lt;br /&gt;
In 1.6 has been added a table to help take care of most Latin languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note:''' As in 1.5, when non latin glyphs are entered in the Title field, alias field is left empty and Unicode slugs are not implemented (see below), the alias field will automatically be filled with the present date)&lt;br /&gt;
&lt;br /&gt;
===Custom Transliteration Support===&lt;br /&gt;
&lt;br /&gt;
For people who still want to use ASCII SEF but are not using a Latin language(Cyrillic, Greek,...) or with specific usage (some weird math glyphs, etc.) we have added the ability to override the default Latin transliteration by adding some code in a specific file called xx-XX.localise.php (use correct lang tag) in the core language pack for their language.&lt;br /&gt;
&lt;br /&gt;
We have such a file and a sample table for Latin 1, Latin supplement , extended A, Cyrillic, Greek in the temporary xx-XX site language folder in 1.6 trunk (this language will be taken off when 1.6 reaches RC). It adds a table where all the said glyphs are transliterated to their ASCII counterparts, charge to the Translation Team providing the packs to make sure this transliteration is correct.&lt;br /&gt;
&lt;br /&gt;
For example ω will be transliterated into an &amp;quot;o&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
Concerning the xx-XX.override.php see: http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6&lt;br /&gt;
&lt;br /&gt;
All usage of this file is explained there in details.&lt;br /&gt;
&lt;br /&gt;
===Unicode URLs===&lt;br /&gt;
&lt;br /&gt;
Opposed to transliteration, one may now use natively in 1.6 Unicode urls. This parameter is defined in Global Configuration.&lt;br /&gt;
This way of making aliases does not transliterate, it displays the utf8 glyphs instead of ascii.&lt;br /&gt;
It uses Percent Encodings to display correctly ( http://en.wikipedia.org/wiki/Percent-encoding ).&lt;br /&gt;
&lt;br /&gt;
Wikipedia demonstrates this in Persian:&lt;br /&gt;
http://ps.wikipedia.org/wiki/فارسي&lt;br /&gt;
is in fact:&lt;br /&gt;
http://ps.wikipedia.org/wiki/%D9%81%D8%A7%D8%B1%D8%B3%D9%8A&lt;br /&gt;
&lt;br /&gt;
Browsers behave differently when copying such urls. Firefox will copy the unicode format while Opera will get the original glyphs.&lt;br /&gt;
Google has no problem searching or referencing such links.&lt;br /&gt;
&lt;br /&gt;
===Language String Overrides===&lt;br /&gt;
&lt;br /&gt;
If you wish to change an existing value for a string present in Joomla! core or for a specific extension, the only solution in version 1.5 is to edit the ini file concerned and change the value of the string.&lt;br /&gt;
&lt;br /&gt;
When updating Core, the extension or a translated ini file, your local changes can be overwritten if there are updates to the edited language file.&lt;br /&gt;
&lt;br /&gt;
The new xx-XX.override.ini file has been created to avoid this issue. Instead of changing the original file, one can add in a file tagged to the language chosen (en-GB.override.ini for example) any key already existing somewhere among all ini files and a specific value.&lt;br /&gt;
&lt;br /&gt;
The file has to be placed in administrator/languages/overrides/ or languages/overrides/ for frontend.&lt;br /&gt;
&lt;br /&gt;
For example, if you add the following value to the override.ini file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;JSAVE=&amp;quot;Save now!&amp;quot;&amp;lt;/code&amp;gt;, then this will replace the &amp;lt;code&amp;gt;JSAVE=&amp;quot;Save&amp;quot;&amp;lt;/code&amp;gt; throughout your site.&lt;br /&gt;
&lt;br /&gt;
This file will not be uninstalled or overwritten when updating. Since the override file loads last, ALL keys present in your Joomla can be overriden.&lt;br /&gt;
&lt;br /&gt;
===Language Folder For Extensions ===&lt;br /&gt;
&lt;br /&gt;
In version 1.6, language files can be added to a language folder under the extension folder. For example, &amp;lt;code&amp;gt;mod_mymodule/language/en-gb/en-gb.mod_mymodule.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Extension developers can choose this solution instead of adding the language files inside the core folders. This does not prevent adding translation of these files in the main core folder. Users have still to beware when uninstalling a language, since this will delete all ini files in the core language folders, included extension-related ones.&lt;br /&gt;
&lt;br /&gt;
===The new .sys.ini===&lt;br /&gt;
The .sys.ini language files are used for extension description translations on the install and update screens. These files are used so that descriptions of all extensions in the system can be loaded at once. This avoids the overhead of loading and parsing full language files for every installed extension. If you only need the description or name of an extension, it is preferable to load the .sys.ini file instead of the .ini file.&lt;br /&gt;
&lt;br /&gt;
The new sys.ini file replaces the .menu.ini in 1.5 and provides translation in some Managers.&lt;br /&gt;
&lt;br /&gt;
As the 3pd can now include specific script at install time, the sys.ini is also used in case these scripts contain language keys.&lt;br /&gt;
&lt;br /&gt;
* '''!!''' All extensions should have a xx-XX.nameofextension.sys.ini file&lt;br /&gt;
&lt;br /&gt;
=== Langswitcher / Languagefilter ===&lt;br /&gt;
&lt;br /&gt;
This is a simple multilingual solution provided by one module and one plugin. See the tutorial [[Language_Switcher_Tutorial_for_Joomla_1.6]].&lt;br /&gt;
&lt;br /&gt;
===Pluralization Support for Translation Files===&lt;br /&gt;
&lt;br /&gt;
1.6 uses a new function JText::plural() for usual ones.&lt;br /&gt;
&lt;br /&gt;
Code example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;setMessage(JText::plural('COM_USERS_N_USERS_ACTIVATED', count($ids)));&amp;lt;/source&amp;gt;&lt;br /&gt;
will use the following ini strings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
COM_USERS_N_USERS_ACTIVATED=&amp;quot;%s Users successfully activated&amp;quot;&lt;br /&gt;
COM_USERS_N_USERS_ACTIVATED_1=&amp;quot;User successfully activated&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To which could be added for languages where the equivalent to the word &amp;quot;Users&amp;quot; is different for 0 and for multiple:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
COM_USERS_N_USERS_ACTIVATED_0=&amp;quot;0 (or No) users activated&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Concerning extremely customised languages where the value not only changes for zero, 1 and &amp;gt;1 but also for 5 for example (Russian) and depending of context, this is done in the same file xx-XX.localise.php stated above for transliteration.&lt;br /&gt;
&lt;br /&gt;
See http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6&lt;br /&gt;
&lt;br /&gt;
===Support for Non-Gregorian Calendars===&lt;br /&gt;
&lt;br /&gt;
In the display of the date in front and back-end calendar fields, we need to be able to override the Javascript files used to render the dates. In version 1.6, we can now do that by installing custom Javascript in the media folder. That means that in version 1.6 Persian or other distributions no longer need to be hacked to get local calendar display and that these sites can be truly multi-language and permit switching and get the right calendar for the language concerned. This is done in the same file xx-XX.localise.php stated above for transliteration.&lt;br /&gt;
&lt;br /&gt;
This needs to be done this way because MySQL accepts only Gregorian dates, thus the need to calculate when saving and when loading for these languages.&lt;br /&gt;
&lt;br /&gt;
See http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6&lt;br /&gt;
&lt;br /&gt;
===New Search related parameters===&lt;br /&gt;
&lt;br /&gt;
The xx-XX.override.php  is also used to define new parameters concerning search.&lt;br /&gt;
&lt;br /&gt;
It replaces the xx-XX.ignore.php in 1.5 and includes new functionalities:&lt;br /&gt;
&lt;br /&gt;
*Define the words to not search for (as the ignore.php)&lt;br /&gt;
&lt;br /&gt;
*Define a lower limit and upper limit of characters to search for, in order to accommodate 2 bytes languages as Chinese.&lt;br /&gt;
&lt;br /&gt;
*Define the number of characters displayed in the results.&lt;br /&gt;
&lt;br /&gt;
See http://docs.joomla.org/Tutorial:Making_a_Language_Pack_for_Version_1.6&lt;br /&gt;
&lt;br /&gt;
===Plugins Language Files===&lt;br /&gt;
&lt;br /&gt;
In 1.5 any front-end display created by some plugins could not load their lang file in front-end.&lt;br /&gt;
&lt;br /&gt;
This forced some 3pd to code specially to get these strings loaded. In version 1.6, plugin language files that exist in the back-end are loaded when the plugin renders output in the front end, eliminating the need for special code by 3pds.&lt;br /&gt;
&lt;br /&gt;
===Templates Need Only One Language File===&lt;br /&gt;
&lt;br /&gt;
Front-end templates using custom strings in the front-end need to have a separate language file for front-end in 1.5.&lt;br /&gt;
&lt;br /&gt;
In 1.6 we need only one file which is loaded in both the front and back ends. This ini file will now load custom template override strings as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Joomla! 1.6]] [[Category:Languages]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Talk:PHP_essentials</id>
		<title>Talk:PHP essentials</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Talk:PHP_essentials"/>
				<updated>2009-07-28T18:24:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: signed my comment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's actually *not* recommended that you start PHP code by &amp;quot;&amp;lt;?php&amp;quot; and end with a &amp;quot;?&amp;gt;&amp;quot; tag. If you are embedding PHP code within HTML markup, you do need to use the closing tag or the file will not parse correctly. However, if the file ends with PHP code instead of HTML markup, it is actually preferred to leave off the final &amp;quot;?&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I would change that to read &amp;quot;When embedding PHP code within HTML markup, use &amp;lt;?php to start your code and ?&amp;gt; to close it&amp;quot; -jlleblanc&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Talk:PHP_essentials</id>
		<title>Talk:PHP essentials</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Talk:PHP_essentials"/>
				<updated>2009-07-28T18:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: New page: It's actually *not* recommended that you start PHP code by &amp;quot;&amp;lt;?php&amp;quot; and end with a &amp;quot;?&amp;gt;&amp;quot; tag. If you are embedding PHP code within HTML markup, you do need to use the closing tag or the file...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's actually *not* recommended that you start PHP code by &amp;quot;&amp;lt;?php&amp;quot; and end with a &amp;quot;?&amp;gt;&amp;quot; tag. If you are embedding PHP code within HTML markup, you do need to use the closing tag or the file will not parse correctly. However, if the file ends with PHP code instead of HTML markup, it is actually preferred to leave off the final &amp;quot;?&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I would change that to read &amp;quot;When embedding PHP code within HTML markup, use &amp;lt;?php to start your code and ?&amp;gt; to close it&amp;quot;&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Pizza_Bugs_and_Fun_2/Contributors_List</id>
		<title>Pizza Bugs and Fun 2/Contributors List</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Pizza_Bugs_and_Fun_2/Contributors_List"/>
				<updated>2008-06-21T01:19:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Contributors to the second PBF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;If you made a contribution to the documentation held on this site, please feel free to add your name below.  Please consider adding your real name in addition to your nickname.  You may, optionally, include a link to your website.&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors to the second PBF ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;'''The people below plan to participate to PBF. Afterwards the list will be validated for the present we are planning. Those who haven't participated will be removed from this list afterward.'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Chris Davenport ([[Special:Contributions/Chris_Davenport|contributions]])&lt;br /&gt;
* Kevin Devine ([[Special:Contributions/Kevin_Devine|contributions]])&lt;br /&gt;
* Anthony Ferrara ([[Special:Contributions/ircmaxell|contributions]])&lt;br /&gt;
* Jerry Hilburn ([[Special:Contributions/Jerry_Hilburn|contributions]])&lt;br /&gt;
* Louis Landry ([[Special:Contributions/Louis_Landry|contributions]])&lt;br /&gt;
* Wilco Jansen ([[Special:Contributions/willebil|contributions]])&lt;br /&gt;
* Jennifer Marriott ([[Special:Contributions/MMMedia|contributions]])&lt;br /&gt;
* Rob Schley ([[Special:Contributions/Rob_Schley|contributions]])&lt;br /&gt;
* Amy Stephen ([[Special:Contributions/AmyStephen|contributions]])&lt;br /&gt;
* Nereyda Valentin-Macias ([[Special:Contributions/Neriv|contributions]])&lt;br /&gt;
* Elin Waring ([[Special:Contributions/Elin|contributions]])&lt;br /&gt;
* Michael Casha ([[Special:Contributions/MiCCAS|contributions]])&lt;br /&gt;
* Phil Taylor ([[Special:Contributions/Prazgod|contributions]])&lt;br /&gt;
* Marcelo Eden ([[Special:Contributions/3dentech|contributions]])&lt;br /&gt;
* Matt Thomas ([[Special:Contributions/betweenbrain|contributions]])&lt;br /&gt;
* Ross Crawford ([[Special:Contributions/RoscoHead|contributions]])&lt;br /&gt;
* Mickael Maison ([[Special:Contributions/Mmaison|contributions]])&lt;br /&gt;
* Ian MacLennan ([[Special:Contributions/ian|contributions]])&lt;br /&gt;
* Jaap Woltjes ([[Special:Contributions/japie1001|contributions]])&lt;br /&gt;
* Alan Langford ([[Special:Contributions/Instance|contributions]])&lt;br /&gt;
* Michael Hamanaka ([[Special:Contributions/hamanaka|contributions]])&lt;br /&gt;
* Joe LeBlanc ([[Special:Contributions/jlleblanc|contributions]])&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar</id>
		<title>Retrieving and Filtering GET and POST requests with JRequest::getVar</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar"/>
				<updated>2008-04-21T19:31:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
When writing any web application, it is crucial that you filter input data before using it. Joomla! provides a set of filtering libraries to help you accomplish this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JRequest functions ==&lt;br /&gt;
&lt;br /&gt;
Under most circumstances, you will want to use member functions the JRequest class to get request variables. The most common case is when you want to use a specific variable found in either the GET or POST portion of the HTTP request. If you have a form variable named 'address', you would want to use this code to get it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$address = JRequest::getVar('address');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By setting $address this way, getVar() strips out all HTML and trailing whitespace. If you want to specify a default value in the event that 'address' is not in the request or is unset, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$address = JRequest::getVar('address', 'default value goes here');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently, you will expect your variable to be found in a specific portion of the HTTP request (POST, GET, etc...). If this is the case, you should specify which portion; this will slightly increase your extension's security. If you expect 'address' to only be in POST, use this code to enforce that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$address = JRequest::getVar('address', 'default value goes here', 'post');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fourth parameter of getVar() can be used to specify certain filters to force validation of specific value types for the variable. Here is a list of types you can validate:&lt;br /&gt;
&lt;br /&gt;
*INT&lt;br /&gt;
*INTEGER&lt;br /&gt;
*FLOAT&lt;br /&gt;
*DOUBLE&lt;br /&gt;
*BOOL&lt;br /&gt;
*BOOLEAN&lt;br /&gt;
*WORD&lt;br /&gt;
*ALNUM&lt;br /&gt;
*CMD&lt;br /&gt;
*BASE64&lt;br /&gt;
*STRING&lt;br /&gt;
*ARRAY&lt;br /&gt;
*PATH&lt;br /&gt;
*USERNAME&lt;br /&gt;
&lt;br /&gt;
Finally, there are some mask constants you can pass in as the fifth parameter that allow you to bypass portions of the filtering:&lt;br /&gt;
&lt;br /&gt;
*JREQUEST_NOTRIM - prevents trimming of whitespace&lt;br /&gt;
*JREQUEST_ALLOWRAW - bypasses filtering&lt;br /&gt;
*JREQUEST_ALLOWHTML - allows most HTML. If this is not passed in, HTML is stripped out by default.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar</id>
		<title>Retrieving and Filtering GET and POST requests with JRequest::getVar</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar"/>
				<updated>2008-04-21T18:56:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: New page: {{stub}} {{inuse}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{inuse}}&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_create_a_system_plugin</id>
		<title>How to create a system plugin</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_create_a_system_plugin"/>
				<updated>2008-04-04T13:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
* onAfterInitialise&lt;br /&gt;
* onAfterRoute&lt;br /&gt;
* onAfterDispatch&lt;br /&gt;
* onAfterRender&lt;br /&gt;
* onGetWebServices&lt;br /&gt;
* onLoginFailure&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Adding_JavaScript_and_CSS_to_the_page</id>
		<title>Adding JavaScript and CSS to the page</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Adding_JavaScript_and_CSS_to_the_page"/>
				<updated>2008-04-02T14:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
To have a well-formed XHTML document, you must put all references to Javascript and CSS files within the &amp;lt;head&amp;gt; portion. Since Joomla! generates all of the HTML that makes up a page before output, it is possible to add these references to the &amp;lt;head&amp;gt; tag from your extension. To accomplish this, you first need to get a reference to the current document object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$document =&amp;amp; JFactory::getDocument();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To add a Javascript file, use this code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$document-&amp;gt;addScript($url);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a stylesheet, use this code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$document-&amp;gt;addStyleSheet($url);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to add custom HTML to the head tag, use this code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$document-&amp;gt;addCustomTag($html);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Adding_JavaScript_and_CSS_to_the_page</id>
		<title>Adding JavaScript and CSS to the page</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Adding_JavaScript_and_CSS_to_the_page"/>
				<updated>2008-04-02T14:30:45Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: New page: {{stub}} {{inuse}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
{{inuse}}&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JDOC:Joomla!_Doc_Camp/Contributors_List</id>
		<title>JDOC:Joomla! Doc Camp/Contributors List</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JDOC:Joomla!_Doc_Camp/Contributors_List"/>
				<updated>2008-01-19T22:18:10Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you made a contribution to the documentation held on this site, please feel free to add your name below.  Please consider adding your real name in addition to your nickname.  You may, optionally, include a link to your website.&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
== Contributors ==&lt;br /&gt;
* Chris Davenport ([[Special:Contributions/Chris_Davenport|contributions]])&lt;br /&gt;
* Marieke ([[Special:Contributions/Marieke92|contributions]])&lt;br /&gt;
* Justin Kerr ([[Special:Contributions/Pomond|contributions]])&lt;br /&gt;
* [http://www.jlleblanc.com Joe LeBlanc] ([[Special:Contributions/Jlleblanc|contributions]])&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
[[Category:DocCamp]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/JDOC:Joomla!_Doc_Camp/Contributors_List</id>
		<title>JDOC:Joomla! Doc Camp/Contributors List</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/JDOC:Joomla!_Doc_Camp/Contributors_List"/>
				<updated>2008-01-19T22:17:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you made a contribution to the documentation held on this site, please feel free to add your name below.  Please consider adding your real name in addition to your nickname.  You may, optionally, include a link to your website.&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
== Contributors ==&lt;br /&gt;
* Chris Davenport ([[Special:Contributions/Chris_Davenport|contributions]])&lt;br /&gt;
* Marieke ([[Special:Contributions/Marieke92|contributions]])&lt;br /&gt;
* Justin Kerr ([[Special:Contributions/Pomond|contributions]])&lt;br /&gt;
* Joe LeBlanc ([[Special:Contributions/Jlleblanc|contributions]])&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
[[Category:DocCamp]]&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T22:11:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
{{JTable/Methods}}&lt;br /&gt;
=== getInstance ===&lt;br /&gt;
=== getDBO ===&lt;br /&gt;
=== setDBO ===&lt;br /&gt;
=== getTableName ===&lt;br /&gt;
=== getKeyName ===&lt;br /&gt;
=== reset ===&lt;br /&gt;
=== bind ===&lt;br /&gt;
=== load ===&lt;br /&gt;
=== check ===&lt;br /&gt;
=== store ===&lt;br /&gt;
=== move ===&lt;br /&gt;
=== getNextOrder ===&lt;br /&gt;
=== reorder ===&lt;br /&gt;
=== canDelete ===&lt;br /&gt;
=== delete ===&lt;br /&gt;
=== checkout ===&lt;br /&gt;
=== checkin ===&lt;br /&gt;
=== hit ===&lt;br /&gt;
=== isCheckedOut ===&lt;br /&gt;
=== save ===&lt;br /&gt;
=== publish ===&lt;br /&gt;
=== toXML ===&lt;br /&gt;
=== addIncludePath ===&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T22:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Member Functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
{{JTable/Methods}}&lt;br /&gt;
=== getInstance ===&lt;br /&gt;
=== getDBO ===&lt;br /&gt;
=== setDBO ===&lt;br /&gt;
=== getTableName ===&lt;br /&gt;
=== getKeyName ===&lt;br /&gt;
=== reset ===&lt;br /&gt;
=== bind ===&lt;br /&gt;
=== load ===&lt;br /&gt;
=== check ===&lt;br /&gt;
=== store ===&lt;br /&gt;
=== move ===&lt;br /&gt;
=== getNextOrder ===&lt;br /&gt;
=== reorder ===&lt;br /&gt;
=== canDelete ===&lt;br /&gt;
=== delete ===&lt;br /&gt;
=== checkout ===&lt;br /&gt;
=== checkin ===&lt;br /&gt;
=== hit ===&lt;br /&gt;
=== isCheckedOut ===&lt;br /&gt;
=== save ===&lt;br /&gt;
=== publish ===&lt;br /&gt;
=== toXML ===&lt;br /&gt;
=== addIncludePath ===&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T22:10:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: Undo revision 1344 by Jlleblanc (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
=== getInstance ===&lt;br /&gt;
=== getDBO ===&lt;br /&gt;
=== setDBO ===&lt;br /&gt;
=== getTableName ===&lt;br /&gt;
=== getKeyName ===&lt;br /&gt;
=== reset ===&lt;br /&gt;
=== bind ===&lt;br /&gt;
=== load ===&lt;br /&gt;
=== check ===&lt;br /&gt;
=== store ===&lt;br /&gt;
=== move ===&lt;br /&gt;
=== getNextOrder ===&lt;br /&gt;
=== reorder ===&lt;br /&gt;
=== canDelete ===&lt;br /&gt;
=== delete ===&lt;br /&gt;
=== checkout ===&lt;br /&gt;
=== checkin ===&lt;br /&gt;
=== hit ===&lt;br /&gt;
=== isCheckedOut ===&lt;br /&gt;
=== save ===&lt;br /&gt;
=== publish ===&lt;br /&gt;
=== toXML ===&lt;br /&gt;
=== addIncludePath ===&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T22:09:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
NOTE: This section should have a link to the API reference when it becomes available on the wiki. For the moment, the reference for JTable is here: http://api.joomla.org/Joomla-Framework/Table/JTable.html&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. Member functions take care of the rest when you add member variables, the table name, and the key column.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T22:06:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Member Functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
NOTE: This section should have a link to the API reference when it becomes available on the wiki. For the moment, the reference for JTable is here: http://api.joomla.org/Joomla-Framework/Table/JTable.html&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. When you add member variables to match your table's column names while defining the table name and key column, the provided member functions can take care of the rest.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T21:59:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
=== getInstance ===&lt;br /&gt;
=== getDBO ===&lt;br /&gt;
=== setDBO ===&lt;br /&gt;
=== getTableName ===&lt;br /&gt;
=== getKeyName ===&lt;br /&gt;
=== reset ===&lt;br /&gt;
=== bind ===&lt;br /&gt;
=== load ===&lt;br /&gt;
=== check ===&lt;br /&gt;
=== store ===&lt;br /&gt;
=== move ===&lt;br /&gt;
=== getNextOrder ===&lt;br /&gt;
=== reorder ===&lt;br /&gt;
=== canDelete ===&lt;br /&gt;
=== delete ===&lt;br /&gt;
=== checkout ===&lt;br /&gt;
=== checkin ===&lt;br /&gt;
=== hit ===&lt;br /&gt;
=== isCheckedOut ===&lt;br /&gt;
=== save ===&lt;br /&gt;
=== publish ===&lt;br /&gt;
=== toXML ===&lt;br /&gt;
=== addIncludePath ===&lt;br /&gt;
== Summary ==&lt;br /&gt;
When properly extended, JTable gives you all of the basic functions you need for managing and retrieving records in a database table. When you add member variables to match your table's column names while defining the table name and key column, the provided member functions can take care of the rest.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T21:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Using a JTable class extension */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an instance of the object, use this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row =&amp;amp; JTable::getInstance('recipes', 'Table');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the lowercase version of the suffix of your class name is used as the first parameter, with the prefix 'Table' as the second. Also, the getInstance() member function of JTable returns the object by reference instead of value; use =&amp;amp; to enforce this. &lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
In a typical situation, you will have an HTML form submitted by the user which will PHP will interpret for you as an associative array. The JRequest class in Joomla! has functions ready to assist with retrieving this data safely. Use JRequest::get('post') to retrieve all of the elements in the HTTP POST request as a sanitized array.&lt;br /&gt;
&lt;br /&gt;
Once you have this array, you can pass it into the bind() method of JTable. Doing this will match the associated items of the array with member variables of the class. In the following example, the array is retrieved from JRequest::get('post') and immediately passed into bind(). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;bind( JRequest::get( 'post' ) )) {&lt;br /&gt;
	return JError::raiseWarning( 500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If bind() fails, you want to stop the application and explain the failure before your extension attempts to send the data. The raiseWarning() function of JError allows you to stop Joomla!, while the getError() function returns the error message stored in the JTable object.&lt;br /&gt;
&lt;br /&gt;
When binding succeeds and your object is ready, call the store() function. Again, if something goes wrong, stop the application and explain why.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (!$row-&amp;gt;store()) {&lt;br /&gt;
	JError::raiseError(500, $row-&amp;gt;getError() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* If any member variables of your JTable object are null when store() is called, they are ignored by default. This allows you to update specific columns of your table, while leaving the others untouched. If you wish to override this behavior to ensure that all columns have a value, pass true into store().&lt;br /&gt;
* The JTable::bind() and JRequest::get() functions do not enforce data types. If you need a column to be a specific type (for instance, integer), you need to add this logic to your code before calling store().&lt;br /&gt;
&lt;br /&gt;
=== Read ===&lt;br /&gt;
To load a specific row of the database with JTable, pass the key into the load() member function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;load( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This relies on the key column you specified in the second parameter of parent::__construct() when you extended JTable.&lt;br /&gt;
&lt;br /&gt;
=== Delete ===&lt;br /&gt;
Like read(), delete() allows you to destroy a specific row in the table based on the key specified earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$row-&amp;gt;delete( $id );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to delete multiple rows at once, you will need to write the query manually.&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
=== getInstance ===&lt;br /&gt;
=== getDBO ===&lt;br /&gt;
=== setDBO ===&lt;br /&gt;
=== getTableName ===&lt;br /&gt;
=== getKeyName ===&lt;br /&gt;
=== reset ===&lt;br /&gt;
=== bind ===&lt;br /&gt;
=== load ===&lt;br /&gt;
=== check ===&lt;br /&gt;
=== store ===&lt;br /&gt;
=== move ===&lt;br /&gt;
=== getNextOrder ===&lt;br /&gt;
=== reorder ===&lt;br /&gt;
=== canDelete ===&lt;br /&gt;
=== delete ===&lt;br /&gt;
=== checkout ===&lt;br /&gt;
=== checkin ===&lt;br /&gt;
=== hit ===&lt;br /&gt;
=== isCheckedOut ===&lt;br /&gt;
=== save ===&lt;br /&gt;
=== publish ===&lt;br /&gt;
=== toXML ===&lt;br /&gt;
=== addIncludePath ===&lt;br /&gt;
== Summary ==&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T20:20:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing an extension of JTable ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined('_JEXEC') or die();&lt;br /&gt;
&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key column, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;br /&gt;
&lt;br /&gt;
If you were using this class as a part of a component called 'Recipes', you would place this code in the file /administrator/components/com_recipes/tables/recipes.php.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a JTable class extension ==&lt;br /&gt;
&lt;br /&gt;
Once the table class is in place, you can use it in any Joomla! extension. To include the file, place this line in your extension's source code (use com_nameofyourcomponent in place of com_recipes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create/Update ===&lt;br /&gt;
=== Read ===&lt;br /&gt;
=== Delete ===&lt;br /&gt;
&lt;br /&gt;
== Member Functions ==&lt;br /&gt;
=== getInstance ===&lt;br /&gt;
=== getDBO ===&lt;br /&gt;
=== setDBO ===&lt;br /&gt;
=== getTableName ===&lt;br /&gt;
=== getKeyName ===&lt;br /&gt;
=== reset ===&lt;br /&gt;
=== bind ===&lt;br /&gt;
=== load ===&lt;br /&gt;
=== check ===&lt;br /&gt;
=== store ===&lt;br /&gt;
=== move ===&lt;br /&gt;
=== getNextOrder ===&lt;br /&gt;
=== reorder ===&lt;br /&gt;
=== canDelete ===&lt;br /&gt;
=== delete ===&lt;br /&gt;
=== checkout ===&lt;br /&gt;
=== checkin ===&lt;br /&gt;
=== hit ===&lt;br /&gt;
=== isCheckedOut ===&lt;br /&gt;
=== save ===&lt;br /&gt;
=== publish ===&lt;br /&gt;
=== toXML ===&lt;br /&gt;
=== addIncludePath ===&lt;br /&gt;
== Summary ==&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T19:39:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
&lt;br /&gt;
The JTable class is an implementation of the [http://en.wikipedia.org/wiki/Active_record_pattern Active Record] design pattern. It is used throughout Joomla! for [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete creating, reading, updating, and deleting] records in the database table.&lt;br /&gt;
&lt;br /&gt;
To use JTable, create an extension of the class. In this example, we have a database table containing recipes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class TableRecipes extends JTable&lt;br /&gt;
{&lt;br /&gt;
	var $id = null;&lt;br /&gt;
	var $ingredients = null;&lt;br /&gt;
	var $instructions = null;&lt;br /&gt;
	var $serves = null;&lt;br /&gt;
	var $difficulty = null;&lt;br /&gt;
	var $prep_time = null;&lt;br /&gt;
	var $cook_time = null;&lt;br /&gt;
	var $published = 0;&lt;br /&gt;
	&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( '#__recipes', 'id', $db );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When naming your class extension, the convention is to prefix it with 'Table', then follow with a [http://en.wikipedia.org/wiki/CamelCase CamelCased] version of the table's name. All of the member variables of your class should match the column names in the database. The default values should be valid according to the table schema For instance, if you have columns that are NOT NULL, you must use a value other than 'null' as the default.&lt;br /&gt;
&lt;br /&gt;
Finally,  create a constructor for the class that accepts a reference to the current database instance. This will call the parent constructor which needs the name of the table, the name of the primary key, and the database instance. The name of the table uses #__ instead of jos_, as the administrator can pick any table prefix desired during Joomla! installation.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_JTable_class</id>
		<title>Using the JTable class</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_JTable_class"/>
				<updated>2008-01-19T18:51:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: New page: {{inuse}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Accessing_the_current_user_object</id>
		<title>Accessing the current user object</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Accessing_the_current_user_object"/>
				<updated>2008-01-19T17:59:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
For every request in Joomla!, there is one user. Information about this user is readily available through the Joomla! framework in the form of an object. To get this object, use the following member function of JFactory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Getting a reference through getUser() ensures that only one user object is created during any one Joomla! request, saving on memory and processing time. Most of the information about the user is available through public member variables of the user object. This code displays the current user's name, email, user name, user type, and group id:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Your name is {$user-&amp;gt;name}, your email is {$user-&amp;gt;email}, and your username is {$user-&amp;gt;username}&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Your usertype is {$user-&amp;gt;usertype} which has a group id of {$user-&amp;gt;gid}.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Member Variables and Parameters ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are the relevant member variables automatically generated on a call to getUser():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;id - The unique, numerical user id. Use this when referencing the user record in other database tables.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;name - The name of the user. (e.g. Vint Cerf)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;username - The login/screen name of the user. (e.g. shmuffin1979)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;email - The email address of the user. (e.g. crashoverride@hackers.com)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;password - The encrypted version of the user's password&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;password_clear - Set to the user's password only when it is being changed. Otherwise, remains blank.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;usertype - The role of the user within Joomla!. (Super Administrator, Editor, etc...)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;gid - Set to the user's group id, which corresponds to the usertype.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;block - Set to '1' when the user is set to 'blocked' in Joomla!.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;registerDate - Set to the date when the user was first registered.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lastvisitDate - Set to the date the user last visited the site.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;guest - If the user is not logged in, this variable will be set to '1'. The other variables will be unset or default values.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
In addition to the member variables (which are stored in the database in columns), there are parameters for the user that hold preferences. To get one of these parameters, call the getParam() member function of the user object, passing in the name of the parameter you want along with a default value in case it is blank.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	$language = $user-&amp;gt;getParam('language', 'the default');&lt;br /&gt;
	&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Your language is set to {$language}.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Determining Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Frequently, you will just want to make sure the user is logged in before continuing. The 'guest' member function will be set to '1' when the current user is not logged in. When the user is authenticated, 'guest' will be set to '0'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;guest) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You must login to see the content. I want your email address.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;h1&amp;gt;Impromptu leftovers salad that goes well with fish&amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1/2 cup chopped celery&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1/4 cup raisins&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1 teaspoon Extra Virgin Olive Oil&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;2 tablespoons of faux Thai lemongrass marinade&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1/4 cup shredded fresh basil&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;Sprinkling of dill weed&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;Big pinch of kosher salt&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;Several lettuce leaves&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;p&amp;gt;Wash the lettuce and basil and place in a salad bowl.&lt;br /&gt;
Get out a much smaller bowl and swish around all of the remaining ingredients. Pour this over the greens and toss.&lt;br /&gt;
Serves two.&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;lt;?php&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Privileges ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not all authenticated users are given equal rights. For instance, a Super Administrator may be able to edit anyone's content, while a Publisher may only be able to edit their own. The authorize() member function can be used to determine if the current user has permission to do a certain task. The first parameter is used to identify which component or function we wish to authenticate against. The second represents the task. The third and fourth are optional; they further break the permissions down into record types and ownership respectively.&lt;br /&gt;
&lt;br /&gt;
In Joomla! 1.5, the rights for all of the core components are stored in libraries/joomla/user/authorization.php. These are available to all extensions wherever authentication is required. If the permission scheme of the Content component suits your extension's needs, you can use code similar to the following to determine what functions to give to a specific user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;authorize('com_content', 'edit', 'content', 'all')) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may edit all content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may not edit all content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;authorize('com_content', 'publish', 'content', 'own')) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may publish your own content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may not publish your own content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The permissions for core functions may not be suitable for your extension. If this is the case, you can create your own permissions. You will probably want to add this code in a place where it will always be executed, such as the beginning of the component you are building or in a systemwide plugin. First, you need to get an authorization object using the getACL() member function of JFactory. This works like getUser() in that it only creates one authorization object during any particular Joomla! request. Once you have this object, call the addACL() member function to add permissions. Pass in the name of your component or function, the task name, the string 'users', and the user type (in lowercase) respectively. If you want to also define record sets and ownership, pass those in as an additional two parameters.&lt;br /&gt;
&lt;br /&gt;
Note that in Joomla! 1.5, permissions are not inherited. For example, if you give an Administrator the right to edit content, Super Administrators do not automatically get this right; you must grant it separately.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$auth =&amp;amp; JFactory::getACL();&lt;br /&gt;
	&lt;br /&gt;
	$auth-&amp;gt;addACL('com_userinfo15', 'persuade', 'users', 'super administrator');&lt;br /&gt;
	$auth-&amp;gt;addACL('com_userinfo15', 'persuade', 'users', 'administrator');&lt;br /&gt;
	$auth-&amp;gt;addACL('com_userinfo15', 'persuade', 'users', 'manager');&lt;br /&gt;
&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;authorize('com_userinfo15', 'persuade')) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may persuade the system to do what you wish.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You are not very persuasive.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Information about the current user is readily available in any part of your Joomla! extension. You need only fetch the object and access the member variables. You can authorize the user against the core permissions set, or create your own to suit your needs.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Accessing_the_current_user_object</id>
		<title>Accessing the current user object</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Accessing_the_current_user_object"/>
				<updated>2008-01-19T17:56:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
&lt;br /&gt;
For every request in Joomla!, there is one user. Information about this user is readily available through the Joomla! framework in the form of an object. To get this object, use the following member function of JFactory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Getting a reference through getUser() ensures that only one user object is created during any one Joomla! request, saving on memory and processing time. Most of the information about the user is available through public member variables of the user object. This code displays the current user's name, email, user name, user type, and group id:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Your name is {$user-&amp;gt;name}, your email is {$user-&amp;gt;email}, and your username is {$user-&amp;gt;username}&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Your usertype is {$user-&amp;gt;usertype} which has a group id of {$user-&amp;gt;gid}.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Member Variables and Parameters ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are the relevant member variables automatically generated on a call to getUser():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;id - The unique, numerical user id. Use this when referencing the user record in other database tables.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;name - The name of the user. (e.g. Vint Cerf)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;username - The login/screen name of the user. (e.g. shmuffin1979)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;email - The email address of the user. (e.g. crashoverride@hackers.com)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;password - The encrypted version of the user's password&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;password_clear - Set to the user's password only when it is being changed. Otherwise, remains blank.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;usertype - The role of the user within Joomla!. (Super Administrator, Editor, etc...)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;gid - Set to the user's group id, which corresponds to the usertype.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;block - Set to '1' when the user is set to 'blocked' in Joomla!.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;registerDate - Set to the date when the user was first registered.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;lastvisitDate - Set to the date the user last visited the site.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;guest - If the user is not logged in, this variable will be set to '1'. The other variables will be unset or default values.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
In addition to the member variables (which are stored in the database in columns), there are parameters for the user that hold preferences. To get one of these parameters, call the getParam() member function of the user object, passing in the name of the parameter you want along with a default value in case it is blank.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	$language = $user-&amp;gt;getParam('language', 'the default');&lt;br /&gt;
	&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Your language is set to {$language}.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Determining Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Frequently, you will just want to make sure the user is logged in before continuing. The 'guest' member function will be set to '1' when the current user is not logged in. When the user is authenticated, 'guest' will be set to '0'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;guest) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You must login to see the content. I want your email address.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;h1&amp;gt;Impromptu leftovers salad that goes well with fish&amp;lt;/h1&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1/2 cup chopped celery&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1/4 cup raisins&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1 teaspoon Extra Virgin Olive Oil&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;2 tablespoons of faux Thai lemongrass marinade&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;1/4 cup shredded fresh basil&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;Sprinkling of dill weed&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;Big pinch of kosher salt&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;Several lettuce leaves&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;p&amp;gt;Wash the lettuce and basil and place in a salad bowl.&lt;br /&gt;
Get out a much smaller bowl and swish around all of the remaining ingredients. Pour this over the greens and toss.&lt;br /&gt;
Serves two.&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;lt;?php&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Privileges ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not all authenticated users are given equal rights. For instance, a Super Administrator may be able to edit anyone's content, while a Publisher may only be able to edit their own. The authorize() member function can be used to determine if the current user has permission to do a certain task. The first parameter is used to identify which component or function we wish to authenticate against. The second represents the task. The third and fourth are optional; they further break the permissions down into record types and ownership respectively.&lt;br /&gt;
&lt;br /&gt;
In Joomla! 1.5, the rights for all of the core components are stored in libraries/joomla/user/authorization.php. These are available to all extensions wherever authentication is required. If the permission scheme of the Content component suits your extension's needs, you can use code similar to the following to determine what functions to give to a specific user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;authorize('com_content', 'edit', 'content', 'all')) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may edit all content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may not edit all content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;authorize('com_content', 'publish', 'content', 'own')) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may publish your own content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may not publish your own content.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The permissions for core functions may not be suitable for your extension. If this is the case, you can create your own permissions. You will probably want to add this code in a place where it will always be executed, such as the beginning of the component you are building or in a systemwide plugin. First, you need to get an authorization object using the getACL() member function of JFactory. This works like getUser() in that it only creates one authorization object during any particular Joomla! request. Once you have this object, call the addACL() member function to add permissions. Pass in the name of your component or function, the task name, the string 'users', and the user type (in lowercase) respectively. If you want to also define record sets and ownership, pass those in as an additional two parameters.&lt;br /&gt;
&lt;br /&gt;
Note that in Joomla! 1.5, permissions are not inherited. For example, if you give an Administrator the right to edit content, Super Administrators do not automatically get this right; you must grant it separately.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	$auth =&amp;amp; JFactory::getACL();&lt;br /&gt;
	&lt;br /&gt;
	$auth-&amp;gt;addACL('com_userinfo15', 'persuade', 'users', 'super administrator');&lt;br /&gt;
	$auth-&amp;gt;addACL('com_userinfo15', 'persuade', 'users', 'administrator');&lt;br /&gt;
	$auth-&amp;gt;addACL('com_userinfo15', 'persuade', 'users', 'manager');&lt;br /&gt;
&lt;br /&gt;
	$user =&amp;amp; JFactory::getUser();&lt;br /&gt;
	&lt;br /&gt;
	if ($user-&amp;gt;authorize('com_userinfo15', 'persuade')) {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You may persuade the system to do what you wish.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		echo &amp;quot;&amp;lt;p&amp;gt;You are not very persuasive.&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Information about the current user is readily available in any part of your Joomla! extension. You need only fetch the object and access the member variables. You can authorize the user against the core permissions set, or create your own to suit your needs.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Accessing_the_current_user_object</id>
		<title>Accessing the current user object</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Accessing_the_current_user_object"/>
				<updated>2008-01-19T17:40:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: New page: {{inuse}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_determine_a_package_checksum</id>
		<title>How to determine a package checksum</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_determine_a_package_checksum"/>
				<updated>2008-01-19T17:25:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Apple Mac OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A checksum is a string of characters created by applying a mathematical algorithm to the contents of a file.  It allows you to determine whether two files are identical because changing even a single bit in a file will cause the checksum to change.  Although it is possible for two different files to have the same checksum it is statistically unlikely for an error introduced during a file copy to leave the checksum unchanged.  Furthermore, it is extraordinarily difficult to deliberately change a file without also changing the checksum.&lt;br /&gt;
&lt;br /&gt;
Although there are several different kinds of checksum available, the Joomla! project publishes the popular MD5 checksum for all full distribution and patch files.  The MD5 checksum string is always exactly 32 characters long.&lt;br /&gt;
&lt;br /&gt;
==Unix-style systems (such as Linux)==&lt;br /&gt;
From the command line use the md5sum program.  For example, here we determine the MD5 checksum for a Joomla! patch file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
md5sum Joomla_1.0.11_to_1.0.12-Stable-Patch_Package.tar.bz2&lt;br /&gt;
67534a24ca89b76f5ae197ed171bd75e Joomla_1.0.11_to_1.0.12-Stable-Patch_Package.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Type '''man md5sum''' at the command line for full details on the md5sum program.&lt;br /&gt;
&lt;br /&gt;
==Apple Mac OS X==&lt;br /&gt;
Marc Liyanage has a checksum tool that can be downloaded at http://www.entropy.ch/software/macosx/#checksum. Download the zip package and double click to decompress the tool. (You can drag the tool into your Applications folder in Finder for future use.) Double click the tool and click Open File, then select the file you want to checksum.&lt;br /&gt;
&lt;br /&gt;
==Microsoft Windows==&lt;br /&gt;
Download the free File Checksum Integrity Verifier from Microsoft here http://support.microsoft.com/kb/841290&lt;br /&gt;
&lt;br /&gt;
All neccessary information and help is included in the article.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_determine_a_package_checksum</id>
		<title>How to determine a package checksum</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_determine_a_package_checksum"/>
				<updated>2008-01-19T17:19:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Apple Mac OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A checksum is a string of characters created by applying a mathematical algorithm to the contents of a file.  It allows you to determine whether two files are identical because changing even a single bit in a file will cause the checksum to change.  Although it is possible for two different files to have the same checksum it is statistically unlikely for an error introduced during a file copy to leave the checksum unchanged.  Furthermore, it is extraordinarily difficult to deliberately change a file without also changing the checksum.&lt;br /&gt;
&lt;br /&gt;
Although there are several different kinds of checksum available, the Joomla! project publishes the popular MD5 checksum for all full distribution and patch files.  The MD5 checksum string is always exactly 32 characters long.&lt;br /&gt;
&lt;br /&gt;
==Unix-style systems (such as Linux)==&lt;br /&gt;
From the command line use the md5sum program.  For example, here we determine the MD5 checksum for a Joomla! patch file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
md5sum Joomla_1.0.11_to_1.0.12-Stable-Patch_Package.tar.bz2&lt;br /&gt;
67534a24ca89b76f5ae197ed171bd75e Joomla_1.0.11_to_1.0.12-Stable-Patch_Package.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Type '''man md5sum''' at the command line for full details on the md5sum program.&lt;br /&gt;
&lt;br /&gt;
==Apple Mac OS X==&lt;br /&gt;
Marc Liyanage has a checksum tool that can be downloaded at http://www.entropy.ch/software/macosx/#checksum. Download the zip package and double click to decompress the tool. (You can drag the tool into your Applications folder in Finder for future use.) Double click the tool and click Open File, the select the file you want to checksum.&lt;br /&gt;
&lt;br /&gt;
==Microsoft Windows==&lt;br /&gt;
Download the free File Checksum Integrity Verifier from Microsoft here http://support.microsoft.com/kb/841290&lt;br /&gt;
&lt;br /&gt;
All neccessary information and help is included in the article.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Unpacking_a_package_file</id>
		<title>Unpacking a package file</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Unpacking_a_package_file"/>
				<updated>2008-01-19T16:40:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jlleblanc: /* Apple Mac OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Package files are generally distributed in one of three formats that are supported by Joomla!  These can be distinguished by the file extension used and are briefly described below.&lt;br /&gt;
&lt;br /&gt;
==Package file types==&lt;br /&gt;
===.zip===&lt;br /&gt;
These files are packed using the proprietary ZIP file format.  This is the most widely used compression format on Microsoft Windows systems, but it can also be used on Unix-style systems.  For more information see [[wikipedia:ZIP (file format)|ZIP (file format) on Wikipedia]]&lt;br /&gt;
===.tar.gz===&lt;br /&gt;
These files are packed using the TAR (for &amp;quot;tape archive&amp;quot;) format, then compressed using the open source Gnu Zip file format.  This is the primary compression method used on Unix-style systems, but is also supported on other platforms.  For more information see [[wikipedia:gzip|gzip on Wikipedia]]&lt;br /&gt;
===.tar.bz2===&lt;br /&gt;
These files are packed using the TAR (for &amp;quot;tape archive&amp;quot;) format, then compressed using the open source bzip2 file format.  This is an increasingly popular compression method on Unix-style systems, but is also supported on other platforms.  For more information see [[wikipedia:bzip2|bzip2 on Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
==Programs available to unpack a package file==&lt;br /&gt;
How you go about unpacking a package file depends largely on what platform you are running on.  Listed below are some of the major platforms and some suggested programs that you can use to unpack package files.  See also [[wikipedia:Comparison of file archivers|Comparison of file archivers on Wikipedia]].&lt;br /&gt;
&lt;br /&gt;
===Unix-style systems (such as Linux)===&lt;br /&gt;
* The command line '''unzip''' program can be used to unpack .zip files.  Enter ''man unzip'' at the command prompt for details.  The man page can also be read online [http://linux.die.net/man/1/unzip here].&lt;br /&gt;
* The command line '''gunzip''' program can be used to unpack .tar.gz and .tar.bz2 files.  Enter ''man gunzip'' at the command prompt for details.  The man page can also  be read online [http://linux.die.net/man/1/gunzip here].&lt;br /&gt;
* The Gnome '''File Roller''' application can be used to unpack all three package file formats.  See [[wikipedia:File Roller|File Roller on Wikipedia]].&lt;br /&gt;
* The KDE '''Ark''' application acts as a front-end for various command line programs including unzip and gunzip.  See [[wikipedia:Ark (computing)|Ark on Wikipedia]].&lt;br /&gt;
&lt;br /&gt;
===Microsoft Windows===&lt;br /&gt;
XP users can right-click the downloaded zip package and select 'Extract all' from the menu.  This opens the 'Extraction Wizard' which, by default, creates a new folder for the extracted data when the user continually clicks the 'Next' button followed by 'Finish'.&lt;br /&gt;
&lt;br /&gt;
For more control over the zip process, XP users can download and install [[wikipedia:7zip 7zip]], a widely-used open source compression utility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Can someone please do Vista Instructions???&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Apple Mac OS X===&lt;br /&gt;
Apple OS X users can double-click the downloaded .zip, .tar.gz, or .tar.bz2 archive. This will automatically create a folder with the decompressed files. You can also use the &amp;quot;Unix-style systems&amp;quot; instructions.&lt;/div&gt;</summary>
		<author><name>Jlleblanc</name></author>	</entry>

	</feed>