<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://docs.joomla.org/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://docs.joomla.org/index.php?title=Special:NewPages&amp;feed=atom&amp;hideliu=&amp;hidepatrolled=&amp;hidebots=&amp;hideredirs=1&amp;limit=50&amp;namespace=0</id>
		<title>Joomla! Documentation - New pages [en]</title>
		<link rel="self" type="application/atom+xml" href="http://docs.joomla.org/index.php?title=Special:NewPages&amp;feed=atom&amp;hideliu=&amp;hidepatrolled=&amp;hidebots=&amp;hideredirs=1&amp;limit=50&amp;namespace=0"/>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Special:NewPages"/>
		<updated>2012-05-16T19:24:54Z</updated>
		<subtitle>From Joomla! Documentation</subtitle>
		<generator>MediaWiki 1.16.4</generator>

	<entry>
		<id>http://docs.joomla.org/Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_19</id>
		<title>Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Part 19</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_19"/>
				<updated>2012-05-12T22:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Garkell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is for {{JVer|1.6}} {{JVer|1.7}} {{JVer|2.5}}&lt;br /&gt;
== Warning - this article needs to be reviewed by someone who knows what they're doing ==&lt;br /&gt;
&lt;br /&gt;
== Articles in this series ==&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Contents}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[Developing a Model-View-Controller (MVC) Component for Joomla!2.5]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Update the view ==&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, update the file ''site/views/updhelloworld/view.html.php'' to include setting the state.  For the stylesheet, include the import of the html class, and add a new function for including the stylesheet file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/updhelloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
''site/views/updhelloworld/view.html.php''&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;
// import Joomla view library&lt;br /&gt;
jimport('joomla.application.component.view');&lt;br /&gt;
// import Joomla html for use with stylesheets&lt;br /&gt;
jimport('joomla.html.html');&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * HTML View class for the UpdHelloWorld Component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewUpdHelloWorld extends JView&lt;br /&gt;
{&lt;br /&gt;
	// Overwriting JView display method&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		$app		= JFactory::getApplication();&lt;br /&gt;
		$params		= $app-&amp;gt;getParams();&lt;br /&gt;
		$dispatcher = JDispatcher::getInstance();&lt;br /&gt;
&lt;br /&gt;
		// Get some data from the models&lt;br /&gt;
		$state		= $this-&amp;gt;get('State');&lt;br /&gt;
		$item		= $this-&amp;gt;get('Item');&lt;br /&gt;
		$this-&amp;gt;form	= $this-&amp;gt;get('Form');&lt;br /&gt;
		$this-&amp;gt;state = $this-&amp;gt;get('State');&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get('Errors'))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode('&amp;lt;br /&amp;gt;', $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// get the stylesheet and/or other document values such as title&lt;br /&gt;
        	$this-&amp;gt;addDocStyle();&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Add the stylesheet to the document.&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addDocStyle()&lt;br /&gt;
	{&lt;br /&gt;
        $doc = JFactory::getDocument();&lt;br /&gt;
        $doc-&amp;gt;addStyleSheet('media/com_helloworld/css/site.stylesheet.css');&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update the layout ==&lt;br /&gt;
&lt;br /&gt;
In Joomla, views display data using a layout. With your favorite file manager and editor, edit your file ''site/views/updhelloworld/tmpl/default.php'' to get the parameter values&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/updhelloworld/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
''site/views/updhelloworld/tmpl/default.php''&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;
JHtml::_('behavior.keepalive');&lt;br /&gt;
JHtml::_('behavior.formvalidation');&lt;br /&gt;
JHtml::_('behavior.tooltip');&lt;br /&gt;
&lt;br /&gt;
// get the menu parameters for use&lt;br /&gt;
$menuparams = $this-&amp;gt;state-&amp;gt;get(&amp;quot;menuparams&amp;quot;);&lt;br /&gt;
$headingtxtcolor = $menuparams-&amp;gt;get(&amp;quot;headingtxtcolor&amp;quot;);&lt;br /&gt;
$headingbgcolor = $menuparams-&amp;gt;get(&amp;quot;headingbgcolor&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
    &amp;lt;h2 style=&amp;quot;color:&amp;lt;?php echo $headingtxtcolor; ?&amp;gt;; background-color:&amp;lt;?php echo $headingbgcolor; ?&amp;gt;;&amp;quot;&amp;gt;Update the Hello World greeting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;form class=&amp;quot;form-validate&amp;quot; action=&amp;quot;&amp;lt;?php echo JRoute::_('index.php'); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; id=&amp;quot;updhelloworld&amp;quot; name=&amp;quot;updhelloworld&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset&amp;gt;&lt;br /&gt;
        	&amp;lt;dl&amp;gt;&lt;br /&gt;
          	    &amp;lt;dt&amp;gt;&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;getLabel('id'); ?&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
             	&amp;lt;dd&amp;gt;&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;getInput('id'); ?&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt;
                &amp;lt;dt&amp;gt;&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt;
        	    &amp;lt;dt&amp;gt;&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;getLabel('greeting'); ?&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
        	    &amp;lt;dd&amp;gt;&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;getInput('greeting'); ?&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt;
                &amp;lt;dt&amp;gt;&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;/dd&amp;gt;&lt;br /&gt;
                &amp;lt;dt&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
            	&amp;lt;dd&amp;gt;&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_helloworld&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;updhelloworld.submit&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/dd&amp;gt;&lt;br /&gt;
                &amp;lt;dt&amp;gt;&amp;lt;/dt&amp;gt;&lt;br /&gt;
                &amp;lt;dd&amp;gt;&amp;lt;button type=&amp;quot;submit&amp;quot; class=&amp;quot;button&amp;quot;&amp;gt;&amp;lt;?php echo JText::_('Submit'); ?&amp;gt;&amp;lt;/button&amp;gt;&lt;br /&gt;
			                &amp;lt;?php echo JHtml::_('form.token'); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/dd&amp;gt;&lt;br /&gt;
        	&amp;lt;/dl&amp;gt;&lt;br /&gt;
        &amp;lt;fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;/form&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This layout utilises the forms design which resides with the related model.  The getLabel and getInput will pickup the xml fields defined and display appropriately.  More on the xml file within the models section of this tutorial.&lt;br /&gt;
&lt;br /&gt;
Update the file ''site/views/updhelloworld/tmpl/default.xml'' to include the definitions of the parameter fields.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/updhelloworld/tmpl/default.xml&amp;quot;&amp;gt;&lt;br /&gt;
''site/views/updhelloworld/tmpl/default.xml''&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;COM_HELLOWORLD_UPDHELLOWORLD_VIEW_DEFAULT_TITLE&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;message&amp;gt;COM_HELLOWORLD_UPDHELLOWORLD_VIEW_DEFAULT_DESC&amp;lt;/message&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
    &amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fieldset name=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;field name=&amp;quot;headingtxtcolor&amp;quot; type=&amp;quot;text&amp;quot; default=&amp;quot;#ff0000&amp;quot; size=&amp;quot;40&amp;quot;&lt;br /&gt;
                label=&amp;quot;COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGTXTCOLOR_LABEL&amp;quot;&lt;br /&gt;
                description=&amp;quot;COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGTXTCOLOR_DESC&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;field name=&amp;quot;headingbgcolor&amp;quot; type=&amp;quot;text&amp;quot; default=&amp;quot;#0000ff&amp;quot; size=&amp;quot;40&amp;quot;&lt;br /&gt;
                label=&amp;quot;COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGBGCOLOR_LABEL&amp;quot;&lt;br /&gt;
                description=&amp;quot;COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGBGCOLOR_DESC&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This defines the parameter fields and allows for default values to be set amongst any other JForms elements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update the model ==&lt;br /&gt;
&lt;br /&gt;
The ''UpdHelloWorld'' model sets up the data sent from the related form and allows for saving the data from the form into the database.  In the getItem method we will get the values from the parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/models/updhelloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
''site/models/updhelloworld.php''&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;
// Include dependancy of the main model form&lt;br /&gt;
jimport('joomla.application.component.modelform');&lt;br /&gt;
// import Joomla modelitem library&lt;br /&gt;
jimport('joomla.application.component.modelitem');&lt;br /&gt;
// Include dependancy of the dispatcher&lt;br /&gt;
jimport('joomla.event.dispatcher');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * UpdHelloWorld Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelUpdHelloWorld extends JModelForm&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * @var object item&lt;br /&gt;
	 */&lt;br /&gt;
	protected $item;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get the data for a new qualification&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForm($data = array(), $loadData = true)&lt;br /&gt;
	{&lt;br /&gt;
&lt;br /&gt;
        $app = JFactory::getApplication('site');&lt;br /&gt;
&lt;br /&gt;
        // Get the form.&lt;br /&gt;
		$form = $this-&amp;gt;loadForm('com_helloworld.updhelloworld', 'updhelloworld', array('control' =&amp;gt; 'jform', 'load_data' =&amp;gt; true));&lt;br /&gt;
		if (empty($form)) {&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		return $form;&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get the message&lt;br /&gt;
	 * @return object The message to be displayed to the user&lt;br /&gt;
	 */&lt;br /&gt;
	function &amp;amp;getItem()&lt;br /&gt;
	{&lt;br /&gt;
&lt;br /&gt;
		if (!isset($this-&amp;gt;_item))&lt;br /&gt;
		{&lt;br /&gt;
			$cache = JFactory::getCache('com_helloworld', '');&lt;br /&gt;
			$id = $this-&amp;gt;getState('helloworld.id');&lt;br /&gt;
			$this-&amp;gt;_item =  $cache-&amp;gt;get($id);&lt;br /&gt;
			if ($this-&amp;gt;_item === false) {&lt;br /&gt;
&lt;br /&gt;
                // Menu parameters&lt;br /&gt;
                $menuitemid = JRequest::getInt( 'Itemid' );  // this returns the menu id number so you can reference parameters&lt;br /&gt;
                $menu = JSite::getMenu();&lt;br /&gt;
                if ($menuitemid) {&lt;br /&gt;
                   $menuparams = $menu-&amp;gt;getParams( $menuitemid );&lt;br /&gt;
                   $headingtxtcolor = $menuparams-&amp;gt;get('headingtxtcolor');  // This shows how to get an individual parameter for use&lt;br /&gt;
                   $headingbgcolor = $menuparams-&amp;gt;get('headingbgcolor');  // This shows how to get an individual parameter for use&lt;br /&gt;
                }&lt;br /&gt;
                $this-&amp;gt;setState('menuparams', $menuparams);  // this sets the parameter values to the state for later use&lt;br /&gt;
&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return $this-&amp;gt;_item;&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function updItem($data)&lt;br /&gt;
	{&lt;br /&gt;
        // set the variables from the passed data&lt;br /&gt;
        $id = $data['id'];&lt;br /&gt;
        $greeting = $data['greeting'];&lt;br /&gt;
&lt;br /&gt;
        // set the data into a query to update the record&lt;br /&gt;
		$db		= $this-&amp;gt;getDbo();&lt;br /&gt;
		$query	= $db-&amp;gt;getQuery(true);&lt;br /&gt;
        $query-&amp;gt;clear();&lt;br /&gt;
		$query-&amp;gt;update(' #__helloworld ');&lt;br /&gt;
		$query-&amp;gt;set(' greeting = '.$db-&amp;gt;Quote($greeting) );&lt;br /&gt;
		$query-&amp;gt;where(' id = ' . (int) $id );&lt;br /&gt;
&lt;br /&gt;
		$db-&amp;gt;setQuery((string)$query);&lt;br /&gt;
&lt;br /&gt;
        if (!$db-&amp;gt;query()) {&lt;br /&gt;
            JError::raiseError(500, $db-&amp;gt;getErrorMsg());&lt;br /&gt;
        	return false;&lt;br /&gt;
        } else {&lt;br /&gt;
        	return true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add a stylesheet file ==&lt;br /&gt;
&lt;br /&gt;
Create a new stylesheet file to contain the css code you want to use on your component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;media/css/site.stylesheet.css&amp;quot;&amp;gt;&lt;br /&gt;
''media/css/site.stylesheet.css''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
p {&lt;br /&gt;
   color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding some language keys ==&lt;br /&gt;
&lt;br /&gt;
Add the last 4 lines to the ''admin/language/en-GB/en-GB.com_helloworld.sys.ini'' file to provide the text link for the parameter type display.  And being for the backend, it resides in the admin language folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/language/en-GB/en-GB.com_helloworld.sys.ini&amp;quot;&amp;gt;&lt;br /&gt;
''admin/language/en-GB/en-GB.com_helloworld.sys.ini''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
COM_HELLOWORLD=&amp;quot;Hello World!&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_DESCRIPTION=&amp;quot;This is the Hello World description&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC=&amp;quot;This view displays a selected message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE=&amp;quot;Hello World&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_INSTALL_TEXT=&amp;quot;HelloWorld Install script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MENU=&amp;quot;Hello World!&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_POSTFLIGHT_DISCOVER_INSTALL_TEXT=&amp;quot;HelloWorld postlight discover install script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_POSTFLIGHT_INSTALL_TEXT=&amp;quot;HelloWorld postflight install script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_POSTFLIGHT_UNINSTALL_TEXT=&amp;quot;HelloWorld postflight uninstall script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_POSTFLIGHT_UPDATE_TEXT=&amp;quot;HelloWorld postflight update script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PREFLIGHT_DISCOVER_INSTALL_TEXT=&amp;quot;HelloWorld preflight discover install script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PREFLIGHT_INSTALL_TEXT=&amp;quot;HelloWorld preflight install script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PREFLIGHT_UNINSTALL_TEXT=&amp;quot;HelloWorld preflight uninstall script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PREFLIGHT_UPDATE_TEXT=&amp;quot;HelloWorld preflight update script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UNINSTALL_TEXT=&amp;quot;HelloWorld Uninstall script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDATE_TEXT=&amp;quot;HelloWorld Update script&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDHELLOWORLD_VIEW_DEFAULT_TITLE=&amp;quot;Update the Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDHELLOWORLD_VIEW_DEFAULT_DESC=&amp;quot;Update greeting here&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGTXTCOLOR_LABEL=&amp;quot;Colour of Text&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGTXTCOLOR_DESC=&amp;quot;Set the colour of the text on the heading&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGBGCOLOR_LABEL=&amp;quot;Colour of Background&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_UPDHELLOWORLD_FIELD_HEADINGBGCOLOR_DESC=&amp;quot;Set the colour of the background on the heading&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ''_populateState'' method is, by default, automatically called when a state is read by the ''getState'' method.&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory-&lt;br /&gt;
* ''[[#helloworld.xml|helloworld.xml]]''&lt;br /&gt;
* ''[[#script.php|script.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_02#site/helloworld.php|site/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_02#site/controller.php|site/controller.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/updhelloworld.php|site/updhelloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/controllers/updhelloworld.php|site/controllers/updhelloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/controllers/index.html|site/controllers/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/helloworld/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/views/updhelloworld/view.html.php|site/views/updhelloworld/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/helloworld/tmpl/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/updhelloworld/tmpl/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_06#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/views/updhelloworld/tmpl/default.xml|site/views/updhelloworld/tmpl/default.xml]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/views/updhelloworld/tmpl/default.php|site/views/updhelloworld/tmpl/default.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/models/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#site/models/helloworld.php|site/models/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/models/updhelloworld.php|site/models/updhelloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_18#site/models/forms/updhelloworld.xml|site/models/forms/updhelloworld.xml]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/models/forms/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/language/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/language/en-GB/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_08#site/language/en-GB/en-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/access.xml|admin/access.xml]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/config.xml|admin/config.xml]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/helloworld.php|admin/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_12#admin/controller.php|admin/controller.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/sql/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_06#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/sql/updates/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/sql/updates/mysql/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_06#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_12#admin/sql/updates/mysql/0.0.12.sql|admin/sql/updates/mysql/0.0.12.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#admin/sql/updates/mysql/0.0.13.sql|admin/sql/updates/mysql/0.0.13.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/models/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/models/fields/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_12#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/models/forms/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_11#admin/models/forms/helloworld.js|admin/models/forms/helloworld.js]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/models/rules/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_11#admin/models/rules/greeting.php|admin/models/rules/greeting.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/models/helloworld.php|admin/models/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_09#admin/models/helloworlds.php|admin/models/helloworlds.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/views/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/views/helloworlds/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/views/helloworlds/tmpl/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_11#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_07#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_07#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_07#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/views/helloworld/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_11#admin/views/helloworld/submitbutton.js|admin/views/helloworld/submitbutton.js]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/views/helloworld/tmpl/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/helpers/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/helpers/helloworld.php|admin/helpers/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/tables/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_14#admin/tables/helloworld.php|admin/tables/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_13#admin/language/en-GB/en-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]''&lt;br /&gt;
* ''[[#admin/language/en-GB/en-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/controllers/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_11#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_11#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_08#language/en-GB/en-GB.ini|language/en-GB/en-GB.ini]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|media/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|media/images/index.html]]''&lt;br /&gt;
* ''media/images/tux-16x16.png''&lt;br /&gt;
* ''media/images/tux-48x48.png''&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://www.glennarkell.com/joomlaorg/com_helloworld_0.0.19.zip] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
Be sure to update your manifest to include the stylesheet folder within the media section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
''helloworld.xml''&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;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;name&amp;gt;COM_HELLOWORLD&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting conttraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.19&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;!-- Runs on install/uninstall/update; New in 2.5 --&amp;gt;&lt;br /&gt;
	&amp;lt;scriptfile&amp;gt;script.php&amp;lt;/scriptfile&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on 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.mysql.utf8.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; &amp;lt;!-- Runs on 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.mysql.utf8.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; &amp;lt;!-- Runs on update; New in 2.5 --&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/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.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;filename&amp;gt;updhelloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;media destination=&amp;quot;com_helloworld&amp;quot; folder=&amp;quot;media&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;css&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/media&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu img=&amp;quot;../media/com_helloworld/images/tux-16x16.png&amp;quot;&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;config.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;access.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.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;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- helpers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;language/en-GB/en-GB.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;language/en-GB/en-GB.com_helloworld.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;/languages&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;!-- UPDATESERVER DEFINITION --&amp;gt;&lt;br /&gt;
	&amp;lt;updateservers&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note: No spaces or linebreaks allowed between the server tags --&amp;gt;&lt;br /&gt;
		&amp;lt;server type=&amp;quot;extension&amp;quot; priority=&amp;quot;1&amp;quot; name=&amp;quot;HelloWorld Update Site&amp;quot;&amp;gt;http://yourdomain.com/update/helloworld-update.xml&amp;lt;/server&amp;gt;&lt;br /&gt;
	&amp;lt;/updateservers&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now when you view your '''hello-world''' update function via the front-end menu option, you will see the colours of the text and background being utilised.&lt;br /&gt;
&lt;br /&gt;
== Zips ==&lt;br /&gt;
Download the zip file for this Part:&lt;br /&gt;
[http://www.glennarkell.com/joomlaorg/com_helloworld_0.0.19.zip]&lt;br /&gt;
&lt;br /&gt;
== Navigate ==&lt;br /&gt;
&lt;br /&gt;
[[Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Part 18|Prev: Example of a Frontend Update Function]]&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:garkell|Glenn Arkell]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&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:Manual]]&lt;/div&gt;</summary>
		<author><name>Garkell</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Components:jform_fields</id>
		<title>Components:jform fields</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Components:jform_fields"/>
				<updated>2012-05-11T09:37:28Z</updated>
		
		<summary type="html">&lt;p&gt;Svanschu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is a startup of a JForm field reference.&lt;br /&gt;
== XML Values ==&lt;br /&gt;
* type - defines the type attribute of the field&lt;br /&gt;
* name - defines the name attribute of the field&lt;br /&gt;
* id - defines the id attribute of the field&lt;br /&gt;
* label - text which get shown on the left side of the field&lt;br /&gt;
* description - is mainly used for tooltips over the label&lt;br /&gt;
* site - defines the size attribute&lt;br /&gt;
* required - value &amp;quot;true&amp;quot; and &amp;quot;required&amp;quot; allowed. Defines the required attribute of the field. Creates a * behind the label&lt;br /&gt;
* default - defines the default value of a field&lt;br /&gt;
&lt;br /&gt;
== Input fields ==&lt;br /&gt;
=== Text ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
	type=&amp;quot;text&amp;quot;&lt;br /&gt;
	name=&amp;quot;my_textfield&amp;quot;&lt;br /&gt;
	id=&amp;quot;my_textfield&amp;quot;&lt;br /&gt;
	label=&amp;quot;my_textfield_label&amp;quot;&lt;br /&gt;
        description=&amp;quot;my_textfield_description&amp;quot;&lt;br /&gt;
	size=&amp;quot;20&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== List/Radio/checkbox ===&lt;br /&gt;
List, radio and checkboxes have the same structure. Just change the type value to one of these.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
	type=&amp;quot;list&amp;quot;&lt;br /&gt;
	name=&amp;quot;my_list&amp;quot;&lt;br /&gt;
	id=&amp;quot;my_list&amp;quot;&lt;br /&gt;
	label=&amp;quot;my_list_label&amp;quot;&lt;br /&gt;
	description=&amp;quot;my_list_description&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;-1&amp;quot;&amp;gt;Bitte wählen&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;Option 1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;2&amp;quot;&amp;gt;Option 2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;3&amp;quot;&amp;gt;Option 3&amp;lt;/option&amp;gt;&lt;br /&gt;
	&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Textarea ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
	type=&amp;quot;textarea&amp;quot;&lt;br /&gt;
	name=&amp;quot;my_textarea&amp;quot;&lt;br /&gt;
	id=&amp;quot;my_textarea&amp;quot;&lt;br /&gt;
	label=&amp;quot;my_textarea_label&amp;quot;&lt;br /&gt;
	cols=&amp;quot;5&amp;quot;&lt;br /&gt;
	rows=&amp;quot;25&amp;quot;&lt;br /&gt;
	&amp;gt;&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
	type=&amp;quot;calendar&amp;quot;&lt;br /&gt;
	name=&amp;quot;my_calendar&amp;quot;&lt;br /&gt;
	id=&amp;quot;my_calendar&amp;quot;&lt;br /&gt;
	label=&amp;quot;my_calendar_label&amp;quot;&lt;br /&gt;
        description=&amp;quot;my_calendar_description&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot;&lt;br /&gt;
	format=&amp;quot;%d.%m.%Y&amp;quot;&lt;br /&gt;
	default=&amp;quot;now&amp;quot;&amp;gt;&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Svanschu</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Working_with_Git_and_Eclipse</id>
		<title>Working with Git and Eclipse</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Working_with_Git_and_Eclipse"/>
				<updated>2012-05-09T18:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Dextercowley: remove inuse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This article discusses how to set up and use eGit (the Eclipse version of Git) with Eclipse version 3.7.2 (available as of March 2012). It is important to have the latest version of Eclipse in order to use the latest (and most stable) version of eGit. &lt;br /&gt;
&lt;br /&gt;
If you have an older version of Eclipse, it is quite easy to try the latest version without removing your old version. Simply install the new version in a different directory than the existing Eclipse version and use the same Eclipse workspace. All of your projects and preferences are saved in the workpace and will be available to the new Eclipse version. If for some reason you need to go back to your old Eclipse version, just close the new version and start the old one.&lt;br /&gt;
&lt;br /&gt;
=Installing Eclipse with PHP and Git=&lt;br /&gt;
To Install Eclipse with PHP and Git, follow these steps:&lt;br /&gt;
# Install Eclipse for Javascript Web Developers from [http://eclipse.org/downloads/ Eclipse Downloads]. This will give you a version of Eclipse with XML and HTML file editing (but without eGit or PHP).&lt;br /&gt;
#  To add eGit and PHP, navigate to Eclipse&amp;amp;rarr;Help&amp;amp;rarr;Install New Software, as shown below. [[File:eclipse-install-372-screenshot-01.png|frame|none]]&lt;br /&gt;
# Select Indigo update site as shown below. [[File:eclipse-install-372-screenshot-02.png|frame|none]]&lt;br /&gt;
# This will present a list of all of the available Eclipse plugins. Select the three git options under Collaboration, as shown below. [[File:eclipse-install-372-screenshot-03.png|frame|none]]&lt;br /&gt;
# Then select the PHP Development Tools (PDT) option under Programming Languages as shown below: [[File:eclipse-install-372-screenshot-04.png|frame|none]]&lt;br /&gt;
# Then click through the rest of the wizard and accept the terms of the license agreement. At this point, the requested plugins will be downloaded. After this, you will be prompted to restart Eclipse (which you should do).&lt;br /&gt;
&lt;br /&gt;
At this point, you should have PHP and eGit installed with Eclipse. Confirm this by selecting Window&amp;amp;rarr;Open Perspective&amp;amp;rarr;Other and make sure that the PHP and Git Repositories perspectives show on the list.&lt;br /&gt;
&lt;br /&gt;
=Creating a Project from a Remote Repository=&lt;br /&gt;
&lt;br /&gt;
Normally the first task we need to do is to create an Eclipse project from a remote Git repository (usually on Github). The repository might be a fork we have created for our own use or it might be a Joomla project (CMS or Platform) or someone else's project. In any case, we follow the same three steps:&lt;br /&gt;
# Clone the remote repository into a local Git repository.&lt;br /&gt;
# Create a new PHP project in our Eclipse workspace.&lt;br /&gt;
# Share the project. This associates the Eclipse project with the local Git repository.&lt;br /&gt;
&lt;br /&gt;
Note that there are different ways to accomplish this. Here are detailed instructions for one way to do this.&lt;br /&gt;
==Clone the Remote Repository==&lt;br /&gt;
One easy to way to clone a remote repository is using the Git Repositories view in Eclipse. Here are the steps:&lt;br /&gt;
# Open the Git Repositories view (Windows&amp;amp;rarr;Show View&amp;amp;rarr;Git Repositories) and click on the Clone button as shown below.[[File:git-eclipse-screenshot-01.png|frame|none]]&lt;br /&gt;
# Select URI and click Next.[[File:git-eclipse-screenshot-02.png|frame|none]]&lt;br /&gt;
# At this point, we need the URL from Github. We can use either SSH or HTTPS. SSH requires that you have created SSH keys in Github and stored them in Eclipse. Find the desired repository in Github. To use SSH, select the SSH tab and Copy to Clipboard button.[[File:git-eclipse-screenshot-03.png|frame|none]]&lt;br /&gt;
# Paste this value into the URI value in the Eclipse form and select SSH as the protocol and check the box &amp;quot;Store in Secure Store&amp;quot;, as shown here.[[File:git-eclipse-screenshot-04.png|frame|none]] Then click Next.&lt;br /&gt;
# If you want to use HTTPS instead of SSH, in Github select the HTTP tab as shown here.[[File:git-eclipse-screenshot-03a.png|frame|none]]&lt;br /&gt;
# For HTTPS, select HTTPS as the protocol and fill in your Github user name and password, again checking the box &amp;quot;Store in Secure Store&amp;quot;. This is shown below.[[File:git-eclipse-screenshot-04a.png|frame|none]] Then click Next.&lt;br /&gt;
# Here we select the branch to track. Normally this is the master branch, as shown here.[[File:git-eclipse-screenshot-05.png|frame|none]]Select the desired branch and click Next.&lt;br /&gt;
# Next we select the local destination for the repository. This will normally be the same as the project location for the PHP project. The remote repository name defaults to &amp;quot;origin&amp;quot;, as shown in the example below.[[File:git-eclipse-screenshot-06.png|frame|none]] Then click finish to create the repository.&lt;br /&gt;
#:''Note that the eGit Help documentation advises against storing the local Git repository in the project folder. However, in practice this appears to the best way to do it.''&lt;br /&gt;
# At this point, the repository should show in the Git Repositories view as shown here (for SSH).[[File:git-eclipse-screenshot-07.png|frame|none]]Note that the remote repository shows under the name &amp;quot;origin&amp;quot;. If you used HTTP instead of SSH, the origin repository will show as follows.[[File:git-eclipse-screenshot-07a.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
==Create the PHP Project==&lt;br /&gt;
&lt;br /&gt;
At this point, we have the local repository created. Now we want to create a PHP project in the same directory that we used for the repository. Here are the steps.&lt;br /&gt;
# Select File&amp;amp;rarr;New&amp;amp;rarr;PHP project as shown here.[[File:git-eclipse-screenshot-08.png|frame|none]]&lt;br /&gt;
# Enter the directory for the new project. This will normally be the same as we used for the local repository, as shown here.[[File:git-eclipse-screenshot-09.png|frame|none]]Note that we get the warning message indicating that the location already exists. That is expected.&lt;br /&gt;
# Click Finish to create the project. At this point, we should have the PHP project with all of the files from the remote repository, as shown here.[[File:git-eclipse-screenshot-10.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
==Share the PHP Project==&lt;br /&gt;
&lt;br /&gt;
At this stage, we have our local project in Eclipse. However, it is not associated with the Git repository. To do that, we have to &amp;quot;share&amp;quot; the project. Here are the steps.&lt;br /&gt;
# Right click on the project to show the context menu. Select Team&amp;amp;rarr;Share Project as shown below.[[File:git-eclipse-screenshot-11.png|frame|none]]&lt;br /&gt;
# The Share Project form will show. Select Git and click Next.[[File:git-eclipse-screenshot-12.png|frame|none]]&lt;br /&gt;
# The Configure Git Repository form will show. Click on the check box &amp;quot;Use or create repository in parent folder of project&amp;quot;, as shown below.[[File:git-eclipse-screenshot-13.png|frame|none]]&lt;br /&gt;
# Now the form should show as shown below.[[File:git-eclipse-screenshot-14.png|frame|none]]Click Finish.&lt;br /&gt;
&lt;br /&gt;
At this point, our PHP project is now under version control using the local clone of the remote repository. If we close the project and re-open it, we should see the small orange &amp;quot;decorators&amp;quot; next to each file and folder under version control, as shown below.[[File:git-eclipse-screenshot-15.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Bug Squad]] [[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Dextercowley</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Making_non-core_language_packs_in_2.5</id>
		<title>Making non-core language packs in 2.5</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Making_non-core_language_packs_in_2.5"/>
				<updated>2012-05-09T15:39:13Z</updated>
		
		<summary type="html">&lt;p&gt;Infograf768: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To make a non-core language pack in 2.5 is quite different from making a Core pack.&lt;br /&gt;
&lt;br /&gt;
http://docs.joomla.org/Making_a_Language_Pack_for_Joomla_1.6&lt;br /&gt;
&lt;br /&gt;
The type of package is a &amp;quot;file&amp;quot; type.&lt;br /&gt;
&lt;br /&gt;
Here is a typical xml including installing ini files into the administrator and site CORE default language folders for one language and one extension only. Many languages and many extensions can be included in the same .zip.&lt;br /&gt;
&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;extension type=&amp;quot;file&amp;quot; version=&amp;quot;2.5&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Please use a unique name to make uninstall to work. Should be identical to your manifest filename. --&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;lang_extensionname_fr-FR&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;French Translation Team&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;24 Janvier 2012&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;(C) 2005-2012 Whoever&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;info@whoever&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.myextension.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;1.0.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;This fr-FR lang pack for myextension has been installed successfully&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Fileset definition --&amp;gt;&lt;br /&gt;
	&amp;lt;fileset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- back-end --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin/fr-FR&amp;quot; target=&amp;quot;administrator/language/fr-FR&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.com_myextension.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.com_myextension.sys.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.plg_system_myextension.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.plg_system_myextension.sys.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;!-- front-end --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;site/fr-FR&amp;quot; target=&amp;quot;language/fr-FR&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.com_myextension.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.com_myextension.sys.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.mod_myextension.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;fr-FR.mod_myextension.sys.ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/fileset&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .zip in this case is composed of the xml above and 2 folders: site and admin, each of them containing a fr-FR folder with the ini files.&lt;br /&gt;
&lt;br /&gt;
lang_extensionname_fr-FR.xml&lt;br /&gt;
&lt;br /&gt;
site/fr-FR/ + all ini files + index.html&lt;br /&gt;
&lt;br /&gt;
admin/fr-FR/ + all ini files + index.html&lt;br /&gt;
&lt;br /&gt;
The result is the installation of the ini files in an existing fr-FR folder or creating one if does not exist.&lt;br /&gt;
&lt;br /&gt;
It has no impact on existing files. Uninstalling the &amp;quot;File&amp;quot; pack (Extensions Manager=&amp;gt;Manage=&amp;gt;Filter by &amp;quot;file&amp;quot;) will only uninstall the ini files listed.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: In 2.5, except if one uses a specific script, the language xx-XX folders will always be created if they do not already exist.'''&lt;br /&gt;
&lt;br /&gt;
== Make it multi-language ==&lt;br /&gt;
&lt;br /&gt;
If you want to pack all the available languages into one installable file, but want to be able to use separate file extensions (as explained above) to be able to uninstall or install them separately, a package with a small script is needed.&lt;br /&gt;
&lt;br /&gt;
Following code will only install those languages which exist in your Joomla installation. If new languages are added, package needs to be installed again.&lt;br /&gt;
&lt;br /&gt;
''pkg_kunena_languages.xml'' (in our example):&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;extension type=&amp;quot;package&amp;quot; version=&amp;quot;2.5&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Put anything into here, name is only shown in extension manager. --&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Kunena Language Pack&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Filename without &amp;quot;pkg_&amp;quot; prefix. Must be unique or uninstall breaks. --&amp;gt;&lt;br /&gt;
	&amp;lt;packagename&amp;gt;kunena_languages&amp;lt;/packagename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;version&amp;gt;2.0.0&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;2012-05-09&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;Kunena Team&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;kunena@kunena.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.kunena.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;(C) 2008 - 2012 Kunena Team. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;GNU/GPL&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Language pack for Kunena forum component.&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;scriptfile&amp;gt;install.script.php&amp;lt;/scriptfile&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;language&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Content will be added by our installer script --&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''install.script.php'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
defined( '_JEXEC' ) or die();&lt;br /&gt;
&lt;br /&gt;
// Needed in Joomla &amp;lt; 2.5:&lt;br /&gt;
jimport( 'joomla.filesystem.folder' );&lt;br /&gt;
jimport( 'joomla.installer.installer' );&lt;br /&gt;
&lt;br /&gt;
// FIXME: remember to change class name&lt;br /&gt;
class pkg_kunena_languagesInstallerScript {&lt;br /&gt;
&lt;br /&gt;
	// FIXME: remember to change language package name&lt;br /&gt;
	protected $name = 'com_kunena';&lt;br /&gt;
&lt;br /&gt;
	public function uninstall($parent) {&lt;br /&gt;
		// Remove languages.&lt;br /&gt;
		$languages = JFactory::getLanguage()-&amp;gt;getKnownLanguages();&lt;br /&gt;
		foreach ($languages as $language) {&lt;br /&gt;
			echo $this-&amp;gt;uninstallLanguage($language['tag'], $language['name']);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function preflight($type, $parent) {&lt;br /&gt;
		if (!in_array($type, array('install', 'update'))) return true;&lt;br /&gt;
&lt;br /&gt;
		$app = JFactory::getApplication();&lt;br /&gt;
&lt;br /&gt;
		// If you want, you can detect your extension in here and fail with a message if it is not installed.&lt;br /&gt;
&lt;br /&gt;
		// Get list of languages to be installed. Only installs languages that are found in your system.&lt;br /&gt;
		$source = $parent-&amp;gt;getParent()-&amp;gt;getPath('source').'/language';&lt;br /&gt;
		$languages = JFactory::getLanguage()-&amp;gt;getKnownLanguages();&lt;br /&gt;
&lt;br /&gt;
		$files = $parent-&amp;gt;manifest-&amp;gt;files;&lt;br /&gt;
		foreach ($languages as $language) {&lt;br /&gt;
			$search = JFolder::files($source, $language['tag']);&lt;br /&gt;
			if (empty($search)) continue;&lt;br /&gt;
&lt;br /&gt;
			// Generate something like &amp;lt;file type=&amp;quot;file&amp;quot; client=&amp;quot;site&amp;quot; id=&amp;quot;com_kunena_fi-FI&amp;quot;&amp;gt;com_kunena_fi-FI_v2.0.0.zip&amp;lt;/file&amp;gt;&lt;br /&gt;
			$file = $files-&amp;gt;addChild('file', array_pop($search));&lt;br /&gt;
			$file-&amp;gt;addAttribute('type', 'file');&lt;br /&gt;
			$file-&amp;gt;addAttribute('client', 'site');&lt;br /&gt;
			$file-&amp;gt;addAttribute('id', $this-&amp;gt;name.'_'.$language['tag']);&lt;br /&gt;
			echo sprintf('Installing language %s - %s ...', $language['tag'], $language['name']) . '&amp;lt;br /&amp;gt;';&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (empty($files)) {&lt;br /&gt;
			// No packages to install: replace failure message with something that's more descriptive.&lt;br /&gt;
			$app-&amp;gt;enqueueMessage(sprintf ( 'Your site is English only. There\'s no need to install language pack.' ), 'notice');&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function uninstallLanguage($tag, $name) {&lt;br /&gt;
		$table = JTable::getInstance('extension');&lt;br /&gt;
		$id = $table-&amp;gt;find(array('type'=&amp;gt;'file', 'element'=&amp;gt;&amp;quot;{$this-&amp;gt;name}_{$tag}&amp;quot;));&lt;br /&gt;
		if (!$id) return;&lt;br /&gt;
&lt;br /&gt;
		$installer = new JInstaller();&lt;br /&gt;
		$installer-&amp;gt;uninstall ( 'file', $id );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then just copy all the language zip files (or installable directories) under '''language''' folder. Just make sure that they all use the same naming convention before creating the installation pack.&lt;br /&gt;
&lt;br /&gt;
The nicest thing in above installer pack is that there's no need to change anything if languages for your extension get added, removed or updated.&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Language Development]]&lt;/div&gt;</summary>
		<author><name>Infograf768</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Multi-site_Working_Group</id>
		<title>Multi-site Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Multi-site_Working_Group"/>
				<updated>2012-05-08T22:37:02Z</updated>
		
		<summary type="html">&lt;p&gt;Sueter: /* Coordinators &amp;amp; PLT Contact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Multi-site Working Group is a Production Working Group.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
The coordinator &amp;amp; PLT Contact for this working group is Christophe Demko (mailto:christophe.demko@joomla.org).&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Sueter</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Unified_Content_Model_Working_Group</id>
		<title>Unified Content Model Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Unified_Content_Model_Working_Group"/>
				<updated>2012-05-08T22:35:12Z</updated>
		
		<summary type="html">&lt;p&gt;Sueter: Created page with &amp;quot;The Unified Content Model Working Group is a Production Working Group.                  UCM is powerful new tool that is proposed for inclusion in the Platform. What use will the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Unified Content Model Working Group is a Production Working Group.                  UCM is powerful new tool that is proposed for inclusion in the Platform. What use will the CMS make of it, what are the backward compatibility issues involved, what new coding would be needed to use it in the CMS, and what are the implications for third party extensions are all open questions. &lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Sueter</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Web_Services_Working_Group</id>
		<title>Web Services Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Web_Services_Working_Group"/>
				<updated>2012-05-08T22:33:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sueter: Created page with &amp;quot;The Web Services Working Group is a Production Working Group.  ==Coordinators &amp;amp; PLT Contact==  ==Announcements==  ==External resources==  ==Deliverables==  ==Technical Work produ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Web Services Working Group is a Production Working Group.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Sueter</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User_Experience_Working_Group</id>
		<title>User Experience Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User_Experience_Working_Group"/>
				<updated>2012-05-08T22:31:23Z</updated>
		
		<summary type="html">&lt;p&gt;Sueter: Created page with &amp;quot;The User Experience Working Group is a Production Working Group.  ==Coordinators &amp;amp; PLT Contact==  ==Announcements==  ==External resources==  ==Deliverables==  ==Technical Work pr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The User Experience Working Group is a Production Working Group.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Sueter</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Update_and_Migration_Working_Group</id>
		<title>Update and Migration Working Group</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Update_and_Migration_Working_Group"/>
				<updated>2012-05-08T22:30:16Z</updated>
		
		<summary type="html">&lt;p&gt;Sueter: Created page with &amp;quot;The Update and Migration Working Group is a Production Working Group.  Dealing with updates and migration should be a part of every Working Group that makes changes that break ba...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Update and Migration Working Group is a Production Working Group.&lt;br /&gt;
&lt;br /&gt;
Dealing with updates and migration should be a part of every Working Group that makes changes that break backward compatibility, but we need a group that can make sure that the software and tools are ready to migrate from 2.5 to 3.x. as seamlessly as possible.&lt;br /&gt;
&lt;br /&gt;
==Coordinators &amp;amp; PLT Contact==&lt;br /&gt;
The PLT Contact for this group is Mark Dexter.&lt;br /&gt;
&lt;br /&gt;
==Announcements==&lt;br /&gt;
&lt;br /&gt;
==External resources==&lt;br /&gt;
&lt;br /&gt;
==Deliverables==&lt;br /&gt;
&lt;br /&gt;
==Technical Work produced by this group==&lt;br /&gt;
&lt;br /&gt;
==Communications==&lt;br /&gt;
&lt;br /&gt;
==Roadmap==&lt;br /&gt;
&lt;br /&gt;
==Meetings==&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation Working Group]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Sueter</name></author>	</entry>

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

	<entry>
		<id>http://docs.joomla.org/Configuring_Komodo_Edit_for_Joomla_Code_Completion</id>
		<title>Configuring Komodo Edit for Joomla Code Completion</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Configuring_Komodo_Edit_for_Joomla_Code_Completion"/>
				<updated>2012-05-05T08:06:24Z</updated>
		
		<summary type="html">&lt;p&gt;Oasisfleeting: Created page with &amp;quot;{{inuse}} {{RightTOC}}  == Introduction ==  This article provides instructions for setting up Komodo Edit and code completion for joomla.  == Installation ==  1.) Download and in...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article provides instructions for setting up Komodo Edit and code completion for joomla.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
1.) Download and install the latest version of Komodo Edit from here. http://www.activestate.com/komodo-edit&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Download the [http://www.joomla.org/ latest version]of Joomla.&lt;br /&gt;
&lt;br /&gt;
== Put Joomla Somewhere Safe ==&lt;br /&gt;
Once you have downloaded the latest version of Joomla from the link above you'll want to put it somewhere on your drive where it won't get lost or deleted by accident. Unpack the Joomla file you just downloaded to this location.&lt;br /&gt;
&lt;br /&gt;
== Adding Joomla Path To Komodo ==&lt;br /&gt;
Start the Komodo Edit software you just downloaded and installed and in the menu at the top you will see a menu option titled Edit. Go to Edit -&amp;gt; Preferences and a dialog will appear. Find Languages in the list on the left, expand it and you will see another list of languages, click PHP in the sublist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On the right of the screen under PHP Directories you can specify any directories that you want Komodo to use for autocomplete and calltips. Komodo will recursibely scan these directories for information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Press the green plus icon to add a new directory and point it at the Joomla package you unzipped and placed somewhere safe. Mine is in &amp;quot;C:\joomla\joomla2_5\Joomla_2.5.4-Stable-Full_Package&amp;quot; press okay and the editor will add the all the joomla code to it's database and you'll have code completion as soon as it's done scanning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now you're ready to start coding. Type &amp;quot;JFactory::&amp;quot; into your new php extension and Komodo will list all the methods available to JFactory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Oasisfleeting</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Configuring_Komode_Edit_for_Joomla_Code_Completion</id>
		<title>Configuring Komode Edit for Joomla Code Completion</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Configuring_Komode_Edit_for_Joomla_Code_Completion"/>
				<updated>2012-05-05T07:15:08Z</updated>
		
		<summary type="html">&lt;p&gt;Oasisfleeting: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Oasisfleeting</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Configuring_a_LAMPP_server_for_PHP_development/Linux_desktop</id>
		<title>Configuring a LAMPP server for PHP development/Linux desktop</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Configuring_a_LAMPP_server_for_PHP_development/Linux_desktop"/>
				<updated>2012-05-05T01:33:41Z</updated>
		
		<summary type="html">&lt;p&gt;Enav: /* Further reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inuse}}&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article provides detailed instructions for configuring a LAMPP server, not only for Joomla! it also should work fine for PHP development in general.&lt;br /&gt;
&lt;br /&gt;
Theses instructions should work fine on any Debian based distribution such as Debian, Ubuntu, LinuxMint, Xubuntu, Kbuntu and others.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
'''NOTE:''' You need a stable Internet connection for this tutorial&lt;br /&gt;
&lt;br /&gt;
The installation of a LAMPP server on Linux is extremely easy, just follow this instructions:&lt;br /&gt;
&lt;br /&gt;
*Open a terminal and type:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server phpmyadmin libapache2-mod-suphp&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Say yes [Y] when the package manager ask you download and install the packages, this step will take some time depending on your connection speed&lt;br /&gt;
*At some point the installer will ask you for the MySQL root password use any password you like, but for this example we are going to use &amp;quot;myadmin&amp;quot;&lt;br /&gt;
*The installer will ask for &amp;quot;the web server that should be automatically configured to run phpmyadmin&amp;quot;, press [spacebar] to choose &amp;quot;apache2&amp;quot; and press [enter], '''NOTE:''' make sure the selection is marked with and asterisk [*] &lt;br /&gt;
*The installer will ask for &amp;quot;Configure database for phpmyadmin with dbconfig-common&amp;quot;, choose &amp;quot;&amp;lt;yes&amp;gt;&amp;quot; and press [enter]&lt;br /&gt;
*The installer will ask for &amp;quot;password of the database's administrative user&amp;quot;, use any password you like, but for this example we are going to use &amp;quot;myadmin&amp;quot;&lt;br /&gt;
*The installer will ask for &amp;quot;mysql application password for phpmyadmin&amp;quot;, use any password you like, but for this example we are going to use &amp;quot;myadmin&amp;quot;&lt;br /&gt;
*If no errors have being displayed then the installation is finish&lt;br /&gt;
&lt;br /&gt;
=== 1st test for Apache ===&lt;br /&gt;
&lt;br /&gt;
*Open your web browser and type in the address bar &amp;quot;localhost&amp;quot; and press [enter]&lt;br /&gt;
*Normally Apache display a test page with some text like this:&lt;br /&gt;
&lt;br /&gt;
 It works!&lt;br /&gt;
 This is the default web page for this server.&lt;br /&gt;
 The web server software is running but no content has been added, yet.&lt;br /&gt;
&lt;br /&gt;
=== 1st test for PHP server ===&lt;br /&gt;
&lt;br /&gt;
To test if PHP server is working lets create a quick test file using the command line&lt;br /&gt;
&lt;br /&gt;
*Open a terminal and type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &amp;quot;&amp;lt;?php phpinfo(); ?&amp;gt;&amp;quot; | sudo tee /var/www/test.php &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Open your web browser and type in the address bar &amp;quot;localhost/test.php&amp;quot; and press [enter]&lt;br /&gt;
*The next thing you should see in your browser is a really long page displaying information about the PHP server, if not then something went wrong&lt;br /&gt;
*Now that we know the PHP server is working fine we don't need that test file anymore, type the following command in your terminal to delete the file&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo rm /var/www/test.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1st test for phpMyAdmin ===&lt;br /&gt;
&lt;br /&gt;
*Open your web browser and type in the address bar &amp;quot;localhost/phpmyadmin&amp;quot; and press [enter]&lt;br /&gt;
*The next thing you should see is the phpMyadmin login page, if not then something went wrong, most likely you skip or not marked the option &amp;quot;apache2&amp;quot; at the question &amp;quot;web server that should be automatically configured to run phpmyadmin&amp;quot;, to fix this problem just purge the installation and start over again the installation steps&lt;br /&gt;
*Login to phpmyadmin with the following credentials &lt;br /&gt;
**username = root&lt;br /&gt;
**password = myadmin&lt;br /&gt;
*You should be able to login normally and have no error messages at all&lt;br /&gt;
&lt;br /&gt;
== Understanding the folder structure ==&lt;br /&gt;
&lt;br /&gt;
There are several folders and files that the LAMP server uses to store the configurations of the LAMP services and to store the files of your hosted websites&lt;br /&gt;
&lt;br /&gt;
=== Apache default web site folder === &lt;br /&gt;
&lt;br /&gt;
Location: &amp;quot;/var/www/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Description: by default the Apache server enables a test website and store the website files in that location, so every time you visit the page local host, the browser display the html page located there..&lt;br /&gt;
&lt;br /&gt;
With your file browser navigate to &amp;quot;/var/www/&amp;quot; there should be a file called &amp;quot;index.html&amp;quot;, change the content of the file for whatever you want and refresh the web page to see the changes. &lt;br /&gt;
&lt;br /&gt;
=== Apache web sites configuration files === &lt;br /&gt;
&lt;br /&gt;
Location: &amp;quot;/etc/apache2/sites-available/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Description: You can host multiples sites in the same server, this folder a configuration file for each site.&lt;br /&gt;
&lt;br /&gt;
=== Apache configuration file === &lt;br /&gt;
&lt;br /&gt;
Location: &amp;quot;/etc/apache2/apache2.conf&amp;quot;&lt;br /&gt;
Location: &amp;quot;/etc/apache2/envvars&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Description: This files contains very important information about the Apache service.&lt;br /&gt;
&lt;br /&gt;
=== Apache ports configuration file === &lt;br /&gt;
&lt;br /&gt;
Location: &amp;quot;/etc/apache2/ports.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Description: This files configure what port will Apache server listen to for http requests, by default http request are assigned to the port 80 but you can modify or add more ports.&lt;br /&gt;
&lt;br /&gt;
=== Apache log files === &lt;br /&gt;
&lt;br /&gt;
Location: &amp;quot;/var/log/apache2/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Description: That folder contain several files to keep track of several events on your Apache web server, such as errors in the services, errors in code of your site, failed authentication attempts and more, this is a good place to look at when something is not working file or you suspect some is trying to breach your server security&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Deploying a new site location ===&lt;br /&gt;
&lt;br /&gt;
By default the web server is hosting the files in the location &amp;quot;/var/www&amp;quot; but for security reason and for the sake of avoid ownership problems we are going to use another place to host our web site files&lt;br /&gt;
&lt;br /&gt;
Lets create a new folder to store the web files and the log files of the server&lt;br /&gt;
&lt;br /&gt;
* open a terminal and type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;mkdir /home/youruser/lamp/&lt;br /&gt;
 mkdir /home/youruser/lamp/public_html/&lt;br /&gt;
 mkdir /home/youruser/lamp/logs/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' You can place your new site folders on any location you desire, this is just an example, replace &amp;quot;youruser&amp;quot; with your actual Linux username&lt;br /&gt;
&lt;br /&gt;
To store the web site files we are going to use the folder &amp;quot;plublic_html&amp;quot; and for our log files we are going to use the folder &amp;quot;logs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Creating the new site ===&lt;br /&gt;
&lt;br /&gt;
To create and enable a new site in your server follow this steps:&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' gedit is a common Linux editor but you can use any other alternative you like such as geany, nano, vim, pico, etc...&lt;br /&gt;
&lt;br /&gt;
*open a terminal an type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mydevsite&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' &amp;quot;mydevsite&amp;quot; is the name of the new site used in this example, you can use any other name you like&lt;br /&gt;
&lt;br /&gt;
*Open the site configuration&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo gedit /etc/apache2/sites-available/mydevsite&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The content of that file should be something like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerAdmin webmaster@localhost&lt;br /&gt;
 &lt;br /&gt;
 	DocumentRoot /var/www&lt;br /&gt;
 	&amp;lt;Directory /&amp;gt;&lt;br /&gt;
 		Options FollowSymLinks&lt;br /&gt;
 		AllowOverride None&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;
 		Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
 		AllowOverride None&lt;br /&gt;
 		Order allow,deny&lt;br /&gt;
 		allow from all&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/&lt;br /&gt;
 	&amp;lt;Directory &amp;quot;/usr/lib/cgi-bin&amp;quot;&amp;gt;&lt;br /&gt;
 		AllowOverride None&lt;br /&gt;
 		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch&lt;br /&gt;
 		Order allow,deny&lt;br /&gt;
 		Allow from all&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 &lt;br /&gt;
 	# Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
 	# alert, emerg.&lt;br /&gt;
 	LogLevel warn&lt;br /&gt;
 &lt;br /&gt;
 	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &lt;br /&gt;
     Alias /doc/ &amp;quot;/usr/share/doc/&amp;quot;&lt;br /&gt;
     &amp;lt;Directory &amp;quot;/usr/share/doc/&amp;quot;&amp;gt;&lt;br /&gt;
         Options Indexes MultiViews FollowSymLinks&lt;br /&gt;
         AllowOverride None&lt;br /&gt;
         Order deny,allow&lt;br /&gt;
         Deny from all&lt;br /&gt;
         Allow from 127.0.0.0/255.0.0.0 ::1/128&lt;br /&gt;
     &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Make some modifications to make it looks like this, or simply copy and paste it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerAdmin webmaster@localhost&lt;br /&gt;
 &lt;br /&gt;
 	DocumentRoot /home/youruser/lamp/public_html&lt;br /&gt;
 	&amp;lt;Directory /&amp;gt;&lt;br /&gt;
 		Options FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	&amp;lt;Directory /home/youruser/lamp/public_html&amp;gt;&lt;br /&gt;
 		Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 		Order allow,deny&lt;br /&gt;
 		allow from all&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/&lt;br /&gt;
 	&amp;lt;Directory &amp;quot;/usr/lib/cgi-bin&amp;quot;&amp;gt;&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch&lt;br /&gt;
 		Order allow,deny&lt;br /&gt;
 		Allow from all&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	ErrorLog /home/youruser/lamp/logs/error.log&lt;br /&gt;
 &lt;br /&gt;
 	# Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
 	# alert, emerg.&lt;br /&gt;
 	LogLevel warn&lt;br /&gt;
 &lt;br /&gt;
 	CustomLog /home/youruser/lamp/logs/access.log combined&lt;br /&gt;
 &lt;br /&gt;
     Alias /doc/ &amp;quot;/usr/share/doc/&amp;quot;&lt;br /&gt;
     &amp;lt;Directory &amp;quot;/usr/share/doc/&amp;quot;&amp;gt;&lt;br /&gt;
         Options Indexes MultiViews FollowSymLinks&lt;br /&gt;
         AllowOverride All&lt;br /&gt;
         Order deny,allow&lt;br /&gt;
         Deny from all&lt;br /&gt;
         Allow from 127.0.0.0/255.0.0.0 ::1/128&lt;br /&gt;
     &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Replace &amp;quot;yourname&amp;quot; with your current user name&lt;br /&gt;
&lt;br /&gt;
*Save changes&lt;br /&gt;
*Now we need to enable the site, in a terminal type &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo a2ensite mydevsite&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lets disable the default site, we don't need it anymore&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo a2dissite default&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Restart Apache to complete the process, in a terminal type&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo service apache2 restart&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*To test out our new site lets create a quick test file, in a terminal type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &amp;quot;&amp;lt;?php echo 'Hello world, today is is: '.echo date('Y/m/d'); ?&amp;gt;&amp;quot; | tee /home/youruser/lamp/public_html/today.php &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Replace &amp;quot;yourname&amp;quot; with your current user name&lt;br /&gt;
&lt;br /&gt;
*Open your browser an navigate to &amp;quot;localhost/today.php&amp;quot;&lt;br /&gt;
*If everything is working ok you should see something like this &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;Hello world, today is is: 2012/05/05&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preventing ownership problems ===&lt;br /&gt;
&lt;br /&gt;
By default in some Linux installations the Apache server runs under the user &amp;quot;www-data&amp;quot; which is also in the &amp;quot;www-data&amp;quot; group, this behavior will bring us problems in the future because any file modified or created by the server will have a different ownership, in other words you wouldn't be able to edit some files created or modified by the server unless you manually change the permissions of each file to something like 777 or execute your editor as &amp;quot;super user&amp;quot; which both are really bad ideas.&lt;br /&gt;
&lt;br /&gt;
==== Method 1: Implementing suPHP ====&lt;br /&gt;
&lt;br /&gt;
suPHP is an Apache module used to execute PHP scripts with the permissions of their file owners&lt;br /&gt;
&lt;br /&gt;
This is how the server will work thanks to suPHP&lt;br /&gt;
&lt;br /&gt;
*If a PHP file have the owner &amp;quot;dexter&amp;quot; suPHP will execute that file as &amp;quot;dexter&amp;quot; and not as the Apache user aka &amp;quot;www-data&amp;quot;,&lt;br /&gt;
*If another file PHP file have the owner &amp;quot;adam&amp;quot; suPHP will execute that file as &amp;quot;adam&amp;quot; and not as the Apache user aka &amp;quot;www-data&amp;quot;&lt;br /&gt;
*If another file PHP file have the owner &amp;quot;www-data&amp;quot; suPHP will execute that file as &amp;quot;www-data&amp;quot; which is the Apache user&lt;br /&gt;
*If a folder have the owner &amp;quot;dexter&amp;quot; and it have a PHP file inside it with the owner &amp;quot;adam&amp;quot; the server will throw a &amp;quot;500&amp;quot; error when some one tries to request that file because it does not belong to &amp;quot;dexter&amp;quot;&lt;br /&gt;
*If a any PHP script tries to read or write files or folders outside the server's document root, then the server will deny the action&lt;br /&gt;
*If a file have too permissive permissions such as &amp;quot;chmod 666&amp;quot;, then the server will throw a &amp;quot;500&amp;quot; error because suPHP don't allow too permissive permissions for security reasons&lt;br /&gt;
&lt;br /&gt;
We already have suPHP installed, to Configure it follow this steps:&lt;br /&gt;
&lt;br /&gt;
*Open a terminal and Type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo gedit /etc/suphp/suphp.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Open a terminal and Type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo gedit /etc/suphp/suphp.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Find the option &amp;quot;docroot&amp;quot; and set the location of your public_html folder, like this&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;docroot= /home/youruser/lamp/public_html&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' You can place your new site folders on any location you desire, this is just an example, replace &amp;quot;youruser&amp;quot; with your actual Linux username&lt;br /&gt;
&lt;br /&gt;
*Save changes&lt;br /&gt;
*Type in your terminal&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo gedit /etc/apache2/mods-available/php5.conf&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*On your editor create a new empty line at the first line of the document and add this text there&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;Directory /usr/share&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Then at the end of the document create another empty line and add this text there&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;/Directory&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Save changes&lt;br /&gt;
*Type in your terminal&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo service apache2 restart&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lets create a file to do a quick test to see if suPHP is working correctly, type in your terminal&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &amp;quot;&amp;lt;?php echo 'whoim = '.exec('/usr/bin/whoami');?&amp;gt;&amp;quot; | tee /home/youruser/lamp/public_html/whomi.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Open your browser and navigate to &amp;quot;localhost/whomi.php&amp;quot;, most likely the browser will show you a &amp;quot;500&amp;quot; server error, this is because suPHP does not allow too permissive file and folder permissions and also does not allow mixed file and folder ownership, to correct this type in your terminal&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo find /home/youruser/lamp/public_html/ -type f -exec chmod 644 {} \;&lt;br /&gt;
 sudo find /home/youruser/lamp/public_html/ -type d -exec chmod 755 {} \;&lt;br /&gt;
 sudo chown youruser:youruser -R /home/youruser/lamp/public_html/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' You can place your new site folders on any location you desire, this is just an example, replace &amp;quot;youruser&amp;quot; with your actual Linux username&lt;br /&gt;
&lt;br /&gt;
Those commands enforce a secure and correct file and folder permission and also set a correct user and group ownership for all of them&lt;br /&gt;
&lt;br /&gt;
*Open your browser and navigate to &amp;quot;localhost/whomi.php&amp;quot;, you should see something like this&lt;br /&gt;
&lt;br /&gt;
 whomi = youruser&lt;br /&gt;
&lt;br /&gt;
That means the script is being executed with your user and not the Apache user unless you specified so&lt;br /&gt;
&lt;br /&gt;
==== Method 2: Changing Apache user and group ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight:bold;&amp;quot;&amp;gt; '''NOTE:'''This method is highly discouraged, do not implement it in a computer with personal or sensitive information if you are not sure what are you doing, to complement the security install a firewall to block external incoming traffic to your web server, you may also should change some directives on your site configuration to only serve request to the localhost address.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make Apache execute under your current user and group you got to  edit some parameters in the Apache configuration file and make it execute under our current user and group, this will solve our file ownership problems &amp;lt;span style=&amp;quot;color:red; font-weight:bold;&amp;quot;&amp;gt; but opens a severe security hole&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To change the user and group of the Apache service, follow these instructions:&lt;br /&gt;
&lt;br /&gt;
*open a terminal and type&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo gedit /etc/apache2/envvars&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Find the lines&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;export APACHE_RUN_USER=www-data&lt;br /&gt;
 export APACHE_RUN_GROUP=www-data&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Replace the &amp;quot;www-data&amp;quot; with your current username in both lines&lt;br /&gt;
*Save changes&lt;br /&gt;
*Type in your terminal&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo service apache2 restart&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Lets create a file to do a quick test to see if the new configuration is working correctly, type in your terminal&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;echo &amp;quot;&amp;lt;?php echo 'whoim = '.exec('/usr/bin/whoami');?&amp;gt;&amp;quot; | tee /home/myadmin/lamp/public_html/whomi.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Open your browser and navigate to &amp;quot;localhost/whomi.php&amp;quot;, you should see something like this &lt;br /&gt;
&lt;br /&gt;
 whomi = youruser&lt;br /&gt;
&lt;br /&gt;
That means the script is being executed with the new user (you)&lt;br /&gt;
&lt;br /&gt;
== Further reading == &lt;br /&gt;
&lt;br /&gt;
* ApacheMySQLPHP - Community Ubuntu Documentation [https://help.ubuntu.com/community/ApacheMySQLPHP link]&lt;br /&gt;
* Running phpmyadmin and suphp [http://serverfault.com/questions/211935/running-phpmyadmin-and-suphp/211942#211942 link]&lt;br /&gt;
* Security and Performance FAQs [[Security and Performance FAQs | link]]&lt;br /&gt;
* Apache directive index [http://httpd.apache.org/docs/2.0/mod/directives.html link] &lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Enav</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Configuring_a_LAMPP_server_for_PHP_development</id>
		<title>Configuring a LAMPP server for PHP development</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Configuring_a_LAMPP_server_for_PHP_development"/>
				<updated>2012-05-04T23:24:19Z</updated>
		
		<summary type="html">&lt;p&gt;Enav: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
Theses instructions should work fine on any Debian based distribution such as Debian, Ubuntu, LinuxMint, Xubuntu, Kbuntu and others.&lt;br /&gt;
&lt;br /&gt;
The letters LAMPP stand for Linux, Apache, MySQL, PHP and PhpMyAdmin, Linux is the operative system we are using and the rest are services also known as the &amp;quot;AMP stack&amp;quot; that we need to install and configure to create our development environment.&lt;br /&gt;
&lt;br /&gt;
Most professional, high performance and high traffic web servers in the world runs on Linux, then is always a great idea to develop your project on Linux from the very beginning and help yourself avoid compatibility problems in your projects when you want migrate them to a live server.&lt;br /&gt;
&lt;br /&gt;
You can install a LAMPP server on your own Linux desktop, in a Linux server or in a Linux virtual machine, All these options can be used for the development of PHP projects, but for this article we are going to focus on '''Linux desktop''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring a LAMPP server for PHP development/Linux desktop | Linux desktop]]&lt;br /&gt;
* [[Configuring a LAMPP server for PHP development//Linux server | Linux server]]&lt;br /&gt;
* [[Configuring a LAMPP server for PHP development//Linux virtual machine | Linux virtual machine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Enav</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_configure_Eclipse_IDE_for_PHP_development/Linux</id>
		<title>How to configure Eclipse IDE for PHP development/Linux</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_configure_Eclipse_IDE_for_PHP_development/Linux"/>
				<updated>2012-05-03T20:04:45Z</updated>
		
		<summary type="html">&lt;p&gt;Enav: /* Download and Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
Theses instructions should work fine on any Debian based distribution such as Debian, Ubuntu, LinuxMint, Xubuntu, Kbuntu and others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
There is 2 ways to download and install Eclipse IDE in your Linux box, you can do it automatically from the comfort of your software center or the Linux terminal with few commands or manually downloading and installing Eclipse  IDE from the Eclipse project website or other alternative download sites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Method 1: From a Linux repository  ===&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' This method is the most recommended because you will have the benefits of automate all the installation process and get automatic security patches and bug fixes updates when the software is installed from the repositories.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Option 1: Terminal  ====&lt;br /&gt;
&lt;br /&gt;
*Open your terminal and type&lt;br /&gt;
 &amp;lt;tt&amp;gt; sudo apt-get install eclipse &amp;lt;/tt&amp;gt;&lt;br /&gt;
*Wait until installation process finish&lt;br /&gt;
*If everything whent fine Eclipse IDE should be available in the software menu&lt;br /&gt;
&lt;br /&gt;
==== Option 2: Software center  ====&lt;br /&gt;
&lt;br /&gt;
*Open the software center that comes with your distribution&lt;br /&gt;
*Type in the search box &amp;quot;Eclipse IDE&amp;quot;&lt;br /&gt;
*Select &amp;quot;Eclipse IDE&amp;quot; in the search result list&lt;br /&gt;
*Click on the &amp;quot;install&amp;quot; button&lt;br /&gt;
*Wait until installation processes finish&lt;br /&gt;
*If everything whent fine Eclipse IDE should be available in the software menu&lt;br /&gt;
&lt;br /&gt;
=== Method 2: From a downloaded copy  ===&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' For manual download and installation you got to have JAVA runtime previously installed or Eclipse IDE will not run&lt;br /&gt;
&lt;br /&gt;
To install java runtime on your Linux box open a terminal and type folloging command and wait until the installation finish:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;sudo apt-get install sun-java6&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also install java from your software center just type &amp;quot;openjdk java 6&amp;quot; and install the package.&lt;br /&gt;
&lt;br /&gt;
To get a copy of Eclipse IDE follow these steps: &lt;br /&gt;
&lt;br /&gt;
*Go to: [http://www.eclipse.org/downloads/ Eclipse download page]&lt;br /&gt;
*Download &amp;quot;Eclipse Classic&amp;quot; 32 or 64 bits according to your current OS version&lt;br /&gt;
*Unpack the downloaded file on any location that you want, ex: Downloads folder or Desktop folder&lt;br /&gt;
*Open the eclipse folder an find an executable file called &amp;quot;eclipse&amp;quot;&lt;br /&gt;
*Do a right click on the file then -&amp;gt; properties -&amp;gt; permissions and check &amp;quot;Allow executing file as a program&amp;quot;&lt;br /&gt;
*To execute Eclipse IDE, you can do a double click on the executable file or run it from terminal, ex:&lt;br /&gt;
 &amp;lt;tt&amp;gt;cd ~/Downloads/eclipse/&lt;br /&gt;
 eclipse&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' At the [http://www.eclipse.org/downloads/ Eclipse download page] you can see many versions of Eclipse IDE, all of them are basically the same Eclipse with a bunch of extensions pre-installed to do specific task by default Eclipse IDE comes with all the tools needed to develop JAVA projects but you can install more extensions to develop in other languages, click in the link [http://www.eclipse.org/downloads/compare.php Compare Packages] to see a complete char of all the extensions included on each Eclipse Package build, you can try one of these pre-build packages specifically created for PHP development some of them are official releases from the Eclipse website and others are independent projects:&lt;br /&gt;
&lt;br /&gt;
*[http://www.eclipse.org/pdt/downloads/ Eclipse PDT (PHP Development Tools)]&lt;br /&gt;
*[http://www.easyeclipse.org/site/distributions/php.html EasyEclipse for PHP]&lt;br /&gt;
*[http://www.phpeclipse.com/ PhpEclipse]&lt;br /&gt;
&lt;br /&gt;
{{chunk:Configuring Eclipse IDE for PHP development - Understanding the interface}}&lt;br /&gt;
&lt;br /&gt;
== Understanding the folder structure ==&lt;br /&gt;
&lt;br /&gt;
When your execute Eclipse for the first time, it ask you to create a &amp;quot;workspace&amp;quot; the workspace is a folder where Eclipse IDE will save the configurations about your editors, perspectives and views also the workspace folder is normally used locate your project files separated by folders, nonetheless you can place your project files outside the workplace folder if you like.&lt;br /&gt;
&lt;br /&gt;
The workplace folder name could any valid folder name, but by default Eclipse IDE set the name &amp;quot;workplace&amp;quot; to it, and it tries to locate the folder at your documents folder or your home folder, ex &amp;quot;/home/youruser/workspace&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When you create new PHP project and you decide to place it inside the workplace folder then it may looks like this:&lt;br /&gt;
&lt;br /&gt;
 /home/youruser/workspace/myphptutorial&lt;br /&gt;
 /home/youruser/workspace/joomla_component&lt;br /&gt;
 /home/youruser/workspace/test&lt;br /&gt;
&lt;br /&gt;
Those 3 folders represent 3 different projects inside the same &amp;quot;workspace&amp;quot; and they will share the same editor and perspective layout configuration for Eclipse IDE.&lt;br /&gt;
&lt;br /&gt;
The configurations about the editors and perspective layouts are specifically located at the hidden folder called &amp;quot;.metadata&amp;quot; which is right inside the workspace folder, this means you can move the workplace folder from one computer to another and work in Eclipse from another computer with all your custom configurations and projects just easy.&lt;br /&gt;
&lt;br /&gt;
{{Chunk:Configuring Eclipse IDE for PHP development - Configuration}}&lt;br /&gt;
&lt;br /&gt;
== Fine tuning ==&lt;br /&gt;
&lt;br /&gt;
=== Increase RAM memory usage  ===&lt;br /&gt;
&lt;br /&gt;
By default Eclipse got some configuration to limit the amount of RAM memory, this configurations works fine for most users but if you 2GB of ram or more you should consider set this values to improve Eclipse IDE performance.&lt;br /&gt;
&lt;br /&gt;
First you got to locate the &amp;quot;eclipse.ini&amp;quot; file that contains some few Eclipse IDE configurations.&lt;br /&gt;
&lt;br /&gt;
*If you downloaded Eclipse IDE manually from internet the &amp;quot;eclipse.ini&amp;quot; file is just inside the unpacked folder&lt;br /&gt;
*If you installed Eclipse via terminal or software center the location of the file is &amp;quot;/etc/eclipse.ini&amp;quot;&lt;br /&gt;
*In some Linux versions the file can be found at &amp;quot;/usr/share/eclipse/eclipse.ini&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' If you found a config file at &amp;quot;/etc/eclipse.ini&amp;quot; then don't edit the file at &amp;quot;/usr/share/eclipse/eclipse.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This is the content of the original &amp;quot;eclipse.ini&amp;quot; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 -startup&lt;br /&gt;
 plugins/org.eclipse.equinox.launcher_1.2.0.dist.jar&lt;br /&gt;
 --launcher.library&lt;br /&gt;
 plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.dist&lt;br /&gt;
 -showsplash&lt;br /&gt;
 org.eclipse.platform&lt;br /&gt;
 --launcher.XXMaxPermSize&lt;br /&gt;
 256m&lt;br /&gt;
 --launcher.defaultAction&lt;br /&gt;
 openFile&lt;br /&gt;
 -vmargs&lt;br /&gt;
 -Xms40m&lt;br /&gt;
 -Xmx384m&lt;br /&gt;
 -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the full reference about these parameters visit [http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html]&lt;br /&gt;
&lt;br /&gt;
Change the following values to increase the amount of RAM memory used by Eclipse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 -startup&lt;br /&gt;
 plugins/org.eclipse.equinox.launcher_1.2.0.dist.jar&lt;br /&gt;
 --launcher.library&lt;br /&gt;
 plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.dist&lt;br /&gt;
 -showsplash&lt;br /&gt;
 org.eclipse.platform&lt;br /&gt;
 --launcher.XXMaxPermSize&lt;br /&gt;
 512m&lt;br /&gt;
 --launcher.defaultAction&lt;br /&gt;
 openFile&lt;br /&gt;
 -vmargs&lt;br /&gt;
 -Xms512m&lt;br /&gt;
 -Xmx512m&lt;br /&gt;
 -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you got a lot of RAM memory you can try with these other configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
 -startup&lt;br /&gt;
 plugins/org.eclipse.equinox.launcher_1.2.0.dist.jar&lt;br /&gt;
 --launcher.library&lt;br /&gt;
 plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.dist&lt;br /&gt;
 -showsplash&lt;br /&gt;
 org.eclipse.platform&lt;br /&gt;
 --launcher.XXMaxPermSize&lt;br /&gt;
 1024m&lt;br /&gt;
 --launcher.defaultAction&lt;br /&gt;
 openFile&lt;br /&gt;
 -vmargs&lt;br /&gt;
 -Xms1024m&lt;br /&gt;
 -Xmx1024m&lt;br /&gt;
 -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Enav</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_configure_Eclipse_IDE_for_PHP_development</id>
		<title>How to configure Eclipse IDE for PHP development</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_configure_Eclipse_IDE_for_PHP_development"/>
				<updated>2012-05-03T17:16:11Z</updated>
		
		<summary type="html">&lt;p&gt;Enav: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article provides detailed instructions to configure Eclipse IDE for PHP development, not only for Joomla! it also should work fine for PHP development in general.&lt;br /&gt;
&lt;br /&gt;
'''Note''' There are many possible ways to install and configure Eclipse IDE, in this articles we cover some of those.&lt;br /&gt;
&lt;br /&gt;
* [[How to configure Eclipse IDE for PHP development/Linux | Linux]]&lt;br /&gt;
* [[How to configure Eclipse IDE for PHP development/Windows | Windows]]&lt;br /&gt;
* [[How to configure Eclipse IDE for PHP development/Mac | Mac]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Enav</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Documentation_support_and_discussion</id>
		<title>Documentation support and discussion</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Documentation_support_and_discussion"/>
				<updated>2012-05-03T16:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;Enav: Created page with &amp;quot;For suggestions, observations, report a bug in the code or errors in the configurations or procedures described in this document feel free to post a message in the discussion pag...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For suggestions, observations, report a bug in the code or errors in the configurations or procedures described in this document feel free to post a message in the discussion page or post a message in the following forum boards&lt;br /&gt;
&lt;br /&gt;
*Topics related to the documentation: {{jforum|doc}}&lt;br /&gt;
*Any other topic: {{jforum}}&lt;/div&gt;</summary>
		<author><name>Enav</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Setting_up_your_workstation_for_PHP_development</id>
		<title>Setting up your workstation for PHP development</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Setting_up_your_workstation_for_PHP_development"/>
				<updated>2012-05-03T01:18:33Z</updated>
		
		<summary type="html">&lt;p&gt;Oasisfleeting: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{underconstruction}}&lt;br /&gt;
&lt;br /&gt;
{{RightTOC}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This article provides detailed instructions for setting up your workstation as a PHP development environment, not only for Joomla! it also should work fine for PHP development in general.&lt;br /&gt;
&lt;br /&gt;
'''Note''' There are many possible configurations for doing PHP development environments. Any environment that supports the basic AMP stack (Apache, MySql, PHP), Subversion and/or Git should be fine.&lt;br /&gt;
&lt;br /&gt;
== Choosing a code editor ==&lt;br /&gt;
&lt;br /&gt;
The PHP language code represented just by plain text that can be edited with simple text editors like:&lt;br /&gt;
&lt;br /&gt;
* Geany (opensource cross platform text editor)&lt;br /&gt;
* Gedit (opensource code editor for linux)&lt;br /&gt;
* Notepad++ (opensource code editor for Windows)&lt;br /&gt;
* Apple textEditor (Apple's basic text editor)&lt;br /&gt;
* Komodo Edit (Komodo Edit is a fast, smart, free and open-source code editor for Windows, Mac and Linux)&lt;br /&gt;
&lt;br /&gt;
But when you are about to work in more advanced and complex projects and need some coding assistance there is a handful of development tools called IDEs (Integrated Development Environment) these are some of them:&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Eclipse_(software)|Elcipse IDE]] (opensource cross platform IDE)&lt;br /&gt;
* Netbeans IDE (opensource cross platform IDE)&lt;br /&gt;
* UltraEdit IDE (closed source cross platform IDE)&lt;br /&gt;
* Aptana IDE (opensource cross platform IDE)&lt;br /&gt;
* Shiftedit IDE&lt;br /&gt;
&lt;br /&gt;
As new emerging technologies we got other kind of editors available as an alternative to the traditional simple editors or desktop IDEs applications, among them we got: &lt;br /&gt;
&lt;br /&gt;
*Web based IDEs: editors that runs on the web&lt;br /&gt;
**Wiode&lt;br /&gt;
*Cloud based IDEs: editors that runs on the cloud&lt;br /&gt;
**Kodingen&lt;br /&gt;
**Codeita&lt;br /&gt;
**ShiftEdit&lt;br /&gt;
**jsFiddle&lt;br /&gt;
**PHPanywhere&lt;br /&gt;
*Browser based IDEs: editors that runs on your browser&lt;br /&gt;
**Cloud IDE (Google chrome extension)&lt;br /&gt;
**Cloud9 (Google Chrome extension)&lt;br /&gt;
**ShitEdit (Google Chrome extension)&lt;br /&gt;
**PHPanywhere (Google Chrome extension)&lt;br /&gt;
**Cloud IDE (Google Chrome extension)&lt;br /&gt;
&lt;br /&gt;
To empathize some of the advantages of the use of IDEs over simple text editors we got:&lt;br /&gt;
&lt;br /&gt;
*Some IDEs integrate and/or let you integrate more programming languages under the same tool such as PHP, Javascript, CSS, XML, etc...&lt;br /&gt;
*Some IDEs integrate and/or let you integrate assistive functions to develop code such as code completion, re-factoring, templates, advanced search/replace, syntax check, syntax coloring and more&lt;br /&gt;
*Some IDEs can analyze the project as a whole and build a map of relationships between the classes in use in your project giving you the opportunity to explore the project in a more comfortable and coherent way&lt;br /&gt;
*Some IDEs can analyse the current file under edition and give you a map of the different variables, functions and classes present on the file as a shortcut to navigate through the content&lt;br /&gt;
*Some IDEs integrate and/or let you integrate PHP debugging client under the same tool&lt;br /&gt;
*Some IDEs integrate and/or let you integrate several kind of source code revision control clients under the same tool&lt;br /&gt;
&lt;br /&gt;
Some of the advantages of simple text editors are:&lt;br /&gt;
&lt;br /&gt;
*This kind of editor are usually lightweight&lt;br /&gt;
*Some of these editors are great to do quick editions&lt;br /&gt;
*Some of these editors provide syntax coloring and basic code completion&lt;br /&gt;
&lt;br /&gt;
All these options can be used for the development of PHP projects, but for this article we are going to focus on '''Eclipse IDE''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring Eclipse IDE for PHP development]]&lt;br /&gt;
* [[Configuring Netbeans IDE for PHP development]]&lt;br /&gt;
* [[Configuring UltraEdit IDE for PHP development]]&lt;br /&gt;
* [[Configuring Komodo Edit for Joomla Code Completion]]&lt;br /&gt;
&lt;br /&gt;
== Choosing a web server ==&lt;br /&gt;
&lt;br /&gt;
To develop and test our PHP projects we need to execute the code in a web server capable of interpret PHP code and send the output to our browser, is good to know that we have a nice range of opensource tools to deploy a PHP webservers for our development environment such as:&lt;br /&gt;
&lt;br /&gt;
*[[wikipedia:LAMP_(software_bundle)|LAMP]] (AMP stack on Linux)&lt;br /&gt;
*[http://www.apachefriends.org/en/xampp.html XAMPP] (Cross platform AMP stack implementation)&lt;br /&gt;
*[http://www.wampserver.com/en/ WAMP] (AMP stack for Windows)&lt;br /&gt;
Also there is other commercial closed-source options such as:&lt;br /&gt;
*[[wikipedia:Internet_Information_Services | IIS]] (Microsoft webserver, the PHP and MySQL services got to be installed manually)&lt;br /&gt;
*others&lt;br /&gt;
&lt;br /&gt;
All these options can be used for the development of PHP projects, but for this article we are going to focus on '''LAMP server for Linux''' and a '''XAMPP server for windows''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring a LAMPP server for PHP development]]&lt;br /&gt;
* [[Configuring a XAMPP server for PHP development]]&lt;br /&gt;
* [[Configuring a WAMP server for PHP development]]&lt;br /&gt;
* [[Configuring an IIS server for PHP development]]&lt;br /&gt;
&lt;br /&gt;
== Choosing a Debugging tool ==&lt;br /&gt;
&lt;br /&gt;
Debugging tools are quite useful when you are developing a PHP project and you want to study how your code behave step by step on each line execution of your code, also these debugging tools let you see the real values of variables and objects and set new values on the fly for testing purposes, you can also create expression to check the outcome without modify your code.&lt;br /&gt;
&lt;br /&gt;
Old school and hardcore PHP programmers don't fraternize much with these kind of visual tools and they prefer to debug their code the old way using [[php:var_dump]] and other methods to display and analyze the output of the PHP code, is up to you what kind of tools you want to implement in your development workflow.&lt;br /&gt;
&lt;br /&gt;
There is several alternatives for PHP debugging, some of these are:&lt;br /&gt;
&lt;br /&gt;
*[[wikipedia:Xdebug|Xdebug]] (opensource debugging service for PHP)&lt;br /&gt;
*Zend Debugger (commercial debugging service for PHP)&lt;br /&gt;
&lt;br /&gt;
To empathize some of the advantages of the use of this kind of debugging tools we got:&lt;br /&gt;
&lt;br /&gt;
*You can stop (freeze) the execution of your PHP code any time placing a breakpoint&lt;br /&gt;
*You can inspect the current value of variables and objects without dumping the content&lt;br /&gt;
*You can execute the code step by step all the way from the beginning of the PHP code to the end of it and study how your application behaves under certain circumstances&lt;br /&gt;
*You can set or modify the value of variables and object on the fly and see the results of your changes without modify the original code at all&lt;br /&gt;
&lt;br /&gt;
All these options can be used for the development of PHP projects, but for this article we are going to focus on '''Xdebug''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring Xdebug for PHP development]]&lt;br /&gt;
* [[Configuring Zend Debugger for PHP development]]&lt;br /&gt;
&lt;br /&gt;
== Choosing a Version Control System ==&lt;br /&gt;
&lt;br /&gt;
Don't you hate when you are coding and suddenly by accident you just deleted a big chunk of text and there is no backups of that file to restore those important lines of code?, don't you hate when you are working with 2 or more developers in a project and everyone have a different copy of the project then comes the day of merge all those changes in one final project but everything goes wrong or the project does not want to run properly because someone did just overwrite some of your files?, for all this problems and many more exist some nice tools to bring you the solutions you need, some of these tools are:&lt;br /&gt;
&lt;br /&gt;
*[[wikipedia:Git_(software)|GIT]] (Is a distributed revision control and source code management)&lt;br /&gt;
*[[wikipedia:Apache_Subversion|SVN]] (Is a software versioning and revision control system)&lt;br /&gt;
&lt;br /&gt;
A Version Control System also known as VCS is a very important tool in the development of software projects, this tools keep track of all the changes you made in a file over the time, they also provide mechanisms to avoid version conflicts when 2 or more developers have made changes in the same files, another nice feature is that you can navigate back in time through the history of changes of a file and revert undesired changes if you want, tools like this make possible collaborative projects with thousand of developers around the world such as the Linux project were lot of people are constantly editing the project files every day and all the merging and revision process of thousand of files is automated by the VCS. Consider yourself some time to learn how to use this important tool.&lt;br /&gt;
&lt;br /&gt;
All these options can be used for the development of PHP projects, but for this article we are going to focus on '''GIT''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring GIT for PHP development]]&lt;br /&gt;
* [[Configuring SVN for PHP development]]&lt;br /&gt;
&lt;br /&gt;
== Choosing a project build system ==&lt;br /&gt;
To read the full definition of a project build system you can go [[wikipedia:Build_automation|here]] but in short, the project build systems help you to automatize those tedious and repetitive tasks that developers got to do in several stages of the development of a project, some of this tasks are:&lt;br /&gt;
&lt;br /&gt;
*Compiling source code&lt;br /&gt;
*Packaging (such as creating installers or final compressed files of individual libraries)&lt;br /&gt;
*Running tests&lt;br /&gt;
*Deployment to production systems (such as automatic upgrades and/or  installation)&lt;br /&gt;
*Creating documentation and/or release notes&lt;br /&gt;
&lt;br /&gt;
Looking at project build systems from another point of view we can say they are a tool to automate complex tasks or little tasks such as:&lt;br /&gt;
*Move a file from one place to another&lt;br /&gt;
*Compressing a folder with several files&lt;br /&gt;
*Upload a final build to a server&lt;br /&gt;
*Update the content of files such as XML files or some comment sections of PHP files to print the version of the last build&lt;br /&gt;
&lt;br /&gt;
A simple thing like the development of a Joomla! extensions such as a simple module could need the use of a project build system to gather all the information dispersed about the module in the Joomla! folder structure and put it back to the typical package structure of a module package with a simple build command, this could save you several minutes and headaches when you try to build a module or any extension manually and misplace a file or skip one of then in the final package. Consider your self some time to learn the proper use of project build systems and make them part of your regular development workflow.&lt;br /&gt;
&lt;br /&gt;
Exist several options for project build systems out there, some of those are:&lt;br /&gt;
*[http://www.phing.info/trac/ Phing Project] (Build tool that uses simple XML build files and extensible PHP &amp;quot;task&amp;quot; classes to describe the build process)&lt;br /&gt;
*[[wikipedia:Apache_Ant|Apache Ant]] (Build tool that uses simple XML build files to describe the build process, it needs JAVA to run)&lt;br /&gt;
&lt;br /&gt;
All these options can be used for the development of PHP projects, but for this article we are going to focus on '''Phing''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring Phing for PHP development]]&lt;br /&gt;
* [[Configuring Apache Ant for PHP development]]&lt;br /&gt;
&lt;br /&gt;
== Choosing a project management system ==&lt;br /&gt;
&lt;br /&gt;
Any decent project is complete without a project management system, this applications helps developers, users and community to the planning, organize and administrate the resources of the project such as time, developers, goals. More sophisticated and complete project management systems comes with issue tracking, documents &amp;amp; files management, wiki, forums, blogs, SCM integration and more, some of those tools are:&lt;br /&gt;
&lt;br /&gt;
*Web based applications&lt;br /&gt;
**ProjectFork [http://www.projectfork.net/]&lt;br /&gt;
**Redmine [http://www.redmine.org/]&lt;br /&gt;
*Cloud based applications&lt;br /&gt;
**GitHub [https://github.com/]&lt;br /&gt;
**SourceForge [http://sourceforge.net/]&lt;br /&gt;
**BitBucket [https://bitbucket.org/]&lt;br /&gt;
*Desktop based applications &lt;br /&gt;
**OpenProj - Project Management [http://sourceforge.net/projects/openproj/] &lt;br /&gt;
**GanttProject [http://www.ganttproject.biz/]&lt;br /&gt;
**MS Project [http://www.ganttproject.biz/] (proprietary software)&lt;br /&gt;
&lt;br /&gt;
Some of these options are tools to control the administrative part of a almost any project like planing, resources, etc, but not all the features like code tracking, bug tracking and issue tracking, other tools like redmine got lot of features even more that some small projects needs and online services like Github gives you lots of features for free without the need of setting up a server to install the project manager.&lt;br /&gt;
&lt;br /&gt;
All these options can be used for the development of PHP projects, but for this article we are going to focus on '''ProjectFork''', feel free to add more alternatives and document them in the following list.&lt;br /&gt;
&lt;br /&gt;
* [[Configuring ProjectFork to administrate a PHP development project]]&lt;br /&gt;
* [[Configuring GitHub to administrate a PHP development project]]&lt;br /&gt;
* [[Configuring SourceForge to administrate a PHP development project]]&lt;br /&gt;
* [[Configuring Redmine to administrate a PHP development project]]&lt;br /&gt;
&lt;br /&gt;
== Considerations for your future as developer  ==&lt;br /&gt;
&lt;br /&gt;
Whether you plan or not to develop extensions for Joomla or any other PHP platform, this articles gives you nice initial vision on how configure your workstation and what tools you can use to organize yourself and your project, this are very important topics to study in detail to level up your professional skills.&lt;br /&gt;
&lt;br /&gt;
There is no excuse to not use one of these tools explained in this article, not even for small projects, you should always try to be as much professional as you can and you will see that the amount of problems, building, bug tracking and other common an repetitive issues will be easy to manage with your client and coworker, imagine yourself creating copies of your project over and over, and no one have a control to which one is the last version, imagine your client sending you emails or chat messages constantly to tell you about a simple bug he/she found or just want to do a modification of some specific feature like the color or the size of a html object, that is a total pain, you better configure yourself project management system to keep all those bugs ans issue well organized.&lt;br /&gt;
&lt;br /&gt;
As a final note for this article here are some other important consideration for your future as developer:&lt;br /&gt;
&lt;br /&gt;
*Do '''not''' use [[wikipedia:Sneakernet|Sneakernet]] to handle the documents of your project&lt;br /&gt;
*Consider the possibility of host your project in the cloud with Github, SourceForge, Bitbucket and others, this services comes with a lot of nice features like, blogs, issue trackers, version control, forums and more.&lt;br /&gt;
*Subscribe to security forums or security mailing lists&lt;br /&gt;
*Collaborate with the documentation effort gives you direct and indirect benefits at short and long term during your career as developer&lt;br /&gt;
*Keep an open mind and always give a try to different and new alternatives for tools as much as you can to helps your self gain knowledge and confidence when you need to chose a tool or solve a problem&lt;br /&gt;
*Consider your self to invest some of your time as a novice developer to help others in support forums or support IRC channels, this will give you an invaluable experience to learn how to deal with real people with real problems from different parts of the world, and who knows some of them could be or will be your future clients, in other words this is a win win situation you win experience knowledge and future clients&lt;br /&gt;
*Conserve your mouth 'Ecologic', is a bad habit from some novice developers to say this or that tool 'sucks' or 'stinks' because they don't know how to use them correctly, is not fair says that a Jackhammer 'sucks' because is really hard to nail a photo portrait to the wall with it, so try to not emit 'destructive' comments if you don't really understand how the tool operate&lt;br /&gt;
&lt;br /&gt;
== Documentation support and discussion ==&lt;br /&gt;
&lt;br /&gt;
For suggestions, observations, report a bug in the code or errors in the configurations or procedures described in this document feel free to post a message in the discussion page or post a message in the following forum boards&lt;br /&gt;
&lt;br /&gt;
*Topics related to the documentation: {{jforum|doc}}&lt;br /&gt;
*Any other topic: {{jforum}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Enav</name></author>	</entry>

	</feed>
