<?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=Hutchy68&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=Hutchy68&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Special:Contributions/Hutchy68"/>
		<updated>2013-05-24T18:58:10Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.3</generator>

	<entry>
		<id>http://docs.joomla.org/Chunk:Managing_Component_Updates_-_Contents</id>
		<title>Chunk:Managing Component Updates - Contents</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Chunk:Managing_Component_Updates_-_Contents"/>
				<updated>2013-05-24T12:15:51Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: fixing navigation links with correct namespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ambox&lt;br /&gt;
| image = 2.5&lt;br /&gt;
| type = none&lt;br /&gt;
| imageright = [[File:Crystal Clear app help index.png|30px|link=|alt=]]&lt;br /&gt;
| text = &amp;lt;div style=&amp;quot;margin-top:-3px; text-align:center; padding:3px&amp;quot;&amp;gt;{{#if:{{{noheader|}}}||&lt;br /&gt;
&amp;lt;div class=&amp;quot;center&amp;quot; style=&amp;quot;width:auto; margin-left:auto; margin-right:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 125%&amp;quot;&amp;gt;'''Managing Component Updates Tutorial'''&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*&amp;amp;nbsp;[[J2.5:Managing Component Updates|Overview]]&lt;br /&gt;
*&amp;amp;nbsp;[[J2.5:Managing Component Updates (Manifest file)|Manifest file]]&lt;br /&gt;
*&amp;amp;nbsp;[[J2.5:Managing Component Updates (Script.php)|Script.php]]&lt;br /&gt;
*&amp;amp;nbsp;[[J2.5:Managing Component Updates (Update SQL files)|Update SQL files]]&lt;br /&gt;
*&amp;amp;nbsp;[[J2.5:Managing Component Updates (Component release files)|Component release files]]&lt;br /&gt;
*&amp;amp;nbsp;[[J2.5:Managing Component Updates (How to use this example)|How to use this example]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Tutorials in a Series]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Tutorial Series Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(Component_release_files)</id>
		<title>J2.5:Managing Component Updates (Component release files)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(Component_release_files)"/>
				<updated>2013-05-24T12:15:27Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates (Component release files) to J2.5:Managing Component Updates (Component release files) without leaving a redirect: namespacing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
== Component Release Files ==&lt;br /&gt;
Included in this example are zip files for four releases. You will need to download all four to exercise the features of this example.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0 ===&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74511/democompupdate_10.zip democompupdate_10.zip].&lt;br /&gt;
It contains files:&lt;br /&gt;
* democompupdate_10/democompupdate.xml&lt;br /&gt;
* democompupdate_10/script.php&lt;br /&gt;
* democompupdate_10/admin/sql/install_data.sql&lt;br /&gt;
* democompupdate_10/admin/sql/uninstall.sql&lt;br /&gt;
* democompupdate_10/admin/sql/updates/1.0.sql&lt;br /&gt;
* democompupdate_10/site/controller.php&lt;br /&gt;
* democompupdate_10/site/democompupdate.php&lt;br /&gt;
* democompupdate_10/site/models/democompupdate.php&lt;br /&gt;
* democompupdate_10/site/views/democompupdate/view.html.php&lt;br /&gt;
* democompupdate_10/site/views/democompupdate/tmpl/default.php&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0.j3 ===&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74512/democompupdate_10j3.zip democompupdate_10j3.zip].  It is identical to version 1.0, except that is requires Joomla 30.0.  The intent is that this will cause an abort of the install or update.&lt;br /&gt;
Diff's of ''democompupdate_10'' and ''democompupdate_10j3'' show how files have changed.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -r democompupdate_10/democompupdate.xml democompupdate_10j3/democompupdate.xml&lt;br /&gt;
2c2&lt;br /&gt;
&amp;lt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;30.0&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 1.1.1 ===&lt;br /&gt;
&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74513/democompupdate_111.zip democompupdate_111.zip].&lt;br /&gt;
Diff's of ''democompupdate_10'' and ''democompupdate_111'' show how files have changed.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -r democompupdate_10/admin/sql/install_data.sql democompupdate_111/admin/sql/install_data.sql&lt;br /&gt;
10c10&lt;br /&gt;
&amp;lt; (1,'1.0');&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; (1,'1.1.1');&lt;br /&gt;
Only in democompupdate_111/admin/sql/updates: 1.1.1.sql&lt;br /&gt;
Only in democompupdate_111/admin/sql/updates: 1.1.sql&lt;br /&gt;
diff -r democompupdate_10/democompupdate.xml democompupdate_111/democompupdate.xml&lt;br /&gt;
2c2&lt;br /&gt;
&amp;lt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
8c8&lt;br /&gt;
&amp;lt; 	&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 	&amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;&lt;br /&gt;
diff -r democompupdate_10/site/views/democompupdate/view.html.php democompupdate_111/site/views/democompupdate/view.html.php&lt;br /&gt;
25c25&lt;br /&gt;
&amp;lt; 		$myRev = '1.0';&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 		$myRev = '1.1.1';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 1.3 ===&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74514/democompupdate_13.zip democompupdate_13.zip].&lt;br /&gt;
Diff's of ''democompupdate_111'' and ''democompupdate_13'' show how files have changed.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -r democompupdate_111/admin/sql/install_data.sql democompupdate_13/admin/sql/install_data.sql&lt;br /&gt;
10c10,12&lt;br /&gt;
&amp;lt; (1,'1.1.1');&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; (1,'1.1.1'),&lt;br /&gt;
&amp;gt; (2,'1.2.1'),&lt;br /&gt;
&amp;gt; (3,'1.3');&lt;br /&gt;
Only in democompupdate_13/admin/sql/updates: 1.2.1.sql&lt;br /&gt;
Only in democompupdate_13/admin/sql/updates: 1.2.sql&lt;br /&gt;
Only in democompupdate_13/admin/sql/updates: 1.3.sql&lt;br /&gt;
diff -r democompupdate_111/democompupdate.xml democompupdate_13/democompupdate.xml&lt;br /&gt;
8c8&lt;br /&gt;
&amp;lt; 	&amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 	&amp;lt;version&amp;gt;1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
diff -r democompupdate_111/site/views/democompupdate/view.html.php democompupdate_13/site/views/democompupdate/view.html.php&lt;br /&gt;
25c25&lt;br /&gt;
&amp;lt; 		$myRev = '1.1.1';&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 		$myRev = '1.3';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Joomla! 1.7]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_5</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 5</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_5"/>
				<updated>2013-05-24T12:15:06Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: fixing move error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Managing Component Updates (Component release files)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(How_to_use_this_example)</id>
		<title>J2.5:Managing Component Updates (How to use this example)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(How_to_use_this_example)"/>
				<updated>2013-05-24T12:14:10Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates (How to use this example) to J2.5:Managing Component Updates (How to use this example) without leaving a redirect: namespacing fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
You will need to download all four versions of this example to exercise all of the features.&lt;br /&gt;
&lt;br /&gt;
== Normal update sequence ==&lt;br /&gt;
&lt;br /&gt;
You can use the following sequence of installs, updates and uninstalls to show the effects of this example.  You may also try installs, updates and uninstalls in any sequence that you desire.&lt;br /&gt;
&lt;br /&gt;
* Previous state: no com_democompupdate component installed.&lt;br /&gt;
* Install democompupdate_10.zip.&lt;br /&gt;
** Verify the install is good by the text echoed in back-end.&lt;br /&gt;
** Front-end: verify database, files and parameter setting.&lt;br /&gt;
** optional: phpMyAdmin: verify:&lt;br /&gt;
*** jos_democompupdate_mytable exists and has one row, myvalue = '1.0'.&lt;br /&gt;
*** jos_extensions table has entry for com_democompupdate.&lt;br /&gt;
**** params field (JSON), has three values.&lt;br /&gt;
**** manifest_cache field (JSON) shows version '1.0'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.0 installed.&lt;br /&gt;
* Install democompupdate_111.zip.&lt;br /&gt;
** Verify the update is good by the text echoed in back-end.&lt;br /&gt;
** Front-end: verify database, files and parameter setting.&lt;br /&gt;
** optional: phpMyAdmin: verify:&lt;br /&gt;
*** jos_democompupdate_mytable exists and has one row, value '1.1.1'.&lt;br /&gt;
*** jos_extensions table has entry for com_democompupdate.&lt;br /&gt;
**** params field (JSON), has three values.&lt;br /&gt;
**** manifest_cache field (JSON) shows version '1.1.1'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.1.1 installed.&lt;br /&gt;
* Install democompupdate_13.zip.&lt;br /&gt;
** Verify the update is good by the text echoed in back-end.&lt;br /&gt;
** Front-end: verify database, files and parameter setting.&lt;br /&gt;
*** There should be three rows in the table.&lt;br /&gt;
** optional: phpMyAdmin: verify:&lt;br /&gt;
*** jos_democompupdate_mytable exists and has three rows, values '1.1.1', '1.2.1' and '1.3'.&lt;br /&gt;
*** jos_extensions table has entry for com_democompupdate.&lt;br /&gt;
**** params field (JSON), has three values.&lt;br /&gt;
**** manifest_cache field (JSON) shows version '1.3'.&lt;br /&gt;
&lt;br /&gt;
== Try a reverse-sequence update ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.3 installed.&lt;br /&gt;
* Install democompupdate_10.zip.&lt;br /&gt;
** Update should fail, give useful information in the back-end.&lt;br /&gt;
** No change should be seen in the front-end, back-end or MySqlAdmin.&lt;br /&gt;
&lt;br /&gt;
== Make sure that uninstall works ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.3 installed.&lt;br /&gt;
* Uninstall com_democompupdate&lt;br /&gt;
** Verify the component does not exist in Joomla extension manager or front-end.&lt;br /&gt;
** optional: phpMyAdmin: verify that democompupdate elements are gone.&lt;br /&gt;
&lt;br /&gt;
== Verify full installs of each revision work correctly ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: no democompupdate component installed.&lt;br /&gt;
* Install democompupdate_111.zip.&lt;br /&gt;
** Verify that the full install created the same database and file state as the update to 1.1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.1.1 installed.&lt;br /&gt;
* Uninstall com_democompupdate&lt;br /&gt;
** Verify the component does not exist in Joomla extension manager or front-end.&lt;br /&gt;
** optional: phpMyAdmin: verify that democompupdate elements are gone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: no democompupdate component installed.&lt;br /&gt;
* Install democompupdate_13.zip.&lt;br /&gt;
** Verify that the full install created the same database and file state as the update to 1.3.&lt;br /&gt;
&lt;br /&gt;
== Verify that Joomla version check works ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.3 installed.&lt;br /&gt;
* Uninstall com_democompupdate&lt;br /&gt;
* Install democompupdate_10j3.zip.&lt;br /&gt;
** The update should fail, give useful information in the back-end.&lt;br /&gt;
** No evidence of the installed component should exist in front-end, back-end or MySqlAdmin.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
You can use the update features in Joomla 1.6 (and greater) to ensure that the web site administrator installs your component properly.&lt;br /&gt;
* Your component version string sequence must follow the requirements shown in the PHP ''version_compare'' function.&lt;br /&gt;
* Create update SQL files for component revisions.  The file names must match your version strings.&lt;br /&gt;
* Update the version string in the manifest file for each version.&lt;br /&gt;
* Update the required Joomla version in the manifest file, if you will use it in the script.php file to enable installs and updates.&lt;br /&gt;
* Modify the custom PHP code in the script.php file, if needed, for each version.&lt;br /&gt;
&lt;br /&gt;
If your component requires non-standard update handling, you can implement it in the script.php file.  You can disable the normal update SQL file execution and implement your own code.  You can implement custom checks and custom install and update actions.  You can, and should create confirmation messages and error messages to help the web site administrator understand what your code is doing.&lt;br /&gt;
&lt;br /&gt;
I intentionally made this example simple, to make debugging easier. You can implement your custom code in this example, verify that it works correctly, then implement it in your component.  Share your successes with the Joomla community.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Joomla! 1.7]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_6</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 6</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_6"/>
				<updated>2013-05-24T12:13:40Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: fixing move error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Managing Component Updates (How to use this example)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_6</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 6</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_6"/>
				<updated>2013-05-24T12:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 6 to Managing Component Updates (How to use this example): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Managing Component Updates (How to use this example)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(How_to_use_this_example)</id>
		<title>J2.5:Managing Component Updates (How to use this example)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(How_to_use_this_example)"/>
				<updated>2013-05-24T12:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 6 to Managing Component Updates (How to use this example): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
You will need to download all four versions of this example to exercise all of the features.&lt;br /&gt;
&lt;br /&gt;
== Normal update sequence ==&lt;br /&gt;
&lt;br /&gt;
You can use the following sequence of installs, updates and uninstalls to show the effects of this example.  You may also try installs, updates and uninstalls in any sequence that you desire.&lt;br /&gt;
&lt;br /&gt;
* Previous state: no com_democompupdate component installed.&lt;br /&gt;
* Install democompupdate_10.zip.&lt;br /&gt;
** Verify the install is good by the text echoed in back-end.&lt;br /&gt;
** Front-end: verify database, files and parameter setting.&lt;br /&gt;
** optional: phpMyAdmin: verify:&lt;br /&gt;
*** jos_democompupdate_mytable exists and has one row, myvalue = '1.0'.&lt;br /&gt;
*** jos_extensions table has entry for com_democompupdate.&lt;br /&gt;
**** params field (JSON), has three values.&lt;br /&gt;
**** manifest_cache field (JSON) shows version '1.0'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.0 installed.&lt;br /&gt;
* Install democompupdate_111.zip.&lt;br /&gt;
** Verify the update is good by the text echoed in back-end.&lt;br /&gt;
** Front-end: verify database, files and parameter setting.&lt;br /&gt;
** optional: phpMyAdmin: verify:&lt;br /&gt;
*** jos_democompupdate_mytable exists and has one row, value '1.1.1'.&lt;br /&gt;
*** jos_extensions table has entry for com_democompupdate.&lt;br /&gt;
**** params field (JSON), has three values.&lt;br /&gt;
**** manifest_cache field (JSON) shows version '1.1.1'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.1.1 installed.&lt;br /&gt;
* Install democompupdate_13.zip.&lt;br /&gt;
** Verify the update is good by the text echoed in back-end.&lt;br /&gt;
** Front-end: verify database, files and parameter setting.&lt;br /&gt;
*** There should be three rows in the table.&lt;br /&gt;
** optional: phpMyAdmin: verify:&lt;br /&gt;
*** jos_democompupdate_mytable exists and has three rows, values '1.1.1', '1.2.1' and '1.3'.&lt;br /&gt;
*** jos_extensions table has entry for com_democompupdate.&lt;br /&gt;
**** params field (JSON), has three values.&lt;br /&gt;
**** manifest_cache field (JSON) shows version '1.3'.&lt;br /&gt;
&lt;br /&gt;
== Try a reverse-sequence update ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.3 installed.&lt;br /&gt;
* Install democompupdate_10.zip.&lt;br /&gt;
** Update should fail, give useful information in the back-end.&lt;br /&gt;
** No change should be seen in the front-end, back-end or MySqlAdmin.&lt;br /&gt;
&lt;br /&gt;
== Make sure that uninstall works ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.3 installed.&lt;br /&gt;
* Uninstall com_democompupdate&lt;br /&gt;
** Verify the component does not exist in Joomla extension manager or front-end.&lt;br /&gt;
** optional: phpMyAdmin: verify that democompupdate elements are gone.&lt;br /&gt;
&lt;br /&gt;
== Verify full installs of each revision work correctly ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: no democompupdate component installed.&lt;br /&gt;
* Install democompupdate_111.zip.&lt;br /&gt;
** Verify that the full install created the same database and file state as the update to 1.1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.1.1 installed.&lt;br /&gt;
* Uninstall com_democompupdate&lt;br /&gt;
** Verify the component does not exist in Joomla extension manager or front-end.&lt;br /&gt;
** optional: phpMyAdmin: verify that democompupdate elements are gone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Previous state: no democompupdate component installed.&lt;br /&gt;
* Install democompupdate_13.zip.&lt;br /&gt;
** Verify that the full install created the same database and file state as the update to 1.3.&lt;br /&gt;
&lt;br /&gt;
== Verify that Joomla version check works ==&lt;br /&gt;
&lt;br /&gt;
* Previous state: version 1.3 installed.&lt;br /&gt;
* Uninstall com_democompupdate&lt;br /&gt;
* Install democompupdate_10j3.zip.&lt;br /&gt;
** The update should fail, give useful information in the back-end.&lt;br /&gt;
** No evidence of the installed component should exist in front-end, back-end or MySqlAdmin.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
You can use the update features in Joomla 1.6 (and greater) to ensure that the web site administrator installs your component properly.&lt;br /&gt;
* Your component version string sequence must follow the requirements shown in the PHP ''version_compare'' function.&lt;br /&gt;
* Create update SQL files for component revisions.  The file names must match your version strings.&lt;br /&gt;
* Update the version string in the manifest file for each version.&lt;br /&gt;
* Update the required Joomla version in the manifest file, if you will use it in the script.php file to enable installs and updates.&lt;br /&gt;
* Modify the custom PHP code in the script.php file, if needed, for each version.&lt;br /&gt;
&lt;br /&gt;
If your component requires non-standard update handling, you can implement it in the script.php file.  You can disable the normal update SQL file execution and implement your own code.  You can implement custom checks and custom install and update actions.  You can, and should create confirmation messages and error messages to help the web site administrator understand what your code is doing.&lt;br /&gt;
&lt;br /&gt;
I intentionally made this example simple, to make debugging easier. You can implement your custom code in this example, verify that it works correctly, then implement it in your component.  Share your successes with the Joomla community.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Joomla! 1.7]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_5</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 5</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_5"/>
				<updated>2013-05-24T12:07:00Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 5 to Managing Component Updates (Component release files): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Managing Component Updates (Component release files)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(Component_release_files)</id>
		<title>J2.5:Managing Component Updates (Component release files)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(Component_release_files)"/>
				<updated>2013-05-24T12:07:00Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 5 to Managing Component Updates (Component release files): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
== Component Release Files ==&lt;br /&gt;
Included in this example are zip files for four releases. You will need to download all four to exercise the features of this example.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0 ===&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74511/democompupdate_10.zip democompupdate_10.zip].&lt;br /&gt;
It contains files:&lt;br /&gt;
* democompupdate_10/democompupdate.xml&lt;br /&gt;
* democompupdate_10/script.php&lt;br /&gt;
* democompupdate_10/admin/sql/install_data.sql&lt;br /&gt;
* democompupdate_10/admin/sql/uninstall.sql&lt;br /&gt;
* democompupdate_10/admin/sql/updates/1.0.sql&lt;br /&gt;
* democompupdate_10/site/controller.php&lt;br /&gt;
* democompupdate_10/site/democompupdate.php&lt;br /&gt;
* democompupdate_10/site/models/democompupdate.php&lt;br /&gt;
* democompupdate_10/site/views/democompupdate/view.html.php&lt;br /&gt;
* democompupdate_10/site/views/democompupdate/tmpl/default.php&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0.j3 ===&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74512/democompupdate_10j3.zip democompupdate_10j3.zip].  It is identical to version 1.0, except that is requires Joomla 30.0.  The intent is that this will cause an abort of the install or update.&lt;br /&gt;
Diff's of ''democompupdate_10'' and ''democompupdate_10j3'' show how files have changed.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -r democompupdate_10/democompupdate.xml democompupdate_10j3/democompupdate.xml&lt;br /&gt;
2c2&lt;br /&gt;
&amp;lt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;30.0&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 1.1.1 ===&lt;br /&gt;
&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74513/democompupdate_111.zip democompupdate_111.zip].&lt;br /&gt;
Diff's of ''democompupdate_10'' and ''democompupdate_111'' show how files have changed.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -r democompupdate_10/admin/sql/install_data.sql democompupdate_111/admin/sql/install_data.sql&lt;br /&gt;
10c10&lt;br /&gt;
&amp;lt; (1,'1.0');&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; (1,'1.1.1');&lt;br /&gt;
Only in democompupdate_111/admin/sql/updates: 1.1.1.sql&lt;br /&gt;
Only in democompupdate_111/admin/sql/updates: 1.1.sql&lt;br /&gt;
diff -r democompupdate_10/democompupdate.xml democompupdate_111/democompupdate.xml&lt;br /&gt;
2c2&lt;br /&gt;
&amp;lt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; &amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
8c8&lt;br /&gt;
&amp;lt; 	&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 	&amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;&lt;br /&gt;
diff -r democompupdate_10/site/views/democompupdate/view.html.php democompupdate_111/site/views/democompupdate/view.html.php&lt;br /&gt;
25c25&lt;br /&gt;
&amp;lt; 		$myRev = '1.0';&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 		$myRev = '1.1.1';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 1.3 ===&lt;br /&gt;
The zip file can be downloaded from &lt;br /&gt;
[http://joomlacode.org/gf/download/frsrelease/16495/74514/democompupdate_13.zip democompupdate_13.zip].&lt;br /&gt;
Diff's of ''democompupdate_111'' and ''democompupdate_13'' show how files have changed.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -r democompupdate_111/admin/sql/install_data.sql democompupdate_13/admin/sql/install_data.sql&lt;br /&gt;
10c10,12&lt;br /&gt;
&amp;lt; (1,'1.1.1');&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; (1,'1.1.1'),&lt;br /&gt;
&amp;gt; (2,'1.2.1'),&lt;br /&gt;
&amp;gt; (3,'1.3');&lt;br /&gt;
Only in democompupdate_13/admin/sql/updates: 1.2.1.sql&lt;br /&gt;
Only in democompupdate_13/admin/sql/updates: 1.2.sql&lt;br /&gt;
Only in democompupdate_13/admin/sql/updates: 1.3.sql&lt;br /&gt;
diff -r democompupdate_111/democompupdate.xml democompupdate_13/democompupdate.xml&lt;br /&gt;
8c8&lt;br /&gt;
&amp;lt; 	&amp;lt;version&amp;gt;1.1.1&amp;lt;/version&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 	&amp;lt;version&amp;gt;1.3&amp;lt;/version&amp;gt;&lt;br /&gt;
diff -r democompupdate_111/site/views/democompupdate/view.html.php democompupdate_13/site/views/democompupdate/view.html.php&lt;br /&gt;
25c25&lt;br /&gt;
&amp;lt; 		$myRev = '1.1.1';&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; 		$myRev = '1.3';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Joomla! 1.7]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_4</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 4</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_4"/>
				<updated>2013-05-24T12:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 4 to J2.5:Managing Component Updates (Update SQL files)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Managing Component Updates (Update SQL files)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(Update_SQL_files)</id>
		<title>J2.5:Managing Component Updates (Update SQL files)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(Update_SQL_files)"/>
				<updated>2013-05-24T12:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 4 to J2.5:Managing Component Updates (Update SQL files)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
== Update SQL files ==&lt;br /&gt;
The update SQL file(s) are located in a directory that is listed in the manifest file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;update&amp;gt; &lt;br /&gt;
	&amp;lt;schemas&amp;gt; &lt;br /&gt;
		&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
	&amp;lt;/schemas&amp;gt; &lt;br /&gt;
&amp;lt;/update&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an SQL file for each component version.  Each file name must match the version string in the manifest file for that version.  Joomla uses this string to determine which SQL files(s) to execute, and in what order they will be executed.  &lt;br /&gt;
&lt;br /&gt;
''Important Note:'' These files are also used to set the version number in the &amp;lt;code&amp;gt;#__schemas&amp;lt;/code&amp;gt; table. This version number must be present in the current version of the component in order for the new SQL files to be run during the update. For example, if you have version 1.0 and are updating to version 1.1, the &amp;lt;code&amp;gt;1.1.sql&amp;lt;/code&amp;gt; file will not be executed if there was no &amp;lt;code&amp;gt;1.0.sql&amp;lt;/code&amp;gt; file in the 1.0 release. For this reason, it is good practice to have a SQL update file for each version, even if there is no SQL change in that version. You can just use an empty file or a file with a comment line.&lt;br /&gt;
&lt;br /&gt;
Joomla uses the PHP ''version_compare'' function to execute the correct SQL files..  Familiarize yourself with this function.  Your version strings need to adhere to the conventions of this function.&lt;br /&gt;
For example, the SQL files for version 1.3 of this example include:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.0.sql&lt;br /&gt;
  (empty) OR&lt;br /&gt;
  # Dummy SQL file to set schema version to 1.0 so next update will work&lt;br /&gt;
