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

	<entry>
		<id>http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Adding_backend_actions</id>
		<title>J2.5:Developing a MVC Component/Adding backend actions</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Adding_backend_actions"/>
				<updated>2012-01-20T15:08:37Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: /* Adding a toolbar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is for {{JVer|1.7}}&lt;br /&gt;
&lt;br /&gt;
== Articles in this series ==&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - 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!1.7]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Adding a toolbar ==&lt;br /&gt;
In Joomla!1.7, the administrator interacts generally with components through the use of a toolbar. In the file ''admin/views/helloworlds/view.html.php'' put this content. It will create a basic toolbar and a title for the component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id =&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/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;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JView&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get('Items');&lt;br /&gt;
		$pagination = $this-&amp;gt;get('Pagination');&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;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'));&lt;br /&gt;
		JToolBarHelper::deleteList('', 'helloworlds.delete');&lt;br /&gt;
		JToolBarHelper::editList('helloworld.edit');&lt;br /&gt;
		JToolBarHelper::addNew('helloworld.add');&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;
You can find other classic backend actions in the ''administrator/includes/toolbar.php'' file of your Joomla!1.7 installation.&lt;br /&gt;
&lt;br /&gt;
Since the view can perform some actions, we have to add some input data. With your favorite file manager and editor, put in the file ''admin/views/helloworlds/tmpl/default.php'' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/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;
// load tooltip behavior&lt;br /&gt;
JHtml::_('behavior.tooltip');&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_('index.php?option=com_helloworld'); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate('head');?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate('foot');?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate('body');?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;boxchecked&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_('form.token'); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding specific controllers ==&lt;br /&gt;
Three actions have been added:&lt;br /&gt;
* ''helloworlds.delete'' &lt;br /&gt;
* ''helloworld.edit''&lt;br /&gt;
* ''helloworld.add''&lt;br /&gt;
read more about [[JController_and_its_subclass_usage_overview|subcontrollers...]]&lt;br /&gt;
&lt;br /&gt;
These are compound tasks (''controller''.''task''). So two new controllers ''HelloWorldControllerHelloWorlds'' and ''HelloWorldControllerHelloWorld'' have to be coded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/controllers/helloworlds.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 controlleradmin library&lt;br /&gt;
jimport('joomla.application.component.controlleradmin');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorlds extends JControllerAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Proxy for getModel.&lt;br /&gt;
	 * @since	1.7&lt;br /&gt;
	 */&lt;br /&gt;
	public function getModel($name = 'HelloWorld', $prefix = 'HelloWorldModel') &lt;br /&gt;
	{&lt;br /&gt;
		$model = parent::getModel($name, $prefix, array('ignore_request' =&amp;gt; true));&lt;br /&gt;
		return $model;&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;
&amp;lt;span id=&amp;quot;admin/controllers/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/controllers/helloworld.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 controllerform library&lt;br /&gt;
jimport('joomla.application.component.controllerform');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorld extends JControllerForm&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;
== Adding an editing view ==&lt;br /&gt;
With your favorite file manager and editor, put a file ''admin/views/helloworld/view.html.php'' containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworld/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;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JView&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display method of Hello view&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// get the Data&lt;br /&gt;
		$form = $this-&amp;gt;get('Form');&lt;br /&gt;
		$item = $this-&amp;gt;get('Item');&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;
		// Assign the Data&lt;br /&gt;
		$this-&amp;gt;form = $form;&lt;br /&gt;
		$this-&amp;gt;item = $item;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		JRequest::setVar('hidemainmenu', true);&lt;br /&gt;
		$isNew = ($this-&amp;gt;item-&amp;gt;id == 0);&lt;br /&gt;
		JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW')&lt;br /&gt;
		                             : JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'));&lt;br /&gt;
		JToolBarHelper::save('helloworld.save');&lt;br /&gt;
		JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL'&lt;br /&gt;
		                                                   : 'JTOOLBAR_CLOSE');&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;
This view will display data using a layout.&lt;br /&gt;
&lt;br /&gt;
Put a file ''admin/views/helloworld/tmpl/edit.php'' containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/tmpl/edit.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworld/tmpl/edit.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&lt;br /&gt;
defined('_JEXEC') or die('Restricted access');&lt;br /&gt;
JHtml::_('behavior.tooltip');&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_('index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id='.(int) $this-&amp;gt;item-&amp;gt;id); ?&amp;gt;&amp;quot;&lt;br /&gt;
      method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;helloworld-form&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_( 'COM_HELLOWORLD_HELLOWORLD_DETAILS' ); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
		&amp;lt;ul class=&amp;quot;adminformlist&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach($this-&amp;gt;form-&amp;gt;getFieldset() as $field): ?&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;&amp;lt;?php echo $field-&amp;gt;label;echo $field-&amp;gt;input;?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;helloworld.edit&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_('form.token'); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding a model and modifying the existing one ==&lt;br /&gt;
