<?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=ADaneInSpain</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=ADaneInSpain"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/ADaneInSpain"/>
	<updated>2026-06-28T10:51:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Tag_form_field_type&amp;diff=645699</id>
		<title>Talk:Tag form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Tag_form_field_type&amp;diff=645699"/>
		<updated>2020-01-22T13:10:40Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Created page with &amp;quot;How is &amp;quot;mode&amp;quot; optional? Surely is must be either &amp;quot;ajax&amp;quot; or &amp;quot;nested&amp;quot; and how is it translatable?&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How is &amp;quot;mode&amp;quot; optional? Surely is must be either &amp;quot;ajax&amp;quot; or &amp;quot;nested&amp;quot; and how is it translatable?&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:User_Action_Logs&amp;diff=628005</id>
		<title>J3.x:User Action Logs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:User_Action_Logs&amp;diff=628005"/>
		<updated>2019-09-11T08:01:33Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Made code examples all assume that we &amp;#039;use \Joomla\CMS\Factory&amp;#039; as there was inconsistancy&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;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.9}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{Top portal heading|color=white-bkgd|icon=magic|icon-color=#5091cd|size=3x|text-color=#333|title=&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Tutorial&amp;lt;br /&amp;gt;&lt;br /&gt;
How to Use the New Action Logging System&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
As of Joomla 3.9, Joomla introduced an action logging system.&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; This system is the finalization of the [https://magazine.joomla.org/issues/issue-aug-2016/item/3111-gsoc-recording-actions-logs-accessible-by-super-admin-status-update &amp;quot;Recording Action Logs&amp;quot; project from GSoC 2016]. This system provides an infrastructure to create an audit log of activity performed on a website and can be fine tuned to the site admin&#039;s preferences. Extensions are able to hook into this system to add custom messages or have the system process standard CRUD actions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
In this tutorial, you will find information on how to set up this new system.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Note: Only Super Users have access to the Action Logging system.&amp;lt;/translate&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Component== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===User Actions Log Dashboard=== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Navigate to {{rarr|Users,User Actions Log}} to access the dashboard.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Joomla-39-action-logs-dashboard-&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; From this screen a Super User has a global overview of all activities performed on a site by users and has the ability to review, export, delete and purge entries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
To learn more, please see:&lt;br /&gt;
*[[S:MyLanguage/Help38:Components_Actionlogs|User Actions Log interface]] &lt;br /&gt;
*[[S:MyLanguage/Help38:Components_User_Actionlogs_Options| User Actions Log Options]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Plugin== &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===System - User Actions Log=== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; Once enabled, this plugin allows to define the number of days after which the logs will be deleted.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Action Log=== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; Once enabled, this plugin allows to record the actions of users for the core extensions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Privacy - Action Logs=== &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; Once enabled, this plugin allows to export the action log data for a user&#039;s privacy request.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Module== &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Action Logs - Latest Module=== &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; This admin module shows on the control panel a list of the latest actions performed on a site.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Joomla-39-action-logs-latest-module-&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;&#039;Note:&#039;&#039;&#039; The module is not displayed by default on sites upgrading to Joomla 3.9. In order to display it on your control panel, navigate to {{rarr|Extensions,Manage,Manage,Enable the System - User Actions Log plugin}} and then go to {{rarr|Extensions,Modules,Administrator,New,Action Logs-Latest}}&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; Please see also: [[S:MyLanguage/Help38:Extensions_Module_Manager_Admin_Latestactions|Latest Actions Admin Module]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==How to hook an extension to the system== &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt; &lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; Please feel free to edit this section by improving or correcting it.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
===Component Installation Script===&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; Add the extension to the table (#__action_logs_extensions) so that it will appear in the configuration of User Action Logs.&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
        $extension = &#039;com_mycomponent&#039;;&lt;br /&gt;
        $db = Factory::getDbo();&lt;br /&gt;
        $db-&amp;gt;setQuery(&#039; INSERT into #__action_logs_extensions (extension) VALUES (&#039;.$db-&amp;gt;Quote($extension).&#039;) &#039; );&lt;br /&gt;
	    try {&lt;br /&gt;
	        // If it fails, it will throw a RuntimeException&lt;br /&gt;
	        $result = $db-&amp;gt;execute();&lt;br /&gt;
	    } catch (RuntimeException $e) {&lt;br /&gt;
	        Factory::getApplication()-&amp;gt;enqueueMessage($e-&amp;gt;getMessage());&lt;br /&gt;
	        return false;&lt;br /&gt;
	    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; Add the extension configuration to the table (#__action_log_config) so that your actions data will be captured.&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$logConf = new stdClass();&lt;br /&gt;
		$logConf-&amp;gt;id = 0;&lt;br /&gt;
		$logConf-&amp;gt;type_title = &#039;transaction&#039;;&lt;br /&gt;
		$logConf-&amp;gt;type_alias = $extension;&lt;br /&gt;
		$logConf-&amp;gt;id_holder = &#039;id&#039;;&lt;br /&gt;
		$logConf-&amp;gt;title_holder = &#039;trans_desc&#039;;&lt;br /&gt;
		$logConf-&amp;gt;table_name = &#039;#__mycomponent_transaction&#039;;&lt;br /&gt;
		$logConf-&amp;gt;text_prefix = &#039;COM_MYCOMPONENT_TRANSACTION&#039;;&lt;br /&gt;
&lt;br /&gt;
	    try {&lt;br /&gt;
	       	// If it fails, it will throw a RuntimeException&lt;br /&gt;
			// Insert the object into the table.&lt;br /&gt;
			$result = Factory::getDbo()-&amp;gt;insertObject(&#039;#__action_log_config&#039;, $logConf);&lt;br /&gt;
	    } catch (RuntimeException $e) {&lt;br /&gt;
	        Factory::getApplication()-&amp;gt;enqueueMessage($e-&amp;gt;getMessage());&lt;br /&gt;
	        return false;&lt;br /&gt;
	    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; Of course it would be best to perform some checking to ensure that the record doesn&#039;t already exist.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Component Helper=== &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; In this example, the component helper is used to perform the storing of actions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Record transaction details in log record&lt;br /&gt;
	 * @param   object  $user    Saves getting the current user again.&lt;br /&gt;
	 * @param   int     $tran_id  The transaction id just created or updated&lt;br /&gt;
	 * @param   int     $id  Passed id reference from the form to identify if new record&lt;br /&gt;
	 * @return  boolean	True&lt;br /&gt;
	 */&lt;br /&gt;
    public static function recordActionLog($user = null, $tran_id = 0, $id = 0)&lt;br /&gt;
	{&lt;br /&gt;
			// get the component details such as the id&lt;br /&gt;
		$extension =  MycomponentHelper::getExtensionDetails(&#039;com_mycomponent&#039;);&lt;br /&gt;
		// get the transaction details for use in the log for easy reference&lt;br /&gt;
        $tran = MycomponentHelper::getTransaction($tran_id);&lt;br /&gt;
        $con_type = &amp;quot;transaction&amp;quot;;&lt;br /&gt;
        if ($id === 0) { $type = &#039;New &#039;; } else { $type = &#039;Update &#039;; }&lt;br /&gt;
&lt;br /&gt;
		$message = array();&lt;br /&gt;
		$message[&#039;action&#039;] = $con_type;&lt;br /&gt;
		$message[&#039;type&#039;] = $type . $tran-&amp;gt;tran_type . &#039; - &#039;.$tran-&amp;gt;tran_desc . &#039; $&#039; . $tran-&amp;gt;tran_amount;&lt;br /&gt;
		$message[&#039;id&#039;] = $tran-&amp;gt;id;&lt;br /&gt;
		$message[&#039;title&#039;] = $extension-&amp;gt;name;&lt;br /&gt;
		$message[&#039;extension_name&#039;] = $extension-&amp;gt;name;&lt;br /&gt;
		$message[&#039;itemlink&#039;] = &amp;quot;index.php?option=com_mycomponent&amp;amp;task=transaction.edit&amp;amp;id=&amp;quot;.$tran-&amp;gt;id;&lt;br /&gt;
		$message[&#039;userid&#039;] = $user-&amp;gt;id;&lt;br /&gt;
		$message[&#039;username&#039;] = $user-&amp;gt;username;&lt;br /&gt;
		$message[&#039;accountlink&#039;] = &amp;quot;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&amp;quot;.$user-&amp;gt;id;&lt;br /&gt;
		&lt;br /&gt;
		$messages = array($message);&lt;br /&gt;
		&lt;br /&gt;
		$messageLanguageKey = Text::_(&#039;COM_MYCOMPONENT_TRANSACTION_LINK&#039;);&lt;br /&gt;
		$context = $extension-&amp;gt;name.&#039;.&#039;.$con_type;&lt;br /&gt;
		&lt;br /&gt;
		$fmodel = MycomponentHelper::getForeignModel(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
&lt;br /&gt;
		$fmodel-&amp;gt;addLog($messages, $messageLanguageKey, $context, $user-&amp;gt;id);&lt;br /&gt;
&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get the Model from another component for use&lt;br /&gt;
	 * @param   string  $name    The model name. Optional. Default to my own for safety.&lt;br /&gt;
	 * @param   string  $prefix  The class prefix. Optional&lt;br /&gt;
	 * @param   array   $config  Configuration array for model. Optional&lt;br /&gt;
	 * @return object	The model&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForeignModel($name = &#039;Transaction&#039;, $prefix = &#039;MycomponentModel&#039;, $config = array(&#039;ignore_request&#039; =&amp;gt; true))&lt;br /&gt;
	{&lt;br /&gt;
		\Joomla\CMS\MVC\Model\ItemModel::addIncludePath(JPATH_ADMINISTRATOR . &#039;/components/com_actionlogs/models&#039;, &#039;ActionlogsModelActionlog&#039;);&lt;br /&gt;
		$fmodel = \Joomla\CMS\MVC\Model\ItemModel::getInstance($name, $prefix, $config);&lt;br /&gt;
&lt;br /&gt;
		return $fmodel;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Front End Transaction Form=== &amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Now that the foundations are set, we just need to trigger the process.  We&#039;re capturing information about a transaction that is created or update and we have a model called &amp;lt;tt&amp;gt;transactionform.php&amp;lt;/tt&amp;gt;.  It is in the Save method that we want to capture a log.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	// So the code above this point checks and does what it should do and then after the successful save of the record, we check for the parameter setting to see if logging is required, we pass key elements to recordActionLog.&lt;br /&gt;
        $table = $this-&amp;gt;getTable();&lt;br /&gt;
&lt;br /&gt;
        if ($table-&amp;gt;save($data) === true) {&lt;br /&gt;
&lt;br /&gt;
			/* ---------------------------------------------------------------- */&lt;br /&gt;
			// trigger transaction log if required&lt;br /&gt;
			$act_log = $params-&amp;gt;get(&#039;act_log&#039;, 0);&lt;br /&gt;
			if ($act_log &amp;amp;&amp;amp; $table-&amp;gt;id) {&lt;br /&gt;
				// gather information and log in a new action log record&lt;br /&gt;
				MycomponentHelper::recordActionLog($user, $table-&amp;gt;id, $data[&#039;id&#039;]);&lt;br /&gt;
			}&lt;br /&gt;
			/* ---------------------------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
            return $table-&amp;gt;id;&lt;br /&gt;
        } else {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
===Language File=== &amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; Finally, to help with the Action Log Listing in the admin side of Joomla, we want to set some key elements of data to be displayed in the language file en-GB.com_mycomponent.ini.&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; COM_MYCOMPONENT_TRANSACTION_LINK=&amp;quot;User &amp;lt;a href=&#039;{accountlink}&#039;&amp;gt;{username}&amp;lt;/a&amp;gt; created a transaction ( &amp;lt;a href=&#039;{itemlink}&#039;&amp;gt;{type}&amp;lt;/a&amp;gt; )&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt; Hope this helps.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 3.9{{#translation:}}]]&lt;br /&gt;
[[Category:Plugins{{#translation:}}]]&lt;br /&gt;
[[Category:Modules{{#translation:}}]]&lt;br /&gt;
[[Category:User Action Logs{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=SQL_form_field_type&amp;diff=627048</id>
		<title>SQL form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=SQL_form_field_type&amp;diff=627048"/>
		<updated>2019-08-28T10:55:08Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Added warning that an important feature of this field does not work.&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;
{{Warning|&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
Using this generic form field type forces you to write SQL in an XML file and is rather limited. For more flexibility, consider creating your own, specific form field type by subclassing the JFormField class.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;sql&#039;&#039;&#039; form field type provides a drop down list of entries obtained by running a query on the Joomla database. If the field has a value saved, this value is selected when the page is first loaded. If not, the default value (if any) is selected.&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[Image:Params.sql.jpg|right]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; (mandatory) must be &#039;&#039;sql&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; (mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the &#039;&#039;&#039;value_field&#039;&#039;&#039; attribute.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;label&#039;&#039;&#039; (mandatory) (translatable) is the descriptive title of the field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;query&#039;&#039;&#039; (mandatory if not using the sql_* attributes) is the SQL query which will provide the data for the drop-down list. The query must return two columns; one called &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;value&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039; (unless overridden by the &#039;&#039;&#039;key_field&#039;&#039;&#039; attribute) which will hold the values of the list items; the other called the same as the value of the name attribute (unless overridden by the &#039;&#039;&#039;value_field&#039;&#039;&#039; attribute) containing the text to be shown in the drop-down list.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;default&#039;&#039;&#039; (optional) is the default value. This is the value of the &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;value&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039; column, unless overridden by the &#039;&#039;&#039;key_field&#039;&#039;&#039; attribute.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039; (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;multiple&#039;&#039;&#039; (optional) turns the field into a multi-selector. Use multiple=&amp;quot;multiple&amp;quot;.&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;key_field&#039;&#039;&#039; (optional) is the name of the column that will contain values for the parameter. If omitted then the column called &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;value&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039; will be used, if it exists.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;value_field&#039;&#039;&#039; (optional) is the name of the column that will contain values to be shown to the user in the drop-down list. If omitted then the column with the same name as the name attribute will be used, if it exists.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;translate&#039;&#039;&#039; (optional) will translate the output of the &#039;&#039;&#039;value_field&#039;&#039;&#039; if set to true. It defaults to false.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;header&#039;&#039;&#039; (optional) (translatable) will add an entry, with an empty value, at the top of the list of options.  This is usually used to add a &#039;&#039;&amp;quot;- Select something -&amp;quot;&#039;&#039; entry to the list.  See the examples for an alternative way of achieving this.&lt;br /&gt;
* &#039;&#039;&#039;sql_select&#039;&#039;&#039; (mandatory if not using the &#039;&#039;&#039;query&#039;&#039;&#039; attribute) is the SELECT clause of the SQL statement.  Only one such clause is permitted.&lt;br /&gt;
* &#039;&#039;&#039;sql_from&#039;&#039;&#039; (mandatory if not using the &#039;&#039;&#039;query&#039;&#039;&#039; attribute) is the FROM clause of the SQL statement.&lt;br /&gt;
* &#039;&#039;&#039;sql_join&#039;&#039;&#039; (optional) is the LEFT JOIN clause of the SQL statement.  Only one such clause is permitted.&lt;br /&gt;
* &#039;&#039;&#039;sql_where&#039;&#039;&#039; (optional) is the WHERE clause of the SQL statement.  Only one such clause is permitted.&lt;br /&gt;
* &#039;&#039;&#039;sql_group&#039;&#039;&#039; (optional) is the GROUP BY clause of the SQL statement.&lt;br /&gt;
* &#039;&#039;&#039;sql_order&#039;&#039;&#039; (optional) is the ORDER BY clause of the SQL statement.&lt;br /&gt;
* &#039;&#039;&#039;sql_filter&#039;&#039;&#039; (optional) filters the list by the value of another field.  A field name or a comma-separated list of field names can be given.  The field names must correspond to column names in the database table being queried.  See the examples for further explanation.&lt;br /&gt;
* &#039;&#039;&#039;sql_default_{FIELD_NAME}&#039;&#039;&#039; (optional) is the default value used by the &#039;&#039;&#039;sql_filter&#039;&#039;&#039; attribute when the value of the &#039;&#039;{FIELD_NAME}&#039;&#039; filter has not been set.  See the examples for further explanation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Example XML parameter definition:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;title&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    default=&amp;quot;10&amp;quot;&lt;br /&gt;
    label=&amp;quot;Select an article&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT id AS value, title FROM #__content&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Notice that an AS clause has been used in this example because the &#039;&#039;jos_content&#039;&#039; table does not have a column called &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;value&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;.  In fact very few tables in the Joomla database have a column called &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;value&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Alternatively, you can use a &#039;&#039;&#039;key_field&#039;&#039;&#039; attribute to define the column to be used instead of &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;value&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;title&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    default=&amp;quot;10&amp;quot;&lt;br /&gt;
    label=&amp;quot;Select an article&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT id, title FROM #__content&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
This will give identical results to the previous example.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Both column names may need to be aliased.  For example, suppose you want your field to be called &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;myfield&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039; instead of &#039;&#039;&amp;lt;nowiki&amp;gt;&#039;title&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039; in the previous example.  Then you can do this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;myfield&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    default=&amp;quot;10&amp;quot;&lt;br /&gt;
    label=&amp;quot;Select an article&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT id AS value, title AS myfield FROM #__content&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Or alternatively:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;myfield&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    default=&amp;quot;10&amp;quot;&lt;br /&gt;
    label=&amp;quot;Select an article&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT id, title FROM #__content&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;title&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
You can also assemble or calculate fields in the SQL statement.  For example, suppose you wanted to append the created date/time of each article to the article title in the list.  Then you could use this SQL statement:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT id, concat( title, &#039; (&#039;, created, &#039;)&#039;) AS title FROM #__content&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
You can also specify a static option in the XML using &amp;lt;option&amp;gt;&amp;lt;/option&amp;gt; tag. Please look at the following example.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;myfield&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    default=&amp;quot;10&amp;quot;&lt;br /&gt;
    label=&amp;quot;Select an article&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT id, title FROM #__content&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;title&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;&amp;quot;&amp;gt;Please select your option&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Alternatively, you can achieve the same result using the &#039;&#039;&#039;header&#039;&#039;&#039; attribute as follows:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;myfield&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    default=&amp;quot;10&amp;quot;&lt;br /&gt;
    label=&amp;quot;Select an article&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT id, title FROM #__content&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;title&amp;quot;&lt;br /&gt;
    required=&amp;quot;true&amp;quot;&lt;br /&gt;
    header=&amp;quot;Please select your option&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== Alternative query syntax ====&lt;br /&gt;
Starting with Joomla 3.5, an alternative to the &#039;&#039;&#039;query&#039;&#039;&#039; attribute allows some additional features.  These features are not available if the &#039;&#039;&#039;query&#039;&#039;&#039; attribute is present.  For example, this field definition:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;example_group&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    label=&amp;quot;COM_EXAMPLE_GROUP&amp;quot;&lt;br /&gt;
    query=&amp;quot;SELECT e.* FROM #__example AS e GROUP BY name ORDER e.id ASC&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;name&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
can be expressed as:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field&lt;br /&gt;
    name=&amp;quot;example_group&amp;quot; &lt;br /&gt;
    type=&amp;quot;sql&amp;quot; &lt;br /&gt;
    label=&amp;quot;COM_EXAMPLE_GROUP&amp;quot; &lt;br /&gt;
    sql_select=&amp;quot;e.*&amp;quot; &lt;br /&gt;
    sql_from=&amp;quot;#__example AS e&amp;quot; &lt;br /&gt;
    sql_group=&amp;quot;name&amp;quot; &lt;br /&gt;
    sql_order=&amp;quot;e.id ASC&amp;quot; &lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;name&amp;quot; &lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{warning|&amp;lt;translate&amp;gt;The following feature &#039;&#039;linked fields as filters&#039;&#039; is currently not working! See [https://github.com/joomla/joomla-cms/issues/22241 Github issue 22241]&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
One advantage to using this syntax is that it allows the use of linked fields as filters.  For example, suppose you have a form containing two select lists, one called &#039;&#039;groups&#039;&#039; and the other called &#039;&#039;subgroups&#039;&#039;.  The &#039;&#039;groups&#039;&#039; field is straightforward:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;groups&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    label=&amp;quot;COM_EXAMPLE_GROUPS&amp;quot;&lt;br /&gt;
    sql_select=&amp;quot;e.*&amp;quot;&lt;br /&gt;
    sql_from=&amp;quot;#__example_groups AS e&amp;quot;&lt;br /&gt;
    sql_group=&amp;quot;name&amp;quot;&lt;br /&gt;
    sql_order=&amp;quot;e.id ASC&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;name&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
but the &#039;&#039;subgroups&#039;&#039; field includes an &#039;&#039;&#039;sql_filter&#039;&#039;&#039; attribute which refers to the &#039;&#039;groups&#039;&#039; field by name:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;subgroups&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    label=&amp;quot;COM_EXAMPLE_SUBGROUPS&amp;quot;&lt;br /&gt;
    sql_select=&amp;quot;e.*&amp;quot;&lt;br /&gt;
    sql_from=&amp;quot;#__example_subgroups AS e&amp;quot;&lt;br /&gt;
    sql_group=&amp;quot;name&amp;quot;&lt;br /&gt;
    sql_order=&amp;quot;e.id ASC&amp;quot;&lt;br /&gt;
    sql_filter=&amp;quot;groups&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;name&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then if the &#039;&#039;groups&#039;&#039; field has the value &#039;&#039;99&#039;&#039;, the following SQL statement will be executed for the &#039;&#039;subgroups&#039;&#039; field:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT e.* FROM jos_example_subgroups AS e WHERE `groups` = 99 GROUP BY `name` ORDER BY e.id ASC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
To filter on multiple fields, you can use a comma-separated list of filter names in the &#039;&#039;&#039;sql_filter&#039;&#039;&#039; clause.  For example, if there is a filter called &#039;&#039;groups&#039;&#039; with the value &#039;&#039;99&#039;&#039; and a filter called &#039;&#039;categories&#039;&#039; with the value &#039;&#039;12&#039;&#039;, then&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
sql_filter=&amp;quot;groups,categories&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will produce the SQL WHERE clause:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
WHERE `groups` = 99 AND `categories` = 12&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also define a default value for any filter that might not have a value when the field is evaluated by adding &#039;&#039;&#039;sql_default_{FIELD_NAME}&#039;&#039;&#039; attributes.  For example, suppose that the default value for the &#039;&#039;groups&#039;&#039; filter is 0 and the default value for the &#039;&#039;categories&#039;&#039; filter is 0, then this definition:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;subgroups&amp;quot;&lt;br /&gt;
    type=&amp;quot;sql&amp;quot;&lt;br /&gt;
    label=&amp;quot;COM_EXAMPLE_SUBGROUPS&amp;quot;&lt;br /&gt;
    sql_select=&amp;quot;e.*&amp;quot;&lt;br /&gt;
    sql_from=&amp;quot;#__example_subgroups AS e&amp;quot;&lt;br /&gt;
    sql_group=&amp;quot;name&amp;quot;&lt;br /&gt;
    sql_order=&amp;quot;e.id ASC&amp;quot;&lt;br /&gt;
    sql_filter=&amp;quot;groups,categories&amp;quot;&lt;br /&gt;
    sql_default_groups=&amp;quot;0&amp;quot;&lt;br /&gt;
    sql_default_categories=&amp;quot;1&amp;quot;&lt;br /&gt;
    key_field=&amp;quot;id&amp;quot;&lt;br /&gt;
    value_field=&amp;quot;name&amp;quot;&lt;br /&gt;
    /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
will produce this SQL statement when initially evaluated with no filters:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT e.* FROM jos_example_subgroups AS e WHERE `groups` = 0 AND `categories` = 1 GROUP BY `name` ORDER BY e.id ASC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Note: The SQL statements will need to be correct for the type and version of the underlying database that Joomla is running on. This will most likely be a version of MySQL, but it could be something else.  There is no capability to query databases other than the one Joomla itself is running on.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
Note: As shown in these examples, the database prefix (often &amp;lt;code&amp;gt;jos&amp;lt;/code&amp;gt;) should be entered in the form &amp;lt;code&amp;gt;#__&amp;lt;/code&amp;gt; (hash-underscore-underscore). It will automatically be replaced by the actual database prefix used by Joomla.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== See also === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Standard form field types|List of standard form field types]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[Category:Standard form field types]]&amp;lt;/translate&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User_form_field_type&amp;diff=611837</id>
		<title>User form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User_form_field_type&amp;diff=611837"/>
		<updated>2019-04-29T09:03:15Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Added note that this field is not available in front end forms.&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;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;user&#039;&#039;&#039; form field type provides a modal select box of users.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; (mandatory) must be &#039;&#039;user&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; (mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the &#039;&#039;value_field&#039;&#039; attribute&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;label&#039;&#039;&#039; (mandatory) (translatable) is the descriptive title of the field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039; (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;class&#039;&#039;&#039; (optional) is a CSS class name for the HTML form field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;size&#039;&#039;&#039; (optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Implemented by:&amp;lt;/translate&amp;gt; &amp;lt;tt&amp;gt;libraries/cms/form/field/user.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Example user form field definition:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source type=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;modified_user_id&amp;quot; type=&amp;quot;user&amp;quot;&lt;br /&gt;
	label=&amp;quot;JGLOBAL_FIELD_MODIFIED_BY_LABEL&amp;quot;&lt;br /&gt;
	class=&amp;quot;readonly&amp;quot;&lt;br /&gt;
	readonly=&amp;quot;true&amp;quot;&lt;br /&gt;
	filter=&amp;quot;unset&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;=== Note! ===&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;The &#039;&#039;&#039;user&#039;&#039;&#039; field only works on administration forms and should not be added to front-end forms.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;=== See also === &amp;lt;!--T:10--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Standard form field types|List of standard form field types]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
[[Category:Standard form field types]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Editor_form_field_type&amp;diff=555605</id>
		<title>Editor form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Editor_form_field_type&amp;diff=555605"/>
		<updated>2018-11-01T09:19:47Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Cols and rows also do not work&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;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;Editor&#039;&#039;&#039; field type provides a WYSIWYG editor.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; (mandatory) must be &#039;&#039;editor&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; (mandatory) is the unique name of the parameter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;label&#039;&#039;&#039; (mandatory) (translatable) is the descriptive title of the field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;width&#039;&#039;&#039; (optional) defines the width (in pixels) of the wysiwyg editor and defaults to 100%. &#039;&#039;&#039;(Currently not supported)&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;height&#039;&#039;&#039; (optional) defines the height (in pixels) of the wysiwyg editor and defaults to 250px. &#039;&#039;&#039;(Currently not supported)&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;cols&#039;&#039;&#039; (optional) defines the width of the editor (in columns). &#039;&#039;&#039;(Currently not supported)&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;rows&#039;&#039;&#039; (optional) defines the height of the editor (in rows). &#039;&#039;&#039;(Currently not supported)&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;buttons&#039;&#039;&#039; (optional) can be an array of plugin buttons to be excluded or set to false. The default editors-xtd are: article, image, pagebreak and readmore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;hide&#039;&#039;&#039; (optional) array of plugin buttons to be hidden. eg... set buttons=&amp;quot;true&amp;quot; hide=&amp;quot;readmore,pagebreak&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;editor&#039;&#039;&#039; specifies the editor to be used and can include two options (editor=&amp;quot;desired|alternative&amp;quot;)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; (optional) allow the system to save certain html tags or raw data.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Example XML Definition:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;test1&amp;quot; type=&amp;quot;editor&amp;quot; label=&amp;quot;Test Field&amp;quot; description=&amp;quot;&amp;quot; width=&amp;quot;300&amp;quot; filter=&amp;quot;safehtml&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;=== See also === &amp;lt;!--T:14--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Textarea form field type|Textarea form field type]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Standard form field types|Table of all standard form field types]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[Category:Standard form field types]]&amp;lt;/translate&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Editor_form_field_type&amp;diff=554807</id>
		<title>Editor form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Editor_form_field_type&amp;diff=554807"/>
		<updated>2018-10-31T09:32:11Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Marked some attributes as not supported because they aren&amp;#039;t&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;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;Editor&#039;&#039;&#039; field type provides a WYSIWYG editor.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; (mandatory) must be &#039;&#039;editor&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; (mandatory) is the unique name of the parameter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;label&#039;&#039;&#039; (mandatory) (translatable) is the descriptive title of the field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;width&#039;&#039;&#039; (optional) defines the width (in pixels) of the wysiwyg editor and defaults to 100%. &#039;&#039;&#039;(Currently not supported)&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;height&#039;&#039;&#039; (optional) defines the height (in pixels) of the wysiwyg editor and defaults to 250px. &#039;&#039;&#039;(Currently not supported)&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;cols&#039;&#039;&#039; (optional) defines the width of the editor (in columns).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;rows&#039;&#039;&#039; (optional) defines the height of the editor (in rows).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;buttons&#039;&#039;&#039; (optional) can be an array of plugin buttons to be excluded or set to false. The default editors-xtd are: article, image, pagebreak and readmore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;hide&#039;&#039;&#039; (optional) array of plugin buttons to be hidden. eg... set buttons=&amp;quot;true&amp;quot; hide=&amp;quot;readmore,pagebreak&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;editor&#039;&#039;&#039; specifies the editor to be used and can include two options (editor=&amp;quot;desired|alternative&amp;quot;)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; (optional) allow the system to save certain html tags or raw data.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Example XML Definition:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;test1&amp;quot; type=&amp;quot;editor&amp;quot; label=&amp;quot;Test Field&amp;quot; description=&amp;quot;&amp;quot; width=&amp;quot;300&amp;quot; filter=&amp;quot;safehtml&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;=== See also === &amp;lt;!--T:14--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Textarea form field type|Textarea form field type]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Standard form field types|Table of all standard form field types]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[Category:Standard form field types]]&amp;lt;/translate&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Checkbox_form_field_type&amp;diff=539575</id>
		<title>Checkbox form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Checkbox_form_field_type&amp;diff=539575"/>
		<updated>2018-10-11T13:05:37Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Removed references to &amp;quot;default&amp;quot; as it is not relevant on a checkbox and added the attribute &amp;quot;checked&amp;quot; which was missing&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;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;checkbox&#039;&#039;&#039; form field type provides a single checkbox.  If the parameter has a saved value this is selected when the page is first loaded.  If not, the default value (if any) is selected.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;type&#039;&#039;&#039; (mandatory) must be checkbox&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; (mandatory) is the unique name of the parameter.&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;label&#039;&#039;&#039; (mandatory) (translatable) is the descriptive title of the field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039; (optional) is the value of the parameter if this checkbox is set (usually 1).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;checked&#039;&#039;&#039; (optional) should be set to 1 to check the checkbox by default or 0 not to.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039; (optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;class&#039;&#039;&#039; (optional) is a CSS class name for the HTML form field.  If omitted this will default to &#039;inputbox&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Example XML field definition:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;show_title&amp;quot; type=&amp;quot;checkbox&amp;quot; label=&amp;quot;Show title&amp;quot; description=&amp;quot;Show the title of the item&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Example XML field definition (checked):&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;show_title&amp;quot; type=&amp;quot;checkbox&amp;quot; label=&amp;quot;Show title&amp;quot; description=&amp;quot;Show the title of the item&amp;quot; value=&amp;quot;1&amp;quot; checked=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{warning|&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Special care needs to be taken with saving a checkbox from a form!! This is a common mistake. &amp;lt;br&amp;gt;You see, on saving a form with a checkbox that is unchecked, there is no variable for it in the POST information and joomla does not take care of that yet! &amp;lt;br&amp;gt;See Discussion on [[Talk:Checkbox form field type|this page]] for more.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;=== See also === &amp;lt;!--T:11--&amp;gt;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Standard form field types|List of standard form field types]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
[[Category:Standard form field types]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107305</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107305"/>
		<updated>2014-02-04T16:15:26Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Added Buddhima&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ Joomla! Idea Pool].  Those wishing to add ideas to this listing are encouraged to review the Idea Pool and base their idea on the input received there. You can also view the past lists for [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|2009]], which may be useful for reference. We ask that you keep ideas realistic for the time frame that students will have to complete their projects.&lt;br /&gt;
&lt;br /&gt;
Unless a mentor has proposed a specific project, mentors from the mentor pool will be matched with student projects. However members of the mentor pool are available to answer questions on the Joomla GSoC mailing list.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Create a baseline component based on the Unified Content Model ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla! CMS has been moving towards a unified content model for which to serve content from.  Presently, a separate component is required for all content types (articles, categories, and weblinks, for example).  In the unified content model, all content types share a similar base dataset and components can add support for custom fields using the current component model of adding separate database tables.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;  The goal for this project is to build a Joomla! CMS component which is based on the unified content model.  A practical example of this would be a new component to manage articles which would be a replacement for the existing com_content component.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Project: Decouple extension dependencies ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; All extensions in the CMS to be completely independent of one another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the http://www.Component-Creator.com and Buddhima Wijeweera as he worked on a similar project for GSoC 2013 http://magazine.joomla.org/issues/issue-nov-2013/item/1580-new-mvc-for-joomla-cms&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to increase site performance, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has a good suite of automated Unit Tests, but code coverage is lacking in some areas. The goal of this project is to improve the code coverage by writing unit tests for the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework and write and agreed-upon number of unit tests with particular attention to packages that are below 50% coverage. Preference should be given to non-deprecated classes but the student may choose from either the core tree (/libraries/joomla) or the legacy tree (/libraries/legacy).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107304</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107304"/>
		<updated>2014-02-04T15:16:00Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: /* Project: Update Core Extensions to use New MVC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ Joomla! Idea Pool].  Those wishing to add ideas to this listing are encouraged to review the Idea Pool and base their idea on the input received there. You can also view the past lists for [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|2009]], which may be useful for reference. We ask that you keep ideas realistic for the time frame that students will have to complete their projects.&lt;br /&gt;
&lt;br /&gt;
Unless a mentor has proposed a specific project, mentors from the mentor pool will be matched with student projects. However members of the mentor pool are available to answer questions on the Joomla GSoC mailing list.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Create a baseline component based on the Unified Content Model ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla! CMS has been moving towards a unified content model for which to serve content from.  Presently, a separate component is required for all content types (articles, categories, and weblinks, for example).  In the unified content model, all content types share a similar base dataset and components can add support for custom fields using the current component model of adding separate database tables.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;  The goal for this project is to build a Joomla! CMS component which is based on the unified content model.  A practical example of this would be a new component to manage articles which would be a replacement for the existing com_content component.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Project: Decouple extension dependencies ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; All extensions in the CMS to be completely independent of one another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the http://www.Component-Creator.com&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to increase site performance, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has a good suite of automated Unit Tests, but code coverage is lacking in some areas. The goal of this project is to improve the code coverage by writing unit tests for the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework and write and agreed-upon number of unit tests with particular attention to packages that are below 50% coverage. Preference should be given to non-deprecated classes but the student may choose from either the core tree (/libraries/joomla) or the legacy tree (/libraries/legacy).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107303</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107303"/>
		<updated>2014-02-04T15:14:47Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: /* Project: Develop dependency manager */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ Joomla! Idea Pool].  Those wishing to add ideas to this listing are encouraged to review the Idea Pool and base their idea on the input received there. You can also view the past lists for [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|2009]], which may be useful for reference. We ask that you keep ideas realistic for the time frame that students will have to complete their projects.&lt;br /&gt;
&lt;br /&gt;
Unless a mentor has proposed a specific project, mentors from the mentor pool will be matched with student projects. However members of the mentor pool are available to answer questions on the Joomla GSoC mailing list.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Create a baseline component based on the Unified Content Model ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla! CMS has been moving towards a unified content model for which to serve content from.  Presently, a separate component is required for all content types (articles, categories, and weblinks, for example).  In the unified content model, all content types share a similar base dataset and components can add support for custom fields using the current component model of adding separate database tables.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;  The goal for this project is to build a Joomla! CMS component which is based on the unified content model.  A practical example of this would be a new component to manage articles which would be a replacement for the existing com_content component.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Project: Decouple extension dependencies ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; All extensions in the CMS to be completely independent of one another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the Component-Creator.com&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to increase site performance, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has a good suite of automated Unit Tests, but code coverage is lacking in some areas. The goal of this project is to improve the code coverage by writing unit tests for the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework and write and agreed-upon number of unit tests with particular attention to packages that are below 50% coverage. Preference should be given to non-deprecated classes but the student may choose from either the core tree (/libraries/joomla) or the legacy tree (/libraries/legacy).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107302</id>
		<title>GSOC 2014 Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2014_Project_Ideas&amp;diff=107302"/>
		<updated>2014-02-04T15:14:05Z</updated>

		<summary type="html">&lt;p&gt;ADaneInSpain: Added Soren as potential mento&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GSOC_2014.png|300px|left]]&lt;br /&gt;
&lt;br /&gt;
Welcome to the Joomla! Google Summer of Code (GSoC) 2014 project ideas page. As we move forward with the 2014 version of the Joomla! GSoC, we will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!&lt;br /&gt;
&lt;br /&gt;
For students who want a general overview of Joomla&#039;s GSoc, project plans, proposals, and timelines, please [http://docs.joomla.org/GSOC_2014 refer to the GSoC 2014 page]. &lt;br /&gt;
&lt;br /&gt;
Discussion of ideas and other GSoC related items is welcome on our Google Group: https://groups.google.com/d/forum/joomla-gsoc-2014&lt;br /&gt;
&lt;br /&gt;
If you are interested in participating as a student please review the materials on applying that are available at [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page Google].  We strongly encourage you to ask questions about process and ideas on the mailing list.&lt;br /&gt;
&lt;br /&gt;
If you are interested in serving as a mentor, please fill out the [https://docs.google.com/a/community.joomla.org/spreadsheet/viewform?formkey=dHA2V1lJbThYQXpwMERiRG1FOTZlV3c6MA Mentor Application Form 2014].&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
Opportunities exist for students to work with projects from either the Joomla CMS, the Joomla Framework or in some cases a combination of both.&lt;br /&gt;
&lt;br /&gt;
In addition to this ideas list, the Joomla! Community is able to voice their opinion on features they would like to see via the [http://ideas.joomla.org/ Joomla! Idea Pool].  Those wishing to add ideas to this listing are encouraged to review the Idea Pool and base their idea on the input received there. You can also view the past lists for [[GSOC_2012_Project_Ideas|2013]], [[GSOC_2012_Project_Ideas|2012]], [[Summer_of_Code_2010_Project_Ideas|2010]] and [[Summer_of_Code_2009_Project_Ideas|2009]], which may be useful for reference. We ask that you keep ideas realistic for the time frame that students will have to complete their projects.&lt;br /&gt;
&lt;br /&gt;
Unless a mentor has proposed a specific project, mentors from the mentor pool will be matched with student projects. However members of the mentor pool are available to answer questions on the Joomla GSoC mailing list.&lt;br /&gt;
&lt;br /&gt;
== Important Guidelines on Submitting Ideas ==&lt;br /&gt;
&lt;br /&gt;
There are some important guidelines to submit ideas, please read these carefully before adding your ideas:&lt;br /&gt;
* Ensure your idea is able to be completed in a fixed period of time. GSoC runs officially between May 19th 2014 and August 18th 2014. This is a very short period of actual coding time. Ideas should respect the time that students have available for the program. &lt;br /&gt;
* Keep ideas realistic. The ideas on this list should maintain a realistic amount of work for a single student, junior level-developer, who is working with a compressed timeline and a fixed completion (&#039;pencils down&#039;) date. &lt;br /&gt;
* Keep ideas core. The purpose of GSoC is to improve Joomla itself. This is not the time to add ideas for new extensions or features that may not be included by the PLT. If the idea is related to the framework, please consult the framework team directly about new ideas to ensure there is interest in having the package included as an official Joomla Framework package. &lt;br /&gt;
* Respect Joomla&#039;s Release Cycle. Joomla&#039;s release cycle currently states that with Joomla 3.5, we will not add new features to the CMS. This means that most of the GSoC projects this year should ideally improve existing code in a backwards compatible way. &lt;br /&gt;
* Joomla 4. Currently there is not a baseline for what Joomla 4 is and what it could be. Ideas centered around Joomla 4 would not fit in well with the goal of GSoC 2014.&lt;br /&gt;
* When in doubt, reach out. If you&#039;re unsure if your idea belongs on this list, please post to the GSoC 2014 mailing list and ask about the community&#039;s interest. &lt;br /&gt;
* No documentation-focused projects. Google Summer of &#039;&#039;Code&#039;&#039; is a program about code. We expect our students to document their work, but writing documentation for Joomla as a project does not align with the goals of GSoC.&lt;br /&gt;
&lt;br /&gt;
== Joomla CMS Ideas ==&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/joomla/joomla-cms Source Code]&lt;br /&gt;
* [http://groups.google.com/d/forum/joomla-dev-cms Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your CMS project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Refactor CMS to use Dependency Injection ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The CMS currently has many hard-coded JPATH constants and a JFactory for developers to get certain global objects from the application. This project would develop a way to depreciate the current system which is difficult to test and is tightly coupled. The project will replace the JPATH constants with the Joomla Framework Dependency Injection package, allowing for a looser coupling of the application&#039;s core components. &lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* [https://github.com/joomla/joomla-framework/tree/staging/src/Joomla/DI Joomla Framework DI Package]&lt;br /&gt;
* [https://github.com/joomla/joomla-cms/blob/staging/includes/defines.php Joomla CMS Constants]&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* Deprecate the current JPATH constants allowing for replacement with Joomla DI&lt;br /&gt;
* Refactor core components and to use new DI container&lt;br /&gt;
* Write documentation for developers to update their extensions to use Joomla DI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), Understanding of Dependency Injection and Dependency Injection Containers. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
===Project: Webdriver system tests for CMS===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Automated system tests allow us to test the CMS by automatically running Joomla from a browser, selecting menu options, and evaluating results. At present, several number of [https://github.com/joomla/joomla-cms/tree/staging/tests/system system tests] are currently completed using the Selenium Webdriver technology and using the Page Objects pattern to separate the page objects from the test objects. This project will build on the current base of Webdriver tests and expand the test coverage to include more of the CMS.&lt;br /&gt;
&lt;br /&gt;
For more info see: &lt;br /&gt;
* http://docs.joomla.org/System_Testing&lt;br /&gt;
* http://www.youtube.com/watch?v=8Mmg32lg4nA&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; &lt;br /&gt;
* finish the administrator parts not yet tested&lt;br /&gt;
* add front end testing:&lt;br /&gt;
** menu items&lt;br /&gt;
** modules&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, object-oriented programming, Joomla CMS (from a user point of view), HTML&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Puneet Kala, Mark Dexter and Javier Gómez&lt;br /&gt;
&lt;br /&gt;
=== Project: Create a baseline component based on the Unified Content Model ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla! CMS has been moving towards a unified content model for which to serve content from.  Presently, a separate component is required for all content types (articles, categories, and weblinks, for example).  In the unified content model, all content types share a similar base dataset and components can add support for custom fields using the current component model of adding separate database tables.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039;  The goal for this project is to build a Joomla! CMS component which is based on the unified content model.  A practical example of this would be a new component to manage articles which would be a replacement for the existing com_content component.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Project: Decouple extension dependencies ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; In the current version of the CMS, some extensions rely on one another for functionality. The ultimate goal is for each extension to be completely independent so that it could be removed without breaking the functionality of another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; All extensions in the CMS to be completely independent of one another.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
=== Project: Develop dependency manager ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; Distributions are one of the next possible evolutionary steps for the CMS. One key challenge to solve is the management of dependencies that extensions/packages may have.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; A working proof of concept that manages the handling of dependencies as well as define requirements that extensions/packages must meet for their dependencies to be managed by this system.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Very challenging, but highly rewarding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Project: Update Core Extensions to use New MVC ===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has brought us a new MVC architecture that we would like to start using for core components. This project will chose a few core components as a conversion goal to migrate them to run on the new MVC structure. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; Selected core components will run on the new MVC architecture. This will involve changing the component to run the new controller based architecture, and potentially develop a standardized set of methods that are used across multiple extensions. Reducing code repeats and encouraging reuse will be an important aspect of this project.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Challenging, high learning curve and will set precedent for other extensions. This is a opportunity for innovation, not a project to simply copy other parts code into a new feature.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Potential Mentors:&#039;&#039;&#039; Soren Beck Jensen as he runs the Component-Creator.com&lt;br /&gt;
&lt;br /&gt;
===Project: SQL Optimization===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The goal of this project is to increase site performance, optimizing slow sql queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; After analyzing and measuring the site performance (on some test case ie small, medium, big) will be taken the necessary action using the proper techniques to improve measurably the slower queries.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; SQL, DBMS&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium to Hard&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Posible mentors:&#039;&#039;&#039; Nicola Galgano&lt;br /&gt;
&amp;lt;!-- copy everything above this line --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PASTE the copied code on the main Project Ideas Page under the appropriated project type. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Google Summer of Code 2014]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Joomla Framework ==&lt;br /&gt;
&lt;br /&gt;
The Joomla Framework project ideas allows for ideas that can work within the Joomla CMS, or could be completely separate applications that have no connection at all. The Joomla Framework allows for applications to be built for the command line, process daemons and the web. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
*[http://github.com/joomla/joomla-framework github Source Code]&lt;br /&gt;
*[http://developer.joomla.org/framework/roadmap.html Development Roadmap]&lt;br /&gt;
*[http://groups.google.com/d/forum/joomla-dev-framework Developer Mailing List]&lt;br /&gt;
&lt;br /&gt;
All code contributions must follow Joomla coding standards and include full unit test coverage.&lt;br /&gt;
&lt;br /&gt;
{{tip|Please add your Framework project ideas below. You can use the &#039;&#039;&#039;[[GSOC 2014 Project Ideas/template|GSOC 2014 Project template]]&#039;&#039;&#039;.|title=Adding Project Ideas}}&lt;br /&gt;
&lt;br /&gt;
===Project: Framework Unit Testing===&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Brief explanation:&#039;&#039;&#039; The Joomla Framework has a good suite of automated Unit Tests, but code coverage is lacking in some areas. The goal of this project is to improve the code coverage by writing unit tests for the Joomla Framework.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Expected Results:&#039;&#039;&#039; The student will be expected to review the current [http://developer.joomla.org/framework-coverage/ code coverage report] for the Joomla Framework and write and agreed-upon number of unit tests with particular attention to packages that are below 50% coverage. Preference should be given to non-deprecated classes but the student may choose from either the core tree (/libraries/joomla) or the legacy tree (/libraries/legacy).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Knowledge Prerequisite:&#039;&#039;&#039; PHP, PHPUnit&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code 2014]]&lt;/div&gt;</summary>
		<author><name>ADaneInSpain</name></author>
	</entry>
</feed>