<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Es+ka</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Es+ka"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Es_ka"/>
	<updated>2026-05-14T12:49:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_configuration&amp;diff=647952</id>
		<title>J3.x:Developing an MVC Component/Adding configuration</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_configuration&amp;diff=647952"/>
		<updated>2020-02-20T13:22:24Z</updated>

		<summary type="html">&lt;p&gt;Es ka: fix typo and highlighting in admin/views/helloworld/tmpl/edit.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;== Introduction == &amp;lt;!--T:29--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
This tutorial is part of the [[S:MyLanguage/J3.2:Developing an MVC Component | Developing an MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
In this step we provide the ability for administrator to control the display of the category on the front end. We&#039;ll do this by specifying a global configuration parameter which can be set to Show or Hide, but also allow the administrator to override this setting on an individual Helloworld message basis. To enable this, we&#039;ll introduce a params field in the database record, which will be a string in JSON format (as is common in many Joomla core components), and we&#039;ll need to change the accompanying code to handle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; You can watch a video associated with this step at [https://youtu.be/NCdjbzMrkgk Step 13, Adding Configuration].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=NCdjbzMrkgk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Adding configuration parameters == &amp;lt;!--T:31--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
The Joomla framework allows the use of parameters stored in each component. With your favourite file manager and editor, put a file &amp;lt;tt&amp;gt;admin/config.xml&amp;lt;/tt&amp;gt; file containing these lines:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/config.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/config.xml&amp;lt;/tt&amp;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;config&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&lt;br /&gt;
		name=&amp;quot;greetings&amp;quot;&lt;br /&gt;
		label=&amp;quot;COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_LABEL&amp;quot;&lt;br /&gt;
		description=&amp;quot;COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_DESC&amp;quot;&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;show_category&amp;quot;&lt;br /&gt;
			type=&amp;quot;radio&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL&amp;quot;&lt;br /&gt;
			description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC&amp;quot;&lt;br /&gt;
			default=&amp;quot;0&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
			&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JHIDE&amp;lt;/option&amp;gt;&lt;br /&gt;
			&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JSHOW&amp;lt;/option&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
This file will be read by the &#039;&#039;com_config&#039;&#039; component of the Joomla core. For the moment, we defined only one parameter: is the category title displayed or not in the frontend.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
The best way to set the parameters is to put a &#039;&#039;Preferences&#039;&#039; button in a toolbar.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
With your favourite editor, put these lines in &amp;lt;tt&amp;gt;admin/views/helloworlds/view.html.php&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&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;
&amp;lt;tt&amp;gt;admin/views/helloworlds/view.html.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;83&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Display the Hello World view&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null)&lt;br /&gt;
	{&lt;br /&gt;
		&lt;br /&gt;
		// Get application&lt;br /&gt;
		$app = JFactory::getApplication();&lt;br /&gt;
		$context = &amp;quot;helloworld.list.admin.helloworld&amp;quot;;&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$this-&amp;gt;items			= $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$this-&amp;gt;pagination		= $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
		$this-&amp;gt;state			= $this-&amp;gt;get(&#039;State&#039;);&lt;br /&gt;
		$this-&amp;gt;filter_order 	= $app-&amp;gt;getUserStateFromRequest($context.&#039;filter_order&#039;, &#039;filter_order&#039;, &#039;greeting&#039;, &#039;cmd&#039;);&lt;br /&gt;
		$this-&amp;gt;filter_order_Dir = $app-&amp;gt;getUserStateFromRequest($context.&#039;filter_order_Dir&#039;, &#039;filter_order_Dir&#039;, &#039;asc&#039;, &#039;cmd&#039;);&lt;br /&gt;
		$this-&amp;gt;filterForm    	= $this-&amp;gt;get(&#039;FilterForm&#039;);&lt;br /&gt;
		$this-&amp;gt;activeFilters 	= $this-&amp;gt;get(&#039;ActiveFilters&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;)))&lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Set the submenu&lt;br /&gt;
		HelloWorldHelper::addSubmenu(&#039;helloworlds&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar and number of found items&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;
		// Set the document&lt;br /&gt;
		$this-&amp;gt;setDocument();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Add the page title and toolbar.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar()&lt;br /&gt;
	{&lt;br /&gt;
		$title = JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;);&lt;br /&gt;
&lt;br /&gt;
		if ($this-&amp;gt;pagination-&amp;gt;total)&lt;br /&gt;
		{&lt;br /&gt;
			$title .= &amp;quot;&amp;lt;span style=&#039;font-size: 0.5em; vertical-align: middle;&#039;&amp;gt;(&amp;quot; . $this-&amp;gt;pagination-&amp;gt;total . &amp;quot;)&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		JToolBarHelper::title($title, &#039;helloworld&#039;);&lt;br /&gt;
		JToolBarHelper::addNew(&#039;helloworld.add&#039;);&lt;br /&gt;
		JToolBarHelper::editList(&#039;helloworld.edit&#039;);&lt;br /&gt;
		JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;);&lt;br /&gt;
		JToolBarHelper::preferences(&#039;com_helloworld&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to set up the document properties&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	protected function setDocument() &lt;br /&gt;
	{&lt;br /&gt;
		$document = JFactory::getDocument();&lt;br /&gt;
		$document-&amp;gt;setTitle(JText::_(&#039;COM_HELLOWORLD_ADMINISTRATION&#039;));&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;translate&amp;gt;== Using configuration parameters as default value == &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
We want to define this parameter individually on all HelloWorld data. With your favourite editor, put these lines into the &amp;lt;tt&amp;gt;admin/models/forms/helloworld.xml&amp;lt;/tt&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/models/forms/helloworld.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;5-8,37-54&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&lt;br /&gt;
				addrulepath=&amp;quot;/administrator/components/com_helloworld/models/rules&amp;quot;&lt;br /&gt;
&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&lt;br /&gt;
				name=&amp;quot;details&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_DETAILS&amp;quot;&lt;br /&gt;
	&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 validate-greeting&amp;quot;&lt;br /&gt;
				validate=&amp;quot;greeting&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
				default=&amp;quot;&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
				name=&amp;quot;catid&amp;quot;&lt;br /&gt;
				type=&amp;quot;category&amp;quot;&lt;br /&gt;
				extension=&amp;quot;com_helloworld&amp;quot;&lt;br /&gt;
				class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
				default=&amp;quot;&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
			&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOPTION_SELECT_CATEGORY&amp;lt;/option&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset&lt;br /&gt;
				name=&amp;quot;params&amp;quot;&lt;br /&gt;
				label=&amp;quot;JGLOBAL_FIELDSET_DISPLAY_OPTIONS&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
					name=&amp;quot;show_category&amp;quot;&lt;br /&gt;
					type=&amp;quot;list&amp;quot;&lt;br /&gt;
					label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC&amp;quot;&lt;br /&gt;
					default=&amp;quot;&amp;quot;&lt;br /&gt;
			&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;JGLOBAL_USE_GLOBAL&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JHIDE&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JSHOW&amp;lt;/option&amp;gt;&lt;br /&gt;
			&amp;lt;/field&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
We define the same parameter for each message with an additional value: &#039;&#039;Use global&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Note: The &#039;&#039;details&#039;&#039; fieldset now has a label too (the same that was set in the &#039;&#039;edit&#039;&#039; view before).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Modifying the SQL == &amp;lt;!--T:38--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Data now contains a new parameter: &#039;&#039;params&#039;&#039;. The SQL structure has to be modified.&lt;br /&gt;
With your favourite editor, put these lines into &amp;lt;tt&amp;gt;admin/sql/install.mysql.utf8.sql&amp;lt;/tt&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/sql/install.mysql.utf8.sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/sql/install.mysql.utf8.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot; highlight=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS `#__helloworld`;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE `#__helloworld` (&lt;br /&gt;
	`id`       INT(11)     NOT NULL AUTO_INCREMENT,&lt;br /&gt;
	`greeting` VARCHAR(25) NOT NULL,&lt;br /&gt;
	`published` tinyint(4) NOT NULL,&lt;br /&gt;
	`catid`	    int(11)    NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
	`params`   VARCHAR(1024) NOT NULL DEFAULT &#039;&#039;,&lt;br /&gt;
	PRIMARY KEY (`id`)&lt;br /&gt;
)&lt;br /&gt;
	ENGINE =MyISAM&lt;br /&gt;
	AUTO_INCREMENT =0&lt;br /&gt;
	DEFAULT CHARSET =utf8;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `#__helloworld` (`greeting`) VALUES&lt;br /&gt;
(&#039;Hello World!&#039;),&lt;br /&gt;
(&#039;Good bye World!&#039;);&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;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
With your favourite editor, put these lines into &amp;lt;tt&amp;gt;admin/sql/updates/mysql/0.0.13.sql&amp;lt;/tt&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/sql/updates/mysql/0.0.13.sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/sql/updates/mysql/0.0.13.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE `#__helloworld` ADD `params` VARCHAR(1024) NOT NULL DEFAULT &#039;&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;TableHelloWorld&amp;lt;/tt&amp;gt; has to be modified in order to deal with these parameters; they will be stored in a JSON format. We have to overload the &#039;&#039;bind&#039;&#039; method to convert the array of these parameters into a JSON string for saving in the database. With your favourite editor, put these lines into &amp;lt;tt&amp;gt;admin/tables/helloworld.php&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/tables/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/tables/helloworld.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;28-46&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello Table class&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldTableHelloWorld extends JTable&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   JDatabaseDriver  &amp;amp;$db  A database connector object&lt;br /&gt;
	 */&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct(&#039;#__helloworld&#039;, &#039;id&#039;, $db);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Overloaded bind function&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param       array           named array&lt;br /&gt;
	 * @return      null|string     null is operation was satisfactory, otherwise returns an error&lt;br /&gt;
	 * @see JTable:bind&lt;br /&gt;
	 * @since 1.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function bind($array, $ignore = &#039;&#039;)&lt;br /&gt;
	{&lt;br /&gt;
		if (isset($array[&#039;params&#039;]) &amp;amp;&amp;amp; is_array($array[&#039;params&#039;]))&lt;br /&gt;
		{&lt;br /&gt;
			// Convert the params field to a string.&lt;br /&gt;
			$parameter = new JRegistry;&lt;br /&gt;
			$parameter-&amp;gt;loadArray($array[&#039;params&#039;]);&lt;br /&gt;
			$array[&#039;params&#039;] = (string)$parameter;&lt;br /&gt;
		}&lt;br /&gt;
		return parent::bind($array, $ignore);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Modifying the backend == &amp;lt;!--T:42--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
The backend edit view has to display the options to the administrator. With your favourite editor, put these lines into the &amp;lt;tt&amp;gt;admin/views/helloworld/tmpl/edit.php&amp;lt;/tt&amp;gt; file:&amp;lt;/translate&amp;gt;&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;
&amp;lt;tt&amp;gt;admin/views/helloworld/tmpl/edit.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;12,17-31&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.formvalidator&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id=&#039; . (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;adminForm&amp;quot; class=&amp;quot;form-validate&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;form-horizontal&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php foreach ($this-&amp;gt;form-&amp;gt;getFieldsets() as $name =&amp;gt; $fieldset): ?&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::_($fieldset-&amp;gt;label); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;?php foreach ($this-&amp;gt;form-&amp;gt;getFieldset($name) as $field): ?&amp;gt;&lt;br /&gt;
							&amp;lt;div class=&amp;quot;control-group&amp;quot;&amp;gt;&lt;br /&gt;
								&amp;lt;div class=&amp;quot;control-label&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;label; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
								&amp;lt;div class=&amp;quot;controls&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;input; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
							&amp;lt;/div&amp;gt;&lt;br /&gt;
						&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
					&amp;lt;/div&amp;gt;&lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;?php endforeach; ?&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::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
Note: The outer &#039;&#039;foreach&#039;&#039; retrieves all of the form fieldsets while the inner one gets the selected fieldset fields.&amp;lt;br /&amp;gt;&lt;br /&gt;
This is the result of the &amp;lt;tt&amp;gt;$this-&amp;gt;form-&amp;gt;getFieldsets()&amp;lt;/tt&amp;gt; command:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
    [details] =&amp;gt; stdClass Object&lt;br /&gt;
        (&lt;br /&gt;
            [name] =&amp;gt; details&lt;br /&gt;
            [label] =&amp;gt; COM_HELLOWORLD_HELLOWORLD_DETAILS&lt;br /&gt;
            [description] =&amp;gt; &lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [params] =&amp;gt; stdClass Object&lt;br /&gt;
        (&lt;br /&gt;
            [name] =&amp;gt; params&lt;br /&gt;
            [label] =&amp;gt; JGLOBAL_FIELDSET_DISPLAY_OPTIONS&lt;br /&gt;
            [description] =&amp;gt; &lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Modifying the frontend == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
The frontend has to be modified according to the new &#039;&#039;show_category&#039;&#039; parameter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
We have to modify the model:&lt;br /&gt;
* it has to merge global parameters and individual parameters&lt;br /&gt;
* it has to provide the category&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
With your favourite editor, put these lines into the &amp;lt;tt&amp;gt;site/models/helloworld.php&amp;lt;/tt&amp;gt; file:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/models/helloworld.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;20-47,65-96&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelItem&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * @var object item&lt;br /&gt;
	 */&lt;br /&gt;
	protected $item;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to auto-populate the model state.&lt;br /&gt;
	 *&lt;br /&gt;
	 * This method should only be called once per instantiation and is designed&lt;br /&gt;
	 * to be called on the first call to the getState() method unless the model&lt;br /&gt;
	 * configuration flag to ignore the request is set.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Note. Calling getState in this method will result in recursion.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	void&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function populateState()&lt;br /&gt;
	{&lt;br /&gt;
		// Get the message id&lt;br /&gt;
		$jinput = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$id     = $jinput-&amp;gt;get(&#039;id&#039;, 1, &#039;INT&#039;);&lt;br /&gt;
		$this-&amp;gt;setState(&#039;message.id&#039;, $id);&lt;br /&gt;
&lt;br /&gt;
		// Load the parameters.&lt;br /&gt;
		$this-&amp;gt;setState(&#039;params&#039;, JFactory::getApplication()-&amp;gt;getParams());&lt;br /&gt;
		parent::populateState();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get a table object, load it if necessary.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $type    The table name. Optional.&lt;br /&gt;
	 * @param   string  $prefix  The class prefix. Optional.&lt;br /&gt;
	 * @param   array   $config  Configuration array for model. Optional.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  JTable  A JTable object&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array())&lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get the message&lt;br /&gt;
	 * @return object The message to be displayed to the user&lt;br /&gt;
	 */&lt;br /&gt;
	public function getItem()&lt;br /&gt;
	{&lt;br /&gt;
		if (!isset($this-&amp;gt;item)) &lt;br /&gt;
		{&lt;br /&gt;
			$id    = $this-&amp;gt;getState(&#039;message.id&#039;);&lt;br /&gt;
			$db    = JFactory::getDbo();&lt;br /&gt;
			$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
			$query-&amp;gt;select(&#039;h.greeting, h.params, c.title as category&#039;)&lt;br /&gt;
				  -&amp;gt;from(&#039;#__helloworld as h&#039;)&lt;br /&gt;
				  -&amp;gt;leftJoin(&#039;#__categories as c ON h.catid=c.id&#039;)&lt;br /&gt;
				  -&amp;gt;where(&#039;h.id=&#039; . (int)$id);&lt;br /&gt;
			$db-&amp;gt;setQuery((string)$query);&lt;br /&gt;
		&lt;br /&gt;
			if ($this-&amp;gt;item = $db-&amp;gt;loadObject()) &lt;br /&gt;
			{&lt;br /&gt;
				// Load the JSON string&lt;br /&gt;
				$params = new JRegistry;&lt;br /&gt;
				$params-&amp;gt;loadString($this-&amp;gt;item-&amp;gt;params, &#039;JSON&#039;);&lt;br /&gt;
				$this-&amp;gt;item-&amp;gt;params = $params;&lt;br /&gt;
&lt;br /&gt;
				// Merge global params with item params&lt;br /&gt;
				$params = clone $this-&amp;gt;getState(&#039;params&#039;);&lt;br /&gt;
				$params-&amp;gt;merge($this-&amp;gt;item-&amp;gt;params);&lt;br /&gt;
				$this-&amp;gt;item-&amp;gt;params = $params;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return $this-&amp;gt;item;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
The view has to ask the model for the category. With your favourite editor, put these lines into the &amp;lt;tt&amp;gt;site/views/helloworld/view.html.php&amp;lt;/tt&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/helloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/views/helloworld/view.html.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HTML View class for the HelloWorld Component&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Display the Hello World view&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null)&lt;br /&gt;
	{&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;item = $this-&amp;gt;get(&#039;Item&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;)))&lt;br /&gt;
		{&lt;br /&gt;
			JLog::add(implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors), JLog::WARNING, &#039;jerror&#039;);&lt;br /&gt;
&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
The layout can now display correctly the category or not. With your favourite editor, put these lines into &amp;lt;tt&amp;gt;site/views/helloworld/tmpl/default.php&amp;lt;/tt&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/helloworld/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/views/helloworld/tmpl/default.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;13-15&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;item-&amp;gt;greeting.(($this-&amp;gt;item-&amp;gt;category and $this-&amp;gt;item-&amp;gt;params-&amp;gt;get(&#039;show_category&#039;))&lt;br /&gt;
                                      ? (&#039; (&#039;.$this-&amp;gt;item-&amp;gt;category.&#039;)&#039;) : &#039;&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Adding some translation strings == &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
Some strings have to be added in the &amp;lt;tt&amp;gt;admin/language/en-GB/en-GB.com_helloworld.ini&amp;lt;/tt&amp;gt; file:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/language/en-GB/en-GB.com_helloworld.ini&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/language/en-GB/en-GB.com_helloworld.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot; highlight=&amp;quot;22,23,38-40&amp;quot;&amp;gt;&lt;br /&gt;
; Joomla! Project&lt;br /&gt;
; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.&lt;br /&gt;
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php&lt;br /&gt;
; Note : All ini files need to be saved as UTF-8&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION=&amp;quot;HelloWorld - Administration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION_CATEGORIES=&amp;quot;HelloWorld - Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_NUM=&amp;quot;#&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_FILTER=&amp;quot;Filters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED=&amp;quot;Published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_NAME=&amp;quot;Name&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CREATING=&amp;quot;HelloWorld - Creating&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_DETAILS=&amp;quot;Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_EDITING=&amp;quot;HelloWorld - Editing&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ERROR_UNACCEPTABLE=&amp;quot;Some values are unacceptable&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC=&amp;quot;The category the messages belongs to&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL=&amp;quot;Category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC=&amp;quot;This message will be displayed&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL=&amp;quot;Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL=&amp;quot;Show category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC=&amp;quot;If set to Show, the title of the message&amp;amp;rsquo;s category will show.&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT=&amp;quot;HelloWorld manager: Edit Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW=&amp;quot;HelloWorld manager: New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLDS=&amp;quot;HelloWorld manager&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_EDIT_HELLOWORLD=&amp;quot;Edit message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_1=&amp;quot;One message deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_MORE=&amp;quot;%d messages deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_PUBLISHED=&amp;quot;%d message(s) published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_UNPUBLISHED=&amp;quot;%d message(s) unpublished&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_DESC=&amp;quot;Add Hello World Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_MESSAGES=&amp;quot;Messages&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_CATEGORIES=&amp;quot;Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIGURATION=&amp;quot;HelloWorld Configuration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_LABEL=&amp;quot;Messages settings&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_DESC=&amp;quot;Settings that will be applied to all messages by default&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Packaging the component == &amp;lt;!--T:51--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Content of your code directory. Each file link below takes you to the step in the tutorial which has the latest version of that source code file. &amp;lt;/translate&amp;gt;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding language management#site.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/config.xml|admin/config.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/access.xml|admin/access.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/helpers/helloworld.php|admin/helpers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/helpers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_an_MVC_Component/Adding_configuration#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/sql/updates/mysql/0.0.12.sql|admin/sql/updates/mysql/0.0.12.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/sql/updates/mysql/0.0.13.sql|admin/sql/updates/mysql/0.0.13.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/models/helloworld.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding decorations to the backend#admin/models/forms/filter_helloworlds.xml|admin/models/forms/filter_helloworlds.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/models/forms/helloworld.js|admin/models/forms/helloworld.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/models/rules/greeting.php|admin/models/rules/greeting.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/rules/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_backend_actions#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/views/helloworld/submitbutton.js|admin/views/helloworld/submitbutton.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding_configuration#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding_decorations_to_the_backend#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/images/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-16x16.png]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-48x48.png]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-13-adding-configuration.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;helloworld.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13,64&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;3.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;COM_HELLOWORLD&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2018&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.13&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 since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;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;languages folder=&amp;quot;site/language&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB/en-GB.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
        &amp;lt;/languages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;media destination=&amp;quot;com_helloworld&amp;quot; folder=&amp;quot;media&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/media&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039; img=&amp;quot;../media/com_helloworld/images/tux-16x16.png&amp;quot;&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;config.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;access.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- helpers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;admin/language&amp;quot;&amp;gt;&lt;br /&gt;
        		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;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;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;
&amp;lt;translate&amp;gt;== Contributors == &amp;lt;!--T:54--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:Scionescire|Scionescire]]&lt;br /&gt;
*[[User:Robbiej|Robbie Jackson]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding categories|Prev: Adding categories&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding ACL|Next: Adding ACL&amp;lt;/translate&amp;gt;|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.1{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.2{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.3{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.4{{#translation:}}]]&lt;br /&gt;
[[Category:Beginner Development{{#translation:}}]]&lt;br /&gt;
[[Category:Component Development{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials in a Series{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Es ka</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_Modal&amp;diff=647951</id>
		<title>J3.x:Developing an MVC Component/Adding a Modal</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_Modal&amp;diff=647951"/>
		<updated>2020-02-20T09:25:52Z</updated>

		<summary type="html">&lt;p&gt;Es ka: fix typo in admin/views/helloworlds/tmpl/modal.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
This tutorial is part of the [[S:MyLanguage/J3.2:Developing an MVC Component | Developing an MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
In this step we add a modal, and an accompanying video is available at [https://youtu.be/5qJ6qT9dpXQ Adding a Modal].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=5qJ6qT9dpXQ}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Introduction == &amp;lt;!--T:4--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Modals, or modal windows, are the pop-up-like windows which appear in several places within Joomla. Examples are:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* When as an administrator you create a new menu item, and select a Menu Item Type of Articles / Single Article, then when you click to select the article, a pop-up appears displaying the details of the articles available and allowing you to select one.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* If you enabled the Administrator Multilanguage Status module as part of making your site multilingual in the previous step, then when you click on the &amp;quot;Multilingual Status&amp;quot; button at the bottom left of each admin page, a pop-up appears which shows the status of the multilingual functionality on your site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Of course, these modals aren&#039;t really browser pop-up windows - users often disable browser pop-up windows - but rather use CSS and Javascript to give the appearance of pop-ups, and Joomla currently uses the [https://getbootstrap.com/docs/4.0/components/modal/ Bootstrap Modal] framework.&amp;lt;/translate&amp;gt; &amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt; The HTML elements which comprise the modal are already within the HTML of the page, but hidden. When you click on an appropriate button (such as the Select button to select an article in the first example above), then the javascript code behind the button click does the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* the HTML hidden elements of the modal are made visible&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* a new div element covering the whole of the browser window is created; this backdrop is coloured black, and has partial opacity, so this gives the appearance of greying out what&#039;s behind the modal&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
* in the CSS the z-index is defined so that the modal appears above the backdrop.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
When you close the modal by selecting eg an article, or by clicking the close button, then the HTML elements of the modal are made hidden once more, the backdrop div is removed and any item you selected is passed by javascript to the appropriate field on the main form.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Each modal consists of 3 parts:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
* a modal header at the top, usually with the title and an X button to close the modal,&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* a modal body, where the main information appears, and,&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* a modal footer, with buttons such as Close, Save, etc, depending upon the context.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
In general within Joomla the modal body is an iframe element, and hence is an embedded HTML page within the overall page, and HTTP requests can be made to obtain the data to display in the iframe, filter and sort it, and so on.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Functionality == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Currently within our helloworld component we have the ability to create a new menu item with a menu item type of &amp;quot;hello world&amp;quot; which will display a single helloworld message on our site. However, in choosing the message to display we have only a simple list field, and we have to scroll down the list of greetings to select the appropriate one. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
In this step we change the user interface so that when selecting the helloworld message for a new menu item, the administrator is presented with a modal with all the details of the helloworld records, similar to what is shown when the administrator clicks on Components / Hello World. In this way the administrator is presented with a much nicer interface, with ordering, search and filter functionality. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Approach == &amp;lt;!--T:22--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
The definition of what is displayed when an admin selects a menuitem of type Hello World is defined in the xml file of the site helloworld layout file, ie site/views/helloworld/tmpl/default.xml. We need to change the field definition in that file to be a custom field type which we&#039;ll call modal_helloworld.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
We need to provide Joomla with the code for our custom field, and we&#039;ll provide a new file to generate the html to display our custom input field. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Finally we need to consider the display of the helloworld records within our modal. We&#039;ll use a presentation similar to that shown when the administrator navigates to Components / Hello world, so we&#039;ll reuse our helloworlds view, but we&#039;ll generate a new layout file instead of our current admin views/helloworlds/tmpl/default.php. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Helloworld menuitem definition == &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; We change the custom field for selecting the Helloworld record to be displayed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/helloworld/tmpl/default.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&#039;&#039;&#039;site/views/helloworld/tmpl/default.xml&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13-14&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
	&amp;lt;layout title=&amp;quot;COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/layout&amp;gt;&lt;br /&gt;
	&amp;lt;fields&lt;br /&gt;
			name=&amp;quot;request&amp;quot;&lt;br /&gt;
			addfieldpath=&amp;quot;/administrator/components/com_helloworld/models/fields&amp;quot;&lt;br /&gt;
			&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset name=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
					name=&amp;quot;id&amp;quot;&lt;br /&gt;
					type=&amp;quot;modal_helloworld&amp;quot;&lt;br /&gt;
					required=&amp;quot;true&amp;quot;&lt;br /&gt;
					label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC&amp;quot;&lt;br /&gt;
					/&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Field definition == &amp;lt;!--T:28--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The field definition for our new custom field goes into the admin/models/fields directory. Because the field type is called modal_helloworld, with an underscore in between, Joomla will look in a /modal subdirectory for a file helloworld.php. Hence our new custom field is defined in &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/fields/modal/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&#039;&#039;&#039;admin/models/fields/modal/helloworld.php&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined(&#039;JPATH_BASE&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Supports a modal for selecting a helloworld record&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
class JFormFieldModal_Helloworld extends JFormField&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the html for the input field.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  string  The field input html.&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// Load language&lt;br /&gt;
		JFactory::getLanguage()-&amp;gt;load(&#039;com_helloworld&#039;, JPATH_ADMINISTRATOR);&lt;br /&gt;
&lt;br /&gt;
		// $this-&amp;gt;value is set if there&#039;s a default id specified in the xml file&lt;br /&gt;
		$value = (int) $this-&amp;gt;value &amp;gt; 0 ? (int) $this-&amp;gt;value : &#039;&#039;;&lt;br /&gt;
        &lt;br /&gt;
		// $this-&amp;gt;id will be jform_request_xxx where xxx is the name of the field in the xml file&lt;br /&gt;
		$modalId = &#039;Helloworld_&#039; . $this-&amp;gt;id;&lt;br /&gt;
&lt;br /&gt;
		// Add the modal field script to the document head.&lt;br /&gt;
		JHtml::_(&#039;jquery.framework&#039;);&lt;br /&gt;
		JHtml::_(&#039;script&#039;, &#039;system/modal-fields.js&#039;, array(&#039;version&#039; =&amp;gt; &#039;auto&#039;, &#039;relative&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
		// our callback function from the modal to the main window:&lt;br /&gt;
		JFactory::getDocument()-&amp;gt;addScriptDeclaration(&amp;quot;&lt;br /&gt;
			function jSelectHelloworld_&amp;quot; . $this-&amp;gt;id . &amp;quot;(id, title, catid, object, url, language) {&lt;br /&gt;
				window.processModalSelect(&#039;Helloworld&#039;, &#039;&amp;quot; . $this-&amp;gt;id . &amp;quot;&#039;, id, title, catid, object, url, language);&lt;br /&gt;
			}&lt;br /&gt;
			&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// if a default id is set, then get the corresponding greeting to display it&lt;br /&gt;
		if ($value)&lt;br /&gt;
		{&lt;br /&gt;
			$db    = JFactory::getDbo();&lt;br /&gt;
			$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
				-&amp;gt;select($db-&amp;gt;quoteName(&#039;greeting&#039;))&lt;br /&gt;
				-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
				-&amp;gt;where($db-&amp;gt;quoteName(&#039;id&#039;) . &#039; = &#039; . (int) $value);&lt;br /&gt;
			$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
			try&lt;br /&gt;
			{&lt;br /&gt;
				$title = $db-&amp;gt;loadResult();&lt;br /&gt;
			}&lt;br /&gt;
			catch (RuntimeException $e)&lt;br /&gt;
			{&lt;br /&gt;
				JError::raiseWarning(500, $e-&amp;gt;getMessage());&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// display the default greeting or &amp;quot;Select&amp;quot; if no default specified&lt;br /&gt;
		$title = empty($title) ? JText::_(&#039;COM_HELLOWORLD_MENUITEM_SELECT_HELLOWORLD&#039;) : htmlspecialchars($title, ENT_QUOTES, &#039;UTF-8&#039;);&lt;br /&gt;
		$html  = &#039;&amp;lt;span class=&amp;quot;input-append&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		$html .= &#039;&amp;lt;input class=&amp;quot;input-medium&amp;quot; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_name&amp;quot; type=&amp;quot;text&amp;quot; value=&amp;quot;&#039; . $title . &#039;&amp;quot; disabled=&amp;quot;disabled&amp;quot; size=&amp;quot;35&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// html for the Select button&lt;br /&gt;
		$html .= &#039;&amp;lt;a&#039;&lt;br /&gt;
			. &#039; class=&amp;quot;btn hasTooltip&#039; . ($value ? &#039; hidden&#039; : &#039;&#039;) . &#039;&amp;quot;&#039;&lt;br /&gt;
			. &#039; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_select&amp;quot;&#039;&lt;br /&gt;
			. &#039; data-toggle=&amp;quot;modal&amp;quot;&#039;&lt;br /&gt;
			. &#039; role=&amp;quot;button&amp;quot;&#039;&lt;br /&gt;
			. &#039; href=&amp;quot;#ModalSelect&#039; . $modalId . &#039;&amp;quot;&#039;&lt;br /&gt;
			. &#039; title=&amp;quot;&#039; . JHtml::tooltipText(&#039;COM_HELLOWORLD_MENUITEM_SELECT_BUTTON_TOOLTIP&#039;) . &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			. &#039;&amp;lt;span class=&amp;quot;icon-file&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &#039; . JText::_(&#039;JSELECT&#039;)&lt;br /&gt;
			. &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// html for the Clear button&lt;br /&gt;
		$html .= &#039;&amp;lt;a&#039;&lt;br /&gt;
			. &#039; class=&amp;quot;btn&#039; . ($value ? &#039;&#039; : &#039; hidden&#039;) . &#039;&amp;quot;&#039;&lt;br /&gt;
			. &#039; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_clear&amp;quot;&#039;&lt;br /&gt;
			. &#039; href=&amp;quot;#&amp;quot;&#039;&lt;br /&gt;
			. &#039; onclick=&amp;quot;window.processModalParent(\&#039;&#039; . $this-&amp;gt;id . &#039;\&#039;); return false;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			. &#039;&amp;lt;span class=&amp;quot;icon-remove&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039; . JText::_(&#039;JCLEAR&#039;)&lt;br /&gt;
			. &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		$html .= &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// url for the iframe&lt;br /&gt;
		$linkHelloworlds = &#039;index.php?option=com_helloworld&amp;amp;amp;view=helloworlds&amp;amp;amp;layout=modal&amp;amp;amp;tmpl=component&amp;amp;amp;&#039; . JSession::getFormToken() . &#039;=1&#039;;&lt;br /&gt;
		$urlSelect = $linkHelloworlds . &#039;&amp;amp;amp;function=jSelectHelloworld_&#039; . $this-&amp;gt;id;&lt;br /&gt;
        &lt;br /&gt;
		// title to go in the modal header&lt;br /&gt;
		$modalTitle    = JText::_(&#039;COM_HELLOWORLD_MENUITEM_SELECT_MODAL_TITLE&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// html to set up the modal iframe&lt;br /&gt;
		$html .= JHtml::_(&lt;br /&gt;
			&#039;bootstrap.renderModal&#039;,&lt;br /&gt;
			&#039;ModalSelect&#039; . $modalId,&lt;br /&gt;
			array(&lt;br /&gt;
				&#039;title&#039;       =&amp;gt; $modalTitle,&lt;br /&gt;
				&#039;url&#039;         =&amp;gt; $urlSelect,&lt;br /&gt;
				&#039;height&#039;      =&amp;gt; &#039;400px&#039;,&lt;br /&gt;
				&#039;width&#039;       =&amp;gt; &#039;800px&#039;,&lt;br /&gt;
				&#039;bodyHeight&#039;  =&amp;gt; &#039;70&#039;,&lt;br /&gt;
				&#039;modalWidth&#039;  =&amp;gt; &#039;80&#039;,&lt;br /&gt;
				&#039;footer&#039;      =&amp;gt; &#039;&amp;lt;a role=&amp;quot;button&amp;quot; class=&amp;quot;btn&amp;quot; data-dismiss=&amp;quot;modal&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&#039; . JText::_(&#039;JLIB_HTML_BEHAVIOR_CLOSE&#039;) . &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
			)&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// class=&#039;required&#039; for client side validation.&lt;br /&gt;
		$class = $this-&amp;gt;required ? &#039; class=&amp;quot;required modal-value&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// hidden input field to store the helloworld record id&lt;br /&gt;
		$html .= &#039;&amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_id&amp;quot; &#039; . $class &lt;br /&gt;
			. &#039; data-required=&amp;quot;&#039; . (int) $this-&amp;gt;required . &#039;&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name&lt;br /&gt;
			. &#039;&amp;quot; data-text=&amp;quot;&#039; . htmlspecialchars(JText::_(&#039;COM_HELLOWORLD_MENUITEM_SELECT_HELLOWORLD&#039;, true), ENT_COMPAT, &#039;UTF-8&#039;) &lt;br /&gt;
			. &#039;&amp;quot; value=&amp;quot;&#039; . $value . &#039;&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the html for the label field.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  string  The field label html.&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getLabel()&lt;br /&gt;
	{&lt;br /&gt;
		return str_replace($this-&amp;gt;id, $this-&amp;gt;id . &#039;_id&#039;, parent::getLabel());&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;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
When the field definition class extends JFormField, Joomla expects 2 methods to be present in the class: getInput() which should return the html for the input field elements and getLabel() which should return the html for the label. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
There are several core Joomla components which use modal fields to allow the administrator to select items, including com_content and com_contact. These components have similar field definitions, and the file above is a cut-down version of these equivalents, just supporting the functionality which we need for this tutorial step.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
There are a number of key html input elements returned by the getInput() method above.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
# The input field which displays the current greeting selected, or the text &amp;quot;Select&amp;quot; if none has been selected&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
# The Select button - this appears if no greeting has been selected. Note the attribute data-toggle=&amp;quot;modal&amp;quot; indicating that clicking on this button will cause the modal to appear&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
# The Clear button - this appears if a greeting has been selected. When clicked it runs a javascript function within the system/modal-fields.js code which replaces the selected greeting the &amp;quot;Select&amp;quot; text, makes visible the Select button, and hides the Clear button&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
# The modal elements - these are output through including sections of the Bootstrap html and javascript code. When the modal appears the iframe is created and populated through an HTTP GET to the URL in &amp;lt;tt&amp;gt;$urlSelect&amp;lt;/tt&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
# A hidden field which stores the id of the helloworld record selected, and which will be used to pass it in the HTTP POST parameters when the form is submitted. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
In our case the callback function will be called &amp;lt;tt&amp;gt;jSelectHelloworld_jform_request_id&amp;lt;/tt&amp;gt;, and this is the function we want to be called from the modal to pass the id and greeting of the selected helloworld record. Knowing this, &amp;lt;tt&amp;gt;window.processModalSelect&amp;lt;/tt&amp;gt; will set the input fields for the greeting and id, and set the visibility of the Select and Clear buttons. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
The modal knows that this is the name of the function to call because it&#039;s passed as the &amp;lt;tt&amp;gt;&amp;amp;function=jSelectHelloworld_jform_request_id&amp;lt;/tt&amp;gt; parameter within the URL of the iframe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Note also the &amp;lt;tt&amp;gt;&amp;amp;tmpl=component&amp;lt;/tt&amp;gt; parameter in the URL. This means that the component.php file within the directory of the installed template will be used, which presents an html page without the Joomla menus, etc. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Modal Display == &amp;lt;!--T:41--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
For the modal display we use the same MVC as the admin &amp;quot;helloworlds&amp;quot; functionality. Neither the controller nor model require changing, there is a small change to the view file, and there&#039;s a new layout file, which is similar to the default.php layout file, but differs in some important respects.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
In the view file, we don&#039;t display the toolbar buttons nor the sidebar to choose between Messages and Categories (and some old comments have been removed as well).&amp;lt;/translate&amp;gt;&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;
&amp;lt;tt&amp;gt;admin/views/helloworlds/view.html.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;50-55&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Display the Hello World view&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null)&lt;br /&gt;
	{&lt;br /&gt;
		// Get application&lt;br /&gt;
		$app = JFactory::getApplication();&lt;br /&gt;
		$context = &amp;quot;helloworld.list.admin.helloworld&amp;quot;;&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$this-&amp;gt;items			= $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$this-&amp;gt;pagination		= $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
		$this-&amp;gt;state			= $this-&amp;gt;get(&#039;State&#039;);&lt;br /&gt;
		$this-&amp;gt;filterForm    	= $this-&amp;gt;get(&#039;FilterForm&#039;);&lt;br /&gt;
		$this-&amp;gt;activeFilters 	= $this-&amp;gt;get(&#039;ActiveFilters&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// What Access Permissions does this user have? What can (s)he do?&lt;br /&gt;
		$this-&amp;gt;canDo = JHelperContent::getActions(&#039;com_helloworld&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;)))&lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// Set the sidebar submenu and toolbar, but not on the modal window&lt;br /&gt;
		if ($this-&amp;gt;getLayout() !== &#039;modal&#039;)&lt;br /&gt;
		{&lt;br /&gt;
			HelloWorldHelper::addSubmenu(&#039;helloworlds&#039;);&lt;br /&gt;
			$this-&amp;gt;addToolBar();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
&lt;br /&gt;
		// Set the document&lt;br /&gt;
		$this-&amp;gt;setDocument();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Add the page title and toolbar.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar()&lt;br /&gt;
	{&lt;br /&gt;
		$title = JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;);&lt;br /&gt;
&lt;br /&gt;
		if ($this-&amp;gt;pagination-&amp;gt;total)&lt;br /&gt;
		{&lt;br /&gt;
			$title .= &amp;quot;&amp;lt;span style=&#039;font-size: 0.5em; vertical-align: middle;&#039;&amp;gt;(&amp;quot; . $this-&amp;gt;pagination-&amp;gt;total . &amp;quot;)&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		JToolBarHelper::title($title, &#039;helloworld&#039;);&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.create&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::addNew(&#039;helloworld.add&#039;, &#039;JTOOLBAR_NEW&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.edit&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::editList(&#039;helloworld.edit&#039;, &#039;JTOOLBAR_EDIT&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.delete&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;, &#039;JTOOLBAR_DELETE&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.admin&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::divider();&lt;br /&gt;
			JToolBarHelper::preferences(&#039;com_helloworld&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to set up the document properties&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	protected function setDocument() &lt;br /&gt;
	{&lt;br /&gt;
		$document = JFactory::getDocument();&lt;br /&gt;
		$document-&amp;gt;setTitle(JText::_(&#039;COM_HELLOWORLD_ADMINISTRATION&#039;));&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;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
Our new modal layout file:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/modal.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/views/helloworlds/tmpl/modal.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Layout file for the admin modal display of helloworld records&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\Registry\Registry;&lt;br /&gt;
&lt;br /&gt;
JHtml::_(&#039;behavior.core&#039;);&lt;br /&gt;
JHtml::_(&#039;script&#039;, &#039;com_helloworld/admin-helloworlds-modal.js&#039;, array(&#039;version&#039; =&amp;gt; &#039;auto&#039;, &#039;relative&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
$listOrder     = $this-&amp;gt;escape($this-&amp;gt;state-&amp;gt;get(&#039;list.ordering&#039;));&lt;br /&gt;
$listDirn      = $this-&amp;gt;escape($this-&amp;gt;state-&amp;gt;get(&#039;list.direction&#039;));&lt;br /&gt;
&lt;br /&gt;
$app = JFactory::getApplication();&lt;br /&gt;
$function  = $app-&amp;gt;input-&amp;gt;getCmd(&#039;function&#039;, &#039;jSelectHelloworld&#039;);&lt;br /&gt;
$onclick   = $this-&amp;gt;escape($function);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;container-popup&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;view=helloworlds&amp;amp;layout=modal&amp;amp;tmpl=component&amp;amp;function=&#039; . $function . &#039;&amp;amp;&#039; . JSession::getFormToken() . &#039;=1&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; class=&amp;quot;form-inline&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo JLayoutHelper::render(&#039;joomla.searchtools.default&#039;, array(&#039;view&#039; =&amp;gt; $this)); ?&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;clearfix&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;table class=&amp;quot;table table-striped table-hover&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;thead&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;3%&amp;quot;&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_NUM&#039;); ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_HELLOWORLDS_NAME&#039;, &#039;greeting&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLDS_POSITION&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLDS_IMAGE&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_AUTHOR&#039;, &#039;author&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_LANGUAGE&#039;, &#039;language&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_CREATED_DATE&#039;, &#039;created&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                    &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_PUBLISHED&#039;, &#039;published&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;2%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_ID&#039;, &#039;id&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/thead&amp;gt;&lt;br /&gt;
            &amp;lt;tfoot&amp;gt;&lt;br /&gt;
                &amp;lt;tr&amp;gt;&lt;br /&gt;
                    &amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/tfoot&amp;gt;&lt;br /&gt;
            &amp;lt;tbody&amp;gt;&lt;br /&gt;
                &amp;lt;?php if (!empty($this-&amp;gt;items)) : ?&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;items as $i =&amp;gt; $row) :&lt;br /&gt;
                        $row-&amp;gt;image = new Registry;&lt;br /&gt;
                        $row-&amp;gt;image-&amp;gt;loadString($row-&amp;gt;imageinfo);&lt;br /&gt;
                        if ($row-&amp;gt;language &amp;amp;&amp;amp; JLanguageMultilang::isEnabled())&lt;br /&gt;
                        {&lt;br /&gt;
                            $tag = strlen($row-&amp;gt;language);&lt;br /&gt;
                            if ($tag == 5)&lt;br /&gt;
                            {&lt;br /&gt;
                                $lang = substr($row-&amp;gt;language, 0, 2);&lt;br /&gt;
                            }&lt;br /&gt;
                            elseif ($tag == 6)&lt;br /&gt;
                            {&lt;br /&gt;
                                $lang = substr($row-&amp;gt;language, 0, 3);&lt;br /&gt;
                            }&lt;br /&gt;
                            else {&lt;br /&gt;
                                $lang = &#039;&#039;;&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                        elseif (!JLanguageMultilang::isEnabled())&lt;br /&gt;
                        {&lt;br /&gt;
                            $lang = &#039;&#039;;&lt;br /&gt;
                        }&lt;br /&gt;
                    ?&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                            &amp;lt;td&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getRowOffset($i); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td&amp;gt;&lt;br /&gt;
                                &amp;lt;?php &lt;br /&gt;
                                $link = &#039;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;amp;id=&#039; . $row-&amp;gt;id;&lt;br /&gt;
                                $attribs = &#039;data-function=&amp;quot;&#039; . $this-&amp;gt;escape($onclick) . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-id=&amp;quot;&#039; . $row-&amp;gt;id . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-title=&amp;quot;&#039; . $this-&amp;gt;escape(addslashes($row-&amp;gt;greeting)) . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-uri=&amp;quot;&#039; . $link . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-language=&amp;quot;&#039; . $this-&amp;gt;escape($lang) . &#039;&amp;quot;&#039;&lt;br /&gt;
                                ;&lt;br /&gt;
                                ?&amp;gt;&lt;br /&gt;
                                &amp;lt;a class=&amp;quot;select-link&amp;quot; href=&amp;quot;javascript:void(0)&amp;quot; &amp;lt;?php echo $attribs; ?&amp;gt;&amp;gt;&lt;br /&gt;
                                    &amp;lt;?php echo $this-&amp;gt;escape($row-&amp;gt;greeting); ?&amp;gt;&lt;br /&gt;
                                &amp;lt;/a&amp;gt;&lt;br /&gt;
                                &amp;lt;span class=&amp;quot;small break-word&amp;quot;&amp;gt;&lt;br /&gt;
                                	&amp;lt;?php echo JText::sprintf(&#039;JGLOBAL_LIST_ALIAS&#039;, $this-&amp;gt;escape($row-&amp;gt;alias)); ?&amp;gt;&lt;br /&gt;
                                &amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;div class=&amp;quot;small&amp;quot;&amp;gt;&lt;br /&gt;
									&amp;lt;?php echo JText::_(&#039;JCATEGORY&#039;) . &#039;: &#039; . $this-&amp;gt;escape($row-&amp;gt;category_title); ?&amp;gt;&lt;br /&gt;
								&amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo &amp;quot;[&amp;quot; . $row-&amp;gt;latitude . &amp;quot;, &amp;quot; . $row-&amp;gt;longitude . &amp;quot;]&amp;quot;; ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php&lt;br /&gt;
                                    $caption = $row-&amp;gt;image-&amp;gt;get(&#039;caption&#039;) ? : &#039;&#039; ;&lt;br /&gt;
                                    $src = JURI::root() . ($row-&amp;gt;image-&amp;gt;get(&#039;image&#039;) ? : &#039;&#039; );&lt;br /&gt;
                                    $html = &#039;&amp;lt;p class=&amp;quot;hasTooltip&amp;quot; style=&amp;quot;display: inline-block&amp;quot; data-html=&amp;quot;true&amp;quot; data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;&amp;lt;img width=\&#039;100px\&#039; height=\&#039;100px\&#039; src=\&#039;%s\&#039;&amp;gt;&amp;quot;&amp;gt;%s&amp;lt;/p&amp;gt;&#039;;&lt;br /&gt;
                                    echo sprintf($html, $src, $caption);  ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo $row-&amp;gt;author; ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo JLayoutHelper::render(&#039;joomla.content.language&#039;, $row); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo substr($row-&amp;gt;created, 0, 10); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo JHtml::_(&#039;jgrid.published&#039;, $row-&amp;gt;published, $i, &#039;helloworlds.&#039;, true, &#039;cb&#039;); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo $row-&amp;gt;id; ?&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;?php endif; ?&amp;gt;&lt;br /&gt;
            &amp;lt;/tbody&amp;gt;&lt;br /&gt;
        &amp;lt;/table&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::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;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;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Note that there are some important differences from the default.php layout file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
# We get the &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt; parameter which is embedded in the iframe URL as a query parameter, and we use this in the URL target of the &amp;lt;tt&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/tt&amp;gt; element and in the &amp;lt;tt&amp;gt;data-function&amp;lt;/tt&amp;gt; attribute of the each greeting value. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
# There are several other data attributes associated with each greeting value; these will be used to pass this information to the parent window via the jSelectHelloworld_jform_request_id function call. Also, each greeting has a CSS class of &amp;quot;select-link&amp;quot;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
# We need to set the target URL of the &amp;lt;tt&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/tt&amp;gt; to be the same as the URL of the iframe. This is because whenever the administrator uses the search / filter tools the form sends an HTTP request to that URL, and we need to ensure it&#039;s the same data that gets presented.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Also, the checkboxes have been removed, as they are now irrelevant. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
In addition, we need a small javascript file which basically sets an onclick listener on each of the greetings (identified through having the class &amp;quot;select-link&amp;quot;), and calls the required function when triggered. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;media/js/admin-helloworlds-modal.js&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;media/js/admin-helloworlds-modal.js&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
	&amp;quot;use strict&amp;quot;;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Javascript to set up onclick listeners on the helloworld greetings&lt;br /&gt;
	 * When a greeting is clicked the listener invokes the function in the parent window&lt;br /&gt;
	 * which is given by the data-function attribute of the helloworld greeting html element&lt;br /&gt;
	 * In this way the identity of the helloworld record selected in the modal is passed to the field in the parent window&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
	document.addEventListener(&#039;DOMContentLoaded&#039;, function(){&lt;br /&gt;
		&lt;br /&gt;
		var elements = document.querySelectorAll(&#039;.select-link&#039;);&lt;br /&gt;
&lt;br /&gt;
		for(var i = 0, l = elements.length; l&amp;gt;i; i++) {&lt;br /&gt;
			&lt;br /&gt;
			elements[i].addEventListener(&#039;click&#039;, function (event) {&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				var functionName = event.target.getAttribute(&#039;data-function&#039;);&lt;br /&gt;
				window.parent[functionName](event.target.getAttribute(&#039;data-id&#039;), event.target.getAttribute(&#039;data-title&#039;), null, null, event.target.getAttribute(&#039;data-uri&#039;), event.target.getAttribute(&#039;data-language&#039;), null);&lt;br /&gt;
			})&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updated Language Strings == &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/language/en-GB/en-GB.com_helloworld.ini&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/language/en-GB/en-GB.com_helloworld.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot; highlight=&amp;quot;86-89&amp;quot;&amp;gt;&lt;br /&gt;
; Joomla! Project&lt;br /&gt;
; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.&lt;br /&gt;
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php&lt;br /&gt;
; Note : All ini files need to be saved as UTF-8&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION=&amp;quot;HelloWorld - Administration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION_CATEGORIES=&amp;quot;HelloWorld - Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_NUM=&amp;quot;#&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_FILTER=&amp;quot;Filters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR=&amp;quot;Author&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LANGUAGE=&amp;quot;Language&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_DATE=&amp;quot;Created&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED=&amp;quot;Published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_NAME=&amp;quot;Name&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_POSITION=&amp;quot;Position&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_IMAGE=&amp;quot;Image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CREATING=&amp;quot;HelloWorld - Creating&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_DETAILS=&amp;quot;Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_EDITING=&amp;quot;HelloWorld - Editing&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ERROR_UNACCEPTABLE=&amp;quot;Some values are unacceptable&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC=&amp;quot;The category the messages belongs to&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL=&amp;quot;Category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC=&amp;quot;This message will be displayed&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL=&amp;quot;Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL=&amp;quot;Show category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC=&amp;quot;If set to Show, the title of the message&amp;amp;rsquo;s category will show.&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LATITUDE_LABEL=&amp;quot;Latitude&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LATITUDE_DESC=&amp;quot;Enter the position latitude, between -90 and +90 degrees&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LONGITUDE_LABEL=&amp;quot;Longitude&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LONGITUDE_DESC=&amp;quot;Enter the position longitude, between -180 and +180 degrees&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LANGUAGE_DESC=&amp;quot;Select the appropriate language&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_IMAGE_FIELDS=&amp;quot;Image details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_LABEL=&amp;quot;Select image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_DESC=&amp;quot;Select an image from the library, or upload a new one&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_LABEL=&amp;quot;Alt text&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_DESC=&amp;quot;Alternative text (if image cannot be displayed)&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_LABEL=&amp;quot;Caption&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_DESC=&amp;quot;Provide a caption for the image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT=&amp;quot;HelloWorld manager: Edit Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW=&amp;quot;HelloWorld manager: New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLDS=&amp;quot;HelloWorld manager&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_EDIT_HELLOWORLD=&amp;quot;Edit message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_1=&amp;quot;One message deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_MORE=&amp;quot;%d messages deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_PUBLISHED=&amp;quot;%d message(s) published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_UNPUBLISHED=&amp;quot;%d message(s) unpublished&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_DESC=&amp;quot;Add Hello World Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_MESSAGES=&amp;quot;Messages&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_CATEGORIES=&amp;quot;Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIGURATION=&amp;quot;HelloWorld Configuration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_LABEL=&amp;quot;Messages settings&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_DESC=&amp;quot;Settings that will be applied to all messages by default&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_LABEL=&amp;quot;Captcha&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_DESC=&amp;quot;Select Captcha to use on front end form&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_USER_TO_EMAIL_LABEL=&amp;quot;User to email&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_USER_TO_EMAIL_DESC=&amp;quot;Select user to email when a new message is entered on front end&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_FIELDSET_RULES=&amp;quot;Message Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_FIELD_RULES_LABEL=&amp;quot;Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ACCESS_DELETE_DESC=&amp;quot;Is this group allowed to edit this message?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ACCESS_DELETE_DESC=&amp;quot;Is this group allowed to delete this message?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_NEW_MESSAGE=&amp;quot;New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_EDIT_MESSAGE=&amp;quot;Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_PARAMS=&amp;quot;Parameters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_PERMISSIONS=&amp;quot;Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_IMAGE=&amp;quot;Image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_DETAILS=&amp;quot;Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_PARAMS=&amp;quot;Message Parameters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_PERMISSIONS=&amp;quot;Message Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_IMAGE=&amp;quot;Image info&amp;quot;&lt;br /&gt;
; Column ordering in the Helloworlds view&lt;br /&gt;
COM_HELLOWORLD_ORDERING_ASC=&amp;quot;Greeting ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ORDERING_DESC=&amp;quot;Greeting descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR_ASC=&amp;quot;Author ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR_DESC=&amp;quot;Author descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_ASC=&amp;quot;Creation date ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_DESC=&amp;quot;Creation date descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED_ASC=&amp;quot;Unpublished first&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED_DESC=&amp;quot;Published first&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LANGUAGE_ASC=&amp;quot;Language ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LANGUAGE_DESC=&amp;quot;Language descending&amp;quot;&lt;br /&gt;
; Helloworld menuitem - selecting a greeting via modal&lt;br /&gt;
COM_HELLOWORLD_MENUITEM_SELECT_MODAL_TITLE=&amp;quot;Select greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MENUITEM_SELECT_HELLOWORLD=&amp;quot;Select&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MENUITEM_SELECT_BUTTON_TOOLTIP=&amp;quot;Select a helloworld greeting&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Packaging the Component == &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
Contents of your code directory. Each file link below takes you to the step in the tutorial which has the latest version of that source code file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an install-uninstall-update script file#script.php|script.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/router.php|site/router.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding AJAX#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/controllers/helloworld.php|site/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Map#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding AJAX#site/views/helloworld/view.json.php|site/views/helloworld/view.json.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding AJAX#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/form/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/views/form/view.html.php|site/views/form/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/form/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/views/form/tmpl/edit.php|site/views/form/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/views/form/tmpl/edit.xml|site/views/form/tmpl/edit.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/category/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/views/category/view.html.php|site/views/category/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/category/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/views/category/tmpl/default.php|site/views/category/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#site/views/category/tmpl/default.xml|site/views/category/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/models/form.php|site/models/form.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/models/category.php|site/models/category.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/models/forms/add-form.xml|site/models/forms/add-form.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_alias#site/models/forms/filter_category.xml|site/models/forms/filter_category.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Using the language filter facility#site/language/en-GB/en-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/helpers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/helpers/route.php|site/helpers/route.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/helpers/category.php|site/helpers/category.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/config.xml|admin/config.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/access.xml|admin/access.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/helpers/helloworld.php|admin/helpers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/helpers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/sql/updates/mysql/0.0.12.sql|admin/sql/updates/mysql/0.0.12.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/sql/updates/mysql/0.0.13.sql|admin/sql/updates/mysql/0.0.13.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/sql/updates/mysql/0.0.14.sql|admin/sql/updates/mysql/0.0.14.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#admin/sql/updates/mysql/0.0.16.sql|admin/sql/updates/mysql/0.0.16.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/sql/updates/mysql/0.0.17.sql|admin/sql/updates/mysql/0.0.17.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Map#admin/sql/updates/mysql/0.0.18.sql|admin/sql/updates/mysql/0.0.18.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/sql/updates/mysql/0.0.20.sql|admin/sql/updates/mysql/0.0.20.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/sql/updates/mysql/0.0.21.sql|admin/sql/updates/mysql/0.0.21.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/modal/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#admin/models/fields/modal/helloworld.php|admin/models/fields/modal/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/models/helloworld.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/models/forms/filter_helloworlds.xml|admin/models/forms/filter_helloworlds.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/models/forms/helloworld.js|admin/models/forms/helloworld.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/models/rules/greeting.php|admin/models/rules/greeting.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/rules/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/views/helloworld/submitbutton.js|admin/views/helloworld/submitbutton.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#admin/views/helloworlds/tmpl/modal.php|admin/views/helloworlds/tmpl/modal.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_alias#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding a Modal#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding an alias#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/images/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-16x16.png]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-48x48.png]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/js/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#media/js/openstreetmap.js|media/js/openstreetmap.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#media/js/admin-helloworlds-modal.js|media/js/admin-helloworlds-modal.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/css/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Map#index.html|media/css/openstreetmap.css]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;helloworld.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13&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;3.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;COM_HELLOWORLD&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2018&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.22&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Runs on install/uninstall/update; New in 2.5 --&amp;gt;&lt;br /&gt;
	&amp;lt;scriptfile&amp;gt;script.php&amp;lt;/scriptfile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;router.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&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;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;site/language&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB/en-GB.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;fr-FR&amp;quot;&amp;gt;fr-FR/fr-FR.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;/languages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;media destination=&amp;quot;com_helloworld&amp;quot; folder=&amp;quot;media&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;js&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;css&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/media&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039; img=&amp;quot;../media/com_helloworld/images/tux-16x16.png&amp;quot;&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;config.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;access.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- helpers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;admin/language&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;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;en-GB/en-GB.com_helloworld.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;fr-FR&amp;quot;&amp;gt;fr-FR/fr-FR.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;fr-FR&amp;quot;&amp;gt;fr-FR/fr-FR.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;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Contributors == &amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
*[[User:Robbiej|Robbie Jackson]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Using the language filter facility|&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Prev: Using the language filter facility&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding Associations|&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; Next: Adding Associations&amp;lt;/translate&amp;gt;|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.1{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.2{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.3{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.4{{#translation:}}]]&lt;br /&gt;
[[Category:Beginner Development{{#translation:}}]]&lt;br /&gt;
[[Category:Component Development{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials in a Series{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Es ka</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_Modal/de&amp;diff=647950</id>
		<title>J3.x:Developing an MVC Component/Adding a Modal/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_Modal/de&amp;diff=647950"/>
		<updated>2020-02-20T09:06:55Z</updated>

		<summary type="html">&lt;p&gt;Es ka: fixed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/de}}&lt;br /&gt;
Dieses Tutorial ist ein Teil der [[S:MyLanguage/J3.2:Developing an MVC Component | Entwicklung einer MVC Komponente für Joomla! 3.2]] Artikel-Serie. Es ist sehr sinnvoll, die vorherigen Teile des Tutorials zu lesen, bevor du hier fortfährst.&lt;br /&gt;
In diesem Schritt fügen wir ein Modal hinzu, ein Begleitvideo ist unter [https://youtu.be/5qJ6qT9dpXQ Ein Modal hinzufügen] verfügbar.&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=5qJ6qT9dpXQ}}&lt;br /&gt;
&lt;br /&gt;
==Einführung==&lt;br /&gt;
Modale, oder modale Fenster, sind ähnlich wie die Popup-Fenster, die an verschiedenen Stellen in Joomla! erscheinen. Beispiele sind:&lt;br /&gt;
* Wenn du als Administrator ein neues Menüelement erstellst und als Menüelementtyp Beiträge / Einzelartikel auswählst, wird beim Klicken auf den Artikel ein Popup angezeigt, in dem die Details der verfügbaren Artikel angezeigt werden und du einen auswählen kannst.&lt;br /&gt;
* Wenn du das Modul Administrator - Mehrsprachigkeitsstatus aktiviert hast, um deine Website im vorherigen Schritt mehrsprachig zu gestalten, und wenn du auf die Schaltfläche &amp;quot;Mehrsprachiger Status&amp;quot; links unten auf jeder Administratorseite klickst, erscheint ein Popup-Fenster, welches den Status der Mehrsprachigkeitsfunktion auf deiner Website anzeigt.&lt;br /&gt;
&lt;br /&gt;
Natürlich sind diese Modals keine wirklichen Browser-Popup-Fenster - Benutzer deaktivieren diese häufig - sie verwenden stattdessen CSS und Javascript, um das Erscheinen von Pop-Ups zu imitieren. Joomla! verwendet derzeit das Framework [https://getbootstrap.com/docs/4.0/components/modal/ Bootstrap Modal]. Die HTML-Elemente, die das Modal einschließen, befinden sich bereits im HTML-Code der Seite, sind jedoch verborgen. Wenn Sie auf eine entsprechende Schaltfläche klicken (z. B. die Schaltfläche &amp;quot;Auswählen&amp;quot;, um einen Beitrag wie im ersten Beispiel oben auszuwählen), führt der Javascript-Code nach einem Klick auf die Schaltfläche Folgendes aus:&lt;br /&gt;
* die versteckten HTML-Elemente des Modals werden sichtbar gemacht&lt;br /&gt;
* ein neues div-Element wird erstellt, welches das gesamte Browserfenster abdeckt; Dieser Hintergrund ist schwarz eingefärbt und hat teilweise Deckkraft, sodass das es so scheint, als wären die Elemente hinter dem Modal ausgegraut.&lt;br /&gt;
* in der CSS-Datei wird der Z-Index so definiert, dass das Modal über dem Hintergrund erscheint.&lt;br /&gt;
&lt;br /&gt;
Wenn du das Modal schließt, indem du z. B. einen Artikel auswählst oder auf die Schaltfläche &amp;quot;Schließen&amp;quot; klickst, werden die HTML-Elemente des Modals erneut ausgeblendet, das Hintergrund-Div entfernt und jedes von dir ausgewählte Element durch Javascript an das entsprechende Feld im Hauptformular weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
Jedes Modal besteht aus drei Teilen:&lt;br /&gt;
* eine modale Kopfzeile oben, normalerweise mit dem Titel und der Schaltfläche X, um das Modal zu schließen,&lt;br /&gt;
* ein Modalkörper, in dem die Hauptinformation erscheint, und&lt;br /&gt;
* eine Modal-Fußzeile, mit Schaltflächen wie, je nach Kontext, Schließen, Speichern usw.&lt;br /&gt;
&lt;br /&gt;
Allgemein gesagt, repräsentiert den Modalkörper ein Inlineframe-Element, welches eine eingebettete HTML-Seite innerhalb der Gesamtseite darstellt. HTTP-Anforderungen können erstellt werden, um anzuzeigende Daten im iframe Daten abzurufen, zu filtern, zu sortieren usw.&lt;br /&gt;
&lt;br /&gt;
==  Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
Derzeit haben wir in unserer hallo Welt-Komponente die Möglichkeit, einen neuen Menüpunkt mit einem Menüelementtyp &amp;quot;Hallo Welt&amp;quot; zu erstellen, der eine einzige hallo Welt-Nachricht auf unserer Website anzeigt. Bei der Auswahl der anzuzeigenden Nachricht haben wir jedoch nur ein einfaches Listenfeld, und wir müssen die Liste der Oberpunkte nach unten scrollen, um das Geeignete auszuwählen. &lt;br /&gt;
&lt;br /&gt;
In diesem Schritt ändern wir die Benutzeroberfläche so, dass dem Administrator bei Auswahl der hallo Welt-Nachricht für einen neuen Menüpunkt ein Modal mit allen Details der hallo Welt-Datensätze angezeigt wird, ähnlich dem, was angezeigt wird, wenn der Administrator auf Komponenten / Hallo Welt klickt. Auf diese Weise wird dem Administrator eine viel schönere Benutzeroberfläche mit Sortier-, Such- und Filterfunktionen angezeigt. &lt;br /&gt;
&lt;br /&gt;
== Vorgehensweise == &lt;br /&gt;
&lt;br /&gt;
Die Definition dessen, was angezeigt wird, wenn ein Administrator einen Menüpunkt vom Typ Hallo Welt auswählt, ist in der XML-Datei der Seite Hallo Welt-Layoutdatei geregelt, z. B. Seite/Ansichten/hallowelt/tmpl/default.xml. Wir müssen die Felddefinition in dieser Datei zu einem benutzerdefinierten Feldtyp ändern, den wir modal_helloworld nennen.&lt;br /&gt;
&lt;br /&gt;
Wir müssen Joomla! den Code für unser benutzerdefiniertes Feld zur Verfügung stellen, und wir stellen eine neue Datei bereit, um die HTML-Datei zu generieren, um unser benutzerdefiniertes Eingabefeld anzuzeigen. &lt;br /&gt;
&lt;br /&gt;
Schließlich müssen wir die Anzeige der hallo Welt-Datensätze in unserem Modal überdenken. Wir werden eine Anzeige verwenden, die derjenigen ähnelt, die dem Administrator angezeigt wird, wenn er zu Komponenten / Hallo Welt navigiert, wir werden also unsere Hallo Welt-Ansicht wiederverwenden, erstellen jedoch eine neue Layoutdatei anstelle unserer derzeitigen Admindatei Ansichten/hallowelt/tmpl/default.php. &lt;br /&gt;
&lt;br /&gt;
== Definition eines hallo welt Menüpunkts ==&lt;br /&gt;
&lt;br /&gt;
Wir ändern das benutzerdefinierte Feld zur Auswahl des anzuzeigenden Hallo Welt-Datensatzes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/helloworld/tmpl/default.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&#039;&#039;&#039;site/views/helloworld/tmpl/default.xml&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13-14&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metadata&amp;gt;&lt;br /&gt;
	&amp;lt;layout title=&amp;quot;COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;message&amp;gt;COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC&amp;lt;/message&amp;gt;&lt;br /&gt;
	&amp;lt;/layout&amp;gt;&lt;br /&gt;
	&amp;lt;fields&lt;br /&gt;
			name=&amp;quot;request&amp;quot;&lt;br /&gt;
			addfieldpath=&amp;quot;/administrator/components/com_helloworld/models/fields&amp;quot;&lt;br /&gt;
			&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset name=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
					name=&amp;quot;id&amp;quot;&lt;br /&gt;
					type=&amp;quot;modal_helloworld&amp;quot;&lt;br /&gt;
					required=&amp;quot;true&amp;quot;&lt;br /&gt;
					label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC&amp;quot;&lt;br /&gt;
					/&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
&amp;lt;/metadata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felddefinition == &lt;br /&gt;
&lt;br /&gt;
Die Felddefinition für unser neues benutzerdefiniertes Feld wird im Verzeichnis admin/models/fields gespeichert. Da der Feldtyp modal_helloworld (mit einem Unterstrich dazwischen) heißt, sucht Joomla! in einem /Modal-Unterverzeichnis nach einer Datei hallowelt.php. Daher ist unser neues benutzerdefiniertes Feld definiert in &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/fields/modal/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;&#039;&#039;&#039;admin/models/fields/modal/helloworld.php&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
defined(&#039;JPATH_BASE&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Supports a modal for selecting a helloworld record&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
class JFormFieldModal_Helloworld extends JFormField&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the html for the input field.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  string  The field input html.&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// Load language&lt;br /&gt;
		JFactory::getLanguage()-&amp;gt;load(&#039;com_helloworld&#039;, JPATH_ADMINISTRATOR);&lt;br /&gt;
&lt;br /&gt;
		// $this-&amp;gt;value is set if there&#039;s a default id specified in the xml file&lt;br /&gt;
		$value = (int) $this-&amp;gt;value &amp;gt; 0 ? (int) $this-&amp;gt;value : &#039;&#039;;&lt;br /&gt;
        &lt;br /&gt;
		// $this-&amp;gt;id will be jform_request_xxx where xxx is the name of the field in the xml file&lt;br /&gt;
		$modalId = &#039;Helloworld_&#039; . $this-&amp;gt;id;&lt;br /&gt;
&lt;br /&gt;
		// Add the modal field script to the document head.&lt;br /&gt;
		JHtml::_(&#039;jquery.framework&#039;);&lt;br /&gt;
		JHtml::_(&#039;script&#039;, &#039;system/modal-fields.js&#039;, array(&#039;version&#039; =&amp;gt; &#039;auto&#039;, &#039;relative&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
		// our callback function from the modal to the main window:&lt;br /&gt;
		JFactory::getDocument()-&amp;gt;addScriptDeclaration(&amp;quot;&lt;br /&gt;
			function jSelectHelloworld_&amp;quot; . $this-&amp;gt;id . &amp;quot;(id, title, catid, object, url, language) {&lt;br /&gt;
				window.processModalSelect(&#039;Helloworld&#039;, &#039;&amp;quot; . $this-&amp;gt;id . &amp;quot;&#039;, id, title, catid, object, url, language);&lt;br /&gt;
			}&lt;br /&gt;
			&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// if a default id is set, then get the corresponding greeting to display it&lt;br /&gt;
		if ($value)&lt;br /&gt;
		{&lt;br /&gt;
			$db    = JFactory::getDbo();&lt;br /&gt;
			$query = $db-&amp;gt;getQuery(true)&lt;br /&gt;
				-&amp;gt;select($db-&amp;gt;quoteName(&#039;greeting&#039;))&lt;br /&gt;
				-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;))&lt;br /&gt;
				-&amp;gt;where($db-&amp;gt;quoteName(&#039;id&#039;) . &#039; = &#039; . (int) $value);&lt;br /&gt;
			$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
			try&lt;br /&gt;
			{&lt;br /&gt;
				$title = $db-&amp;gt;loadResult();&lt;br /&gt;
			}&lt;br /&gt;
			catch (RuntimeException $e)&lt;br /&gt;
			{&lt;br /&gt;
				JError::raiseWarning(500, $e-&amp;gt;getMessage());&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// display the default greeting or &amp;quot;Select&amp;quot; if no default specified&lt;br /&gt;
		$title = empty($title) ? JText::_(&#039;COM_HELLOWORLD_MENUITEM_SELECT_HELLOWORLD&#039;) : htmlspecialchars($title, ENT_QUOTES, &#039;UTF-8&#039;);&lt;br /&gt;
		$html  = &#039;&amp;lt;span class=&amp;quot;input-append&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		$html .= &#039;&amp;lt;input class=&amp;quot;input-medium&amp;quot; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_name&amp;quot; type=&amp;quot;text&amp;quot; value=&amp;quot;&#039; . $title . &#039;&amp;quot; disabled=&amp;quot;disabled&amp;quot; size=&amp;quot;35&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// html for the Select button&lt;br /&gt;
		$html .= &#039;&amp;lt;a&#039;&lt;br /&gt;
			. &#039; class=&amp;quot;btn hasTooltip&#039; . ($value ? &#039; hidden&#039; : &#039;&#039;) . &#039;&amp;quot;&#039;&lt;br /&gt;
			. &#039; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_select&amp;quot;&#039;&lt;br /&gt;
			. &#039; data-toggle=&amp;quot;modal&amp;quot;&#039;&lt;br /&gt;
			. &#039; role=&amp;quot;button&amp;quot;&#039;&lt;br /&gt;
			. &#039; href=&amp;quot;#ModalSelect&#039; . $modalId . &#039;&amp;quot;&#039;&lt;br /&gt;
			. &#039; title=&amp;quot;&#039; . JHtml::tooltipText(&#039;COM_HELLOWORLD_MENUITEM_SELECT_BUTTON_TOOLTIP&#039;) . &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			. &#039;&amp;lt;span class=&amp;quot;icon-file&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &#039; . JText::_(&#039;JSELECT&#039;)&lt;br /&gt;
			. &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// html for the Clear button&lt;br /&gt;
		$html .= &#039;&amp;lt;a&#039;&lt;br /&gt;
			. &#039; class=&amp;quot;btn&#039; . ($value ? &#039;&#039; : &#039; hidden&#039;) . &#039;&amp;quot;&#039;&lt;br /&gt;
			. &#039; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_clear&amp;quot;&#039;&lt;br /&gt;
			. &#039; href=&amp;quot;#&amp;quot;&#039;&lt;br /&gt;
			. &#039; onclick=&amp;quot;window.processModalParent(\&#039;&#039; . $this-&amp;gt;id . &#039;\&#039;); return false;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			. &#039;&amp;lt;span class=&amp;quot;icon-remove&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039; . JText::_(&#039;JCLEAR&#039;)&lt;br /&gt;
			. &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		$html .= &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// url for the iframe&lt;br /&gt;
		$linkHelloworlds = &#039;index.php?option=com_helloworld&amp;amp;amp;view=helloworlds&amp;amp;amp;layout=modal&amp;amp;amp;tmpl=component&amp;amp;amp;&#039; . JSession::getFormToken() . &#039;=1&#039;;&lt;br /&gt;
		$urlSelect = $linkHelloworlds . &#039;&amp;amp;amp;function=jSelectHelloworld_&#039; . $this-&amp;gt;id;&lt;br /&gt;
        &lt;br /&gt;
		// title to go in the modal header&lt;br /&gt;
		$modalTitle    = JText::_(&#039;COM_HELLOWORLD_MENUITEM_SELECT_MODAL_TITLE&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// html to set up the modal iframe&lt;br /&gt;
		$html .= JHtml::_(&lt;br /&gt;
			&#039;bootstrap.renderModal&#039;,&lt;br /&gt;
			&#039;ModalSelect&#039; . $modalId,&lt;br /&gt;
			array(&lt;br /&gt;
				&#039;title&#039;       =&amp;gt; $modalTitle,&lt;br /&gt;
				&#039;url&#039;         =&amp;gt; $urlSelect,&lt;br /&gt;
				&#039;height&#039;      =&amp;gt; &#039;400px&#039;,&lt;br /&gt;
				&#039;width&#039;       =&amp;gt; &#039;800px&#039;,&lt;br /&gt;
				&#039;bodyHeight&#039;  =&amp;gt; &#039;70&#039;,&lt;br /&gt;
				&#039;modalWidth&#039;  =&amp;gt; &#039;80&#039;,&lt;br /&gt;
				&#039;footer&#039;      =&amp;gt; &#039;&amp;lt;a role=&amp;quot;button&amp;quot; class=&amp;quot;btn&amp;quot; data-dismiss=&amp;quot;modal&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&#039; . JText::_(&#039;JLIB_HTML_BEHAVIOR_CLOSE&#039;) . &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
			)&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// class=&#039;required&#039; for client side validation.&lt;br /&gt;
		$class = $this-&amp;gt;required ? &#039; class=&amp;quot;required modal-value&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// hidden input field to store the helloworld record id&lt;br /&gt;
		$html .= &#039;&amp;lt;input type=&amp;quot;hidden&amp;quot; id=&amp;quot;&#039; . $this-&amp;gt;id . &#039;_id&amp;quot; &#039; . $class &lt;br /&gt;
			. &#039; data-required=&amp;quot;&#039; . (int) $this-&amp;gt;required . &#039;&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name&lt;br /&gt;
			. &#039;&amp;quot; data-text=&amp;quot;&#039; . htmlspecialchars(JText::_(&#039;COM_HELLOWORLD_MENUITEM_SELECT_HELLOWORLD&#039;, true), ENT_COMPAT, &#039;UTF-8&#039;) &lt;br /&gt;
			. &#039;&amp;quot; value=&amp;quot;&#039; . $value . &#039;&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the html for the label field.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  string  The field label html.&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getLabel()&lt;br /&gt;
	{&lt;br /&gt;
		return str_replace($this-&amp;gt;id, $this-&amp;gt;id . &#039;_id&#039;, parent::getLabel());&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;
Wenn die Felddefinitionsklasse JFormField erweitert, erwartet Joomla!, dass zwei Methoden in der Klasse vorhanden sind: getInput(), das den HTML-Code für die Eingabefeldelemente zurückgeben soll, und GetLabel(), der den HTML-Code für das Label zurückgeben soll. &lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Joomla!-Kernkomponenten, die Modalfelder verwenden, damit der Administrator Elemente auswählen kann, einschließlich com_content und com_contact. Diese Komponenten haben ähnliche Felddefinitionen, und die obige Datei ist eine zurechtgestutzte Version dieser Äquivalente, die lediglich diejenige Funktionalität unterstützt, die wir für diesen Lernschritt benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt eine Reihe von wichtigen HTML-Eingabeelementen, die von der getInput()-Methode oben zurückgegeben werden.&lt;br /&gt;
# Das Eingabefeld, in dem der aktuell ausgewählte Überbegriff angezeigt wird, oder der Text &amp;quot;Auswählen&amp;quot;, wenn keiner ausgewählt wurde&lt;br /&gt;
# Die Auswahltaste - diese erscheint, wenn keine Begrüßung ausgewählt wurde. Beachte das Attribut data-toggle=&amp;quot;modal&amp;quot;, das darauf hinweist, dass durch Klicken auf diese Schaltfläche die Anzeige des Modals ausgelöst wird.&lt;br /&gt;
# Die Schaltfläche &amp;quot;Löschen&amp;quot; - sie erscheint, wenn ein Oberbegriff ausgewählt wurde. Mit einem Klick darauf wird eine Javascript-Funktion innerhalb des Codes system/modal-fields.js ausgeführt, die den ausgewählten Oberbegriff durch den Text &amp;quot;Auswahl&amp;quot; ersetzt, die Schaltfläche Auswahl sichtbar macht und die Schaltfläche Löschen ausblendet&lt;br /&gt;
# Die Modalelemente - diese werden über Abschnitte des Bootstrap-HTML- und JavaScript-Codes ausgegeben. Wenn der Modal erscheint, wird das Inline-Frame erstellt und durch ein HTTP-GET an die URL in &amp;lt;tt&amp;gt;$urlSelect&amp;lt;/tt&amp;gt; aufgefüllt.&lt;br /&gt;
# Ein ausgeblendetes Feld, in dem die ID des ausgewählten hallo Welt-Datensatzes gespeichert und welches verwendet werden wird, um es in den HTTP POST Parametern weiterzugeben, wenn das Formular übertragen wird. &lt;br /&gt;
&lt;br /&gt;
In unserem Fall heißt die Rückruffunktion &amp;lt;tt&amp;gt;jSelectHelloworld_jform_request_id&amp;lt;/tt&amp;gt;, und das ist die Funktion, die aus dem Modal aufgerufen werden soll, um die ID und die Grußformel des ausgewählten hallo Welt-Datensatzes zu übergeben. Ist das bekannt, wird &amp;lt;tt&amp;gt;window.processModalSelect&amp;lt;/tt&amp;gt; die Eingabefelder für Grußformel, die ID und die Sichtbarkeit der Schaltflächen Auswählen und Löschen festlegen. &lt;br /&gt;
&lt;br /&gt;
Der Modal weiß, dass dies der Name der aufzurufenden Funktion ist, da er als &amp;lt;tt&amp;gt;&amp;amp;function=jSelectHelloworld_jform_request_id&amp;lt;/tt&amp;gt; Parameter innerhalb der URL des Iframes übergeben wurde.&lt;br /&gt;
&lt;br /&gt;
Beachte auch den Parameter &amp;lt;tt&amp;gt;&amp;amp;tmpl=component&amp;lt;/tt&amp;gt; in der URL. Dieser bedeutet, dass die Datei component.php im Verzeichnis der installierten Vorlage verwendet werden wird, die eine HTML-Seite ohne Joomla!-Menüs usw., darstellt. &lt;br /&gt;
&lt;br /&gt;
== Modalanzeige == &lt;br /&gt;
&lt;br /&gt;
Für die Modalanzeige verwenden wir dieselbe MVC wie die Admin &amp;quot;Hallo Welt&amp;quot; Funktionsweise. Weder der Controller noch das Modell müssen geändert werden, es gibt eine kleine Änderung an der Ansichtsdatei und es gibt eine neue Layoutdatei, die der Layoutdatei default.php ähnelt, sich aber in einigen wichtigen Punkten unterscheidet.&lt;br /&gt;
&lt;br /&gt;
In der Ansichtsdatei werden weder die Symbolleistenschaltflächen noch die Seitenleiste angezeigt, um zwischen Nachrichten und Kategorien zu wählen (und einige alte Kommentare wurden ebenfalls entfernt).&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;
&amp;lt;tt&amp;gt;admin/views/helloworlds/view.html.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;50-55&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Display the Hello World view&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null)&lt;br /&gt;
	{&lt;br /&gt;
		// Get application&lt;br /&gt;
		$app = JFactory::getApplication();&lt;br /&gt;
		$context = &amp;quot;helloworld.list.admin.helloworld&amp;quot;;&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$this-&amp;gt;items			= $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$this-&amp;gt;pagination		= $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
		$this-&amp;gt;state			= $this-&amp;gt;get(&#039;State&#039;);&lt;br /&gt;
		$this-&amp;gt;filterForm    	= $this-&amp;gt;get(&#039;FilterForm&#039;);&lt;br /&gt;
		$this-&amp;gt;activeFilters 	= $this-&amp;gt;get(&#039;ActiveFilters&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// What Access Permissions does this user have? What can (s)he do?&lt;br /&gt;
		$this-&amp;gt;canDo = JHelperContent::getActions(&#039;com_helloworld&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;)))&lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// Set the sidebar submenu and toolbar, but not on the modal window&lt;br /&gt;
		if ($this-&amp;gt;getLayout() !== &#039;modal&#039;)&lt;br /&gt;
		{&lt;br /&gt;
			HelloWorldHelper::addSubmenu(&#039;helloworlds&#039;);&lt;br /&gt;
			$this-&amp;gt;addToolBar();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
&lt;br /&gt;
		// Set the document&lt;br /&gt;
		$this-&amp;gt;setDocument();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Add the page title and toolbar.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  void&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar()&lt;br /&gt;
	{&lt;br /&gt;
		$title = JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;);&lt;br /&gt;
&lt;br /&gt;
		if ($this-&amp;gt;pagination-&amp;gt;total)&lt;br /&gt;
		{&lt;br /&gt;
			$title .= &amp;quot;&amp;lt;span style=&#039;font-size: 0.5em; vertical-align: middle;&#039;&amp;gt;(&amp;quot; . $this-&amp;gt;pagination-&amp;gt;total . &amp;quot;)&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		JToolBarHelper::title($title, &#039;helloworld&#039;);&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.create&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::addNew(&#039;helloworld.add&#039;, &#039;JTOOLBAR_NEW&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.edit&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::editList(&#039;helloworld.edit&#039;, &#039;JTOOLBAR_EDIT&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.delete&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;, &#039;JTOOLBAR_DELETE&#039;);&lt;br /&gt;
		}&lt;br /&gt;
		if ($this-&amp;gt;canDo-&amp;gt;get(&#039;core.admin&#039;)) &lt;br /&gt;
		{&lt;br /&gt;
			JToolBarHelper::divider();&lt;br /&gt;
			JToolBarHelper::preferences(&#039;com_helloworld&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to set up the document properties&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	protected function setDocument() &lt;br /&gt;
	{&lt;br /&gt;
		$document = JFactory::getDocument();&lt;br /&gt;
		$document-&amp;gt;setTitle(JText::_(&#039;COM_HELLOWORLD_ADMINISTRATION&#039;));&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;
Unsere neue Modallayoutdatei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/modal.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/views/helloworlds/tmpl/modal.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Layout file for the admin modal display of helloworld records&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\Registry\Registry;&lt;br /&gt;
&lt;br /&gt;
JHtml::_(&#039;behavior.core&#039;);&lt;br /&gt;
JHtml::_(&#039;script&#039;, &#039;com_helloworld/admin-helloworlds-modal.js&#039;, array(&#039;version&#039; =&amp;gt; &#039;auto&#039;, &#039;relative&#039; =&amp;gt; true));&lt;br /&gt;
&lt;br /&gt;
$listOrder     = $this-&amp;gt;escape($this-&amp;gt;state-&amp;gt;get(&#039;list.ordering&#039;));&lt;br /&gt;
$listDirn      = $this-&amp;gt;escape($this-&amp;gt;state-&amp;gt;get(&#039;list.direction&#039;));&lt;br /&gt;
&lt;br /&gt;
$app = JFactory::getApplication();&lt;br /&gt;
$function  = $app-&amp;gt;input-&amp;gt;getCmd(&#039;function&#039;, &#039;jSelectHelloworld&#039;);&lt;br /&gt;
$onclick   = $this-&amp;gt;escape($function);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;container-popup&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;view=helloworlds&amp;amp;layout=modal&amp;amp;tmpl=component&amp;amp;function=&#039; . $function . &#039;&amp;amp;&#039; . JSession::getFormToken() . &#039;=1&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; class=&amp;quot;form-inline&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo JLayoutHelper::render(&#039;joomla.searchtools.default&#039;, array(&#039;view&#039; =&amp;gt; $this)); ?&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;clearfix&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;table class=&amp;quot;table table-striped table-hover&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;thead&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;3%&amp;quot;&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_NUM&#039;); ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_HELLOWORLDS_NAME&#039;, &#039;greeting&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLDS_POSITION&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLDS_IMAGE&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_AUTHOR&#039;, &#039;author&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_LANGUAGE&#039;, &#039;language&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_CREATED_DATE&#039;, &#039;created&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                    &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_PUBLISHED&#039;, &#039;published&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;2%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_ID&#039;, &#039;id&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/thead&amp;gt;&lt;br /&gt;
            &amp;lt;tfoot&amp;gt;&lt;br /&gt;
                &amp;lt;tr&amp;gt;&lt;br /&gt;
                    &amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/tfoot&amp;gt;&lt;br /&gt;
            &amp;lt;tbody&amp;gt;&lt;br /&gt;
                &amp;lt;?php if (!empty($this-&amp;gt;items)) : ?&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;items as $i =&amp;gt; $row) :&lt;br /&gt;
                        $row-&amp;gt;image = new Registry;&lt;br /&gt;
                        $row-&amp;gt;image-&amp;gt;loadString($row-&amp;gt;imageInfo);&lt;br /&gt;
                        if ($row-&amp;gt;language &amp;amp;&amp;amp; JLanguageMultilang::isEnabled())&lt;br /&gt;
                        {&lt;br /&gt;
                            $tag = strlen($row-&amp;gt;language);&lt;br /&gt;
                            if ($tag == 5)&lt;br /&gt;
                            {&lt;br /&gt;
                                $lang = substr($row-&amp;gt;language, 0, 2);&lt;br /&gt;
                            }&lt;br /&gt;
                            elseif ($tag == 6)&lt;br /&gt;
                            {&lt;br /&gt;
                                $lang = substr($row-&amp;gt;language, 0, 3);&lt;br /&gt;
                            }&lt;br /&gt;
                            else {&lt;br /&gt;
                                $lang = &#039;&#039;;&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                        elseif (!JLanguageMultilang::isEnabled())&lt;br /&gt;
                        {&lt;br /&gt;
                            $lang = &#039;&#039;;&lt;br /&gt;
                        }&lt;br /&gt;
                    ?&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                            &amp;lt;td&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getRowOffset($i); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td&amp;gt;&lt;br /&gt;
                                &amp;lt;?php &lt;br /&gt;
                                $link = &#039;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;amp;id=&#039; . $row-&amp;gt;id;&lt;br /&gt;
                                $attribs = &#039;data-function=&amp;quot;&#039; . $this-&amp;gt;escape($onclick) . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-id=&amp;quot;&#039; . $row-&amp;gt;id . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-title=&amp;quot;&#039; . $this-&amp;gt;escape(addslashes($row-&amp;gt;greeting)) . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-uri=&amp;quot;&#039; . $link . &#039;&amp;quot;&#039;&lt;br /&gt;
								. &#039; data-language=&amp;quot;&#039; . $this-&amp;gt;escape($lang) . &#039;&amp;quot;&#039;&lt;br /&gt;
                                ;&lt;br /&gt;
                                ?&amp;gt;&lt;br /&gt;
                                &amp;lt;a class=&amp;quot;select-link&amp;quot; href=&amp;quot;javascript:void(0)&amp;quot; &amp;lt;?php echo $attribs; ?&amp;gt;&amp;gt;&lt;br /&gt;
                                    &amp;lt;?php echo $this-&amp;gt;escape($row-&amp;gt;greeting); ?&amp;gt;&lt;br /&gt;
                                &amp;lt;/a&amp;gt;&lt;br /&gt;
                                &amp;lt;span class=&amp;quot;small break-word&amp;quot;&amp;gt;&lt;br /&gt;
                                	&amp;lt;?php echo JText::sprintf(&#039;JGLOBAL_LIST_ALIAS&#039;, $this-&amp;gt;escape($row-&amp;gt;alias)); ?&amp;gt;&lt;br /&gt;
                                &amp;lt;/span&amp;gt;&lt;br /&gt;
                                &amp;lt;div class=&amp;quot;small&amp;quot;&amp;gt;&lt;br /&gt;
									&amp;lt;?php echo JText::_(&#039;JCATEGORY&#039;) . &#039;: &#039; . $this-&amp;gt;escape($row-&amp;gt;category_title); ?&amp;gt;&lt;br /&gt;
								&amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo &amp;quot;[&amp;quot; . $row-&amp;gt;latitude . &amp;quot;, &amp;quot; . $row-&amp;gt;longitude . &amp;quot;]&amp;quot;; ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php&lt;br /&gt;
                                    $caption = $row-&amp;gt;image-&amp;gt;get(&#039;caption&#039;) ? : &#039;&#039; ;&lt;br /&gt;
                                    $src = JURI::root() . ($row-&amp;gt;image-&amp;gt;get(&#039;image&#039;) ? : &#039;&#039; );&lt;br /&gt;
                                    $html = &#039;&amp;lt;p class=&amp;quot;hasTooltip&amp;quot; style=&amp;quot;display: inline-block&amp;quot; data-html=&amp;quot;true&amp;quot; data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;&amp;lt;img width=\&#039;100px\&#039; height=\&#039;100px\&#039; src=\&#039;%s\&#039;&amp;gt;&amp;quot;&amp;gt;%s&amp;lt;/p&amp;gt;&#039;;&lt;br /&gt;
                                    echo sprintf($html, $src, $caption);  ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo $row-&amp;gt;author; ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo JLayoutHelper::render(&#039;joomla.content.language&#039;, $row); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo substr($row-&amp;gt;created, 0, 10); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo JHtml::_(&#039;jgrid.published&#039;, $row-&amp;gt;published, $i, &#039;helloworlds.&#039;, true, &#039;cb&#039;); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo $row-&amp;gt;id; ?&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;?php endif; ?&amp;gt;&lt;br /&gt;
            &amp;lt;/tbody&amp;gt;&lt;br /&gt;
        &amp;lt;/table&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::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachte, dass es einige wichtige Unterschiede zu der Layoutdatei default.php gibt.&lt;br /&gt;
&lt;br /&gt;
# Wir erhalten den &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt; Parameter, der in die iframe-URL als Abfrageparameter eingebettet ist, und verwenden diesen im URL-Ziel des &amp;lt;tt&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/tt&amp;gt; Elements und im &amp;lt;tt&amp;gt;data-function&amp;lt;/tt&amp;gt; Attribut eines jeden Grußformelwerts. &lt;br /&gt;
# Jedem Begrüßungswert sind mehrere andere Datenattribute zugeordnet; diese werden verwendet werden, um diese Information über den Funktionsaufruf jSelectHelloworld_jform_request_id an das Elternfenster weiterzugeben. Auch hat jede Begrüßung eine CSS-Klasse von &amp;quot;select-link&amp;quot;.&lt;br /&gt;
# Wir müssen die Ziel-URL von &amp;lt;tt&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/tt&amp;gt; so einstellen, dass sie der URL des iframe entspricht. Dies liegt daran, dass das Formular immer dann, wenn der Administrator die Such-/Filter-Werkzeuge verwendet, eine HTTP-Anforderung an diese URL sendet, und wir müssen sicherstellen, dass es sich um dieselben Daten handelt, die angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem wurden die Kontrollkästchen entfernt, da sie jetzt irrelevant sind. &lt;br /&gt;
&lt;br /&gt;
Darüber hinaus benötigen wir eine kleine Javascript-Datei, die im Grunde einen onclick listener für jede Begrüßung (durch die Klasse &amp;quot;Select-Link&amp;quot; gekennzeichnet) festlegt und bei Auslösung die erforderliche Funktion aufruft. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;media/js/admin-helloworlds-modal.js&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;media/js/admin-helloworlds-modal.js&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
	&amp;quot;use strict&amp;quot;;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Javascript to set up onclick listeners on the helloworld greetings&lt;br /&gt;
	 * When a greeting is clicked the listener invokes the function in the parent window&lt;br /&gt;
	 * which is given by the data-function attribute of the helloworld greeting html element&lt;br /&gt;
	 * In this way the identity of the helloworld record selected in the modal is passed to the field in the parent window&lt;br /&gt;
	 */&lt;br /&gt;
&lt;br /&gt;
	document.addEventListener(&#039;DOMContentLoaded&#039;, function(){&lt;br /&gt;
		&lt;br /&gt;
		var elements = document.querySelectorAll(&#039;.select-link&#039;);&lt;br /&gt;
&lt;br /&gt;
		for(var i = 0, l = elements.length; l&amp;gt;i; i++) {&lt;br /&gt;
			&lt;br /&gt;
			elements[i].addEventListener(&#039;click&#039;, function (event) {&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				var functionName = event.target.getAttribute(&#039;data-function&#039;);&lt;br /&gt;
				window.parent[functionName](event.target.getAttribute(&#039;data-id&#039;), event.target.getAttribute(&#039;data-title&#039;), null, null, event.target.getAttribute(&#039;data-uri&#039;), event.target.getAttribute(&#039;data-language&#039;), null);&lt;br /&gt;
			})&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Sprachzeichenfolgen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/language/en-GB/en-GB.com_helloworld.ini&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/language/en-GB/en-GB.com_helloworld.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot; highlight=&amp;quot;86-89&amp;quot;&amp;gt;&lt;br /&gt;
; Joomla! Project&lt;br /&gt;
; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.&lt;br /&gt;
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php&lt;br /&gt;
; Note : All ini files need to be saved as UTF-8&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION=&amp;quot;HelloWorld - Administration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION_CATEGORIES=&amp;quot;HelloWorld - Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_NUM=&amp;quot;#&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_FILTER=&amp;quot;Filters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR=&amp;quot;Author&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LANGUAGE=&amp;quot;Language&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_DATE=&amp;quot;Created&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED=&amp;quot;Published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_NAME=&amp;quot;Name&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_POSITION=&amp;quot;Position&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_IMAGE=&amp;quot;Image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CREATING=&amp;quot;HelloWorld - Creating&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_DETAILS=&amp;quot;Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_EDITING=&amp;quot;HelloWorld - Editing&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ERROR_UNACCEPTABLE=&amp;quot;Some values are unacceptable&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC=&amp;quot;The category the messages belongs to&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL=&amp;quot;Category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC=&amp;quot;This message will be displayed&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL=&amp;quot;Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL=&amp;quot;Show category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC=&amp;quot;If set to Show, the title of the message&amp;amp;rsquo;s category will show.&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LATITUDE_LABEL=&amp;quot;Latitude&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LATITUDE_DESC=&amp;quot;Enter the position latitude, between -90 and +90 degrees&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LONGITUDE_LABEL=&amp;quot;Longitude&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LONGITUDE_DESC=&amp;quot;Enter the position longitude, between -180 and +180 degrees&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_LANGUAGE_DESC=&amp;quot;Select the appropriate language&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_IMAGE_FIELDS=&amp;quot;Image details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_LABEL=&amp;quot;Select image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_DESC=&amp;quot;Select an image from the library, or upload a new one&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_LABEL=&amp;quot;Alt text&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_DESC=&amp;quot;Alternative text (if image cannot be displayed)&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_LABEL=&amp;quot;Caption&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_DESC=&amp;quot;Provide a caption for the image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT=&amp;quot;HelloWorld manager: Edit Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW=&amp;quot;HelloWorld manager: New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLDS=&amp;quot;HelloWorld manager&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_EDIT_HELLOWORLD=&amp;quot;Edit message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_1=&amp;quot;One message deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_MORE=&amp;quot;%d messages deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_PUBLISHED=&amp;quot;%d message(s) published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_UNPUBLISHED=&amp;quot;%d message(s) unpublished&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_DESC=&amp;quot;Add Hello World Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_MESSAGES=&amp;quot;Messages&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_CATEGORIES=&amp;quot;Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIGURATION=&amp;quot;HelloWorld Configuration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_LABEL=&amp;quot;Messages settings&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_DESC=&amp;quot;Settings that will be applied to all messages by default&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_LABEL=&amp;quot;Captcha&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_DESC=&amp;quot;Select Captcha to use on front end form&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_USER_TO_EMAIL_LABEL=&amp;quot;User to email&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_USER_TO_EMAIL_DESC=&amp;quot;Select user to email when a new message is entered on front end&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_FIELDSET_RULES=&amp;quot;Message Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_FIELD_RULES_LABEL=&amp;quot;Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ACCESS_DELETE_DESC=&amp;quot;Is this group allowed to edit this message?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ACCESS_DELETE_DESC=&amp;quot;Is this group allowed to delete this message?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_NEW_MESSAGE=&amp;quot;New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_EDIT_MESSAGE=&amp;quot;Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_PARAMS=&amp;quot;Parameters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_PERMISSIONS=&amp;quot;Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_IMAGE=&amp;quot;Image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_DETAILS=&amp;quot;Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_PARAMS=&amp;quot;Message Parameters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_PERMISSIONS=&amp;quot;Message Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_IMAGE=&amp;quot;Image info&amp;quot;&lt;br /&gt;
; Column ordering in the Helloworlds view&lt;br /&gt;
COM_HELLOWORLD_ORDERING_ASC=&amp;quot;Greeting ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ORDERING_DESC=&amp;quot;Greeting descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR_ASC=&amp;quot;Author ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR_DESC=&amp;quot;Author descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_ASC=&amp;quot;Creation date ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_DESC=&amp;quot;Creation date descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED_ASC=&amp;quot;Unpublished first&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED_DESC=&amp;quot;Published first&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LANGUAGE_ASC=&amp;quot;Language ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LANGUAGE_DESC=&amp;quot;Language descending&amp;quot;&lt;br /&gt;
; Helloworld menuitem - selecting a greeting via modal&lt;br /&gt;
COM_HELLOWORLD_MENUITEM_SELECT_MODAL_TITLE=&amp;quot;Select greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MENUITEM_SELECT_HELLOWORLD=&amp;quot;Select&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MENUITEM_SELECT_BUTTON_TOOLTIP=&amp;quot;Select a helloworld greeting&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Die Komponente konfektionieren ==&lt;br /&gt;
Der Inhalt deines Codeverzeichnisses. Jeder folgende Dateilink führt dich zu dem Schritt im Tutorial, der die aktuellste Version dieser Quellcodedatei aufweist.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an install-uninstall-update script file#script.php|script.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/router.php|site/router.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding AJAX#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/controllers/helloworld.php|site/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Map#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding AJAX#site/views/helloworld/view.json.php|site/views/helloworld/view.json.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding AJAX#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/form/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/views/form/view.html.php|site/views/form/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/form/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/views/form/tmpl/edit.php|site/views/form/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/views/form/tmpl/edit.xml|site/views/form/tmpl/edit.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/category/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/views/category/view.html.php|site/views/category/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/category/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/views/category/tmpl/default.php|site/views/category/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#site/views/category/tmpl/default.xml|site/views/category/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/models/form.php|site/models/form.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/models/category.php|site/models/category.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/models/forms/add-form.xml|site/models/forms/add-form.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_alias#site/models/forms/filter_category.xml|site/models/forms/filter_category.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Using the language filter facility#site/language/en-GB/en-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/helpers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/helpers/route.php|site/helpers/route.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#site/helpers/category.php|site/helpers/category.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/config.xml|admin/config.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/access.xml|admin/access.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/helpers/helloworld.php|admin/helpers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/helpers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/sql/updates/mysql/0.0.12.sql|admin/sql/updates/mysql/0.0.12.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/sql/updates/mysql/0.0.13.sql|admin/sql/updates/mysql/0.0.13.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/sql/updates/mysql/0.0.14.sql|admin/sql/updates/mysql/0.0.14.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#admin/sql/updates/mysql/0.0.16.sql|admin/sql/updates/mysql/0.0.16.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/sql/updates/mysql/0.0.17.sql|admin/sql/updates/mysql/0.0.17.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Map#admin/sql/updates/mysql/0.0.18.sql|admin/sql/updates/mysql/0.0.18.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/sql/updates/mysql/0.0.20.sql|admin/sql/updates/mysql/0.0.20.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/sql/updates/mysql/0.0.21.sql|admin/sql/updates/mysql/0.0.21.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/modal/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#admin/models/fields/modal/helloworld.php|admin/models/fields/modal/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/models/helloworld.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/models/forms/filter_helloworlds.xml|admin/models/forms/filter_helloworlds.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/models/forms/helloworld.js|admin/models/forms/helloworld.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#admin/models/rules/greeting.php|admin/models/rules/greeting.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/rules/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/views/helloworld/submitbutton.js|admin/views/helloworld/submitbutton.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using the language filter facility#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#admin/views/helloworlds/tmpl/modal.php|admin/views/helloworlds/tmpl/modal.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_alias#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding a Modal#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding an alias#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/images/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-16x16.png]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-48x48.png]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/js/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an alias#media/js/openstreetmap.js|media/js/openstreetmap.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Modal#media/js/admin-helloworlds-modal.js|media/js/admin-helloworlds-modal.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/css/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding a Map#index.html|media/css/openstreetmap.css]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;helloworld.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13&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;3.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;COM_HELLOWORLD&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2018&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.22&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Runs on install/uninstall/update; New in 2.5 --&amp;gt;&lt;br /&gt;
	&amp;lt;scriptfile&amp;gt;script.php&amp;lt;/scriptfile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;router.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&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;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;site/language&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB/en-GB.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;fr-FR&amp;quot;&amp;gt;fr-FR/fr-FR.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
		&amp;lt;/languages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;media destination=&amp;quot;com_helloworld&amp;quot; folder=&amp;quot;media&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;js&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;css&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/media&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039; img=&amp;quot;../media/com_helloworld/images/tux-16x16.png&amp;quot;&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;config.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;access.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- helpers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;admin/language&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;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;en-GB/en-GB.com_helloworld.sys.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;fr-FR&amp;quot;&amp;gt;fr-FR/fr-FR.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
			&amp;lt;language tag=&amp;quot;fr-FR&amp;quot;&amp;gt;fr-FR/fr-FR.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;
== Mitwirkende ==&lt;br /&gt;
*[[User:Robbiej|Robbie Jackson]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Using the language filter facility|Voheriges: Verwendung der Sprachfiltereinrichtung|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding Associations|Nächstes: Assoziationen hinzufügen|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.1{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.2{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.3{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.4{{#translation:}}]]&lt;br /&gt;
[[Category:Beginner Development{{#translation:}}]]&lt;br /&gt;
[[Category:Component Development{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials in a Series{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Es ka</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Developing_an_MVC_Component/Adding_a_Modal/46/de&amp;diff=647949</id>
		<title>Translations:J3.x:Developing an MVC Component/Adding a Modal/46/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Developing_an_MVC_Component/Adding_a_Modal/46/de&amp;diff=647949"/>
		<updated>2020-02-20T09:06:53Z</updated>

		<summary type="html">&lt;p&gt;Es ka: fixed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Wir erhalten den &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt; Parameter, der in die iframe-URL als Abfrageparameter eingebettet ist, und verwenden diesen im URL-Ziel des &amp;lt;tt&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/tt&amp;gt; Elements und im &amp;lt;tt&amp;gt;data-function&amp;lt;/tt&amp;gt; Attribut eines jeden Grußformelwerts.&lt;/div&gt;</summary>
		<author><name>Es ka</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=JDOC:Documentation_Translators&amp;diff=647941</id>
		<title>JDOC:Documentation Translators</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=JDOC:Documentation_Translators&amp;diff=647941"/>
		<updated>2020-02-19T10:45:15Z</updated>

		<summary type="html">&lt;p&gt;Es ka: /* de - Deutsch - German */ added user&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:JDOC translation icon.png|right]]&lt;br /&gt;
Here, people &#039;&#039;&#039;translating&#039;&#039;&#039; {{SITENAME}} can sign up as a translator. Please be sure to read the required reading list below. &lt;br /&gt;
&lt;br /&gt;
After you add your username to the list below under the appropriate language heading, a [[JDOC:Translation Administrators|Translation Administrator]] will assign your username translator permissions. After your username is added as a translator you can start translating! Please be on the look out for a [[Template:Translator welcome|welcome message]] with more information posted to your user talk page.{{-}}&lt;br /&gt;
&lt;br /&gt;
==Required Reading==&lt;br /&gt;
* Getting started, read [[JDOC:Page Translation Quickstart Guide|Page Translation Quickstart Guide]]&lt;br /&gt;
* Detailed explanation of translating, [[JDOC:Page Translation Explained|Page Translation Explained]].&lt;br /&gt;
* Our [[JDOC:Language policy|Language policy]]&lt;br /&gt;
* [[JDOC:Translator Tips|Translator Tips]]&lt;br /&gt;
* [[Joomla:JDOC%27s_Translation_Guidelines|Translation Guidelines]]&lt;br /&gt;
* Having an [[JDOC:Translation Questions|issue or need help]]?&lt;br /&gt;
&lt;br /&gt;
{{tip|text=Dear translators! Please [[Special:TranslatorSignup|register for translator notifications about your language]]. You are placed on a list to receive notices about new/updated pages that need translation.|title=A Tip for Translators}}&lt;br /&gt;
&lt;br /&gt;
===Add Your Language===&lt;br /&gt;
If your language isn&#039;t listed below, please add it using the format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;lang code&amp;gt; -  Localised language name - English language name &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the syntax, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;* {{User|YourUsername}}&amp;lt;/nowiki&amp;gt; - requested&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a Translation Administrator adds you as a translator, they will remove the &amp;quot;- requested&amp;quot; from your username.&lt;br /&gt;
&lt;br /&gt;
==Current Translations Teams==&lt;br /&gt;
&lt;br /&gt;
Documentation language codes are different from Joomla! language codes, they are ISO 639-1 2 letter code. A small quantity of 4 letter language codes are used as an exception, but these language codes are all lowercase.&lt;br /&gt;
&lt;br /&gt;
=== ar - عربي - arabe ===&lt;br /&gt;
* {{User|ghilo}}&lt;br /&gt;
* {{User|HawraMilani}}&lt;br /&gt;
* {{User|hossen}}&lt;br /&gt;
* {{User|ahmadm42}}&lt;br /&gt;
&lt;br /&gt;
=== af - Afrikaans ===&lt;br /&gt;
*{{User|JoeSA}}&lt;br /&gt;
*{{User|Llewellyn}}&lt;br /&gt;
&lt;br /&gt;
=== be - Беларуская - Belarusian ===&lt;br /&gt;
* {{User|Nikolice}}&lt;br /&gt;
&lt;br /&gt;
=== bg - Български - Bulgarian ===&lt;br /&gt;
* {{User|bdimov}}&lt;br /&gt;
* {{User|Mastwd}}&lt;br /&gt;
&lt;br /&gt;
=== bn - বাংলা - Bengali ===&lt;br /&gt;
* {{User|ashiks}}&lt;br /&gt;
* {{User|shamsbd71}}&lt;br /&gt;
* {{User|theanamhossain}}&lt;br /&gt;
* {{User|Azadulkabir455}}&lt;br /&gt;
&lt;br /&gt;
=== ca - Català - Catalan === &lt;br /&gt;
* {{User|el_libre}}&lt;br /&gt;
&lt;br /&gt;
=== cs - Čeština - Czech ===&lt;br /&gt;
* {{User|fredericco-cz}}&lt;br /&gt;
* {{User|Bart}}&lt;br /&gt;
* {{User|n3tcz}}&lt;br /&gt;
* {{User|svatas}}&lt;br /&gt;
&lt;br /&gt;
=== da - Dansk - Danish ===&lt;br /&gt;
* {{User|ot2sen}}&lt;br /&gt;
* {{User|rbuelund}}&lt;br /&gt;
* {{User|BBRA}}&lt;br /&gt;
&lt;br /&gt;
=== de - Deutsch - German ===&lt;br /&gt;
* {{User|Astridx}}&lt;br /&gt;
* {{User|Assmann}}&lt;br /&gt;
* {{User|Alexander-metzler}}&lt;br /&gt;
* {{User|Balzercomp}}&lt;br /&gt;
* {{User|Batmin}}&lt;br /&gt;
* {{User|bbkSecond}}&lt;br /&gt;
* {{User|Blancanieve}}&lt;br /&gt;
* {{User|ceus1984}}&lt;br /&gt;
* {{User|Chmst}}&lt;br /&gt;
* {{User|chrishoefliger}}&lt;br /&gt;
* {{User|Dimkk}}&lt;br /&gt;
* {{User|es_ka}}&lt;br /&gt;
* {{User|FancyFranci}}&lt;br /&gt;
* {{User|Farrell}}&lt;br /&gt;
* {{User|Florian}}&lt;br /&gt;
* {{User|FLin1}}&lt;br /&gt;
* {{User|FrankyD}}&lt;br /&gt;
* {{User|Franz.wohlkoenig}}&lt;br /&gt;
* {{User|fruppel}}&lt;br /&gt;
* {{User|goethe}}&lt;br /&gt;
* {{User|gorgonz}}&lt;br /&gt;
* {{User|Hleithner}}&lt;br /&gt;
* {{User|Indigo66}}&lt;br /&gt;
* {{User|Isarbella}}&lt;br /&gt;
* {{User|jehacgn}}&lt;br /&gt;
* {{User|JDocDummy}}&lt;br /&gt;
* {{User|joomla-agency}}&lt;br /&gt;
* {{User|Joomti}}&lt;br /&gt;
* {{User|Ka3media}}&lt;br /&gt;
* {{User|King_Louis_1}}&lt;br /&gt;
* {{User|Knig.Markus}}&lt;br /&gt;
* {{User|Kolvar}}&lt;br /&gt;
* {{User|Kurztipp}}&lt;br /&gt;
* {{User|LadySolveig}}&lt;br /&gt;
* {{User|m-b-o}}&lt;br /&gt;
* {{User|Maggus}}&lt;br /&gt;
* {{User|Max123kl}}&lt;br /&gt;
* {{User|michaelmyk}}&lt;br /&gt;
* {{User|Nathan.k}}&lt;br /&gt;
* {{User|oliverhh}}&lt;br /&gt;
* {{User|Paterna}}&lt;br /&gt;
* {{User|Pc-doppler}}&lt;br /&gt;
* {{User|Pete71}}&lt;br /&gt;
* {{User|phillopp}}&lt;br /&gt;
* {{User|plocher}}&lt;br /&gt;
* {{User|Prof.Logout}}&lt;br /&gt;
* {{User|quiltgabi}}&lt;br /&gt;
* {{User|RMajewski}}&lt;br /&gt;
* {{User|Schmidie64}}&lt;br /&gt;
* {{User|SeigetsuShoen}}&lt;br /&gt;
* {{User|Sieger66}}&lt;br /&gt;
* {{User|Sisko1990}}&lt;br /&gt;
* {{User|Spannama}}&lt;br /&gt;
* {{User|Stefanie}}&lt;br /&gt;
* {{User|tfecha}}&lt;br /&gt;
* {{User|Tkahl}}&lt;br /&gt;
* {{User|UCFnet002}}&lt;br /&gt;
* {{User|Usimon}}&lt;br /&gt;
* {{User|Webberry}}&lt;br /&gt;
* {{User|Yvesh}}&lt;br /&gt;
* {{User|zero24}}&lt;br /&gt;
* {{User|Xadomir}}&lt;br /&gt;
* {{User|waldiwhz}}&lt;br /&gt;
* {{User|Widmann}}&lt;br /&gt;
* {{User|Zeroweb1}}&lt;br /&gt;
* {{User|Zeroweb2}}&lt;br /&gt;
* {{User|RobertMittl}}&lt;br /&gt;
* {{User|Uta}}&lt;br /&gt;
&lt;br /&gt;
=== el - Ελληνικά - Greek ===&lt;br /&gt;
* {{User|Aris_Ntatsis}}&lt;br /&gt;
* {{User|Tonia_Chan}}&lt;br /&gt;
* {{User|Alphapi}}&lt;br /&gt;
* {{User|Alcaeusd}}&lt;br /&gt;
* {{User|TaDrik}}&lt;br /&gt;
* {{User|SiteworksGr}}&lt;br /&gt;
* {{User|pnkr}}&lt;br /&gt;
* {{User|Gfakas}}&lt;br /&gt;
* {{User|Stekarag}}&lt;br /&gt;
* {{User|Proudpixel}}&lt;br /&gt;
* {{User|Tropos}}&lt;br /&gt;
* {{User|ARTIFIEDWEB}}&lt;br /&gt;
* {{User|Fotis}}&lt;br /&gt;
&lt;br /&gt;
=== es - Español - Spanish ===&lt;br /&gt;
* {{User|Abulafia}}&lt;br /&gt;
* {{User|Andrea Gentil}}&lt;br /&gt;
* {{user|Antoniofmunoz}}&lt;br /&gt;
* {{User|BNovoa.S}}&lt;br /&gt;
* {{User|brucevalle}}&lt;br /&gt;
* {{User|carcam}}&lt;br /&gt;
* {{User|cristobal.vio}}&lt;br /&gt;
* {{User|Crsanchez}}&lt;br /&gt;
* {{User|danielperaza}}&lt;br /&gt;
* {{User|duoduo}}&lt;br /&gt;
* {{User|filisfutsarov}}&lt;br /&gt;
* {{User|framon}}&lt;br /&gt;
* {{User|Irene.lopez}}&lt;br /&gt;
* {{User|isidrobaq}}&lt;br /&gt;
* {{User|ivanramosnet}}&lt;br /&gt;
* {{User|Javiparati}}&lt;br /&gt;
* {{User|Jcollver}}&lt;br /&gt;
* {{User|Jolfig}}&lt;br /&gt;
* {{User|Koa}}&lt;br /&gt;
* {{User|Leo_Soto}}&lt;br /&gt;
* {{User|netandsoftware}}&lt;br /&gt;
* {{User|pdavila2709}}&lt;br /&gt;
* {{User|NunoLopes}}&lt;br /&gt;
* {{User|pfvidal}}&lt;br /&gt;
* {{User|shaz}}&lt;br /&gt;
* {{User|Urielmx}}&lt;br /&gt;
* {{User|VictorYork87}}&lt;br /&gt;
* {{User|viena}}&lt;br /&gt;
* {{User|Willin}}&lt;br /&gt;
&lt;br /&gt;
=== et - Eesti - Estonian ===&lt;br /&gt;
* {{User|Eraser}}&lt;br /&gt;
&lt;br /&gt;
=== fa - فارسی - Persian ===&lt;br /&gt;
* {{User|azolfagharj}}&lt;br /&gt;
* {{User|Grand}}&lt;br /&gt;
* {{User|Heydari}}&lt;br /&gt;
* {{User|Joomlafarsi}}&lt;br /&gt;
* {{User|Levelup}}&lt;br /&gt;
* {{User|mhehm}}&lt;br /&gt;
&lt;br /&gt;
=== fr - Français - French ===&lt;br /&gt;
* {{User|alatak}}&lt;br /&gt;
* {{User|david613}}&lt;br /&gt;
* {{User|Cavo789}}&lt;br /&gt;
* {{User|edelouche}}&lt;br /&gt;
* {{User|Erix}}&lt;br /&gt;
* {{User|Garstud}}&lt;br /&gt;
* {{User|Lorangerart}}&lt;br /&gt;
* {{User|MaximeK7}}&lt;br /&gt;
* {{User|Opware2000}}&lt;br /&gt;
* {{User|Perete}}&lt;br /&gt;
* {{User|Remi1945}}&lt;br /&gt;
* {{User|Sandra97}}&lt;br /&gt;
* {{User|Shim-sao}}&lt;br /&gt;
* {{User|Twister65}}&lt;br /&gt;
* {{User|wisgar}}&lt;br /&gt;
* {{User|smilecollector}}&lt;br /&gt;
&lt;br /&gt;
=== ga - Gaeilge - Irish ===&lt;br /&gt;
* {{User|rvbgnu}}&lt;br /&gt;
&lt;br /&gt;
=== he - עברית - Hebrew ===&lt;br /&gt;
* {{User|ydl}}&lt;br /&gt;
* {{User|shirdesign}}&lt;br /&gt;
&lt;br /&gt;
=== hi - हिंदी - Hindi ===&lt;br /&gt;
* {{User|AlamM}}&lt;br /&gt;
* {{User|Rana}}&lt;br /&gt;
* {{User|Syhussaini}}&lt;br /&gt;
* {{User|Shivamrajput}}&lt;br /&gt;
* {{User|ankitify}}&lt;br /&gt;
&lt;br /&gt;
=== hr - Hrvatski - Croatian ===&lt;br /&gt;
* {{User|limoo}}&lt;br /&gt;
&lt;br /&gt;
=== hu - Magyar - Hungarian ===&lt;br /&gt;
* {{User|Balazs}}&lt;br /&gt;
* {{User|webgobe}}&lt;br /&gt;
&lt;br /&gt;
=== hy - Հայերեն - Armenian ===&lt;br /&gt;
* {{User|Aaleksanyants}}&lt;br /&gt;
&lt;br /&gt;
=== id - Bahasa Indonesia - Indonesian ===&lt;br /&gt;
* {{User|dw1Rianto}}&lt;br /&gt;
* {{User|Micokelana}}&lt;br /&gt;
* {{User|sikumbang}}&lt;br /&gt;
&lt;br /&gt;
=== it - Italiano - Italian ===&lt;br /&gt;
* {{User|alexred}}&lt;br /&gt;
* {{User|aleorco}}&lt;br /&gt;
* {{User|alikon}}&lt;br /&gt;
* {{User|Andreacarriero}}&lt;br /&gt;
* {{User|CinziaDesign}}&lt;br /&gt;
* {{User|donato}}&lt;br /&gt;
* {{User|ino}}&lt;br /&gt;
* {{User|Ladyj}}&lt;br /&gt;
* {{User|Luca.marzo}}&lt;br /&gt;
* {{User|marioluciani}}&lt;br /&gt;
* {{User|moqui}}&lt;br /&gt;
* {{User|nemo_bis}} (occasionally)&lt;br /&gt;
* {{User|Paolo Alberti}}&lt;br /&gt;
* {{User|Fabio Caracciolo}}&lt;br /&gt;
* {{User|robertolongo}}&lt;br /&gt;
* {{User|ste}}&lt;br /&gt;
* {{User|Ing Pulizzi}}&lt;br /&gt;
* {{User|Davidemessia}}&lt;br /&gt;
* {{User|NioBee}}&lt;br /&gt;
* {{User|Aurora}}&lt;br /&gt;
* {{User|Cristina Martorana}}&lt;br /&gt;
* {{User|Razzo}}&lt;br /&gt;
&lt;br /&gt;
=== ja - 日本語 - Japanese ===&lt;br /&gt;
* {{User|Koji Hijikuro}}&lt;br /&gt;
* {{User|Nori}}&lt;br /&gt;
* {{User|Richell}}&lt;br /&gt;
* {{User|Yama}}&lt;br /&gt;
* {{User|Yui}}&lt;br /&gt;
&lt;br /&gt;
=== lg - Luganda ===&lt;br /&gt;
*{{User|Bongomindaniel}}&lt;br /&gt;
&lt;br /&gt;
=== nl - Nederlands - Dutch ===&lt;br /&gt;
* {{User|HildaAbbing}}&lt;br /&gt;
* {{User|AboutTime}}&lt;br /&gt;
* {{User|Alex0703}}&lt;br /&gt;
* {{User|Annemiek}}&lt;br /&gt;
* {{User|Arkomat}}&lt;br /&gt;
* {{User|BCWebdesign}}&lt;br /&gt;
* {{User|crommie}}&lt;br /&gt;
* {{User|Grubosoft}}&lt;br /&gt;
* {{User|fcschippers}}&lt;br /&gt;
* {{User|HermanPeeren}}&lt;br /&gt;
* {{User|Hvdmeer}}&lt;br /&gt;
* {{User|janvankuijk}}&lt;br /&gt;
* {{User|John Flour}}&lt;br /&gt;
* {{User|JorSanders}}&lt;br /&gt;
* {{User|Josien}}&lt;br /&gt;
* {{User|Lara}}&lt;br /&gt;
* {{User|LtB}}&lt;br /&gt;
* {{User|Lianne}}&lt;br /&gt;
* {{User|klatte88}}&lt;br /&gt;
* {{User|ManuAmpe}}&lt;br /&gt;
* {{User|Marcelk}}&lt;br /&gt;
* {{User|marionnijhuis}}&lt;br /&gt;
* {{User|Marnix}}&lt;br /&gt;
* {{User|MartijnM}}&lt;br /&gt;
* {{User|Meta}}&lt;br /&gt;
* {{User|metdick}}&lt;br /&gt;
* {{User|Mtb}}&lt;br /&gt;
* {{User|n9iels}}&lt;br /&gt;
* {{User|Nemphias}}&lt;br /&gt;
* {{User|Nico-van-Leeuwen}}&lt;br /&gt;
* {{User|Onderzoekspraktijk}}&lt;br /&gt;
* {{User|rachel73}}&lt;br /&gt;
* {{User|Renem}}&lt;br /&gt;
* {{User|Ries}}&lt;br /&gt;
* {{User|Rineke}}&lt;br /&gt;
* {{User|Schrijvers123}}&lt;br /&gt;
* {{User|slibbe}}&lt;br /&gt;
* {{User|Sloekers}}&lt;br /&gt;
* {{User|Stitch123}}&lt;br /&gt;
* {{User|Vertaalbirdy}}&lt;br /&gt;
* {{User|webmiep}}&lt;br /&gt;
* {{User|Webcase}}&lt;br /&gt;
* {{User|webcatsolutions}}&lt;br /&gt;
* {{User|willoweb}}&lt;br /&gt;
* {{User|wimstrik}}&lt;br /&gt;
&lt;br /&gt;
=== pl - Polski - Polish ===&lt;br /&gt;
* {{User|Derek}}&lt;br /&gt;
* {{User|justyna}}&lt;br /&gt;
* {{User|MiloW}}&lt;br /&gt;
* {{User|Zwiastun}}&lt;br /&gt;
&lt;br /&gt;
=== pt - Português (Portugal) - Portuguese (Portugal) ===&lt;br /&gt;
* {{User|Djesus}}&lt;br /&gt;
* {{User|Horus_68}}&lt;br /&gt;
* {{User|Lampreia Lopes}}&lt;br /&gt;
* {{User|Mansil}}&lt;br /&gt;
* {{User|Nunof}}&lt;br /&gt;
* {{User|NunoLopes}}&lt;br /&gt;
* {{User|Ricardo.fusco}}&lt;br /&gt;
&lt;br /&gt;
=== pt-br - Português Brasil - Brazilian Portuguese ===&lt;br /&gt;
* {{User|Airton}}&lt;br /&gt;
* {{User|alangustavo}}&lt;br /&gt;
* {{User|AleMorettiSan}}&lt;br /&gt;
* {{User|Anabarcellos}}&lt;br /&gt;
* {{User|Ariadnepinheiro}}&lt;br /&gt;
* {{User|Belisards}}&lt;br /&gt;
* {{User|Dagoberto}}&lt;br /&gt;
* {{User|DiLeu}}&lt;br /&gt;
* {{User|Filipetorres}}&lt;br /&gt;
* {{User|Gleisonsoares}}&lt;br /&gt;
* {{User|Helvecio}}&lt;br /&gt;
* {{User|Henrydouglas}}&lt;br /&gt;
* {{User|Jeann Wilson}}&lt;br /&gt;
* {{User|Juliano.freitas}}&lt;br /&gt;
* {{User|Murilotimo}}&lt;br /&gt;
* {{User|VitorAdonai}}&lt;br /&gt;
* {{User|Vizetti}}&lt;br /&gt;
* {{User|Welkson Ramos}}&lt;br /&gt;
&lt;br /&gt;
=== ro - Română - Romanian ===&lt;br /&gt;
* {{User|andreeastefan}}&lt;br /&gt;
* {{User|isac}}&lt;br /&gt;
* {{User|Dudi161}}&lt;br /&gt;
&lt;br /&gt;
=== ru - Русский - Russian ===&lt;br /&gt;
* {{User|AlexSmirnov}}&lt;br /&gt;
* {{User|Antonio3}}&lt;br /&gt;
* {{User|b2z}}&lt;br /&gt;
* {{User|cadko}}&lt;br /&gt;
* {{User|Cronolio}}&lt;br /&gt;
* {{User|Dosfanat}}&lt;br /&gt;
* {{User|Dzandut}}&lt;br /&gt;
* {{User|Igor}}&lt;br /&gt;
* {{User|Kanta}}&lt;br /&gt;
* {{User|Leo240}}&lt;br /&gt;
* {{User|Nikitm}}&lt;br /&gt;
* {{User|Nikolice}}&lt;br /&gt;
* {{User|Serg SSN}}&lt;br /&gt;
* {{User|Vyatka}}&lt;br /&gt;
* {{User|Yambergaa}}&lt;br /&gt;
&lt;br /&gt;
=== si - සිංහල - Sinhala ===&lt;br /&gt;
* {{User|Yasirunilan}}&lt;br /&gt;
* {{User|Supun}}&lt;br /&gt;
&lt;br /&gt;
=== sk - Slovenčina - Slovak ===&lt;br /&gt;
* {{User|adambako}}&lt;br /&gt;
&lt;br /&gt;
=== sw - Kiswahili ==&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== yu - Srpski (Latin) - Serbian (Latin) ===&lt;br /&gt;
* {{User|novii}}&lt;br /&gt;
&lt;br /&gt;
=== sr - Српски (Ћирилица) - Serbian (Cyrillic) ===&lt;br /&gt;
* {{User|novii}}&lt;br /&gt;
&lt;br /&gt;
=== sv - Svenska - Swedish ===&lt;br /&gt;
* {{User|Propellerhuvud}}&lt;br /&gt;
* {{User|Sgagner}}&lt;br /&gt;
&lt;br /&gt;
=== sw - Kiswahili - Swahili ===&lt;br /&gt;
* {{User|Ayeko}}&lt;br /&gt;
&lt;br /&gt;
=== th - ไทย - Thai ===&lt;br /&gt;
* {{User|Supachai_chai}}&lt;br /&gt;
* {{User|Mrs.siam}}&lt;br /&gt;
* {{User|Ariesanywhere}}&lt;br /&gt;
&lt;br /&gt;
=== tr - Türkçe - Turkish ===&lt;br /&gt;
* {{User|Ugur}}&lt;br /&gt;
* {{User|Umitkenan}}&lt;br /&gt;
&lt;br /&gt;
=== ukr - Українська - Ukrainian ===&lt;br /&gt;
* {{User|Olesya6968ak}}&lt;br /&gt;
* {{User|sera527}}&lt;br /&gt;
* {{User|trv}}&lt;br /&gt;
&lt;br /&gt;
=== ur - ur-PK - اردو - Urdu Pakistan ===&lt;br /&gt;
* {{User|hoornayyer}}&lt;br /&gt;
&lt;br /&gt;
=== vec - Veneto - Vèneto ===&lt;br /&gt;
* {{User|ino}}&lt;br /&gt;
&lt;br /&gt;
=== vi - Tiếng Việt - Vietnamese ===&lt;br /&gt;
* {{User|huyhoa}}&lt;br /&gt;
&lt;br /&gt;
=== zh - 中文 - Chinese ===&lt;br /&gt;
* {{User|asika32764}}&lt;br /&gt;
* {{User|eyesofkids}}&lt;br /&gt;
* {{User|Guozhanfeng}}&lt;br /&gt;
* {{User|KellyXYM}}&lt;br /&gt;
* {{User|lai32290}}&lt;br /&gt;
* {{User|Mori0725ken}}&lt;br /&gt;
* {{User|myskies}}&lt;br /&gt;
* {{User|Wulijun01234}}&lt;br /&gt;
* {{User|Zace}}&lt;br /&gt;
* {{User|Zhang19min88}}&lt;br /&gt;
* {{User|Zhous98}}&lt;br /&gt;
&lt;br /&gt;
=== zh-tw - 繁體中文 - Traditional Chinese ===&lt;br /&gt;
* {{User|Yuhoward}}&lt;br /&gt;
&lt;br /&gt;
==Translation Administrators==&lt;br /&gt;
&lt;br /&gt;
The responsibilities of a Translation Administrator will require slightly more attention to the documents for translation. Translation Administrators should feel comfortable with using wiki markup, made hundreds of contributions to their specific language and assisted others in translation of docs. Administrators will need to check the documentation every few days and perform any required tasks. These tasks include re-marking pages in en-GB with edit changes, tracking language units which need translation and welcoming new translators. Ideally, we should have at least one Translation Administrator who will not be tied to any specific language and when the time comes, one Translation Administrator for active language teams.&lt;br /&gt;
&lt;br /&gt;
===Current Volunteer Translation Administrators===&lt;br /&gt;
{{:Special:ListUsers/translationadmins}}&lt;br /&gt;
&lt;br /&gt;
==Common Language Codes==&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; afr - Afrikaans - Afrikaans&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ar - عربي - Arabic&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; be - Беларуская - Belarusian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bg - Български - Bulgarian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bn - বাংলা - Bengali&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; bo - བོད་ཡིག - tibetan&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ca - Català - Catalan&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ce - Nohçi - Chechen&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; da - Dansk - Danish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; de - Deutsch - German&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; es - Español - Spanish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; fa - فارسی - Persian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; fi - Suomi - Finnish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; fr - Français - French&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; hu - Magyar - Hungarian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; hy - Հայերեն - Armenian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; id - Bahasa Indonesia - Indonesian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; is - Íslenska - Icelandic&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; it - Italiano - Italian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ja - 日本語 - Japanese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ko - 한국어 - Korean&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; lb - Lëtzebuergesch - Luxembourgish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; min - Baso Minangkabau - Minang&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ml - liviox alvax - Malayalam&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; mr - मराठी - Marathi&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ms - Bahasa Melayu - Malay&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; nl - Nederlands - Dutch&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; pl - Polski - Polish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; pt - Português - Portuguese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; pt-br - Português do Brasil - Brazilian Portuguese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ro - Română - Romanian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ru - Русский - Russian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sl - Slovenščina - Slovenianjtökók&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sq - Shqip - Albanian&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sv - Svenska - Swedish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; sw - Kiswahili - Swahili&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; ta - தமிழ் - Tamil&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; th - ไทย - Thai&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; tr - Türkçe - Turkish&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; vi - Tiếng Việt - Vietnamese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; zh - 中文 - Chinese&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;small-4 columns&amp;quot;&amp;gt; zh-tw - 繁體中文 - Traditional Chinese&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Documentation Wiki Policies and Guidelines]]&lt;br /&gt;
[[Category:Documentation Translation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Es ka</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_an_Image&amp;diff=647935</id>
		<title>J3.x:Developing an MVC Component/Adding an Image</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_an_Image&amp;diff=647935"/>
		<updated>2020-02-14T16:27:58Z</updated>

		<summary type="html">&lt;p&gt;Es ka: Bugfix: typo in admin/views/helloworlds/tmpl/default.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
This tutorial is part of the [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing a MVC Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
In this step we add an image to each Helloworld greeting, and describe how to allow the administrator to select an image from the media library, and a general user to upload an image via a front-end form. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
There are 2 videos available which complement this step, covering [https://youtu.be/PnRIMz4kC_o Admin functionality and PHP file handling] and [https://youtu.be/NYwa3csb7IM Controller code and related topics].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; Admin functionality and PHP file handling&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=PnRIMz4kC_o}}&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; Controller code and related topics&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{#widget:YouTube|id=NYwa3csb7IM}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Functionality == &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt; The main functionality which we&#039;ll build in this step will be&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* Back end&lt;br /&gt;
** allow the administrator to select an image to be associated with each helloworld greeting&lt;br /&gt;
** display details of the image on the administrator&#039;s list of helloworld greetings&lt;br /&gt;
* Front end&lt;br /&gt;
** display the image associated with the helloworld greeting&lt;br /&gt;
** allow a user to upload an image when creating a new helloworld greeting&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Approach == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; We&#039;ll extend our Helloworld database record to include the filename of the image file within our Joomla instance (by default, stored within the images folder). Together with the image link we&#039;ll also store a caption and alt text, as these are what are used in an HTML img tag. We&#039;ll create one database field to store all three items in JSON-encoded format (as we did for the params field in [[S:MyLanguage/J3.x:Developing an MVC Component/Adding configuration|Adding configuration]]). This means that we&#039;ll need to sort out converting between the database format (JSON-encoded) and how the data is presented in a form (via an array).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; In the back end we&#039;ll need to change the helloworld edit form, both its xml definition and the layout file, to include capturing the image details, and we&#039;ll need to satisfy ourselves that the image information is extracted in the model, in order to prefill the data in the edit form. We&#039;ll need to make sure that the save of the edited / new record handles the image details as well.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
We&#039;ll also change the &amp;quot;helloworlds&amp;quot; list layout to include the new image data, and we&#039;ll need to change the model to including selecting the image data from the database.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
On the front end we have the view which displays the helloworld message – we&#039;ll ensure our layout file includes the image as well, and we&#039;ll need to get the additional information from the model. We also have the front end form developed in the previous step, and we&#039;ll change this to allow a user to upload an image. This will entail work in the associated controller handling the POST, in order to deal with uploading the image file.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Updating the Database == &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Add a field called &#039;image&#039; to our database record, which will store the filename of the image, its caption and its alt text all together in a JSON-encoded format.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/sql/install.mysql.utf8.sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/sql/install.mysql.utf8.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot; highlight=&amp;quot;12&amp;quot;&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS `#__helloworld`;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE `#__helloworld` (&lt;br /&gt;
	`id`       INT(11)     NOT NULL AUTO_INCREMENT,&lt;br /&gt;
	`asset_id` INT(10)     NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
	`created`  DATETIME    NOT NULL DEFAULT &#039;0000-00-00 00:00:00&#039;,&lt;br /&gt;
	`created_by`  INT(10) UNSIGNED NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
	`greeting` VARCHAR(25) NOT NULL,&lt;br /&gt;
	`published` tinyint(4) NOT NULL DEFAULT &#039;1&#039;,&lt;br /&gt;
	`catid`	    int(11)    NOT NULL DEFAULT &#039;0&#039;,&lt;br /&gt;
	`params`   VARCHAR(1024) NOT NULL DEFAULT &#039;&#039;,&lt;br /&gt;
	`image`   VARCHAR(1024) NOT NULL DEFAULT &#039;&#039;,&lt;br /&gt;
	PRIMARY KEY (`id`)&lt;br /&gt;
)&lt;br /&gt;
	ENGINE =MyISAM&lt;br /&gt;
	AUTO_INCREMENT =0&lt;br /&gt;
	DEFAULT CHARSET =utf8;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO `#__helloworld` (`greeting`) VALUES&lt;br /&gt;
(&#039;Hello World!&#039;),&lt;br /&gt;
(&#039;Goodbye World!&#039;);&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/sql/updates/mysql/0.0.17.sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;/admin/sql/updates/mysql/0.0.17.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE `#__helloworld` ADD `image` VARCHAR(1024) NOT NULL DEFAULT &#039;&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Admin Helloworld Edit Form == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; We need to add our image fields into the form definition, and we&#039;ll put them all inside a fieldset to enable them to be output easily within the layout file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/models/forms/helloworld.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;37-59&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&lt;br /&gt;
				addrulepath=&amp;quot;/administrator/components/com_helloworld/models/rules&amp;quot;&lt;br /&gt;
&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&lt;br /&gt;
				name=&amp;quot;details&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_DETAILS&amp;quot;&lt;br /&gt;
	&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 validate-greeting&amp;quot;&lt;br /&gt;
				validate=&amp;quot;greeting&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
				default=&amp;quot;&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
				name=&amp;quot;catid&amp;quot;&lt;br /&gt;
				type=&amp;quot;category&amp;quot;&lt;br /&gt;
				extension=&amp;quot;com_helloworld&amp;quot;&lt;br /&gt;
				class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
				default=&amp;quot;&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
			&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOPTION_SELECT_CATEGORY&amp;lt;/option&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;fields name=&amp;quot;imageinfo&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset&lt;br /&gt;
			name=&amp;quot;image-info&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_IMAGE_FIELDS&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;image&amp;quot;&lt;br /&gt;
				type=&amp;quot;media&amp;quot;&lt;br /&gt;
				preview=&amp;quot;tooltip&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_DESC&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;field name=&amp;quot;alt&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_DESC&amp;quot;&lt;br /&gt;
				size=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;field name=&amp;quot;caption&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_DESC&amp;quot;&lt;br /&gt;
				size=&amp;quot;30&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fieldset&lt;br /&gt;
				name=&amp;quot;params&amp;quot;&lt;br /&gt;
				label=&amp;quot;JGLOBAL_FIELDSET_DISPLAY_OPTIONS&amp;quot;&lt;br /&gt;
		&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
					name=&amp;quot;show_category&amp;quot;&lt;br /&gt;
					type=&amp;quot;list&amp;quot;&lt;br /&gt;
					label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL&amp;quot;&lt;br /&gt;
					description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC&amp;quot;&lt;br /&gt;
					default=&amp;quot;&amp;quot;&lt;br /&gt;
			&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;JGLOBAL_USE_GLOBAL&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JHIDE&amp;lt;/option&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JSHOW&amp;lt;/option&amp;gt;&lt;br /&gt;
			&amp;lt;/field&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/fields&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&lt;br /&gt;
			name=&amp;quot;accesscontrol&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_FIELDSET_RULES&amp;quot;&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
    	&amp;lt;field&lt;br /&gt;
				name=&amp;quot;asset_id&amp;quot;&lt;br /&gt;
				type=&amp;quot;hidden&amp;quot;&lt;br /&gt;
				filter=&amp;quot;unset&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
    	&amp;lt;field&lt;br /&gt;
				name=&amp;quot;rules&amp;quot;&lt;br /&gt;
				type=&amp;quot;rules&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_FIELD_RULES_LABEL&amp;quot;&lt;br /&gt;
				filter=&amp;quot;rules&amp;quot;&lt;br /&gt;
				validate=&amp;quot;rules&amp;quot;&lt;br /&gt;
				class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
				component=&amp;quot;com_helloworld&amp;quot;&lt;br /&gt;
				section=&amp;quot;message&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;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; And in our layout file we&#039;ll output that fieldset into a new tab on our form.&amp;lt;/translate&amp;gt;&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;
&amp;lt;tt&amp;gt;admin/views/helloworld/tmpl/edit.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;  highlight=&amp;quot;46-55&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.formvalidator&#039;);&lt;br /&gt;
&lt;br /&gt;
// The following is to enable setting the permission&#039;s Calculated Setting &lt;br /&gt;
// when you change the permission&#039;s Setting. &lt;br /&gt;
// The core javascript code for initiating the Ajax request looks for a field&lt;br /&gt;
// with id=&amp;quot;jform_title&amp;quot; and sets its value as the &#039;title&#039; parameter to send in the Ajax request&lt;br /&gt;
JFactory::getDocument()-&amp;gt;addScriptDeclaration(&#039;&lt;br /&gt;
	jQuery(document).ready(function() {&lt;br /&gt;
        greeting = jQuery(&amp;quot;#jform_greeting&amp;quot;).val();&lt;br /&gt;
		jQuery(&amp;quot;#jform_title&amp;quot;).val(greeting);&lt;br /&gt;
	});&lt;br /&gt;
&#039;);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id=&#039; . (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;adminForm&amp;quot; class=&amp;quot;form-validate&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;input id=&amp;quot;jform_title&amp;quot; type=&amp;quot;hidden&amp;quot; name=&amp;quot;helloworld-message-title&amp;quot;/&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;form-horizontal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.startTabSet&#039;, &#039;myTab&#039;, array(&#039;active&#039; =&amp;gt; &#039;details&#039;)); ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.addTab&#039;, &#039;myTab&#039;, &#039;details&#039;, &lt;br /&gt;
        empty($this-&amp;gt;item-&amp;gt;id) ? JText::_(&#039;COM_HELLOWORLD_TAB_NEW_MESSAGE&#039;) : JText::_(&#039;COM_HELLOWORLD_TAB_EDIT_MESSAGE&#039;)); ?&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::_(&#039;COM_HELLOWORLD_LEGEND_DETAILS&#039;) ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderFieldset(&#039;details&#039;);  ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.endTab&#039;); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.addTab&#039;, &#039;myTab&#039;, &#039;image&#039;, JText::_(&#039;COM_HELLOWORLD_TAB_IMAGE&#039;)); ?&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::_(&#039;COM_HELLOWORLD_LEGEND_IMAGE&#039;) ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderFieldset(&#039;image-info&#039;);  ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.endTab&#039;); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.addTab&#039;, &#039;myTab&#039;, &#039;params&#039;, JText::_(&#039;COM_HELLOWORLD_TAB_PARAMS&#039;)); ?&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::_(&#039;COM_HELLOWORLD_LEGEND_PARAMS&#039;) ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderFieldset(&#039;params&#039;);  ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.endTab&#039;); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.addTab&#039;, &#039;myTab&#039;, &#039;permissions&#039;, JText::_(&#039;COM_HELLOWORLD_TAB_PERMISSIONS&#039;)); ?&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::_(&#039;COM_HELLOWORLD_LEGEND_PERMISSIONS&#039;) ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span12&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderFieldset(&#039;accesscontrol&#039;);  ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.endTab&#039;); ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;bootstrap.endTabSet&#039;); ?&amp;gt;&lt;br /&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::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Next we need to consider how to include the image information within the data which is used to prefill the edit form. At the moment, our code is calling getItem() within the model (specifically within the JModelAdmin class), and this will get the image field ok, but the data will be in JSON-encoded format. So what we can do is&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
* override the JModelAdmin getItem() with a getItem() in our own model,&lt;br /&gt;
* inside our getItem() we call the parent JModelAdmin getItem() version to get the data from the database, then,&lt;br /&gt;
* we convert the image info into individual array fields.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt; We&#039;ll use the [https://github.com/joomla-framework/registry Joomla Registry] class to handle the conversion, but as it&#039;s in a different namespace we&#039;ll need to tell PHP where to find it. Note that we&#039;re putting the image data into &amp;lt;tt&amp;gt;item-&amp;gt;imageinfo&amp;lt;/tt&amp;gt;, as this has to match the name attribute within the &amp;lt;tt&amp;gt;&amp;lt;fields&amp;gt;&amp;lt;/tt&amp;gt; section of our edit form xml definition.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/models/helloworld.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039; highlight=&amp;quot;13,22-35&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\Registry\Registry;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to override getItem to allow us to convert the JSON-encoded image information&lt;br /&gt;
	 * in the database record into an array for subsequent prefilling of the edit form&lt;br /&gt;
	 */&lt;br /&gt;
	public function getItem($pk = null)&lt;br /&gt;
	{&lt;br /&gt;
		$item = parent::getItem($pk);&lt;br /&gt;
		if ($item AND property_exists($item, &#039;image&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			$registry = new Registry($item-&amp;gt;image);&lt;br /&gt;
			$item-&amp;gt;imageinfo = $registry-&amp;gt;toArray();&lt;br /&gt;
		}&lt;br /&gt;
		return $item; &lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get a table object, load it if necessary.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $type    The table name. Optional.&lt;br /&gt;
	 * @param   string  $prefix  The class prefix. Optional.&lt;br /&gt;
	 * @param   array   $config  Configuration array for model. Optional.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  JTable  A JTable object&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array())&lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&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;
	 *&lt;br /&gt;
	 * @return  mixed    A JForm object on success, false on failure&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&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(&lt;br /&gt;
			&#039;com_helloworld.helloworld&#039;,&lt;br /&gt;
			&#039;helloworld&#039;,&lt;br /&gt;
			array(&lt;br /&gt;
				&#039;control&#039; =&amp;gt; &#039;jform&#039;,&lt;br /&gt;
				&#039;load_data&#039; =&amp;gt; $loadData&lt;br /&gt;
			)&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		if (empty($form))&lt;br /&gt;
		{&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return $form;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the script that have to be included on the form&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return string	Script files&lt;br /&gt;
	 */&lt;br /&gt;
	public function getScript() &lt;br /&gt;
	{&lt;br /&gt;
		return &#039;administrator/components/com_helloworld/models/forms/helloworld.js&#039;;&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;
	 *&lt;br /&gt;
	 * @since   1.6&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(&lt;br /&gt;
			&#039;com_helloworld.edit.helloworld.data&#039;,&lt;br /&gt;
			array()&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		if (empty($data))&lt;br /&gt;
		{&lt;br /&gt;
			$data = $this-&amp;gt;getItem();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return $data;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to check if it&#039;s OK to delete a message. Overrides JModelAdmin::canDelete&lt;br /&gt;
	 */&lt;br /&gt;
	protected function canDelete($record)&lt;br /&gt;
	{&lt;br /&gt;
		if( !empty( $record-&amp;gt;id ) )&lt;br /&gt;
		{&lt;br /&gt;
			return JFactory::getUser()-&amp;gt;authorise( &amp;quot;core.delete&amp;quot;, &amp;quot;com_helloworld.helloworld.&amp;quot; . $record-&amp;gt;id );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; Finally we have to consider handling the HTTP POST when the administrator submits the edit form. In particular, we will have the image information in array format, and we&#039;ll have to JSON-encode this before we put it into the database field. To manage this we&#039;ll take the same approach as in [[S:MyLanguage/J3.x:Developing an MVC Component/Adding configuration|Adding configuration]] and we&#039;ll convert the data within the bind() override of our JTable class.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/tables/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/tables/helloworld.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;46-52&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello Table class&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldTableHelloWorld extends JTable&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   JDatabaseDriver  &amp;amp;$db  A database connector object&lt;br /&gt;
	 */&lt;br /&gt;
	function __construct(&amp;amp;$db)&lt;br /&gt;
	{&lt;br /&gt;
		parent::__construct(&#039;#__helloworld&#039;, &#039;id&#039;, $db);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Overloaded bind function&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param       array           named array&lt;br /&gt;
	 * @return      null|string     null is operation was satisfactory, otherwise returns an error&lt;br /&gt;
	 * @see JTable:bind&lt;br /&gt;
	 * @since 1.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function bind($array, $ignore = &#039;&#039;)&lt;br /&gt;
	{&lt;br /&gt;
		if (isset($array[&#039;params&#039;]) &amp;amp;&amp;amp; is_array($array[&#039;params&#039;]))&lt;br /&gt;
		{&lt;br /&gt;
			// Convert the params field to a string.&lt;br /&gt;
			$parameter = new JRegistry;&lt;br /&gt;
			$parameter-&amp;gt;loadArray($array[&#039;params&#039;]);&lt;br /&gt;
			$array[&#039;params&#039;] = (string)$parameter;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (isset($array[&#039;imageinfo&#039;]) &amp;amp;&amp;amp; is_array($array[&#039;imageinfo&#039;]))&lt;br /&gt;
		{&lt;br /&gt;
			// Convert the imageinfo array to a string.&lt;br /&gt;
			$parameter = new JRegistry;&lt;br /&gt;
			$parameter-&amp;gt;loadArray($array[&#039;imageinfo&#039;]);&lt;br /&gt;
			$array[&#039;image&#039;] = (string)$parameter;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Bind the rules.&lt;br /&gt;
		if (isset($array[&#039;rules&#039;]) &amp;amp;&amp;amp; is_array($array[&#039;rules&#039;]))&lt;br /&gt;
		{&lt;br /&gt;
			$rules = new JAccessRules($array[&#039;rules&#039;]);&lt;br /&gt;
			$this-&amp;gt;setRules($rules);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return parent::bind($array, $ignore);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to compute the default name of the asset.&lt;br /&gt;
	 * The default name is in the form `table_name.id`&lt;br /&gt;
	 * where id is the value of the primary key of the table.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function _getAssetName()&lt;br /&gt;
	{&lt;br /&gt;
		$k = $this-&amp;gt;_tbl_key;&lt;br /&gt;
		return &#039;com_helloworld.helloworld.&#039;.(int) $this-&amp;gt;$k;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to return the title to use for the asset table.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function _getAssetTitle()&lt;br /&gt;
	{&lt;br /&gt;
		return $this-&amp;gt;greeting;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the asset-parent-id of the item&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	int&lt;br /&gt;
	 */&lt;br /&gt;
	protected function _getAssetParentId(JTable $table = NULL, $id = NULL)&lt;br /&gt;
	{&lt;br /&gt;
		// We will retrieve the parent-asset from the Asset-table&lt;br /&gt;
		$assetParent = JTable::getInstance(&#039;Asset&#039;);&lt;br /&gt;
		// Default: if no asset-parent can be found we take the global asset&lt;br /&gt;
		$assetParentId = $assetParent-&amp;gt;getRootId();&lt;br /&gt;
&lt;br /&gt;
		// Find the parent-asset&lt;br /&gt;
		if (($this-&amp;gt;catid)&amp;amp;&amp;amp; !empty($this-&amp;gt;catid))&lt;br /&gt;
		{&lt;br /&gt;
			// The item has a category as asset-parent&lt;br /&gt;
			$assetParent-&amp;gt;loadByName(&#039;com_helloworld.category.&#039; . (int) $this-&amp;gt;catid);&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			// The item has the component as asset-parent&lt;br /&gt;
			$assetParent-&amp;gt;loadByName(&#039;com_helloworld&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Return the found asset-parent-id&lt;br /&gt;
		if ($assetParent-&amp;gt;id)&lt;br /&gt;
		{&lt;br /&gt;
			$assetParentId=$assetParent-&amp;gt;id;&lt;br /&gt;
		}&lt;br /&gt;
		return $assetParentId;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Admin Helloworlds List View == &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; Within our Helloworlds model we need to include our image information within the SQL query. However, because this image information is JSON-encoded it&#039;s not going to be possible to order by any of the subitems via a SQL ORDER BY clause, so we&#039;ll not provide functionality to sort by the equivalent image column in the display, and so there&#039;s no need to add any fields to the &amp;lt;tt&amp;gt;filter-fields&amp;lt;/tt&amp;gt; array.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/models/helloworlds.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;55-56&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorldList Model&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorlds extends JModelList&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Constructor.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   array  $config  An optional associative array of configuration settings.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @see     JController&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	public function __construct($config = array())&lt;br /&gt;
	{&lt;br /&gt;
		if (empty($config[&#039;filter_fields&#039;]))&lt;br /&gt;
		{&lt;br /&gt;
			$config[&#039;filter_fields&#039;] = array(&lt;br /&gt;
				&#039;id&#039;,&lt;br /&gt;
				&#039;greeting&#039;,&lt;br /&gt;
				&#039;author&#039;,&lt;br /&gt;
				&#039;created&#039;,&lt;br /&gt;
				&#039;published&#039;&lt;br /&gt;
			);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		parent::__construct($config);&lt;br /&gt;
	}&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;
		// Initialize variables.&lt;br /&gt;
		$db    = JFactory::getDbo();&lt;br /&gt;
		$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
		// Create the base select statement.&lt;br /&gt;
		$query-&amp;gt;select(&#039;a.id as id, a.greeting as greeting, a.published as published, a.created as created, &lt;br /&gt;
			  a.image as imageInfo&#039;)&lt;br /&gt;
			  -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__helloworld&#039;, &#039;a&#039;));&lt;br /&gt;
&lt;br /&gt;
		// Join over the categories.&lt;br /&gt;
		$query-&amp;gt;select($db-&amp;gt;quoteName(&#039;c.title&#039;, &#039;category_title&#039;))&lt;br /&gt;
			-&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;c&#039;) . &#039; ON c.id = a.catid&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// Join with users table to get the username of the author&lt;br /&gt;
		$query-&amp;gt;select($db-&amp;gt;quoteName(&#039;u.username&#039;, &#039;author&#039;))&lt;br /&gt;
			-&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;u&#039;) . &#039; ON u.id = a.created_by&#039;);&lt;br /&gt;
            &lt;br /&gt;
		// Filter: like / search&lt;br /&gt;
		$search = $this-&amp;gt;getState(&#039;filter.search&#039;);&lt;br /&gt;
&lt;br /&gt;
		if (!empty($search))&lt;br /&gt;
		{&lt;br /&gt;
			$like = $db-&amp;gt;quote(&#039;%&#039; . $search . &#039;%&#039;);&lt;br /&gt;
			$query-&amp;gt;where(&#039;greeting LIKE &#039; . $like);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Filter by published state&lt;br /&gt;
		$published = $this-&amp;gt;getState(&#039;filter.published&#039;);&lt;br /&gt;
&lt;br /&gt;
		if (is_numeric($published))&lt;br /&gt;
		{&lt;br /&gt;
			$query-&amp;gt;where(&#039;a.published = &#039; . (int) $published);&lt;br /&gt;
		}&lt;br /&gt;
		elseif ($published === &#039;&#039;)&lt;br /&gt;
		{&lt;br /&gt;
			$query-&amp;gt;where(&#039;(a.published IN (0, 1))&#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Add the list ordering clause.&lt;br /&gt;
		$orderCol	= $this-&amp;gt;state-&amp;gt;get(&#039;list.ordering&#039;, &#039;greeting&#039;);&lt;br /&gt;
		$orderDirn 	= $this-&amp;gt;state-&amp;gt;get(&#039;list.direction&#039;, &#039;asc&#039;);&lt;br /&gt;
&lt;br /&gt;
		$query-&amp;gt;order($db-&amp;gt;escape($orderCol) . &#039; &#039; . $db-&amp;gt;escape($orderDirn));&lt;br /&gt;
&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;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
As before, we&#039;ll need to convert the JSON-encode image information into an array format, and we&#039;ll do that in the layout file, as we&#039;ve already got a for loop there which cycles through the records. So our view file won&#039;t require any changes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; In the layout file we&#039;ll have a column for the image caption text, and we&#039;ll display the image as a tooltip, with help from some of the Bootstrap functionality.&amp;lt;/translate&amp;gt; &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;
&amp;lt;tt&amp;gt;admin/views/helloworlds/tmpl/default.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;13,46-49,52,74-75,90-96&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\Registry\Registry;&lt;br /&gt;
&lt;br /&gt;
JHtml::_(&#039;formbehavior.chosen&#039;, &#039;select&#039;);&lt;br /&gt;
&lt;br /&gt;
$listOrder     = $this-&amp;gt;escape($this-&amp;gt;state-&amp;gt;get(&#039;list.ordering&#039;));&lt;br /&gt;
$listDirn      = $this-&amp;gt;escape($this-&amp;gt;state-&amp;gt;get(&#039;list.direction&#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;index.php?option=com_helloworld&amp;amp;view=helloworlds&amp;quot; method=&amp;quot;post&amp;quot; id=&amp;quot;adminForm&amp;quot; name=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div id=&amp;quot;j-sidebar-container&amp;quot; class=&amp;quot;span2&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtmlSidebar::render(); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;div id=&amp;quot;j-main-container&amp;quot; class=&amp;quot;span10&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLDS_FILTER&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;?php&lt;br /&gt;
                    echo JLayoutHelper::render(&lt;br /&gt;
                        &#039;joomla.searchtools.default&#039;,&lt;br /&gt;
                        array(&#039;view&#039; =&amp;gt; $this)&lt;br /&gt;
                    );&lt;br /&gt;
                ?&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&amp;quot;table table-striped table-hover&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;thead&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;1%&amp;quot;&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_NUM&#039;); ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;2%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;grid.checkall&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;30%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_HELLOWORLDS_NAME&#039;, &#039;greeting&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;30%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLDS_IMAGE&#039;); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_AUTHOR&#039;, &#039;author&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_CREATED_DATE&#039;, &#039;created&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;5%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_PUBLISHED&#039;, &#039;published&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;th width=&amp;quot;2%&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php echo JHtml::_(&#039;searchtools.sort&#039;, &#039;COM_HELLOWORLD_ID&#039;, &#039;id&#039;, $listDirn, $listOrder); ?&amp;gt;&lt;br /&gt;
                &amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/thead&amp;gt;&lt;br /&gt;
            &amp;lt;tfoot&amp;gt;&lt;br /&gt;
                &amp;lt;tr&amp;gt;&lt;br /&gt;
                    &amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&lt;br /&gt;
                    &amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/tfoot&amp;gt;&lt;br /&gt;
            &amp;lt;tbody&amp;gt;&lt;br /&gt;
                &amp;lt;?php if (!empty($this-&amp;gt;items)) : ?&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;items as $i =&amp;gt; $row) :&lt;br /&gt;
                        $link = JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;task=helloworld.edit&amp;amp;id=&#039; . $row-&amp;gt;id);&lt;br /&gt;
                        $row-&amp;gt;image = new Registry;&lt;br /&gt;
                        $row-&amp;gt;image-&amp;gt;loadString($row-&amp;gt;imageinfo);&lt;br /&gt;
                    ?&amp;gt;&lt;br /&gt;
                        &amp;lt;tr&amp;gt;&lt;br /&gt;
                            &amp;lt;td&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getRowOffset($i); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo JHtml::_(&#039;grid.id&#039;, $i, $row-&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;a href=&amp;quot;&amp;lt;?php echo $link; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_EDIT_HELLOWORLD&#039;); ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;?php echo $row-&amp;gt;greeting; ?&amp;gt;&lt;br /&gt;
                                &amp;lt;/a&amp;gt;&lt;br /&gt;
                                &amp;lt;div class=&amp;quot;small&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;?php echo JText::_(&#039;JCATEGORY&#039;) . &#039;: &#039; . $this-&amp;gt;escape($row-&amp;gt;category_title); ?&amp;gt;&lt;br /&gt;
                                &amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php&lt;br /&gt;
                                    $caption = $row-&amp;gt;image-&amp;gt;get(&#039;caption&#039;) ? : &#039;&#039; ;&lt;br /&gt;
                                    $src = JURI::root() . ($row-&amp;gt;image-&amp;gt;get(&#039;image&#039;) ? : &#039;&#039; );&lt;br /&gt;
                                    $html = &#039;&amp;lt;p class=&amp;quot;hasTooltip&amp;quot; style=&amp;quot;display: inline-block&amp;quot; data-html=&amp;quot;true&amp;quot; data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;&amp;lt;img width=\&#039;100px\&#039; height=\&#039;100px\&#039; src=\&#039;%s\&#039;&amp;gt;&amp;quot;&amp;gt;%s&amp;lt;/p&amp;gt;&#039;;&lt;br /&gt;
                                    echo sprintf($html, $src, $caption);  ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo $row-&amp;gt;author; ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo substr($row-&amp;gt;created, 0, 10); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo JHtml::_(&#039;jgrid.published&#039;, $row-&amp;gt;published, $i, &#039;helloworlds.&#039;, true, &#039;cb&#039;); ?&amp;gt;&lt;br /&gt;
                            &amp;lt;/td&amp;gt;&lt;br /&gt;
                            &amp;lt;td align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
                                &amp;lt;?php echo $row-&amp;gt;id; ?&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;?php endif; ?&amp;gt;&lt;br /&gt;
            &amp;lt;/tbody&amp;gt;&lt;br /&gt;
        &amp;lt;/table&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::_(&#039;form.token&#039;); ?&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;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Site Helloworld Display == &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Early on in this series we developed the functionality to display a Helloworld greeting on a front-end webpage. Now we&#039;re going to add the image to that page, and we&#039;ll need to make the following changes:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* helloworld model - include the image info within the data we read from the database, and convert it into an array format&lt;br /&gt;
* helloworld layout - display the image on the page.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Neither the controller nor view will require any changes.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/models/helloworld.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;76,94-97&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 *&lt;br /&gt;
 * @since  0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelItem&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * @var object item&lt;br /&gt;
	 */&lt;br /&gt;
	protected $item;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to auto-populate the model state.&lt;br /&gt;
	 *&lt;br /&gt;
	 * This method should only be called once per instantiation and is designed&lt;br /&gt;
	 * to be called on the first call to the getState() method unless the model&lt;br /&gt;
	 * configuration flag to ignore the request is set.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Note. Calling getState in this method will result in recursion.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	void&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function populateState()&lt;br /&gt;
	{&lt;br /&gt;
		// Get the message id&lt;br /&gt;
		$jinput = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$id     = $jinput-&amp;gt;get(&#039;id&#039;, 1, &#039;INT&#039;);&lt;br /&gt;
		$this-&amp;gt;setState(&#039;message.id&#039;, $id);&lt;br /&gt;
&lt;br /&gt;
		// Load the parameters.&lt;br /&gt;
		$this-&amp;gt;setState(&#039;params&#039;, JFactory::getApplication()-&amp;gt;getParams());&lt;br /&gt;
		parent::populateState();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get a table object, load it if necessary.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param   string  $type    The table name. Optional.&lt;br /&gt;
	 * @param   string  $prefix  The class prefix. Optional.&lt;br /&gt;
	 * @param   array   $config  Configuration array for model. Optional.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  JTable  A JTable object&lt;br /&gt;
	 *&lt;br /&gt;
	 * @since   1.6&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array())&lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get the message&lt;br /&gt;
	 * @return object The message to be displayed to the user&lt;br /&gt;
	 */&lt;br /&gt;
	public function getItem()&lt;br /&gt;
	{&lt;br /&gt;
		if (!isset($this-&amp;gt;item)) &lt;br /&gt;
		{&lt;br /&gt;
			$id    = $this-&amp;gt;getState(&#039;message.id&#039;);&lt;br /&gt;
			$db    = JFactory::getDbo();&lt;br /&gt;
			$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
			$query-&amp;gt;select(&#039;h.greeting, h.params, h.image as image, c.title as category&#039;)&lt;br /&gt;
				  -&amp;gt;from(&#039;#__helloworld as h&#039;)&lt;br /&gt;
				  -&amp;gt;leftJoin(&#039;#__categories as c ON h.catid=c.id&#039;)&lt;br /&gt;
				  -&amp;gt;where(&#039;h.id=&#039; . (int)$id);&lt;br /&gt;
			$db-&amp;gt;setQuery((string)$query);&lt;br /&gt;
		&lt;br /&gt;
			if ($this-&amp;gt;item = $db-&amp;gt;loadObject()) &lt;br /&gt;
			{&lt;br /&gt;
				// Load the JSON string&lt;br /&gt;
				$params = new JRegistry;&lt;br /&gt;
				$params-&amp;gt;loadString($this-&amp;gt;item-&amp;gt;params, &#039;JSON&#039;);&lt;br /&gt;
				$this-&amp;gt;item-&amp;gt;params = $params;&lt;br /&gt;
&lt;br /&gt;
				// Merge global params with item params&lt;br /&gt;
				$params = clone $this-&amp;gt;getState(&#039;params&#039;);&lt;br /&gt;
				$params-&amp;gt;merge($this-&amp;gt;item-&amp;gt;params);&lt;br /&gt;
				$this-&amp;gt;item-&amp;gt;params = $params;&lt;br /&gt;
&lt;br /&gt;
				// Convert the JSON-encoded image info into an array&lt;br /&gt;
				$image = new JRegistry;&lt;br /&gt;
				$image-&amp;gt;loadString($this-&amp;gt;item-&amp;gt;image, &#039;JSON&#039;);&lt;br /&gt;
				$this-&amp;gt;item-&amp;gt;imageDetails = $image;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return $this-&amp;gt;item;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&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;site/views/helloworld/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/views/helloworld/tmpl/default.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;16-27&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;item-&amp;gt;greeting.(($this-&amp;gt;item-&amp;gt;category and $this-&amp;gt;item-&amp;gt;params-&amp;gt;get(&#039;show_category&#039;))&lt;br /&gt;
                                      ? (&#039; (&#039;.$this-&amp;gt;item-&amp;gt;category.&#039;)&#039;) : &#039;&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    $src = $this-&amp;gt;item-&amp;gt;imageDetails[&#039;image&#039;];&lt;br /&gt;
    if ($src)&lt;br /&gt;
    {&lt;br /&gt;
        $html = &#039;&amp;lt;figure&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;%s&amp;quot; alt=&amp;quot;%s&amp;quot; &amp;gt;&lt;br /&gt;
                    &amp;lt;figcaption&amp;gt;%s&amp;lt;/figcaption&amp;gt;&lt;br /&gt;
                &amp;lt;/figure&amp;gt;&#039;;&lt;br /&gt;
        $alt = $this-&amp;gt;item-&amp;gt;imageDetails[&#039;alt&#039;];&lt;br /&gt;
        $caption = $this-&amp;gt;item-&amp;gt;imageDetails[&#039;caption&#039;];&lt;br /&gt;
        echo sprintf($html, $src, $alt, $caption);&lt;br /&gt;
    } ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Site Helloworld Form == &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; We&#039;ll enhance this form to allow the user to upload an image, together with the associated caption and alt text, so we&#039;ll need those fields in the XML form definition.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/models/forms/add-form.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/models/forms/add-form.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;37-64&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&lt;br /&gt;
    addrulepath=&amp;quot;/administrator/components/com_helloworld/models/rules&amp;quot;&lt;br /&gt;
    &amp;gt;&lt;br /&gt;
    &amp;lt;fieldset&lt;br /&gt;
				name=&amp;quot;details&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_DETAILS&amp;quot;&lt;br /&gt;
	&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;
				validate=&amp;quot;greeting&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
                hint=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_HINT&amp;quot;&lt;br /&gt;
				default=&amp;quot;&amp;quot;&lt;br /&gt;
				/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
				name=&amp;quot;catid&amp;quot;&lt;br /&gt;
				type=&amp;quot;category&amp;quot;&lt;br /&gt;
				extension=&amp;quot;com_helloworld&amp;quot;&lt;br /&gt;
				class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
				default=&amp;quot;&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
				&amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JOPTION_SELECT_CATEGORY&amp;lt;/option&amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
		&amp;lt;fields name=&amp;quot;imageinfo&amp;quot; label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_IMAGE_LABEL&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;image&amp;quot;&lt;br /&gt;
				type=&amp;quot;file&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_PICTURE_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_PICTURE_DESC&amp;quot; &lt;br /&gt;
				accept=&amp;quot;image/*&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
			&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
 				name=&amp;quot;caption&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_CAPTION_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_CAPTION_DESC&amp;quot;&lt;br /&gt;
				size=&amp;quot;40&amp;quot;&lt;br /&gt;
				class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
			&amp;lt;/field&amp;gt;&lt;br /&gt;
			&amp;lt;field&lt;br /&gt;
				name=&amp;quot;alt&amp;quot;&lt;br /&gt;
				type=&amp;quot;text&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_ALTTEXT_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_ALTTEXT_DESC&amp;quot;&lt;br /&gt;
				size=&amp;quot;40&amp;quot;&lt;br /&gt;
				class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
			&amp;lt;/field&amp;gt;&lt;br /&gt;
		&amp;lt;/fields&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
				name=&amp;quot;message&amp;quot;&lt;br /&gt;
				type=&amp;quot;textarea&amp;quot;&lt;br /&gt;
				rows=&amp;quot;5&amp;quot;&lt;br /&gt;
				cols=&amp;quot;80&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_MESSAGE_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_MESSAGE_DESC&amp;quot;&lt;br /&gt;
				hint=&amp;quot;COM_HELLOWORLD_HELLOWORLD_MESSAGE_HINT&amp;quot;&lt;br /&gt;
				required=&amp;quot;true&amp;quot;&lt;br /&gt;
				&amp;gt;&lt;br /&gt;
        &amp;lt;/field&amp;gt;&lt;br /&gt;
        &amp;lt;field&lt;br /&gt;
				name=&amp;quot;captcha&amp;quot;&lt;br /&gt;
				type=&amp;quot;captcha&amp;quot;&lt;br /&gt;
				label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_LABEL&amp;quot;&lt;br /&gt;
				description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_DESC&amp;quot;&lt;br /&gt;
                validate=&amp;quot;captcha&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
		&amp;lt;/field&amp;gt;&lt;br /&gt;
        &amp;lt;fields name=&amp;quot;params&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;field&lt;br /&gt;
                    name=&amp;quot;show_category&amp;quot;&lt;br /&gt;
                    type=&amp;quot;list&amp;quot;&lt;br /&gt;
                    label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL&amp;quot;&lt;br /&gt;
                    description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC&amp;quot;&lt;br /&gt;
                    default=&amp;quot;&amp;quot;&lt;br /&gt;
                    useglobal=&amp;quot;true&amp;quot;&lt;br /&gt;
            &amp;gt;&lt;br /&gt;
                &amp;lt;option value=&amp;quot;0&amp;quot;&amp;gt;JHIDE&amp;lt;/option&amp;gt;&lt;br /&gt;
                &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;JSHOW&amp;lt;/option&amp;gt;&lt;br /&gt;
            &amp;lt;/field&amp;gt;&lt;br /&gt;
        &amp;lt;/fields&amp;gt;&lt;br /&gt;
    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; Let&#039;s now consider the image data conversion between the database and the form.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; In the direction database to form, in the front end we&#039;re not going to be editing an existing record, we&#039;re just allowing the user to enter a new record, so we don&#039;t need to worry about conversion in this direction.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
In the direction form to database, the model save() method is using JTable functionality to write to the database, so the bind() method override which we wrote above will apply on the site side as well. So this is covered ok too; we just needed to ensure that the fields in our add-form.xml above had name attributes which are the same as those in the admin form helloworld.xml above.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In terms of displaying the front-end form, our controller, (form) view and (form) model will not require any changes. Our layout file will require the attribute &amp;lt;tt&amp;gt;enctype=&amp;quot;multipart/form-data&amp;quot;&amp;lt;/tt&amp;gt; added to the &amp;lt;tt&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/tt&amp;gt; tag to enable a file upload.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/views/form/tmpl/edit.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/views/form/tmpl/edit.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;19&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Administrator&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 *&lt;br /&gt;
 * This layout file is for displaying the front end form for capturing a new helloworld message&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.formvalidator&#039;);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;view=form&amp;amp;layout=edit&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; class=&amp;quot;form-validate&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;div class=&amp;quot;form-horizontal&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::_(&#039;COM_HELLOWORLD_LEGEND_DETAILS&#039;) ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
			&amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;?php echo $this-&amp;gt;form-&amp;gt;renderFieldset(&#039;details&#039;);  ?&amp;gt;&lt;br /&gt;
				&amp;lt;/div&amp;gt;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
	&amp;lt;div class=&amp;quot;btn-toolbar&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;btn-group&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btn btn-primary&amp;quot; onclick=&amp;quot;Joomla.submitbutton(&#039;helloworld.save&#039;)&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;span class=&amp;quot;icon-ok&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;?php echo JText::_(&#039;JSAVE&#039;) ?&amp;gt;&lt;br /&gt;
			&amp;lt;/button&amp;gt;&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;btn-group&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btn&amp;quot; onclick=&amp;quot;Joomla.submitbutton(&#039;helloworld.cancel&#039;)&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;span class=&amp;quot;icon-cancel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;?php echo JText::_(&#039;JCANCEL&#039;) ?&amp;gt;&lt;br /&gt;
			&amp;lt;/button&amp;gt;&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&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;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; And there are significant changes in our controller which handles the HTTP POST from the form.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/controllers/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/controllers/helloworld.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; highlight=&amp;quot;67-70,106-107,110-176,185,188-189&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package     Joomla.Site&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
 * @license     GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
 */&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Controller&lt;br /&gt;
 *&lt;br /&gt;
 * @package     Joomla.Site&lt;br /&gt;
 * @subpackage  com_helloworld&lt;br /&gt;
 *&lt;br /&gt;
 * Used to handle the http POST from the front-end form which allows &lt;br /&gt;
 * users to enter a new helloworld message&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorld extends JControllerForm&lt;br /&gt;
{   &lt;br /&gt;
	public function cancel($key = null)&lt;br /&gt;
	{&lt;br /&gt;
		parent::cancel($key);&lt;br /&gt;
        &lt;br /&gt;
		// set up the redirect back to the same form&lt;br /&gt;
		$this-&amp;gt;setRedirect(&lt;br /&gt;
			(string)JUri::getInstance(), &lt;br /&gt;
			JText::_(COM_HELLOWORLD_ADD_CANCELLED)&lt;br /&gt;
			);&lt;br /&gt;
	}&lt;br /&gt;
    &lt;br /&gt;
	/*&lt;br /&gt;
	 * Function handing the save for adding a new helloworld record&lt;br /&gt;
	 * Based on the save() function in the JControllerForm class&lt;br /&gt;
	 */&lt;br /&gt;
	public function save($key = null, $urlVar = null)&lt;br /&gt;
	{&lt;br /&gt;
		// Check for request forgeries.&lt;br /&gt;
		JSession::checkToken() or jexit(JText::_(&#039;JINVALID_TOKEN&#039;));&lt;br /&gt;
        &lt;br /&gt;
		$app = JFactory::getApplication(); &lt;br /&gt;
		$input = $app-&amp;gt;input; &lt;br /&gt;
		$model = $this-&amp;gt;getModel(&#039;form&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// Get the current URI to set in redirects. As we&#039;re handling a POST, &lt;br /&gt;
		// this URI comes from the &amp;lt;form action=&amp;quot;...&amp;quot;&amp;gt; attribute in the layout file above&lt;br /&gt;
		$currentUri = (string)JUri::getInstance();&lt;br /&gt;
&lt;br /&gt;
		// Check that this user is allowed to add a new record&lt;br /&gt;
		if (!JFactory::getUser()-&amp;gt;authorise( &amp;quot;core.create&amp;quot;, &amp;quot;com_helloworld&amp;quot;))&lt;br /&gt;
		{&lt;br /&gt;
			$app-&amp;gt;enqueueMessage(JText::_(&#039;JERROR_ALERTNOAUTHOR&#039;), &#039;error&#039;);&lt;br /&gt;
			$app-&amp;gt;setHeader(&#039;status&#039;, 403, true);&lt;br /&gt;
&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// get the data from the HTTP POST request&lt;br /&gt;
		$data  = $input-&amp;gt;get(&#039;jform&#039;, array(), &#039;array&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// set up context for saving form data&lt;br /&gt;
		$context = &amp;quot;$this-&amp;gt;option.edit.$this-&amp;gt;context&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		// save the form data and set up the redirect back to the same form, &lt;br /&gt;
		// to avoid repeating them under every error condition&lt;br /&gt;
		$app-&amp;gt;setUserState($context . &#039;.data&#039;, $data);&lt;br /&gt;
		$this-&amp;gt;setRedirect($currentUri);&lt;br /&gt;
        &lt;br /&gt;
		// Validate the posted data.&lt;br /&gt;
		// First we need to set up an instance of the form ...&lt;br /&gt;
		$form = $model-&amp;gt;getForm($data, false);&lt;br /&gt;
&lt;br /&gt;
		if (!$form)&lt;br /&gt;
		{&lt;br /&gt;
			$app-&amp;gt;enqueueMessage($model-&amp;gt;getError(), &#039;error&#039;);&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ... and then we validate the data against it&lt;br /&gt;
		// The validate function called below results in the running of the validate=&amp;quot;...&amp;quot; routines&lt;br /&gt;
		// specified against the fields in the form xml file, and also filters the data &lt;br /&gt;
		// according to the filter=&amp;quot;...&amp;quot; specified in the same place (removing html tags by default in strings)&lt;br /&gt;
		$validData = $model-&amp;gt;validate($form, $data);&lt;br /&gt;
&lt;br /&gt;
		// Handle the case where there are validation errors&lt;br /&gt;
		if ($validData === false)&lt;br /&gt;
		{&lt;br /&gt;
			// Get the validation messages.&lt;br /&gt;
			$errors = $model-&amp;gt;getErrors();&lt;br /&gt;
&lt;br /&gt;
			// Display up to three validation messages to the user.&lt;br /&gt;
			for ($i = 0, $n = count($errors); $i &amp;lt; $n &amp;amp;&amp;amp; $i &amp;lt; 3; $i++)&lt;br /&gt;
			{&lt;br /&gt;
				if ($errors[$i] instanceof Exception)&lt;br /&gt;
				{&lt;br /&gt;
					$app-&amp;gt;enqueueMessage($errors[$i]-&amp;gt;getMessage(), &#039;warning&#039;);&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					$app-&amp;gt;enqueueMessage($errors[$i], &#039;warning&#039;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Handle the uploaded file - get it from the PHP $_FILES structure&lt;br /&gt;
		$fileinfo = $this-&amp;gt;input-&amp;gt;files-&amp;gt;get(&#039;jform&#039;, array(), &#039;array&#039;);&lt;br /&gt;
		$file = $fileinfo[&#039;imageinfo&#039;][&#039;image&#039;];&lt;br /&gt;
		/* The $file variable above should contain an array of 5 elements as follows:&lt;br /&gt;
		 *   name: the name of the file (on the system from which it was uploaded), without directory info&lt;br /&gt;
		 *   type: should be something like image/jpeg&lt;br /&gt;
		 *   tmp_name: pathname of the file where PHP has stored the uploaded data &lt;br /&gt;
		 *   error: 0 if no error&lt;br /&gt;
		 *   size: size of the file in bytes&lt;br /&gt;
		 */&lt;br /&gt;
        &lt;br /&gt;
		// Check if any files have been uploaded&lt;br /&gt;
		if ($file[&#039;error&#039;] == 4)   // no file uploaded (see PHP file upload error conditions)&lt;br /&gt;
		{&lt;br /&gt;
			$validData[&#039;imageinfo&#039;] = null;&lt;br /&gt;
		} &lt;br /&gt;
		else &lt;br /&gt;
		{&lt;br /&gt;
			if ($file[&#039;error&#039;] &amp;gt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				$app-&amp;gt;enqueueMessage(JText::sprintf(&#039;COM_HELLOWORLD_ERROR_FILEUPLOAD&#039;, $file[&#039;error&#039;]), &#039;warning&#039;);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
            &lt;br /&gt;
			// make sure filename is clean&lt;br /&gt;
			jimport(&#039;joomla.filesystem.file&#039;);&lt;br /&gt;
			$file[&#039;name&#039;] = JFile::makeSafe($file[&#039;name&#039;]);&lt;br /&gt;
			if (!isset($file[&#039;name&#039;]))&lt;br /&gt;
			{&lt;br /&gt;
				// No filename (after the name was cleaned by JFile::makeSafe)&lt;br /&gt;
				$app-&amp;gt;enqueueMessage(JText::_(&#039;COM_HELLOWORLD_ERROR_BADFILENAME&#039;), &#039;warning&#039;);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// files from Microsoft Windows can have spaces in the filenames&lt;br /&gt;
			$file[&#039;name&#039;] = str_replace(&#039; &#039;, &#039;-&#039;, $file[&#039;name&#039;]);&lt;br /&gt;
&lt;br /&gt;
			// do checks against Media configuration parameters&lt;br /&gt;
			$mediaHelper = new JHelperMedia;&lt;br /&gt;
			if (!$mediaHelper-&amp;gt;canUpload($file))&lt;br /&gt;
			{&lt;br /&gt;
				// The file can&#039;t be uploaded - the helper class will have enqueued the error message&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
            &lt;br /&gt;
			// prepare the uploaded file&#039;s destination pathnames&lt;br /&gt;
			$mediaparams = JComponentHelper::getParams(&#039;com_media&#039;);&lt;br /&gt;
			$relativePathname = JPath::clean($mediaparams-&amp;gt;get($path, &#039;images&#039;) . &#039;/&#039; . $file[&#039;name&#039;]);&lt;br /&gt;
			$absolutePathname = JPATH_ROOT . &#039;/&#039; . $relativePathname;&lt;br /&gt;
			if (JFile::exists($absolutePathname))&lt;br /&gt;
			{&lt;br /&gt;
				// A file with this name already exists&lt;br /&gt;
				$app-&amp;gt;enqueueMessage(JText::_(&#039;COM_HELLOWORLD_ERROR_FILE_EXISTS&#039;), &#039;warning&#039;);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
            &lt;br /&gt;
			// check file contents are clean, and copy it to destination pathname&lt;br /&gt;
			if (!JFile::upload($file[&#039;tmp_name&#039;], $absolutePathname))&lt;br /&gt;
			{&lt;br /&gt;
				// Error in upload&lt;br /&gt;
				$app-&amp;gt;enqueueMessage(JText::_(&#039;COM_HELLOWORLD_ERROR_UNABLE_TO_UPLOAD_FILE&#039;));&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
            &lt;br /&gt;
			// Upload succeeded, so update the relative filename for storing in database&lt;br /&gt;
			$validData[&#039;imageinfo&#039;][&#039;image&#039;] = $relativePathname;&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// add the &#039;created by&#039; and &#039;created&#039; date fields&lt;br /&gt;
		$validData[&#039;created_by&#039;] = JFactory::getUser()-&amp;gt;get(&#039;id&#039;, 0);&lt;br /&gt;
		$validData[&#039;created&#039;] = date(&#039;Y-m-d h:i:s&#039;);&lt;br /&gt;
        &lt;br /&gt;
		// Attempt to save the data.&lt;br /&gt;
		if (!$model-&amp;gt;save($validData))&lt;br /&gt;
		{&lt;br /&gt;
			// Handle the case where the save failed&lt;br /&gt;
			$this-&amp;gt;setError(JText::sprintf(&#039;JLIB_APPLICATION_ERROR_SAVE_FAILED&#039;, $model-&amp;gt;getError()));&lt;br /&gt;
			$this-&amp;gt;setMessage($this-&amp;gt;getError(), &#039;error&#039;);&lt;br /&gt;
&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// clear the data in the form&lt;br /&gt;
		$app-&amp;gt;setUserState($context . &#039;.data&#039;, null);&lt;br /&gt;
        &lt;br /&gt;
		// notify the administrator that a new helloworld message has been added on the front end&lt;br /&gt;
        &lt;br /&gt;
		// get the id of the person to notify from global config&lt;br /&gt;
		$params   = $app-&amp;gt;getParams();&lt;br /&gt;
		$userid_to_email = (int) $params-&amp;gt;get(&#039;user_to_email&#039;);&lt;br /&gt;
		$user_to_email = JUser::getInstance($userid_to_email);&lt;br /&gt;
		$to_address = $user_to_email-&amp;gt;get(&amp;quot;email&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
		// get the current user (if any)&lt;br /&gt;
		$current_user = JFactory::getUser();&lt;br /&gt;
		if ($current_user-&amp;gt;get(&amp;quot;id&amp;quot;) &amp;gt; 0) &lt;br /&gt;
		{&lt;br /&gt;
			$current_username = $current_user-&amp;gt;get(&amp;quot;username&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else &lt;br /&gt;
		{&lt;br /&gt;
			$current_username = &amp;quot;a visitor to the site&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		// get the Mailer object, set up the email to be sent, and send it&lt;br /&gt;
		$mailer = JFactory::getMailer();&lt;br /&gt;
		$mailer-&amp;gt;addRecipient($to_address);&lt;br /&gt;
		$mailer-&amp;gt;setSubject(&amp;quot;New helloworld message added by &amp;quot; . $current_username);&lt;br /&gt;
		$mailer-&amp;gt;setBody(&amp;quot;New greeting is &amp;quot; . $validData[&#039;greeting&#039;]);&lt;br /&gt;
		try &lt;br /&gt;
		{&lt;br /&gt;
			$mailer-&amp;gt;send(); &lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			JLog::add(&#039;Caught exception: &#039; . $e-&amp;gt;getMessage(), JLog::Error, &#039;jerror&#039;);&lt;br /&gt;
		}&lt;br /&gt;
        &lt;br /&gt;
		$this-&amp;gt;setRedirect(&lt;br /&gt;
				$currentUri,&lt;br /&gt;
				JText::_(&#039;COM_HELLOWORLD_ADD_SUCCESSFUL&#039;)&lt;br /&gt;
				);&lt;br /&gt;
            &lt;br /&gt;
		return true;&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Updated Language Strings == &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;site/language/en-GB/en-GB.com_helloworld.ini&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;site/language/en-GB/en-GB.com_helloworld.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot; highlight=&amp;quot;18-24,28-33&amp;quot;&amp;gt;&lt;br /&gt;
; add new message form&lt;br /&gt;
COM_HELLOWORLD_LEGEND_DETAILS=&amp;quot;New Helloworld Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CREATING=&amp;quot;Add message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ERROR_UNACCEPTABLE=&amp;quot;Sorry, you have an error&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_DETAILS=&amp;quot;Message details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_DESC=&amp;quot;Please specify the greeting to add&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_HINT=&amp;quot;Letters only!&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL=&amp;quot;Category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC=&amp;quot;Please select the associated category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_MESSAGE_LABEL=&amp;quot;Reason&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_MESSAGE_DESC=&amp;quot;Please say why you&#039;re adding this greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_MESSAGE_HINT=&amp;quot;No HTML tags!&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_LABEL=&amp;quot;Spam protection&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_DESC=&amp;quot;Prove you&#039;re a real person!&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL=&amp;quot;Display category or not?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC=&amp;quot;Select if you want the category displayed too&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_IMAGE_LABEL=&amp;quot;Image information&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_PICTURE_LABEL=&amp;quot;Image file to upload&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_PICTURE_DESC=&amp;quot;Select the file with the image to upload&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CAPTION_LABEL=&amp;quot;Caption&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CAPTION_DESC=&amp;quot;Text to use as a caption for the image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ALTTEXT_LABEL=&amp;quot;Alt text&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ALTTEXT_DESC=&amp;quot;Text to display if image cannot be shown&amp;quot;&lt;br /&gt;
; save and cancel confirmation messages&lt;br /&gt;
COM_HELLOWORLD_ADD_SUCCESSFUL=&amp;quot;New greeting successfully saved&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ADD_CANCELLED=&amp;quot;New greeting cancelled ok&amp;quot;&lt;br /&gt;
; file upload error conditions&lt;br /&gt;
COM_HELLOWORLD_ERROR_FILEUPLOAD=&amp;quot;PHP Error %s encountered when uploading file&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ERROR_FILETOOLARGE=&amp;quot;Upload file exceeds max size configured in Joomla&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ERROR_BADFILENAME=&amp;quot;Upload file has an invalid filename&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ERROR_FILE_EXISTS=&amp;quot;Upload file already exists&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ERROR_UNABLE_TO_UPLOAD_FILE=&amp;quot;Error creating uploaded file&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/language/en-GB/en-GB.com_helloworld.ini&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;admin/language/en-GB/en-GB.com_helloworld.ini&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot; highlight=&amp;quot;14,27-33,63,67&amp;quot;&amp;gt;&lt;br /&gt;
; Joomla! Project&lt;br /&gt;
; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.&lt;br /&gt;
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php&lt;br /&gt;
; Note : All ini files need to be saved as UTF-8&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION=&amp;quot;HelloWorld - Administration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ADMINISTRATION_CATEGORIES=&amp;quot;HelloWorld - Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_NUM=&amp;quot;#&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_FILTER=&amp;quot;Filters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR=&amp;quot;Author&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_DATE=&amp;quot;Created&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED=&amp;quot;Published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_NAME=&amp;quot;Name&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLDS_IMAGE=&amp;quot;Image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_CREATING=&amp;quot;HelloWorld - Creating&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_DETAILS=&amp;quot;Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_EDITING=&amp;quot;HelloWorld - Editing&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_ERROR_UNACCEPTABLE=&amp;quot;Some values are unacceptable&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_DESC=&amp;quot;The category the messages belongs to&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CATID_LABEL=&amp;quot;Category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC=&amp;quot;This message will be displayed&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL=&amp;quot;Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_LABEL=&amp;quot;Show category&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_SHOW_CATEGORY_DESC=&amp;quot;If set to Show, the title of the message&amp;amp;rsquo;s category will show.&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_IMAGE_FIELDS=&amp;quot;Image details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_LABEL=&amp;quot;Select image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_IMAGE_DESC=&amp;quot;Select an image from the library, or upload a new one&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_LABEL=&amp;quot;Alt text&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_ALT_DESC=&amp;quot;Alternative text (if image cannot be displayed)&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_LABEL=&amp;quot;Caption&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTION_DESC=&amp;quot;Provide a caption for the image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_HEADING_ID=&amp;quot;Id&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT=&amp;quot;HelloWorld manager: Edit Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW=&amp;quot;HelloWorld manager: New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_MANAGER_HELLOWORLDS=&amp;quot;HelloWorld manager&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_EDIT_HELLOWORLD=&amp;quot;Edit message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_1=&amp;quot;One message deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_DELETED_MORE=&amp;quot;%d messages deleted&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_PUBLISHED=&amp;quot;%d message(s) published&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_N_ITEMS_UNPUBLISHED=&amp;quot;%d message(s) unpublished&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL=&amp;quot;Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_GREETING_DESC=&amp;quot;Add Hello World Greeting&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_MESSAGES=&amp;quot;Messages&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_SUBMENU_CATEGORIES=&amp;quot;Categories&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIGURATION=&amp;quot;HelloWorld Configuration&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_LABEL=&amp;quot;Messages settings&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CONFIG_GREETING_SETTINGS_DESC=&amp;quot;Settings that will be applied to all messages by default&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_LABEL=&amp;quot;Captcha&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_CAPTCHA_DESC=&amp;quot;Select Captcha to use on front end form&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_USER_TO_EMAIL_LABEL=&amp;quot;User to email&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_HELLOWORLD_FIELD_USER_TO_EMAIL_DESC=&amp;quot;Select user to email when a new message is entered on front end&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_FIELDSET_RULES=&amp;quot;Message Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_FIELD_RULES_LABEL=&amp;quot;Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ACCESS_DELETE_DESC=&amp;quot;Is this group allowed to edit this message?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ACCESS_DELETE_DESC=&amp;quot;Is this group allowed to delete this message?&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_NEW_MESSAGE=&amp;quot;New Message&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_EDIT_MESSAGE=&amp;quot;Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_PARAMS=&amp;quot;Parameters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_PERMISSIONS=&amp;quot;Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_TAB_IMAGE=&amp;quot;Image&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_DETAILS=&amp;quot;Message Details&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_PARAMS=&amp;quot;Message Parameters&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_PERMISSIONS=&amp;quot;Message Permissions&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_LEGEND_IMAGE=&amp;quot;Image info&amp;quot;&lt;br /&gt;
; Column ordering in the Helloworlds view&lt;br /&gt;
COM_HELLOWORLD_ORDERING_ASC=&amp;quot;Greeting ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_ORDERING_DESC=&amp;quot;Greeting descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR_ASC=&amp;quot;Author ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_AUTHOR_DESC=&amp;quot;Author descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_ASC=&amp;quot;Creation date ascending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_CREATED_DESC=&amp;quot;Creation date descending&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED_ASC=&amp;quot;Unpublished first&amp;quot;&lt;br /&gt;
COM_HELLOWORLD_PUBLISHED_DESC=&amp;quot;Published first&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Packaging the Component== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Contents of your code directory. Each file link below takes you to the step in the tutorial which has the latest version of that source code file.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding an install-uninstall-update script file#script.php|script.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/controllers/helloworld.php|site/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/form/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/views/form/view.html.php|site/views/form/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/form/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/views/form/tmpl/edit.php|site/views/form/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/views/form/tmpl/edit.xml|site/views/form/tmpl/edit.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#site/models/form.php|site/models/form.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#site/models/forms/add-form.xml|site/models/forms/add-form.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding_an_Image#site/language/en-GB/en-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/config.xml|admin/config.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/access.xml|admin/access.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/helpers/helloworld.php|admin/helpers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/helpers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/sql/updates/mysql/0.0.12.sql|admin/sql/updates/mysql/0.0.12.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_configuration#admin/sql/updates/mysql/0.0.13.sql|admin/sql/updates/mysql/0.0.13.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/sql/updates/mysql/0.0.14.sql|admin/sql/updates/mysql/0.0.14.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#admin/sql/updates/mysql/0.0.16.sql|admin/sql/updates/mysql/0.0.16.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/sql/updates/mysql/0.0.17.sql|admin/sql/updates/mysql/0.0.17.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_categories#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/models/helloworld.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#admin/models/forms/filter_helloworlds.xml|admin/models/forms/filter_helloworlds.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/models/forms/helloworld.js|admin/models/forms/helloworld.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/models/rules/greeting.php|admin/models/rules/greeting.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/rules/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_ACL#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_verifications#admin/views/helloworld/submitbutton.js|admin/views/helloworld/submitbutton.js]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_a_front-end_form#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Adding_an_Image#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding_an_Image#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing an MVC Component/Adding_a_front-end_form#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|media/images/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-16x16.png]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_decorations_to_the_backend#Adding_some_icons|media/images/tux-48x48.png]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;helloworld.xml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot; highlight=&amp;quot;13&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;3.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;COM_HELLOWORLD&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;February 2015&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.17&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Runs on install/uninstall/update; New in 2.5 --&amp;gt;&lt;br /&gt;
	&amp;lt;scriptfile&amp;gt;script.php&amp;lt;/scriptfile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&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;languages folder=&amp;quot;site/language&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;en-GB/en-GB.com_helloworld.ini&amp;lt;/language&amp;gt;&lt;br /&gt;
        &amp;lt;/languages&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;media destination=&amp;quot;com_helloworld&amp;quot; folder=&amp;quot;media&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;images&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/media&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039; img=&amp;quot;../media/com_helloworld/images/tux-16x16.png&amp;quot;&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;config.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;access.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- helpers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;helpers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
		&amp;lt;languages folder=&amp;quot;admin/language&amp;quot;&amp;gt;&lt;br /&gt;
        		&amp;lt;language tag=&amp;quot;en-GB&amp;quot;&amp;gt;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;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;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Contributors == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
*[[User:Robbiej|Robbie Jackson]]&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding a front-end form|Prev: Adding a front-end form&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding a Map|Next: Adding a map&amp;lt;/translate&amp;gt;|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.1{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.2{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.3{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.4{{#translation:}}]]&lt;br /&gt;
[[Category:Beginner Development{{#translation:}}]]&lt;br /&gt;
[[Category:Component Development{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials in a Series{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Es ka</name></author>
	</entry>
</feed>