&lt;br /&gt;
The ''HelloWorldViewHelloWorld'' view asks form and data from a model. This model has to provide a ''getTable'', a ''getForm'' method and a ''loadData'' method (called from the ''JModelAdmin'' controller)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/models/helloworld.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 modelform library&lt;br /&gt;
jimport('joomla.application.component.modeladmin');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns a reference to the a Table object, always creating it.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	type	The table type to instantiate&lt;br /&gt;
	 * @param	string	A prefix for the table class name. Optional.&lt;br /&gt;
	 * @param	array	Configuration array for model. Optional.&lt;br /&gt;
	 * @return	JTable	A database object&lt;br /&gt;
	 * @since	1.7&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = 'HelloWorld', $prefix = 'HelloWorldTable', $config = array()) &lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the record form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	array	$data		Data for the form.&lt;br /&gt;
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.&lt;br /&gt;
	 * @return	mixed	A JForm object on success, false on failure&lt;br /&gt;
	 * @since	1.7&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForm($data = array(), $loadData = true) &lt;br /&gt;
	{&lt;br /&gt;
		// Get the form.&lt;br /&gt;
		$form = $this-&amp;gt;loadForm('com_helloworld.helloworld', 'helloworld',&lt;br /&gt;
		                        array('control' =&amp;gt; 'jform', 'load_data' =&amp;gt; $loadData));&lt;br /&gt;
		if (empty($form)) &lt;br /&gt;
		{&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		return $form;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the data that should be injected in the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	mixed	The data for the form.&lt;br /&gt;
	 * @since	1.7&lt;br /&gt;
	 */&lt;br /&gt;
	protected function loadFormData() &lt;br /&gt;
	{&lt;br /&gt;
		// Check the session for previously entered form data.&lt;br /&gt;
		$data = JFactory::getApplication()-&amp;gt;getUserState('com_helloworld.edit.helloworld.data', array());&lt;br /&gt;
		if (empty($data)) &lt;br /&gt;
		{&lt;br /&gt;
			$data = $this-&amp;gt;getItem();&lt;br /&gt;
		}&lt;br /&gt;
		return $data;&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;
This model inherits from the ''JModelAdmin'' class and uses its ''loadForm'' method. This method searches for forms in the ''forms'' folder. With your favorite file manager and editor, put a file ''admin/models/forms/helloworld.xml'' containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
''admin/models/forms/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;form&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;id&amp;quot;&lt;br /&gt;
			type=&amp;quot;hidden&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;greeting&amp;quot;&lt;br /&gt;
			type=&amp;quot;text&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL&amp;quot;&lt;br /&gt;
			description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_DESC&amp;quot;&lt;br /&gt;
			size=&amp;quot;40&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
			default=&amp;quot;&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&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;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_02#site/helloworld.php|site/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_02#site/controller.php|site/controller.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/views/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/views/helloworld/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_04#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/views/helloworld/tmpl/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_Part_02#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/models/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#site/models/helloworld.php|site/models/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/language/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/language/en-GB/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_Part_01#index.html|admin/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_07#admin/helloworld.php|admin/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_07#admin/controller.php|admin/controller.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/sql/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_Part_01#index.html|admin/sql/updates/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/sql/updates/mysql/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_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!1.7_-_Part_01#index.html|admin/models/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/models/fields/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/models/forms/index.html]]''&lt;br /&gt;
* ''[[#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]''&lt;br /&gt;
* ''[[#admin/models/helloworld.php|admin/models/helloworld.php]]''&lt;br /&gt;
* ''[[#admin/models/helloworlds.php|admin/models/helloworlds.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/helloworlds/index.html]]''&lt;br /&gt;
* ''[[#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/helloworlds/tmpl/index.html]]''&lt;br /&gt;
* ''[[#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_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!1.7_-_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!1.7_-_Part_01#index.html|admin/views/helloworld/index.html]]''&lt;br /&gt;
* ''[[#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/helloworld/tmpl/index.html]]''&lt;br /&gt;
* ''[[#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/tables/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#admin/tables/helloworld.php|admin/tables/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_08#admin/language/en-GB/en-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_08#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!1.7_-_Part_01#index.html|admin/controllers/index.html]]''&lt;br /&gt;
* ''[[#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]''&lt;br /&gt;
* ''[[#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_08#language/en-GB/en-GB.ini|language/en-GB/en-GB.ini]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58407/com_helloworld-1.6-part09.zip archive], modify the code in /admin/models/helloworld.php and install it using the extension manager of Joomla!1.7. You can add a menu item of this component using the menu manager in the backend.&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;1.7.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&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.9&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;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 1.7 --&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;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;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&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&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;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;/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;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zips ==&lt;br /&gt;
Download the zip file for this Part:&lt;br /&gt;
[http://www.leyar.com/joomlaorg/part09.zip]&lt;br /&gt;
&lt;br /&gt;
== Navigate ==&lt;br /&gt;
&lt;br /&gt;
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Part 08|Prev: Adding language management]]&lt;br /&gt;
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Part 10|Next: Adding decorations to the backend]]&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&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:Manual]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Basic_backend</id>
		<title>J2.5:Developing a MVC Component/Basic backend</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Basic_backend"/>
				<updated>2012-01-20T15:07:20Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: /* Create the view */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial is for {{JVer|1.7}}&lt;br /&gt;
&lt;br /&gt;
== Articles in this series ==&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - 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!1.7]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Basic backend ==&lt;br /&gt;
Designing the backend interface leads us to create at least a Model-View-Controller triptych. We have to modify the administrator entry point of our component, the ''admin/helloworld.php'' file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/helloworld.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 controller library&lt;br /&gt;
jimport('joomla.application.component.controller');&lt;br /&gt;
&lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JController::getInstance('HelloWorld');&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$controller-&amp;gt;execute(JRequest::getCmd('task'));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create the general controller ==&lt;br /&gt;
The entry point now gets an instance of a ''HelloWorld'' prefixed controller. Let's create a basic controller for the administrator part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controller.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/controller.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 controller library&lt;br /&gt;
jimport('joomla.application.component.controller');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * General Controller of HelloWorld component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JController&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display task&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($cachable = false) &lt;br /&gt;
	{&lt;br /&gt;
		// set default view if not set&lt;br /&gt;
		JRequest::setVar('view', JRequest::getCmd('view', 'HelloWorlds'));&lt;br /&gt;
&lt;br /&gt;
		// call parent behavior&lt;br /&gt;
		parent::display($cachable);&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;
This controller will display the 'HelloWorlds'' view by default.&lt;br /&gt;
&lt;br /&gt;
== Create the view ==&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file ''admin/views/helloworlds/view.html.php'' containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/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;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JView&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get('Items');&lt;br /&gt;
		$pagination = $this-&amp;gt;get('Pagination');&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;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&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;
In Joomla, views display data using layout. With your favorite file manager and editor, put a file ''admin/views/helloworlds/tmpl/default.php'' containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/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;
// load tooltip behavior&lt;br /&gt;
JHtml::_('behavior.tooltip');&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_('index.php?option=com_helloworld'); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate('head');?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate('foot');?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate('body');?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;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 calls several sub-layout (''head'', ''foot'' and ''body''). Each sub-layout corresponds to a file prefixed by the name of the main layout (''default''), and an underscore.&lt;br /&gt;
&lt;br /&gt;
Put a file ''admin/views/helloworlds/tmpl/default_head.php'' containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_head.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/tmpl/default_head.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;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_('COM_HELLOWORLD_HELLOWORLD_HEADING_ID'); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;toggle&amp;quot; value=&amp;quot;&amp;quot; onclick=&amp;quot;checkAll(&amp;lt;?php echo count($this-&amp;gt;items); ?&amp;gt;);&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;			&lt;br /&gt;
	&amp;lt;th&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_('COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING'); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''checkAll'' is a javascript function defined in the Joomla core able to check all items.&lt;br /&gt;
&lt;br /&gt;
Put a file ''admin/views/helloworlds/tmpl/default_body.php'' containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_body.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/tmpl/default_body.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;
?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach($this-&amp;gt;items as $i =&amp;gt; $item): ?&amp;gt;&lt;br /&gt;
	&amp;lt;tr class=&amp;quot;row&amp;lt;?php echo $i % 2; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;id; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo JHtml::_('grid.id', $i, $item-&amp;gt;id); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;greeting; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''JHtml::_'' is a helper function able to display several HTML output. In this case, it will display a checkbox for the item.&lt;br /&gt;
&lt;br /&gt;
Put a file ''admin/views/helloworlds/tmpl/default_foot.php'' containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_foot.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/views/helloworlds/tmpl/default_foot.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;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''JPagination'' is a Joomla class able to manage and display pagination object.&lt;br /&gt;
&lt;br /&gt;
== Create the model ==&lt;br /&gt;
The ''HelloWorlds'' view asks the model for data. In Joomla!1.7, there is a class able to manage a list of data: ''JModelList''. Class ''JModelList'' and inherited classes need only one method:&lt;br /&gt;
* ''getListQuery'' which constructs an SQL query&lt;br /&gt;
&lt;br /&gt;
and two states:&lt;br /&gt;
* ''list.start'' for determining the list offset&lt;br /&gt;
* ''list.limit'' for determining the list length&lt;br /&gt;
&lt;br /&gt;
The ''getItems'' and ''getPagination'' methods are defined in JModelList class. They don't need to be defined in the ''HelloWorldModelHelloWorlds'' class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
''admin/models/helloworlds.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;
// import the Joomla modellist library&lt;br /&gt;
jimport('joomla.application.component.modellist');&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorldList Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorlds extends JModelList&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to build an SQL query to load the list data.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string	An SQL query&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getListQuery()&lt;br /&gt;
	{&lt;br /&gt;
		// Create a new query object.		&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
		// Select some fields&lt;br /&gt;
		$query-&amp;gt;select('id,greeting');&lt;br /&gt;
		// From the hello table&lt;br /&gt;
		$query-&amp;gt;from('#__helloworld');&lt;br /&gt;
		return $query;&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;
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;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_02#site/helloworld.php|site/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_02#site/controller.php|site/controller.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/views/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/views/helloworld/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_04#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/views/helloworld/tmpl/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_Part_02#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|site/models/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#site/models/helloworld.php|site/models/helloworld.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/index.html]]''&lt;br /&gt;
* ''[[#admin/helloworld.php|admin/helloworld.php]]''&lt;br /&gt;
* ''[[#admin/controller.php|admin/controller.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/sql/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_Part_01#index.html|admin/sql/updates/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/sql/updates/mysql/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_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!1.7_-_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!1.7_-_Part_01#index.html|admin/models/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/models/fields/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]''&lt;br /&gt;
* ''[[#admin/models/helloworlds.php|admin/models/helloworlds.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/helloworlds/index.html]]''&lt;br /&gt;
* ''[[#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_01#index.html|admin/views/helloworlds/tmpl/index.html]]''&lt;br /&gt;
* ''[[#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]''&lt;br /&gt;
* ''[[#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]''&lt;br /&gt;
* ''[[#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]''&lt;br /&gt;
* ''[[#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!1.7_-_Part_01#index.html|admin/tables/index.html]]''&lt;br /&gt;
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06#admin/tables/helloworld.php|admin/tables/helloworld.php]]''&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58397/com_helloworld-1.6-part07.zip archive] and install it using the extension manager of Joomla!1.7. You can add a menu item of this component using the menu manager in the backend.&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;1.7.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&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;version&amp;gt;0.0.7&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&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 1.7 --&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;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;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;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&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;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&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;/files&amp;gt;		&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can see in your component '''hello-world''' an array with two colums, two rows and checkboxes. You can click the checkboxes in order to select the different options you want.&lt;br /&gt;
&lt;br /&gt;
== Zips ==&lt;br /&gt;
Download the zip file for this Part:&lt;br /&gt;
[http://www.leyar.com/joomlaorg/part07.zip]&lt;br /&gt;
&lt;br /&gt;
== Navigate ==&lt;br /&gt;
&lt;br /&gt;
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Part 06|Prev: Using the database]]&lt;br /&gt;
[[Developing a Model-View-Controller (MVC) Component for Joomla!1.7 - Part 08|Next: Adding language management]]&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&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:Manual]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5_talk:Developing_a_MVC_Component/Basic_backend</id>
		<title>J2.5 talk:Developing a MVC Component/Basic backend</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5_talk:Developing_a_MVC_Component/Basic_backend"/>
				<updated>2012-01-20T15:06:01Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: /* Admin Forms in J2.5 */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Items to be adding/changed on this page:&lt;br /&gt;
&lt;br /&gt;
Note that if using core J! javascript in a form, id=&amp;quot;adminForm&amp;quot; must also be included.&lt;br /&gt;
&lt;br /&gt;
Shouldn't references to $db-&amp;gt;getDBO() be changed to $db-&amp;gt;getDbo() ?&lt;br /&gt;
&lt;br /&gt;
And what is this comment referring to?  &amp;quot;The _populateState method is, by default, automatically called when a state is read by the getState method.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[User:Radiant tech|Radiant tech]] 06:37, 1 September 2011 (CDT)&lt;br /&gt;
&lt;br /&gt;
== Admin Forms in J2.5 ==&lt;br /&gt;
&lt;br /&gt;
Aparently, for the JToolbar Icons to work properly in J2.5, the form elements need the id &amp;quot;adminForm&amp;quot; to be assigned to them. I changed this in ''admin/views/helloworlds/tmpl/default.php''. However, it also needs to be changed in the packages...&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/User_talk:Batch1211</id>
		<title>User talk:Batch1211</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/User_talk:Batch1211"/>
				<updated>2011-09-08T14:59:26Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Change permission of content ===&lt;br /&gt;
Hi.&lt;br /&gt;
I would ask permission to move pages from the template namespace which are actually in course descriptions and pages that have links pointing to them.&lt;br /&gt;
I have as main objective the wiki organization and redesign the landing pages.&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
Hey there. I didn't fully understand your query. What is it, what you're planning to do?&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J2.5:Adapting_a_Joomla_1.5_extension_to_Joomla_2.5</id>
		<title>J2.5:Adapting a Joomla 1.5 extension to Joomla 2.5</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J2.5:Adapting_a_Joomla_1.5_extension_to_Joomla_2.5"/>
				<updated>2011-01-29T09:42:57Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{incomplete}}&lt;br /&gt;
&lt;br /&gt;
This article is written to help developers upgrade their extensions from Joomla 1.5 to Joomla 1.6. If you have any further tips, feel free to add them onto this wiki article.&lt;br /&gt;
&lt;br /&gt;
== System setup ==&lt;br /&gt;
This document assumes that you are running the program eclipse for your development. This will allow you to automate most of the Joomla conversion process. For more instructions on how to setup eclipse, see [[Setting up your workstation for Joomla! development]].&lt;br /&gt;
&lt;br /&gt;
== Background reading ==&lt;br /&gt;
[[What's new in Joomla 1.6#Developers]] describes most changes of Joomla 1.6 and how this affect developers.&lt;br /&gt;
&lt;br /&gt;
== Updating your Joomla 1.5 language files to work on Joomla 1.6 ==  &lt;br /&gt;
Using the native php ini parser for language files has many benefits including much faster performace. Converting your exisiting Joomla 1.5 into the new format is very easy if you use a coding platform like eclipse. Search your file for *.ini in your project of choice. Then use the following search/replace values to automatically, replace exisiting quotes, add quotes to string values and update your comments.&lt;br /&gt;
&lt;br /&gt;
'''''Double quotes are NOT allowed inside the string value''', except when using &amp;quot;_QQ_&amp;quot; to represent them. In case of js use, better use html entities or single quotes.''&lt;br /&gt;
&lt;br /&gt;
#Single quotes are allowed. &lt;br /&gt;
#Put a closing double quote at end of line if not empty or a comment.  Find ^((?!#).+)\R  replace with $1&amp;quot;\R&lt;br /&gt;
#Put an opening double quote at start of translated string if not empty or comment. Find ^((?!#).+?\=)(.+)\R replace with $1&amp;quot;$2\R&lt;br /&gt;
#Now replace the hash comments with the new semi colon. Find ^# and replace with ;&lt;br /&gt;
#Remove any illegal strings that can prevent files loading. Find ^(null|yes|no|true|false|on|off|none)=(.+)\R and replace with nothing.&lt;br /&gt;
&lt;br /&gt;
Enabling Debug System in Global configuration will display the parsing errors per file and lines.&lt;br /&gt;
&lt;br /&gt;
If you do not remove the illegal strings, then your language file will load until one of them is reached. The now &amp;quot;illegal&amp;quot; strings in the language file like NO, are handled by adding a 'J' in-front of them.  Just make sure you change these language strings in your XML files as well. You can include in your language file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;forbidden words&lt;br /&gt;
JNULL=&amp;quot;Null&amp;quot;&lt;br /&gt;
JYES=&amp;quot;Yes&amp;quot;&lt;br /&gt;
JNO=&amp;quot;No&amp;quot;&lt;br /&gt;
JTRUE=&amp;quot;True&amp;quot;&lt;br /&gt;
JFALSE=&amp;quot;False&amp;quot;&lt;br /&gt;
JON=&amp;quot;On&amp;quot;&lt;br /&gt;
JOFF=&amp;quot;Off&amp;quot;&lt;br /&gt;
JNONE=&amp;quot;None&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing Javascript function overrides ==&lt;br /&gt;
Joomla now has some of its Javascript functions prefixed with &amp;quot;Joomla&amp;quot;. This means the functions are always unique and won't clash with other javascript functions on your server/webpage. However, you now need a different method to override the default Joomla Javascript. The Joomla 1.5 method was:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function submitbutton(pressbutton) {&lt;br /&gt;
var form = document.adminForm;&lt;br /&gt;
    if (pressbutton == 'applyconfig') {&lt;br /&gt;
        //do something unique&lt;br /&gt;
        form.action.value = 'apply'&lt;br /&gt;
        submitform('saveconfig');&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    submitform(pressbutton);&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
For Joomla 1.6 you need to copy your exisiting function but modify your top line to:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Joomla.submitbutton = function(pressbutton) {&lt;br /&gt;
var form = document.adminForm;&lt;br /&gt;
    if (pressbutton == 'applyconfig') {&lt;br /&gt;
        //do something unique&lt;br /&gt;
        form.action.value = 'apply'&lt;br /&gt;
        submitform('saveconfig');&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    submitform(pressbutton);&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing removed functions ==&lt;br /&gt;
Some functions were removed for various reasons. You can find a list of them on [[What's new in Joomla_1.6#Removed_features]].&lt;br /&gt;
&lt;br /&gt;
Note that the ADODB compatibility methods included function like $db-&amp;gt;Execute($query) which now need a separate $db-&amp;gt;setQuery($query);$db-&amp;gt;Query();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Renamed events ==&lt;br /&gt;
&lt;br /&gt;
A large number of the Joomla 1.5 events have been renamed. Here is the list of renamed events.&lt;br /&gt;
*onContentAfterSave&lt;br /&gt;
*onContentAfterTitle&lt;br /&gt;
*onContentAfterDisplay&lt;br /&gt;
*onContentBeforeDisplay&lt;br /&gt;
*onContentBeforeSave&lt;br /&gt;
*onContentSearch&lt;br /&gt;
*onContentSearchAreas&lt;br /&gt;
*onUserAuthenticate&lt;br /&gt;
*onUserAfterDelete&lt;br /&gt;
*onUserAfterSave&lt;br /&gt;
*onUserBeforeDelete&lt;br /&gt;
*onUserBeforeSave&lt;br /&gt;
*onUserLogin&lt;br /&gt;
*onUserLogout&lt;br /&gt;
*All content events (except for search and search areas) now pass a 'context' as the first argument to alert the plugin as to what type of content is being passed.  The plugin event may or may not heed this context.&lt;br /&gt;
&lt;br /&gt;
This means that if you use Joomla events you have two options:&amp;lt;br/&amp;gt;&lt;br /&gt;
1) rename the event and your extension can only be used on Joomla 1.6&amp;lt;br/&amp;gt;&lt;br /&gt;
2) create your own &amp;quot;legacy layer&amp;quot; and add the new event function name to your plugin. Here is an example of the user plugin:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
    //joomla 1.6 compatibility code &lt;br /&gt;
 	public function onUserLogin($user, $options){&lt;br /&gt;
 	    $result = $this-&amp;gt;onLoginUser($user, $options);&lt;br /&gt;
 	    return $result;&lt;br /&gt;
 	}&lt;br /&gt;
	public function onUserLogout($user)	{&lt;br /&gt;
 	    $result = $this-&amp;gt;onLogoutUser($user);&lt;br /&gt;
 	    return $result;&lt;br /&gt;
	}&lt;br /&gt;
	public function onUserAfterDelete($user, $succes, $msg)	{&lt;br /&gt;
 	    $result = $this-&amp;gt;onAfterDeleteUser($user, $succes, $msg);&lt;br /&gt;
 	    return $result;&lt;br /&gt;
	}&lt;br /&gt;
	public function onUserBeforeSave($user, $isnew, $new){&lt;br /&gt;
 	    $result = $this-&amp;gt;onBeforeStoreUser($user, $isnew, $new);&lt;br /&gt;
 	    return $result;	&lt;br /&gt;
	}&lt;br /&gt;
	public function onUserAfterSave($user, $isnew, $success, $msg){&lt;br /&gt;
 	    $result = $this-&amp;gt;onAfterStoreUser($user, $isnew, $success, $msg);&lt;br /&gt;
 	    return $result;			&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing name=&amp;quot;adminForm&amp;quot; to id=&amp;quot;adminForm&amp;quot; ==&lt;br /&gt;
To create your own admin forms in joomla you now need to use id=&amp;quot;adminForm&amp;quot;. This is because the use of the tag &amp;quot;name&amp;quot; is not valid HTML strict and has compatibility issues when used in XHTML served as XML.\. Although there is build in compatibility check to look for the old name=&amp;quot;adminForm&amp;quot; tag, it is best to add the new id tag. Depending on the features you want to use you may need to include both, name=&amp;quot;adminForm&amp;quot; and id=&amp;quot;adminForm&amp;quot; because not all core functionality has been updated to use id's.  An example of the new form code is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;form method=&amp;quot;post&amp;quot; action=&amp;quot;index.php&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&amp;lt;/form&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removing references to index2.php and index3.php ==&lt;br /&gt;
Joomla 1.0 had different index files to serve admin content in different manners. Joomla 1.6 has now got better way to handle this and you need to search your codebase for &amp;quot;index2.php&amp;quot; and &amp;quot;index3.php&amp;quot; to ensure you don't have any Joomla 1.0 style links. If you need to display your component without any of the other Joomla 1.6 admin content (menus, etc) then add the following to the url: &amp;quot;&amp;amp;tmpl=component&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Upgrading core table and field name usage ==&lt;br /&gt;
Many of the core Joomla tables have been simplified, combined or renamed. This was needed to get rid of some limitation dating back to Joomla 1.0. This means however that if you have code that directly manipulates Joomla tables, that you need to add a function that detects Joomla 1.6 and had different SQL queries based on the joomla version. Plase note that both tables and field names have been renamed or removed. An example is the following function that can find if a plugin is published on both Joomla 1.5 and 1.6:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;		&lt;br /&gt;
function getPluginStatus($element, $folder) {&lt;br /&gt;
    //get joomla specs&lt;br /&gt;
    $db = &amp;amp; JFactory::getDBO();		&lt;br /&gt;
    $version = new JVersion;&lt;br /&gt;
    $joomla = $version-&amp;gt;getShortVersion();&lt;br /&gt;
    if(substr($joomla,0,3) == '1.6'){&lt;br /&gt;
        //Joomla 1.6 code&lt;br /&gt;
        $query = 'SELECT published FROM #__extensions WHERE element=' . $db-&amp;gt;Quote($element) . ' AND folder=' . $db-&amp;gt;Quote($folder);&lt;br /&gt;
    } else {&lt;br /&gt;
        //Joomla 1.0/1.5 code&lt;br /&gt;
        $query = 'SELECT published FROM #__plugins WHERE element=' . $db-&amp;gt;Quote($element) . ' AND folder=' .   $db-&amp;gt;Quote($folder); &lt;br /&gt;
    }&lt;br /&gt;
    $db-&amp;gt;setQuery($query);&lt;br /&gt;
    $result = $db-&amp;gt;loadResult();&lt;br /&gt;
    return $result;&lt;br /&gt;
}	&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changing in the XML installer manifest file ==&lt;br /&gt;
Joomla 1.6 now uses a more streamlined approach to the XML file inside the ZIP file that installs Joomla extentions.&lt;br /&gt;
&lt;br /&gt;
== New mootools version ==&lt;br /&gt;
Most important is that the Ajax class has been depreciated and replaced by the Request class. That means that if you use ajax calls you need to have a version switcher (below a sample code)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$version = new JVersion;&lt;br /&gt;
$joomla = $version-&amp;gt;getShortVersion();&lt;br /&gt;
&lt;br /&gt;
..... (your code) ....&lt;br /&gt;
&lt;br /&gt;
    /* our ajax istance for starting the sync */&lt;br /&gt;
    &amp;lt;?php  if(substr($joomla,0,3) == '1.6'){&lt;br /&gt;
 echo 'var ajax = new Request.HTML({&lt;br /&gt;
           url: url,';&lt;br /&gt;
    } else {&lt;br /&gt;
 echo 'var ajax = new Ajax(url, {';&lt;br /&gt;
    }?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.... your code .....&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php  if(substr($joomla,0,3) == '1.6'){&lt;br /&gt;
     echo 'var ajaxsync = new Request.HTML({&lt;br /&gt;
        url: url, ';&lt;br /&gt;
    } else {&lt;br /&gt;
echo 'var ajaxsync = new Ajax(url, {';&lt;br /&gt;
    }?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.... your code .....&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also another common usuage of mootools in  Joomla is the popup box. The Joomla 1.5 javascript code to close this box is:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;document.getElementById('sbox-window').close();&amp;lt;/source&amp;gt;&lt;br /&gt;
in Joomla 1.6 you need to use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;window.parent.SqueezeBox.close();&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Converting your JParameters to JForms ==&lt;br /&gt;
Joomla 1.6 now uses the JForms class to handle parameters and it has also changed the way parameters are defined in your XML files. To make menu/component/module/plugin parameters work, first you need to update the XML file. Here is an automated way to handle the bulk of the conversion. (added &amp;quot;&amp;quot; to the examples below so you can see spaces in the search query as well). Use eclipse to search and replace parameters in *.xml files&lt;br /&gt;
&lt;br /&gt;
replace &amp;quot;&amp;lt;param &amp;quot; with &amp;quot;&amp;lt;field &amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;&amp;lt;/param&amp;gt;&amp;quot; with &amp;lt;/field&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;&amp;lt;params&amp;gt; with &amp;quot;&amp;lt;config&amp;gt;&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;&amp;lt;params*?&amp;gt; with &amp;quot;&amp;lt;config&amp;gt;&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&amp;lt;fieldset name=&amp;quot;basic&amp;quot;&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;&amp;lt;/params&amp;gt;&amp;quot; with &amp;quot;&amp;lt;/fieldset&amp;gt;&amp;lt;/fields&amp;gt;&amp;lt;/config&amp;gt;&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;&amp;lt;install &amp;quot; with &amp;quot;&amp;lt;extension &amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;&amp;lt;/install&amp;gt;&amp;quot; with &amp;quot;&amp;lt;/extension&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the &amp;quot;extension&amp;quot; node to add the following attributes:&lt;br /&gt;
* Keep the existing &amp;quot;type&amp;quot; attribute&lt;br /&gt;
* version=&amp;quot;1.6.0&amp;quot;&lt;br /&gt;
* client=&amp;quot;site&amp;quot;&lt;br /&gt;
* method=&amp;quot;upgrade&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example for a module:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;1.6.0&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now if you want to use your joomla extension on both Joomla 1.5 and 1.6 you will need to go to your &amp;quot;team synchronising&amp;quot; view in eclipse. Double click on your changed xml file, which will open the compare editor. Then simply copy-paste back your old Joomla 1.5 params into your new Joomla 1.6 xml file and save.&lt;br /&gt;
&lt;br /&gt;
If you have custom parameter types, you will need to do some additional work. In Joomla 1.5 you would use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;params addpath=&amp;quot;/administrator/components/com_yourname/elements&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
In joomla 1.6 JParameter classes won't work and you will need to convert your jparameter fields into JForm fields. Create a new directory and copy your &amp;quot;old elements&amp;quot; into them. Then you need to load these new fields with the individual parameter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;sample&amp;quot; type=&amp;quot;sampleField&amp;quot; size=&amp;quot;5&amp;quot; default=&amp;quot;&amp;quot;			label=&amp;quot;sampleField&amp;quot; description=&amp;quot;sampleField&amp;quot; addfieldpath=&amp;quot;/administrator/components/com_yourname/fields&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use eclipse to search and replace files in your newly created fields directory.&lt;br /&gt;
replace &amp;quot;JElement&amp;quot; with &amp;quot;JFormField&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;var $_name =&amp;quot; with &amp;quot;public $type =&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
replace &amp;quot;function fetchElement($name, $value, &amp;amp;$node, $control_name)&amp;quot; with &amp;quot;protected function getInput()&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you still need to replace the references to $control_name and others in your new JForm field, but at least the bulk of the work has been done automatically&lt;br /&gt;
&lt;br /&gt;
== renamed core component names and login form parameters ==&lt;br /&gt;
A login module for Joomla 1.5 will not work without modifications on Joomla 1.6. Here is a part of the logout module that will work on both Joomla 1.5 and Joomla 1.6. You can compare the two to see the difference in input names.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $version = new JVersion;&lt;br /&gt;
        $joomla = $version-&amp;gt;getShortVersion();&lt;br /&gt;
        if(substr($joomla,0,3) == '1.6'){&lt;br /&gt;
            //joomla 1.6 format          &lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;user.logout&amp;quot; /&amp;gt;';&lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_users&amp;quot; /&amp;gt;';&lt;br /&gt;
        } else {    &lt;br /&gt;
            //joomla 1.5 format&lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;logout&amp;quot; /&amp;gt;';&lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_user&amp;quot; /&amp;gt;';            &lt;br /&gt;
        } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
here is the code for the login module&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $version = new JVersion;&lt;br /&gt;
        $joomla = $version-&amp;gt;getShortVersion();&lt;br /&gt;
        if(substr($joomla,0,3) == '1.6'){        &lt;br /&gt;
            //joomla 1.6 format     &lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;user.login&amp;quot; /&amp;gt;';&lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_users&amp;quot; /&amp;gt;';&lt;br /&gt;
            $output .= '&amp;lt;input id=&amp;quot;modlgn_passwd&amp;quot; type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; class=&amp;quot;inputbox&amp;quot; size=&amp;quot;18&amp;quot; alt=&amp;quot;password&amp;quot; /&amp;gt; ';&lt;br /&gt;
        } else {&lt;br /&gt;
            //joomla 1.5 format&lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;login&amp;quot; /&amp;gt;';&lt;br /&gt;
            $output .= '&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;option&amp;quot; value=&amp;quot;com_user&amp;quot; /&amp;gt;';     &lt;br /&gt;
            $output .= '&amp;lt;input id=&amp;quot;modlgn_passwd&amp;quot; type=&amp;quot;password&amp;quot; name=&amp;quot;passwd&amp;quot; class=&amp;quot;inputbox&amp;quot; size=&amp;quot;18&amp;quot; alt=&amp;quot;password&amp;quot; /&amp;gt; ';               	&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These changes might also apply to front-end forms of other Joomla core components (more information needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACL changes ==&lt;br /&gt;
Joomla 1.6 now has an advanced ACL system. It is unknown how this affects people that have previously used the ACL API in their extension. Please add some information here if you know more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugin files now in different locations ==&lt;br /&gt;
Joomla 1.6 now creates a different hierarchy structure for plugins.  Files are no longer placed where they used to be, so if your other parts of your application (comp, mods, etc.) expects them to be in a certain position, it won't work. The change has been that now plugins are in an additional subdirectory. If you only load your plugins via the 1.5 API you should be fine.&lt;br /&gt;
* Joomla 1.5 example location &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JPATH_SITE . DS . 'plugins' . DS . 'authentication' . DS . 'example'. DS . 'example.php';&amp;lt;/source&amp;gt;&lt;br /&gt;
* Joomla 1.6 example location&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JPATH_SITE . DS . 'plugins' . DS . 'authentication' . DS . 'example.php';&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Changes to view parameters ==&lt;br /&gt;
J!1.6 has a strict new way of specifying parameters for views.  J!1.5 allowed a bit of freedom where the parameters could be defined at the view.html.php level but now ithas to be at the tmpl level.  AE believes the view paramters were removed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation process - preflight, postflight, etc ==&lt;br /&gt;
These are new events that can screw up an existing installlation process.  -1 on me for not documenting the process while stepping through xdebug.&lt;br /&gt;
They should be totally optional access points to the installation process.  But if your 1.5 install process is tricky for some reason, then these can be used to do clean up activities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Admin template changes ==&lt;br /&gt;
Admin functions that depended on certain functions, naming conventions etc no longer work.  Khepri has been removed.  Other admin functions/libraries may have changed.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACL ==&lt;br /&gt;
gid and aid have been removed.  Significant changes to ACL archtecture.  Bricking refers to totally locking your self and everyone else out - Last chance backdoor involves adding a emergency pw to the config file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==sys.ini language translation file==&lt;br /&gt;
This file has 3 purposes:&lt;br /&gt;
&lt;br /&gt;
1. It is used for installation process translations, when a folder language is included in the pack.&lt;br /&gt;
&lt;br /&gt;
pack/language/en-gb/en-gb.extension.ini&lt;br /&gt;
&lt;br /&gt;
pack/language/en-gb/en-gb.extension.sys.ini&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. It is used to replace the former .menu.ini&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. It is used to display the translated extension name in many managers.&lt;br /&gt;
&lt;br /&gt;
== removed include folders ==&lt;br /&gt;
Most of the 3rd party libraries (Archive, domit, js, PEAR, etc) in the include folder have been removed in J!1.6. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use paths defined in defines.php. ==&lt;br /&gt;
(Note they are different for the site and the administration)&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 1.6]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Security</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Security"/>
				<updated>2010-12-28T17:26:08Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Recommended Reading ==&lt;br /&gt;
* [[Security and Performance FAQs]]&lt;br /&gt;
&lt;br /&gt;
# [[Security Checklist 1 - Getting Started]] &lt;br /&gt;
# [[Security Checklist 2 - Hosting and Server Setup]]&lt;br /&gt;
# [[Security Checklist 3 - Testing and Development]]&lt;br /&gt;
# [[Security Checklist 4 - Joomla Setup]]&lt;br /&gt;
# [[Security Checklist 5 - Site Administration]]&lt;br /&gt;
# [[Security Checklist 6 - Site Recovery]]&lt;br /&gt;
# [[Security Checklist 7 | Security Checklist 7 - You have been Hacked]]&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&amp;lt;small&amp;gt;List of articles that belong to the category &amp;quot;Security&amp;quot;&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;DPL&amp;gt;&lt;br /&gt;
noresultsheader=\n  &lt;br /&gt;
category=Security&lt;br /&gt;
&amp;lt;/DPL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== REMEMBER ==&lt;br /&gt;
&lt;br /&gt;
#'''There's no one right way!''' Due to the variety and complexity of modern web servers, security issues can't be resolved with simple, one-size-fits-all solutions. You, or someone you trust, must learn enough about your web server infrastructure to make valid security decisions.&lt;br /&gt;
#'''There's no substitute for experience!''' To secure your web site, you must gain real experience , or get experienced help from others.&lt;br /&gt;
#'''It's not as hard as it looks:''' The following checklist may seem intimidating, but you don't have to deal with all of it at once. As you become more familiar with GNU/Linux, Apache, MySQL, PHP, HTTP, and Joomla, you'll add refinements to your combination of security tactics. Security is a moving target, so today's expert might be tomorrow's victim. Good luck!...&lt;br /&gt;
&lt;br /&gt;
Please read [[Joomla%21 Administrators Security Checklist]] for more information.&lt;br /&gt;
&lt;br /&gt;
See all documents in the [[:category:Security|Security Category]].&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/CodeExample:4ca07516bb7f7</id>
		<title>CodeExample:4ca07516bb7f7</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/CodeExample:4ca07516bb7f7"/>
				<updated>2010-10-24T08:30:19Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class='example'&amp;gt;&lt;br /&gt;
&amp;lt;div class='example-title'&amp;gt;&amp;lt;h4&amp;gt;JPagination on Frontpage&amp;lt;/h4&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
 &amp;lt;div class='commentBlock'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mariska wrote:&lt;br /&gt;
&lt;br /&gt;
if you want to '''Jpagination work on front page''' change Jpagination.php&lt;br /&gt;
&lt;br /&gt;
on this code function _buildDataObject&lt;br /&gt;
bicause this method use to generate link on front end&lt;br /&gt;
// add &amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit to $data-&amp;gt;[]-&amp;gt;link&lt;br /&gt;
    function _buildDataObject() {&lt;br /&gt;
        // Initialize variables&lt;br /&gt;
        $data = new stdClass();&lt;br /&gt;
        $data-&amp;gt;all = new JPaginationObject(JText::_('View All'));&lt;br /&gt;
        if (!$this-&amp;gt;_viewall) {&lt;br /&gt;
            $data-&amp;gt;all-&amp;gt;base = '0';&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;all-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot;); // &amp;lt;== this  &lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        // Set the start and previous data objects&lt;br /&gt;
        $data-&amp;gt;start = new JPaginationObject(JText::_('Start'));&lt;br /&gt;
        $data-&amp;gt;previous = new JPaginationObject(JText::_('Prev'));&lt;br /&gt;
        if ($this-&amp;gt;get('pages.current') &amp;gt; 1) {&lt;br /&gt;
            $page = ($this-&amp;gt;get('pages.current') - 2) * $this-&amp;gt;limit;&lt;br /&gt;
           $page = $page == 0 ? '' : $page; //set the empty for removal from route&lt;br /&gt;
            $data-&amp;gt;start-&amp;gt;base = '0';&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;start-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot;); //&amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;previous-&amp;gt;base = $page;&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;previous-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $page); //&amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        // Set the next and end data objects&lt;br /&gt;
        $data-&amp;gt;next = new JPaginationObject(JText::_('Next'));&lt;br /&gt;
        $data-&amp;gt;end = new JPaginationObject(JText::_('End'));&lt;br /&gt;
        if ($this-&amp;gt;get('pages.current') &amp;lt; $this-&amp;gt;get('pages.total')) {&lt;br /&gt;
            $next = $this-&amp;gt;get('pages.current') * $this-&amp;gt;limit;&lt;br /&gt;
            $end = ($this-&amp;gt;get('pages.total') - 1) * $this-&amp;gt;limit;&lt;br /&gt;
            $data-&amp;gt;next-&amp;gt;base = $next;&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;next-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $next); // &amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;end-&amp;gt;base = $end;&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;end-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $end); // &amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        $data-&amp;gt;pages = array();&lt;br /&gt;
        $stop = $this-&amp;gt;get('pages.stop');&lt;br /&gt;
        for ($i = $this-&amp;gt;get('pages.start'); $i &amp;lt;= $stop; $i++) {&lt;br /&gt;
            $offset = ($i - 1) * $this-&amp;gt;limit&lt;br /&gt;
            $offset = $offset == 0 ? '' : $offset;  //set the empty for removal from route&lt;br /&gt;
            $data-&amp;gt;pages[$i] = new JPaginationObject($i);&lt;br /&gt;
            if ($i != $this-&amp;gt;get('pages.current') || $this-&amp;gt;_viewall) {&lt;br /&gt;
                $data-&amp;gt;pages[$i]-&amp;gt;base = $offset;&lt;br /&gt;
&lt;br /&gt;
                $data-&amp;gt;pages[$i]-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $offset); //&amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return $data;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='comment-signature'&amp;gt;[[User:Batch1211|Batch1211]] 05:42, 27 September 2010 (CDT) [[CodeExample:4ca07516bb7f7 |Edit comment]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:JPagination]] [[Category:CodeExample]] [[Category:ClassExample]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/CodeExample:4ca07516bb7f7</id>
		<title>CodeExample:4ca07516bb7f7</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/CodeExample:4ca07516bb7f7"/>
				<updated>2010-10-24T08:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class='example'&amp;gt;&lt;br /&gt;
&amp;lt;div class='example-title'&amp;gt;&amp;lt;h4&amp;gt;JPagination on Frontpage&amp;lt;/h4&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
 &amp;lt;div class='commentBlock'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mariska wrote:&lt;br /&gt;
&lt;br /&gt;
if you want to '''Jpagination work on front page''' change Jpagination.php&lt;br /&gt;
&lt;br /&gt;
on this code function _buildDataObject&lt;br /&gt;
bicause this method use to generate link on front end&lt;br /&gt;
// add &amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit to $data-&amp;gt;[]-&amp;gt;link&lt;br /&gt;
    function _buildDataObject() {&lt;br /&gt;
        // Initialize variables&lt;br /&gt;
        $data = new stdClass();&lt;br /&gt;
        $data-&amp;gt;all = new JPaginationObject(JText::_('View All'));&lt;br /&gt;
        if (!$this-&amp;gt;_viewall) {&lt;br /&gt;
            $data-&amp;gt;all-&amp;gt;base = '0';&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;all-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot;); // &amp;lt;== this  &lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        // Set the start and previous data objects&lt;br /&gt;
        $data-&amp;gt;start = new JPaginationObject(JText::_('Start'));&lt;br /&gt;
        $data-&amp;gt;previous = new JPaginationObject(JText::_('Prev'));&lt;br /&gt;
        if ($this-&amp;gt;get('pages.current') &amp;gt; 1) {&lt;br /&gt;
            $page = ($this-&amp;gt;get('pages.current') - 2) * $this-&amp;gt;limit;&lt;br /&gt;
           $page = $page == 0 ? '' : $page; //set the empty for removal from route&lt;br /&gt;
            $data-&amp;gt;start-&amp;gt;base = '0';&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;start-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot;); //&amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;previous-&amp;gt;base = $page;&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;previous-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $page); //&amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        // Set the next and end data objects&lt;br /&gt;
        $data-&amp;gt;next = new JPaginationObject(JText::_('Next'));&lt;br /&gt;
        $data-&amp;gt;end = new JPaginationObject(JText::_('End'));&lt;br /&gt;
        if ($this-&amp;gt;get('pages.current') &amp;lt; $this-&amp;gt;get('pages.total')) {&lt;br /&gt;
            $next = $this-&amp;gt;get('pages.current') * $this-&amp;gt;limit;&lt;br /&gt;
            $end = ($this-&amp;gt;get('pages.total') - 1) * $this-&amp;gt;limit;&lt;br /&gt;
            $data-&amp;gt;next-&amp;gt;base = $next;&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;next-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $next); // &amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;end-&amp;gt;base = $end;&lt;br /&gt;
&lt;br /&gt;
            $data-&amp;gt;end-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $end); // &amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        $data-&amp;gt;pages = array();&lt;br /&gt;
        $stop = $this-&amp;gt;get('pages.stop');&lt;br /&gt;
        for ($i = $this-&amp;gt;get('pages.start'); $i &amp;lt;= $stop; $i++) {&lt;br /&gt;
            $offset = ($i - 1) * $this-&amp;gt;limit&lt;br /&gt;
            $offset = $offset == 0 ? '' : $offset;  //set the empty for removal from route&lt;br /&gt;
            $data-&amp;gt;pages[$i] = new JPaginationObject($i);&lt;br /&gt;
            if ($i != $this-&amp;gt;get('pages.current') || $this-&amp;gt;_viewall) {&lt;br /&gt;
                $data-&amp;gt;pages[$i]-&amp;gt;base = $offset;&lt;br /&gt;
&lt;br /&gt;
                $data-&amp;gt;pages[$i]-&amp;gt;link = JRoute::_(&amp;quot;&amp;amp;limit=&amp;quot;.$this-&amp;gt;limit.&amp;quot;&amp;amp;limitstart=&amp;quot; . $offset); //&amp;lt;== this&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return $data;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='comment-signature'&amp;gt;[[User:Batch1211|Batch1211]] 05:42, 27 September 2010 (CDT) [[CodeExample:4ca07516bb7f7 |Edit comment]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[Category:JPagination]] [[Category:CodeExample]] [[Category:ClassExample]]&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API16:JPagination</id>
		<title>API16:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API16:JPagination"/>
				<updated>2010-10-24T08:29:11Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API16:JPagination</id>
		<title>API16:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API16:JPagination"/>
				<updated>2010-10-24T08:27:57Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: Replacing page with '
===Examples===
&amp;lt;CodeExamplesForm /&amp;gt;
&amp;lt;dpl&amp;gt;
 noresultsheader=\n
 category=JPagination
 category=CodeExample
 category=ClassExample
 include=*
 format= ,,,
&amp;lt;/dpl&amp;gt;'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 noresultsheader=\n&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
 include=*&lt;br /&gt;
 format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API16:JPagination</id>
		<title>API16:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API16:JPagination"/>
				<updated>2010-10-24T08:25:46Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: Reverted edits by Batch1211 (Talk) to last version by Doxiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[Description:JPagination|Edit Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Description:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
libraries/joomla/html/pagination.php&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/__construct|__construct]]&lt;br /&gt;
|Constructor.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/setAdditionalUrlParam|setAdditionalUrlParam]]&lt;br /&gt;
|Method to set an additional URL parameter to be added to all pagination class generated links.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getAdditionalUrlParam|getAdditionalUrlParam]]&lt;br /&gt;
|Method to get an additional URL parameter to be added to all pagination class generated links if it exists.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getRowOffset|getRowOffset]]&lt;br /&gt;
|Return the rationalised offset for a row with a given index.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getData|getData]]&lt;br /&gt;
|Return the pagination data object, only creating it if it doesn't already exist.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getPagesCounter|getPagesCounter]]&lt;br /&gt;
|Create and return the pagination pages counter string, ie. Page 2 of 4.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getResultsCounter|getResultsCounter]]&lt;br /&gt;
|Create and return the pagination result set counter string, ie. Results 1-10 of 42&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getPagesLinks|getPagesLinks]]&lt;br /&gt;
|Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getListFooter|getListFooter]]&lt;br /&gt;
|Return the pagination footer.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/getLimitBox|getLimitBox]]&lt;br /&gt;
|Creates a dropdown box for selecting how many records to show per page.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/orderUpIcon|orderUpIcon]]&lt;br /&gt;
|Return the icon to move an item UP.&lt;br /&gt;
|-&lt;br /&gt;
|[[API16:JPagination/orderDownIcon|orderDownIcon]]&lt;br /&gt;
|Return the icon to move an item DOWN.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( 'joomla.html.pagination' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JPagination|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{SeeAlso:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 noresultsheader=\n&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
 include=*&lt;br /&gt;
 format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API15:JPagination</id>
		<title>API15:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API15:JPagination"/>
				<updated>2010-10-24T08:23:08Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;editsection&amp;quot; &lt;br /&gt;
&lt;br /&gt;
style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Description:JPagination|Edit &lt;br /&gt;
&lt;br /&gt;
Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Description:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
libraries/joomla/html/pagination.php&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/__construct|__construct]]&lt;br /&gt;
|Constructor&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getRowOffset|getRowOffset]]&lt;br /&gt;
|Return the rationalised offset for a row with a given index.&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getData|getData]]&lt;br /&gt;
|Return the pagination data object, only creating it if it doesn't already exist&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesCounter|getPagesCounter]]&lt;br /&gt;
|Create and return the pagination pages counter string, ie. Page 2 of 4&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getResultsCounter|getResultsCounter]]&lt;br /&gt;
|Create and return the pagination result set counter string, ie. Results 1-10 of 42&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesLinks|getPagesLinks]]&lt;br /&gt;
|Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getListFooter|getListFooter]]&lt;br /&gt;
|Return the pagination footer&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getLimitBox|getLimitBox]]&lt;br /&gt;
|Creates a dropdown box for selecting how many records to show per page&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderUpIcon|orderUpIcon]]&lt;br /&gt;
|Return the icon to move an item UP&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderDownIcon|orderDownIcon]]&lt;br /&gt;
|Return the icon to move an item DOWN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( 'joomla.html.pagination' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JPagination|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{SeeAlso:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
´&amp;lt;dpl&amp;gt;&lt;br /&gt;
 noresultsheader=\n&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
 include=*&lt;br /&gt;
 format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API15:JPagination</id>
		<title>API15:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API15:JPagination"/>
				<updated>2010-10-24T08:21:22Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;editsection&amp;quot; &lt;br /&gt;
&lt;br /&gt;
style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Description:JPagination|Edit &lt;br /&gt;
&lt;br /&gt;
Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Description:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
libraries/joomla/html/pagination.php&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/__construct|__construct]]&lt;br /&gt;
|Constructor&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getRowOffset|getRowOffset]]&lt;br /&gt;
|Return the rationalised offset for a row with a given index.&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getData|getData]]&lt;br /&gt;
|Return the pagination data object, only creating it if it doesn't already exist&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesCounter|getPagesCounter]]&lt;br /&gt;
|Create and return the pagination pages counter string, ie. Page 2 of 4&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getResultsCounter|getResultsCounter]]&lt;br /&gt;
|Create and return the pagination result set counter string, ie. Results 1-10 of 42&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesLinks|getPagesLinks]]&lt;br /&gt;
|Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getListFooter|getListFooter]]&lt;br /&gt;
|Return the pagination footer&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getLimitBox|getLimitBox]]&lt;br /&gt;
|Creates a dropdown box for selecting how many records to show per page&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderUpIcon|orderUpIcon]]&lt;br /&gt;
|Return the icon to move an item UP&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderDownIcon|orderDownIcon]]&lt;br /&gt;
|Return the icon to move an item DOWN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( 'joomla.html.pagination' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JPagination|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{SeeAlso:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API15:JPagination</id>
		<title>API15:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API15:JPagination"/>
				<updated>2010-10-24T08:20:45Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;editsection&amp;quot; &lt;br /&gt;
&lt;br /&gt;
style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Description:JPagination|Edit &lt;br /&gt;
&lt;br /&gt;
Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Description:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
libraries/joomla/html/pagination.php&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/__construct|__construct]]&lt;br /&gt;
|Constructor&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getRowOffset|getRowOffset]]&lt;br /&gt;
|Return the rationalised offset for a row with a given index.&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getData|getData]]&lt;br /&gt;
|Return the pagination data object, only creating it if it doesn't already exist&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesCounter|getPagesCounter]]&lt;br /&gt;
|Create and return the pagination pages counter string, ie. Page 2 of 4&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getResultsCounter|getResultsCounter]]&lt;br /&gt;
|Create and return the pagination result set counter string, ie. Results 1-10 of 42&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesLinks|getPagesLinks]]&lt;br /&gt;
|Create and return the pagination page list string, ie. Previous, Next, 1 2 3 ... x&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getListFooter|getListFooter]]&lt;br /&gt;
|Return the pagination footer&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getLimitBox|getLimitBox]]&lt;br /&gt;
|Creates a dropdown box for selecting how many records to show per page&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderUpIcon|orderUpIcon]]&lt;br /&gt;
|Return the icon to move an item UP&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderDownIcon|orderDownIcon]]&lt;br /&gt;
|Return the icon to move an item DOWN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( 'joomla.html.pagination' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[[SeeAlso:JPagination|Edit See Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;gt;/span&amp;gt;&lt;br /&gt;
{{SeeAlso:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API15:JPagination</id>
		<title>API15:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API15:JPagination"/>
				<updated>2010-10-24T08:17:38Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;editsection&amp;quot; &lt;br /&gt;
&lt;br /&gt;
style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Description:JPagination|Edit &lt;br /&gt;
&lt;br /&gt;
Descripton]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Description:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Defined in===&lt;br /&gt;
libraries/joomla/html/pagination.php&lt;br /&gt;
===Methods===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Method name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/__construct|&lt;br /&gt;
&lt;br /&gt;
__construct]]&lt;br /&gt;
|Constructor&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getRowOffset|&lt;br /&gt;
&lt;br /&gt;
getRowOffset]]&lt;br /&gt;
|Return the rationalised offset for &lt;br /&gt;
&lt;br /&gt;
a row with a given index.&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getData|&lt;br /&gt;
&lt;br /&gt;
getData]]&lt;br /&gt;
|Return the pagination data object, &lt;br /&gt;
&lt;br /&gt;
only creating it if it doesn't &lt;br /&gt;
&lt;br /&gt;
already exist&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
[[API15:JPagination/getPagesCounter|&lt;br /&gt;
&lt;br /&gt;
getPagesCounter]]&lt;br /&gt;
|Create and return the pagination &lt;br /&gt;
&lt;br /&gt;
pages counter string, ie. Page 2 of &lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
[[API15:JPagination/getResultsCounte&lt;br /&gt;
&lt;br /&gt;
r|getResultsCounter]]&lt;br /&gt;
|Create and return the pagination &lt;br /&gt;
&lt;br /&gt;
result set counter string, ie. &lt;br /&gt;
&lt;br /&gt;
Results 1-10 of 42&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getPagesLinks|&lt;br /&gt;
&lt;br /&gt;
getPagesLinks]]&lt;br /&gt;
|Create and return the pagination &lt;br /&gt;
&lt;br /&gt;
page list string, ie. Previous, &lt;br /&gt;
&lt;br /&gt;
Next, 1 2 3 ... x&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getListFooter|&lt;br /&gt;
&lt;br /&gt;
getListFooter]]&lt;br /&gt;
|Return the pagination footer&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/getLimitBox|&lt;br /&gt;
&lt;br /&gt;
getLimitBox]]&lt;br /&gt;
|Creates a dropdown box for &lt;br /&gt;
&lt;br /&gt;
selecting how many records to show &lt;br /&gt;
&lt;br /&gt;
per page&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderUpIcon|&lt;br /&gt;
&lt;br /&gt;
orderUpIcon]]&lt;br /&gt;
|Return the icon to move an item UP&lt;br /&gt;
|-&lt;br /&gt;
|[[API15:JPagination/orderDownIcon|&lt;br /&gt;
&lt;br /&gt;
orderDownIcon]]&lt;br /&gt;
|Return the icon to move an item &lt;br /&gt;
&lt;br /&gt;
DOWN&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Importing===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;jimport( &lt;br /&gt;
&lt;br /&gt;
'joomla.html.pagination' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;editsection&amp;quot; &lt;br /&gt;
&lt;br /&gt;
style=&amp;quot;font-size:76%;&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SeeAlso:JPagination|Edit See &lt;br /&gt;
&lt;br /&gt;
Also]]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
{{SeeAlso:JPagination}}&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;CodeExamplesForm /&amp;gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API16:JPagination</id>
		<title>API16:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API16:JPagination"/>
				<updated>2010-10-24T08:17:02Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: Replacing page with '