&lt;br /&gt;
1.1.sql&lt;br /&gt;
  UPDATE `#__democompupdate_mytable` SET myvalue='Version 1.1 text' WHERE id=1;&lt;br /&gt;
&lt;br /&gt;
1.1.1.sql&lt;br /&gt;
  UPDATE `#__democompupdate_mytable` SET myvalue='Version 1.1.1 text' WHERE id=1;&lt;br /&gt;
&lt;br /&gt;
1.2.sql&lt;br /&gt;
  INSERT INTO `#__democompupdate_mytable` (id,myvalue) VALUES (2,'Version 1.2 text');&lt;br /&gt;
&lt;br /&gt;
1.2.1.sql&lt;br /&gt;
  UPDATE `#__democompupdate_mytable` SET myvalue='Version 1.2.1 text' WHERE id=2;&lt;br /&gt;
&lt;br /&gt;
1.3.sql&lt;br /&gt;
  INSERT INTO `#__democompupdate_mytable` (id,myvalue) VALUES (3,'Version 1.3 text');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example has complete install files for component versions 1.0 (initial), 1.1.1 and 1.3.  Update SQL files are included for additional incremental component versions (1.1, 1.2 and 1.2.1) between these three versions.  These extra versions illustrate the process for updates that span more than one incremental version.&lt;br /&gt;
&lt;br /&gt;
* When updating from version 1.0 to version 1.1.1, both files 1.1.sql and 1.1.1.sql are executed.  The SQL commands update the value of the first, and only, row in the database table.  The command in 1.1.1.sql over-writes the value that was written by 1.1.sql.&lt;br /&gt;
* When updating from version 1.1.1 to version 1.3, files 1.2.sql, 1.2.1.sql and 1.3.sql are executed.  The commands in 1.2.sql and 1.3.sql each create a new row in the database table.&lt;br /&gt;
* When updating from version 1.0 directly to 1.3, files 1.1.sql, 1.1.1.sql, 1.2.sql, 1.2.1.sql and 1.3.sql are all executed.  You can see the cumulative effect of the table changes in the component front-end.&lt;br /&gt;
&lt;br /&gt;
Joomla executes the database updates in the sequence that would occur, as if the user had updated each version separately.  This would be necessary if an incremental database update depended on the correct update from the previous version.  An example would be: if a modification of a table value during one update depended on the addition of a new table field during a previous update.&lt;br /&gt;
&lt;br /&gt;
Joomla uses the PHP function ''version_compare'' to define the execution order of the SQL files.  The sequencing of your component version string must adhere to that defined by the ''version_compare'' function.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_3</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 3</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_3"/>
				<updated>2013-05-24T12:04:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 3 to J2.5:Managing Component Updates (Script.php): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Managing Component Updates (Script.php)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(Script.php)</id>
		<title>J2.5:Managing Component Updates (Script.php)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(Script.php)"/>
				<updated>2013-05-24T12:04:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 3 to J2.5:Managing Component Updates (Script.php): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