&amp;lt;dpl&amp;gt;
 category=JPagination
 category=CodeExample
 category=ClassExample
&amp;lt;/dpl&amp;gt;'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API15:JPagination</id>
		<title>API15:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API15:JPagination"/>
				<updated>2010-10-24T08:13:11Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;dpl&amp;gt;&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/API15:JPagination</id>
		<title>API15:JPagination</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/API15:JPagination"/>
				<updated>2010-10-24T08:09:11Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: Replacing page with '
&amp;lt;dpl&amp;gt;
 noresultsheader=\n
 category=JPagination
 category=CodeExample
 category=ClassExample
 include=*
 format= ,,,
&amp;lt;/dpl&amp;gt;'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;dpl&amp;gt;&lt;br /&gt;
 noresultsheader=\n&lt;br /&gt;
 category=JPagination&lt;br /&gt;
 category=CodeExample&lt;br /&gt;
 category=ClassExample&lt;br /&gt;
 include=*&lt;br /&gt;
 format= ,,,&lt;br /&gt;
&amp;lt;/dpl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Joomla_installation</id>
		<title>Joomla installation</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Joomla_installation"/>
				<updated>2010-10-05T11:02:46Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Joomla! 1.5.x==&lt;br /&gt;
* [http://help.joomla.org/content/view/1938/310/ Minimum System Requirements for Joomla! 1.5.x].&lt;br /&gt;
* [http://help.joomla.org/content/category/48/268/302/ Installation Manual for Joomla! 1.5.x].&lt;br /&gt;
* [http://help.joomla.org/content/view/1933/294/ Migration Guide for Joomla! 1.5.x].&lt;br /&gt;
==Joomla! 1.0.x==&lt;br /&gt;
* [http://help.joomla.org/content/view/34/279/ System Requirements for Joomla! 1.0.x].&lt;br /&gt;
* [http://help.joomla.org/content/category/15/99/132/ Installation Manual for Joomla! 1.0.x].&lt;br /&gt;
[[Category:Landing Pages]]&lt;br /&gt;
[[Category:Tutorials]][[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_implement_XML-RPC_in_a_component</id>
		<title>How to implement XML-RPC in a component</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_implement_XML-RPC_in_a_component"/>
				<updated>2010-10-05T11:02:14Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
XML-RPC is a specification and set of implementations which allow software running on different software platforms and written in different languages to make procedural calls over the internet using standard [http://en-wikipedia.org/xml eXtensible Markup Language].&lt;br /&gt;
&lt;br /&gt;
There are two ways to implement XML-RPC in a component:&lt;br /&gt;
* Implement it using an XML-RPC plugin or&lt;br /&gt;
* Implement it in the component itself using raw views&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Component Development]][[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_distribute_languages_for_native_Joomla!_1.5_extensions</id>
		<title>How to distribute languages for native Joomla! 1.5 extensions</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_distribute_languages_for_native_Joomla!_1.5_extensions"/>
				<updated>2010-10-05T11:00:56Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When you create a translation for a 3PD extension, usually it is included in the package, but sometimes it is distributed separately. In the 2nd case, it may be difficult to tell the user where to upload the language file(s), though it is even more simplier now than was in Joomla! 1.0.x.&lt;br /&gt;
&lt;br /&gt;
To avoid this, by the analogy of the Joomla! 1.5 core languages you can create an installable language pack for a native Joomla! 1.5 extension. You will need to compress the .ini files and an install.xml file for them into a supported archive type with the following code like this for the back-end:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;install version=&amp;quot;1.5&amp;quot; client=&amp;quot;administrator&amp;quot; type=&amp;quot;language&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;xx-XX&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
        &amp;lt;creationDate&amp;gt;YYYY-MM-DD&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
        &amp;lt;author&amp;gt;Your Name&amp;lt;/author&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;YourLanguage&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;authorEmail&amp;gt;yourmail@example.com&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
        &amp;lt;authorUrl&amp;gt;http://www.example.com/&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
        &amp;lt;copyright&amp;gt;Copyright (C) YYYY Copyright Owner. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
        &amp;lt;license&amp;gt;LicenseType&amp;lt;/license&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;[Language name] translation for [extension_name]&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;files&amp;gt;&lt;br /&gt;
            &amp;lt;filename&amp;gt;xx-XX.[extension_name].ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;/files&amp;gt;&lt;br /&gt;
      &amp;lt;params /&amp;gt;&lt;br /&gt;
    &amp;lt;/install&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommended to add the method=&amp;quot;upgrade&amp;quot; parameter in order to be able to easily install a new version of the language pack. It this parameter is not specified, the installer cannot overwrite the old language file(s) and it results an error.&lt;br /&gt;
&lt;br /&gt;
When an extension has language file(s) for the front-end as well, an additional package should be created. In this case please change the following line of the install.xml file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;install version=&amp;quot;1.5&amp;quot; client=&amp;quot;administrator&amp;quot; type=&amp;quot;language&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;install version=&amp;quot;1.5&amp;quot; client=&amp;quot;site&amp;quot; type=&amp;quot;language&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Joomla! 1.5.4 was implemented the single installation of both admin and site language packs what makes the language packs management even more easier for the site administrators. You can create such language pack installer using the following template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;language&amp;quot; client=&amp;quot;both&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;YourLanguage&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;tag&amp;gt;xx-XX&amp;lt;/tag&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
      &amp;lt;creationDate&amp;gt;YYYY-MM-DD&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
      &amp;lt;author&amp;gt;Your Name&amp;lt;/author&amp;gt;&lt;br /&gt;
      &amp;lt;authorEmail&amp;gt;youremail@example.com&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
      &amp;lt;authorUrl&amp;gt;http://www.yoursite.com/&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
      &amp;lt;copyright&amp;gt;Copyright (C) YYYY Copyright Owner. All rights reserved.&amp;lt;/copyright&amp;gt;&lt;br /&gt;
      &amp;lt;license&amp;gt;License Type&amp;lt;/license&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;[Language name] translation for [extension_name]&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;administration&amp;gt;&lt;br /&gt;
        &amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;filename&amp;gt;xx-XX.[extension_name].ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;/files&amp;gt;&lt;br /&gt;
      &amp;lt;/administration&amp;gt;&lt;br /&gt;
      &amp;lt;site&amp;gt;&lt;br /&gt;
        &amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;filename&amp;gt;xx-XX.[extension_name].ini&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;/files&amp;gt;&lt;br /&gt;
      &amp;lt;/site&amp;gt;&lt;br /&gt;
      &amp;lt;params /&amp;gt;&lt;br /&gt;
  &amp;lt;/install&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For such kind of language pack installers, you should create an &amp;quot;admin&amp;quot; folder and a &amp;quot;site&amp;quot; folder with the appropriate language files included and an install.xml file added up one level.&lt;br /&gt;
&lt;br /&gt;
Due to the critical vulnerability fixed in Joomla! 1.5.6 it was mandatory to update a web site to this version, so the creation of a single installation pack should be preferred.&lt;br /&gt;
&lt;br /&gt;
Such kind of language packs can be created for the native Joomla! 1.5 extensions developed using the MVC pattern only.&lt;br /&gt;
&lt;br /&gt;
Such a language pack can be installed via the Install tab of the Extension Manager screen opened by the Extensions -&amp;gt; Install/Uninstall menu item. The included language file(s) will be uploaded to the appropriate folder.&lt;br /&gt;
&lt;br /&gt;
For a translator, this method allows him/her to specify the authoring details what are rarely added to the header of a language file. This way the end user will know who to contact for occasional proof-reading or just for a thank you.&lt;br /&gt;
&lt;br /&gt;
For a developer, there is no need to add a language installation feature for their extensions that was a feature for some 1.0.x extensions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips and tricks]]&lt;br /&gt;
[[Category:Tips and tricks 1.5]]&lt;br /&gt;
[[Category:FAQ]][[Category:Language Development]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_determine_your_database_prefix</id>
		<title>How to determine your database prefix</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_determine_your_database_prefix"/>
				<updated>2010-10-05T11:00:22Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The database prefix can be found in the file configuration.php or in the admin panel under the menu &amp;quot;Site - Configuration File - Global Configuration - Server&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:Database]]&lt;br /&gt;
{{stub}}&lt;br /&gt;
[[Category:Stubs]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_determine_browser_capabilities</id>
		<title>How to determine browser capabilities</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_determine_browser_capabilities"/>
				<updated>2010-10-05T10:59:39Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Different web browsers sometimes show differences in the way that they render a page. For this reason you may wish to find out which particular browser a visitor is using, in order to use some browser-specific CSS.&lt;br /&gt;
&lt;br /&gt;
The following JavaScript defines a simple browser detection object which determines the browser's name and version by decoding the &amp;lt;code&amp;gt;navigator.userAgent&amp;lt;/code&amp;gt; string.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function browserDetect()&lt;br /&gt;
{&lt;br /&gt;
  var browserNames=new Array(&amp;quot;Opera&amp;quot;, &amp;quot;MSIE&amp;quot;,&amp;quot;Netscape&amp;quot;,&amp;quot;Firefox&amp;quot;);&lt;br /&gt;
  this.name=&amp;quot;NK&amp;quot;;&lt;br /&gt;
  this.mainVersion=&amp;quot;NK&amp;quot;;&lt;br /&gt;
  this.minorVersion=&amp;quot;NK&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  for (var i=0; i&amp;lt; browserNames.length; i++)&lt;br /&gt;
  {&lt;br /&gt;
   var pattern='('+browserNames[i]+')'+'.([0-9]+)\.([0-9]+)';    &lt;br /&gt;
   var myRegExp=new RegExp(pattern);&lt;br /&gt;
   if (myRegExp.test(navigator.userAgent))&lt;br /&gt;
    {&lt;br /&gt;
      var results=myRegExp.exec(navigator.userAgent);&lt;br /&gt;
      this.name=results[1];&lt;br /&gt;
      this.mainVersion=results[2];&lt;br /&gt;
      this.minorVersion=results[3];&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to use this in a script, you then create an instance of this object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var browser = new browserDetect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The property &amp;lt;code&amp;gt;browser.name&amp;lt;/code&amp;gt; will then give you then name of the browser (MSIE, Opera, Netscape or Firefox), &amp;lt;code&amp;gt;browser.mainVersion&amp;lt;/code&amp;gt; will give you the main version number and &amp;lt;code&amp;gt;browser.minorVersion&amp;lt;/code&amp;gt; will give you the minor version number.&lt;br /&gt;
&lt;br /&gt;
However you should be aware that this is not foolproof, and it is generally better (in this writer's opinion) to avoid writing browser-specific code as far as possible.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips and tricks]]&lt;br /&gt;
[[Category:FAQ]][[Category:Component Development]][[Category:JavaScript]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_create_an_article_from_the_front_end</id>
		<title>How to create an article from the front end</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_create_an_article_from_the_front_end"/>
				<updated>2010-10-05T10:56:50Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Login&lt;br /&gt;
* Click on “Submit an Article” in the user menu.&lt;br /&gt;
* Title your article in the text field labeled title.&lt;br /&gt;
* Add images to your document. You can select previously uploaded pictures, give a direct URL to an image or upload your own image. (optional)&lt;br /&gt;
* Add pagebreaks to your article. Pagebreaks make a table of contents for your article. (optional)&lt;br /&gt;
* Add a readmore tag to your article. Anything past the readmore tag can only be seen if the article is viewed individually. (optional)&lt;br /&gt;
* Type your article in the large text field. &lt;br /&gt;
* Return to the top of the page and click on the save button to create the article. Clicking on cancel will take you back to the homepage without saving.&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
http://help.joomla.org/ghop/feb2008/task056/&lt;br /&gt;
[[Category:Tutorials]][[Category:Article Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Creating_a_search_plugin</id>
		<title>Creating a search plugin</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Creating_a_search_plugin"/>
				<updated>2010-10-05T10:55:52Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{review}}&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
==Description==&lt;br /&gt;
This document is about how to create a Search Plugin. You can use a Search Plugin to search through the database of your Joomla! site. To create a plugin, you will at least need two files; an XML file and a PHP file. For internationalization it is good to create an INI file as well. &lt;br /&gt;
&lt;br /&gt;
==XML file==&lt;br /&gt;
The XML file is named the same as the PHP file, and is one of the two required files.&lt;br /&gt;
Always start off with the XML tag and define that it is written in a UTF-8 format.&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;!DOCTYPE install PUBLIC&lt;br /&gt;
    &amp;quot;-//Joomla! 1.5//DTD plugin 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/1.5/plugin-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
To define that the plugin has to be a search plugin, add this line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
The type will define it is a plugin, the group defines the Plugin is in the group of search plugins.&lt;br /&gt;
&lt;br /&gt;
After that, add some information about yourself and the plugin, like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;Name of your search plugin&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;creationDate&amp;gt;Creation date&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
&amp;lt;author&amp;gt;Your name&amp;lt;/author&amp;gt;&lt;br /&gt;
&amp;lt;authorEmail&amp;gt;Your e-mail address&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
&amp;lt;authorUrl&amp;gt;Your website&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
&amp;lt;copyright&amp;gt;Copyright information&amp;lt;/copyright&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;License, for example GNU/GPL&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;version&amp;gt;Version of the plugin&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Description of the plugin; showed during installation and when editing &lt;br /&gt;
the plugin in the Plugin Manager&amp;lt;/description&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
And now, include your PHP file to the Search Plugin. The name of this file should be the same as the name of this XML file. Put this name also behind the plugin=&amp;quot;&amp;quot; part. &lt;br /&gt;
&lt;br /&gt;
You could also add more files for your plugin, for example an image. Just add another row between &amp;lt;files&amp;gt; and &amp;lt;/file&amp;gt;, and then place the file between &amp;lt;filename&amp;gt; tags.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;files&amp;gt;&lt;br /&gt;
   &amp;lt;filename plugin=&amp;quot;nameofplugin&amp;quot;&amp;gt;nameofplugin.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/files&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the internationalization, we will use language files. This is not required, but people from other countries will love it they can easily translate your plugin to their own language.&lt;br /&gt;
The language tags can be found here: [http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes] (use the ISO 639-1 column) and here: [http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languages&amp;gt;&lt;br /&gt;
   &amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;language/en-GB/en-GB.plg_search_nameofplugin.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/languages&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Optionally, you could add some parameters to the plugin. These will look like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;paramname&amp;quot; type=&amp;quot;typeofparameter&amp;quot; default=&amp;quot;defaultsetting&amp;quot; label=&amp;quot;title&amp;quot; description=&amp;quot;description&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/params&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
*'''Param name:''' The name of the parameter. You will need this when creating the PHP file.&lt;br /&gt;
*'''Param type:''' You could choose between several types of parameters. Look at this document to learn something about the different types: [http://docs.joomla.org/Using_the_core_parameter_types] &lt;br /&gt;
*'''Param default:''' The default setting for this parameter.&lt;br /&gt;
*'''Param label:''' The name of this parameter displayed in the edit screen of this plugin in the Plugin Manager.&lt;br /&gt;
*'''Param description:''' The text which appears as a tool tip for this parameter. &lt;br /&gt;
&lt;br /&gt;
And do not forget to end your XML file with the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;/install&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP file==&lt;br /&gt;
The PHP file of your plugin is probably the most important file of the plugin. This is an example PHP file of a search plugin. The comments are included. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
//First start with information about the Plugin and yourself. For example:&lt;br /&gt;
/**&lt;br /&gt;
 * @version		$Id: nameofplugin.php versionnumber date author&lt;br /&gt;
 * @copyright	        Copyright&lt;br /&gt;
 * @license		License, for example GNU/GPL&lt;br /&gt;
 * All other information you would like to add&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
//To prevent accessing the document directly, enter this code:&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( '_JEXEC' ) or die( 'Restricted access' );&lt;br /&gt;
&lt;br /&gt;
//Now define the registerEvent and the language file. Replace 'nameofplugin' with the name of your plugin.&lt;br /&gt;
$mainframe-&amp;gt;registerEvent( 'onSearch', 'plgSearchnameofplugin' );&lt;br /&gt;
$mainframe-&amp;gt;registerEvent( 'onSearchAreas', 'plgSearchnameofpluginAreas' );&lt;br /&gt;
&lt;br /&gt;
JPlugin::loadLanguage( 'plg_search_nameofplugin' );&lt;br /&gt;
&lt;br /&gt;
//Then define a function to return an array of search areas. Replace 'nameofplugin' with the name of your plugin.&lt;br /&gt;
function &amp;amp;plgSearchnameofpluginAreas()&lt;br /&gt;
{&lt;br /&gt;
	static $areas = array(&lt;br /&gt;
		'nameofplugin' =&amp;gt; 'Nameofplugin'&lt;br /&gt;
	);&lt;br /&gt;
	return $areas;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Then the real function has to be created. The database connection should be made. &lt;br /&gt;
//The function will be closed with an } at the end of the file.&lt;br /&gt;
function plgSearchnameofplugin( $text, $phrase='', $ordering='', $areas=null )&lt;br /&gt;
{&lt;br /&gt;
	$db		=&amp;amp; JFactory::getDBO();&lt;br /&gt;
	$user	=&amp;amp; JFactory::getUser(); &lt;br /&gt;
&lt;br /&gt;
//If the array is not correct, return it:&lt;br /&gt;
	if (is_array( $areas )) {&lt;br /&gt;
		if (!array_intersect( $areas, array_keys( plgSearchnameofpluginAreas() ) )) {&lt;br /&gt;
			return array();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
//It is time to define the parameters! First get the right plugin; 'search' (the group), 'nameofplugin'. &lt;br /&gt;
$plugin =&amp;amp; JPluginHelper::getPlugin('search', 'nameofplugin');&lt;br /&gt;
&lt;br /&gt;
//Then load the parameters of the plugin..&lt;br /&gt;
$pluginParams = new JParameter( $plugin-&amp;gt;params );&lt;br /&gt;
&lt;br /&gt;
//And define the parameters. For example like this..&lt;br /&gt;
$limit = $pluginParams-&amp;gt;def( 'nameofparameter', defaultsetting );&lt;br /&gt;
&lt;br /&gt;
//Use the function trim to delete spaces in front of or at the back of the searching terms&lt;br /&gt;
$text = trim( $text );&lt;br /&gt;
&lt;br /&gt;
//Return Array when nothing was filled in&lt;br /&gt;
if ($text == '') {&lt;br /&gt;
		return array();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
//After this, you have to add the database part. This will be the most difficult part, because this changes per situation.&lt;br /&gt;
//In the coding examples later on you will find some of the examples used by Joomla! 1.5 core Search Plugins.&lt;br /&gt;
//It will look something like this.&lt;br /&gt;
	$wheres = array();&lt;br /&gt;
	switch ($phrase) {&lt;br /&gt;
&lt;br /&gt;
//search exact&lt;br /&gt;
		case 'exact':&lt;br /&gt;
			$text		= $db-&amp;gt;Quote( '%'.$db-&amp;gt;getEscaped( $text, true ).'%', false );&lt;br /&gt;
			$wheres2 	= array();&lt;br /&gt;
			$wheres2[] 	= 'LOWER(a.name) LIKE '.$text;&lt;br /&gt;
			$where 		= '(' . implode( ') OR (', $wheres2 ) . ')';&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
//search all or any&lt;br /&gt;
		case 'all':&lt;br /&gt;
		case 'any':&lt;br /&gt;
&lt;br /&gt;
//set default&lt;br /&gt;
		default:&lt;br /&gt;
			$words 	= explode( ' ', $text );&lt;br /&gt;
			$wheres = array();&lt;br /&gt;
			foreach ($words as $word)&lt;br /&gt;
			{&lt;br /&gt;
				$word		= $db-&amp;gt;Quote( '%'.$db-&amp;gt;getEscaped( $word, true ).'%', false );&lt;br /&gt;
				$wheres2 	= array();&lt;br /&gt;
				$wheres2[] 	= 'LOWER(a.name) LIKE '.$word;&lt;br /&gt;
				$wheres[] 	= implode( ' OR ', $wheres2 );&lt;br /&gt;
			}&lt;br /&gt;
			$where = '(' . implode( ($phrase == 'all' ? ') AND (' : ') OR ('), $wheres ) . ')';&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
//ordering of the results&lt;br /&gt;
	switch ( $ordering ) {&lt;br /&gt;
&lt;br /&gt;
//alphabetic, ascending&lt;br /&gt;
		case 'alpha':&lt;br /&gt;
			$order = 'a.name ASC';&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
//oldest first&lt;br /&gt;
		case 'oldest':&lt;br /&gt;
&lt;br /&gt;
//popular first&lt;br /&gt;
		case 'popular':&lt;br /&gt;
&lt;br /&gt;
//newest first&lt;br /&gt;
		case 'newest':&lt;br /&gt;
&lt;br /&gt;
//default setting: alphabetic, ascending&lt;br /&gt;
		default:&lt;br /&gt;
			$order = 'a.name ASC';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
//replace nameofplugin&lt;br /&gt;
	$searchNameofplugin = JText::_( 'Nameofplugin' );&lt;br /&gt;
&lt;br /&gt;
//the database query; differs per situation! It will look something like this:&lt;br /&gt;
	$query = 'SELECT a.name AS title,'&lt;br /&gt;
	. ' CONCAT_WS( &amp;quot; / &amp;quot;, '. $db-&amp;gt;Quote($searchNameofplugin) .', b.title )AS section,'&lt;br /&gt;
	. ' &amp;quot;1&amp;quot; AS browsernav'&lt;br /&gt;
	. ' FROM #__nameofplugin AS a'&lt;br /&gt;
	. ' INNER JOIN #__categories AS b ON b.id = a.catid'&lt;br /&gt;
	. ' WHERE ( '. $where .' )'&lt;br /&gt;
	. ' AND a.published = 1'&lt;br /&gt;
	. ' AND b.access &amp;lt;= '. (int) $user-&amp;gt;get( 'aid' )&lt;br /&gt;
	. ' ORDER BY '. $order&lt;br /&gt;
	;&lt;br /&gt;
&lt;br /&gt;
//Set query&lt;br /&gt;
	$db-&amp;gt;setQuery( $query, 0, $limit );&lt;br /&gt;
	$rows = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&lt;br /&gt;
//The 'output' of the displayed link&lt;br /&gt;
	foreach($rows as $key =&amp;gt; $row) {&lt;br /&gt;
		$rows[$key]-&amp;gt;href = 'index.php?option=com_newsfeeds&amp;amp;view=newsfeed&amp;amp;catid='.$row-&amp;gt;catslug.'&amp;amp;id='.$row-&amp;gt;slug;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
//Return the search results in an array&lt;br /&gt;
return $rows;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are 4 variables that get passed in, which are evident by their names and use in the above code.&lt;br /&gt;
What's not obvious is what the function should return. An array of objects that the search tool uses to display the results. The results could alternatively have been assembled something like this.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$rows[] = (object) array(&lt;br /&gt;
			'href'        =&amp;gt; 'index.php?option=com_newsfeeds&amp;amp;view=newsfeed&amp;amp;catid='.$row-&amp;gt;catslug.'&amp;amp;id='.$row-&amp;gt;slug,&lt;br /&gt;
			'title'       =&amp;gt; $row['name'],&lt;br /&gt;
			'section'     =&amp;gt; $searchnameofplugin,&lt;br /&gt;
			'created'     =&amp;gt; $row['date'],&lt;br /&gt;
			'text'        =&amp;gt; $row['name'],&lt;br /&gt;
			'browsernav'  =&amp;gt; '1'&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==INI file(s)==&lt;br /&gt;
For internationalization it is good to use the INI files. You can add everything to the language file that outputs text to the user, in this order:&lt;br /&gt;
*XML description tag&lt;br /&gt;
*XML label and description attributes from parameters&lt;br /&gt;
*JText::_( 'string' ) used by the plugin&lt;br /&gt;
&lt;br /&gt;
Start your INI file with something like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;# $Id: en-GB.plg_search_nameofplugin.ini&lt;br /&gt;
# Joomla! Project&lt;br /&gt;
# Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.&lt;br /&gt;
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php&lt;br /&gt;
# Note : All ini files need to be saved as UTF-8 - No BOM&amp;lt;/source&amp;gt;&lt;br /&gt;
Of course, you could also add other information, like the author. &lt;br /&gt;
&lt;br /&gt;
For example, this parameter:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&amp;lt;param name=&amp;quot;search_limit&amp;quot; type=&amp;quot;text&amp;quot; size=&amp;quot;5&amp;quot; default=&amp;quot;50&amp;quot; label=&amp;quot;Search Limit&amp;quot; &lt;br /&gt;
description=&amp;quot;Number of Search items to return&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Will cause the following output in the INI file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
SEARCH LIMIT=Search Limit&lt;br /&gt;
NUMBER OF SEARCH ITEMS TO RETURN=Number of Search items to return&amp;lt;/source&amp;gt;&lt;br /&gt;
The file looks repetitive, but will be very useful for translaters.&lt;br /&gt;
&lt;br /&gt;
When you want to make your search plugin available in more languages, first add them to the &amp;lt;languages&amp;gt; tag in the XML file. Then create the same INI file, and change the part after the =, for example the dutch version would be:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
SEARCH LIMIT=Zoek limiet&lt;br /&gt;
NUMBER OF SEARCH ITEMS TO RETURN=Aantal weer te geven zoekresultaten&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Coding examples==&lt;br /&gt;
There are six Joomla! Core Search Plugins. If you look at them you can learn a lot, especially about the query part.&lt;br /&gt;
You can see them 'working' when you go to the back-end of your Joomla! 1.5 installation, then go to the menu 'Extensions' and select the 'Plugin Manager'. Click on the name of the plugin to edit it; and see it working.&lt;br /&gt;
*Plugin Search - Categories&lt;br /&gt;
**\plugins\search\categories.XML&lt;br /&gt;
**\plugins\search\categories.PHP&lt;br /&gt;
**\language\en-GB\en-GB.plg_search_categories.INI&lt;br /&gt;
*Plugin Search - Contacts&lt;br /&gt;
**\plugins\search\contacts.XML&lt;br /&gt;
**\plugins\search\contacts.PHP&lt;br /&gt;
**\language\en-GB\en-GB.plg_search_contacts.INI&lt;br /&gt;
*Plugin Search - Content&lt;br /&gt;
**\plugins\search\content.XML&lt;br /&gt;
**\plugins\search\content.PHP&lt;br /&gt;
**\language\en-GB\en-GB.plg_search_content.INI&lt;br /&gt;
*Plugin Search - Newsfeeds&lt;br /&gt;
**\plugins\search\newsfeeds.XML&lt;br /&gt;
**\plugins\search\newsfeeds.PHP&lt;br /&gt;
**\language\en-GB\en-GB.plg_search_newsfeeds.INI&lt;br /&gt;
*Plugin Search - Sections&lt;br /&gt;
**\plugins\search\sections.XML&lt;br /&gt;
**\plugins\search\sections.PHP&lt;br /&gt;
**\language\en-GB\en-GB.plg_search_sections.INI&lt;br /&gt;
*Plugin Search - Weblinks&lt;br /&gt;
**\plugins\search\weblinks.XML&lt;br /&gt;
**\plugins\search\weblinks.PHP&lt;br /&gt;
**\language\en-GB\en-GB.plg_search_weblinks.INI&lt;br /&gt;
&lt;br /&gt;
==Quick tips==&lt;br /&gt;
*In the PHP file, people often forget to place an semicolon (;) at the end of a row. This causes errors. Check this before you test your plugin.&lt;br /&gt;
*Make sure the parameters in the XML file are closed correctly. When you add options, for example, you need to close it with &amp;lt;/param&amp;gt;.&lt;br /&gt;
*It is easy to test on a localhost when you are still busy with editing your plugin.&lt;br /&gt;
*When making a zip-file to test it, do not forget to make the directories for the language files. A typical zip will contain the following:&lt;br /&gt;
**nameofplugin.XML&lt;br /&gt;
**nameofplugin.PHP&lt;br /&gt;
**language\en-GB\en-GB.plg_search_nameofplugin.INI&lt;br /&gt;
[[Category:Tutorials]][[Category:Plugin Development]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:How_to_create_a_language_pack</id>
		<title>J1.5:How to create a language pack</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:How_to_create_a_language_pack"/>
				<updated>2010-10-05T10:54:27Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{review}}&lt;br /&gt;
&lt;br /&gt;
Joomla! uses three language packages, one for the front end, one for the administrator and one for installation. Ideally you will create all three.&lt;br /&gt;
&lt;br /&gt;
A translation pack consists of an xml file, a blank index file and a set of *.ini files containing the language strings for your language. The easiest way to understand  this structure is to look at the files in the language/en-GB folder of your Joomla! installation. &lt;br /&gt;
&lt;br /&gt;
This is an excerpt from en-GB.mod_login.ini&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 BUTTON_LOGIN=Login&lt;br /&gt;
 BUTTON_LOGOUT=Logout&lt;br /&gt;
 DESCLOGINFORM=This Module displays a username and password Login form. It also displays a link to retrieve a forgotten password.  If User registration is enabled, (refer to the Global Configuration settings), then another link will be shown to invite Users to   self-register.&lt;br /&gt;
 ENCRYPT LOGIN FORM=Encrypt Login Form&lt;br /&gt;
 FORGOT_YOUR_PASSWORD=Forgot your password?&lt;br /&gt;
 FORGOT_YOUR_USERNAME=Forgot your username?&lt;br /&gt;
 GREETING=Greeting&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To create a package for your language you change the strings to the right of the =.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Many people find it helpful to use the [http://joomlacode.org/gf/project/trans_mngr/frs/ Translation manager extension]. This helps by automating the creation of the files.&lt;br /&gt;
&lt;br /&gt;
Language naming convention in Joomla are &lt;br /&gt;
language and ISO code. Use 2 letters when available. [http://www.loc.gov/standards/iso639-2/php/code_list.php The list is available here.]&lt;br /&gt;
&lt;br /&gt;
[http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm  This reference concerns country codes]&lt;br /&gt;
&lt;br /&gt;
Because language strings may change it is best to create your packages using either [http://developer.joomla.org/code.html  the nightly build or subversion].&lt;br /&gt;
&lt;br /&gt;
Name of package should be: xx-XX //using your language's ISO code.&lt;br /&gt;
&lt;br /&gt;
Locale:&lt;br /&gt;
[http://forum.joomla.org/viewtopic.php?t=25077  Information on available locales may be found here.]&lt;br /&gt;
&lt;br /&gt;
If, for any reason, ini or xml  language files are edited manually with a text editor, they have to be saved with the encoding UTF8 NO BOM.&lt;br /&gt;
&lt;br /&gt;
For practical information on the way to make core Translation files for Joomla 1.0, please see forum: http://forum.joomla.org/viewtopic.php?f=11&amp;amp;t=254709.&lt;br /&gt;
&lt;br /&gt;
And for Joomla 1.5 see the forum:&lt;br /&gt;
[http://forum.joomla.org/viewtopic.php?f=11&amp;amp;t=88326&amp;amp;start=0 Building Extension's Language Pack for J1.5]&lt;br /&gt;
&lt;br /&gt;
Guidelines for developers to facilitate translation: [[Language Guidelines for 3rd Party Extensions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Languages]][[Category:Tutorials]][[Category:Language Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_create_a_continuous_integration</id>
		<title>How to create a continuous integration</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_create_a_continuous_integration"/>
				<updated>2010-10-05T10:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You want to know how to develop a continuous integration?&lt;br /&gt;
This tutorial aims to guide you to achieve a functional result.&lt;br /&gt;
If you need advice feel free to contact me: [mailto:rudy.bruneau@hop-cube.com Rudy BRUNEAU].&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Continuous_integration Continuous integration] is a way to check the daily functioning of an application. &lt;br /&gt;
&lt;br /&gt;
==Tools and Environment==&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/PHP Php] 5.2.11&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Doctrine_%28PHP%29 Doctrine] 1.2.2&lt;br /&gt;
* [http://en.wikipedia.org/wiki/CruiseControl Cruise Control] and PhpUnderControl an extension for Cruise Control&lt;br /&gt;
* [http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29 LAMP]&lt;br /&gt;
* [[Joomla]] 1.5.x&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Selenium_%28software%29 Selenium] Server 1.0.2 and Selenium Remote Control 1.3&lt;br /&gt;
* Server : [http://en.wikipedia.org/wiki/Linux Linux] [http://en.wikipedia.org/wiki/Ubuntu_%28operating_system%29 Ubuntu]&lt;br /&gt;
* PhpUnit&lt;br /&gt;
* Extension for Php : phpZip&lt;br /&gt;
* [http://phing.info/trac/ Phing] : a Php equivalent to 'make'&lt;br /&gt;
&lt;br /&gt;
==Purpose of this operation==&lt;br /&gt;
===Continuous integration===&lt;br /&gt;
Formalization by Martin Fowler and Kent Beck, 2000&lt;br /&gt;
« [http://en.wikipedia.org/wiki/Continuous_integration Continuous Integration] is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. »&lt;br /&gt;
&lt;br /&gt;
« Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. »&lt;br /&gt;
&lt;br /&gt;
Indeed the continuous integration process will help to automate any changes made but  also run unit tests. This process must be executed as frequently as possible in order to detect problems to solve them faster.&lt;br /&gt;
&lt;br /&gt;
===Unit Tests===&lt;br /&gt;
The purpose of unit testing is to automate regression testing. When developing software, you can easily make modifications without realizing that they introduce bugs in some cases. This is called regression bugs, in that it introduces new bugs as a result of a functional outcome. Since it is not humanly possible to systematically test all possible use cases, these bugs can be found deployed in production, with all the problems that entails.&lt;br /&gt;
&lt;br /&gt;
===Web Tests===&lt;br /&gt;
The tests are part of the web unit tests, but they do not check the non-regression of the code. They will check any changes directly on the web pages during the execution of continuous integration.&lt;br /&gt;
Using [http://en.wikipedia.org/wiki/Selenium_%28software%29 Selenium] IDE ([[Mozilla Firefox]] add-on) we can create and launch our web tests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==HOW ?==&lt;br /&gt;
Before start, read this documentation. Using this material that I could build my continuous integration.&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://phing.info/docs/guide/stable/ Phing docs]&lt;br /&gt;
&lt;br /&gt;
Now start the xml file :&lt;br /&gt;
* define property (variable) to simplify notation after&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;project name=&amp;quot;hopscore_website&amp;quot; default=&amp;quot;joomla&amp;quot; basedir=&amp;quot;../&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;property name=&amp;quot;report.dir&amp;quot; value=&amp;quot;${basedir}/source/ic&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;property name=&amp;quot;utils&amp;quot; value=&amp;quot;${basedir}/source/utils&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;property name=&amp;quot;Jinstall&amp;quot; value=&amp;quot;${report.dir}/JoomlaInstall&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;property name=&amp;quot;Jtest&amp;quot; value=&amp;quot;${report.dir}/JoomlaTest&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;property name=&amp;quot;sql_file&amp;quot; value=&amp;quot;${Jinstall}/dump.sql&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;taskdef resource=&amp;quot;net/sf/antcontrib/antcontrib.properties&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Define all targets which will be executed during continuous integration&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;joomla&amp;quot; depends=&amp;quot;uninstall,update, zip, install, data, extension, build&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;extension&amp;quot; depends=&amp;quot;unzip, all&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
  The default build target for this project. It simply depends on all sub tasks&lt;br /&gt;
  that perform the project build. The sub targets are executed in the listed&lt;br /&gt;
  order.&lt;br /&gt;
&lt;br /&gt;
  1. 'clean' Clean old project build artifacts&lt;br /&gt;
  2. 'update' Update project working copy&lt;br /&gt;
  3. 'phpunit' Execute unit tests, generate metrics, coverage etc.&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;build&amp;quot; depends=&amp;quot;clear,clean,phpunit,stopseleniumrc&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All Targets will run in the order defined by the target parent.&lt;br /&gt;
The first task is : Joomla defined in Project.&lt;br /&gt;
Then all targets in 'depends' attributs will be executed.&lt;br /&gt;
&lt;br /&gt;
===Step 1: Install a blank Joomla 1.5.x===&lt;br /&gt;
Copy the files inside the archive Joomla except the Setup folder that is deleted from the end of an manual installation.&lt;br /&gt;
&lt;br /&gt;
* Create a folder with your Blank [[Joomla]].&lt;br /&gt;
* Copy all directories and files into a new folder except Installation directory.&lt;br /&gt;
'''xml file :'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;uninstall&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;${Jtest}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;exec executable=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;arg line=&amp;quot;${Jinstall}/drop_db.php&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/exec&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;target name=&amp;quot;install&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${Jtest}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;copy todir=&amp;quot;${Jtest}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${Jinstall}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;dump.sql&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;install_extensions.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;install_extensions.xml&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;create_db.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;autoloadeditadd.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;autoloadeditremove.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;zip_com_products.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;unzip.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;drop_db.php&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;add_sql.php&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/fileset&amp;gt;&lt;br /&gt;
		&amp;lt;/copy&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Step 2: Automatically install the database Joomla tables===&lt;br /&gt;
To install the database I chose to run php scripts for several things:&lt;br /&gt;
* Creation of the database with [[mysql]] language&lt;br /&gt;
* Adding Joomla tables and data &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Xml File:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;install&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Step 1... --&amp;gt;&lt;br /&gt;
        &amp;lt;exec command=&amp;quot;php ${Jinstall}/create_db.php&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;exec command=&amp;quot;php ${Jinstall}/add_sql.php&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Php Files:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
* Create database&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$link = mysql_connect(&amp;quot;localhost&amp;quot;,&amp;quot;name&amp;quot;,&amp;quot;password&amp;quot;);&lt;br /&gt;
$mydb=&amp;quot;db_name&amp;quot;;&lt;br /&gt;
mysql_query(&amp;quot;CREATE DATABASE IF NOT EXISTS $mydb&amp;quot;,$link) or die (mysql_error()); &lt;br /&gt;
mysql_close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Import data&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$file = file_get_contents(dirname(__FILE__).&amp;quot;/dump.sql&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  if($file === false){&lt;br /&gt;
    die('Fichier erroné : '.$url);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $requetes = explode(';', $file);&lt;br /&gt;
&lt;br /&gt;
  $link = mysql_connect(&amp;quot;localhost&amp;quot;,&amp;quot;name&amp;quot;,&amp;quot;password&amp;quot;);&lt;br /&gt;
  $mydb=&amp;quot;db_name&amp;quot;;&lt;br /&gt;
  mysql_select_db($mydb) or die (mysql_error());&lt;br /&gt;
  foreach($requetes as $requete){&lt;br /&gt;
    mysql_query($requete.';', $link) or die(mysql_error());&lt;br /&gt;
  }&lt;br /&gt;
  mysql_close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Step 3: Automatically install components / modules / plugins in blank Joomla===&lt;br /&gt;
Reproduce a component installation as in Joomla administration.&lt;br /&gt;
* Get the last versionned file from [http://en.wikipedia.org/wiki/Apache_Subversion SVN]&lt;br /&gt;
'''Xml File:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;zip&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;exec executable=&amp;quot;php&amp;quot; dir=&amp;quot;${Jinstall}&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;arg line=&amp;quot;zip_com_products.php &lt;br /&gt;
            ${basedir}/source/products/components/com_products &lt;br /&gt;
            ${JoomlaInstall}/Joomla/utils/components/&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/exec&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Php File:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
* zip_com_products.php contains two methods which Zip a not empty folder.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
go trough the path of the file to zip&lt;br /&gt;
*/&lt;br /&gt;
Recurs_zip($src,&amp;amp;$zip,$path_lenght)&lt;br /&gt;
/*&lt;br /&gt;
add all files and directories in an archive&lt;br /&gt;
*/&lt;br /&gt;
compress($src,$dir)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Provide a file .zip input&lt;br /&gt;
'''Xml File:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;unzip&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;echo taskname=&amp;quot;Unzip&amp;quot; message=&amp;quot;Unzip all components/modules/plugins&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;exec command=&amp;quot;php ${Jinstall}/unzip.php&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;echo taskname=&amp;quot;Unzip&amp;quot; message=&amp;quot;End of Unzip Task&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Php File:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if (!defined('DS')) {&lt;br /&gt;
define('DS', DIRECTORY_SEPARATOR);&lt;br /&gt;
}&lt;br /&gt;
$path = dirname(__FILE__).DS.'Joomla'.DS.'utils';&lt;br /&gt;
&lt;br /&gt;
function ScanDirectory($Directory) {&lt;br /&gt;
&lt;br /&gt;
$MyDirectory = opendir($Directory) or die('Erreur');&lt;br /&gt;
while($Entry = @readdir($MyDirectory)) {&lt;br /&gt;
    if (is_dir($Directory.DS.$Entry) &amp;amp;&amp;amp; $Entry != '.' &amp;amp;&amp;amp; $Entry != '..') {&lt;br /&gt;
        ScanDirectory($Directory.'/'.$Entry);&lt;br /&gt;
    } else {&lt;br /&gt;
        $zip = new ZipArchive;&lt;br /&gt;
        if ($zip-&amp;gt;open($Directory.DS.$Entry) === TRUE) {&lt;br /&gt;
            $name = str_replace(&amp;quot;.zip&amp;quot;, &amp;quot;&amp;quot;, $Entry);&lt;br /&gt;
            $zip-&amp;gt;extractTo($Directory.DS);&lt;br /&gt;
            $zip-&amp;gt;close();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
			&lt;br /&gt;
}&lt;br /&gt;
closedir($MyDirectory);	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ScanDirectory($path);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Run the installation file component / modules / plugins&lt;br /&gt;
'''Xml File:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;echo taskname=&amp;quot;Install extensions&amp;quot; message=&amp;quot;Start of Install all Joomla extensions&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;exec command=&amp;quot;php ${Jinstall}/install_extensions.php&amp;quot; dir=&amp;quot;${Jinstall}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;echo taskname=&amp;quot;Install extensions&amp;quot; message=&amp;quot;End of Install Extensions&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Php File:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
under construction...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Step 4: How to run Unit Tests===&lt;br /&gt;
To write and run UnitTest it is easier to look at this documentation.&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.phpunit.de/ PhpUnit docs]&lt;br /&gt;
&lt;br /&gt;
Go to the &amp;quot;build&amp;quot; Target in xml file :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;build&amp;quot; depends=&amp;quot;clear,clean,phpunit,stopseleniumrc&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* clear : Delete all report files.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  delete phpunit.xml &amp;amp; phpunit-noframe.html files&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;target name=&amp;quot;clear&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;delete file=&amp;quot;${report.dir}/phpunit.xml&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;delete file=&amp;quot;${report.dir}/phpunit2-noframes.html&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* clean : Clean old project build artifacts.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
  The clean target is used to remove build artifacts of previous builds. Otherwise&lt;br /&gt;
  CruiseControl will present old, maybe successful result, even if your build&lt;br /&gt;
  process fails.&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;target name=&amp;quot;clean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Remove old log files --&amp;gt;&lt;br /&gt;
    &amp;lt;delete&amp;gt;&lt;br /&gt;
      &amp;lt;fileset dir=&amp;quot;${basedir}/build/logs&amp;quot; includes=&amp;quot;**.*&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/delete&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Remove old documentation --&amp;gt;&lt;br /&gt;
    &amp;lt;delete&amp;gt;&lt;br /&gt;
      &amp;lt;fileset dir=&amp;quot;${basedir}/build/doc&amp;quot; includes=&amp;quot;**.*&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/delete&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Remove old coverage report --&amp;gt;&lt;br /&gt;
    &amp;lt;delete&amp;gt;&lt;br /&gt;
      &amp;lt;fileset dir=&amp;quot;${basedir}/build/coverage&amp;quot; includes=&amp;quot;**.*&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/delete&amp;gt;&lt;br /&gt;
  &amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* phpunit : start UnitTests, webTests, and make all report&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;phpunit&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;antcall target=&amp;quot;startseleniumrc&amp;quot;&amp;gt;&amp;lt;/antcall&amp;gt;&lt;br /&gt;
    &amp;lt;exec executable=&amp;quot;phpunit&amp;quot; dir=&amp;quot;${basedir}/source&amp;quot; failonerror=&amp;quot;on&amp;quot; resultproperty=&amp;quot;test-failed&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;arg line=&amp;quot;--log-xml ${basedir}/build/logs/phpunit.xml&lt;br /&gt;
                 --log-pmd ${basedir}/build/logs/phpunit.pmd.xml&lt;br /&gt;
                 --log-metrics ${basedir}/build/logs/phpunit.metrics.xml&lt;br /&gt;
                 --coverage-xml  ${basedir}/build/logs/phpunit.coverage.xml&lt;br /&gt;
                 --coverage-html ${basedir}/build/coverage&lt;br /&gt;
                 hopscorecomAllTests AllTests.php&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/exec&amp;gt;&lt;br /&gt;
    &amp;lt;antcall target=&amp;quot;stopseleniumrc&amp;quot;&amp;gt;&amp;lt;/antcall&amp;gt;&lt;br /&gt;
  &amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* stopseleniumrc : kill processus selenium&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;stopseleniumrc&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;get taskname=&amp;quot;selenium-shutdown&amp;quot; &lt;br /&gt;
         src=&amp;quot;http://localhost:4444/selenium-server/driver/?cmd=shutDown&amp;quot;	&lt;br /&gt;
         dest=&amp;quot;result.txt&amp;quot; ignoreerrors=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;echo taskname=&amp;quot;selenium-shutdown&amp;quot; message=&amp;quot;DGF Errors during shutdown are expected&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/target&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Step 5: How to run Web Tests===&lt;br /&gt;
Web tests will be run using a php file called during Unit Tests.&lt;br /&gt;
&lt;br /&gt;
===Step 6: Make a report===&lt;br /&gt;
The report is a xml file which be created after all tests to show errors, failures, and success.&lt;br /&gt;
With [http://en.wikipedia.org/wiki/CruiseControl Cruise Control] and PhpUnderControl you will see all details of your continuous integration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Php files to execute testSuite ===&lt;br /&gt;
'''AllTest.php'''&amp;lt;br /&amp;gt;&lt;br /&gt;
called UnitTests file &amp;amp; WebTests file&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if (defined('PHPUnit_MAIN_METHOD') === false) {&lt;br /&gt;
    define('PHPUnit_MAIN_METHOD', 'hopscorecomAllTests::main');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
require_once 'PHPUnit/Framework/TestSuite.php';&lt;br /&gt;
require_once 'PHPUnit/TextUI/TestRunner.php';&lt;br /&gt;
&lt;br /&gt;
require_once dirname(__FILE__) . '/AllWebTests.php';&lt;br /&gt;
require_once dirname(__FILE__) . '/ProductsAllTests.php';&lt;br /&gt;
/**&lt;br /&gt;
 * Main test suite for phpUnderControl.&lt;br /&gt;
 */&lt;br /&gt;
class hopscorecomAllTests&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * Test suite main method.&lt;br /&gt;
     *&lt;br /&gt;
     * @return void&lt;br /&gt;
     */&lt;br /&gt;
    public static function main()&lt;br /&gt;
    {&lt;br /&gt;
        PHPUnit_TextUI_TestRunner::run(self::suite());	&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * Creates the phpunit test suite for this package.&lt;br /&gt;
     *&lt;br /&gt;
     * @return PHPUnit_Framework_TestSuite&lt;br /&gt;
     */&lt;br /&gt;
    public static function suite()&lt;br /&gt;
    {&lt;br /&gt;
        $suite = new PHPUnit_Framework_TestSuite('HopScore.com - AllTests ');&lt;br /&gt;
        // Unit Test&lt;br /&gt;
	$suite-&amp;gt;addTestSuite('hopscorecomProductsAllTests');&lt;br /&gt;
        // WebTest : include WebTest to display all in report&lt;br /&gt;
        $suite-&amp;gt;addTestSuite('hopscorecomAllWebTests');&lt;br /&gt;
        return $suite;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (PHPUnit_MAIN_METHOD === 'hopscorecomAllTests::main') {&lt;br /&gt;
    phpucAllTests::main();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ProductsAllTest.php'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
require_once dirname(__FILE__) . '/UnitTests/bashtest.php';&lt;br /&gt;
require_once dirname(__FILE__) . '/UnitTests/fusiontest.php';&lt;br /&gt;
require_once dirname(__FILE__) . '/UnitTests/transformtest.php';&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Main test suite for HopScore API package.&lt;br /&gt;
 */&lt;br /&gt;
class hopscorecomProductsAllTests&lt;br /&gt;
{&lt;br /&gt;
    /* same main() */&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates the phpunit test suite for this package.&lt;br /&gt;
     * @return PHPUnit_Framework_TestSuite&lt;br /&gt;
     */&lt;br /&gt;
    public static function suite()&lt;br /&gt;
    {&lt;br /&gt;
        $suite = new PHPUnit_Framework_TestSuite('HopScore.com - ProductsAllTests');&lt;br /&gt;
        $suite-&amp;gt;addTestSuite('BashTest');&lt;br /&gt;
        $suite-&amp;gt;addTestSuite('FusionTest');&lt;br /&gt;
	$suite-&amp;gt;addTestSuite('TransformTest');&lt;br /&gt;
        return $suite;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (PHPUnit_MAIN_METHOD === 'hopscorecomProductsAllTests::main') {&lt;br /&gt;
    hopscoreProductsAllTests::main();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''AllWebTests.php''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
/* require .php file from Selenium */&lt;br /&gt;
require_once dirname(__FILE__) . '/WebTests/*****.php';&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Main test suite for HopScore.Com Web Tests&lt;br /&gt;
 */&lt;br /&gt;
class hopscorecomAllWebTests&lt;br /&gt;
{&lt;br /&gt;
    /* Same Main() */&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates the phpunit test suite for this package.&lt;br /&gt;
     * @return PHPUnit_Framework_TestSuite&lt;br /&gt;
     */&lt;br /&gt;
    public static function suite()&lt;br /&gt;
    {&lt;br /&gt;
        $suite = new PHPUnit_Framework_TestSuite('HopScorecom - AllWebTests');&lt;br /&gt;
        // Name of class of php webTest file&lt;br /&gt;
        $suite-&amp;gt;addTestSuite('name_of_class');&lt;br /&gt;
        return $suite;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (PHPUnit_MAIN_METHOD === 'hopscorecomAllWebTests::main') {&lt;br /&gt;
    hopscoreAPIAllTests::main();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[http://www.geek-directeur-technique.com/post/2009/03/18/Tests-unitaires-et-integration-continue Continuous Integration]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Working Groups]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/J1.5:Creating_a_content_plugin</id>
		<title>J1.5:Creating a content plugin</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/J1.5:Creating_a_content_plugin"/>
				<updated>2010-10-05T10:51:37Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Development]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
==Description==&lt;br /&gt;
There are lots of abilities of the use of a Content Plugin. They all have to do with the display of your content and so your articles. You will need at least two files for this Plugin. An XML file and a PHP file. Because there are so many differences between two Content Plugins in the PHP file, two examples of them will be explained in this document. Also a part about internationalization (with INI files) is added. And last but not least: the Joomla! Core Content Plugin coding examples and the quick tips.&lt;br /&gt;
&lt;br /&gt;
==XML file==&lt;br /&gt;
The XML file is named the same as the PHP file, and is one of the two required files.&lt;br /&gt;
Always start off with the XML tag and define that it is written in a UTF-8 format.&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;!DOCTYPE install&lt;br /&gt;
  PUBLIC &amp;quot;-//Joomla! 1.5//DTD plugin 1.0//EN&amp;quot; &amp;quot;http://www.joomla.org/xml/dtd/1.5/plugin-install.dtd&amp;quot;&amp;gt;&lt;br /&gt;
To define that the plugin has to be a content plugin, add this line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;install version=&amp;quot;1.5&amp;quot; type=&amp;quot;plugin&amp;quot; group=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
The type will define it is a Plugin, the group defines the Plugin is in the group of Content Plugins.&lt;br /&gt;
&lt;br /&gt;
After that, add some information about yourself and the Plugin, like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;Name of your Content Plugin&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;creationDate&amp;gt;Created Date&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
&amp;lt;author&amp;gt;Your name&amp;lt;/author&amp;gt;&lt;br /&gt;
&amp;lt;authorEmail&amp;gt;Your e-mail address&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
&amp;lt;authorUrl&amp;gt;Your website&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
&amp;lt;copyright&amp;gt;Copyright&amp;lt;/copyright&amp;gt;&lt;br /&gt;
&amp;lt;license&amp;gt;License, for example GNU/GPL&amp;lt;/license&amp;gt;&lt;br /&gt;
&amp;lt;version&amp;gt;Version of the plugin&amp;lt;/version&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;Description of the Plugin; showed with installation and when editing &lt;br /&gt;
the Plugin in the Plugin Manager&amp;lt;/description&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
And now include your PHP file to the Content Plugin. The name of this file should be the same as the name of this XML file. Put this name also behind the plugin=&amp;quot;&amp;quot; part. &lt;br /&gt;
&lt;br /&gt;
You could also add more files for your plugin, for example an image. Just add another row between &amp;lt;files&amp;gt; and &amp;lt;/files&amp;gt;, and then place the file between &amp;lt;filename&amp;gt; tags.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;files&amp;gt;&lt;br /&gt;
   &amp;lt;filename plugin=&amp;quot;nameofplugin&amp;quot;&amp;gt;nameofplugin.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
&amp;lt;/files&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the internationalization, we will use language files. This is not required, but people from other countries will love it if they can easily translate your plugin to their own language. Plugin language files are always installed in administrator/languages/xx-XX/ where xx-XX is the code for a language already installed in Joomla.&lt;br /&gt;
The language tags can be found here: [http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes] (use the ISO 639-1 column) and here: [http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;languages&amp;gt;&lt;br /&gt;
   &amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB.plg_content_nameofplugin.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
&amp;lt;/languages&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Optionally, you could add some parameters to the Plugin. These will look like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;params&amp;gt;&lt;br /&gt;
   &amp;lt;param name=&amp;quot;paramname&amp;quot; type=&amp;quot;typeofparameter&amp;quot; default=&amp;quot;defaultsetting&amp;quot; label=&amp;quot;title&amp;quot; description=&amp;quot;description&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/params&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
*'''Param name:''' The name of the parameter. You will need this when creating the PHP file.&lt;br /&gt;
*'''Param type:''' You could choose between several types of parameters. Look at this document to learn something about the different types: [http://docs.joomla.org/Using_the_core_parameter_types] &lt;br /&gt;
*'''Param default:''' The default setting for this parameter.&lt;br /&gt;
*'''Param label:''' The name of this parameter displayed in the edit screen of this Plugin in the Plugin Manager.&lt;br /&gt;
*'''Param description:''' The text which appears as a tool tip for this parameter. &lt;br /&gt;
When you do not want to use parameters, add the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;params/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And do not forget to end your XML file with the following tag:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;/install&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PHP file==&lt;br /&gt;
Start your PHP file with the general licensing and author information about your content plugin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @version		$Id: nameofplugin.php revision date lasteditedby $&lt;br /&gt;
 * @package		Joomla&lt;br /&gt;
 * @subpackage	Content&lt;br /&gt;
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.&lt;br /&gt;
 * @license		GNU/GPL, see LICENSE.php&lt;br /&gt;
 * Joomla! is free software. This version may have been modified pursuant&lt;br /&gt;
 * to the GNU General Public License, and as distributed it includes or&lt;br /&gt;
 * is derivative of works licensed under the GNU General Public License or&lt;br /&gt;
 * other free or open source software licenses.&lt;br /&gt;
 * See COPYRIGHT.php for copyright notices and details.&lt;br /&gt;
 */ &amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Next, always put the following code in any PHP file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
// no direct access&lt;br /&gt;
defined( '_JEXEC' ) or die( 'Restricted access' );&amp;lt;/source&amp;gt;&lt;br /&gt;
This prevents people from directly accessing this PHP file.&lt;br /&gt;
&lt;br /&gt;
After that, you should import the general plugin file of Joomla!'s library&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;jimport( 'joomla.plugin.plugin' );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To indicate that you're writing a Content plugin, add the following code.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;class plgContentNameofplugin extends JPlugin {&amp;lt;/source&amp;gt;&lt;br /&gt;
Please note the use of capital letters. You should replace Nameofplugin by the name of your own plugin.&lt;br /&gt;
&lt;br /&gt;
Now, it's time to construct the plugin:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;/**&lt;br /&gt;
 * Constructor&lt;br /&gt;
 *&lt;br /&gt;
 * For php4 compatability we must not use the __constructor as a constructor for plugins&lt;br /&gt;
 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.&lt;br /&gt;
 * This causes problems with cross-referencing necessary for the observer design pattern.&lt;br /&gt;
 *&lt;br /&gt;
 * @param object $subject The object to observe&lt;br /&gt;
 * @param object $params  The object that holds the plugin parameters&lt;br /&gt;
 * @since 1.5&lt;br /&gt;
 */&lt;br /&gt;
	function plgContentNameofplugin( &amp;amp;$subject, $params )&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct( $subject, $params );&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should choose now at which moment the plugin should be rendered. You can choose from the following:&lt;br /&gt;
&lt;br /&gt;
* onBeforeContentSave : This is an event that is called right before the content is saved into the database.&lt;br /&gt;
* onAfterContentSave : This is an event that is called after the content is saved into the database.&lt;br /&gt;
* onPrepareContent : This is the first stage in preparing content for output and is the most common point for content orientated plugins to do their work.&lt;br /&gt;
* onAfterDisplayTitle : This is a request for information that should be placed between the content title and the content body.&lt;br /&gt;
* onBeforeDisplayContent : This is a request for information that should be placed immediately before the generated content.&lt;br /&gt;
* onAfterDisplayContent : This is a request for information that should be placed immediately after the generated content.&lt;br /&gt;
&lt;br /&gt;
More information on which type you should use for your plugin, including several examples, can be found here: [[Reference:Content_Events_for_Plugin_System]]&lt;br /&gt;
&lt;br /&gt;
===onBeforeContentSave===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onBeforeContentSave( &amp;amp;$article, $isNew )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return true;&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article and isNew should contain the following:&lt;br /&gt;
* article : A reference to the JTableContent object that is being saved which holds the article data.&lt;br /&gt;
* isNew : A boolean which is set to true if the content is about to be created.&lt;br /&gt;
&lt;br /&gt;
===onAfterContentSave===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterContentSave( &amp;amp;$article, $isNew )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return true;&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article and isNew should contain the following:&lt;br /&gt;
* article : A reference to the JTableContent object that was saved which holds the article data.&lt;br /&gt;
* isNew : A boolean which is set to true if the content was created.&lt;br /&gt;
&lt;br /&gt;
===onPrepareContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onPrepareContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		//no return value&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
===onAfterDisplayTitle===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterDisplayTitle( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return '';&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator.&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
	&lt;br /&gt;
===onBeforeDisplayContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onBeforeDisplayContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
		//add your plugin codes here&lt;br /&gt;
		return '';&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator. &lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
===onAfterDisplayContent===&lt;br /&gt;
Use the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;	function onAfterDisplayContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;br /&gt;
	{&lt;br /&gt;
		global $mainframe;&lt;br /&gt;
//add your plugin codes here&lt;br /&gt;
		return '';&lt;br /&gt;
		//return a string value. Returned value from this event will be displayed in a placeholder. &lt;br /&gt;
                // Most templates display this placeholder after the article separator.&lt;br /&gt;
	}&amp;lt;/source&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
The parameters article, params and limitstart should contain the following:&lt;br /&gt;
* article : A reference to the article that is being rendered by the view.&lt;br /&gt;
* params : A reference to an associative array of relevant parameters. The view determines what it considers to be relevant and passes that information along.&lt;br /&gt;
* limitstart : An integer that determines the &amp;quot;page&amp;quot; of the content that is to be generated. Note that in the context of views that might not generate HTML output, a page is a reasonably abstract concept that depends on the context.&lt;br /&gt;
&lt;br /&gt;
==PHP file - Example==&lt;br /&gt;
This example PHP file is about the Content Plugin load module. It is a plugin made for displaying modules within the articles. &lt;br /&gt;
The commented PHP file used in this example is the file which will be included in Joomla! 1.6. This has been done because the content plugin files in Joomla! 1.5 are not refactored yet to the new standards. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// The general information at the top of each file&lt;br /&gt;
/**&lt;br /&gt;
* @version		$Id$&lt;br /&gt;
* @package		Joomla&lt;br /&gt;
* @copyright	Copyright (C) 2005 - 2009 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license		GNU General Public License, see LICENSE.php&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access allowed to this file&lt;br /&gt;
defined( '_JEXEC' ) or die( 'Restricted access' );&lt;br /&gt;
&lt;br /&gt;
// Import Joomla! Plugin library file&lt;br /&gt;
jimport('joomla.plugin.plugin');&lt;br /&gt;
&lt;br /&gt;
//The Content plugin Loadmodule&lt;br /&gt;
class plgContentLoadmodule extends JPlugin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	* Plugin that loads module positions within content&lt;br /&gt;
	*/&lt;br /&gt;
// onPrepareContent, meaning the plugin is rendered at the first stage in preparing content for output&lt;br /&gt;
	public function onPrepareContent( &amp;amp;$row, &amp;amp;$params, $page=0 )&lt;br /&gt;
	{&lt;br /&gt;
                // A database connection is created&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		// simple performance check to determine whether bot should process further&lt;br /&gt;
		if ( JString::strpos( $row-&amp;gt;text, 'loadposition' ) === false ) {&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	 	// expression to search for&lt;br /&gt;
	 	$regex = '/{loadposition\s*.*?}/i';&lt;br /&gt;
&lt;br /&gt;
		// check whether plugin has been unpublished&lt;br /&gt;
		if ( !$this-&amp;gt;params-&amp;gt;get( 'enabled', 1 ) ) {&lt;br /&gt;
			$row-&amp;gt;text = preg_replace( $regex, '', $row-&amp;gt;text );&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	 	// find all instances of plugin and put in $matches&lt;br /&gt;
		preg_match_all( $regex, $row-&amp;gt;text, $matches );&lt;br /&gt;
&lt;br /&gt;
		// Number of plugins&lt;br /&gt;
	 	$count = count( $matches[0] );&lt;br /&gt;
&lt;br /&gt;
	 	// plugin only processes if there are any instances of the plugin in the text&lt;br /&gt;
	 	if ( $count ) {&lt;br /&gt;
			// Get plugin parameters&lt;br /&gt;
		 	$style	= $this-&amp;gt;params-&amp;gt;def( 'style', -2 );&lt;br /&gt;
	 		$this-&amp;gt;_process( $row, $matches, $count, $regex, $style );&lt;br /&gt;
		}&lt;br /&gt;
		// No return value&lt;br /&gt;
	}&lt;br /&gt;
// The proccessing function&lt;br /&gt;
	protected function _process( &amp;amp;$row, &amp;amp;$matches, $count, $regex, $style )&lt;br /&gt;
	{&lt;br /&gt;
	 	for ( $i=0; $i &amp;lt; $count; $i++ )&lt;br /&gt;
		{&lt;br /&gt;
	 		$load = str_replace( 'loadposition', '', $matches[0][$i] );&lt;br /&gt;
	 		$load = str_replace( '{', '', $load );&lt;br /&gt;
	 		$load = str_replace( '}', '', $load );&lt;br /&gt;
 			$load = trim( $load );&lt;br /&gt;
&lt;br /&gt;
			$modules	= $this-&amp;gt;_load( $load, $style );&lt;br /&gt;
			$row-&amp;gt;text 	= preg_replace( '{'. $matches[0][$i] .'}', $modules, $row-&amp;gt;text );&lt;br /&gt;
	 	}&lt;br /&gt;
&lt;br /&gt;
	  	// removes tags without matching module positions&lt;br /&gt;
		$row-&amp;gt;text = preg_replace( $regex, '', $row-&amp;gt;text );&lt;br /&gt;
	}&lt;br /&gt;
// The function who takes care for the 'completing' of the plugins' actions : loading the module(s)&lt;br /&gt;
	protected function _load( $position, $style=-2 )&lt;br /&gt;
	{&lt;br /&gt;
		$document	= &amp;amp;JFactory::getDocument();&lt;br /&gt;
		$renderer	= $document-&amp;gt;loadRenderer('module');&lt;br /&gt;
		$params		= array('style'=&amp;gt;$style);&lt;br /&gt;
&lt;br /&gt;
		$contents = '';&lt;br /&gt;
		foreach (JModuleHelper::getModules($position) as $mod)  {&lt;br /&gt;
			$contents .= $renderer-&amp;gt;render($mod, $params);&lt;br /&gt;
		}&lt;br /&gt;
		return $contents;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==INI file(s)==&lt;br /&gt;
For internationalization it is good to use the INI files. You can add to the language file everyting which outputs text to the user, in this order: &lt;br /&gt;
*XML description tag &lt;br /&gt;
*XML label and description attributes from parameters &lt;br /&gt;
*JText::_( 'string' ) used by the plugin &lt;br /&gt;
Start your INI file with something like this: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;# $Id: en-GB.plg_content_nameofplugin.ini&lt;br /&gt;
# Joomla! Project&lt;br /&gt;
# Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.&lt;br /&gt;
# License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php&lt;br /&gt;
# Note : All ini files need to be saved as UTF-8 - No BOM&amp;lt;/source&amp;gt;&lt;br /&gt;
Of course, you could also add other information, like the author. &lt;br /&gt;
&lt;br /&gt;
For example, this parameter: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;param name=&amp;quot;mode&amp;quot; type=&amp;quot;list&amp;quot; default=&amp;quot;1&amp;quot; label=&amp;quot;Mode&amp;quot; description=&amp;quot;Select how the emails will be displayed&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;Nonlinkable Text&amp;lt;/option&amp;gt;&lt;br /&gt;
   &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;As linkable mailto address&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/param&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
Will cause the following in the INI file: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
MODE=Mode&lt;br /&gt;
SELECT HOW THE EMAILS WILL BE DISPLAYED=Select how the e-mails will be displayed&lt;br /&gt;
NONLINKABLE TEXT=Nonlinkable text&lt;br /&gt;
AS LINKABLE MAILTO ADDRESS=As linkable mailto address&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The file looks repetitive, but will be very useful for translaters. &lt;br /&gt;
&lt;br /&gt;
When you want to make your Content Plugin available in more languages, first add them to the &amp;lt;languages&amp;gt; tag in the XML file. Then create the same INI file, and change the part after the =, for example the dutch version would be: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;INI&amp;quot;&amp;gt;&lt;br /&gt;
MODE=Modus&lt;br /&gt;
SELECT HOW THE EMAILS WILL BE DISPLAYED=Selecteer hoe de e-mails worden weergegeven&lt;br /&gt;
NONLINKABLE TEXT=Niet-linkbare tekst&lt;br /&gt;
AS LINKABLE MAILTO ADDRESS=Als een linkbaar mailto adres&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Coding examples==&lt;br /&gt;
There are seven Joomla! Core Content Plugins. These are all not yet refactored to the new standards. For learning how to write good plugins, its better to look at the (refactored) files of Joomla! 1.6.&lt;br /&gt;
You can see them 'working' when you go to the Back-end of your Joomla! 1.5 installation, then go to the menu 'Extensions' and select the 'Plugin Manager'. Click on the name of the Plugin to edit it; and see it working. Also watch the content and see what happens when you insert a pagebreak for example.&lt;br /&gt;
&lt;br /&gt;
==Quick tips==&lt;br /&gt;
*In the PHP file you often forget to place an semicolon (;) at the end of a row, which causes errors. Check this before you test your Plugin and you will eliminate many errors. &lt;br /&gt;
*Take care of the fact that the parameters in the XML file are closed correctly. When you add options for example, you need to close it with &amp;lt;/param&amp;gt;. &lt;br /&gt;
*It is easy to test on a localhost when you are still busy with editing your Plugin. &lt;br /&gt;
*A typical zip will contain the following: &lt;br /&gt;
**nameofplugin.XML &lt;br /&gt;
**nameofplugin.PHP &lt;br /&gt;
**en-GB.plg_content_nameofplugin.ini&lt;br /&gt;
[[Category:Articles that require a review]]&lt;br /&gt;
[[Category:Tutorials]][[Category:Plugin Development]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Connecting_to_an_external_database</id>
		<title>Connecting to an external database</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Connecting_to_an_external_database"/>
				<updated>2010-10-05T10:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you need to access tables within the same database as your Joomla! installation then you can simply use the [[JFactory/getDBO|JFactory-&amp;gt;getDBO]] method.  This uses the already established connection that Joomla! uses to connect to the database.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$db = JFactory::getDBO();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$db is now an object of type [[JDatabase]] and you can perform database operations on it using the usual methods.&lt;br /&gt;
&lt;br /&gt;
But what if you want to connect to a completely different database from the one used by Joomla!?.  This might be a different database on the same machine as your Joomla! site or it might be on a different host and perhaps even require a different database driver.  Well, you can do this using the [[JDatabase/getInstance|JDatabase-&amp;gt;getInstance]] method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$option = array(); //prevent problems&lt;br /&gt;
&lt;br /&gt;
$option['driver']   = 'mysql';            // Database driver name&lt;br /&gt;
$option['host']     = 'db.myhost.com';    // Database host name&lt;br /&gt;
$option['user']     = 'fredbloggs';       // User for database authentication&lt;br /&gt;
$option['password'] = 's9(39s£h[%dkFd';   // Password for database authentication&lt;br /&gt;
$option['database'] = 'bigdatabase';      // Database name&lt;br /&gt;
$option['prefix']   = 'abc_';             // Database prefix (may be empty)&lt;br /&gt;
&lt;br /&gt;
$db = &amp;amp; JDatabase::getInstance( $option );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$db is now an object of type [[JDatabase]] and you can perform database operations on it using the usual methods.&lt;br /&gt;
&lt;br /&gt;
Note that if the database uses a non-standard port number then this can be specified by adding it to the end of the host name.  For example, you might have your MySQL database running on port 3307 (the default is port 3306), in which case your host name might be 'db.myhost.com:3307'.&lt;br /&gt;
&lt;br /&gt;
One feature of using [[JDatabase/getInstance|JDatabase-&amp;gt;getInstance]] is that if another call is made with the same parameters it will return the previously created object rather than creating a fresh one.&lt;br /&gt;
&lt;br /&gt;
Note, however, that the parameters must match exactly for this to happen.  For example, if two calls were made to a MySQL database using [[JDatabase/getInstance|JDatabase-&amp;gt;getInstance]], with the first using a host name of 'db.myhost.com' and the second using 'db.myhost.com:3306', then two separate connections would be made, even though port 3306 is the default port for MySQL and so the parameters are logically the same.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Development]] [[Category:Database]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:FAQ]][[Category:Module Development]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_to_check_if_mod_rewrite_is_enabled_on_your_server</id>
		<title>How to check if mod rewrite is enabled on your server</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_to_check_if_mod_rewrite_is_enabled_on_your_server"/>
				<updated>2010-10-05T10:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many problems with SEO arise from the fact that a host has not enabled mod_rewrite (Apache setting) on the servers. They often tell they have (while they don't have) and you can verify if this is correct or not and if this is causing you Error 500 etc.&lt;br /&gt;
&lt;br /&gt;
Here is how to check if mod-rewrite is realy enabled!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Enable SEO in your administrator:'''&lt;br /&gt;
&lt;br /&gt;
In Joomla 1.0: Site -&amp;gt; Global Configuration -&amp;gt; SEO: Search Engine Friendly URLs to Yes.&lt;br /&gt;
&lt;br /&gt;
In Joomla 1.5: Site -&amp;gt; Global Configuration -&amp;gt; Site: Search Engine Friendly URLs to Yes, Use Apache mod_rewrite to Yes. (Setting Add suffix to URLs is optional).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Rename your htaccess.txt to .htaccess:'''&lt;br /&gt;
&lt;br /&gt;
Next place ONLY the following lines in your .htaccess:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options +FollowSymLinks&lt;br /&gt;
Redirect /joomla.html http://www.joomla.org&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Now point your browser to:''' http://www.example.com/joomla.html&lt;br /&gt;
&lt;br /&gt;
(Replace www.example.com with your own domain name in the URL above.)&lt;br /&gt;
&lt;br /&gt;
If it redirects you to joomla.org - mod_rewrite is working.&lt;br /&gt;
If it gives you an error - mod_rewrite is not working.&lt;br /&gt;
&lt;br /&gt;
Note: if your site is located in subdomain example &amp;quot;test&amp;quot; you need to insert in .htaccess as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
Options +FollowSymLinks&lt;br /&gt;
Redirect /test/joomla.html http://www.joomla.org&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Tips and tricks]]&lt;br /&gt;
[[Category:Tips and tricks 1.0]]&lt;br /&gt;
[[Category:Tips and tricks 1.5]]&lt;br /&gt;
[[Category:FAQ]][[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Converting_an_existing_website_to_a_Joomla!_website</id>
		<title>Converting an existing website to a Joomla! website</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Converting_an_existing_website_to_a_Joomla!_website"/>
				<updated>2010-10-05T10:49:00Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many first-time Joomla! users already have a website, often written using HTML with CSS style sheets. In this case, you may wish to keep the existing website structure and just convert it to Joomla!. This section provides instructions for doing this.&lt;br /&gt;
&lt;br /&gt;
= Converting Basic Static Content =&lt;br /&gt;
&lt;br /&gt;
Static content is content that doesn't change frequently. In simple HTML-based websites, each menu choice simply displays a page of content.&lt;br /&gt;
&lt;br /&gt;
== Page Content Conversion ==&lt;br /&gt;
The basic steps for converting this type of content are as follows:&lt;br /&gt;
# Using the Article Manager, add one article for each page of static content. Each article will contain the contents of one of your existing static pages. Give your articles descriptive names so you can find them again. Select No for Front Page, as shown below.[[Image:Screenshot_article_new.png|frame|center]]&lt;br /&gt;
# If you have a relatively small number of pages (e.g., 20 or fewer), you can leave the Section and Category set to &amp;quot;Uncategorized&amp;quot;. If you have a large number of static pages, you should create one or more Sections, each containing one or more Categories, and then assign each Article to a Section and Category. This will make it easier to work on articles from one group. For example, when viewing your articles, you can filter or sort articles using Sections and Categories, which is convenient when you have a large number of articles. &lt;br /&gt;
# For each article, you can often just copy and paste the content from your existing site (using your browser) into the edit area of Joomla!. Note: In some cases, depending on the amount of custom HTML in the source page, you may need to copy the page to a plain text editor first (such as Notepad) and then copy from there into Joomla!. By content this means the actual page as shown in the browser window not the View Source code.&lt;br /&gt;
# At this point, you have the articles created in Joomla!. Now we need to attach them to menus.&lt;br /&gt;
# Determine the menu structure you need. If your existing site just has a single main menu, you will just use the Joomla! &amp;quot;mainmenu&amp;quot; module. If your existing site has a two-level menu structure, you will use &amp;quot;mainmenu&amp;quot; for the top level and then add one new menu for each existing submenu. Add the submenus using the Menu Manager / New option. &lt;br /&gt;
# Using the Menu Manager, press the Menu Items icon and New to add one Menu Item for each article created above.&lt;br /&gt;
# Each Menu Item should have the type &amp;quot;Article Layout&amp;quot;, as shown below.[[Image:Screenshot_menu_article_layout.png|frame|center]]&lt;br /&gt;
# Note: Even if you installed Joomla! with no sample data, you will already have a Main Menu with a Home menu item that has a Front Page type. Depending on whether you want a Front Page, you may either keep this and add new menu items or change this menu item to an Article Layout.&lt;br /&gt;
# Enter the Title for the Menu Item. The title can be the same as the article title, so you know which article goes with which menu item. &lt;br /&gt;
# In the Parameters - Basic section, select the article for this menu item.&lt;br /&gt;
# Add a Menu Item for each article you created earlier. If needed, add one or more submenus and then add Menu Items for these in the same manner.&lt;br /&gt;
# At this point, each article should be associated with one menu choice. Now we need to tell Joomla! on which pages and which location on the page to put each menu.&lt;br /&gt;
# First, go to the Extensions / Modules selection. Even if you started with no sample data, you will already have a Main Menu module. Open this for editing to display the Module:[Edit] form, shown below. [[Image:Screenshot_mod_mainmenu.png|frame|center]]&lt;br /&gt;
# The Position tells Joomla! where on each page to display the menu module. This may vary depending on the template you are using. Typical menu locations include &amp;quot;top&amp;quot;,. &amp;quot;left&amp;quot;, and &amp;quot;user3&amp;quot;. A trick in Joomla! for seeing the available positions is to add the letters &amp;quot;?tp=1&amp;quot; to the end of a Joomla! URL. For example, if you are working on a localhost site called &amp;quot;joomla15&amp;quot;, typing in the URL &amp;quot;//localhost/joomla15/?tp=1&amp;quot; will display a screen showing the positions for your current template, similar to the one below.[[Image:Screenshot_joomla_positions.png|frame|center]]&lt;br /&gt;
# The Menu Assignment area is where you tell Joomla! which menu choices will display the current menu. Typically, your main menu will display in all menu selections. If you have submenus, each submenu would typically display in the one main menu item that calls this submenu and in all of this submenu's items. An example is shown below, where the People Menu displays on the &amp;quot;people&amp;quot; selection of the main menu and on all of the selections of the People Menu. [[Image:Screenshot_submenu_selection.png|frame|center]]&lt;br /&gt;
# Next, select the Menu Name for this module from the pull-down list. This will be the name of the Menu in the Menu Manager. &lt;br /&gt;
# Next, select the Menu Style. The available styles will vary depending on the template you use. The default template has four available styles. Some menu styles display the menu items in a vertical list (e.g., suitable for the left position), others in a horizontal list. (e.g., suitable for the top or &amp;quot;user3&amp;quot; position).&lt;br /&gt;
# If you like, press the Preview link in the upper right corner to display the home page so far. The article you chose for the first item on your main menu should display, along with the main menu, something like the example below. [[Image:Screenshot_home_page_example.png|frame|center]]&lt;br /&gt;
# If you have submenus, repeat this process for each submenu, checking as you go by previewing the website.&lt;br /&gt;
# Congratulations! At this point, your static content should be available. Now, you can think about adding new modules, adding a front page, or taking advantage of other Joomla! functionality.&lt;br /&gt;
&lt;br /&gt;
=== Graphics Conversion ===&lt;br /&gt;
Converting existing graphics from a static website can be very easy or somewhat difficult, depending on several factors. These include:&lt;br /&gt;
* how closely your existing layout is to one of the available Joomla! templates.&lt;br /&gt;
* how exactly you want the Joomla! site to resemble the existing site.&lt;br /&gt;
&lt;br /&gt;
If you have some knowledge of HTML and CSS, you can adjust a lot in the template by looking at the template.css file in the templates directory for the template you are using. You set the template in Joomla! from the Extensions / Template Manager option. Two templates are included with Joomla! 1.5 and many others are available, either for free or for a charge. See [[Absolute Beginners Guide to Joomla!#Learn the Basics for Joomla! Templating |Learn the Basics for Joomla! Templating ]] below for more information on modifying templates.&lt;br /&gt;
&lt;br /&gt;
Return to the [[beginners | Absolute Beginner's Guide to Joomla!]]&lt;br /&gt;
[[Category:FAQ]][[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_does_FastCGI_affect_Joomla%3F</id>
		<title>How does FastCGI affect Joomla?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_does_FastCGI_affect_Joomla%3F"/>
				<updated>2010-10-05T10:44:22Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When PHP runs from FastCGI, your server runs the PHP interpreter like an Apache module, but with the rights of your user account. Usually, the PHP interpreter is either running as the user of the webserver (which is fast, but insecure, since everyone's scripts run with the same rights), or as a CGI program, which is slow. Thus, FastCGI is a good solution for shared hosting.&lt;br /&gt;
&lt;br /&gt;
Since the PHP interpreter runs as a single instance, it does (AFAIK) not parse the .htaccess or php.ini files per directory. To change php.ini settings, your host must offer you a method to set up or modify your own php.ini, or at least parts of it. Here is how one of host does this: it parses one php.ini file (which the user can modify) once an hour, and puts some well-defined settings into the web server's main php.ini file. Thus, users are able to change some settings for their site only, such as turning register_globals off, switching between PHP4 and PHP5.&lt;br /&gt;
&lt;br /&gt;
If your server uses FastCGI, you can ask them to enable a method such as the above example, or you may be able to ask them adjust some settings for you.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_upgrade_a_site_to_Joomla!_1.5%3F</id>
		<title>How do you upgrade a site to Joomla! 1.5?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_upgrade_a_site_to_Joomla!_1.5%3F"/>
				<updated>2010-10-05T10:44:00Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can [[Migration|migrate]] a Joomla! 1.0.x site or a Mambo 4.5.x to Joomla! 1.5.&lt;br /&gt;
&lt;br /&gt;
Joomla 1.5 does not provide an upgrade path from earlier versions. Converting an older site to a Joomla 1.5 site requires creation of a new empty site using Joomla 1.5 and then populating the new site with the content from the old site. This migration of content is not a one-to-one process and involves conversions and modifications to the content dump.&lt;br /&gt;
&lt;br /&gt;
There are two ways to perform the migration:&lt;br /&gt;
&lt;br /&gt;
* An automated method of [[Migration|migration]] has been provided which uses a migrator component to create the migration dump out of the old site (Mambo 4.5.x up to Joomla 1.0.x) and a smart import facility in the Joomla 1.5 Installation that performs required conversions and modifications during the installation process.&lt;br /&gt;
* Migration can be performed manually. This involves exporting the required tables, manually performing required conversions and modifications and then importing the content to the new site after it is installed.&lt;br /&gt;
&lt;br /&gt;
====Automated migration====&lt;br /&gt;
&lt;br /&gt;
This is a two phased process using two tools. The first tool is a [[Migration|migrator component]] named 'com_migrator'. This component has been contributed by Harald Baer and is based on his 'eBackup' component. The migrator needs to be installed on the old site and when activated it prepares the required export dump of the old site's data. The second tool is built into the Joomla 1.5 installation process. The exported content dump is loaded to the new site and all conversions and modification are performed 'on-the-fly'.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Upgrading and Migrating FAQ]] &lt;br /&gt;
[[Category:Version 1.0 FAQ]]&lt;br /&gt;
[[Category:Upgrade Instructions]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_tune_for_speed_with_PHP5_and_MySQL5%3F</id>
		<title>How do you tune for speed with PHP5 and MySQL5?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_tune_for_speed_with_PHP5_and_MySQL5%3F"/>
				<updated>2010-10-05T10:41:29Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is just a point by point summary of how I've been tuning and tweaking our Joomla sites to get them running as quickly as possible. For reference, we run all our sites off a Rackspace dedicated server, with 1Gb RAM, a 2Ghz dual core Athlon, running Apache 2.0.x (current revision), PHP 5.0.x (current revision) and MySQL 5.0.18.&lt;br /&gt;
&lt;br /&gt;
These are listed in terms of apparent speed increase - that is, not the sheer speed for the full page, but the speed before the page is usable to view content, even if not all features are loaded.&lt;br /&gt;
&lt;br /&gt;
# PHP caching. I had been running eAccelerator, but switched to APC today, and it has made the system even faster than before, and eAccelerator was a big boost over uncached PHP. Joomla is a big complex system, so using precompiled code is a big time saver. I use a 128Mb in-memory cache, which is plenty for our needs.&lt;br /&gt;
# MySQL Query Caching. This one will vary depending on how dynamic your site is, and you can really kill the benefits by using the wrong extensions (any date/time based will need checking), but if you are serving pretty much the same queries each page load, it will drop the load times noticably.&lt;br /&gt;
# Template Image optimisation - template images really slow down the initial page load for first time visitors, so optimising the hell out of them makes sense. Remember that your template is probably not going to change as often as your story content, so you can afford to spend more time on optimising the images for it that you would otherwise. I recommend Irfanview, with the pngout plugin active for PNG images, and it isn't bad for JPG and GIF images either. Don't forget to ramp up the compression level of PNGs, and, if possible, reducing them to indexed pallettes.&lt;br /&gt;
# CSS compression. Easy one this - put a little script to output a gzipped version of your CSS file(s) and point your index.php at it. Example script below - I didn't write it, but it's short, to the point, and works.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ob_start (&amp;quot;ob_gzhandler&amp;quot;);&lt;br /&gt;
header(&amp;quot;Content-type: text/css&amp;quot;);&lt;br /&gt;
header(&amp;quot;Cache-Control: must-revalidate&amp;quot;);&lt;br /&gt;
$offset = 60 * 60 ;&lt;br /&gt;
$ExpStr = &amp;quot;Expires: &amp;quot; .&lt;br /&gt;
gmdate(&amp;quot;D, d M Y H:i:s&amp;quot;,&lt;br /&gt;
time() + $offset) . &amp;quot; GMT&amp;quot;;&lt;br /&gt;
header($ExpStr);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# Strip unneeded modules, components, mambots from Joomla. If you haven't used them, the impact on your loading time is minimal, but with more components/modules active, there are more points of failure, and Apache errors are slow!&lt;br /&gt;
# Scrutinise the Apache error log. It is amazing how many errors can crop up even with a fairly minimal Joomla install, and they don't necessarily affect the appearance of the page. Check your error log, especially if you are using custom components/modules, or any non-standard config settings. Once you've noticed any problems, it's time to fix the code creating them, and test thoroughly before uploading the fixed versions.&lt;br /&gt;
# Keep rechecking as you add/remove features, redesign or change any server configuration options. Even things like adding virtual servers in Apache can affect speed of the server, as a missed config setting can cause general Apache delays.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Upgrading and Migrating FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_setup_a_powerful_password_scheme%3F</id>
		<title>How do you setup a powerful password scheme?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_setup_a_powerful_password_scheme%3F"/>
				<updated>2010-10-05T10:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Overview'''&lt;br /&gt;
&lt;br /&gt;
: Most users may not need more than 3 levels of passwords and webmasters no more than 5. Each level must be completely unrelated to the others in terms of which ids and passwords are used.&lt;br /&gt;
&lt;br /&gt;
'''Directions'''&lt;br /&gt;
&lt;br /&gt;
* '''Level 5 (Public)''' - is the password you use on public sites. It is not imperative that you use a different password on every site. In fact it's more effective to use a different username on every site than it is to use a different password truth be told! Knowing the username allows easy hacking...half the work is done! knowing the password is useless unless you know what account it goes to!&lt;br /&gt;
&lt;br /&gt;
* '''Level 4 (Webmaster)''' - Reserved for SQL Only. this is a password that would only be used by SQL and limited to a specific database in SQL. The best way to protect SQL is by limiting each account to just being able to do the minimum that DB requires. In some cases it is even wise to have a read only account for display and a separate write account that the backend write functions use. But that doesn't apply to J! at all... for J! the best practice is to set up an individual account (not root for sure) that only has read and write access to the J! DB nothing else.&lt;br /&gt;
&lt;br /&gt;
* '''Level 3 (Webmaster)''' - FTP and Server Access. these can be the same user:pass combo since both if compromised can do the most damage. doesn't matter if the backend or Cpanel is safe if the FTP is not and the same goes the other way!&lt;br /&gt;
&lt;br /&gt;
* '''Level 2 (Personal Data Access)''' - This password should be used for any sites or locations that contain personal data with the exception of Banking (see level 1). these sites are often used for social engineering data such as medical records, service accounts and any financial records not directly related to banking! You want these to be secure but also different from the real threat of security...your money!&lt;br /&gt;
&lt;br /&gt;
* '''Level 1 (Banking!)''' - this needs to be the most secure in fact if you have two different banks it actually pays to have a different user:pass for each just to be sure!&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_set_parameters_for_articles_and_other_content_items%3F</id>
		<title>How do you set parameters for articles and other content items?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_set_parameters_for_articles_and_other_content_items%3F"/>
				<updated>2010-10-05T10:39:50Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Joomla! 1.5, many Article parameters, such as Show Title, Show Author, and so on, can be set in three places:&lt;br /&gt;
#the individual article (the Article:[Edit] screen)&lt;br /&gt;
#the menu item (Menu Item:[Edit] screen)&lt;br /&gt;
#global parameters (Article Manager / Parameters)&lt;br /&gt;
&lt;br /&gt;
Typically, parameters at the individual article and menu item levels can be set to a specific value or to a value of &amp;quot;Use Global&amp;quot;. If the individual article's parameter is set, then that value controls the setting. If this is set to &amp;quot;Use Global&amp;quot; then the menu item parameter is checked. If the menu item is set to a specific value, that value is used. If the menu item is set to &amp;quot;Use Global&amp;quot;, then the global parameter setting is used.&lt;br /&gt;
&lt;br /&gt;
A similar hierarchy is used for other content items, such as Banners, Contacts, News Feeds, and Web Links.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:FAQ]][[Category:Administration FAQ]][[Category:Getting Started FAQ]][[Category:Version 1.5 FAQ]][[Category:Parameters]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:Article Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_set_global_preferences_for_content%3F</id>
		<title>How do you set global preferences for content?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_set_global_preferences_for_content%3F"/>
				<updated>2010-10-05T10:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Global preferences in content are set in the article manager.&lt;br /&gt;
&lt;br /&gt;
In the backend, go to Content&amp;gt;Article manager.&lt;br /&gt;
&lt;br /&gt;
On the tool bar, second from the right, there is the preferences icon.&lt;br /&gt;
&lt;br /&gt;
Click that and set your global preferences.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Article Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_restrict_directory_access_by_IP_address_using_htaccess%3F</id>
		<title>How do you restrict directory access by IP address using htaccess?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_restrict_directory_access_by_IP_address_using_htaccess%3F"/>
				<updated>2010-10-05T10:38:55Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Overview'''&lt;br /&gt;
&lt;br /&gt;
This can be a very effective way to protect your Joomla! administrator directory. Any other directory in public_html can be protected in the same way. This method only works if you have a static IP address assigned to you. Anyone attempting to browse such directories using a different IP Address will get a 403 Forbidden error.&lt;br /&gt;
&lt;br /&gt;
'''Directions'''&lt;br /&gt;
# In the directory you wish to protect, open (or create) a file called, .htaccess. (Note the dot at the beginning of the file name.)&lt;br /&gt;
# Add the following code to this file, replacing 100.100.100.100 in this example with the static IP address you plan to allow:&lt;br /&gt;
&lt;br /&gt;
 Order Deny,Allow&lt;br /&gt;
 Deny from all&lt;br /&gt;
 Allow from 100.100.100.100&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Optional: You can enter partial IP Addresses, such as, 100.100.100. This allows access to a range of addresses.&lt;br /&gt;
&lt;br /&gt;
* Optional: You can add multiple addresses by separating them with comma's.&lt;br /&gt;
&lt;br /&gt;
 100.100.100.101, 100.100.100.102&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_request_a_feature%3F</id>
		<title>How do you request a feature?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_request_a_feature%3F"/>
				<updated>2010-10-05T10:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can request a feature here:&lt;br /&gt;
&lt;br /&gt;
http://forum.joomla.org/index.php/board,38.0.html&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&lt;br /&gt;
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemBrowse&amp;amp;tracker_id=20&lt;br /&gt;
&lt;br /&gt;
You will need to register at joomlacode.org to submit a feature request.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Joomla! CMS Project FAQ]]&lt;br /&gt;
[[Category:Working Groups]]&lt;br /&gt;
[[Category:Contributors]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_redirect_users_after_a_successful_login%3F</id>
		<title>How do you redirect users after a successful login?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_redirect_users_after_a_successful_login%3F"/>
				<updated>2010-10-05T10:37:20Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Select the redirection page from the list of menu links offered. Make sure that the link is to a published item. &lt;br /&gt;
&lt;br /&gt;
Note: The same procedure is used for redirecting users on successful logout except you enter the page where you want to redirect successful logouts to where it says &amp;quot;Logout Redirection URL.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you would like to override the default login specified in your Administration back end from your custom code you can do so with the following:  &lt;br /&gt;
* Take the url that you would like to redirect the user to after they have successfully logged in and apply the 'base64_encode' function to it. For example, &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$redirectUrl = '''base64_encode'''($redirectUrl);  &lt;br /&gt;
// a base64_encode of index.php?option=com_pizzapie' yeilds: 'aW5kZXgucGhwP29wdGlvbj1jb21fcGl6emFwaWU='  &amp;lt;/source&amp;gt;&lt;br /&gt;
* Prepend the '&amp;amp;return=' query string to your newly encoded $redirectUrl. For example,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; $redirectUrl = ''''&amp;amp;return=''''.$redirectUrl; &amp;lt;/source&amp;gt;&lt;br /&gt;
* Append that $redirecturl to the Joomla Login Url. For example, &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
              $joomlaLoginUrl = 'index.php?option=com_user&amp;amp;view=login';&lt;br /&gt;
              $finalUrl = $joomlaLoginUrl . $redirecturl; &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you display that $finalUrl, it should look something like this:&lt;br /&gt;
'index.php?option=com_user&amp;amp;view=login'''&amp;amp;return=aW5kZXgucGhwP29wdGlvbj1jb21fcGl6emFwaWU=''''&lt;br /&gt;
&lt;br /&gt;
The '''controller.php''' file in the '''com_user''' checks the contents of the 'return' in the JRequest object (the Joomla query access object). If it is set and in the base64 format, it base64_decode(s) it and applies that redirection.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:User Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F</id>
		<title>How do you recover or reset your admin password?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F"/>
				<updated>2010-10-05T10:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Normally, you can add, edit and delete users and passwords from the back-end User Manager. To do this, you must be logged in as a member of the Super Administrator group. &lt;br /&gt;
&lt;br /&gt;
In some situations, this may not be possible. For example, your site may have been &amp;quot;hacked&amp;quot; and had the passwords or users changed. Or perhaps the person who knew the passwords is no longer available. Or maybe you have forgotten the password that was used.&lt;br /&gt;
&lt;br /&gt;
In these cases, it is still possible to fix up the Joomla! database so you can log back in as a Super Administrator. There are three possible methods discussed below.&lt;br /&gt;
&lt;br /&gt;
===Use the Lost Password Feature===&lt;br /&gt;
If you have access to the email address that was used for the admin user, and you have made the &amp;quot;lost password&amp;quot; feature available on the front end, the simplest thing is to do is to use the &amp;quot;lost password&amp;quot; Front-end function. The site will send an e-mail to the user's e-mail address and allow you to change the password.&lt;br /&gt;
&lt;br /&gt;
If this method will not work, you have two other options, both of which require working with the MySQL database directly.&lt;br /&gt;
&lt;br /&gt;
===Change the Password in the Database===&lt;br /&gt;
If the admin user is still defined, the simplest option is to change the password in the database to a known value. This requires that you have access to the MySQL database using phpMyAdmin.&lt;br /&gt;
&lt;br /&gt;
# Navigate to phpMyAdmin and select the database for the Joomla! site in the left-hand drop-down list box. This will show the database tables on the left side of the screen. &lt;br /&gt;
# Click on the table &amp;quot;jos_users&amp;quot; in the list of tables. &lt;br /&gt;
# Click on the &amp;quot;Browse&amp;quot; button in the top toolbar. This will show all of the users that are set up for this site.&lt;br /&gt;
# Find the user whose password you want to change and press the Edit icon for this row.&lt;br /&gt;
# A form will display that allows you to edit the password field. Copy the value &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199&amp;lt;/source&amp;gt; into the password field and press the ''Go'' button. phpMyAdmin should display the message &amp;quot;Affected rows: 1&amp;quot;. At this point, the password should be changed to &amp;quot;secret&amp;quot;.&lt;br /&gt;
# Log in with this user and password and change the password of this user to a secure value. Check all of the users using the User Manager to make sure they are legitimate. If you have been hacked, you may want to change all of the passwords on the site.&lt;br /&gt;
&lt;br /&gt;
===Add a New Super Administrator User===&lt;br /&gt;
If changing the password won't work, or you aren't sure which user is a member of the Super Administrator group, you can use this method to create a new user.&lt;br /&gt;
&lt;br /&gt;
# Navigate to phpMyAdmin and select the database for the Joomla! site in the left-hand drop-down list box. This will show the database tables on the left side of the screen. &lt;br /&gt;
# Press the &amp;quot;SQL&amp;quot; button in the toolbar to run a SQL query on the selected database. This will display a field called &amp;quot;Run SQL query/queries on database &amp;lt;your database&amp;gt;&amp;quot;.&lt;br /&gt;
# Delete any text in this field and paste in the following and press the ''Go'' button.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;INSERT INTO `jos_users`&lt;br /&gt;
   (`id`, `name`, `username`, `email`, `password`, `usertype`, `block`, `sendEmail`,&lt;br /&gt;
    `gid`, `registerDate`, `lastvisitDate`)&lt;br /&gt;
    VALUES (null, 'Administrator2', 'admin2', 'your-email@yourdomain.com',&lt;br /&gt;
    'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199',&lt;br /&gt;
    'Super Administrator', 0, 1, 25, '0000-00-00 00:00:00', '0000-00-00 00:00:00');&lt;br /&gt;
INSERT INTO `jos_core_acl_aro` VALUES (NULL, 'users', LAST_INSERT_ID(), 0, 'Administrator', 0);&lt;br /&gt;
INSERT INTO `jos_core_acl_groups_aro_map` VALUES (25, '', LAST_INSERT_ID());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, you should be able to log into the back end of Joomla! with the username of &amp;quot;admin2&amp;quot; and password of &amp;quot;secret&amp;quot;. After logging in, go to the User Manager and change the password to a secure value and the e-mail to a valid e-mail address. If there is a chance you have been &amp;quot;hacked&amp;quot;, be sure to check that all users are legitimate, especially any members of the Super Administrator group.&lt;br /&gt;
&lt;br /&gt;
The examples above change the password to &amp;quot;secret&amp;quot;. Two other possible values are shown below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- password = &amp;quot;this is the MD5 and salted hashed password&amp;quot;&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
- admin  = 433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT&lt;br /&gt;
- secret = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199&lt;br /&gt;
- OU812  = 5e3128b27a2c1f8eb53689f511c4ca9e:J584KAEv9d8VKwRGhb8ve7GdKoG7isMm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]][[Category:Administration FAQ]][[Category:Getting Started FAQ]][[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:User Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_password_protect_directories_using_htaccess%3F</id>
		<title>How do you password protect directories using htaccess?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_password_protect_directories_using_htaccess%3F"/>
				<updated>2010-10-05T10:36:19Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Overview'''&lt;br /&gt;
&lt;br /&gt;
This FAQ explains how to protect the Joomla! /administrator/ directory on Apache servers using the htpasswd utility. You can easily adapt these instructions to protect other directories. If you need help finding or creating your .htaccess file, start here.&lt;br /&gt;
&lt;br /&gt;
'''Caveat (From Apache.org)'''&lt;br /&gt;
&lt;br /&gt;
Basic authentication should not be considered secure for any particularly rigorous definition of secure.&lt;br /&gt;
Although the password is stored on the server in encrypted format, it is passed from the client to the server in plain text across the network. Anyone listening with any variety of packet sniffer will be able to read the username and password in the clear as it goes across.&lt;br /&gt;
&lt;br /&gt;
Not only that, but remember that the username and password are passed with every request, not just when the user first types them in. So the packet sniffer need not be listening at a particularly strategic time, but just for long enough to see any single request come across the wire.&lt;br /&gt;
&lt;br /&gt;
And, in addition to that, the content itself is also going across the network in the clear, and so if the web site contains sensitive information, the same packet sniffer would have access to that information as it went past, even if the username and password were not used to gain direct access to the web site.&lt;br /&gt;
&lt;br /&gt;
Don't use basic authentication for anything that requires real security. It is a detriment for most users, since very few people will take the trouble, or have the necessary software and/or equipment, to find out passwords. However, if someone had a desire to get in, it would take very little for them to do so.&lt;br /&gt;
&lt;br /&gt;
Basic authentication across an SSL connection, however, will be secure, since everything is going to be encrypted, including the username and password.&lt;br /&gt;
&lt;br /&gt;
'''Directions'''&lt;br /&gt;
&lt;br /&gt;
1. If you are unfamiliar with the Apache htpasswd utility, you may want to read the following link first.&lt;br /&gt;
Apache Authentication, Authorization, and Access Control&lt;br /&gt;
&lt;br /&gt;
2. Check to be sure your site is configured to use .htaccess files. If not sure, ask your host.&lt;br /&gt;
&lt;br /&gt;
3. Decide where to put your .htaccess file. Because Apache recursively searches all directories in a path for .htaccess files, the higher in your directory structure you place this file, the more directories it will control. If there is already an .htaccess file in the directory you choose, it's probably best to add the new code to it.&lt;br /&gt;
&lt;br /&gt;
4. Decide where to store your.htpasswd and .htgroups files. These files should NEVER be publicly accessable through the Web. Below is an example directory structure showing good locations for each file. Note that the /auth/ directory in this example is NOT accessible from the Web.&lt;br /&gt;
&lt;br /&gt;
 /home/mysite/public_html/.htaccess&lt;br /&gt;
 /home/mysite/auth/.htpasswd/&lt;br /&gt;
 /home/mysite/auth/.htgroups/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Create the .htpasswd and .htgroups files as explained in the official Apache HowTo, referenced above. (Since you've read the always current and official documentation at Apache.org, we'll spare you the trouble of displaying it again here.)&lt;br /&gt;
&lt;br /&gt;
6. If a .htaccess file already exists in the directory you have chosen, make a backup copy. If the file does not exist, create a new file with that name now. (Don't forget the dot at the beginning of the name.)&lt;br /&gt;
&lt;br /&gt;
7. Add the following code to the .htaccess file. Adjust the example paths (marked in red) as needed for your server. Adjust the group name that you created in step 5 if it differs from the below example.&lt;br /&gt;
&lt;br /&gt;
 AuthUserFile /home/auth/.htpasswd&lt;br /&gt;
 AuthGroupFile /home/auth/.htgroups&lt;br /&gt;
 AuthType Basic&lt;br /&gt;
 AuthName &amp;quot;LWS&amp;quot;&lt;br /&gt;
 require group admins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Test carefully.&lt;br /&gt;
&lt;br /&gt;
9. Remove all backup .htaccess files from public_http directories.&lt;br /&gt;
&lt;br /&gt;
10. If you can not use the Apache htpasswd utility, here's a free, online script that creates the necessary files for you. You'll need to know the user name, password, and path. The script does the rest for you. Note that for more advanced configuration, such as the use of groups, you'll need to edit the resulting files.&lt;br /&gt;
&lt;br /&gt;
'''.htaccess Generator:''' http://www.webmaster-toolkit.com/htaccess-generator.shtml&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_organize_the_front_page_with_the_right_columns_and_layout%3F</id>
		<title>How do you organize the front page with the right columns and layout?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_organize_the_front_page_with_the_right_columns_and_layout%3F"/>
				<updated>2010-10-05T10:36:00Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you're just getting started, take a look at the [[Absolute Beginners Guide to Joomla!]].  There are a great many conceptual ideas there that you need to understand. &lt;br /&gt;
&lt;br /&gt;
There are five parts to setting up your frontpage.&lt;br /&gt;
&lt;br /&gt;
# Choose a desirable template for your site. Install it, and get it basically working. The template determines the column layout for your site.&lt;br /&gt;
# Choose and configure your modules, so your frontpage displays the right menus, etc. Modules are those things like menus, login forms, banner-ad positions, &amp;quot;Breaking News&amp;quot; boxes, etc., that show up on the pages of your site. &lt;br /&gt;
#*Use Extensions/Module Manager in your backend menu to do this. Edit each module in turn to place it in the correct spot on your template (for example, right, left, breadcrumb, etc.) &lt;br /&gt;
#*You can disable the modules you don't want to see, enable the ones you do, position them within your template, and control their order from the Module Manager. When you're doing this, make sure you have not enabled caching.&lt;br /&gt;
#*If caching is enabled, it may look like your changes are not taking effect, which can drive you crazy.&lt;br /&gt;
#*Use the Preview button on the backend (upper right), and Shift-Reload on your browser, liberally to make sure you have things right. Change one thing in the backend, then view the frontpage again.&lt;br /&gt;
#*Note well: all modules in 1.5 are controlled from Extensions / Module Manager, even the ones that aren't really extensions. &lt;br /&gt;
#Make sure your frontpage is configured so that the front page manager can control the order of articles in your front page. You need to [[Setting_Front_Page_Advanced_Parameters|set certain advanced parameters correctly]]. &lt;br /&gt;
#Use the Content Manager to enable certain articles to be published on the frontpage. Only enable the ones you want on the frontpage.&lt;br /&gt;
#Use the Front Page manager to set the order of articles on your frontpage.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Article Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_modify_a_template%3F</id>
		<title>How do you modify a template?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_modify_a_template%3F"/>
				<updated>2010-10-05T10:35:26Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Templates are just a series of xml, php, html and image files that are stored in the templates directory of your site.&lt;br /&gt;
You can edit these files or you can use the editing interface available in the [[Template Manager]].&lt;br /&gt;
&lt;br /&gt;
In the [[Back-end]], select Site&amp;gt;&amp;gt;[[Extension]]s&amp;gt;&amp;gt;Templates.&lt;br /&gt;
Select the template you wish to modify.&lt;br /&gt;
Click the edit icon.&lt;br /&gt;
&lt;br /&gt;
'''both'''&lt;br /&gt;
You are given the choice of editing &amp;quot;html&amp;quot; and &amp;quot;css.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
[[CSS]] stands for cascading style sheets. This controls many elements of the look and feel of your site.&lt;br /&gt;
[[HTML]] is the file that controls where positions are defined and positioned. Other than that, it should be noted that, with a few exceptions, what is in the .css and what is in the HTML files largely depends on the approach of the tempate designer.&lt;br /&gt;
&lt;br /&gt;
One common change is to use your own graphic/image. Graphics are linked to in the HTML file. Simply change the reference to the image of your choice. Keep in mind that it if it is a different size than the original image this may change the appearance of the site in unexpected ways.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Upgrading and Migrating FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Template Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_list_your_extension_in_the_extensions_site%3F</id>
		<title>How do you list your extension in the extensions site?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_list_your_extension_in_the_extensions_site%3F"/>
				<updated>2010-10-05T10:32:25Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information on how to list extensions in the extensions site is available here:&lt;br /&gt;
http://extensions.joomla.org/help2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before submitting an extension to JED you should read the 4 steps checklist process&lt;br /&gt;
* [[JED_Entries_Submission_Checklist|Submission Checklist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:JED]]&lt;br /&gt;
[[Category:Template Development]]&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
[[Category:Plugin Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Language Development]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_link_from_inside_content_to_another_content_item%3F</id>
		<title>How do you link from inside content to another content item?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_link_from_inside_content_to_another_content_item%3F"/>
				<updated>2010-10-05T10:32:05Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The simple answer is that you get the page URL you want to link to and then make a link using whatever text editor you are using or (if you have no wysiwyg) with html.&lt;br /&gt;
&lt;br /&gt;
The more complicated answer is that some text editors have fancier links managers. A number of these editors are available in the Joomla! Extensions Directory.&lt;br /&gt;
&lt;br /&gt;
See the Tips and Tricks article [[How_to_control_module_display_when_linking_to_an_article_with_no_menu_item]] for more detailed information.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Article Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_install_a_new_template%3F</id>
		<title>How do you install a new template?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_install_a_new_template%3F"/>
				<updated>2010-10-05T10:31:34Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the [[Back-end]] of the site, go to [[Extension]]s&amp;gt;&amp;gt;[[Installing_an_extension|Install/Uninstall]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Extension_install_1_5.png]]&lt;br /&gt;
&lt;br /&gt;
Browse for the template zip file and click Upload File and Install.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can install from a directory or URL.&lt;br /&gt;
&lt;br /&gt;
To make the new template the default template for your site, select it and click the default icon (star).&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Template Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/Enabling_Search_Engine_Friendly_(SEF)_URLs_on_Apache</id>
		<title>Enabling Search Engine Friendly (SEF) URLs on Apache</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/Enabling_Search_Engine_Friendly_(SEF)_URLs_on_Apache"/>
				<updated>2010-10-05T10:31:00Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article addresses SEF URLs under the popular, open-source Apache webserver.&lt;br /&gt;
&lt;br /&gt;
SEF URL implementation is possible under Microsoft's IIS webserver as well, please see [[IIS and Joomla]].&lt;br /&gt;
&lt;br /&gt;
==Apache Instructions==&lt;br /&gt;
:1. Rename htaccess.txt to .htaccess.&lt;br /&gt;
::* If Joomla is installed in its own folder, uncomment &amp;quot;RewriteBase &amp;lt;nowiki&amp;gt;/&amp;lt;/nowiki&amp;gt;&amp;quot; and enter the Joomla folder name after the backslash. Example: &amp;lt;nowiki&amp;gt;RewriteBase /joomla&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:2. Make sure that Mod_rewrite is working. Check that the line shown below in the file &amp;quot;apache/conf/httpd.conf&amp;quot; is uncommented. If necessary, uncomment the line and re-start the Apache web server.&lt;br /&gt;
::&amp;lt;code&amp;gt;LoadModule rewrite_module modules/mod_rewrite.so&amp;lt;/code&amp;gt;&lt;br /&gt;
:3. In Global configuration, select yes to all three SEF options. The action of the three parameters is as follows:&lt;br /&gt;
::* '''Search Engine Friendly URLs.''' Converts the URLs from the native Joomla! format to the SEF format.&lt;br /&gt;
::* '''Use Apache mod_rewrite. ''' Uses the Apache &amp;quot;mod_rewrite&amp;quot; function to eliminate the &amp;quot;index.php&amp;quot; portion of the URL. If you don't want to use mod_rewrite, set this to &amp;quot;No&amp;quot; and don't rename the htaccess.txt. The SEF URLs feature will still work. The only difference is that you will see &amp;quot;index.php&amp;quot; in the URL, for example, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.yoursite.org/index.php/faq.html&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
::* '''Add suffix to URLs.''' Adds &amp;quot;.html&amp;quot; to the end of URLs.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Category Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_get_rid_of_the_breadcrumbs%3F</id>
		<title>How do you get rid of the breadcrumbs?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_get_rid_of_the_breadcrumbs%3F"/>
				<updated>2010-10-05T10:30:16Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Breadcrumbs are a core module in Joomla! 1.5 and can be enabled or disabled for all pages directly through the Module Manager in the Back-end. Just navigate to the Module Manager, find the Breadcrumbs Module, and disable it.&lt;br /&gt;
&lt;br /&gt;
To prevent the breadcrumb pathway from displaying on the Frontpage only, change the code of the index.php file of your template as follows:&lt;br /&gt;
: Replace&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;jdoc:include type=&amp;quot;module&amp;quot; name=&amp;quot;breadcrumbs&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: with&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if( JRequest::getVar( 'view' ) == 'frontpage' ) { ?&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php } else { ?&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;You are here: &amp;lt;jdoc:include type=&amp;quot;module&amp;quot; name=&amp;quot;breadcrumbs&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Module Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_find_exploits_using_the_*NIX_shell%3F</id>
		<title>How do you find exploits using the *NIX shell?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_find_exploits_using_the_*NIX_shell%3F"/>
				<updated>2010-10-05T10:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Check the active processes'''&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;ps&amp;quot; command to look for odd or unknown processes, if you aren't sure what to look for there, user &amp;quot;netstat -ae | grep irc&amp;quot; and/or &amp;quot;netstat -ea | grep 666&amp;quot; and look for ports 6666, 6667, 6668, 6669, these are common ports used for running IRC bots, they may have the name &amp;quot;irc&amp;quot; listed against them, or may have &amp;quot;httpd&amp;quot; or sometimes other regular services names.&lt;br /&gt;
&lt;br /&gt;
'''Check crontab'''&lt;br /&gt;
&lt;br /&gt;
Check your crontab and see if there is a strange entry, these are used in many exploits to restart IRC bots, even when admins or automated process monitors are used to kill a rogue process.&lt;br /&gt;
&lt;br /&gt;
'''Check for hidden files or directories'''&lt;br /&gt;
&lt;br /&gt;
Check for hidden files or directories you dont expect to see, those starting with &amp;quot;.&amp;quot; (dots) and also look for &amp;quot;. &amp;quot; (dot, space) often favored to try and catch searches for hidden directories.&lt;br /&gt;
&lt;br /&gt;
Other examples of searches that may help pin down exploits and/or unexpected files and folders:&lt;br /&gt;
&lt;br /&gt;
 find /home -type f | xargs grep -l MultiViews&lt;br /&gt;
 find . -type f | xargs grep -l base64_encode &amp;lt;&amp;lt;&amp;lt; this can produce false positives, it is valid in many mail/graphics scripts&lt;br /&gt;
 find . -type f | xargs grep -l error_reporting&lt;br /&gt;
 find / -name &amp;quot;[Bb]itch[xX]&amp;quot;&lt;br /&gt;
 find / -name &amp;quot;psy*&amp;quot;&lt;br /&gt;
 ls -lR | grep rwxrwxrwx &amp;gt; listing.txt&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Installation FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	<entry>
		<id>http://docs.joomla.org/How_do_you_find_a_Joomla!_extension%3F</id>
		<title>How do you find a Joomla! extension?</title>
		<link rel="alternate" type="text/html" href="http://docs.joomla.org/How_do_you_find_a_Joomla!_extension%3F"/>
				<updated>2010-10-05T10:28:26Z</updated>
		
		<summary type="html">&lt;p&gt;Batch1211: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The official Joomla! extensions site: http://extensions.joomla.org/ is the main source for extensions. If you cannot find what you need there, you should also search the Joomla! Extensions Directory Forum.&lt;br /&gt;
&lt;br /&gt;
If you still cannot find the right component then you should post a request or question in the Extensions Directory forum.&lt;br /&gt;
*[http://forum.joomla.org/index.php/board,470.0.html 1.5]: &lt;br /&gt;
*[http://forum.joomla.org/index.php/board,465.0.html 1.0]: &lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Administration FAQ]]&lt;br /&gt;
[[Category:Getting Started FAQ]]&lt;br /&gt;
[[Category:Version 1.5 FAQ]]&lt;br /&gt;
[[Category:Version 1.0 FAQ]]&lt;br /&gt;
[[Category:Module Management]]&lt;br /&gt;
[[Category:Component Management]]&lt;br /&gt;
[[Category:Plugin Management]]&lt;br /&gt;
[[Category:Language Management]]&lt;br /&gt;
[[Category:Template Management]]&lt;/div&gt;</summary>
		<author><name>Batch1211</name></author>	</entry>

	</feed>