&lt;br /&gt;
== Script.php ==&lt;br /&gt;
This file contains the component-specific methods preflight, install, update, postflight and uninstall.  This file is where the component developer implements all of the unique code for these actions.&lt;br /&gt;
For this example, in addition to various checks, HTML is inserted into the back-end output to show which code has been executed and several component parameters are created and maintained.  You may choose to display different HTML, or to display none for your component.&lt;br /&gt;
&lt;br /&gt;
=== preflight ===&lt;br /&gt;
This is where most of the checking should be done before install, update or discover_install.  Preflight is executed prior to any Joomla install, update or discover_install actions.  Preflight is not executed on uninstall.  A string denoting the type of action (install, update or discover_install) is passed to preflight in the $type operand.  Your code can use this string to execute different checks and responses for the three cases.&lt;br /&gt;
&lt;br /&gt;
It is appropriate to check the Joomla version and the existing component version in the preflight module.  A failure of either of these two should cause an abort of the action.  An abort is triggered by returning a false value from this preflight method.  On receiving a false return value, Joomla will reverse any actions already completed.&lt;br /&gt;
&lt;br /&gt;
The PHP function ''version_compare'' is useful to compare version strings.  Joomla also uses ''version_compare'' to define the sequence of SQL file execution, when an update is being executed that spans multiple versions.&lt;br /&gt;
&lt;br /&gt;
In this example, the preflight method checks that Joomla version is equal to or greater than the value in the manifest file.  If an earlier Joomla version is in use, the install or update will abort.  Try changing the version string in the manifest file file to a value greater than the Joomla version that you are using.  Installs and updates should fail. This is what the version ''democompupdate_10j3.zip'' demonstrates.&lt;br /&gt;
&lt;br /&gt;
In addition to failing, it is important to give the web site administrator useful information as to why the component installation failed. See the example below.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function preflight( $type, $parent ) {&lt;br /&gt;
	$jversion = new JVersion();&lt;br /&gt;
&lt;br /&gt;
	// Installing component manifest file version&lt;br /&gt;
	$this-&amp;gt;release = $parent-&amp;gt;get( &amp;quot;manifest&amp;quot; )-&amp;gt;version;&lt;br /&gt;
		&lt;br /&gt;
	// Manifest file minimum Joomla version&lt;br /&gt;
	$this-&amp;gt;minimum_joomla_release = $parent-&amp;gt;get( &amp;quot;manifest&amp;quot; )-&amp;gt;attributes()-&amp;gt;version;   &lt;br /&gt;
&lt;br /&gt;
	// Show the essential information at the install/update back-end&lt;br /&gt;
	echo '&amp;lt;p&amp;gt;Installing component manifest file version = ' . $this-&amp;gt;release;&lt;br /&gt;
	echo '&amp;lt;br /&amp;gt;Current manifest cache commponent version = ' . $this-&amp;gt;getParam('version');&lt;br /&gt;
	echo '&amp;lt;br /&amp;gt;Installing component manifest file minimum Joomla version = ' . $this-&amp;gt;minimum_joomla_release;&lt;br /&gt;
	echo '&amp;lt;br /&amp;gt;Current Joomla version = ' . $jversion-&amp;gt;getShortVersion();&lt;br /&gt;
&lt;br /&gt;
	// abort if the current Joomla release is older&lt;br /&gt;
	if( version_compare( $jversion-&amp;gt;getShortVersion(), $this-&amp;gt;minimum_joomla_release, 'lt' ) ) {&lt;br /&gt;
		Jerror::raiseWarning(null, 'Cannot install com_democompupdate in a Joomla release prior to '.$this-&amp;gt;minimum_joomla_release);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// abort if the component being installed is not newer than the currently installed version&lt;br /&gt;
	if ( $type == 'update' ) {&lt;br /&gt;
		$oldRelease = $this-&amp;gt;getParam('version');&lt;br /&gt;
		$rel = $oldRelease . ' to ' . $this-&amp;gt;release;&lt;br /&gt;
		if ( version_compare( $this-&amp;gt;release, $oldRelease, 'le' ) ) {&lt;br /&gt;
			Jerror::raiseWarning(null, 'Incorrect version sequence. Cannot upgrade ' . $rel);&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else { $rel = $this-&amp;gt;release; }&lt;br /&gt;
 &lt;br /&gt;
	echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_PREFLIGHT_' . $type . ' ' . $rel) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== install ===&lt;br /&gt;
Install is executed after the Joomla install database scripts have completed. Returning 'false' will abort the install and undo any changes already made.&lt;br /&gt;
It is cleaner to abort the install during preflight, if possible.  Since fewer install actions have occurred at preflight, there is less risk that that their reversal may be done incorrectly.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function install( $parent ) {&lt;br /&gt;
	echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_INSTALL to ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
	// You can have the backend jump directly to the newly installed component configuration page&lt;br /&gt;
	// $parent-&amp;gt;getParent()-&amp;gt;setRedirectURL('index.php?option=com_democompupdate');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== update ===&lt;br /&gt;
Update is executed after the Joomla update database scripts have completed.  Returning 'false' will abort the update and undo any changes already made.&lt;br /&gt;
It is cleaner to abort the update during preflight, if possible.  Since fewer update actions have occurred at preflight, there is less risk that that their reversal may be done incorrectly.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function update( $parent ) {&lt;br /&gt;
	echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_UPDATE_ to ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
	// You can have the backend jump directly to the newly updated component configuration page&lt;br /&gt;
	// $parent-&amp;gt;getParent()-&amp;gt;setRedirectURL('index.php?option=com_democompupdate');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== postflight ===&lt;br /&gt;
Postflight is executed after the Joomla install, update or discover_update actions have completed.  It is not executed after uninstall.  Postflight is executed after the extension is registered in the database.  The type of action (install, update or discover_install) is passed to postflight in the $type operand. Postflight cannot cause an abort of the Joomla install, update or discover_install action.&lt;br /&gt;
&lt;br /&gt;
The postflight method is a good place to set the default values of component parameters during installs, and to set the values of hidden component parameters during installs and updates.  Postflight can be used for any other action that must follow the install, update or discover_install actions.&lt;br /&gt;
&lt;br /&gt;
This example defines component parameters in postflight.  The value of ''my_param0'' is displayed in the component front-end.  Both ''my_param0'' and ''my_param1'' are overwritten in all updates. This is how you would change revision-specific values during an update. The examples ''myparam2'' and ''myparam3'' represent component configuration parameters that you expect users to set, and you do not want to overwrite during an update. This example sets these two values only on a new install, not on an update. Parameters that control component operation would be treated this way.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function postflight( $type, $parent ) {&lt;br /&gt;
	// always create or modify these parameters&lt;br /&gt;
	$params['my_param0'] = 'Component version ' . $this-&amp;gt;release;&lt;br /&gt;
	$params['my_param1'] = 'Another value';&lt;br /&gt;
 &lt;br /&gt;
	// define the following parameters only if it is an original install&lt;br /&gt;
	if ( $type == 'install' ) {&lt;br /&gt;
		$params['my_param2'] = '4';&lt;br /&gt;
		$params['my_param3'] = 'Star';&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	$this-&amp;gt;setParams( $params );&lt;br /&gt;
 &lt;br /&gt;
	echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_POSTFLIGHT ' . $type . ' to ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uninstall ===&lt;br /&gt;
The uninstall method is executed before any Joomla uninstall action, such as file removal or database changes.  Uninstall cannot cause an abort of the Joomla uninstall action, so returning false would be a waste of time.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function uninstall( $parent ) {&lt;br /&gt;
	echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_UNINSTALL ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The entire script.php file ==&lt;br /&gt;
This is the entire script.php file.  It is the same for all versions of com_democompupdate.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined('_JEXEC') or die('Restricted access');&lt;br /&gt;
 &lt;br /&gt;
//the name of the class must be the name of your component + InstallerScript&lt;br /&gt;
//for example: com_contentInstallerScript for com_content.&lt;br /&gt;
class com_democompupdateInstallerScript&lt;br /&gt;
{&lt;br /&gt;
	/*&lt;br /&gt;
	 * $parent is the class calling this method.&lt;br /&gt;
	 * $type is the type of change (install, update or discover_install, not uninstall).&lt;br /&gt;
	 * preflight runs before anything else and while the extracted files are in the uploaded temp folder.&lt;br /&gt;
	 * If preflight returns false, Joomla will abort the update and undo everything already done.&lt;br /&gt;
	 */&lt;br /&gt;
	function preflight( $type, $parent ) {&lt;br /&gt;
		$jversion = new JVersion();&lt;br /&gt;
&lt;br /&gt;
		// Installing component manifest file version&lt;br /&gt;
		$this-&amp;gt;release = $parent-&amp;gt;get( &amp;quot;manifest&amp;quot; )-&amp;gt;version;&lt;br /&gt;
		&lt;br /&gt;
		// Manifest file minimum Joomla version&lt;br /&gt;
		$this-&amp;gt;minimum_joomla_release = $parent-&amp;gt;get( &amp;quot;manifest&amp;quot; )-&amp;gt;attributes()-&amp;gt;version;   &lt;br /&gt;
&lt;br /&gt;
		// Show the essential information at the install/update back-end&lt;br /&gt;
		echo '&amp;lt;p&amp;gt;Installing component manifest file version = ' . $this-&amp;gt;release;&lt;br /&gt;
		echo '&amp;lt;br /&amp;gt;Current manifest cache commponent version = ' . $this-&amp;gt;getParam('version');&lt;br /&gt;
		echo '&amp;lt;br /&amp;gt;Installing component manifest file minimum Joomla version = ' . $this-&amp;gt;minimum_joomla_release;&lt;br /&gt;
		echo '&amp;lt;br /&amp;gt;Current Joomla version = ' . $jversion-&amp;gt;getShortVersion();&lt;br /&gt;
&lt;br /&gt;
		// abort if the current Joomla release is older&lt;br /&gt;
		if( version_compare( $jversion-&amp;gt;getShortVersion(), $this-&amp;gt;minimum_joomla_release, 'lt' ) ) {&lt;br /&gt;
			Jerror::raiseWarning(null, 'Cannot install com_democompupdate in a Joomla release prior to '.$this-&amp;gt;minimum_joomla_release);&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		// abort if the component being installed is not newer than the currently installed version&lt;br /&gt;
		if ( $type == 'update' ) {&lt;br /&gt;
			$oldRelease = $this-&amp;gt;getParam('version');&lt;br /&gt;
			$rel = $oldRelease . ' to ' . $this-&amp;gt;release;&lt;br /&gt;
			if ( version_compare( $this-&amp;gt;release, $oldRelease, 'le' ) ) {&lt;br /&gt;
				Jerror::raiseWarning(null, 'Incorrect version sequence. Cannot upgrade ' . $rel);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else { $rel = $this-&amp;gt;release; }&lt;br /&gt;
 &lt;br /&gt;
		echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_PREFLIGHT_' . $type . ' ' . $rel) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	/*&lt;br /&gt;
	 * $parent is the class calling this method.&lt;br /&gt;
	 * install runs after the database scripts are executed.&lt;br /&gt;
	 * If the extension is new, the install method is run.&lt;br /&gt;
	 * If install returns false, Joomla will abort the install and undo everything already done.&lt;br /&gt;
	 */&lt;br /&gt;
	function install( $parent ) {&lt;br /&gt;
		echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_INSTALL to ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
		// You can have the backend jump directly to the newly installed component configuration page&lt;br /&gt;
		// $parent-&amp;gt;getParent()-&amp;gt;setRedirectURL('index.php?option=com_democompupdate');&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	/*&lt;br /&gt;
	 * $parent is the class calling this method.&lt;br /&gt;
	 * update runs after the database scripts are executed.&lt;br /&gt;
	 * If the extension exists, then the update method is run.&lt;br /&gt;
	 * If this returns false, Joomla will abort the update and undo everything already done.&lt;br /&gt;
	 */&lt;br /&gt;
	function update( $parent ) {&lt;br /&gt;
		echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_UPDATE_ to ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
		// You can have the backend jump directly to the newly updated component configuration page&lt;br /&gt;
		// $parent-&amp;gt;getParent()-&amp;gt;setRedirectURL('index.php?option=com_democompupdate');&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	/*&lt;br /&gt;
	 * $parent is the class calling this method.&lt;br /&gt;
	 * $type is the type of change (install, update or discover_install, not uninstall).&lt;br /&gt;
	 * postflight is run after the extension is registered in the database.&lt;br /&gt;
	 */&lt;br /&gt;
	function postflight( $type, $parent ) {&lt;br /&gt;
		// always create or modify these parameters&lt;br /&gt;
		$params['my_param0'] = 'Component version ' . $this-&amp;gt;release;&lt;br /&gt;
		$params['my_param1'] = 'Another value';&lt;br /&gt;
 &lt;br /&gt;
		// define the following parameters only if it is an original install&lt;br /&gt;
		if ( $type == 'install' ) {&lt;br /&gt;
			$params['my_param2'] = '4';&lt;br /&gt;
			$params['my_param3'] = 'Star';&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		$this-&amp;gt;setParams( $params );&lt;br /&gt;
 &lt;br /&gt;
		echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_POSTFLIGHT ' . $type . ' to ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * $parent is the class calling this method&lt;br /&gt;
	 * uninstall runs before any other action is taken (file removal or database processing).&lt;br /&gt;
	 */&lt;br /&gt;
	function uninstall( $parent ) {&lt;br /&gt;
		echo '&amp;lt;p&amp;gt;' . JText::_('COM_DEMOCOMPUPDATE_UNINSTALL ' . $this-&amp;gt;release) . '&amp;lt;/p&amp;gt;';&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	/*&lt;br /&gt;
	 * get a variable from the manifest file (actually, from the manifest cache).&lt;br /&gt;
	 */&lt;br /&gt;
	function getParam( $name ) {&lt;br /&gt;
		$db = JFactory::getDbo();&lt;br /&gt;
		$db-&amp;gt;setQuery('SELECT manifest_cache FROM #__extensions WHERE name = &amp;quot;com_democompupdate&amp;quot;');&lt;br /&gt;
		$manifest = json_decode( $db-&amp;gt;loadResult(), true );&lt;br /&gt;
		return $manifest[ $name ];&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	/*&lt;br /&gt;
	 * sets parameter values in the component's row of the extension table&lt;br /&gt;
	 */&lt;br /&gt;
	function setParams($param_array) {&lt;br /&gt;
		if ( count($param_array) &amp;gt; 0 ) {&lt;br /&gt;
			// read the existing component value(s)&lt;br /&gt;
			$db = JFactory::getDbo();&lt;br /&gt;
			$db-&amp;gt;setQuery('SELECT params FROM #__extensions WHERE name = &amp;quot;com_democompupdate&amp;quot;');&lt;br /&gt;
			$params = json_decode( $db-&amp;gt;loadResult(), true );&lt;br /&gt;
			// add the new variable(s) to the existing one(s)&lt;br /&gt;
			foreach ( $param_array as $name =&amp;gt; $value ) {&lt;br /&gt;
				$params[ (string) $name ] = (string) $value;&lt;br /&gt;
			}&lt;br /&gt;
			// store the combined new and existing values back as a JSON string&lt;br /&gt;
			$paramsString = json_encode( $params );&lt;br /&gt;
			$db-&amp;gt;setQuery('UPDATE #__extensions SET params = ' .&lt;br /&gt;
				$db-&amp;gt;quote( $paramsString ) .&lt;br /&gt;
				' WHERE name = &amp;quot;com_democompupdate&amp;quot;' );&lt;br /&gt;
				$db-&amp;gt;query();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
*[[User:tapaccos|Alex Tapaccos]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Joomla! 1.7]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_2</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 2</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_2"/>
				<updated>2013-05-24T12:03:06Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 2 to J2.5:Managing Component Updates (Manifest file): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Managing Component Updates (Manifest file)]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates_(Manifest_file)</id>
		<title>J2.5:Managing Component Updates (Manifest file)</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates_(Manifest_file)"/>
				<updated>2013-05-24T12:03:05Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 2 to J2.5:Managing Component Updates (Manifest file): namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
&lt;br /&gt;
== Manifest File (democompupdate.xml) ==&lt;br /&gt;
The manifest file in this example is very similar to that of normal components.  Important contents for this example include:&lt;br /&gt;
&lt;br /&gt;
=== sql folder ===&lt;br /&gt;
Note the inclusion of the SQL folder in the administration files section.  This tells Joomla to copy the contents of this folder to the web site during install or update.  The ''schemapath'' declaration below depends on Joomla copying these files during the install or update process.&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;files folder=&amp;quot;admin&amp;quot;&amp;gt; &lt;br /&gt;
		&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt; &lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== name ===&lt;br /&gt;
This is the name of the component.  The 'getParam($key)' method in the ''script.php'' file uses this value to identify the correct row in the extensions table.  The ''manifest_cache'' field in the ''extensions'' table has the version string for the currently installed component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;COM_DEMOCOMPUPDATE&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== version ===&lt;br /&gt;
Joomla stores this value in the ''manifest_cache'' field of the ''extensions'' table.  The ''extensions'' table is where the custom code in the ''script.php'' file reads the version string of the currently installed component, and compares it to the version string of the update.&lt;br /&gt;
&lt;br /&gt;
The custom component code uses this comparison to abort an update if the version sequence is not allowed.  Joomla also compares this string to the SQL update file names, to determine which SQL commands to execute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joomla version ===&lt;br /&gt;
The component developer records in the manifest file the version of Joomla that is required to run the component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your component installation script.php file can use this value to control whether a component installation or update should be allowed or not allowed.&lt;br /&gt;
&lt;br /&gt;
=== schemapath ===&lt;br /&gt;
This defines the directory that contains SQL files for component incremental database updates.&lt;br /&gt;
You may choose to put the SQL files somewhere else in your component release, but make sure their location is documented here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;update&amp;gt; &lt;br /&gt;
	&amp;lt;schemas&amp;gt; &lt;br /&gt;
		&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates&amp;lt;/schemapath&amp;gt; &lt;br /&gt;
	&amp;lt;/schemas&amp;gt; &lt;br /&gt;
&amp;lt;/update&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== #__schemas table ===&lt;br /&gt;
The SQL files have a second function.&lt;br /&gt;
In addition to potentially modifying the MySQL database, Joomla uses the names of these SQL files to enable updates to the ''version_id'' field in the ''#__schemas'' table for your component.&lt;br /&gt;
It is important to have an SQL file for EVERY version of your component.&lt;br /&gt;
The file should be empty if you have no SQL code to execute when updating to that version.&lt;br /&gt;
You must have a file or the ''version_id'' will not get updated correctly.&lt;br /&gt;
Joomla uses the ''version_id'' in the ''#__schemas'' table as the ''from'' version when calculating updates ''from'' an older version ''to'' a new version.&lt;br /&gt;
&lt;br /&gt;
It is important to include these ''schemapath'' lines in your manifest file, even if you have no SQL commands to execute.&lt;br /&gt;
By including these lines and including empty SQL files, the ''version_id'' value will be correctly maintained in the ''#__schemas'' table.&lt;br /&gt;
&lt;br /&gt;
If your new component version is not executing the SQL file as expected, check the ''#__schemas'' table to see if the previous version was correctly recorded.&lt;br /&gt;
If it is not, then your update will not execute the SQL file when updating from that version to a newer version.&lt;br /&gt;
&lt;br /&gt;
== The entire manifest file ==&lt;br /&gt;
Here is the entire manifest file for democompupdate version 1.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;1.6&amp;quot; method=&amp;quot;new&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;COM_DEMOCOMPUPDATE&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;2011 05 11&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Your Name Here&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Free to copy&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;none&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Test the Install and Update Process&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Runs on install/uninstall/update; New in 1.6 --&amp;gt;&lt;br /&gt;
	&amp;lt;scriptfile&amp;gt;script.php&amp;lt;/scriptfile&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;sql/install_data.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;sql/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;update&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;democompupdate.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Joomla! 1.7]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates</id>
		<title>J2.5:Managing Component Updates</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates"/>
				<updated>2013-05-24T12:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: fixing move error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5}}{{Chunk:Managing Component Updates - Contents}}{{review}}&lt;br /&gt;
== Intro ==&lt;br /&gt;
This component demonstrates how a component developer can use the features in Joomla 1.6 (and higher) to help the web site administrator correctly update the component.  Capabilities that are implemented in this demo package include:&lt;br /&gt;
# Confirming that the correct version of Joomla is installed before allowing an install or update of the component.&lt;br /&gt;
# Confirming that the correct version of the component is installed before allowing an update of the component.&lt;br /&gt;
# Controlling the sequence of SQL updates, when the user updates the component over multiple release versions.&lt;br /&gt;
# Show where the component developer can create custom code that will execute before and after component install, update, discover_install and uninstall.&lt;br /&gt;
# Demonstrate how to create and update component parameters during the component install and update process.&lt;br /&gt;
&lt;br /&gt;
There are two concerns when distributing component updates:&lt;br /&gt;
# Making sure that the correct update is selected for installation.  This selection depends on the version currently installed, and the desired version following the update.  Actions include both selecting appropriate updates and denying inappropriate updates.  The update actions may require multiple sequential steps, each implementing a separate set of update commands.&lt;br /&gt;
# Ensuring that the updates are correctly installed, and taking the appropriate action if they fail.&lt;br /&gt;
Joomla manages much of this process, but depends on the component developer to capture the version dependencies.  Additionally, the component may have unique update requirements that need to be enforced.&lt;br /&gt;
There are two parts of an install or update.&lt;br /&gt;
# Files.  During an update, Joomla completely replaces the files of the existing version with the files of the new version.  There is no incremental file update inherent in Joomla.  The component developer can implement this functionality by creating custom update code, if desired.&lt;br /&gt;
# Database.  During an update, Joomla can execute SQL commands to incrementally modify the component database.  The component developer maintains files with SQL commands that are necessary to modify the database from each older version to a newer version.&lt;br /&gt;
After becoming familiar with this example, the component developer should study the Joomla JinstallerComponent source code.  This is the best way to become familiar with the sequences and dependencies in the install, update, discover_install and uninstall processes.&lt;br /&gt;
The new update methods in Joomla 1.6 give the component developer the ability to implement complex, custom checks, abort conditions and installation sequences.&lt;br /&gt;
&lt;br /&gt;
Parts 2 through 6 of this document describe the various sections of the software that the component developer must create to implement the features described in this document.&lt;br /&gt;
&lt;br /&gt;
== This example ==&lt;br /&gt;
Files in this example implement an initial install and two subsequent updates of a component.  Included are a minimal front-end to allow the user to observe the results of correct and incorrect updates.  There is no component back-end.&lt;br /&gt;
&lt;br /&gt;
This is a simple component.  You can implement your custom code here and observe the results prior to implementing it in your component.&lt;br /&gt;
This example is for a component.  Much of the example applies to other extensions, but those are not described here.&lt;br /&gt;
&lt;br /&gt;
This example was developed on ''Joomla! 1.7.3 Stable''.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0 ===&lt;br /&gt;
This is the initial component version.  Joomla will detect that there is no existing component with files in this directory and will use the install function.&lt;br /&gt;
If you have a more recent version of this component installed, the custom update code will not allow version 1.0 to be installed.  This is not a feature inherent to Joomla.  The component developer must implement it in custom code.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0j3 ===&lt;br /&gt;
This is a variation of the initial 1.0 version.  It requires that Joomla 3.0 or higher be installed.  It is intended that installing this version will fail, showing how this Joomla version check operates.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.1.1 ===&lt;br /&gt;
This can be implemented either as an original install or an update from version 1.0.  If you do not install version 1.0, then Joomla will use the install function for this version.  If you have installed version 1.0, then Joomla will use the update function.&lt;br /&gt;
Like the description above for version 1.0, the custom code in this example will not allow an update to 1.1.1 if the existing installed version is 1.3.&lt;br /&gt;
&lt;br /&gt;
=== Version 1.3 ===&lt;br /&gt;
Just as in version 1.1.1, this version can be installed as an original install or as an update to an existing version.  With this example, you can update to version 1.3 from either the original 1.0 version or from the intermediate 1.1.1 version.&lt;br /&gt;
&lt;br /&gt;
=== Front-end ===&lt;br /&gt;
The front-end is a simple display of three fields.  The field at the top of the page is a table that shows the contents of the component database.  This database is a simple list of major component versions.  There is one row in the table for each major version, with the latest installed minor version string stored (and displayed) for each major version.  As the administrator updates this component, update SQL modifies the minor version string in the database. This is the display after version 1.3 has been installed or updated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;table style='border-style:solid;border-width:thin;padding:1em;'&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr style='background-color:#ccccff'&amp;gt;&amp;lt;th&amp;gt;Index&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Value&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.1.1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.2.1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files: 1.3&lt;br /&gt;
&lt;br /&gt;
Param: Component version 1.3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below the table is a line of text that shows the release string as defined in the component files.  If the sequence of updates is implemented correctly, the release string displayed from the files will match the release string on the last (bottom) row of the table.&lt;br /&gt;
&lt;br /&gt;
At the bottom of the page is a line of text that shows the value of the component parameter ''my_param0''.  This parameter is defined in the script.php file during the install or update process.  It should match the release string shown in the line above.&lt;br /&gt;
&lt;br /&gt;
The front-end on this example is a convenient way to confirm that the files and the database are synchronized, and that the update process was correctly executed.&lt;br /&gt;
&lt;br /&gt;
== version_compare ==&lt;br /&gt;
See PHP documentation: [[php:version_compare]]&lt;br /&gt;
&lt;br /&gt;
Joomla uses the PHP function&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
version_compare( string $version1 , string $version2 [, string $operator ] )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
to determine if any SQL file(s) should be executed on an update, and to determine the order of execution for those files.  For this reason, the version string in your manifest file should follow the conventions that this command uses.  From the PHP manual:&lt;br /&gt;
&lt;br /&gt;
: The function first replaces _, - and + with a dot . in the version strings and also inserts dots . before and after any non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'. Then it splits the results like if you were using explode('.', $ver). Then it compares the parts starting from left to right. If a part contains special version strings these are handled in the following order: any string not found in this list &amp;lt; dev &amp;lt; alpha = a &amp;lt; beta = b &amp;lt; RC = rc &amp;lt; # &amp;lt; pl = p. This way not only versions with different levels like '4.1' and '4.1.2' can be compared but also any PHP specific version containing development state. &lt;br /&gt;
&lt;br /&gt;
Use the optional $operator variable to perform a specific version string comparison that your code may require.  Allowed values for $operator are:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;, lt, &amp;lt;=, le, &amp;gt;, gt, &amp;gt;=, ge, ==, =, eq, !=, &amp;lt;&amp;gt;, ne&lt;br /&gt;
&lt;br /&gt;
In the script.php file, the component developer can use the same PHP version_compare function to execute code specific to a version, or to abort the update.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if ( $type == 'update' ) {&lt;br /&gt;
	if ( version_compare( $this-&amp;gt;release, $oldRelease, 'le' ) ) {&lt;br /&gt;
		Jerror::raiseWarning(null, 'Incorrect version sequence. Cannot upgrade ' . $rel);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Component parameters ==&lt;br /&gt;
The ''postflight'' function in the script.php file is a good place to define or update the values of component parameters.  This example has a ''setParams'' function for this purpose.  Joomla stores the parameters as a JSON string in the ''params'' field in the ''extensions'' table.  The ''setParams'' function first converts the existing JSON string to a PHP array.  Additions or modifications are made to the array, then it is converted back to a JSON string and written to the ''extensions'' table.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function setParams($param_array) {&lt;br /&gt;
	if ( count($param_array) &amp;gt; 0 ) {&lt;br /&gt;
		// read the existing component value(s)&lt;br /&gt;
		$db = JFactory::getDbo();&lt;br /&gt;
		$db-&amp;gt;setQuery('SELECT params FROM #__extensions WHERE name = '.$db-&amp;gt;quote('com_democompupdate'));&lt;br /&gt;
		$params = json_decode( $db-&amp;gt;loadResult(), true );&lt;br /&gt;
		// add the new variable(s) to the existing one(s)&lt;br /&gt;
		foreach ( $param_array as $name =&amp;gt; $value ) {&lt;br /&gt;
			$params[ (string) $name ] = (string) $value;&lt;br /&gt;
		}&lt;br /&gt;
		// store the combined new and existing values back as a JSON string&lt;br /&gt;
		$paramsString = json_encode( $params );&lt;br /&gt;
		$db-&amp;gt;setQuery('UPDATE #__extensions SET params = ' .&lt;br /&gt;
			$db-&amp;gt;quote( $paramsString ) .&lt;br /&gt;
			' WHERE name = '.$db-&amp;gt;quote('com_democompupdate'));&lt;br /&gt;
			$db-&amp;gt;query();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Component files ==&lt;br /&gt;
The install zip fles for the four versions can be individually downloaded from JoomlaCode.org.&lt;br /&gt;
* [http://joomlacode.org/gf/download/frsrelease/16495/74511/democompupdate_10.zip democompupdate_10.zip]&lt;br /&gt;
* [http://joomlacode.org/gf/download/frsrelease/16495/74512/democompupdate_10j3.zip democompupdate_10j3.zip]&lt;br /&gt;
* [http://joomlacode.org/gf/download/frsrelease/16495/74513/democompupdate_111.zip democompupdate_111.zip]&lt;br /&gt;
* [http://joomlacode.org/gf/download/frsrelease/16495/74514/democompupdate_13.zip democompupdate_13.zip]&lt;br /&gt;
&lt;br /&gt;
You need to download all four of these to fully exercise the various update features.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:sm990|Kim Eckert]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_1</id>
		<title>Managing Component Updates with Joomla!2.5 - Part 1</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Managing_Component_Updates_with_Joomla!2.5_-_Part_1"/>
				<updated>2013-05-24T11:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 1 to J2.5:Managing Component Updates: namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Managing Component Updates]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates</id>
		<title>J2.5:Managing Component Updates</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates"/>
				<updated>2013-05-24T11:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 1 to J2.5:Managing Component Updates: namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Managing Component Updates]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Managing_Component_Updates</id>
		<title>J2.5:Managing Component Updates</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Managing_Component_Updates"/>
				<updated>2013-05-24T11:57:59Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Managing Component Updates with Joomla!2.5 - Part 1 to Managing Component Updates: namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Managing Component Updates]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Component_Development/Reading_list</id>
		<title>Component Development/Reading list</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Component_Development/Reading_list"/>
				<updated>2013-05-24T11:55:26Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: alphabetizing, might not be the best for now, need a way to dpl these, but how to order them&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Adding ACL rules to your component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Adding AJAX to your component]]&lt;br /&gt;
* [[Adding sortable columns to a table in a component]] {{JVer/multi|1.5,2.5,3.x}}&lt;br /&gt;
* [[Component Program Flow]].  {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(UML sequence diagrams showing the control flow for a component.)&lt;br /&gt;
* [[Creating a file uploader in your component]]&lt;br /&gt;
* [[Creating a toolbar for your component]]&lt;br /&gt;
* [[Creating Mootools accordion or simple slider/toggler]] {{JVer|2.5}}&lt;br /&gt;
* [[Creating PDF views]] {{JVer|2.5}}&amp;lt;noinclude&amp;gt;[[Category:Landing subpages|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* [[Developing a MVC Component|Developing a Model-View-Controller Component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[File Structure and Naming Conventions]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[How to add custom filters to components]] {{JVer|2.5}}&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
* [[JController and its subclass usage overview]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Portal:Platform|Joomla Platform Portal]] {{JVer|platform}}&lt;br /&gt;
* [[Managing Component Updates with Joomla!2.5 - Part 1]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Manifest files]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(For the installation of extensions.)&lt;br /&gt;
* [[Sending email from extensions]]&lt;br /&gt;
* [[Supporting SEF URLs in your component]]&lt;br /&gt;
* [[Using a custom image in the menu bar title]]&lt;br /&gt;
* [[Using multiple models in an MVC component]]&lt;br /&gt;
* [[Using the JHtmlTabs class in a component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Using the JToolBar class in the frontend]]&lt;br /&gt;
* [[J3.1:Using Tags in an Extension|Using Tags in an Extension]] {{JVer|3.x}}&lt;br /&gt;
* [[Xml-rpc changes in Joomla! 2.5]] {{JVer/multi|2.5,3.x}}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/example_link</id>
		<title>User:Hutchy68/example link</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/example_link"/>
				<updated>2013-05-24T01:18:40Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: trying something else&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working Method==&lt;br /&gt;
&lt;br /&gt;
Working out a method to show a hyperlink in a pre style box without creating an actual hyperlink on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;{{{1|no hyperlink supplied!}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/example_link</id>
		<title>User:Hutchy68/example link</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/example_link"/>
				<updated>2013-05-24T01:15:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working Method==&lt;br /&gt;
&lt;br /&gt;
Working out a method to show a hyperlink in a pre style box without creating an actual hyperlink on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;amp;lt;noinclude&amp;amp;gt;&amp;amp;lt;/noinclude&amp;amp;gt;&amp;gt;{{{1|no hyperlink supplied!}}}&amp;lt;/nowiki&amp;amp;lt;noinclude&amp;amp;gt;&amp;amp;lt;/noinclude&amp;amp;gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/example_link</id>
		<title>User:Hutchy68/example link</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/example_link"/>
				<updated>2013-05-24T01:11:34Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working Method==&lt;br /&gt;
&lt;br /&gt;
Working out a method to show a hyperlink in a pre style box without creating an actual hyperlink on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;gt;{{{1|no hyperlink supplied!}}}&amp;lt;/nowiki&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/example_link</id>
		<title>User:Hutchy68/example link</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/example_link"/>
				<updated>2013-05-24T01:05:49Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working Method==&lt;br /&gt;
&lt;br /&gt;
Working out a method to show a hyperlink in a pre style box without creating an actual hyperlink on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/includeonly&amp;gt;{{{1|no hyperlink supplied!}}}&amp;lt;includeonly&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/example_link</id>
		<title>User:Hutchy68/example link</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/example_link"/>
				<updated>2013-05-24T01:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: example link in a pre wrap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working Method==&lt;br /&gt;
&lt;br /&gt;
Working out a method to show a hyperlink in a pre style box without creating an actual hyperlink on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:10px 0; width:auto; color:#0b0080; background:#eee; padding:12px; border:1px dashed #2f6fab;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Search_Engine_Friendly_URLs</id>
		<title>Search Engine Friendly URLs</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Search_Engine_Friendly_URLs"/>
				<updated>2013-05-24T00:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: format of article, headertabs for readability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
'''Search engine friendly (SEF)''', '''human-readable''' or  [[wikipedia:Clean_URL|clean URLs]] are URLs that make sense to both humans and search engines because they explain the path to the particular page they point to. Since version 1.5, Joomla! is capable of creating and parsing URLs in any format, including SEF URLs. This does not depend on URL rewriting executed by the web server, so it works even if Joomla! runs a server other than Apache with the mod_rewrite module. The SEF URLs follow a certain fixed pattern, but the user can define a [[Alias|short descriptive text (alias)]] for each segment of the URL.&lt;br /&gt;
&lt;br /&gt;
Internally, the local part of a SEF URL (the part after the domain name) is called a '''route'''. Creating and processing SEF URLs is therefore referred to as '''routing''', and the relevant code is called a '''router'''.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
A good example of routing is the URL to &amp;quot;Welcome to Joomla!&amp;quot; article in the sample data.&lt;br /&gt;
&lt;br /&gt;
* Without SEF URLs turned on, the URL is &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* With SEF URLs on and mod_rewrite off, it's &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php/the-­news/1-­latest­-news/1­-welcome­-to­-joomla&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* With both SEF URLs and mod_rewrite on, it's &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/the-­news/1­-latest-­news/1-­welcome-­to­-joomla&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Search engine friendly URLs can be activated by turning on the '''Search Engine Friendly URLs''' option in the ''Global Configuration''. This option is on by default since Joomla! 1.6. See [[Enabling Search Engine Friendly (SEF) URLs]] for more information.&lt;br /&gt;
&lt;br /&gt;
= FAQs =&lt;br /&gt;
&lt;br /&gt;
=== What do the numbers in the URL mean? ===&lt;br /&gt;
By comparing the old and the new URL we can see numbers in the old URL,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1:welcome-to-joomla&amp;amp;catid=1:latest-news&amp;amp;Itemid=50&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but also in the new URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://www.example.com/the-­news/1­-latest-­news/1-­welcome-­to­-joomla&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These numbers are the parameters that are needed by Joomla! to get the internal URL and show the page you want to see. (In this case, the first numeral one is the ID of the category, the second numeral one is the ID of the article.)&lt;br /&gt;
&lt;br /&gt;
=== There is no &amp;lt;tt&amp;gt;index.php&amp;lt;/tt&amp;gt; in the URL anymore. Can I delete the file now? ===&lt;br /&gt;
No! The URL may doesn't contain the &amp;lt;tt&amp;gt;index.php&amp;lt;/tt&amp;gt; anymore, but internally the mod_rewrite will only redirect to the original path without showing it to you.&lt;br /&gt;
&lt;br /&gt;
=== What is the [[Alias]] value? And how does it get created? ===&lt;br /&gt;
Alias is listed beneath the Title field in Articles, Categories, Sections and Menu Items. Joomla! can automatically create the alias for you. An automatic alias begins with the title. All upper case letters are changed to lower case. Spaces and special characters not allowed in a URL; they are changed to dashes.&lt;br /&gt;
&lt;br /&gt;
=== I want to specify my own value for Alias. ===&lt;br /&gt;
If you do not like the alias provided by Joomla!, you can enter a value of your choosing into that field. Many believe using good keywords in your URL helps search engine optimization. You can do so by including those keywords in your title, and allowing Joomla! to create the alias, or by creating the alias yourself.&lt;br /&gt;
&lt;br /&gt;
=== How is Alias used in a URL? ===&lt;br /&gt;
For a menu item, Joomla! uses the alias as the URL plug. Assume that you use the first two SEF URL options and you create a menu item called Products. Your URL would be example.com/products.&lt;br /&gt;
&lt;br /&gt;
Joomla! also uses the primary key values of data within the URL to help the router navigate to the correct page. Continuing with the previous example, if your products menu item was for an Article­/Category Blog, the link for the Article Title and/or Read More link would have three parts:&lt;br /&gt;
&lt;br /&gt;
* The menu item URL - example.com/products;&lt;br /&gt;
&lt;br /&gt;
* Plus, the primary key for the Category and the Category alias - 32-fruit;&lt;br /&gt;
&lt;br /&gt;
* Plus, the primary key for the Article and the Article alias - 1-apple;&lt;br /&gt;
&lt;br /&gt;
The complete URL is: &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/products/32-fruit/1-apple&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How can I get rid of the numbers in the SEF URLs? ===&lt;br /&gt;
The numbers in the SEF URL are needed by Joomla!'s router to know how to direct site traffic. Once the router logic stabilizes, simple third party system plugins can be developed to augment the router capabilities by allowing more choice. At that time, numbers will likely be removed from the URL.&lt;br /&gt;
&lt;br /&gt;
= Route Formats and the Routing Mechanism =&lt;br /&gt;
&lt;br /&gt;
''This section describes Joomla!'s core (built-in) routing mechanism. Routing extensions may change the way routes are created on your system.''&lt;br /&gt;
&lt;br /&gt;
=== Route Formats ===&lt;br /&gt;
&lt;br /&gt;
To describe the Joomla! routing mechanism in more detail, we first need to pin down what we refer to as a '''route'''. Suppose that Joomla! has been installed in &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/sites/first/&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;. The installation path is generally referred to as the '''base URL'''. A possible example URL is &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/sites/first/products/32-fruit/1-apple&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;. The first part of this URL is the aforementioned base URL, and neither Joomla! nor any component router can create URLs with a different first part. The second part, &amp;lt;tt&amp;gt;products/32-fruit/1-apple&amp;lt;/tt&amp;gt;, is a '''route''', consisting of three '''segment'''s.&lt;br /&gt;
&lt;br /&gt;
The first segment of a route is, for regular URLs, the alias of a menu item. The SEF URL is said to be '''routed through''' that menu item. The other segments are determined entirely by the router of the component that provides the type of the menu item. The ''Category - Blog'' menu item type, for example, is provided by the [[Content]] component, and therefore that component's router is responsible for building and parsing the remaining segments.&lt;br /&gt;
&lt;br /&gt;
It is also possible (for extensions) to ask the system to create a route without supplying a menu item to route through. In that case, the system will usually decide to create a special route that has the word &amp;lt;tt&amp;gt;component&amp;lt;/tt&amp;gt; as the first segment. These routes are created using a fixed format: the name of the component (without the leading &amp;lt;tt&amp;gt;com_&amp;lt;/tt&amp;gt;) is selected as the second segment and any parameters as the other segments.&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&lt;br /&gt;
It is important to note creating a menu item is the ''only'' way for a Joomla! user to define a route that leads to a specific component. It is, however, possible to create a route without showing it on the site (in a menu). An often-applied method is to create a menu item in a menu that isn't displayed anywhere. Such a menu is usually called a [[Menu|hidden menu]].&lt;br /&gt;
&lt;br /&gt;
The previous paragraph implies that it is not possible to make one component responsible for handling all routes. For example, it is not possible to specify that the URL &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/thealias&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; should display the Content item with the alias &amp;lt;tt&amp;gt;thealias&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;thealias&amp;lt;/tt&amp;gt; could be any word. If this needs to be done for a small number of articles, menu items can be created manually for these. Else a routing extension is necessary.&lt;br /&gt;
&lt;br /&gt;
This routing mechanism is therefore not as flexible as users sometimes require. On the other hand, it has one large advantage: it reduces the chance of ambiguous routes (routes that could lead to two different pages). Since the first segment of a route is always a menu item alias, the system immediately knows which component's router must be used to parse it.&lt;br /&gt;
&lt;br /&gt;
= Implementation Details =&lt;br /&gt;
=== Handling Routes ===&lt;br /&gt;
&lt;br /&gt;
''This section describes the routing implementation. If you are a component developer, see [[Supporting SEF URLs in your component]].''&lt;br /&gt;
&lt;br /&gt;
Joomla routes are created and resolved by [[JRouter|the JRouter class]]. This class looks in the component root of the currently active component (specified in the &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt; parameter in the query string) and includes the &amp;lt;tt&amp;gt;router.php&amp;lt;/tt&amp;gt; file in that component's root directory. It then calls one of two functions: one for creating the SEF URL and one for interpreting the SEF URL.&lt;br /&gt;
&lt;br /&gt;
The JRouter class is overridden by the Joomla CMS in &amp;lt;tt&amp;gt;/includes/router.php&amp;lt;/tt&amp;gt;. In this file the build and parse functions are overridden to properly build and parse the URLs for the Joomla CMS.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;router.php&amp;lt;/tt&amp;gt; file in each component (for example, &amp;lt;tt&amp;gt;/components/com_content/router.php&amp;lt;/tt&amp;gt;) should contain the following two functions:&lt;br /&gt;
* ContentBuildRoute - this builds the SEF URL&lt;br /&gt;
** Parameters&lt;br /&gt;
*** $query - this is a named array containing the querystring variables&lt;br /&gt;
** Returns: an array of segments where each segment is separated by a '/' when later combined to create the actual URL (the items in the array should not contain '/' characters)&lt;br /&gt;
* ContentParseRoute - this interprets an SEF URL&lt;br /&gt;
** Parameters&lt;br /&gt;
*** $segments - this is an array that contains the segments of the URL requested.&lt;br /&gt;
** Returns: a name =&amp;gt; value array of the querystring variables that the link maps to&lt;br /&gt;
&lt;br /&gt;
=== The SEF Plugin ===&lt;br /&gt;
The Joomla ''System - SEF'' plugin inherits &amp;lt;code&amp;gt;JPlugin&amp;lt;/code&amp;gt; and implements the &amp;lt;code&amp;gt;onAfterRender()&amp;lt;/code&amp;gt; function. In this function the body of the response that will be sent to the browser is retrieved using &amp;lt;code&amp;gt;JResponse::getBody()&amp;lt;/code&amp;gt;. The body of the response is then searched for links containing &amp;lt;tt&amp;gt;/index.php...&amp;lt;/tt&amp;gt; and replaces them with a correct SEF URL by calling &amp;lt;code&amp;gt;JRoute::_(''url'')&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
JRoute builds SEF URLs by instantiating a &amp;lt;code&amp;gt;JRouter&amp;lt;/code&amp;gt; object and requesting that it build the correct link from the passed in URL.&lt;br /&gt;
&lt;br /&gt;
=== Handling SEF URLs ===&lt;br /&gt;
By default the SEF URLs are handled by the &amp;lt;code&amp;gt;JRouterSite&amp;lt;/code&amp;gt; object (from &amp;lt;tt&amp;gt;/includes/router.php&amp;lt;/tt&amp;gt;) and is called by a call to &amp;lt;code&amp;gt;JApplication::route()&amp;lt;/code&amp;gt; in index.php. This call is made on the &amp;lt;code&amp;gt;$app&amp;lt;/code&amp;gt; variable which is actually an instance of &amp;lt;code&amp;gt;JSite&amp;lt;/code&amp;gt; (from &amp;lt;tt&amp;gt;/includes/application.php&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;JApplication::route()&amp;lt;/code&amp;gt; has a non-destructive result on the &amp;lt;code&amp;gt;$_GET&amp;lt;/code&amp;gt; array. That is, &amp;lt;code&amp;gt;JApplication::route()&amp;lt;/code&amp;gt; sets variables in &amp;lt;code&amp;gt;$_GET&amp;lt;/code&amp;gt; by calling &amp;lt;code&amp;gt;JRequest::set()&amp;lt;/code&amp;gt; with the overwrite flag set to false. Thus if a variable name is returned from &amp;lt;code&amp;gt;JRouter::route()&amp;lt;/code&amp;gt; that is already in &amp;lt;code&amp;gt;$_GET&amp;lt;/code&amp;gt;, it will not put that value into &amp;lt;code&amp;gt;$_GET&amp;lt;/code&amp;gt;. This allows for custom routing.&lt;br /&gt;
&lt;br /&gt;
=== Custom Routing ===&lt;br /&gt;
Joomla allows you to create your own routing mechanism. In order to create this mechanism you must have a plugin that overrides the &amp;lt;code&amp;gt;JPlugin::onAfterInitialise()&amp;lt;/code&amp;gt; function. This function then parses the URL and creates the needed variables in &amp;lt;code&amp;gt;$_GET&amp;lt;/code&amp;gt; before the standard Joomla routing is done.&lt;br /&gt;
&lt;br /&gt;
''See [[Creating a System Plugin to augment JRouter]] for an example.''&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;br /&gt;
[[Category:Search Engine Friendly URLs| ]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Component_Development/Reading_list</id>
		<title>Component Development/Reading list</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Component_Development/Reading_list"/>
				<updated>2013-05-24T00:41:22Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: version icon added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Portal:Platform|Joomla Platform Portal]] {{JVer|platform}}&lt;br /&gt;
* [[File Structure and Naming Conventions]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Component Program Flow]].  {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(UML sequence diagrams showing the control flow for a component.)&lt;br /&gt;
* [[Developing a MVC Component|Developing a Model-View-Controller Component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Manifest files]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(For the installation of extensions.)&lt;br /&gt;
* [[Adding sortable columns to a table in a component]] {{JVer/multi|1.5,2.5,3.x}}&lt;br /&gt;
* [[How to add custom filters to components]] {{JVer|2.5}}&lt;br /&gt;
* [[Supporting SEF URLs in your component]]&lt;br /&gt;
* [[Using the JHtmlTabs class in a component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Adding AJAX to your component]]&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[Sending email from extensions]]&lt;br /&gt;
* [[Using the JToolBar class in the frontend]]&lt;br /&gt;
* [[Creating a toolbar for your component]]&lt;br /&gt;
* [[Creating a file uploader in your component]]&lt;br /&gt;
* [[Creating Mootools accordion or simple slider/toggler]] {{JVer|2.5}}&lt;br /&gt;
* [[Using a custom image in the menu bar title]]&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
* [[Using multiple models in an MVC component]]&lt;br /&gt;
* [[Adding ACL rules to your component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[JController and its subclass usage overview]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Managing Component Updates with Joomla!2.5 - Part 1]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Xml-rpc changes in Joomla! 2.5]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Creating PDF views]] {{JVer|2.5}}&amp;lt;noinclude&amp;gt;[[Category:Landing subpages|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* [[J3.1:Using Tags in an Extension|Using Tags in an Extension]] {{JVer|3.x}}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Creating_Mootools_accordion_or_simple_slider/toggler</id>
		<title>Creating Mootools accordion or simple slider/toggler</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Creating_Mootools_accordion_or_simple_slider/toggler"/>
				<updated>2013-05-24T00:39:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Creating Mootools accordion or simple slider/toggler to J2.5:Creating Mootools accordion or simple slider/toggler: namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J2.5:Creating Mootools accordion or simple slider/toggler]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Creating_Mootools_accordion_or_simple_slider/toggler</id>
		<title>J2.5:Creating Mootools accordion or simple slider/toggler</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Creating_Mootools_accordion_or_simple_slider/toggler"/>
				<updated>2013-05-24T00:39:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Creating Mootools accordion or simple slider/toggler to J2.5:Creating Mootools accordion or simple slider/toggler: namespacing for version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|2.5|platform=11.1|target=from}}&lt;br /&gt;
{{review}}&lt;br /&gt;
Simple example to create a simple accordion. Can also be used to make a simple slide-toggler (just use 1 link).&lt;br /&gt;
In this example all the accordions (slider) are closed by default.&lt;br /&gt;
&lt;br /&gt;
''The php code (e.g. inside template):''&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Add Slide/toggle behavior&lt;br /&gt;
JHTML::_('behavior.framework',true);&lt;br /&gt;
$this-&amp;gt;document-&amp;gt;addScriptDeclaration('&lt;br /&gt;
		window.addEvent(&amp;quot;domready&amp;quot;, function( ){&lt;br /&gt;
		navAcc = new Accordion( $$( &amp;quot;.accordion .accT&amp;quot; ), $$( &amp;quot;.accordion .accE&amp;quot; ), {display: -1, alwaysHide: true}  );&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''Your html should look like this:''&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;accordion&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;a class=&amp;quot;accT&amp;quot;&amp;gt;Link 1&amp;lt;/a&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;accE&amp;quot;&amp;gt;Container 1&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;a class=&amp;quot;accT&amp;quot;&amp;gt;Link 1&amp;lt;/a&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;accE&amp;quot;&amp;gt;Container 2&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;a class=&amp;quot;accT&amp;quot;&amp;gt;Link 1&amp;lt;/a&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;accE&amp;quot;&amp;gt;Container 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development‏‎]] [[Category:mootools]] [[Category:javascript]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Component_Development/Reading_list</id>
		<title>Component Development/Reading list</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Component_Development/Reading_list"/>
				<updated>2013-05-23T19:09:01Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: removing 1.5 only article, article has been archived&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Portal:Platform|Joomla Platform Portal]] {{JVer|platform}}&lt;br /&gt;
* [[File Structure and Naming Conventions]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Component Program Flow]].  {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(UML sequence diagrams showing the control flow for a component.)&lt;br /&gt;
* [[Developing a MVC Component|Developing a Model-View-Controller Component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Manifest files]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(For the installation of extensions.)&lt;br /&gt;
* [[Adding sortable columns to a table in a component]] {{JVer/multi|1.5,2.5,3.x}}&lt;br /&gt;
* [[How to add custom filters to components]] {{JVer|2.5}}&lt;br /&gt;
* [[Supporting SEF URLs in your component]]&lt;br /&gt;
* [[Using the JHtmlTabs class in a component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Adding AJAX to your component]]&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[Sending email from extensions]]&lt;br /&gt;
* [[Using the JToolBar class in the frontend]]&lt;br /&gt;
* [[Creating a toolbar for your component]]&lt;br /&gt;
* [[Creating a file uploader in your component]]&lt;br /&gt;
* [[Creating Mootools accordion or simple slider/toggler]]&lt;br /&gt;
* [[Using a custom image in the menu bar title]]&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
* [[Using multiple models in an MVC component]]&lt;br /&gt;
* [[Adding ACL rules to your component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[JController and its subclass usage overview]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Managing Component Updates with Joomla!2.5 - Part 1]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Xml-rpc changes in Joomla! 2.5]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Creating PDF views]] {{JVer|2.5}}&amp;lt;noinclude&amp;gt;[[Category:Landing subpages|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* [[J3.1:Using Tags in an Extension|Using Tags in an Extension]] {{JVer|3.x}}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters</id>
		<title>J1.5:Adding view layout configuration parameters</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters"/>
				<updated>2013-05-23T19:08:17Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: −Category:Component Development; −Category:Parameters; −Category:Tutorials; +Category:Archived version Joomla! 1.5 using HotCat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
When creating views for a custom component, you can create a series of .xml files that will both describe the view and allow administrators to configure the view as they require.  The .xml files are used by the com_menu core component (ilink.php) to create the menu trees that are shown when an administrator creates a new menu item.  &lt;br /&gt;
&lt;br /&gt;
==View title and description==&lt;br /&gt;
First give a title and description to your view.  This is done by including a metadata.xml file in the view directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
        &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&amp;lt;![CDATA[CAST_VIEW_DESC]]&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/view&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 'title' element is shown as the 1st level entry under your component name when a new menu item is created.  The 'message' element is the descriptive tool tip that is shown when the mouse hovers over the 'title' element.  The example is using JText placeholders for the title and message.  Just add the corresponding tags to your language definition files.  You did create them didn't you?&lt;br /&gt;
&lt;br /&gt;
====Hiding a view from the menu====&lt;br /&gt;
If you don't want this view to be selectable for a new menu item, then add the hidden=&amp;quot;true&amp;quot; parameter to the view element (e.g. &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt;).  You can also hide a view by using an underscore '_' in the name.  Be careful with naming your views or you can spend hours trying to figure out why it doesn't appear in the new menu item tree!&lt;br /&gt;
&lt;br /&gt;
==Template names, description, parameters==&lt;br /&gt;
You can also create .xml files for the individual files in the tmpl folders.  This is a cool way to have a name other than 'default' show up in the new menu item tree.&lt;br /&gt;
Make sure that the name of the .xml file is the same as the name of your template file.  I.E. if your file name is default.php, then your xml file name is default.xml.  Its probably more productive to name your template files something other than default.  That way, when you have 10 of them open in your favorite IDE, you won't get totally confused as to which file you are editing.  That also avoids the nightmare of uploading the wrong file to the wrong directory!&lt;br /&gt;
&lt;br /&gt;
These will also be hidden by including an underscore '_' in their name. This is a bit of a gotcha. Also ensure the filenames for these and the layotus are in lower case. CamelCase does not work for these.&lt;br /&gt;
&lt;br /&gt;
Note:  To use a temp/layout file name other than 'default', pass a configuration array to the __construct function  parent in the view.html file.  EG:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	function __construct() 	{&lt;br /&gt;
		$config = array();&lt;br /&gt;
		$config['layout'] = 'bookslayout';&lt;br /&gt;
		parent::__construct($config);	&lt;br /&gt;
	} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .xml file for the template can be very simple with just a title and message or very complex with basic and/or advanced parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
	&amp;lt;layout title=&amp;quot;STANDARD_CATEGORY_LAYOUT&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&lt;br /&gt;
			&amp;lt;![CDATA[STANDARD_CATEGORY_LAYOUT DESC]]&amp;gt;&lt;br /&gt;
		&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/layout&amp;gt;&lt;br /&gt;
	&amp;lt;state&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;STANDARD_CATEGORY_LAYOUT&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;description&amp;gt;STANDARD_CATEGORY_LAYOUT_DESC&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;url&amp;gt;&lt;br /&gt;
		&amp;lt;/url&amp;gt;&lt;br /&gt;
		&amp;lt;params&amp;gt;&lt;br /&gt;
		&amp;lt;/params&amp;gt;&lt;br /&gt;
		&amp;lt;advanced&amp;gt;&lt;br /&gt;
		&amp;lt;/advanced&amp;gt;&lt;br /&gt;
	&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See components\com_content\views\frontpage\tmpl\default.xml, or components\com_content\views\section\tmpl\default.xml for examples of how to specify both basic and advanced parameters for your views.  See also [[J1.5:Standard parameter types|J1.5:Standard parameter types]] for information on defining parameters.&lt;br /&gt;
&lt;br /&gt;
You can also add the hidden=&amp;quot;true&amp;quot; to the layout element if you don't want this particular template file to be selected as a new menu item.&lt;br /&gt;
&lt;br /&gt;
==Final touches==&lt;br /&gt;
Remember to create JText language definitions for your titles and messages so they can be easily translated.  Have fun giving your views cool names and descriptions for that final bit of polish on your custom component!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Archived version Joomla! 1.5]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters</id>
		<title>J1.5:Adding view layout configuration parameters</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters"/>
				<updated>2013-05-23T19:07:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: /* See Also */ removing link to stub article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
When creating views for a custom component, you can create a series of .xml files that will both describe the view and allow administrators to configure the view as they require.  The .xml files are used by the com_menu core component (ilink.php) to create the menu trees that are shown when an administrator creates a new menu item.  &lt;br /&gt;
&lt;br /&gt;
==View title and description==&lt;br /&gt;
First give a title and description to your view.  This is done by including a metadata.xml file in the view directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
        &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&amp;lt;![CDATA[CAST_VIEW_DESC]]&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/view&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 'title' element is shown as the 1st level entry under your component name when a new menu item is created.  The 'message' element is the descriptive tool tip that is shown when the mouse hovers over the 'title' element.  The example is using JText placeholders for the title and message.  Just add the corresponding tags to your language definition files.  You did create them didn't you?&lt;br /&gt;
&lt;br /&gt;
====Hiding a view from the menu====&lt;br /&gt;
If you don't want this view to be selectable for a new menu item, then add the hidden=&amp;quot;true&amp;quot; parameter to the view element (e.g. &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt;).  You can also hide a view by using an underscore '_' in the name.  Be careful with naming your views or you can spend hours trying to figure out why it doesn't appear in the new menu item tree!&lt;br /&gt;
&lt;br /&gt;
==Template names, description, parameters==&lt;br /&gt;
You can also create .xml files for the individual files in the tmpl folders.  This is a cool way to have a name other than 'default' show up in the new menu item tree.&lt;br /&gt;
Make sure that the name of the .xml file is the same as the name of your template file.  I.E. if your file name is default.php, then your xml file name is default.xml.  Its probably more productive to name your template files something other than default.  That way, when you have 10 of them open in your favorite IDE, you won't get totally confused as to which file you are editing.  That also avoids the nightmare of uploading the wrong file to the wrong directory!&lt;br /&gt;
&lt;br /&gt;
These will also be hidden by including an underscore '_' in their name. This is a bit of a gotcha. Also ensure the filenames for these and the layotus are in lower case. CamelCase does not work for these.&lt;br /&gt;
&lt;br /&gt;
Note:  To use a temp/layout file name other than 'default', pass a configuration array to the __construct function  parent in the view.html file.  EG:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	function __construct() 	{&lt;br /&gt;
		$config = array();&lt;br /&gt;
		$config['layout'] = 'bookslayout';&lt;br /&gt;
		parent::__construct($config);	&lt;br /&gt;
	} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .xml file for the template can be very simple with just a title and message or very complex with basic and/or advanced parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
	&amp;lt;layout title=&amp;quot;STANDARD_CATEGORY_LAYOUT&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&lt;br /&gt;
			&amp;lt;![CDATA[STANDARD_CATEGORY_LAYOUT DESC]]&amp;gt;&lt;br /&gt;
		&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/layout&amp;gt;&lt;br /&gt;
	&amp;lt;state&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;STANDARD_CATEGORY_LAYOUT&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;description&amp;gt;STANDARD_CATEGORY_LAYOUT_DESC&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;url&amp;gt;&lt;br /&gt;
		&amp;lt;/url&amp;gt;&lt;br /&gt;
		&amp;lt;params&amp;gt;&lt;br /&gt;
		&amp;lt;/params&amp;gt;&lt;br /&gt;
		&amp;lt;advanced&amp;gt;&lt;br /&gt;
		&amp;lt;/advanced&amp;gt;&lt;br /&gt;
	&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See components\com_content\views\frontpage\tmpl\default.xml, or components\com_content\views\section\tmpl\default.xml for examples of how to specify both basic and advanced parameters for your views.  See also [[J1.5:Standard parameter types|J1.5:Standard parameter types]] for information on defining parameters.&lt;br /&gt;
&lt;br /&gt;
You can also add the hidden=&amp;quot;true&amp;quot; to the layout element if you don't want this particular template file to be selected as a new menu item.&lt;br /&gt;
&lt;br /&gt;
==Final touches==&lt;br /&gt;
Remember to create JText language definitions for your titles and messages so they can be easily translated.  Have fun giving your views cool names and descriptions for that final bit of polish on your custom component!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Parameters]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Adding_view_layout_configuration_parameters</id>
		<title>Adding view layout configuration parameters</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Adding_view_layout_configuration_parameters"/>
				<updated>2013-05-23T19:03:01Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Adding view layout configuration parameters to J1.5:Adding view layout configuration parameters: namespacing for archiving&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J1.5:Adding view layout configuration parameters]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters</id>
		<title>J1.5:Adding view layout configuration parameters</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters"/>
				<updated>2013-05-23T19:03:01Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Adding view layout configuration parameters to J1.5:Adding view layout configuration parameters: namespacing for archiving&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
When creating views for a custom component, you can create a series of .xml files that will both describe the view and allow administrators to configure the view as they require.  The .xml files are used by the com_menu core component (ilink.php) to create the menu trees that are shown when an administrator creates a new menu item.  &lt;br /&gt;
&lt;br /&gt;
==View title and description==&lt;br /&gt;
First give a title and description to your view.  This is done by including a metadata.xml file in the view directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
        &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&amp;lt;![CDATA[CAST_VIEW_DESC]]&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/view&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 'title' element is shown as the 1st level entry under your component name when a new menu item is created.  The 'message' element is the descriptive tool tip that is shown when the mouse hovers over the 'title' element.  The example is using JText placeholders for the title and message.  Just add the corresponding tags to your language definition files.  You did create them didn't you?&lt;br /&gt;
&lt;br /&gt;
====Hiding a view from the menu====&lt;br /&gt;
If you don't want this view to be selectable for a new menu item, then add the hidden=&amp;quot;true&amp;quot; parameter to the view element (e.g. &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt;).  You can also hide a view by using an underscore '_' in the name.  Be careful with naming your views or you can spend hours trying to figure out why it doesn't appear in the new menu item tree!&lt;br /&gt;
&lt;br /&gt;
==Template names, description, parameters==&lt;br /&gt;
You can also create .xml files for the individual files in the tmpl folders.  This is a cool way to have a name other than 'default' show up in the new menu item tree.&lt;br /&gt;
Make sure that the name of the .xml file is the same as the name of your template file.  I.E. if your file name is default.php, then your xml file name is default.xml.  Its probably more productive to name your template files something other than default.  That way, when you have 10 of them open in your favorite IDE, you won't get totally confused as to which file you are editing.  That also avoids the nightmare of uploading the wrong file to the wrong directory!&lt;br /&gt;
&lt;br /&gt;
These will also be hidden by including an underscore '_' in their name. This is a bit of a gotcha. Also ensure the filenames for these and the layotus are in lower case. CamelCase does not work for these.&lt;br /&gt;
&lt;br /&gt;
Note:  To use a temp/layout file name other than 'default', pass a configuration array to the __construct function  parent in the view.html file.  EG:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	function __construct() 	{&lt;br /&gt;
		$config = array();&lt;br /&gt;
		$config['layout'] = 'bookslayout';&lt;br /&gt;
		parent::__construct($config);	&lt;br /&gt;
	} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .xml file for the template can be very simple with just a title and message or very complex with basic and/or advanced parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
	&amp;lt;layout title=&amp;quot;STANDARD_CATEGORY_LAYOUT&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&lt;br /&gt;
			&amp;lt;![CDATA[STANDARD_CATEGORY_LAYOUT DESC]]&amp;gt;&lt;br /&gt;
		&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/layout&amp;gt;&lt;br /&gt;
	&amp;lt;state&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;STANDARD_CATEGORY_LAYOUT&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;description&amp;gt;STANDARD_CATEGORY_LAYOUT_DESC&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;url&amp;gt;&lt;br /&gt;
		&amp;lt;/url&amp;gt;&lt;br /&gt;
		&amp;lt;params&amp;gt;&lt;br /&gt;
		&amp;lt;/params&amp;gt;&lt;br /&gt;
		&amp;lt;advanced&amp;gt;&lt;br /&gt;
		&amp;lt;/advanced&amp;gt;&lt;br /&gt;
	&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See components\com_content\views\frontpage\tmpl\default.xml, or components\com_content\views\section\tmpl\default.xml for examples of how to specify both basic and advanced parameters for your views.  See also [[J1.5:Standard parameter types|J1.5:Standard parameter types]] for information on defining parameters.&lt;br /&gt;
&lt;br /&gt;
You can also add the hidden=&amp;quot;true&amp;quot; to the layout element if you don't want this particular template file to be selected as a new menu item.&lt;br /&gt;
&lt;br /&gt;
==Final touches==&lt;br /&gt;
Remember to create JText language definitions for your titles and messages so they can be easily translated.  Have fun giving your views cool names and descriptions for that final bit of polish on your custom component!&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Component Views and Templates]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Parameters]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters</id>
		<title>J1.5:Adding view layout configuration parameters</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Adding_view_layout_configuration_parameters"/>
				<updated>2013-05-23T19:02:32Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: /* Template names, description, parameters */ preparing to archive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
When creating views for a custom component, you can create a series of .xml files that will both describe the view and allow administrators to configure the view as they require.  The .xml files are used by the com_menu core component (ilink.php) to create the menu trees that are shown when an administrator creates a new menu item.  &lt;br /&gt;
&lt;br /&gt;
==View title and description==&lt;br /&gt;
First give a title and description to your view.  This is done by including a metadata.xml file in the view directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
        &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&amp;lt;![CDATA[CAST_VIEW_DESC]]&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/view&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 'title' element is shown as the 1st level entry under your component name when a new menu item is created.  The 'message' element is the descriptive tool tip that is shown when the mouse hovers over the 'title' element.  The example is using JText placeholders for the title and message.  Just add the corresponding tags to your language definition files.  You did create them didn't you?&lt;br /&gt;
&lt;br /&gt;
====Hiding a view from the menu====&lt;br /&gt;
If you don't want this view to be selectable for a new menu item, then add the hidden=&amp;quot;true&amp;quot; parameter to the view element (e.g. &amp;lt;view title=&amp;quot;CAST_VIEW&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt;).  You can also hide a view by using an underscore '_' in the name.  Be careful with naming your views or you can spend hours trying to figure out why it doesn't appear in the new menu item tree!&lt;br /&gt;
&lt;br /&gt;
==Template names, description, parameters==&lt;br /&gt;
You can also create .xml files for the individual files in the tmpl folders.  This is a cool way to have a name other than 'default' show up in the new menu item tree.&lt;br /&gt;
Make sure that the name of the .xml file is the same as the name of your template file.  I.E. if your file name is default.php, then your xml file name is default.xml.  Its probably more productive to name your template files something other than default.  That way, when you have 10 of them open in your favorite IDE, you won't get totally confused as to which file you are editing.  That also avoids the nightmare of uploading the wrong file to the wrong directory!&lt;br /&gt;
&lt;br /&gt;
These will also be hidden by including an underscore '_' in their name. This is a bit of a gotcha. Also ensure the filenames for these and the layotus are in lower case. CamelCase does not work for these.&lt;br /&gt;
&lt;br /&gt;
Note:  To use a temp/layout file name other than 'default', pass a configuration array to the __construct function  parent in the view.html file.  EG:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	function __construct() 	{&lt;br /&gt;
		$config = array();&lt;br /&gt;
		$config['layout'] = 'bookslayout';&lt;br /&gt;
		parent::__construct($config);	&lt;br /&gt;
	} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .xml file for the template can be very simple with just a title and message or very complex with basic and/or advanced parameters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
	&amp;lt;layout title=&amp;quot;STANDARD_CATEGORY_LAYOUT&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;&lt;br /&gt;
			&amp;lt;![CDATA[STANDARD_CATEGORY_LAYOUT DESC]]&amp;gt;&lt;br /&gt;
		&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/layout&amp;gt;&lt;br /&gt;
	&amp;lt;state&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;STANDARD_CATEGORY_LAYOUT&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;description&amp;gt;STANDARD_CATEGORY_LAYOUT_DESC&amp;lt;/description&amp;gt;&lt;br /&gt;
		&amp;lt;url&amp;gt;&lt;br /&gt;
		&amp;lt;/url&amp;gt;&lt;br /&gt;
		&amp;lt;params&amp;gt;&lt;br /&gt;
		&amp;lt;/params&amp;gt;&lt;br /&gt;
		&amp;lt;advanced&amp;gt;&lt;br /&gt;
		&amp;lt;/advanced&amp;gt;&lt;br /&gt;
	&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See components\com_content\views\frontpage\tmpl\default.xml, or components\com_content\views\section\tmpl\default.xml for examples of how to specify both basic and advanced parameters for your views.  See also [[J1.5:Standard parameter types|J1.5:Standard parameter types]] for information on defining parameters.&lt;br /&gt;
&lt;br /&gt;
You can also add the hidden=&amp;quot;true&amp;quot; to the layout element if you don't want this particular template file to be selected as a new menu item.&lt;br /&gt;
&lt;br /&gt;
==Final touches==&lt;br /&gt;
Remember to create JText language definitions for your titles and messages so they can be easily translated.  Have fun giving your views cool names and descriptions for that final bit of polish on your custom component!&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Component Views and Templates]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Parameters]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Component_Development/Reading_list</id>
		<title>Component Development/Reading list</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Component_Development/Reading_list"/>
				<updated>2013-05-23T18:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: removing 1.5 only article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Portal:Platform|Joomla Platform Portal]] {{JVer|platform}}&lt;br /&gt;
* [[File Structure and Naming Conventions]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Component Program Flow]].  {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(UML sequence diagrams showing the control flow for a component.)&lt;br /&gt;
* [[Developing a MVC Component|Developing a Model-View-Controller Component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Manifest files]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
:(For the installation of extensions.)&lt;br /&gt;
* [[Adding sortable columns to a table in a component]] {{JVer/multi|1.5,2.5,3.x}}&lt;br /&gt;
* [[How to add custom filters to components]] {{JVer|2.5}}&lt;br /&gt;
* [[Supporting SEF URLs in your component]]&lt;br /&gt;
* [[Using the JHtmlTabs class in a component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Adding AJAX to your component]]&lt;br /&gt;
* [[How to add breadcrumbs]]&lt;br /&gt;
* [[Sending email from extensions]]&lt;br /&gt;
* [[Using the JToolBar class in the frontend]]&lt;br /&gt;
* [[Creating a toolbar for your component]]&lt;br /&gt;
* [[Creating a file uploader in your component]]&lt;br /&gt;
* [[Creating Mootools accordion or simple slider/toggler]]&lt;br /&gt;
* [[Adding view layout configuration parameters]]&lt;br /&gt;
* [[Using a custom image in the menu bar title]]&lt;br /&gt;
* [[How to implement XML-RPC in a component]]&lt;br /&gt;
* [[Using multiple models in an MVC component]]&lt;br /&gt;
* [[Adding ACL rules to your component]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[JController and its subclass usage overview]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Managing Component Updates with Joomla!2.5 - Part 1]] {{JVer/multi|2.5}}&lt;br /&gt;
* [[Xml-rpc changes in Joomla! 2.5]] {{JVer/multi|2.5,3.x}}&lt;br /&gt;
* [[Creating PDF views]] {{JVer|2.5}}&amp;lt;noinclude&amp;gt;[[Category:Landing subpages|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* [[J3.1:Using Tags in an Extension|Using Tags in an Extension]] {{JVer|3.x}}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Using_the_editor_in_a_component</id>
		<title>J1.5:Using the editor in a component</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Using_the_editor_in_a_component"/>
				<updated>2013-05-23T18:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: −Category:Development; −Category:Component Development; −Category:Tutorials; +Category:Archived version Joomla! 1.5 using HotCat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|1.5}}&lt;br /&gt;
{{notice|This article applies to Joomla! 1.5 only as Joomla! 1.6 uses [[Form_field|Form Fields]].}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
To get some interaction with the visitors of your website your visitors need to be able to add some content.&lt;br /&gt;
&lt;br /&gt;
This article will show you how visitors can add some data using a rich text editor.&lt;br /&gt;
&lt;br /&gt;
Lets start with the component created in the article [[Developing_a_Model-View-Controller_Component/1.5/Creating_an_Administrator_Interface|Joomla 1.5 Component Development Tutorial: Part 4]] which lets the administrator add new entries to the database.&lt;br /&gt;
The component can be downloaded at: [http://joomlacode.org/gf/download/frsrelease/8111/29436/com_hello4_01.zip com_hello4_01]. If you haven't done already, install this component on your developing website and create a menu link to this component.&lt;br /&gt;
&lt;br /&gt;
== Expand the data model ==&lt;br /&gt;
&lt;br /&gt;
The model used in the tutorial can only hold a text of 25 characters. Lets add a new field which can be used to hold a lot more text, so we can save the editor contents.&lt;br /&gt;
&lt;br /&gt;
Use your favorite tool to access the php database and open the jos_hello tabel in your joomla database. Add a new field to this table and add some intial text  into it by running this SQL statement:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;ALTER TABLE `jos_hello` ADD `content` TEXT NOT NULL ;&lt;br /&gt;
UPDATE jos_hello SET content = '&amp;lt;p&amp;gt;The A &amp;quot;hello world&amp;quot; program is a computer program that prints out &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
 on a display device. It is used in many introductory tutorials for teaching a programming language. Such a program is typically one&lt;br /&gt;
 of the simplest programs possible in a computer language. Some are surprisingly complex, especially in some graphical user interface (GUI)&lt;br /&gt;
 contexts, but most are very simple, especially those which rely heavily on a particular command line interpreter (&amp;quot;shell&amp;quot;) to perform the&lt;br /&gt;
 actual output. In many embedded systems, the text may be sent to a one or two-line liquid crystal display (LCD), or some other appropriate&lt;br /&gt;
 signal, such as a LED being turned on, may substitute for the message.&amp;lt;p&amp;gt;' WHERE `jos_hello`.`id` = 1&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have to change the table definition accordingly. Open the table definition stored in the file administrator/components/com_hello/tables/hello.php and add the new field as a variable below the current ones:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;var $greeting = null;&lt;br /&gt;
var $content = null;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Show the new field on the front end ==&lt;br /&gt;
&lt;br /&gt;
To show the new content we must:&lt;br /&gt;
* Change the model to read the field from the database&lt;br /&gt;
* Change the view to pass the value of the field into the template&lt;br /&gt;
* Change the template to actually show the text&lt;br /&gt;
&lt;br /&gt;
The model was stored in the file: components/com_hello/models/hello.php&amp;lt;br /&amp;gt;&lt;br /&gt;
We must change the query to get the new field from the database. The loadResult method only retrieves the first field of the record, so we change this in loadObject to get the data into an object.&lt;br /&gt;
Our new getGreeting() method will therefore look like:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function getGreeting()&lt;br /&gt;
{&lt;br /&gt;
	$db = JFactory::getDBO();&lt;br /&gt;
&lt;br /&gt;
	$query = 'SELECT * FROM #__hello';&lt;br /&gt;
	$db-&amp;gt;setQuery( $query );&lt;br /&gt;
	$greeting = $db-&amp;gt;loadObject();&lt;br /&gt;
&lt;br /&gt;
	return $greeting;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The view was stored in the file: components/com_hello/views/hello/view.html.php&amp;lt;br /&amp;gt;&lt;br /&gt;
As a reminder: The view pulls the data from the model and fees the data into the template&amp;lt;br /&amp;gt;&lt;br /&gt;
Because the output of the model is now an object instead of just text, we change the line which assigns the greeting to the template to only assign the greeting text of the object. We add similars line to assign the id and content to the template.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function display($tpl = null)&lt;br /&gt;
{&lt;br /&gt;
	$greeting = $this-&amp;gt;get( 'Greeting' );&lt;br /&gt;
	$this-&amp;gt;assignRef( 'greeting',	$greeting-&amp;gt;greeting );&lt;br /&gt;
	$this-&amp;gt;assignRef( 'id',		$greeting-&amp;gt;id );&lt;br /&gt;
	$this-&amp;gt;assignRef( 'content',	$greeting-&amp;gt;content );&lt;br /&gt;
		&lt;br /&gt;
	parent::display($tpl);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we will change the template in components/com_hello/views/hello/tmpl/default.php to become:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php // no direct access&lt;br /&gt;
defined('_JEXEC') or die('Restricted access'); ?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;greeting; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;content; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now refresh your frontend site and you should see the added content.&lt;br /&gt;
&lt;br /&gt;
== Edit form ==&lt;br /&gt;
&lt;br /&gt;
To edit the current record we must:&lt;br /&gt;
* Add a link to the edit form&lt;br /&gt;
* Add a new template to edit the data&lt;br /&gt;
* Save the data&lt;br /&gt;
&lt;br /&gt;
Creating a link to the edit form can be done in the template directly. But to keep the template nice and simple we will build the link in the view and pass in onto the template for displaying. Add this line to the view:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$this-&amp;gt;assignRef( 'editlink',	JRoute::_('index.php?option=com_hello&amp;amp;view=hello&amp;amp;task=edit') );&amp;lt;/source&amp;gt;&lt;br /&gt;
And add these lines to the template:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $this-&amp;gt;editlink; ?&amp;gt;&amp;quot;&amp;gt;Edit&amp;lt;/a&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your template doesn't already include a reference to the library includes/js/joomla.javascript.js it has to be included at this moment. This can be done by adding the following two lines to view.html.php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$document = JFactory::getDocument();&lt;br /&gt;
$document-&amp;gt;addScript('includes/js/joomla.javascript.js');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ''task=edit'' in the url triggers the edit function in the controller. So let's add this method to our controller:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;/**&lt;br /&gt;
* Method to call the edit form&lt;br /&gt;
*/&lt;br /&gt;
function edit()&lt;br /&gt;
{&lt;br /&gt;
	JRequest::setVar( 'layout', 'form' );&lt;br /&gt;
	parent::display();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
Before adding the model to the view, we change the layout to our edit form.&lt;br /&gt;
&lt;br /&gt;
Of course we have to provide this form. Create the file components/com_hello/views/hello/tmpl/form.php:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php defined('_JEXEC') or die('Restricted access'); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;index.php&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col100&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_( 'Details' ); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;table class=&amp;quot;admintable&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td width=&amp;quot;100&amp;quot; align=&amp;quot;right&amp;quot; class=&amp;quot;key&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;greeting&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;?php echo JText::_( 'Greeting' ); ?&amp;gt;:&lt;br /&gt;
				&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&lt;br /&gt;
				&amp;lt;input class=&amp;quot;text_area&amp;quot; type=&amp;quot;text&amp;quot; name=&amp;quot;greeting&amp;quot; id=&amp;quot;greeting&amp;quot; size=&amp;quot;25&amp;quot; maxlength=&amp;quot;25&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;greeting;?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td width=&amp;quot;100&amp;quot; align=&amp;quot;right&amp;quot; class=&amp;quot;key&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;?php echo JText::_( 'Content' ); ?&amp;gt;:&lt;br /&gt;
				&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&lt;br /&gt;
				&amp;lt;?php&lt;br /&gt;
					$editor = JFactory::getEditor();&lt;br /&gt;
					echo $editor-&amp;gt;display('content', $this-&amp;gt;content, '550', '400', '60', '20', false);&lt;br /&gt;
				?&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;clr&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_hello&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;id&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;id; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;save&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;controller&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Most of this is just like the form of the backend. The important addition in this form is how we call the editor:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$editor = JFactory::getEditor();&lt;br /&gt;
echo $editor-&amp;gt;display('content', $this-&amp;gt;content, '550', '400', '60', '20', false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters of the display method are:&lt;br /&gt;
    * string $name: The control name&lt;br /&gt;
    * string $html: The contents of the text area&lt;br /&gt;
    * string $width: The width of the text area (px or %)&lt;br /&gt;
    * string $height: The height of the text area (px or %)&lt;br /&gt;
    * int $col: The number of columns for the textarea&lt;br /&gt;
    * int $row: The number of rows for the textarea&lt;br /&gt;
    * boolean $buttons: True and the editor buttons will be displayed&lt;br /&gt;
    * array $params: Associative array of editor parameters&lt;br /&gt;
&lt;br /&gt;
Refresh your browser and the edit link will show. Use the link to open the edit form including the editor.&lt;br /&gt;
&lt;br /&gt;
== Save the data ==&lt;br /&gt;
&lt;br /&gt;
Next we need to add the save and cancel buttons and for some extra security we add a token to the form.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php echo JHTML::_( 'form.token' ); ?&amp;gt;&lt;br /&gt;
&amp;lt;button type=&amp;quot;button&amp;quot; onclick=&amp;quot;submitbutton('save')&amp;quot;&amp;gt;&amp;lt;?php echo JText::_('Save') ?&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;button type=&amp;quot;button&amp;quot; onclick=&amp;quot;submitbutton('cancel')&amp;quot;&amp;gt;&amp;lt;?php echo JText::_('Cancel') ?&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The buttons call some javascript which is added on the top of the form file after the first line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
function submitbutton(pressbutton) {&lt;br /&gt;
	var form = document.adminForm;&lt;br /&gt;
	if (pressbutton == 'cancel') {&lt;br /&gt;
		submitform( pressbutton );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php&lt;br /&gt;
		$editor = JFactory::getEditor();&lt;br /&gt;
		echo $editor-&amp;gt;save( 'content' );&lt;br /&gt;
	?&amp;gt;&lt;br /&gt;
	submitform(pressbutton);&lt;br /&gt;
}&lt;br /&gt;
//--&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the form we added the hidden field task with a value of save. This will trigger the save method inside the controller. So lets create this method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function save()&lt;br /&gt;
{&lt;br /&gt;
	// Check for request forgeries&lt;br /&gt;
	JRequest::checkToken() or jexit( 'Invalid Token' );&lt;br /&gt;
    	&lt;br /&gt;
	// get the model&lt;br /&gt;
	$model = $this-&amp;gt;getModel();&lt;br /&gt;
        &lt;br /&gt;
	//get data from request&lt;br /&gt;
	$post = JRequest::get('post');&lt;br /&gt;
	$post['content'] = JRequest::getVar('content', '', 'post', 'string', JREQUEST_ALLOWRAW);&lt;br /&gt;
        &lt;br /&gt;
	// let the model save it&lt;br /&gt;
	if ($model-&amp;gt;store($post)) {&lt;br /&gt;
		$message = JText::_('Success');&lt;br /&gt;
	} else {&lt;br /&gt;
		$message = JText::_('Error while saving');&lt;br /&gt;
		$message .= ' ['.$model-&amp;gt;getError().'] ';&lt;br /&gt;
	}&lt;br /&gt;
	$this-&amp;gt;setRedirect('index.php?option=com_hello', $message);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
The standard way of getting the form data ''$post = JRequest::get('post');'' is not enough in the case of using a editor. This will filter the content, hence losing line breaks and paragraps. So we add an extra line to get the editor contents in a raw unfiltered way. This data will be passed to the model to save into the database.&lt;br /&gt;
&lt;br /&gt;
The store method in the model is now straightforward:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function store($data)&lt;br /&gt;
{&lt;br /&gt;
	// get the table&lt;br /&gt;
	$row = $this-&amp;gt;getTable();&lt;br /&gt;
                &lt;br /&gt;
	// Bind the form fields to the hello table&lt;br /&gt;
	if (!$row-&amp;gt;bind($data)) {&lt;br /&gt;
		$this-&amp;gt;setError($this-&amp;gt;_db-&amp;gt;getErrorMsg());&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	// Make sure the hello record is valid&lt;br /&gt;
	if (!$row-&amp;gt;check()) {&lt;br /&gt;
		$this-&amp;gt;setError($this-&amp;gt;_db-&amp;gt;getErrorMsg());&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Store the web link table to the database&lt;br /&gt;
	if (!$row-&amp;gt;store()) {&lt;br /&gt;
		$this-&amp;gt;setError( $row-&amp;gt;getErrorMsg() );&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	return true;         &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now try this on your website. You should be able to change the greeting and the contents.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
The component can be downloaded from: [http://help.joomla.org/files/com_hello5_01.zip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt; &amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Archived version Joomla! 1.5]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Talk:Using_the_editor_in_a_component</id>
		<title>Talk:Using the editor in a component</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Talk:Using_the_editor_in_a_component"/>
				<updated>2013-05-23T18:58:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Talk:Using the editor in a component to J1.5 talk:Using the editor in a component: namespacing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J1.5 talk:Using the editor in a component]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5_talk:Using_the_editor_in_a_component</id>
		<title>J1.5 talk:Using the editor in a component</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5_talk:Using_the_editor_in_a_component"/>
				<updated>2013-05-23T18:58:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Talk:Using the editor in a component to J1.5 talk:Using the editor in a component: namespacing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I used a test site and implemented the editor in the frontend.  The edit and display functions worked fine however the Save and Cancel do not execute anything.  The Save and Cancel buttons that have been added to the form call a javascript function submitbutton.  The submitbutton is executed however the documentation states that the editor's save method will trigger the save function in the controller which in turn calls the model's store method.  This is not actually true.  I am new to Joomla development so I thought maybe I typed it in wrong so I downloaded the completed example and it does not work either.  The editor's save method does not trigger the controller which I believe is necessary.  SO I think in order to make it work you need to trigger the controller directly from the button and bypass the javascript -submitbutton. I haven't tried it yet so if there any other suggestions.  That would be great.&lt;br /&gt;
&lt;br /&gt;
== The tutorial is not complete ==&lt;br /&gt;
&lt;br /&gt;
Well what is happening is the following. The person who wrote the tutorial forgot one thing. &lt;br /&gt;
&lt;br /&gt;
In order to use the proposed javascripts the library file /includes/js/joomla.javascript.js had to be included. This is standard in de Joomla backend but not in many frontend templates. &lt;br /&gt;
&lt;br /&gt;
You have to manually add the following. This can for example be done view.html.php&lt;br /&gt;
$document =&amp;amp; JFactory::getDocument();&lt;br /&gt;
$document-&amp;gt;addScript('includes/js/joomla.javascript.js');&lt;br /&gt;
&lt;br /&gt;
I have modified the tutorial but I at this point I don't know how to replace the included download files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Possible Problems/Pitfalls ==&lt;br /&gt;
When following this HowTo, I encountered these problems:&lt;br /&gt;
* The string &amp;quot;description&amp;quot; for one reason or the other doesn't seem to work as editor name. In the javascript created by the editor component for saving the editor content, using &amp;quot;description&amp;quot; leads to a javascript error (tinymce.get('description') is undefined). Another, (shorter?) name (desc) worked fine. I didn't check whether it was the length, or if the string itself has some significance...&lt;br /&gt;
* The user I tried it with first had CodeMirror configured as its default editor; with that it didn't work, I wrote about what the result looks like here (http://forum.joomla.org/viewtopic.php?f=620&amp;amp;t=644689&amp;amp;p=2604202#p2604202)&lt;br /&gt;
* My component is running under Joomla 1.7, here the script (includes/js/joomla.javascript.js) include doesn't seem to be necessary anymore&lt;br /&gt;
* The input filtering stuff doesn't work the way I expected; when doing the following, the database afterwards still holds an encoded string (e.g. &amp;amp;gt; for &amp;gt;), instead of the &amp;quot;raw&amp;quot; html string, meaning I have to convert it back when displaying it (funnily enough I can just pass that string to the editor and it will show it formatted again, so it seems to do the back-converting by itself)&lt;br /&gt;
 $post['content'] = JRequest::getVar('content', '', 'post', 'string', JREQUEST_ALLOWRAW);&lt;br /&gt;
[[User:Munchkin|Munchkin]] 07:25, 2 September 2011 (CDT)&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Using_the_editor_in_a_component</id>
		<title>Using the editor in a component</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Using_the_editor_in_a_component"/>
				<updated>2013-05-23T18:58:35Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Using the editor in a component to J1.5:Using the editor in a component: namespacing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J1.5:Using the editor in a component]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Using_the_editor_in_a_component</id>
		<title>J1.5:Using the editor in a component</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Using_the_editor_in_a_component"/>
				<updated>2013-05-23T18:58:35Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: Hutchy68 moved page Using the editor in a component to J1.5:Using the editor in a component: namespacing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|1.5}}&lt;br /&gt;
{{notice|This article applies to Joomla! 1.5 only as Joomla! 1.6 uses [[Form_field|Form Fields]].}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
To get some interaction with the visitors of your website your visitors need to be able to add some content.&lt;br /&gt;
&lt;br /&gt;
This article will show you how visitors can add some data using a rich text editor.&lt;br /&gt;
&lt;br /&gt;
Lets start with the component created in the article [[Developing_a_Model-View-Controller_Component/1.5/Creating_an_Administrator_Interface|Joomla 1.5 Component Development Tutorial: Part 4]] which lets the administrator add new entries to the database.&lt;br /&gt;
The component can be downloaded at: [http://joomlacode.org/gf/download/frsrelease/8111/29436/com_hello4_01.zip com_hello4_01]. If you haven't done already, install this component on your developing website and create a menu link to this component.&lt;br /&gt;
&lt;br /&gt;
== Expand the data model ==&lt;br /&gt;
&lt;br /&gt;
The model used in the tutorial can only hold a text of 25 characters. Lets add a new field which can be used to hold a lot more text, so we can save the editor contents.&lt;br /&gt;
&lt;br /&gt;
Use your favorite tool to access the php database and open the jos_hello tabel in your joomla database. Add a new field to this table and add some intial text  into it by running this SQL statement:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;ALTER TABLE `jos_hello` ADD `content` TEXT NOT NULL ;&lt;br /&gt;
UPDATE jos_hello SET content = '&amp;lt;p&amp;gt;The A &amp;quot;hello world&amp;quot; program is a computer program that prints out &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
 on a display device. It is used in many introductory tutorials for teaching a programming language. Such a program is typically one&lt;br /&gt;
 of the simplest programs possible in a computer language. Some are surprisingly complex, especially in some graphical user interface (GUI)&lt;br /&gt;
 contexts, but most are very simple, especially those which rely heavily on a particular command line interpreter (&amp;quot;shell&amp;quot;) to perform the&lt;br /&gt;
 actual output. In many embedded systems, the text may be sent to a one or two-line liquid crystal display (LCD), or some other appropriate&lt;br /&gt;
 signal, such as a LED being turned on, may substitute for the message.&amp;lt;p&amp;gt;' WHERE `jos_hello`.`id` = 1&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have to change the table definition accordingly. Open the table definition stored in the file administrator/components/com_hello/tables/hello.php and add the new field as a variable below the current ones:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;var $greeting = null;&lt;br /&gt;
var $content = null;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Show the new field on the front end ==&lt;br /&gt;
&lt;br /&gt;
To show the new content we must:&lt;br /&gt;
* Change the model to read the field from the database&lt;br /&gt;
* Change the view to pass the value of the field into the template&lt;br /&gt;
* Change the template to actually show the text&lt;br /&gt;
&lt;br /&gt;
The model was stored in the file: components/com_hello/models/hello.php&amp;lt;br /&amp;gt;&lt;br /&gt;
We must change the query to get the new field from the database. The loadResult method only retrieves the first field of the record, so we change this in loadObject to get the data into an object.&lt;br /&gt;
Our new getGreeting() method will therefore look like:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function getGreeting()&lt;br /&gt;
{&lt;br /&gt;
	$db = JFactory::getDBO();&lt;br /&gt;
&lt;br /&gt;
	$query = 'SELECT * FROM #__hello';&lt;br /&gt;
	$db-&amp;gt;setQuery( $query );&lt;br /&gt;
	$greeting = $db-&amp;gt;loadObject();&lt;br /&gt;
&lt;br /&gt;
	return $greeting;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The view was stored in the file: components/com_hello/views/hello/view.html.php&amp;lt;br /&amp;gt;&lt;br /&gt;
As a reminder: The view pulls the data from the model and fees the data into the template&amp;lt;br /&amp;gt;&lt;br /&gt;
Because the output of the model is now an object instead of just text, we change the line which assigns the greeting to the template to only assign the greeting text of the object. We add similars line to assign the id and content to the template.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function display($tpl = null)&lt;br /&gt;
{&lt;br /&gt;
	$greeting = $this-&amp;gt;get( 'Greeting' );&lt;br /&gt;
	$this-&amp;gt;assignRef( 'greeting',	$greeting-&amp;gt;greeting );&lt;br /&gt;
	$this-&amp;gt;assignRef( 'id',		$greeting-&amp;gt;id );&lt;br /&gt;
	$this-&amp;gt;assignRef( 'content',	$greeting-&amp;gt;content );&lt;br /&gt;
		&lt;br /&gt;
	parent::display($tpl);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally we will change the template in components/com_hello/views/hello/tmpl/default.php to become:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php // no direct access&lt;br /&gt;
defined('_JEXEC') or die('Restricted access'); ?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;greeting; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;content; ?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now refresh your frontend site and you should see the added content.&lt;br /&gt;
&lt;br /&gt;
== Edit form ==&lt;br /&gt;
&lt;br /&gt;
To edit the current record we must:&lt;br /&gt;
* Add a link to the edit form&lt;br /&gt;
* Add a new template to edit the data&lt;br /&gt;
* Save the data&lt;br /&gt;
&lt;br /&gt;
Creating a link to the edit form can be done in the template directly. But to keep the template nice and simple we will build the link in the view and pass in onto the template for displaying. Add this line to the view:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$this-&amp;gt;assignRef( 'editlink',	JRoute::_('index.php?option=com_hello&amp;amp;view=hello&amp;amp;task=edit') );&amp;lt;/source&amp;gt;&lt;br /&gt;
And add these lines to the template:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $this-&amp;gt;editlink; ?&amp;gt;&amp;quot;&amp;gt;Edit&amp;lt;/a&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your template doesn't already include a reference to the library includes/js/joomla.javascript.js it has to be included at this moment. This can be done by adding the following two lines to view.html.php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$document = JFactory::getDocument();&lt;br /&gt;
$document-&amp;gt;addScript('includes/js/joomla.javascript.js');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ''task=edit'' in the url triggers the edit function in the controller. So let's add this method to our controller:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;/**&lt;br /&gt;
* Method to call the edit form&lt;br /&gt;
*/&lt;br /&gt;
function edit()&lt;br /&gt;
{&lt;br /&gt;
	JRequest::setVar( 'layout', 'form' );&lt;br /&gt;
	parent::display();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
Before adding the model to the view, we change the layout to our edit form.&lt;br /&gt;
&lt;br /&gt;
Of course we have to provide this form. Create the file components/com_hello/views/hello/tmpl/form.php:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php defined('_JEXEC') or die('Restricted access'); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;index.php&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;col100&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_( 'Details' ); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;table class=&amp;quot;admintable&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td width=&amp;quot;100&amp;quot; align=&amp;quot;right&amp;quot; class=&amp;quot;key&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;greeting&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;?php echo JText::_( 'Greeting' ); ?&amp;gt;:&lt;br /&gt;
				&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&lt;br /&gt;
				&amp;lt;input class=&amp;quot;text_area&amp;quot; type=&amp;quot;text&amp;quot; name=&amp;quot;greeting&amp;quot; id=&amp;quot;greeting&amp;quot; size=&amp;quot;25&amp;quot; maxlength=&amp;quot;25&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;greeting;?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td width=&amp;quot;100&amp;quot; align=&amp;quot;right&amp;quot; class=&amp;quot;key&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;label for=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;?php echo JText::_( 'Content' ); ?&amp;gt;:&lt;br /&gt;
				&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&lt;br /&gt;
				&amp;lt;?php&lt;br /&gt;
					$editor = JFactory::getEditor();&lt;br /&gt;
					echo $editor-&amp;gt;display('content', $this-&amp;gt;content, '550', '400', '60', '20', false);&lt;br /&gt;
				?&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/tr&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;clr&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_hello&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;id&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;id; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;save&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;controller&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Most of this is just like the form of the backend. The important addition in this form is how we call the editor:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$editor = JFactory::getEditor();&lt;br /&gt;
echo $editor-&amp;gt;display('content', $this-&amp;gt;content, '550', '400', '60', '20', false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters of the display method are:&lt;br /&gt;
    * string $name: The control name&lt;br /&gt;
    * string $html: The contents of the text area&lt;br /&gt;
    * string $width: The width of the text area (px or %)&lt;br /&gt;
    * string $height: The height of the text area (px or %)&lt;br /&gt;
    * int $col: The number of columns for the textarea&lt;br /&gt;
    * int $row: The number of rows for the textarea&lt;br /&gt;
    * boolean $buttons: True and the editor buttons will be displayed&lt;br /&gt;
    * array $params: Associative array of editor parameters&lt;br /&gt;
&lt;br /&gt;
Refresh your browser and the edit link will show. Use the link to open the edit form including the editor.&lt;br /&gt;
&lt;br /&gt;
== Save the data ==&lt;br /&gt;
&lt;br /&gt;
Next we need to add the save and cancel buttons and for some extra security we add a token to the form.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php echo JHTML::_( 'form.token' ); ?&amp;gt;&lt;br /&gt;
&amp;lt;button type=&amp;quot;button&amp;quot; onclick=&amp;quot;submitbutton('save')&amp;quot;&amp;gt;&amp;lt;?php echo JText::_('Save') ?&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;button type=&amp;quot;button&amp;quot; onclick=&amp;quot;submitbutton('cancel')&amp;quot;&amp;gt;&amp;lt;?php echo JText::_('Cancel') ?&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The buttons call some javascript which is added on the top of the form file after the first line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
function submitbutton(pressbutton) {&lt;br /&gt;
	var form = document.adminForm;&lt;br /&gt;
	if (pressbutton == 'cancel') {&lt;br /&gt;
		submitform( pressbutton );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php&lt;br /&gt;
		$editor = JFactory::getEditor();&lt;br /&gt;
		echo $editor-&amp;gt;save( 'content' );&lt;br /&gt;
	?&amp;gt;&lt;br /&gt;
	submitform(pressbutton);&lt;br /&gt;
}&lt;br /&gt;
//--&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the form we added the hidden field task with a value of save. This will trigger the save method inside the controller. So lets create this method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function save()&lt;br /&gt;
{&lt;br /&gt;
	// Check for request forgeries&lt;br /&gt;
	JRequest::checkToken() or jexit( 'Invalid Token' );&lt;br /&gt;
    	&lt;br /&gt;
	// get the model&lt;br /&gt;
	$model = $this-&amp;gt;getModel();&lt;br /&gt;
        &lt;br /&gt;
	//get data from request&lt;br /&gt;
	$post = JRequest::get('post');&lt;br /&gt;
	$post['content'] = JRequest::getVar('content', '', 'post', 'string', JREQUEST_ALLOWRAW);&lt;br /&gt;
        &lt;br /&gt;
	// let the model save it&lt;br /&gt;
	if ($model-&amp;gt;store($post)) {&lt;br /&gt;
		$message = JText::_('Success');&lt;br /&gt;
	} else {&lt;br /&gt;
		$message = JText::_('Error while saving');&lt;br /&gt;
		$message .= ' ['.$model-&amp;gt;getError().'] ';&lt;br /&gt;
	}&lt;br /&gt;
	$this-&amp;gt;setRedirect('index.php?option=com_hello', $message);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
The standard way of getting the form data ''$post = JRequest::get('post');'' is not enough in the case of using a editor. This will filter the content, hence losing line breaks and paragraps. So we add an extra line to get the editor contents in a raw unfiltered way. This data will be passed to the model to save into the database.&lt;br /&gt;
&lt;br /&gt;
The store method in the model is now straightforward:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;function store($data)&lt;br /&gt;
{&lt;br /&gt;
	// get the table&lt;br /&gt;
	$row = $this-&amp;gt;getTable();&lt;br /&gt;
                &lt;br /&gt;
	// Bind the form fields to the hello table&lt;br /&gt;
	if (!$row-&amp;gt;bind($data)) {&lt;br /&gt;
		$this-&amp;gt;setError($this-&amp;gt;_db-&amp;gt;getErrorMsg());&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	// Make sure the hello record is valid&lt;br /&gt;
	if (!$row-&amp;gt;check()) {&lt;br /&gt;
		$this-&amp;gt;setError($this-&amp;gt;_db-&amp;gt;getErrorMsg());&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Store the web link table to the database&lt;br /&gt;
	if (!$row-&amp;gt;store()) {&lt;br /&gt;
		$this-&amp;gt;setError( $row-&amp;gt;getErrorMsg() );&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	return true;         &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now try this on your website. You should be able to change the greeting and the contents.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
The component can be downloaded from: [http://help.joomla.org/files/com_hello5_01.zip]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]][[Category:Component Development]][[Category:Tutorials]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Joomla_Ant_build_files</id>
		<title>Joomla Ant build files</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Joomla_Ant_build_files"/>
				<updated>2013-05-23T12:10:48Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: added Category:Development using HotCat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
When software projects become large its is often helpful for developers to create build or make file that assists the developer to quickly &amp;quot;compile&amp;quot; new code. Although designed for Java the Apache Ant system can be used to create build files for Joomla developers, it is especially useful because it is installed by default in Eclipse, which is an IDE often used by Joomla! extension developers. Creating an Ant build file for your projects will greatly expedite the following frequent tasks.&lt;br /&gt;
&lt;br /&gt;
==== Common tasks that can be scripted by an Ant build file ====&lt;br /&gt;
#Creating accurate xml manifest file lists&lt;br /&gt;
#Generating new Joomla install archives&lt;br /&gt;
#Updating development/debug server files&lt;br /&gt;
#Uploading new archives to release sites&lt;br /&gt;
&lt;br /&gt;
== Installing Ant ==&lt;br /&gt;
Ant is high portable software and can be installed on most systems. Please follow the instructions on the Apache Ant homepage. As mentioned previously if you are working in Eclipse Ant is installed by default.&lt;br /&gt;
&lt;br /&gt;
For those who have Eclipse PDT Ganymede without ANT, should download the Java Development Tools (JDT) plugin. The JDT plugin could be downloaded by clicking Help &amp;gt; Software Updates &amp;gt; Ganymede Update Site &amp;gt; Java Development &amp;gt; Eclipse Java Development Tool and then Install button at right hand. Once its downloaded, restart Eclipse and then verify if ANT is properly installed by clicking Window &amp;gt; Preferences. If you see ANT (under General), it means ANT is successfully installed over Eclipse.&lt;br /&gt;
&lt;br /&gt;
If Eclipse complain something like &amp;quot;No grammar constraints (DTD or XML schema) detected for the document.&amp;quot;, then you will need to add minimal DTD. For example; &amp;amp;lt;!DOCTYPE project&amp;amp;gt; [http://stackoverflow.com/questions/363768/disable-dtd-warning-for-ant-scripts-in-eclipse/483260#483260 reference]&lt;br /&gt;
&lt;br /&gt;
== Example Build Files ==&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;project name=&amp;quot;uncleocho&amp;quot; default=&amp;quot;build&amp;quot; basedir=&amp;quot;.&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Ant Build File for Joomla by Evan Fillman (mole84)&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- load variables from config file --&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.configFile&amp;quot; location=&amp;quot;antconfig.txt&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;loadproperties srcfile=&amp;quot;${cfg.configFile}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!--config file values&lt;br /&gt;
	cfg.name=paket&lt;br /&gt;
	cfg.versionDir=v1_50&lt;br /&gt;
	cfg.buildDir=packages&lt;br /&gt;
	cfg.localhostRoot=../../www&lt;br /&gt;
	cfg.xmlfile=files.txt&lt;br /&gt;
	&lt;br /&gt;
	ftp.server=&lt;br /&gt;
	ftp.user=&lt;br /&gt;
	ftp.password=&lt;br /&gt;
	ftp.dir= 	&lt;br /&gt;
	--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- auto values but should be checked --&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.comName&amp;quot; value=&amp;quot;com_${cfg.name}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.comDir&amp;quot; value=&amp;quot;${basedir}/${cfg.versionDir}/${cfg.comName}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.buildVersionDir&amp;quot; value=&amp;quot;${cfg.buildDir}/${cfg.versionDir}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.adminFilesDir&amp;quot; location=&amp;quot;${cfg.comDir}/admin&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.siteFilesDir&amp;quot; location=&amp;quot;${cfg.comDir}/site&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cfg.extensionsDir&amp;quot; location=&amp;quot;${cfg.adminFilesDir}/extensions&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;build&amp;quot; depends=&amp;quot;clean, init, build_component, info&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;init&amp;quot; description=&amp;quot;creates nessecary directory to build with&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${cfg.buildVersionDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${cfg.buildVersionDir}/plugins&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${cfg.buildVersionDir}/modules&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${cfg.buildVersionDir}/components&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${cfg.extensionsDir}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;build_component&amp;quot; depends=&amp;quot;update_extensions&amp;quot; description=&amp;quot;packages the finaly component file&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;zip destfile=&amp;quot;${cfg.buildVersionDir}/components/${cfg.comName}.zip&amp;quot; basedir=&amp;quot;${cfg.comDir}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;build_plugins&amp;quot; description=&amp;quot;packages any plugins&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- add all plugin directories here --&amp;gt;&lt;br /&gt;
		&amp;lt;zip destfile=&amp;quot;${cfg.buildVersionDir}/plugins/plg_uncleocho.zip&amp;quot; basedir=&amp;quot;${cfg.versionDir}/plg_uncleocho&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;build_modules&amp;quot; description=&amp;quot;packages any modules&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- add all module directories here --&amp;gt;&lt;br /&gt;
		&amp;lt;zip destfile=&amp;quot;${cfg.buildVersionDir}/modules/mod_uncleocho.zip&amp;quot; basedir=&amp;quot;${cfg.versionDir}/mod_uncleocho&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;build_debug&amp;quot; description=&amp;quot;builds any debug plugins or code&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;zip destfile=&amp;quot;${cfg.buildVersionDir}/plugins/billets_plugin_toolbox.zip&amp;quot; basedir=&amp;quot;${cfg.versionDir}/billets_plugin_toolbox&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;zip destfile=&amp;quot;${cfg.buildVersionDir}/plugins/billets_plugin_debug.zip&amp;quot; basedir=&amp;quot;${cfg.versionDir}/billets_plugin_debug&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;update_extensions&amp;quot; depends=&amp;quot;build_plugins, build_modules&amp;quot; description=&amp;quot;copies fresh builds of plugins and extensions to the admin/extensions folder&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;copy todir=&amp;quot;${cfg.extensionsDir}&amp;quot; overwrite=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${cfg.buildVersionDir}/plugins&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/copy&amp;gt;&lt;br /&gt;
		&amp;lt;copy todir=&amp;quot;${cfg.extensionsDir}&amp;quot; overwrite=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${cfg.buildVersionDir}/modules&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/copy&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;info&amp;quot; description=&amp;quot;prints information&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;echo message=&amp;quot;Project:			${cfg.name}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;tstamp&amp;gt;&lt;br /&gt;
			&amp;lt;format property=&amp;quot;buildtime&amp;quot; pattern=&amp;quot;yyyy-MM-dd'T'HH:mm:ss&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/tstamp&amp;gt;&lt;br /&gt;
		&amp;lt;echo message=&amp;quot;Buildtime:	${buildtime}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;clean&amp;quot; description=&amp;quot;Destroys all generated files and dirs.&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;${cfg.buildVersionDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;packages&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;${cfg.extensionsDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;delete file=&amp;quot;${cfg.xmlfile}&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;update_localhost&amp;quot; depends=&amp;quot;info&amp;quot; description=&amp;quot;attemps to update files on localhost server with files from working directory&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;copy todir=&amp;quot;${cfg.localhostRoot}/administrator/components/${cfg.comName}&amp;quot; overwrite=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${cfg.adminFilesDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/copy&amp;gt;&lt;br /&gt;
		&amp;lt;copy todir=&amp;quot;${cfg.localhostRoot}/components/${cfg.comName}&amp;quot; overwrite=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${cfg.siteFilesDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/copy&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;upload&amp;quot; description=&amp;quot;attempts to upload build file to ftp server&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fileset id=&amp;quot;ftp.upload.fileset&amp;quot; dir=&amp;quot;${cfg.buildVersionDir}/components&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;include name=&amp;quot;*.zip&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/fileset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;echo&amp;gt;FTP target is ${ftp.server}&amp;lt;/echo&amp;gt;&lt;br /&gt;
		&amp;lt;ftp server=&amp;quot;${ftp.server}&amp;quot; userid=&amp;quot;${ftp.user}&amp;quot; password=&amp;quot;${ftp.password}&amp;quot; action=&amp;quot;put&amp;quot; remotedir=&amp;quot;${ftp.dir}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset refid=&amp;quot;ftp.upload.fileset&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/ftp&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;build_xml&amp;quot; description=&amp;quot;builds an xml listing of all the files in the working copy&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fileset id=&amp;quot;site&amp;quot; dir=&amp;quot;${cfg.siteFilesDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;echo message=&amp;quot;${line.separator}&amp;amp;lt;files folder=&amp;amp;quot;site&amp;amp;quot;&amp;amp;gt;${line.separator}&amp;amp;lt;filename&amp;amp;gt;&amp;quot; file=&amp;quot;${cfg.xmlfile}&amp;quot; append=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;echo-fileset filesetref=&amp;quot;site&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;echo message=&amp;quot;&amp;amp;lt;/filename&amp;amp;gt;${line.separator}&amp;amp;lt;/files&amp;amp;gt;${line.separator}&amp;quot; file=&amp;quot;${cfg.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;fileset id=&amp;quot;admin&amp;quot; dir=&amp;quot;${cfg.adminFilesDir}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;echo message=&amp;quot;${line.separator}&amp;amp;lt;files folder=&amp;amp;quot;admin&amp;amp;quot;&amp;amp;gt;${line.separator}&amp;amp;lt;filename&amp;amp;gt;&amp;quot; file=&amp;quot;${cfg.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;echo-fileset filesetref=&amp;quot;admin&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;echo message=&amp;quot;&amp;amp;lt;/filename&amp;amp;gt;${line.separator}&amp;amp;lt;/files&amp;amp;gt;${line.separator}&amp;quot; file=&amp;quot;${cfg.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;replace file=&amp;quot;${cfg.xmlfile}&amp;quot; token=&amp;quot;${cfg.siteFilesDir}/&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;replace file=&amp;quot;${cfg.xmlfile}&amp;quot; token=&amp;quot;${cfg.adminFilesDir}/&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;macrodef name=&amp;quot;echo-fileset&amp;quot; description=&amp;quot;creates a printable directory listing&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;attribute name=&amp;quot;filesetref&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;sequential&amp;gt;&lt;br /&gt;
			&amp;lt;pathconvert pathsep=&amp;quot;&amp;amp;lt;/filename&amp;amp;gt;${line.separator}&amp;amp;lt;filename&amp;amp;gt;&amp;quot; property=&amp;quot;@{filesetref}.echopath&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;path&amp;gt;&lt;br /&gt;
					&amp;lt;fileset refid=&amp;quot;@{filesetref}&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/path&amp;gt;&lt;br /&gt;
			&amp;lt;/pathconvert&amp;gt;&lt;br /&gt;
			&amp;lt;echo message=&amp;quot;${@{filesetref}.echopath}&amp;quot; file=&amp;quot;${cfg.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/sequential&amp;gt;&lt;br /&gt;
	&amp;lt;/macrodef&amp;gt;&lt;br /&gt;
&amp;lt;/project&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Config File to Accompany Build File ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cfg.name=uncleocho&lt;br /&gt;
cfg.versionDir=v1_50&lt;br /&gt;
cfg.buildDir=packages&lt;br /&gt;
cfg.localhostRoot=../../www&lt;br /&gt;
cfg.xmlfile=files.txt&lt;br /&gt;
&lt;br /&gt;
ftp.server=&lt;br /&gt;
ftp.user=&lt;br /&gt;
ftp.password=&lt;br /&gt;
ftp.dir=&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
Anohter one, a bit less and a bit more.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE project&amp;gt; &amp;lt;!-- For Eclipse --&amp;gt;&lt;br /&gt;
&amp;lt;project name=&amp;quot;People Actions&amp;quot; default=&amp;quot;update_local&amp;quot; basedir=&amp;quot;.&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Ant Build File for Joomla! extensions&amp;lt;/description&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;!-- The name of your extension's main XML file --&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;cfg.name&amp;quot; value=&amp;quot;peopleactions&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Prefix, eg com, bot, mod, or a brand name (or empty) --&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;cfg.prefix&amp;quot; value=&amp;quot;com_&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Relative path to your project --&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;cfg.dir&amp;quot; value=&amp;quot;../trunk/component&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Relative path to store the packages --&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;cfg.packages&amp;quot; value=&amp;quot;../packages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Absolute path to local server --&amp;gt;&lt;br /&gt;
    &amp;lt;property name=&amp;quot;cfg.serverpath&amp;quot; value=&amp;quot;C:\Users\Ruben\Documents\Dev\Projects\Joomla\joomla-base\2.5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;target name=&amp;quot;init&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;xmlproperty file=&amp;quot;${cfg.dir}/${cfg.name}.xml&amp;quot; collapseAttributes=&amp;quot;true&amp;quot; prefix=&amp;quot;xml&amp;quot; keepRoot=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;buildnumber/&amp;gt;&lt;br /&gt;
        &amp;lt;tstamp&amp;gt;&lt;br /&gt;
            &amp;lt;format property=&amp;quot;TODAY&amp;quot; pattern=&amp;quot;yyyy-MM-dd&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/tstamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property name=&amp;quot;str.version&amp;quot; value=&amp;quot;_v${xml.version}.${build.number}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;str.destfile&amp;quot; value=&amp;quot;${cfg.packages}/${cfg.prefix}${cfg.name}${str.version}_${TODAY}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;str.sitetrunkpath&amp;quot; value=&amp;quot;${cfg.dir}/site&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;str.admintrunkpath&amp;quot; value=&amp;quot;${cfg.dir}/admin&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;str.xmlfile&amp;quot; value=&amp;quot;${cfg.dir}/${cfg.name}test.xml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;target name=&amp;quot;info&amp;quot; depends=&amp;quot;init&amp;quot; description=&amp;quot;prints information&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;echo message=&amp;quot;${cfg.name} - ${str.version} - ${ant.version}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/target&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;target name=&amp;quot;update_local&amp;quot; depends=&amp;quot;info, init&amp;quot; description=&amp;quot;attemps to update files on localhost server&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;copy todir=&amp;quot;${cfg.serverpath}/components/${cfg.prefix}${cfg.name}&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;fileset dir=&amp;quot;${str.sitetrunkpath}&amp;quot; excludes=&amp;quot;/language/&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/copy&amp;gt;&lt;br /&gt;
        &amp;lt;copy todir=&amp;quot;${cfg.serverpath}/language/&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;fileset dir=&amp;quot;${str.sitetrunkpath}/language/&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/copy&amp;gt;&lt;br /&gt;
        &amp;lt;copy todir=&amp;quot;${cfg.serverpath}/administrator/components/${cfg.prefix}${cfg.name}&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;fileset file=&amp;quot;${cfg.dir}/${cfg.name}.xml&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;fileset dir=&amp;quot;${str.admintrunkpath}&amp;quot; excludes=&amp;quot;/language/&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/copy&amp;gt;&lt;br /&gt;
        &amp;lt;copy todir=&amp;quot;${cfg.serverpath}/administrator/language/&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;fileset dir=&amp;quot;${str.admintrunkpath}/language/&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/copy&amp;gt;&lt;br /&gt;
        &amp;lt;copy todir=&amp;quot;${cfg.serverpath}/media/${cfg.prefix}${cfg.name}/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;fileset dir=&amp;quot;${cfg.dir}/media/&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/copy&amp;gt;&lt;br /&gt;
    &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;target name=&amp;quot;zip&amp;quot; depends=&amp;quot;info&amp;quot; description=&amp;quot;Makes an uploadable zip package&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;mkdir dir=&amp;quot;${cfg.packages}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;zip&lt;br /&gt;
            destfile=&amp;quot;${str.destfile}.zip&amp;quot;&lt;br /&gt;
            basedir=&amp;quot;${cfg.dir}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/target&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;target name=&amp;quot;build_xml&amp;quot; depends=&amp;quot;info&amp;quot; description=&amp;quot;builds an xml listing of all the files in trunk&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fileset id=&amp;quot;site&amp;quot; dir=&amp;quot;${str.sitetrunkpath}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;echo message=&amp;quot;${line.separator}&amp;amp;lt;files folder=&amp;amp;quot;site&amp;amp;quot;&amp;amp;gt;${line.separator}&amp;amp;lt;filename&amp;amp;gt;&amp;quot; file=&amp;quot;${str.xmlfile}&amp;quot; append=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;echo-fileset filesetref=&amp;quot;site&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;echo message=&amp;quot;&amp;amp;lt;/filename&amp;amp;gt;${line.separator}&amp;amp;lt;/files&amp;amp;gt;${line.separator}&amp;quot; file=&amp;quot;${str.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;fileset id=&amp;quot;admin&amp;quot; dir=&amp;quot;${str.admintrunkpath}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;echo message=&amp;quot;${line.separator}&amp;amp;lt;files folder=&amp;amp;quot;admin&amp;amp;quot;&amp;amp;gt;${line.separator}&amp;amp;lt;filename&amp;amp;gt;&amp;quot; file=&amp;quot;${str.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;echo-fileset filesetref=&amp;quot;admin&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;echo message=&amp;quot;&amp;amp;lt;/filename&amp;amp;gt;${line.separator}&amp;amp;lt;/files&amp;amp;gt;${line.separator}&amp;quot; file=&amp;quot;${str.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;replace file=&amp;quot;${str.xmlfile}&amp;quot; token=&amp;quot;${str.sitetrunkpath}/&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;replace file=&amp;quot;${str.xmlfile}&amp;quot; token=&amp;quot;${str.admintrunkpath}/&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;macrodef name=&amp;quot;echo-fileset&amp;quot; description=&amp;quot;creates a printable directory listing&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;attribute name=&amp;quot;filesetref&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;sequential&amp;gt;&lt;br /&gt;
            &amp;lt;pathconvert pathsep=&amp;quot;&amp;amp;lt;/filename&amp;amp;gt;${line.separator}&amp;amp;lt;filename&amp;amp;gt;&amp;quot; property=&amp;quot;@{filesetref}.echopath&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;path&amp;gt;&lt;br /&gt;
                    &amp;lt;fileset refid=&amp;quot;@{filesetref}&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/path&amp;gt;&lt;br /&gt;
            &amp;lt;/pathconvert&amp;gt;&lt;br /&gt;
            &amp;lt;echo message=&amp;quot;${@{filesetref}.echopath}&amp;quot; file=&amp;quot;${str.xmlfile}&amp;quot; append=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/sequential&amp;gt;&lt;br /&gt;
    &amp;lt;/macrodef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/project&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Configuring_a_XAMPP_server_for_joomla_development</id>
		<title>Configuring a XAMPP server for joomla development</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Configuring_a_XAMPP_server_for_joomla_development"/>
				<updated>2013-05-23T12:05:46Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: added Category:Server setup local using HotCat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
XAMPP is an easy-to-install package that bundles the Apache web server, PHP, XDEBUG, and the MySql database. This allows you to create the environment you need to run Joomla! on your local machine. The latest version of XAMPP is available at [http://www.apachefriends.org/en/xampp.html the XAMPP web site]. Downloads are available for Linux, Windows, Mac OS X and Solaris. Download the package for your platform. &lt;br /&gt;
&lt;br /&gt;
''Important Note Regarding XAMPP and Skype:'' Apache and Skype both use port 80 as an alternative for incoming connections. If you use Skype, go into the Tools-Options-Advanced-Connection panel and deselect the &amp;quot;Use 80 and 443 as alternatives for incoming connections&amp;quot; option. If Apache starts as a service, it will take 80 before Skype starts and you will not see a problem. But, to be safe, disable the option in Skype.&lt;br /&gt;
&lt;br /&gt;
'''Update'''&lt;br /&gt;
&lt;br /&gt;
''As of August 5, 2010, XDebug has been updated (to version 2.1) which fixes some important bugs (for example, watching local variables for nesting functions). The latest XAMPP package (1.7.3) now includes this new version of XDebug. If you just want to update XDebug, you can download the latest module from [http://www.xdebug.org]. There is a handy website that tells you which XDebug binary you need, depending on your phpinfo() information [http://xdebug.org/find-binary.php here]. To use it, you just copy the output of your phpinfo() display and paste it into the form on the site.''&lt;br /&gt;
&lt;br /&gt;
===Installation on Windows===&lt;br /&gt;
&lt;br /&gt;
Installation for Windows is very simple. You can use the XAMPP installer executable (for example, &amp;quot;xampp-win32-1.7.3-installer.exe&amp;quot;). Detailed installation instructions for Windows are available [http://www.apachefriends.org/en/xampp-windows.html here]. &lt;br /&gt;
&lt;br /&gt;
For Windows, it is recommended to install XAMPP in &amp;quot;c:\xampp&amp;quot; (not in &amp;quot;c:\program files&amp;quot;). If you do this, your Joomla! (and any other local web site folders) will go into the folder &amp;quot;c:\xampp\htdocs&amp;quot;. (By convention, all web content goes under the &amp;quot;htdocs&amp;quot; folder.)&lt;br /&gt;
&lt;br /&gt;
If you have multiple http servers (like IIS) you can change the xampp listening port. In &amp;lt;xamppDir&amp;gt;\apache\conf\httpd.conf, modify the line Listen 80 to Listen [portnumber] (ex: &amp;quot;Listen 8080&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Installation on Linux=== &lt;br /&gt;
&lt;br /&gt;
==== Install xammp ====&lt;br /&gt;
Open Terminal and enter: &lt;br /&gt;
 sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt&lt;br /&gt;
(replace ''xampp-linux-1.7.7.tar.gz'' with the version of xammp you downloaded).&lt;br /&gt;
It has been reported that the MYSQL database of xampp 1.7.4 does not work with Joomla 1.5.22&lt;br /&gt;
&lt;br /&gt;
This installs ... Apache2, mysql and php5 as well as an ftp server.&lt;br /&gt;
 &lt;br /&gt;
 ''sudo /opt/lampp/lampp start''&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
 ''sudo /opt/lampp/lampp stop''&lt;br /&gt;
&lt;br /&gt;
starts/stops all the services&lt;br /&gt;
&lt;br /&gt;
==== Test your xammp localhost server ====&lt;br /&gt;
Open your Browser and point it to&lt;br /&gt;
 http://localhost&lt;br /&gt;
The index.php will redirect to&lt;br /&gt;
 http://localhost/xampp&lt;br /&gt;
&lt;br /&gt;
There you will find instructions on how to change default usernames/passwords.  On a PC that does not serve files to the Internet or LAN then changing the defaults is a personal decision.&lt;br /&gt;
&lt;br /&gt;
==== Get Joomla ====&lt;br /&gt;
Download the latest Joomla instalation zip [http://www.joomla.org/download.html]&lt;br /&gt;
&lt;br /&gt;
Unzip to your hard drive&lt;br /&gt;
&lt;br /&gt;
Connect to localhost with an FTP client &lt;br /&gt;
Default&lt;br /&gt;
 nobody&lt;br /&gt;
 lampp&lt;br /&gt;
&lt;br /&gt;
Create a folder for your Joomla on the localhost server&lt;br /&gt;
&lt;br /&gt;
FTP the unpacked Joomla installation files to the newly created Joomla folder. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' &lt;br /&gt;
* The xammp installation sets the correct Ownership of the files and permissions.&lt;br /&gt;
* Using the '''CHOWN command''' will '''cause Ownership problems with xampp'''.&lt;br /&gt;
* '''Using nautilus''' to manipulate folders/files on localhost will '''cause Ownership problems with xampp'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Database info'''&lt;br /&gt;
&lt;br /&gt;
Host&lt;br /&gt;
 localhost&lt;br /&gt;
&lt;br /&gt;
Default Database name&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Default Database user&lt;br /&gt;
 root&lt;br /&gt;
&lt;br /&gt;
There is no default Password.&lt;br /&gt;
&lt;br /&gt;
Administrator password is your choice.&lt;br /&gt;
&lt;br /&gt;
Installing Sample Data is recommended for the novice user.&lt;br /&gt;
&lt;br /&gt;
After installation delete the installation directory and point your Browser to:&lt;br /&gt;
 http://localhost/yournewjoomlafolder&lt;br /&gt;
or&lt;br /&gt;
 http://localhost/yournewjoomlafolder/administrator&lt;br /&gt;
&lt;br /&gt;
==== Creating a link in the Ubuntu menu ====&lt;br /&gt;
'''To create a GUI for xammp connected to your Ubuntu menu'''&lt;br /&gt;
&lt;br /&gt;
Open up the Terminal and type&lt;br /&gt;
 sudo gedit /usr/share/applications/xampp-control-panel.desktop&lt;br /&gt;
&lt;br /&gt;
Then copy the following into the gedit and save.&lt;br /&gt;
&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Encoding=UTF-8&lt;br /&gt;
 Name=XAMPP Control Panel&lt;br /&gt;
 Comment=Start and Stop XAMPP&lt;br /&gt;
 Exec=gksudo &amp;quot;python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py&amp;quot;&lt;br /&gt;
 Icon=/usr/share/icons/Tango/scalable/devices/network-wired.svg&lt;br /&gt;
 Terminal=false&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Categories=GNOME;Application;Network;&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
&lt;br /&gt;
If the control panel fails to launch, try running the Exec command directly in the terminal:&lt;br /&gt;
&lt;br /&gt;
 gksudo &amp;quot;python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you receive the error:&lt;br /&gt;
&lt;br /&gt;
 Error importing pygtk2 and pygtk2-libglade&lt;br /&gt;
&lt;br /&gt;
Install the missing libraries:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-glade2&lt;br /&gt;
&lt;br /&gt;
==== XDebug PHP debugger ====&lt;br /&gt;
&lt;br /&gt;
The XAMPP package for Linux does not includes the XDebug PHP debugger. To install XDebug on Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
- Install the ''build-essential'' package:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install build-essential&lt;br /&gt;
sudo apt-get install autoconf&amp;lt;/pre&amp;gt;&lt;br /&gt;
- Download the [http://www.apachefriends.org/en/xampp-linux.html development package] for your version of XAMPP and extract it over your existing installation:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo tar xvfz xampp-linux-devel-1.7.7.tar.gz -C /opt &amp;lt;/pre&amp;gt;&lt;br /&gt;
- Build XDebug:&lt;br /&gt;
&amp;lt;pre&amp;gt;wget http://xdebug.org/files/xdebug-2.1.3.tgz&lt;br /&gt;
tar xzf xdebug-2.1.3.tgz&lt;br /&gt;
cd xdebug-2.1.3/&lt;br /&gt;
/opt/lampp/bin/phpize&amp;lt;/pre&amp;gt;&lt;br /&gt;
After this you will have following output on your console…&lt;br /&gt;
&amp;lt;pre&amp;gt;Configuring for:&lt;br /&gt;
PHP Api Version:         20090626&lt;br /&gt;
Zend Module Api No:      20090626&lt;br /&gt;
Zend Extension Api No:   20090626 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --with-php-config=/opt/lampp/bin/php-config&lt;br /&gt;
make&lt;br /&gt;
sudo make install &amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the output will be this.. please monitor the directory specified.&lt;br /&gt;
&amp;lt;pre&amp;gt;Installing shared extensions:     /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a folder in your temp folder that will holds the data file generated by XDebug:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mkdir /opt/lampp/tmp/xdebug&lt;br /&gt;
sudo chmod a+rwx -R /opt/lampp/tmp/xdebug &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative installations:&lt;br /&gt;
&lt;br /&gt;
Install using PHP extensions community library (PECL) bundled with xampp: &lt;br /&gt;
 sudo /opt/lampp/bin/pecl install xdebug&lt;br /&gt;
&lt;br /&gt;
On Ubuntu/Debian you can install using:&lt;br /&gt;
 apt-get install php5-xdebug &lt;br /&gt;
&lt;br /&gt;
(warning: this will also install Apache and PHP from apt repositories).&lt;br /&gt;
&lt;br /&gt;
'''Warning for 64bit users'''&lt;br /&gt;
&lt;br /&gt;
When compiling XDebug or installing via apt-get, you will receive an error when (re)starting xampp:&lt;br /&gt;
&lt;br /&gt;
 /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so: wrong ELF class: ELFCLASS64&lt;br /&gt;
&lt;br /&gt;
This is because xampp runs 32bit but XDebug is 64bit. To overcome this problem, either make xdebug.so on a 32bit machine or download it from:&lt;br /&gt;
&lt;br /&gt;
 http://code.activestate.com/komodo/remotedebugging/&lt;br /&gt;
&lt;br /&gt;
Download the file: &amp;quot;PHP Remote Debugging Client&amp;quot; for &amp;quot;Linux (x86)&amp;quot;&lt;br /&gt;
Extract the content of the file on your computer, this compressed file contains several folders with version numbers ex: 4.4, 5.0, 5.1 ... 5.3 and so forth, get in the folder with the higher version number or the one that works for you, then manually copy the file &amp;quot;xdebug.so&amp;quot; to the following location, overwrite if needed&lt;br /&gt;
&lt;br /&gt;
 /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/&lt;br /&gt;
&lt;br /&gt;
Remember this location could be different on your computer&lt;br /&gt;
&lt;br /&gt;
===Installation on Mac OS X===&lt;br /&gt;
Mac OS X actually includes an Apache server out-of-the-box, but most developers will prefer to use the integrated tools and configurability provided by XAMPP.&lt;br /&gt;
&lt;br /&gt;
As with most programs on Mac, installation is a breeze. Visit [http://www.apachefriends.org/en/xampp-macosx.html Apache Friends - Mac OS X] for the universal binary download. &lt;br /&gt;
&lt;br /&gt;
Once the file has finished downloading, just open the disk image, and drag the XAMPP folder to the &amp;quot;Applications&amp;quot; folder alias.&lt;br /&gt;
&lt;br /&gt;
To start the server, open &amp;quot;XAMPP Control.app&amp;quot; and press the start button next to Apache.&lt;br /&gt;
&lt;br /&gt;
=====A Little Troubleshooting=====&lt;br /&gt;
Many Mac users have a little difficulty at this stage when trying to set up another instance of Apache on their machine. If you cannot start XAMPP's Apache, you have two options:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''You can change the listening port of XAMPP.''' In \Applications\XAMPP\xamppfiles\etc\httpd.conf, modify the line that says, &amp;quot;Listen 80&amp;quot; to Listen [portNumber]. E.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 8080&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''You can change the listening port of the pre-installed Apache server.''' In finder, go to &amp;quot;/etc&amp;quot; (CMD+SHIFT+G); from here you will be able to navigate through the normally hidden Apache files. Find the folder labeled Apache2, and edit the &amp;quot;http.conf&amp;quot; file. Modify the line that says, &amp;quot;Listen 80&amp;quot; to Listen [portNumber]. E.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 8080&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: If you choose to change the port of the pre-installed Apache server, you may need to restart your computer for changes to take effect. You will also have to authenticate as an administrator to change these files.''&lt;br /&gt;
&lt;br /&gt;
===Test XAMPP Installation===&lt;br /&gt;
&lt;br /&gt;
Once XAMPP is installed and you have started the Apache service with the XAMPP Control Panel tool, you can test it by opening your browser and navigating to &amp;quot;http://localhost&amp;quot;. You should see the XAMPP welcome screen similar to the one below.&lt;br /&gt;
&lt;br /&gt;
[[Image:xampp_phpinfo_screen.png]]&lt;br /&gt;
&lt;br /&gt;
Select the link called &amp;quot;phpinfo()&amp;quot; in the left-hand menu. This will display a long screen of information about the PHP configuration, as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:xampp_phpinfo_conf_file.png]]&lt;br /&gt;
&lt;br /&gt;
At this point, XAMPP is installed successfully. Notice the &amp;quot;Loaded Configuration File&amp;quot; which is highlighted in the screenshot above. We will be editing this file in the next section to configure XDebug.&lt;br /&gt;
&lt;br /&gt;
[[Category:Server configurations]]&lt;br /&gt;
[[Category:Server setup local]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Configuring_a_XAMPP_server_for_joomla_development</id>
		<title>Configuring a XAMPP server for joomla development</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Configuring_a_XAMPP_server_for_joomla_development"/>
				<updated>2013-05-23T12:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: added Category:Server configurations using HotCat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
XAMPP is an easy-to-install package that bundles the Apache web server, PHP, XDEBUG, and the MySql database. This allows you to create the environment you need to run Joomla! on your local machine. The latest version of XAMPP is available at [http://www.apachefriends.org/en/xampp.html the XAMPP web site]. Downloads are available for Linux, Windows, Mac OS X and Solaris. Download the package for your platform. &lt;br /&gt;
&lt;br /&gt;
''Important Note Regarding XAMPP and Skype:'' Apache and Skype both use port 80 as an alternative for incoming connections. If you use Skype, go into the Tools-Options-Advanced-Connection panel and deselect the &amp;quot;Use 80 and 443 as alternatives for incoming connections&amp;quot; option. If Apache starts as a service, it will take 80 before Skype starts and you will not see a problem. But, to be safe, disable the option in Skype.&lt;br /&gt;
&lt;br /&gt;
'''Update'''&lt;br /&gt;
&lt;br /&gt;
''As of August 5, 2010, XDebug has been updated (to version 2.1) which fixes some important bugs (for example, watching local variables for nesting functions). The latest XAMPP package (1.7.3) now includes this new version of XDebug. If you just want to update XDebug, you can download the latest module from [http://www.xdebug.org]. There is a handy website that tells you which XDebug binary you need, depending on your phpinfo() information [http://xdebug.org/find-binary.php here]. To use it, you just copy the output of your phpinfo() display and paste it into the form on the site.''&lt;br /&gt;
&lt;br /&gt;
===Installation on Windows===&lt;br /&gt;
&lt;br /&gt;
Installation for Windows is very simple. You can use the XAMPP installer executable (for example, &amp;quot;xampp-win32-1.7.3-installer.exe&amp;quot;). Detailed installation instructions for Windows are available [http://www.apachefriends.org/en/xampp-windows.html here]. &lt;br /&gt;
&lt;br /&gt;
For Windows, it is recommended to install XAMPP in &amp;quot;c:\xampp&amp;quot; (not in &amp;quot;c:\program files&amp;quot;). If you do this, your Joomla! (and any other local web site folders) will go into the folder &amp;quot;c:\xampp\htdocs&amp;quot;. (By convention, all web content goes under the &amp;quot;htdocs&amp;quot; folder.)&lt;br /&gt;
&lt;br /&gt;
If you have multiple http servers (like IIS) you can change the xampp listening port. In &amp;lt;xamppDir&amp;gt;\apache\conf\httpd.conf, modify the line Listen 80 to Listen [portnumber] (ex: &amp;quot;Listen 8080&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Installation on Linux=== &lt;br /&gt;
&lt;br /&gt;
==== Install xammp ====&lt;br /&gt;
Open Terminal and enter: &lt;br /&gt;
 sudo tar xvfz xampp-linux-1.7.7.tar.gz -C /opt&lt;br /&gt;
(replace ''xampp-linux-1.7.7.tar.gz'' with the version of xammp you downloaded).&lt;br /&gt;
It has been reported that the MYSQL database of xampp 1.7.4 does not work with Joomla 1.5.22&lt;br /&gt;
&lt;br /&gt;
This installs ... Apache2, mysql and php5 as well as an ftp server.&lt;br /&gt;
 &lt;br /&gt;
 ''sudo /opt/lampp/lampp start''&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
 ''sudo /opt/lampp/lampp stop''&lt;br /&gt;
&lt;br /&gt;
starts/stops all the services&lt;br /&gt;
&lt;br /&gt;
==== Test your xammp localhost server ====&lt;br /&gt;
Open your Browser and point it to&lt;br /&gt;
 http://localhost&lt;br /&gt;
The index.php will redirect to&lt;br /&gt;
 http://localhost/xampp&lt;br /&gt;
&lt;br /&gt;
There you will find instructions on how to change default usernames/passwords.  On a PC that does not serve files to the Internet or LAN then changing the defaults is a personal decision.&lt;br /&gt;
&lt;br /&gt;
==== Get Joomla ====&lt;br /&gt;
Download the latest Joomla instalation zip [http://www.joomla.org/download.html]&lt;br /&gt;
&lt;br /&gt;
Unzip to your hard drive&lt;br /&gt;
&lt;br /&gt;
Connect to localhost with an FTP client &lt;br /&gt;
Default&lt;br /&gt;
 nobody&lt;br /&gt;
 lampp&lt;br /&gt;
&lt;br /&gt;
Create a folder for your Joomla on the localhost server&lt;br /&gt;
&lt;br /&gt;
FTP the unpacked Joomla installation files to the newly created Joomla folder. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' &lt;br /&gt;
* The xammp installation sets the correct Ownership of the files and permissions.&lt;br /&gt;
* Using the '''CHOWN command''' will '''cause Ownership problems with xampp'''.&lt;br /&gt;
* '''Using nautilus''' to manipulate folders/files on localhost will '''cause Ownership problems with xampp'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Database info'''&lt;br /&gt;
&lt;br /&gt;
Host&lt;br /&gt;
 localhost&lt;br /&gt;
&lt;br /&gt;
Default Database name&lt;br /&gt;
 test&lt;br /&gt;
&lt;br /&gt;
Default Database user&lt;br /&gt;
 root&lt;br /&gt;
&lt;br /&gt;
There is no default Password.&lt;br /&gt;
&lt;br /&gt;
Administrator password is your choice.&lt;br /&gt;
&lt;br /&gt;
Installing Sample Data is recommended for the novice user.&lt;br /&gt;
&lt;br /&gt;
After installation delete the installation directory and point your Browser to:&lt;br /&gt;
 http://localhost/yournewjoomlafolder&lt;br /&gt;
or&lt;br /&gt;
 http://localhost/yournewjoomlafolder/administrator&lt;br /&gt;
&lt;br /&gt;
==== Creating a link in the Ubuntu menu ====&lt;br /&gt;
'''To create a GUI for xammp connected to your Ubuntu menu'''&lt;br /&gt;
&lt;br /&gt;
Open up the Terminal and type&lt;br /&gt;
 sudo gedit /usr/share/applications/xampp-control-panel.desktop&lt;br /&gt;
&lt;br /&gt;
Then copy the following into the gedit and save.&lt;br /&gt;
&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Encoding=UTF-8&lt;br /&gt;
 Name=XAMPP Control Panel&lt;br /&gt;
 Comment=Start and Stop XAMPP&lt;br /&gt;
 Exec=gksudo &amp;quot;python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py&amp;quot;&lt;br /&gt;
 Icon=/usr/share/icons/Tango/scalable/devices/network-wired.svg&lt;br /&gt;
 Terminal=false&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Categories=GNOME;Application;Network;&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
&lt;br /&gt;
If the control panel fails to launch, try running the Exec command directly in the terminal:&lt;br /&gt;
&lt;br /&gt;
 gksudo &amp;quot;python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you receive the error:&lt;br /&gt;
&lt;br /&gt;
 Error importing pygtk2 and pygtk2-libglade&lt;br /&gt;
&lt;br /&gt;
Install the missing libraries:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install python-glade2&lt;br /&gt;
&lt;br /&gt;
==== XDebug PHP debugger ====&lt;br /&gt;
&lt;br /&gt;
The XAMPP package for Linux does not includes the XDebug PHP debugger. To install XDebug on Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
- Install the ''build-essential'' package:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install build-essential&lt;br /&gt;
sudo apt-get install autoconf&amp;lt;/pre&amp;gt;&lt;br /&gt;
- Download the [http://www.apachefriends.org/en/xampp-linux.html development package] for your version of XAMPP and extract it over your existing installation:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo tar xvfz xampp-linux-devel-1.7.7.tar.gz -C /opt &amp;lt;/pre&amp;gt;&lt;br /&gt;
- Build XDebug:&lt;br /&gt;
&amp;lt;pre&amp;gt;wget http://xdebug.org/files/xdebug-2.1.3.tgz&lt;br /&gt;
tar xzf xdebug-2.1.3.tgz&lt;br /&gt;
cd xdebug-2.1.3/&lt;br /&gt;
/opt/lampp/bin/phpize&amp;lt;/pre&amp;gt;&lt;br /&gt;
After this you will have following output on your console…&lt;br /&gt;
&amp;lt;pre&amp;gt;Configuring for:&lt;br /&gt;
PHP Api Version:         20090626&lt;br /&gt;
Zend Module Api No:      20090626&lt;br /&gt;
Zend Extension Api No:   20090626 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure --with-php-config=/opt/lampp/bin/php-config&lt;br /&gt;
make&lt;br /&gt;
sudo make install &amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the output will be this.. please monitor the directory specified.&lt;br /&gt;
&amp;lt;pre&amp;gt;Installing shared extensions:     /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a folder in your temp folder that will holds the data file generated by XDebug:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mkdir /opt/lampp/tmp/xdebug&lt;br /&gt;
sudo chmod a+rwx -R /opt/lampp/tmp/xdebug &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative installations:&lt;br /&gt;
&lt;br /&gt;
Install using PHP extensions community library (PECL) bundled with xampp: &lt;br /&gt;
 sudo /opt/lampp/bin/pecl install xdebug&lt;br /&gt;
&lt;br /&gt;
On Ubuntu/Debian you can install using:&lt;br /&gt;
 apt-get install php5-xdebug &lt;br /&gt;
&lt;br /&gt;
(warning: this will also install Apache and PHP from apt repositories).&lt;br /&gt;
&lt;br /&gt;
'''Warning for 64bit users'''&lt;br /&gt;
&lt;br /&gt;
When compiling XDebug or installing via apt-get, you will receive an error when (re)starting xampp:&lt;br /&gt;
&lt;br /&gt;
 /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so: wrong ELF class: ELFCLASS64&lt;br /&gt;
&lt;br /&gt;
This is because xampp runs 32bit but XDebug is 64bit. To overcome this problem, either make xdebug.so on a 32bit machine or download it from:&lt;br /&gt;
&lt;br /&gt;
 http://code.activestate.com/komodo/remotedebugging/&lt;br /&gt;
&lt;br /&gt;
Download the file: &amp;quot;PHP Remote Debugging Client&amp;quot; for &amp;quot;Linux (x86)&amp;quot;&lt;br /&gt;
Extract the content of the file on your computer, this compressed file contains several folders with version numbers ex: 4.4, 5.0, 5.1 ... 5.3 and so forth, get in the folder with the higher version number or the one that works for you, then manually copy the file &amp;quot;xdebug.so&amp;quot; to the following location, overwrite if needed&lt;br /&gt;
&lt;br /&gt;
 /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/&lt;br /&gt;
&lt;br /&gt;
Remember this location could be different on your computer&lt;br /&gt;
&lt;br /&gt;
===Installation on Mac OS X===&lt;br /&gt;
Mac OS X actually includes an Apache server out-of-the-box, but most developers will prefer to use the integrated tools and configurability provided by XAMPP.&lt;br /&gt;
&lt;br /&gt;
As with most programs on Mac, installation is a breeze. Visit [http://www.apachefriends.org/en/xampp-macosx.html Apache Friends - Mac OS X] for the universal binary download. &lt;br /&gt;
&lt;br /&gt;
Once the file has finished downloading, just open the disk image, and drag the XAMPP folder to the &amp;quot;Applications&amp;quot; folder alias.&lt;br /&gt;
&lt;br /&gt;
To start the server, open &amp;quot;XAMPP Control.app&amp;quot; and press the start button next to Apache.&lt;br /&gt;
&lt;br /&gt;
=====A Little Troubleshooting=====&lt;br /&gt;
Many Mac users have a little difficulty at this stage when trying to set up another instance of Apache on their machine. If you cannot start XAMPP's Apache, you have two options:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''You can change the listening port of XAMPP.''' In \Applications\XAMPP\xamppfiles\etc\httpd.conf, modify the line that says, &amp;quot;Listen 80&amp;quot; to Listen [portNumber]. E.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 8080&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''You can change the listening port of the pre-installed Apache server.''' In finder, go to &amp;quot;/etc&amp;quot; (CMD+SHIFT+G); from here you will be able to navigate through the normally hidden Apache files. Find the folder labeled Apache2, and edit the &amp;quot;http.conf&amp;quot; file. Modify the line that says, &amp;quot;Listen 80&amp;quot; to Listen [portNumber]. E.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;Listen 8080&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: If you choose to change the port of the pre-installed Apache server, you may need to restart your computer for changes to take effect. You will also have to authenticate as an administrator to change these files.''&lt;br /&gt;
&lt;br /&gt;
===Test XAMPP Installation===&lt;br /&gt;
&lt;br /&gt;
Once XAMPP is installed and you have started the Apache service with the XAMPP Control Panel tool, you can test it by opening your browser and navigating to &amp;quot;http://localhost&amp;quot;. You should see the XAMPP welcome screen similar to the one below.&lt;br /&gt;
&lt;br /&gt;
[[Image:xampp_phpinfo_screen.png]]&lt;br /&gt;
&lt;br /&gt;
Select the link called &amp;quot;phpinfo()&amp;quot; in the left-hand menu. This will display a long screen of information about the PHP configuration, as shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:xampp_phpinfo_conf_file.png]]&lt;br /&gt;
&lt;br /&gt;
At this point, XAMPP is installed successfully. Notice the &amp;quot;Loaded Configuration File&amp;quot; which is highlighted in the screenshot above. We will be editing this file in the next section to configure XDebug.&lt;br /&gt;
&lt;br /&gt;
[[Category:Server configurations]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/New_main_page/Explore_the_Joomla!_Documentation_Wiki</id>
		<title>User:Hutchy68/New main page/Explore the Joomla! Documentation Wiki</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/New_main_page/Explore_the_Joomla!_Documentation_Wiki"/>
				<updated>2013-05-19T22:08:00Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%;margin:0 0 .5em 0; border-collapse:collapsed;&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla3x.png|40px|left]] &amp;lt;big&amp;gt;'''Joomla! CMS Version {{CurrentSTSVer|minor}}'''&amp;lt;/big&amp;gt; -  is the latest [[Release and support cycle|STS version]]. In the future, Joomla! 3.5 will replace Joomla 2.5. Support for Joomla {{CurrentSTSVer|minor}} is still active. For more information see the [[:Category:Joomla! {{CurrentSTSVer|minor}}|Joomla {{CurrentSTSVer|minor}} category page]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;* [[Technical requirements]]&lt;br /&gt;
;* [[J{{CurrentSTSVer|minor}}:Installing Joomla!|Installation]]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;* [[What's new in Joomla! {{CurrentSTSVer|minor}}|What's new]]&lt;br /&gt;
;* [[J{{CurrentSTSVer|minor}}:Access_Control_List|Joomla! {{CurrentSTSVer|minor}} Access control system]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Joomla25.png|40px|left]] &amp;lt;big&amp;gt;'''Joomla! CMS Version {{CurrentLTSVer|minor}}'''&amp;lt;/big&amp;gt; -  is the [[Release and support cycle|current LTS version]]. The previous LTS version, Joomla 1.5, is still widely used but support ended as of September 2012. For more information see the [[:Category:Joomla! {{CurrentLTSVer|minor}}|Joomla {{CurrentLTSVer|minor}} category page]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;* [[Migrating from Joomla 1.5 to Joomla 2.5]]&lt;br /&gt;
;* [[:Category:Version {{CurrentLTSVer}} FAQ|Version {{CurrentLTSVer}} FAQ]]&lt;br /&gt;
;* [[Technical_requirements|Joomla! 2.5 Requirements]]&lt;br /&gt;
| style=&amp;quot;width:49%; vertical-align:top;&amp;quot; |&lt;br /&gt;
;* [[Installing Joomla!]]&lt;br /&gt;
;* [[Upgrading from Joomla 1.7 to Joomla 2.5]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla_Development.png|30px|left]] &amp;lt;big&amp;gt;'''[[Developers|Joomla! Development]]'''&amp;lt;/big&amp;gt; - Information and links for Joomla! Extension developers, Bug Squad members, or the Joomla! Platform and Joomla! Framework maintainers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;*[[Portal:Developers|Developers Portal]]&lt;br /&gt;
;*[[Portal:Bug_Squad|Joomal! Bug Squad members]]&lt;br /&gt;
;*[[Portal:Platform|Joomla! Platform Portal]]&lt;br /&gt;
;*Also see [http://developer.joomla.org developer.joomla.org]&lt;br /&gt;
;*[http://api.joomla.org/ API Documentation]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;*[[Template Development|Templates]]&lt;br /&gt;
;*[[Component Development|Components]]&lt;br /&gt;
;*[[Module Development|Modules]]&lt;br /&gt;
;*[[Plugin Development|Plugins]]&lt;br /&gt;
;*[[Language Development|Languages]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/What%27s_new_in_Joomla!_3.1</id>
		<title>What's new in Joomla! 3.1</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/What%27s_new_in_Joomla!_3.1"/>
				<updated>2013-05-19T21:32:39Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: redirect to J3.1:What's new in Joomla!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[J3.1:What's new in Joomla!]]&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/New_main_page/Explore_the_Joomla!_Documentation_Wiki</id>
		<title>User:Hutchy68/New main page/Explore the Joomla! Documentation Wiki</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/New_main_page/Explore_the_Joomla!_Documentation_Wiki"/>
				<updated>2013-05-19T21:19:41Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%;margin:0 0 .5em 0; border-collapse:collapsed;&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla3x.png|40px|left]] &amp;lt;big&amp;gt;'''Joomla! CMS Version {{CurrentSTSVer|minor}}'''&amp;lt;/big&amp;gt; -  is the latest [[Release and support cycle|STS version]]. In the future, Joomla! 3.5 will replace Joomla 2.5. Support for Joomla {{CurrentSTSVer|minor}} is still active. For more information see the [[:Category:Joomla! {{CurrentSTSVer|minor}}|Joomla {{CurrentSTSVer|minor}} category page]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;* [[Technical requirements]]&lt;br /&gt;
;* [[{{NewestPageVer|Installing Joomla! }}|Installation]]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;* [[What's new in Joomla! {{CurrentSTSVer|minor}}|What's new]]&lt;br /&gt;
;* [[ACL Tutorial for Joomla! {{CurrentSTSVer|minor}}|Access control system]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Joomla25.png|40px|left]] &amp;lt;big&amp;gt;'''Joomla! CMS Version {{CurrentLTSVer|minor}}'''&amp;lt;/big&amp;gt; -  is the [[Release and support cycle|current LTS version]]. The previous LTS version, Joomla 1.5, is still widely used but support ended as of September 2012. For more information see the [[:Category:Joomla! {{CurrentLTSVer|minor}}|Joomla {{CurrentLTSVer|minor}} category page]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;* [[Migrating from Joomla 1.5 to Joomla 2.5]]&lt;br /&gt;
;* [[:Category:Version {{CurrentLTSVer}} FAQ|Version {{CurrentLTSVer}} FAQ]]&lt;br /&gt;
;* [[Technical_requirements|Joomla! 2.5 Requirements]]&lt;br /&gt;
| style=&amp;quot;width:49%; vertical-align:top;&amp;quot; |&lt;br /&gt;
;* [[Installing Joomla!]]&lt;br /&gt;
;* [[Upgrading from Joomla 1.7 to Joomla 2.5]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla_Development.png|30px|left]] &amp;lt;big&amp;gt;'''[[Developers|Joomla! Development]]'''&amp;lt;/big&amp;gt; - Information and links for Joomla! Extension developers, Bug Squad members, or the Joomla! Platform and Joomla! Framework maintainers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;*[[Portal:Developers|Developers Portal]]&lt;br /&gt;
;*[[Portal:Bug_Squad|Joomal! Bug Squad members]]&lt;br /&gt;
;*[[Portal:Platform|Joomla! Platform Portal]]&lt;br /&gt;
;*Also see [http://developer.joomla.org developer.joomla.org]&lt;br /&gt;
;*[http://api.joomla.org/ API Documentation]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;*[[Template Development|Templates]]&lt;br /&gt;
;*[[Component Development|Components]]&lt;br /&gt;
;*[[Module Development|Modules]]&lt;br /&gt;
;*[[Plugin Development|Plugins]]&lt;br /&gt;
;*[[Language Development|Languages]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/New_main_page/Resources</id>
		<title>User:Hutchy68/New main page/Resources</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/New_main_page/Resources"/>
				<updated>2013-05-19T21:16:10Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: moving developer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%;margin:0 0 .5em 0; border-collapse:collapsed;&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Icon tools.png|30px|left]] &amp;lt;big&amp;gt;'''[[Administrator]] Quick Links'''&amp;lt;/big&amp;gt; - Common tasks, how-to's and other tasks for administrators.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;*[[Joomla Installation|Installation]]&lt;br /&gt;
;*[[Template Management]]&lt;br /&gt;
;*[[Article Management]]&lt;br /&gt;
;*[[Menu Management]]&lt;br /&gt;
;*[[Module Management]]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;*[[Component Management]]&lt;br /&gt;
;*[[Category Management]]&lt;br /&gt;
;*[[Plugin Management]]&lt;br /&gt;
;*[[Global Configuration Management|Global Configuration]]&lt;br /&gt;
;*[[:Category:Tips and tricks|Tips and tricks]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Security_lock.png|30px|left]] &amp;lt;big&amp;gt;'''[[Security Checklist|Joomla! Security]]'''&amp;lt;/big&amp;gt; - Questions about securing your Joomla! web site? What extensions are secure? Useful pages all Joomla! Administrators should read.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
;*[[Security Checklist|Joomla! Security Checklist]]&lt;br /&gt;
;*[http://vel.joomla.org Vulnerable Extensions List]&lt;br /&gt;
;*[[User Management|User and Access Management]]&lt;br /&gt;
;*[[How_do_you_recover_your_admin_password%3F|Admin Password Recovery]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/New_main_page/Resources</id>
		<title>User:Hutchy68/New main page/Resources</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/New_main_page/Resources"/>
				<updated>2013-05-19T13:28:09Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%;margin:0 0 .5em 0; border-collapse:collapsed;&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Icon tools.png|30px|left]] &amp;lt;big&amp;gt;'''[[Administrator]] Quick Links'''&amp;lt;/big&amp;gt; - Common tasks, how-to's and other tasks for administrators.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;*[[Joomla Installation|Installation]]&lt;br /&gt;
;*[[Template Management]]&lt;br /&gt;
;*[[Article Management]]&lt;br /&gt;
;*[[Menu Management]]&lt;br /&gt;
;*[[Module Management]]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;*[[Component Management]]&lt;br /&gt;
;*[[Category Management]]&lt;br /&gt;
;*[[Plugin Management]]&lt;br /&gt;
;*[[Global Configuration Management|Global Configuration]]&lt;br /&gt;
;*[[:Category:Tips and tricks|Tips and tricks]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla_Development.png|30px|left]] &amp;lt;big&amp;gt;'''[[Developers|Joomla! Development]]'''&amp;lt;/big&amp;gt; - Information and links for Joomla! Extension developers, Bug Squad members, or the Joomla! Platform and Joomla! Framework maintainers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;*[[Portal:Developers|Developers Portal]]&lt;br /&gt;
;*[[Portal:Bug_Squad|Joomal! Bug Squad members]]&lt;br /&gt;
;*[[Portal:Platform|Joomla! Platform Portal]]&lt;br /&gt;
;*Also see [http://developer.joomla.org developer.joomla.org]&lt;br /&gt;
;*[http://api.joomla.org/ API Documentation]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;*[[Template Development|Templates]]&lt;br /&gt;
;*[[Component Development|Components]]&lt;br /&gt;
;*[[Module Development|Modules]]&lt;br /&gt;
;*[[Plugin Development|Plugins]]&lt;br /&gt;
;*[[Language Development|Languages]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Security_lock.png|30px|left]] &amp;lt;big&amp;gt;'''[[Security Checklist|Joomla! Security]]'''&amp;lt;/big&amp;gt; - Questions about securing your Joomla! web site? What extensions are secure? Useful pages all Joomla! Administrators should read.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
;*[[Security Checklist|Joomla! Security Checklist]]&lt;br /&gt;
;*[http://vel.joomla.org Vulnerable Extensions List]&lt;br /&gt;
;*[[User Management|User and Access Management]]&lt;br /&gt;
;*[[How_do_you_recover_your_admin_password%3F|Admin Password Recovery]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/New_main_page/Resources</id>
		<title>User:Hutchy68/New main page/Resources</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/New_main_page/Resources"/>
				<updated>2013-05-19T13:23:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%;margin:0 0 .5em 0; border-collapse:collapsed;&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Icon tools.png|30px|left]] &amp;lt;big&amp;gt;'''[[Administrator]] Quick Links'''&amp;lt;/big&amp;gt; - Common tasks, how-to's and other tasks for administrators.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;[[Joomla Installation|Installation]]&lt;br /&gt;
;[[Template Management]]&lt;br /&gt;
;[[Article Management]]&lt;br /&gt;
;[[Menu Management]]&lt;br /&gt;
;[[Module Management]]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;[[Component Management]]&lt;br /&gt;
;[[Category Management]]&lt;br /&gt;
;[[Plugin Management]]&lt;br /&gt;
;[[Global Configuration Management|Global Configuration]]&lt;br /&gt;
;[[:Category:Tips and tricks|Tips and tricks]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla_Development.png|30px|left]] &amp;lt;big&amp;gt;'''[[Developers|Joomla! Development]]'''&amp;lt;/big&amp;gt; - Information and links for Joomla! Extension developers, Bug Squad members, or the Joomla! Platform and Joomla! Framework maintainers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
;[[Portal:Developers|Developers Portal]]&lt;br /&gt;
;[[Portal:Bug_Squad|Joomal! Bug Squad members]]&lt;br /&gt;
;[[Portal:Platform|Joomla! Platform Portal]]&lt;br /&gt;
;more @ [http://developer.joomla.org developer.joomla.org]&lt;br /&gt;
;[http://api.joomla.org/ API Documentation]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
;[[Template Development|Templates]]&lt;br /&gt;
;[[Component Development|Components]]&lt;br /&gt;
;[[Module Development|Modules]]&lt;br /&gt;
;[[Plugin Development|Plugins]]&lt;br /&gt;
;[[Language Development|Languages]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Security_lock.png|30px|left]] &amp;lt;big&amp;gt;'''[[Security Checklist|Joomla! Security]]'''&amp;lt;/big&amp;gt; - Questions about securing your Joomla! web site? What extensions are secure? Useful pages all Joomla! Administrators should read.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block; padding:.4em 2.0em;&amp;quot;&amp;gt;&lt;br /&gt;
;[[Security Checklist|Joomla! Security Checklist]]&lt;br /&gt;
;[http://vel.joomla.org Vulnerable Extensions List]&lt;br /&gt;
;[[User Management|User and Access Management]]&lt;br /&gt;
;[[How_do_you_recover_your_admin_password%3F|Admin Password Recovery]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User:Hutchy68/New_main_page/Resources</id>
		<title>User:Hutchy68/New main page/Resources</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User:Hutchy68/New_main_page/Resources"/>
				<updated>2013-05-19T13:20:53Z</updated>
		
		<summary type="html">&lt;p&gt;Hutchy68: updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;width:100%;margin:0 0 .5em 0; border-collapse:collapsed;&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Icon tools.png|30px|left]] &amp;lt;big&amp;gt;'''[[Administrator]] Quick Links'''&amp;lt;/big&amp;gt; - Common tasks, how-to's and other tasks for administrators.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
* [[Joomla Installation|Installation]]&lt;br /&gt;
* [[Template Management]]&lt;br /&gt;
* [[Article Management]]&lt;br /&gt;
* [[Menu Management]]&lt;br /&gt;
* [[Module Management]]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
* [[Component Management]]&lt;br /&gt;
* [[Category Management]]&lt;br /&gt;
* [[Plugin Management]]&lt;br /&gt;
* [[Global Configuration Management|Global Configuration]]&lt;br /&gt;
* [[:Category:Tips and tricks|Tips and tricks]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0; vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Joomla_Development.png|30px|left]] &amp;lt;big&amp;gt;'''[[Developers|Joomla! Development]]'''&amp;lt;/big&amp;gt; - Information and links for Joomla! Extension developers, Bug Squad members, or the Joomla! Platform and Joomla! Framework maintainers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:49%;  vertical-align:top;&amp;quot; |&lt;br /&gt;
* [[Portal:Developers|Developers Portal]]&lt;br /&gt;
* [[Portal:Bug_Squad|Joomal! Bug Squad members]]&lt;br /&gt;
* [[Portal:Platform|Joomla! Platform Portal]]&lt;br /&gt;
* more @ [http://developer.joomla.org developer.joomla.org]&lt;br /&gt;
* [http://api.joomla.org/ API Documentation]&lt;br /&gt;
| style=&amp;quot;width:49%;&amp;quot; |&lt;br /&gt;
* [[Template Development|Templates]]&lt;br /&gt;
* [[Component Development|Components]]&lt;br /&gt;
* [[Module Development|Modules]]&lt;br /&gt;
* [[Plugin Development|Plugins]]&lt;br /&gt;
* [[Language Development|Languages]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:.4em .5em .4em .2em; vertical-align:top; text-align:justify; text-justify:inter-word; background-color:beige; min-height:50px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Security_lock.png|30px|left]] &amp;lt;big&amp;gt;'''[[Security Checklist|Joomla! Security]]'''&amp;lt;/big&amp;gt; - Questions about securing your Joomla! web site? What extensions are secure? Useful pages all Joomla! Administrators should read.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:.25em 0 |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block; padding:.4em 2.0em;&amp;quot;&amp;gt;&lt;br /&gt;
;[[Security Checklist|Joomla! Security Checklist]]&lt;br /&gt;
;[http://vel.joomla.org Vulnerable Extensions List]&lt;br /&gt;
;[[User Management|User and Access Management]]&lt;br /&gt;
;[[How_do_you_recover_your_admin_password%3F|Admin Password Recovery]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Hutchy68</name></author>	</entry>

	</feed>