<?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=Gunjanpatel</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=Gunjanpatel"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Gunjanpatel"/>
	<updated>2026-07-28T20:48:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Gherkin-steps-en.jpg&amp;diff=313127</id>
		<title>File:Gherkin-steps-en.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Gherkin-steps-en.jpg&amp;diff=313127"/>
		<updated>2016-07-10T07:30:46Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: File contians gherkin steps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
File contians gherkin steps&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{JEDL}}&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303982</id>
		<title>GSOC 2016 Joomla GIT Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303982"/>
		<updated>2016-05-16T06:19:26Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Joomla GSoC Github Flow ==&lt;br /&gt;
&lt;br /&gt;
This document contains guidelines for GSoC students and mentors on how to manage and work with Github Repo&#039;s for GSoC projects. All the Repository&#039;s for GSoC projects are available on [https://github.com/joomla-projects/ Joomla! Project Github]&lt;br /&gt;
&lt;br /&gt;
=== Joomla! GSoC Student Workflow ===&lt;br /&gt;
First step is forking your joomla-projects/gsoc16_** repository to your personal GitHub account. Never make changes to the joomla-projects repository directly. Any contributor should work on his/her own fork of it, and move code to central repository using pull requests. Also, nobody should ever merge her/his own PR. &lt;br /&gt;
Students should always work on branches, they should never make changes to their staging branch!&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
On Github, navigate to the joomla-projects/my-gsoc-project repository and click on the ‘Fork’ button in the upper right corner. This creates a fork (a linked copy) in your account (let’s call it ‘my-user’), resulting in a new repo my-user/my-gsoc-project.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_1.jpg|1012px|center|link=Github Flow 2016]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next step is cloning the forked repository to your local computer. If you set up ssh-keys in GitHub (recommended), use the link with ssh. If not use the https link.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_2.jpg|900px|center|link=Github Flow 2 2016]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep your fork updated with the changes from joomla-projects, you need to add the joomla-projects repo as additional remote repository (mostly called upstream):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc16**&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
You can now update staging by applying the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Next merge the changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge upstream/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And push them to your remote fork&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Your mentors are going to keep the joomla-projects repository in sync with joomla/joomla-cms staging. You need to do the same for your fork!&lt;br /&gt;
&lt;br /&gt;
==== Making a pull request with your changes ====&lt;br /&gt;
&lt;br /&gt;
Now you can start working on your local computer. The project folder is under version control, so you can follow any changes you make. Always make a custom branch for your changes and do not work on staging directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b patch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When your patch is ready you send a so called Pull Request (PR) from your repository to the joomla-projects one. &lt;br /&gt;
&lt;br /&gt;
For that you have to push your changes to your forked repository. First make sure there are no unnecessary files and comments left. And that your code is probably formatted according to the Joomla! Code styles. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git diff path/to/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are going to help you with that. Next add all files you want to include in your PR with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git add path/to/folder/or/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you need to commit your changes and push them to your fork:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m “Describe your changes as best and short as possible here”&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to the repository&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For pushing a branch to GitHub you would use the first time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin BRANCHNAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go the GitHub website and open your forks site. You are going to notice that there is a notice about your recent push at the top:&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_3.jpg|1012px|center|link=Github Flow 3 2016]]&lt;br /&gt;
&lt;br /&gt;
Click on ‘Compare &amp;amp; Pull request‘. Add a meaningful description, including summary of changes and important (!) testing instructions and click on ‘Create pull request‘.&lt;br /&gt;
&lt;br /&gt;
Now wait to for your Mentors comments, if everything is working they are going to merge your PR into the joomla-project repository. If not you can just fix it locally and push again. The PR is going to be updated automatically with these changes.&lt;br /&gt;
&lt;br /&gt;
=== Keeping the GSoC fork updated with Joomla staging (For Mentors)===&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
In your dev environment clone your own (forked) repository. my-user/my-gsoc-project is automatically added as &#039;origin&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we add the joomla-projects/gsoc16** repository as upstream and the joomla/joomla-cms repository as joomla remote.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc*.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add joomla https://github.com/joomla/joomla-cms.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Never change the staging branch! It is a verbatim copy from the joomla/joomla-cms repo, and must be kept in sync by you. You can set the branch to protected so that only mentors are allowed to push to it.&lt;br /&gt;
&lt;br /&gt;
==== Update staging ====&lt;br /&gt;
&lt;br /&gt;
Whenever something changes in the CMS repo, the staging branch needs to be synchronised.&lt;br /&gt;
&lt;br /&gt;
Checkout (activate) current staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next get the changes from the joomla/joomla-cms staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch joomla staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the changes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge joomla/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to your own repository and to the joomla-projects/gsoc one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
==== Update feature branches ====&lt;br /&gt;
&lt;br /&gt;
With all of your feature branches, the changes have to be merged as well.&lt;br /&gt;
&lt;br /&gt;
Checkout the branch first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout branch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Merge changes from staging&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
There might be conflicts, when the CMS changed code, that was changed in your feature branch; in that case, consult `git merge --help`.&lt;br /&gt;
&lt;br /&gt;
=== Tips and tricks ===&lt;br /&gt;
&lt;br /&gt;
Before making any changes create a new branch, so you can easily update your forks staging (or master) later and make multiple pull requests for one Repo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b NAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep your pull requests as small as possible. This makes testing and getting them merged far easier. Be descriptive in your pull request. Explain step by step how to test the changes. Where possible add screenshots for clarification.&lt;br /&gt;
&lt;br /&gt;
Code style:&lt;br /&gt;
&lt;br /&gt;
Please make sure you don’t leave any unnecessary files, comments (don’t comment code!) in your PR. Also make sure it matches the Joomla! Coding style guidelines.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/joomla/joomla-cms/blob/staging/.github/CONTRIBUTING.md Contributing to the Joomla! CMS™]&lt;br /&gt;
&lt;br /&gt;
[http://joomla.github.io/coding-standards/ Joomla! Coding Standards Manual]&lt;br /&gt;
&lt;br /&gt;
===== Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners =====&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=lEnYz0b7omE}}&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303981</id>
		<title>GSOC 2016 Joomla GIT Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303981"/>
		<updated>2016-05-16T06:18:14Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Joomla GSoC Github Flow ==&lt;br /&gt;
&lt;br /&gt;
This document contains guidelines for GSoC students and mentors on how to manage and work with Github Repo&#039;s for GSoC projects. All the Repository&#039;s for GSoC projects are available on [https://github.com/joomla-projects/ Joomla! Project Github]&lt;br /&gt;
&lt;br /&gt;
=== Joomla! GSoC Student Workflow ===&lt;br /&gt;
First step is forking your joomla-projects/gsoc16_** repository to your personal GitHub account. Never make changes to the joomla-projects repository directly. Any contributor should work on his/her own fork of it, and move code to central repository using pull requests. Also, nobody should ever merge her/his own PR. &lt;br /&gt;
Students should always work on branches, they should never make changes to their staging branch!&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
On Github, navigate to the joomla-projects/my-gsoc-project repository and click on the ‘Fork’ button in the upper right corner. This creates a fork (a linked copy) in your account (let’s call it ‘my-user’), resulting in a new repo my-user/my-gsoc-project.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_1.jpg|1012px|center|link=Github Flow 2016]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next step is cloning the forked repository to your local computer. If you set up ssh-keys in GitHub (recommended), use the link with ssh. If not use the https link.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_2.jpg|900px|center|link=Github Flow 2 2016]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep your fork updated with the changes from joomla-projects, you need to add the joomla-projects repo as additional remote repository (mostly called upstream):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc16**&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
You can now update staging by applying the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Next merge the changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge upstream/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And push them to your remote fork&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Your mentors are going to keep the joomla-projects repository in sync with joomla/joomla-cms staging. You need to do the same for your fork!&lt;br /&gt;
&lt;br /&gt;
==== Making a pull request with your changes ====&lt;br /&gt;
&lt;br /&gt;
Now you can start working on your local computer. The project folder is under version control, so you can follow any changes you make. Always make a custom branch for your changes and do not work on staging directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b patch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When your patch is ready you send a so called Pull Request (PR) from your repository to the joomla-projects one. &lt;br /&gt;
&lt;br /&gt;
For that you have to push your changes to your forked repository. First make sure there are no unnecessary files and comments left. And that your code is probably formatted according to the Joomla! Code styles. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git diff path/to/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are going to help you with that. Next add all files you want to include in your PR with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git add path/to/folder/or/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you need to commit your changes and push them to your fork:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m “Describe your changes as best and short as possible here”&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to the repository&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For pushing a branch to GitHub you would use the first time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin BRANCHNAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go the GitHub website and open your forks site. You are going to notice that there is a notice about your recent push at the top:&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_3.jpg|1012px|center|link=Github Flow 3 2016]]&lt;br /&gt;
&lt;br /&gt;
Click on ‘Compare &amp;amp; Pull request‘. Add a meaningful description, including summary of changes and important (!) testing instructions and click on ‘Create pull request‘.&lt;br /&gt;
&lt;br /&gt;
Now wait to for your Mentors comments, if everything is working they are going to merge your PR into the joomla-project repository. If not you can just fix it locally and push again. The PR is going to be updated automatically with these changes.&lt;br /&gt;
&lt;br /&gt;
=== Keeping the GSoC fork updated with Joomla staging (For Mentors)===&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
In your dev environment clone your own (forked) repository. my-user/my-gsoc-project is automatically added as &#039;origin&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we add the joomla-projects/gsoc16** repository as upstream and the joomla/joomla-cms repository as joomla remote.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc*.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add joomla https://github.com/joomla/joomla-cms.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Never change the staging branch! It is a verbatim copy from the joomla/joomla-cms repo, and must be kept in sync by you. You can set the branch to protected so that only mentors are allowed to push to it.&lt;br /&gt;
&lt;br /&gt;
==== Update staging ====&lt;br /&gt;
&lt;br /&gt;
Whenever something changes in the CMS repo, the staging branch needs to be synchronised.&lt;br /&gt;
&lt;br /&gt;
Checkout (activate) current staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next get the changes from the joomla/joomla-cms staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch joomla staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the changes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge joomla/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to your own repository and to the joomla-projects/gsoc one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
==== Update feature branches ====&lt;br /&gt;
&lt;br /&gt;
With all of your feature branches, the changes have to be merged as well.&lt;br /&gt;
&lt;br /&gt;
Checkout the branch first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout branch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Merge changes from staging&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
There might be conflicts, when the CMS changed code, that was changed in your feature branch; in that case, consult `git merge --help`.&lt;br /&gt;
&lt;br /&gt;
=== Tips and tricks ===&lt;br /&gt;
&lt;br /&gt;
Before making any changes create a new branch, so you can easily update your forks staging (or master) later and make multiple pull requests for one Repo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b NAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep your pull requests as small as possible. This makes testing and getting them merged far easier. Be descriptive in your pull request. Explain step by step how to test the changes. Where possible add screenshots for clarification.&lt;br /&gt;
&lt;br /&gt;
Code style:&lt;br /&gt;
&lt;br /&gt;
Please make sure you don’t leave any unnecessary files, comments (don’t comment code!) in your PR. Also make sure it matches the Joomla! Coding style guidelines.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/joomla/joomla-cms/blob/staging/.github/CONTRIBUTING.md Contributing to the Joomla! CMS™]&lt;br /&gt;
&lt;br /&gt;
[http://joomla.github.io/coding-standards/ Joomla! Coding Standards Manual]&lt;br /&gt;
&lt;br /&gt;
===== Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners =====&lt;br /&gt;
&lt;br /&gt;
Link [https://youtu.be/lEnYz0b7omE?t=2275 The development workflow of Git/Github]&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=lEnYz0b7omE}}&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303980</id>
		<title>GSOC 2016 Joomla GIT Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303980"/>
		<updated>2016-05-16T06:14:53Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Joomla GSoC Github Flow ==&lt;br /&gt;
&lt;br /&gt;
This document contains guidelines for GSoC students and mentors on how to manage and work with Github Repo&#039;s for GSoC projects. All the Repository&#039;s for GSoC projects are available on [https://github.com/joomla-projects/ Joomla! Project Github]&lt;br /&gt;
&lt;br /&gt;
=== Joomla! GSoC Student Workflow ===&lt;br /&gt;
First step is forking your joomla-projects/gsoc16_** repository to your personal GitHub account. Never make changes to the joomla-projects repository directly. Any contributor should work on his/her own fork of it, and move code to central repository using pull requests. Also, nobody should ever merge her/his own PR. &lt;br /&gt;
Students should always work on branches, they should never make changes to their staging branch!&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
On Github, navigate to the joomla-projects/my-gsoc-project repository and click on the ‘Fork’ button in the upper right corner. This creates a fork (a linked copy) in your account (let’s call it ‘my-user’), resulting in a new repo my-user/my-gsoc-project.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_1.jpg|1012px|center|link=Github Flow 2016]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next step is cloning the forked repository to your local computer. If you set up ssh-keys in GitHub (recommended), use the link with ssh. If not use the https link.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_2.jpg|900px|center|link=Github Flow 2 2016]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep your fork updated with the changes from joomla-projects, you need to add the joomla-projects repo as additional remote repository (mostly called upstream):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc16**&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
You can now update staging by applying the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Next merge the changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge upstream/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And push them to your remote fork&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Your mentors are going to keep the joomla-projects repository in sync with joomla/joomla-cms staging. You need to do the same for your fork!&lt;br /&gt;
&lt;br /&gt;
==== Making a pull request with your changes ====&lt;br /&gt;
&lt;br /&gt;
Now you can start working on your local computer. The project folder is under version control, so you can follow any changes you make. Always make a custom branch for your changes and do not work on staging directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b patch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When your patch is ready you send a so called Pull Request (PR) from your repository to the joomla-projects one. &lt;br /&gt;
&lt;br /&gt;
For that you have to push your changes to your forked repository. First make sure there are no unnecessary files and comments left. And that your code is probably formatted according to the Joomla! Code styles. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git diff path/to/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are going to help you with that. Next add all files you want to include in your PR with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git add path/to/folder/or/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you need to commit your changes and push them to your fork:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m “Describe your changes as best and short as possible here”&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to the repository&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For pushing a branch to GitHub you would use the first time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin BRANCHNAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go the GitHub website and open your forks site. You are going to notice that there is a notice about your recent push at the top:&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_3.jpg|1012px|center|link=Github Flow 3 2016]]&lt;br /&gt;
&lt;br /&gt;
Click on ‘Compare &amp;amp; Pull request‘. Add a meaningful description, including summary of changes and important (!) testing instructions and click on ‘Create pull request‘.&lt;br /&gt;
&lt;br /&gt;
Now wait to for your Mentors comments, if everything is working they are going to merge your PR into the joomla-project repository. If not you can just fix it locally and push again. The PR is going to be updated automatically with these changes.&lt;br /&gt;
&lt;br /&gt;
=== Keeping the GSoC fork updated with Joomla staging (For Mentors)===&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
In your dev environment clone your own (forked) repository. my-user/my-gsoc-project is automatically added as &#039;origin&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we add the joomla-projects/gsoc16** repository as upstream and the joomla/joomla-cms repository as joomla remote.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc*.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add joomla https://github.com/joomla/joomla-cms.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Never change the staging branch! It is a verbatim copy from the joomla/joomla-cms repo, and must be kept in sync by you. You can set the branch to protected so that only mentors are allowed to push to it.&lt;br /&gt;
&lt;br /&gt;
==== Update staging ====&lt;br /&gt;
&lt;br /&gt;
Whenever something changes in the CMS repo, the staging branch needs to be synchronised.&lt;br /&gt;
&lt;br /&gt;
Checkout (activate) current staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next get the changes from the joomla/joomla-cms staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch joomla staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the changes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge joomla/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to your own repository and to the joomla-projects/gsoc one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
==== Update feature branches ====&lt;br /&gt;
&lt;br /&gt;
With all of your feature branches, the changes have to be merged as well.&lt;br /&gt;
&lt;br /&gt;
Checkout the branch first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout branch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Merge changes from staging&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
There might be conflicts, when the CMS changed code, that was changed in your feature branch; in that case, consult `git merge --help`.&lt;br /&gt;
&lt;br /&gt;
=== Tips and tricks ===&lt;br /&gt;
&lt;br /&gt;
Before making any changes create a new branch, so you can easily update your forks staging (or master) later and make multiple pull requests for one Repo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b NAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep your pull requests as small as possible. This makes testing and getting them merged far easier. Be descriptive in your pull request. Explain step by step how to test the changes. Where possible add screenshots for clarification.&lt;br /&gt;
&lt;br /&gt;
Code style:&lt;br /&gt;
&lt;br /&gt;
Please make sure you don’t leave any unnecessary files, comments (don’t comment code!) in your PR. Also make sure it matches the Joomla! Coding style guidelines.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/joomla/joomla-cms/blob/staging/.github/CONTRIBUTING.md Contributing to the Joomla! CMS™]&lt;br /&gt;
&lt;br /&gt;
[http://joomla.github.io/coding-standards/ Joomla! Coding Standards Manual]&lt;br /&gt;
&lt;br /&gt;
===== Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners =====&lt;br /&gt;
&lt;br /&gt;
Link [https://youtu.be/lEnYz0b7omE?t=2275 The development workflow of Git/Github]&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|lEnYz0b7omE}}&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303979</id>
		<title>GSOC 2016 Joomla GIT Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=GSOC_2016_Joomla_GIT_Workflow&amp;diff=303979"/>
		<updated>2016-05-16T06:08:58Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Tips and tricks */ Added JWC15 video&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Joomla GSoC Github Flow ==&lt;br /&gt;
&lt;br /&gt;
This document contains guidelines for GSoC students and mentors on how to manage and work with Github Repo&#039;s for GSoC projects. All the Repository&#039;s for GSoC projects are available on [https://github.com/joomla-projects/ Joomla! Project Github]&lt;br /&gt;
&lt;br /&gt;
=== Joomla! GSoC Student Workflow ===&lt;br /&gt;
First step is forking your joomla-projects/gsoc16_** repository to your personal GitHub account. Never make changes to the joomla-projects repository directly. Any contributor should work on his/her own fork of it, and move code to central repository using pull requests. Also, nobody should ever merge her/his own PR. &lt;br /&gt;
Students should always work on branches, they should never make changes to their staging branch!&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
On Github, navigate to the joomla-projects/my-gsoc-project repository and click on the ‘Fork’ button in the upper right corner. This creates a fork (a linked copy) in your account (let’s call it ‘my-user’), resulting in a new repo my-user/my-gsoc-project.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_1.jpg|1012px|center|link=Github Flow 2016]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next step is cloning the forked repository to your local computer. If you set up ssh-keys in GitHub (recommended), use the link with ssh. If not use the https link.&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_2.jpg|900px|center|link=Github Flow 2 2016]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep your fork updated with the changes from joomla-projects, you need to add the joomla-projects repo as additional remote repository (mostly called upstream):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc16**&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
You can now update staging by applying the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
Next merge the changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge upstream/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And push them to your remote fork&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Your mentors are going to keep the joomla-projects repository in sync with joomla/joomla-cms staging. You need to do the same for your fork!&lt;br /&gt;
&lt;br /&gt;
==== Making a pull request with your changes ====&lt;br /&gt;
&lt;br /&gt;
Now you can start working on your local computer. The project folder is under version control, so you can follow any changes you make. Always make a custom branch for your changes and do not work on staging directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b patch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When your patch is ready you send a so called Pull Request (PR) from your repository to the joomla-projects one. &lt;br /&gt;
&lt;br /&gt;
For that you have to push your changes to your forked repository. First make sure there are no unnecessary files and comments left. And that your code is probably formatted according to the Joomla! Code styles. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git diff path/to/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are going to help you with that. Next add all files you want to include in your PR with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git add path/to/folder/or/file&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you need to commit your changes and push them to your fork:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m “Describe your changes as best and short as possible here”&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to the repository&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For pushing a branch to GitHub you would use the first time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin BRANCHNAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go the GitHub website and open your forks site. You are going to notice that there is a notice about your recent push at the top:&lt;br /&gt;
&lt;br /&gt;
[[Image:Github_flow_3.jpg|1012px|center|link=Github Flow 3 2016]]&lt;br /&gt;
&lt;br /&gt;
Click on ‘Compare &amp;amp; Pull request‘. Add a meaningful description, including summary of changes and important (!) testing instructions and click on ‘Create pull request‘.&lt;br /&gt;
&lt;br /&gt;
Now wait to for your Mentors comments, if everything is working they are going to merge your PR into the joomla-project repository. If not you can just fix it locally and push again. The PR is going to be updated automatically with these changes.&lt;br /&gt;
&lt;br /&gt;
=== Keeping the GSoC fork updated with Joomla staging (For Mentors)===&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
&lt;br /&gt;
In your dev environment clone your own (forked) repository. my-user/my-gsoc-project is automatically added as &#039;origin&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git clone -b staging git@github.com:my-user/my-gsoc-project.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we add the joomla-projects/gsoc16** repository as upstream and the joomla/joomla-cms repository as joomla remote.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add upstream https://github.com/joomla-projects/gsoc*.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git remote add joomla https://github.com/joomla/joomla-cms.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Never change the staging branch! It is a verbatim copy from the joomla/joomla-cms repo, and must be kept in sync by you. You can set the branch to protected so that only mentors are allowed to push to it.&lt;br /&gt;
&lt;br /&gt;
==== Update staging ====&lt;br /&gt;
&lt;br /&gt;
Whenever something changes in the CMS repo, the staging branch needs to be synchronised.&lt;br /&gt;
&lt;br /&gt;
Checkout (activate) current staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next get the changes from the joomla/joomla-cms staging branch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git fetch joomla staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the changes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge joomla/staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push the changes to your own repository and to the joomla-projects/gsoc one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push origin staging&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git push upstream staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
==== Update feature branches ====&lt;br /&gt;
&lt;br /&gt;
With all of your feature branches, the changes have to be merged as well.&lt;br /&gt;
&lt;br /&gt;
Checkout the branch first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout branch-name&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
Merge changes from staging&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git merge staging&lt;br /&gt;
&amp;lt;/source&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
There might be conflicts, when the CMS changed code, that was changed in your feature branch; in that case, consult `git merge --help`.&lt;br /&gt;
&lt;br /&gt;
=== Tips and tricks ===&lt;br /&gt;
&lt;br /&gt;
Before making any changes create a new branch, so you can easily update your forks staging (or master) later and make multiple pull requests for one Repo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b NAME&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep your pull requests as small as possible. This makes testing and getting them merged far easier. Be descriptive in your pull request. Explain step by step how to test the changes. Where possible add screenshots for clarification.&lt;br /&gt;
&lt;br /&gt;
Code style:&lt;br /&gt;
&lt;br /&gt;
Please make sure you don’t leave any unnecessary files, comments (don’t comment code!) in your PR. Also make sure it matches the Joomla! Coding style guidelines.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/joomla/joomla-cms/blob/staging/.github/CONTRIBUTING.md Contributing to the Joomla! CMS™]&lt;br /&gt;
&lt;br /&gt;
[http://joomla.github.io/coding-standards/ Joomla! Coding Standards Manual]&lt;br /&gt;
&lt;br /&gt;
===== Useful session from Joomla World Conference 2015 about The development workflow of Git/Github for Beginners =====&lt;br /&gt;
 &lt;br /&gt;
{{#widget:YouTube|lEnYz0b7omE}}&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component&amp;diff=235072</id>
		<title>J3.x:Developing an MVC Component/Developing a Basic Component</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component&amp;diff=235072"/>
		<updated>2015-09-25T11:31:37Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This tutorial is part of the [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing a MVC Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
* If you have used Joomla! before reading this tutorial, you have noticed that extensions are installed using a compressed file containing all the things which are needed for installing and uninstalling them.&lt;br /&gt;
&lt;br /&gt;
* You can follow the steps below to create the Hello World! component, or you can directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-1-basic-component.zip archive]&lt;br /&gt;
&lt;br /&gt;
* Here are some slides based on this documents to explain how to create basic to advance joomla components.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://bit.ly/joomlaWorkshopBasic Joomla! Basic Component Help] &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://bit.ly/joomlaWorkshopAdvance Joomla! Advance Component Help]&lt;br /&gt;
&lt;br /&gt;
== How to add a component to Joomla! ==&lt;br /&gt;
In this article we will cover how to create and install a basic Joomla! component. For this example we will be working with the Hello World! component.&lt;br /&gt;
&lt;br /&gt;
To begin, you must first use your preferred file manager to create a directory for the Hello World! component. This directory can be anywhere on your file system, as long as it outside of your Joomla! installation directory. For this example we will name the directory &amp;lt;tt&amp;gt;com_helloworld&amp;lt;/tt&amp;gt;, but this directory can be named anything.&lt;br /&gt;
&lt;br /&gt;
Next, inside this directory we need to create some files. Using your preferred file manager, create the following files; as you create the files, add the source code for each file which is found in &#039;&#039;[[#File Details| File Details]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 | 1&lt;br /&gt;
 | &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
 | this is an XML (manifest) file that tells Joomla! how to install our component.&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the site entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | &#039;&#039;[[#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the administrator entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | &#039;&#039;[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
 | file allowing to initialise schema version of the com_helloworld component.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Installing the Hello World! Component ===&lt;br /&gt;
Using your preferred file manager, create a .zip file of this directory. For this example we will name the file &amp;lt;tt&amp;gt;com_helloworld.zip&amp;lt;/tt&amp;gt;, again this file could have been named anything.&lt;br /&gt;
&lt;br /&gt;
Now we need to install the Hello World! component. There are two ways to do this, both are covered in [[Installing an extension| Installing an Extension]]. Here we will cover the method using the Extension Manager of Joomla!. &lt;br /&gt;
&lt;br /&gt;
*Using your preferred web browser, navigate to the Administrator panel of your Joomla! site. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/administrator/index.php&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/administrator/index.php&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Click Extensions {{rarr}} Manage {{rarr}} Install {{rarr}} Upload Package File {{rarr}} Choose File&lt;br /&gt;
*Navigate and Select File&lt;br /&gt;
*Click Upload &amp;amp; Install&lt;br /&gt;
&lt;br /&gt;
Note - You should see a message letting you know if the installation succeeded or failed. &lt;br /&gt;
&lt;br /&gt;
You can test this basic function of the component by entering the Hello World! page for the site and administrator portions of your Joomla! website.&lt;br /&gt;
* Using your preferred web browser, navigate to the Hello World! component page located on the site portion of your website. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Using your preferred web browser, navigate to the Hello World! component page located on the administrator portion of your website. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/administrator/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/administrator/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You can also notice that the &#039;&#039;Hello World!&#039;&#039; component is visible in the administrator site of your Joomla installation under the &#039;&#039;Components&#039;&#039; menu.&lt;br /&gt;
&lt;br /&gt;
==File Details== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{vanchor|admin/sql/updates/mysql/0.0.1.sql}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
is an empty file allowing to initialise schema version of the com_helloworld component.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|helloworld.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;December 2013&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039;&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Hello World&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|admin/helloworld.php}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Hello World administration&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|index.html}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
common to all folders&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body bgcolor=&amp;quot;#FFFFFF&amp;quot;&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Component Contents==&lt;br /&gt;
At this point in the tutorial, your component should contain the following files:&lt;br /&gt;
{| border=1&lt;br /&gt;
 | 1&lt;br /&gt;
 | &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
 | this is an XML (manifest) file that tells Joomla! how to install our component.&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the site entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | &#039;&#039;[[#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the administrator entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | &#039;&#039;[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
 | file allowing to initialise schema version of the com_helloworld component.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
* [[User:Ribafs|Ribafs]]&lt;br /&gt;
* [[User:Cdemko|Christophe Demko]]&lt;br /&gt;
* [[User:Kevinkabatra|Kevin Kabatra]]&lt;br /&gt;
&lt;br /&gt;
{{notice|&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Prev: Introduction&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part|Next: Adding a view to the site part&amp;lt;/translate&amp;gt;|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component&amp;diff=235071</id>
		<title>J3.x:Developing an MVC Component/Developing a Basic Component</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component&amp;diff=235071"/>
		<updated>2015-09-25T11:31:20Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This tutorial is part of the [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing a MVC Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
* If you have used Joomla! before reading this tutorial, you have noticed that extensions are installed using a compressed file containing all the things which are needed for installing and uninstalling them.&lt;br /&gt;
&lt;br /&gt;
* You can follow the steps below to create the Hello World! component, or you can directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-1-basic-component.zip archive]&lt;br /&gt;
&lt;br /&gt;
* Here are some slides based on this documents to explain how to create basic to advance joomla components. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://bit.ly/joomlaWorkshopBasic Joomla! Basic Component Help] &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://bit.ly/joomlaWorkshopAdvance Joomla! Advance Component Help]&lt;br /&gt;
&lt;br /&gt;
== How to add a component to Joomla! ==&lt;br /&gt;
In this article we will cover how to create and install a basic Joomla! component. For this example we will be working with the Hello World! component.&lt;br /&gt;
&lt;br /&gt;
To begin, you must first use your preferred file manager to create a directory for the Hello World! component. This directory can be anywhere on your file system, as long as it outside of your Joomla! installation directory. For this example we will name the directory &amp;lt;tt&amp;gt;com_helloworld&amp;lt;/tt&amp;gt;, but this directory can be named anything.&lt;br /&gt;
&lt;br /&gt;
Next, inside this directory we need to create some files. Using your preferred file manager, create the following files; as you create the files, add the source code for each file which is found in &#039;&#039;[[#File Details| File Details]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 | 1&lt;br /&gt;
 | &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
 | this is an XML (manifest) file that tells Joomla! how to install our component.&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the site entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | &#039;&#039;[[#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the administrator entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | &#039;&#039;[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
 | file allowing to initialise schema version of the com_helloworld component.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Installing the Hello World! Component ===&lt;br /&gt;
Using your preferred file manager, create a .zip file of this directory. For this example we will name the file &amp;lt;tt&amp;gt;com_helloworld.zip&amp;lt;/tt&amp;gt;, again this file could have been named anything.&lt;br /&gt;
&lt;br /&gt;
Now we need to install the Hello World! component. There are two ways to do this, both are covered in [[Installing an extension| Installing an Extension]]. Here we will cover the method using the Extension Manager of Joomla!. &lt;br /&gt;
&lt;br /&gt;
*Using your preferred web browser, navigate to the Administrator panel of your Joomla! site. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/administrator/index.php&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/administrator/index.php&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Click Extensions {{rarr}} Manage {{rarr}} Install {{rarr}} Upload Package File {{rarr}} Choose File&lt;br /&gt;
*Navigate and Select File&lt;br /&gt;
*Click Upload &amp;amp; Install&lt;br /&gt;
&lt;br /&gt;
Note - You should see a message letting you know if the installation succeeded or failed. &lt;br /&gt;
&lt;br /&gt;
You can test this basic function of the component by entering the Hello World! page for the site and administrator portions of your Joomla! website.&lt;br /&gt;
* Using your preferred web browser, navigate to the Hello World! component page located on the site portion of your website. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Using your preferred web browser, navigate to the Hello World! component page located on the administrator portion of your website. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/administrator/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/administrator/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You can also notice that the &#039;&#039;Hello World!&#039;&#039; component is visible in the administrator site of your Joomla installation under the &#039;&#039;Components&#039;&#039; menu.&lt;br /&gt;
&lt;br /&gt;
==File Details== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{vanchor|admin/sql/updates/mysql/0.0.1.sql}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
is an empty file allowing to initialise schema version of the com_helloworld component.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|helloworld.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;December 2013&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039;&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Hello World&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|admin/helloworld.php}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Hello World administration&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|index.html}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
common to all folders&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body bgcolor=&amp;quot;#FFFFFF&amp;quot;&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Component Contents==&lt;br /&gt;
At this point in the tutorial, your component should contain the following files:&lt;br /&gt;
{| border=1&lt;br /&gt;
 | 1&lt;br /&gt;
 | &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
 | this is an XML (manifest) file that tells Joomla! how to install our component.&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the site entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | &#039;&#039;[[#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the administrator entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | &#039;&#039;[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
 | file allowing to initialise schema version of the com_helloworld component.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
* [[User:Ribafs|Ribafs]]&lt;br /&gt;
* [[User:Cdemko|Christophe Demko]]&lt;br /&gt;
* [[User:Kevinkabatra|Kevin Kabatra]]&lt;br /&gt;
&lt;br /&gt;
{{notice|&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Prev: Introduction&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part|Next: Adding a view to the site part&amp;lt;/translate&amp;gt;|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component&amp;diff=235070</id>
		<title>J3.x:Developing an MVC Component/Developing a Basic Component</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Developing_a_Basic_Component&amp;diff=235070"/>
		<updated>2015-09-25T11:30:43Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{:J3.1:Developing an MVC Component/&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This tutorial is part of the [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing a MVC Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
* If you have used Joomla! before reading this tutorial, you have noticed that extensions are installed using a compressed file containing all the things which are needed for installing and uninstalling them.&lt;br /&gt;
&lt;br /&gt;
* You can follow the steps below to create the Hello World! component, or you can directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-1-basic-component.zip archive]&lt;br /&gt;
&lt;br /&gt;
* Here are some slides based on this documents to explain how to create basic to advance joomla components. [http://bit.ly/joomlaWorkshopBasic Joomla! Basic Component Help] &lt;br /&gt;
[http://bit.ly/joomlaWorkshopAdvance Joomla! Advance Component Help]&lt;br /&gt;
&lt;br /&gt;
== How to add a component to Joomla! ==&lt;br /&gt;
In this article we will cover how to create and install a basic Joomla! component. For this example we will be working with the Hello World! component.&lt;br /&gt;
&lt;br /&gt;
To begin, you must first use your preferred file manager to create a directory for the Hello World! component. This directory can be anywhere on your file system, as long as it outside of your Joomla! installation directory. For this example we will name the directory &amp;lt;tt&amp;gt;com_helloworld&amp;lt;/tt&amp;gt;, but this directory can be named anything.&lt;br /&gt;
&lt;br /&gt;
Next, inside this directory we need to create some files. Using your preferred file manager, create the following files; as you create the files, add the source code for each file which is found in &#039;&#039;[[#File Details| File Details]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 | 1&lt;br /&gt;
 | &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
 | this is an XML (manifest) file that tells Joomla! how to install our component.&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the site entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | &#039;&#039;[[#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the administrator entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | &#039;&#039;[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
 | file allowing to initialise schema version of the com_helloworld component.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
=== Installing the Hello World! Component ===&lt;br /&gt;
Using your preferred file manager, create a .zip file of this directory. For this example we will name the file &amp;lt;tt&amp;gt;com_helloworld.zip&amp;lt;/tt&amp;gt;, again this file could have been named anything.&lt;br /&gt;
&lt;br /&gt;
Now we need to install the Hello World! component. There are two ways to do this, both are covered in [[Installing an extension| Installing an Extension]]. Here we will cover the method using the Extension Manager of Joomla!. &lt;br /&gt;
&lt;br /&gt;
*Using your preferred web browser, navigate to the Administrator panel of your Joomla! site. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/administrator/index.php&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/administrator/index.php&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Click Extensions {{rarr}} Manage {{rarr}} Install {{rarr}} Upload Package File {{rarr}} Choose File&lt;br /&gt;
*Navigate and Select File&lt;br /&gt;
*Click Upload &amp;amp; Install&lt;br /&gt;
&lt;br /&gt;
Note - You should see a message letting you know if the installation succeeded or failed. &lt;br /&gt;
&lt;br /&gt;
You can test this basic function of the component by entering the Hello World! page for the site and administrator portions of your Joomla! website.&lt;br /&gt;
* Using your preferred web browser, navigate to the Hello World! component page located on the site portion of your website. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Using your preferred web browser, navigate to the Hello World! component page located on the administrator portion of your website. The address would be &amp;lt;tt&amp;gt;&amp;lt;yoursite&amp;gt;/joomla/administrator/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;. For this example we will navigate to &amp;lt;tt&amp;gt;localhost/joomla/administrator/index.php?option=com_helloworld&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You can also notice that the &#039;&#039;Hello World!&#039;&#039; component is visible in the administrator site of your Joomla installation under the &#039;&#039;Components&#039;&#039; menu.&lt;br /&gt;
&lt;br /&gt;
==File Details== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{vanchor|admin/sql/updates/mysql/0.0.1.sql}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
is an empty file allowing to initialise schema version of the com_helloworld component.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|helloworld.xml}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;December 2013&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.1&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New since J2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu link=&#039;index.php?option=com_helloworld&#039;&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Hello World&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|admin/helloworld.php}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Hello World administration&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{vanchor|index.html}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
common to all folders&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body bgcolor=&amp;quot;#FFFFFF&amp;quot;&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Component Contents==&lt;br /&gt;
At this point in the tutorial, your component should contain the following files:&lt;br /&gt;
{| border=1&lt;br /&gt;
 | 1&lt;br /&gt;
 | &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
 | this is an XML (manifest) file that tells Joomla! how to install our component.&lt;br /&gt;
 |-&lt;br /&gt;
 | 2&lt;br /&gt;
 | &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the site entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 3&lt;br /&gt;
 | &#039;&#039;[[#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 4&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 5&lt;br /&gt;
 | &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
 | this is the administrator entry point to the Hello World! component&lt;br /&gt;
 |-&lt;br /&gt;
 | 6&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 7&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 8&lt;br /&gt;
 | &#039;&#039;[[#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
 | prevents web server from listing directory content&lt;br /&gt;
 |-&lt;br /&gt;
 | 9&lt;br /&gt;
 | &#039;&#039;[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
 | file allowing to initialise schema version of the com_helloworld component.&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
* [[User:Ribafs|Ribafs]]&lt;br /&gt;
* [[User:Cdemko|Christophe Demko]]&lt;br /&gt;
* [[User:Kevinkabatra|Kevin Kabatra]]&lt;br /&gt;
&lt;br /&gt;
{{notice|&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Prev: Introduction&amp;lt;/translate&amp;gt;|class=expand success}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;large-6 columns&amp;quot;&amp;gt;{{Basic button|&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part|Next: Adding a view to the site part&amp;lt;/translate&amp;gt;|class=expand}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Joomla! 3.4]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:Tutorials in a Series]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=163904</id>
		<title>J3.x:Creating a simple module/Developing a Basic Module</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Creating_a_simple_module/Developing_a_Basic_Module&amp;diff=163904"/>
		<updated>2015-03-17T11:25:01Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: Apply Coding standard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Chunk30:Creating a Simple Module for Joomla!3.x - Contents}}&lt;br /&gt;
A module is a lightweight and flexible extension. They are used for small bits of the page that are generally less complex and are able to be seen across different components.&lt;br /&gt;
&lt;br /&gt;
You can see many examples of modules in the standard Joomla! install: - menus - Latest News - Login form - and many more.&lt;br /&gt;
&lt;br /&gt;
This tutorial will explain how to go about creating a simple Hello World module. Through this tutorial you will learn the basic file structure of a module. This basic structure can then be expanded to produce more elaborate modules.&lt;br /&gt;
&lt;br /&gt;
== File Structure ==&lt;br /&gt;
&lt;br /&gt;
There are four basic files that are used in the standard pattern of module development: &lt;br /&gt;
* &amp;lt;code&amp;gt;mod_helloworld.php&amp;lt;/code&amp;gt; - This file is the main entry point for the module. It will perform any necessary initialization routines, call helper routines to collect any necessary data, and include the template which will display the module output.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;mod_helloworld.xml&amp;lt;/code&amp;gt; - This file contains information about the module. It defines the files that need to be installed by the Joomla! installer and specifies configuration parameters for the module.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;helper.php&amp;lt;/code&amp;gt; - This file contains the helper class which is used to do the actual work in retrieving the information to be displayed in the module (usually from the database or some other source).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tmpl/default.php&amp;lt;/code&amp;gt; - This is the module template. This file will take the data collected by mod_helloworld.php and generate the HTML to be displayed on the page.&lt;br /&gt;
&lt;br /&gt;
== Creating mod_helloworld.php ==&lt;br /&gt;
&lt;br /&gt;
The mod_helloworld.php file will perform three tasks:&lt;br /&gt;
* include the helper.php file which contains the class to be used to collect the necessary data&lt;br /&gt;
* invoke the appropriate helper class method to retrieve the data&lt;br /&gt;
* include the template to display the output.&lt;br /&gt;
&lt;br /&gt;
The helper class is defined in our helper.php file. This file is included with a require_once statement:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;require_once( dirname(__FILE__) . &#039;/helper.php&#039; );&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;require_once&amp;lt;/code&amp;gt; is used because our helper functions are defined within a class, and we only want the class defined once.&lt;br /&gt;
&lt;br /&gt;
Our helper class has not been defined yet, but when it is, it will contain one method: getHello(). For our basic example, it is not really necessary to do this - the “Hello, World” message that this method returns could simply be included in the template. We use a helper class here to demonstrate this basic technique.&lt;br /&gt;
&lt;br /&gt;
Our module currently does not use any parameters, but we will pass them to the helper method anyway so that it can be used later if we decide to expand the functionality of our module.&lt;br /&gt;
&lt;br /&gt;
The helper class method is invoked in the following way:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$hello = modHelloWorldHelper::getHello($params);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Completed mod_helloworld.php file ===&lt;br /&gt;
&lt;br /&gt;
The complete mod_helloworld.php file is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Hello World! Module Entry Point&lt;br /&gt;
 * &lt;br /&gt;
 * @package    Joomla.Tutorials&lt;br /&gt;
 * @subpackage Modules&lt;br /&gt;
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module&lt;br /&gt;
 * @license        GNU/GPL, see LICENSE.php&lt;br /&gt;
 * mod_helloworld is free software. This version may have been modified pursuant&lt;br /&gt;
 * to the GNU General Public License, and as distributed it includes or&lt;br /&gt;
 * is derivative of works licensed under the GNU General Public License or&lt;br /&gt;
 * other free or open source software licenses.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// no direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
// Include the syndicate functions only once&lt;br /&gt;
require_once( dirname(__FILE__) . &#039;/helper.php&#039; );&lt;br /&gt;
&lt;br /&gt;
$hello = modHelloWorldHelper::getHello($params);&lt;br /&gt;
require( JModuleHelper::getLayoutPath(&#039;mod_helloworld&#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The one line that we haven’t explained so far is the first line. This line checks to make sure that this file is being included from the Joomla! application. This is necessary to prevent variable injection and other potential security concerns.&lt;br /&gt;
&lt;br /&gt;
== Creating helper.php ==&lt;br /&gt;
&lt;br /&gt;
The helper.php file contains that helper class that is used to retrieve the data to be displayed in the module output. As stated earlier, our helper class will have one method: getHello(). This method will return the ‘Hello, World’ message.&lt;br /&gt;
&lt;br /&gt;
Here is the code for the helper.php file:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Helper class for Hello World! module&lt;br /&gt;
 * &lt;br /&gt;
 * @package    Joomla.Tutorials&lt;br /&gt;
 * @subpackage Modules&lt;br /&gt;
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module&lt;br /&gt;
 * @license        GNU/GPL, see LICENSE.php&lt;br /&gt;
 * mod_helloworld is free software. This version may have been modified pursuant&lt;br /&gt;
 * to the GNU General Public License, and as distributed it includes or&lt;br /&gt;
 * is derivative of works licensed under the GNU General Public License or&lt;br /&gt;
 * other free or open source software licenses.&lt;br /&gt;
 */&lt;br /&gt;
class ModHelloWorldHelper&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * Retrieves the hello message&lt;br /&gt;
     *&lt;br /&gt;
     * @param   array  $params An object containing the module parameters&lt;br /&gt;
     *&lt;br /&gt;
     * @access public&lt;br /&gt;
     */    &lt;br /&gt;
    public static function getHello($params)&lt;br /&gt;
    {&lt;br /&gt;
        return &#039;Hello, World!&#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is no rule stating that we must name our helper class as we have, but it is helpful to do this so that it is easily identifiable and locatable. Note that it is required to be in this format if you plan to use the com_ajax plugin.&lt;br /&gt;
&lt;br /&gt;
More advanced modules might include database requests or other functionality in the helper class method.&lt;br /&gt;
&lt;br /&gt;
== Creating tmpl/default.php ==&lt;br /&gt;
&lt;br /&gt;
The default.php file is the template which displays the module output.&lt;br /&gt;
&lt;br /&gt;
The code for the default.php file is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $hello; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An important point to note is that the template file has the same scope as the mod_helloworld.php file. What this means is that the variable $hello can be defined in the mod_helloworld.php file and then used in the template file without any extra declarations or function calls.&lt;br /&gt;
&lt;br /&gt;
== Creating mod_helloworld.xml ==&lt;br /&gt;
&lt;br /&gt;
The mod_helloworld.xml is used to specify which files the installer needs to copy and is used by the Module Manager to determine which parameters are used to configure the module. Other information about the module is also specified in this file.&lt;br /&gt;
&lt;br /&gt;
The code for mod_helloworld.xml is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;module&amp;quot; version=&amp;quot;3.1.0&amp;quot; client=&amp;quot;site&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Hello, World!&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0.0&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;A simple Hello, World! module.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;files&amp;gt;&lt;br /&gt;
        &amp;lt;filename&amp;gt;mod_helloworld.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;filename module=&amp;quot;mod_helloworld&amp;quot;&amp;gt;mod_helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;filename&amp;gt;helper.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;filename&amp;gt;tmpl/default.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
        &amp;lt;filename&amp;gt;tmpl/index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
    &amp;lt;/files&amp;gt;&lt;br /&gt;
    &amp;lt;config&amp;gt;&lt;br /&gt;
    &amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Manifest files]] explains the technical details of the elements used in the XML file.&lt;br /&gt;
&lt;br /&gt;
You will notice that there are two additional files that we have not yet mentioned: index.html and tmpl/index.html. These files are included so that these directories cannot be browsed. If a user attempts to point their browser to these folders, the index.html file will be displayed. These files can be left empty or can contain the simple line:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&amp;lt;html&amp;gt;&amp;lt;body bgcolor=&amp;quot;#FFFFFF&amp;quot;&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which will display an empty page.&lt;br /&gt;
&lt;br /&gt;
Since our module does not use any [[Form_field|form fields]], the config section is empty.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Module development for Joomla! is a fairly simple, straightforward process. Using the techniques described in this tutorial, an endless variety of modules can be developed with little hassle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Module Development]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=SQL_Optimisation_Working_Group&amp;diff=133021</id>
		<title>SQL Optimisation Working Group</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=SQL_Optimisation_Working_Group&amp;diff=133021"/>
		<updated>2014-11-13T05:22:16Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Joomla! 4 SQL Optimization Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Members ==&lt;br /&gt;
&lt;br /&gt;
* Nadeeshaan Gunasinghe&lt;br /&gt;
* [[User:Gunjanpatel|Gunjan Patel]] (Working Group Coordinator)&lt;br /&gt;
* Thomas Hunziker (PLT Contact: thomas.hunziker at joomla.org)&lt;br /&gt;
* Nicola Galgano&lt;br /&gt;
* Eli Aschkenasy&lt;br /&gt;
* Mrunal Pittalia&lt;br /&gt;
* Steven Pignataro&lt;br /&gt;
&lt;br /&gt;
== Goal of the Project ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Joomla!, being one of the top content management systems in the world, is constantly faced with stiff competition. Often times what is considered important about any CMS are the enhancements and the feature sets a specific CMS has. There is another (sometimes overlooked) important fact which we need to pay attention to as we consider the end-user’s needs, which is the speed of the software. This depends on a multitude of factors but the top-most bottleneck is often the database management system and the way we use it to store and retrieve data.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the SQL optimization working group we are mainly focused on the above mentioned fact. Our vision is to provide the community a faster way in which the CMS interacts with the DB by reducing the database management system based overheads.&lt;br /&gt;
&lt;br /&gt;
You can see the foundation of our work group idea here, [[GSOC_2014_Project_Ideas#Project:_SQL_Optimization|GSOC 2014 Project: SQL Optimization]]&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* We have started this project as a Google Summer of Code SQL Optimisation Project https://www.google-melange.com/gsoc/project/details/google/gsoc2014/nadeeshaan/5657382461898752&lt;br /&gt;
* Sent Pull Request on Joomla-CMS which can be found here https://github.com/joomla/joomla-cms/pulls/nadeeshaan&lt;br /&gt;
&lt;br /&gt;
== The immediate areas we focused on were: ==&lt;br /&gt;
&lt;br /&gt;
* Categories related query optimization&lt;br /&gt;
* Articles related query optimization&lt;br /&gt;
* Tags, menus, languages related optimization&lt;br /&gt;
* Nested set optimization as a research project&lt;br /&gt;
&lt;br /&gt;
:Based on the above criteria we have submitted optimization work to the community and the current work can be seen at https://github.com/nadeeshaan/JGSoC-SQL-Optimisation . In the future we are planning to move this project to https://github.com/joomla-projects/GSoC-SQL-Optimization to ensure continuation of this work.&lt;br /&gt;
&lt;br /&gt;
== Roadmap &amp;amp; Future Plans ==&lt;br /&gt;
&lt;br /&gt;
:We are focused to improve the Joomla database performance as well as the database access performance by efforts such as query refactoring and re-engineering. As our main target we are hoping to give a major priority for the schema redesign and also the nested sets optimization. At the moment we have laid the groundwork for the nested-set optimization but there is a lot more refactoring to be done.&lt;br /&gt;
:In addition we are planning to improve the Joomla! Debug Plugin to measure previous query time and time difference between old and new queries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Following are the main areas that still need extensive work:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* Nested sets database schema redesign&lt;br /&gt;
* Debug Plugin improvement to measure query performance &lt;br /&gt;
* Find the rest of the huge queries and bottleneck of the software regarding performance &lt;br /&gt;
* Optimise queries of different views&lt;br /&gt;
&lt;br /&gt;
== Joomla! 4 SQL Optimization Plan ==&lt;br /&gt;
	While we currently focus mainly on optimizing existing queries it is important to understand that we’re extremely limited due to backwards compatibility requirements. It is our hope that for Joomla! 4 the DB schema can be revisited and perhaps totally re-written. F0F has internally implemented various DB functions (specifically in the nested-sets area) that should be part of how core joomla tables are accessed.&lt;br /&gt;
&lt;br /&gt;
== Read More ==&lt;br /&gt;
You may read more about us on [http://volunteers.joomla.org/working-groups/sql-optimization-working-group#reports Joomla! Volunteers Portal - SQL Optimization Working Group]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working Groups]]&lt;br /&gt;
[[Category:PLT]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=SQL_Optimisation_Working_Group&amp;diff=133020</id>
		<title>SQL Optimisation Working Group</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=SQL_Optimisation_Working_Group&amp;diff=133020"/>
		<updated>2014-11-13T05:21:52Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Joomla! 4 SQL Optimization Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Members ==&lt;br /&gt;
&lt;br /&gt;
* Nadeeshaan Gunasinghe&lt;br /&gt;
* [[User:Gunjanpatel|Gunjan Patel]] (Working Group Coordinator)&lt;br /&gt;
* Thomas Hunziker (PLT Contact: thomas.hunziker at joomla.org)&lt;br /&gt;
* Nicola Galgano&lt;br /&gt;
* Eli Aschkenasy&lt;br /&gt;
* Mrunal Pittalia&lt;br /&gt;
* Steven Pignataro&lt;br /&gt;
&lt;br /&gt;
== Goal of the Project ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Joomla!, being one of the top content management systems in the world, is constantly faced with stiff competition. Often times what is considered important about any CMS are the enhancements and the feature sets a specific CMS has. There is another (sometimes overlooked) important fact which we need to pay attention to as we consider the end-user’s needs, which is the speed of the software. This depends on a multitude of factors but the top-most bottleneck is often the database management system and the way we use it to store and retrieve data.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the SQL optimization working group we are mainly focused on the above mentioned fact. Our vision is to provide the community a faster way in which the CMS interacts with the DB by reducing the database management system based overheads.&lt;br /&gt;
&lt;br /&gt;
You can see the foundation of our work group idea here, [[GSOC_2014_Project_Ideas#Project:_SQL_Optimization|GSOC 2014 Project: SQL Optimization]]&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* We have started this project as a Google Summer of Code SQL Optimisation Project https://www.google-melange.com/gsoc/project/details/google/gsoc2014/nadeeshaan/5657382461898752&lt;br /&gt;
* Sent Pull Request on Joomla-CMS which can be found here https://github.com/joomla/joomla-cms/pulls/nadeeshaan&lt;br /&gt;
&lt;br /&gt;
== The immediate areas we focused on were: ==&lt;br /&gt;
&lt;br /&gt;
* Categories related query optimization&lt;br /&gt;
* Articles related query optimization&lt;br /&gt;
* Tags, menus, languages related optimization&lt;br /&gt;
* Nested set optimization as a research project&lt;br /&gt;
&lt;br /&gt;
:Based on the above criteria we have submitted optimization work to the community and the current work can be seen at https://github.com/nadeeshaan/JGSoC-SQL-Optimisation . In the future we are planning to move this project to https://github.com/joomla-projects/GSoC-SQL-Optimization to ensure continuation of this work.&lt;br /&gt;
&lt;br /&gt;
== Roadmap &amp;amp; Future Plans ==&lt;br /&gt;
&lt;br /&gt;
:We are focused to improve the Joomla database performance as well as the database access performance by efforts such as query refactoring and re-engineering. As our main target we are hoping to give a major priority for the schema redesign and also the nested sets optimization. At the moment we have laid the groundwork for the nested-set optimization but there is a lot more refactoring to be done.&lt;br /&gt;
:In addition we are planning to improve the Joomla! Debug Plugin to measure previous query time and time difference between old and new queries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Following are the main areas that still need extensive work:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* Nested sets database schema redesign&lt;br /&gt;
* Debug Plugin improvement to measure query performance &lt;br /&gt;
* Find the rest of the huge queries and bottleneck of the software regarding performance &lt;br /&gt;
* Optimise queries of different views&lt;br /&gt;
&lt;br /&gt;
== Joomla! 4 SQL Optimization Plan ==&lt;br /&gt;
	While we currently focus mainly on optimizing existing queries it is important to understand that we’re extremely limited due to backwards compatibility requirements. It is our hope that for Joomla! 4 the DB schema can be revisited and perhaps totally re-written. F0F has internally implemented various DB functions (specifically in the nested-sets area) that should be part of how core joomla tables are accessed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Read More ==&lt;br /&gt;
You may read more about us on [http://volunteers.joomla.org/working-groups/sql-optimization-working-group#reports Joomla! Volunteers Portal - SQL Optimization Working Group]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working Groups]]&lt;br /&gt;
[[Category:PLT]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Component_Patchtester_for_Testers&amp;diff=132581</id>
		<title>Component Patchtester for Testers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Component_Patchtester_for_Testers&amp;diff=132581"/>
		<updated>2014-11-10T11:51:44Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: ~~~~Added note to use http://issues.joomla.org/&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;
Patch Tester is a Joomla extension that allows you to easily apply changes from pull requests. This extension helps Joomla community members test Joomla CMS bug fixes.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:com_patchtester.jpg|center|750px|com_patchtester]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Download com_patchtester == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Download the component at:&amp;lt;/translate&amp;gt; https://github.com/joomla-extensions/patchtester/releases/tag/2.0.beta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Tutorial == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
You can see a video tutorial here:&amp;lt;/translate&amp;gt; http://www.youtube.com/watch?v=4OWgusZgIfk&amp;amp;feature=youtube_gdata&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This video is showing example using old tracker. Please user http://issues.joomla.org/ for testing and reporting issues.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|4OWgusZgIfk}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Authors == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Patch tester component was originally created by Ian Maclennan, and has been improved by Nikolai Plath and Michael Babker.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
You can find most updated source code at:&amp;lt;/translate&amp;gt; https://github.com/joomla-extensions/patchtester&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Additional Information == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Testing_Joomla!_patches|Testing Joomla! patches]] using Patchtester&lt;br /&gt;
* [[S:MyLanguage/Filing bugs and issues|Filing bugs and issues]]&lt;br /&gt;
* [[S:MyLanguage/Bug_and_Issue_Tracker_Priority|Bug and Issue Tracker Priority]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
[[Category:Bug Tracker]]&lt;br /&gt;
[[Category:Video]]&lt;br /&gt;
[[Category:Testing]]&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=SQL_Optimisation_Working_Group&amp;diff=129016</id>
		<title>SQL Optimisation Working Group</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=SQL_Optimisation_Working_Group&amp;diff=129016"/>
		<updated>2014-10-23T11:59:32Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: ~~~~ Adding SQL Optimisation Working group page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team Members ==&lt;br /&gt;
&lt;br /&gt;
* Nadeeshaan Gunasinghe&lt;br /&gt;
* [[User:Gunjanpatel|Gunjan Patel]] (Working Group Coordinator)&lt;br /&gt;
* Thomas Hunziker (PLT Contact: thomas.hunziker at joomla.org)&lt;br /&gt;
* Nicola Galgano&lt;br /&gt;
* Eli Aschkenasy&lt;br /&gt;
* Mrunal Pittalia&lt;br /&gt;
&lt;br /&gt;
== Goal of the Project ==&lt;br /&gt;
&lt;br /&gt;
:Joomla!, being one of the top content management systems in the world, is constantly faced with stiff competition. Often times what is considered important about any CMS are the enhancements and the feature sets a specific CMS has. There is another (sometimes overlooked) important fact which we need to pay attention to as we consider the end-user’s needs, which is the speed of the software. This depends on a multitude of factors but the top-most bottleneck is often the database management system and the way we use it to store and retrieve data.&lt;br /&gt;
:In the SQL optimization working group we are mainly focused on the above mentioned fact. Our vision is to provide the community a faster way in which the CMS interacts with the DB by reducing the database management system based overheads.&lt;br /&gt;
:You can see the foundation of our work group idea here, http://docs.joomla.org/GSOC_2014_Project_Ideas#Project:_SQL_Optimization&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* We have started this project as a Google Summer of Code SQL Optimisation Project https://www.google-melange.com/gsoc/project/details/google/gsoc2014/nadeeshaan/5657382461898752&lt;br /&gt;
* Sent Pull Request on Joomla-CMS which can be found here https://github.com/joomla/joomla-cms/pulls/nadeeshaan&lt;br /&gt;
&lt;br /&gt;
== The immediate areas we focused on were: ==&lt;br /&gt;
&lt;br /&gt;
* Categories related query optimization&lt;br /&gt;
* Articles related query optimization&lt;br /&gt;
* Tags, menus, languages related optimization&lt;br /&gt;
* Nested set optimization as a research project&lt;br /&gt;
&lt;br /&gt;
:Based on the above criteria we have submitted optimization work to the community and the current work can be seen at https://github.com/nadeeshaan/JGSoC-SQL-Optimisation . In the future we are planning to move this project to https://github.com/joomla-projects/GSoC-SQL-Optimization to ensure continuation of this work.&lt;br /&gt;
&lt;br /&gt;
== Roadmap &amp;amp; Future Plans ==&lt;br /&gt;
&lt;br /&gt;
:We are focused to improve the Joomla database performance as well as the database access performance by efforts such as query refactoring and re-engineering. As our main target we are hoping to give a major priority for the schema redesign and also the nested sets optimization. At the moment we have laid the groundwork for the nested-set optimization but there is a lot more refactoring to be done.&lt;br /&gt;
:In addition we are planning to improve the Joomla! Debug Plugin to measure previous query time and time difference between old and new queries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Following are the main areas that still need extensive work:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* Nested sets database schema redesign&lt;br /&gt;
* Debug Plugin improvement to measure query performance &lt;br /&gt;
* Find the rest of the huge queries and bottleneck of the software regarding performance &lt;br /&gt;
* Optimise queries of different views&lt;br /&gt;
&lt;br /&gt;
== Joomla! 4 SQL Optimization Plan ==&lt;br /&gt;
	While we currently focus mainly on optimizing existing queries it is important to understand that we’re extremely limited due to backwards compatibility requirements. It is our hope that for Joomla! 4 the DB schema can be revisited and perhaps totally re-written. F0F has internally implemented various DB functions (specifically in the nested-sets area) that should be part of how core joomla tables are accessed.&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Pizza_Bugs_and_Fun_October_17,_2014&amp;diff=127404</id>
		<title>Pizza Bugs and Fun October 17, 2014</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Pizza_Bugs_and_Fun_October_17,_2014&amp;diff=127404"/>
		<updated>2014-10-16T12:09:26Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* India */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:pbf.png|225px|left]]&lt;br /&gt;
&lt;br /&gt;
A Joomla! Pizza, Bugs and Fun event is scheduled for Friday, October 17, 2014. The event is global for virtual participants (both businesses and individuals), with local venues wherever they are organized. The key goal is to fix as many Joomla 3 and Joomla 2.5 bugs as possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See the section [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#General_Instructions General Instructions] below for instructions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
Follow [https://twitter.com/joomlabugsquad @JoomlaBugSquad] on Twitter for updates during PBF and some social fun.  The &#039;&#039;Twitter&#039;&#039;&#039; hash tag is #JoomlaPBF.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot; /&amp;gt;&lt;br /&gt;
== Goals ==&lt;br /&gt;
* &#039;&#039;&#039;Bugs&#039;&#039;&#039; : We will be working through the [http://issues.joomla.org/ CMS Issue Tracker] where there are bug reports needing patches and/or testing.&lt;br /&gt;
* &#039;&#039;&#039;Documentation&#039;&#039;&#039; : If you want to help out writing documentation, you&#039;re also more than welcome.  See the [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#If_you_want_to_work_on_Documentation Documentation Details] below for suggestions.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
See the [[Pizza_Bugs_and_Fun_October_17,_2014#Chat|Chat section]].&lt;br /&gt;
&lt;br /&gt;
=== Training Sessions ===&lt;br /&gt;
There will be an optional webinar training session on 16 October, 2014 at 15:00 UTC. We&#039;ll post the link here an hour before.&lt;br /&gt;
&lt;br /&gt;
Also, on 16 October, 2014, [[Pizza_Bugs_and_Fun_October_17,_2014#Chat|the chat]] will be open for a Q&amp;amp;A and for help getting started.&lt;br /&gt;
&lt;br /&gt;
=== Recognition ===&lt;br /&gt;
We&#039;ve dubbed the event as a Business PBF, since it&#039;s the second PBF on a weekday (Friday) and we&#039;d like to get more business involved. We&#039;ve created badges that you can use on your sites to spread awareness of the event and get recognition for your participation: http://developer.joomla.org/pbf&lt;br /&gt;
&lt;br /&gt;
Furthermore, we&#039;d like to give you more recognition and highlight your pledge of participation by placing your logo and a link to your site on the landing page: http://developer.joomla.org/pbf&lt;br /&gt;
&lt;br /&gt;
There are four participations levels: Epic, Platinum, Gold, and Silver. Platinum is for 10 hours or more pledged to the event. Gold is four hours or more pledged. Silver is pledged to participate in the event. And Epic for 100+ hours pledged!&lt;br /&gt;
&lt;br /&gt;
So, for example, if Company ABC had five of their developers for two hours, then they could use the Platinum badge and have their logo (and link) in the platinum area on the landing page.&lt;br /&gt;
&lt;br /&gt;
The hours you choose to pledge towards the event is totally up to you as an individual or business. As a bonus, if you write a blog post about the event, you can count it as 30 minutes towards your pledge. So if you pledged 5 hours and write a blog post, you&#039;d be helping at the event for 4.5 hours.&lt;br /&gt;
&lt;br /&gt;
Finally, on the day of the event, come and go as you&#039;d like and fulfill your pledged hours. You can help with testing bug fixes, reporting bugs, coding bug fixes, etc. Most of all, enjoy every minute! Have fun, enjoy the fellowship, learn, and make Joomla better for you, your business, your clients, and your friends.&lt;br /&gt;
&lt;br /&gt;
=== General Instructions ===&lt;br /&gt;
&lt;br /&gt;
These instructions may change as we get closer to the event.&lt;br /&gt;
&lt;br /&gt;
==== Task List ====&lt;br /&gt;
We have a list of [http://issues.joomla.org/?label=38 suggested items] available to work on. They range from very easy to intermediate difficulty. However, you&#039;re not just limited to this list and using the below process you can test/code for any items:&lt;br /&gt;
&lt;br /&gt;
==== If you want to test bug fixes (i.e. patches) ====&lt;br /&gt;
* Look for issues with a status of Pending. We want at least 2 testers and more on complex issues, so you can test what others have tested already.&lt;br /&gt;
* Use the [http://issues.joomla.org/ CMS Issue Tracker] as usual, which means you can use the [[Component Patchtester for Testers|Joomla Patch Tester]].&lt;br /&gt;
* Most of the issues should have test instructions with them.&lt;br /&gt;
* Once you have tested, add comments to the tracker on your results. Start your comment with @test so you will get counted in the stats as a tester. If the test is successful check of a successful text box.&lt;br /&gt;
* Note: You don&#039;t have to delete the installation folder when you are using the development version of Joomla. This allows you to reinstall just by deleting the configuration.php file.&lt;br /&gt;
* Note: See the [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#FAQ FAQ] on how to apply a Git pull request.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;h5&amp;gt;Helpful Documentation&amp;lt;/h5&amp;gt;&lt;br /&gt;
:* [[Component Patchtester for Testers]] - We&#039;d recommend beginners to use the [[Component Patchtester for Testers|Joomla Patch Tester]]&lt;br /&gt;
&lt;br /&gt;
==== If you want to code bug fixes ====&lt;br /&gt;
* Use the [http://issues.joomla.org/ CMS Issue Tracker] as usual, looking for the issues with a status of Confirmed.&lt;br /&gt;
* Send in a [[Git for Coders|pull request (PR)]]. Add testing instructions if they don&#039;t already exist.{{-}}&amp;lt;h5&amp;gt;Helpful documentation&amp;lt;/h5&amp;gt;&lt;br /&gt;
:* [[Component Patchtester for Testers]]&lt;br /&gt;
:* [[Git for Testers and Trackers]]&lt;br /&gt;
:* [[Using the Github UI to Make Pull Requests]] - this is the easiest way to submit simple pull requests&lt;br /&gt;
:* [[Git for Coders]]&lt;br /&gt;
:* [[Working with git and github/My first pull request]]&lt;br /&gt;
:* [[Secure coding guidelines]]&lt;br /&gt;
:* [[Development Best Practices]]&lt;br /&gt;
:* [http://www.slideshare.net/patelgunjan/joomla-pizza-bugs-and-fun-2014-preevent-seminar Joomla! Pizza Bugs and Fun 2014 pre-event Seminar]&lt;br /&gt;
&lt;br /&gt;
==== If you want to work on Documentation ====&lt;br /&gt;
* To edit this Documentation Wiki, you will need a user account on the wiki. If you don&#039;t already have one, you may register on [[Special:UserLogin]]. You only need a valid email address to register. After confirming your email address you will have immediate permission to edit any page except for a few that are protected because they are high profile spam targets.&lt;br /&gt;
* &#039;&#039;&#039;Important!&#039;&#039;&#039; - You should review the [[JDOC:Wiki policy|Wiki policy]] and our use of [[User:Abuse filter|Abuse filters]] for new users.&lt;br /&gt;
* Get your user account a few days before and make sure that you are able to sign in since the automatic authorization system can lock some people out.&lt;br /&gt;
* If you&#039;d like something to be edited, but you&#039;re not sure what to write exactly, use talk pages to add comments to pages.&lt;br /&gt;
* During the PBF, several experienced Wiki editors will be available in the chat to help you.&lt;br /&gt;
&lt;br /&gt;
{{:{{PAGENAME}}/Documentation needs}}&lt;br /&gt;
&lt;br /&gt;
=== Pizza ===&lt;br /&gt;
We are offering pizza (or any comparable locally popular main course) and soda for pre-registered groups. We are not setting a specific maximum, but please don’t go crazy with it. Get enough so there’s plenty for everyone, but not a week’s worth of pizza and soda leftovers for everyone. Contact Nick Savov (nick.savov[at]community.joomla[dot]org , replace [at] with @ and [dot] with .) before the event to register and get details.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc.&lt;br /&gt;
&lt;br /&gt;
If you set up a location please send contact information to Nick Savov (nick.savov[at]community.joomla[dot]org , replace [at] with @ and [dot] with .). Feel free to contact him with any questions.&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
&lt;br /&gt;
The event is global and across all timezones on October 17th, 2014 (48 hours total). You can come and go as you&#039;d like and fulfill your pledged hours. You can help with testing bug fixes, reporting bugs, coding bug fixes, etc. Most of all, enjoy every minute! Have fun, enjoy the community, learn, and make Joomla better for you, your business, your clients, and your friends.&lt;br /&gt;
&lt;br /&gt;
There are also some physical venues... see below.&lt;br /&gt;
&lt;br /&gt;
====Twitter====&lt;br /&gt;
Follow [https://twitter.com/joomlabugsquad @JoomlaBugSquad] on Twitter for updates during PBF and some social fun.  The &#039;&#039;Twitter&#039;&#039;&#039; hash tag is #JoomlaPBF.&lt;br /&gt;
&lt;br /&gt;
====Chat====&lt;br /&gt;
We have a dedicated chat for the PBF event at https://joomla.slack.com/messages/pbf/&lt;br /&gt;
&lt;br /&gt;
All registrants manually get emailed an invite link soon after they complete the [https://docs.google.com/a/community.joomla.org/forms/d/1yQRmN9U3ob0iIsGWiemuwqU3Sp5twCS95P6vvI7BN8M/viewform pledge form]. If you have a team, please email nick.savov[.at.]community.joomla.org with a list of your team members emails, so that invites can be sent to them.&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
&lt;br /&gt;
==== Netherlands ====&lt;br /&gt;
 [http://www.joomlacommunity.eu/nieuws/joomla-in-nederland/976-joomla-pizza-bugs-en-fun-nederland.html Joomla Pizza, Bugs &amp;amp; Fun in Enschede, The Netherlands]&lt;br /&gt;
 Date: Friday, October 17, from 10:30 - 18:00&lt;br /&gt;
 Location: de Bibliotheek, Pijpenstraat 15, 7511 GM Enschede&lt;br /&gt;
 To attend, please add yourself to: http://www.joomlacommunity.eu/joomla-gebruikersgroepen/details/483.html&lt;br /&gt;
&lt;br /&gt;
==== France ====&lt;br /&gt;
 [http://joomla.fr/actualites-de-joomlaorg/joomla-pizza-bugs-and-fun-professionnel-automne-2014 Joomla Pizza, Bugs &amp;amp; Fun à Lyon, France]&lt;br /&gt;
 Date: Friday, October 17&lt;br /&gt;
 Time: We&#039;re open all day long so people can come and go&lt;br /&gt;
 Location: Acyba - Hikari Software, 110 Avenue Barthélémy Buyer, 69009 Lyon&lt;br /&gt;
 To attend or for more information, please email nicolas[.at.]hikashop.com&lt;br /&gt;
&lt;br /&gt;
 [http://joomla.fr/actualites-de-joomlaorg/joomla-pizza-bugs-and-fun-professionnel-automne-2014 Joomla Pizza, Bugs &amp;amp; Fun à Toulouse, France]&lt;br /&gt;
 Date: Friday, October 17&lt;br /&gt;
 Time: We&#039;re open all day long so people can come and go&lt;br /&gt;
 Location: Agence Com&#039;3elles, Immeuble Anadyr, 108 route d&#039;Espagne, 31100 Toulouse&lt;br /&gt;
 To attend or for more information, please email celine.robert[.at.]@com3elles.com&lt;br /&gt;
&lt;br /&gt;
==== Denmark ====&lt;br /&gt;
 Joomla Pizza, Bugs &amp;amp; Fun in Denmark&lt;br /&gt;
 Date: Friday, October 17&lt;br /&gt;
 Time: 10:00am-6:00pm&lt;br /&gt;
 Location: redWEB HQ, Blangstedgårdsvej 1, 5220 Odense SØ&lt;br /&gt;
 To attend, please write to: pbf[.at.]redweb.dk&lt;br /&gt;
&lt;br /&gt;
==== Bulgaria ====&lt;br /&gt;
 Joomla Pizza, Bugs &amp;amp; Fun in Bulgaria&lt;br /&gt;
 Date: Friday, October 17&lt;br /&gt;
 Time: 9:00-15:00&lt;br /&gt;
 Location: SiteGround at Racho Petkov Kazandjiata 8, Sofia&lt;br /&gt;
 To attend, please email: events[.at.]siteground.com&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
&lt;br /&gt;
==== India ====&lt;br /&gt;
[http://tasolglobal.com/ &#039;&#039;&#039;Tailored Solutions Pvt. Ltd.&#039;&#039;&#039;]&lt;br /&gt;
 Date: Friday, October 17, from 9:00 am to 6:30 pm.&lt;br /&gt;
 Location: 406, Arth Complex, &lt;br /&gt;
           Anand nagar Road, &lt;br /&gt;
           Satellite, &lt;br /&gt;
           Ahmedabad - 380015, &lt;br /&gt;
           Gujarat, India.&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Joomla-User-Group-Pune/events/211495652/ Joomla Pizza, Bugs &amp;amp; Fun in Pune, India]&lt;br /&gt;
 Date: Saturday, October 18, from 15:00 to 22:00&lt;br /&gt;
 Location: Techjoomla/ Tekdi Technologies Offices, Office No.6, Silver Fern Building. Karve Road. Opposite Kothrud Bus Stand &amp;amp; Above Canara Bank., Pune&lt;br /&gt;
&lt;br /&gt;
==== Thailand ====&lt;br /&gt;
 CMSPlugin.com&#039;s Team and Marvelic Engine&#039; Team&lt;br /&gt;
 Date: Friday, October 17, from 10:00 to 20:00 &lt;br /&gt;
 Localtion : Marvelic Engine Co.,Ltd., 719 KPN Tower, 10/F, Rama 9 Road. Huaykwang, Bangkok 10310.&lt;br /&gt;
 [http://www.marvelic.co.th/th/contact-us.html http://www.marvelic.co.th/th/contact-us.html]&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]]. Please be aware that the registration process requires a valid email address. This is the same login for updating Joomla documentation.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#Organization.2C_logistics_and_communications Organization, logistics and communications section] for details on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else&#039;s.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun October 17, 2014/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British English.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Where is the code for Joomla?&lt;br /&gt;
&lt;br /&gt;
A: The current Joomla code can be found on GitHub.&lt;br /&gt;
&lt;br /&gt;
*GitHub - https://github.com/joomla/joomla-cms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Which one is 3.3?&lt;br /&gt;
&lt;br /&gt;
A: On GitHub, it is the staging branch: [https://github.com/joomla/joomla-cms https://github.com/joomla/joomla-cms]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Which one is 2.5?&lt;br /&gt;
&lt;br /&gt;
A: On GitHub, it is the 2.5.x branch: [https://github.com/joomla/joomla-cms/tree/2.5.x https://github.com/joomla/joomla-cms/tree/2.5.x]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: How do I apply a Git pull request?&lt;br /&gt;
&lt;br /&gt;
A: Use the [[Component Patchtester for Testers|Joomla Patch Tester]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
{{:Pizza Bugs and Fun October 17, 2014/Contributors List}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]][[Category:Events]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Git_for_Coders&amp;diff=127330</id>
		<title>Git for Coders</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Git_for_Coders&amp;diff=127330"/>
		<updated>2014-10-14T04:57:09Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: adding github work flow for joomla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Overview=&lt;br /&gt;
This article shows you how to use Git and Github to code and submit changes to the Joomla CMS. If you are not familiar with Git, you may wish to read the tutorial [[Git_for_Testers_and_Trackers | Git for Testers and Trackers]] first. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IMPORTANT NOTE: Git is a very powerful system and there is usually more than one way to accomplish the same thing in Git. This tutorial does not try to cover all of the different ways you could do these tasks. Instead, it covers one (hopefully simple) way to do it. As you become more familiar with Git, you may find other ways that work better for you.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first step is to set up the remote and local Git repositories. You do this once. Once it is set up, the normal workflow is:&lt;br /&gt;
# Update your local and remote repositories with changes others have committed to the main Joomla CMS repository.&lt;br /&gt;
# Create a branch for each issue or feature you are working on and commit your changes to the branch in your local repository.&lt;br /&gt;
# Update your remote repository on Github with your branches.&lt;br /&gt;
# Create a pull request from your Github branch. Alternatively, you can create a patch or diff file from your local branch and post that to the tracker.&lt;br /&gt;
# Update the Joomla Issue tracker or Joomla Feature tracker so that others can test your code.&lt;br /&gt;
&lt;br /&gt;
Each of these steps is explained below. Note that you can use Git from the command line, from an IDE such as Eclipse (with the eGit plugin), or from a stand-alone tool, such as TortoiseGit. Here we will use the command line and, where applicable, show the equivalent command in Eclipse eGit.&lt;br /&gt;
&lt;br /&gt;
NOTE: If you want to propose a simple code change, you can do it directly from Github.com, without setting up anything on your local PC. See [[Using_the_Github_UI_to_Make_Pull_Requests|Using the Github UI to Make Pull Requests]].&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
== Github Work flow for Joomla! ==&lt;br /&gt;
&lt;br /&gt;
[[File:Github work flow joomla.png]]&lt;br /&gt;
&lt;br /&gt;
== Create Your Forked Repository on Github==&lt;br /&gt;
Github allows you to create your own copy of any public repository, including the Joomla CMS. This is your personal copy of the repository and is called a &amp;quot;fork&amp;quot;. To create a fork of the Joomla CMS:&lt;br /&gt;
# If you haven&#039;t already, register on Github.com and log in.&lt;br /&gt;
# Navigate to [https://github.com/joomla/joomla-cms https://github.com/joomla/joomla-cms]&lt;br /&gt;
# Click on the Fork button in the upper right part of the screen.&lt;br /&gt;
&lt;br /&gt;
Note that you can only create one fork of any given repository. However, as we will see, you can create as many branches (versions) of your repository as you like.&lt;br /&gt;
&lt;br /&gt;
== Clone Your Github Repository To Your PC ==&lt;br /&gt;
At this point, you have your own repository on Github.com. Now you need to create a local repository that is a copy (called a &amp;quot;clone&amp;quot;) of the Github repository. To do this:&lt;br /&gt;
===CLI (command line) Commands===&lt;br /&gt;
# Change directory to the directory where you want the Joomla files to be stored (for example, &amp;lt;code&amp;gt;C:\xampp\htdocs\joomla\my-project&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/opt/lampp/htdocs/joomla/my-project&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Enter the command: &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;your Github user name&amp;gt;/joomla-cms.git&amp;lt;/nowiki&amp;gt; .&amp;lt;/code&amp;gt; For example, if your Github user name is &amp;quot;joomla-coder&amp;quot;, the command would be: &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://github.com/joomla-coder/joomla-cms.git&amp;lt;/nowiki&amp;gt;  .&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You can get the URL for the command above from your repository at Github.com as shown below. [[File:git-coders-tutorial-20121009-03.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;.&amp;quot; dot just tells Git to put the new repository in the current directory. The system will work for a few minutes while it downloads all of the files. When it is finished, you will have a complete set of Joomla files under version control in the current directory.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse Commands ===&lt;br /&gt;
# If you like, you can get the URL from Github as shown below. [[File:git-coders-tutorial-20121009-03.png|frame|none]] You will use this later on.&lt;br /&gt;
# In Eclipse, open the Git Repositories view and click the button called &amp;quot;Clone a Git Repository and add the clone to this view&amp;quot; as shown below. [[File:git-coders-tutorial-20121009-01.png|frame|none]]. &lt;br /&gt;
# The window below will show. [[File:git-coders-tutorial-20121009-02.png|frame|none]] Select URI and click Next.&lt;br /&gt;
# The window below will show. [[File:git-coders-tutorial-20121009-04.png|frame|none]] Enter the Github URL for your repository (from step (1) above). Enter your Github user name and password and check the box called &amp;quot;Store in Secure Store&amp;quot;. &lt;br /&gt;
# Click Next and the window below will show. [[File:git-coders-tutorial-20121009-05.png|frame|none]]&lt;br /&gt;
# Click Next to select all branches. The window below will show. [[File:git-coders-tutorial-20121009-06.png|frame|none]]&lt;br /&gt;
# In Directory, enter the folder where you want the Joomla files to be copied. Keep the default values for Initial branch (&amp;quot;master&amp;quot;) and Remote name (&amp;quot;origin&amp;quot;) as shown.&lt;br /&gt;
# Click Finish. The system will work for a few minutes. When it finishes you will have a clone of the remote repository.&lt;br /&gt;
&lt;br /&gt;
== Create an Upstream Remote==&lt;br /&gt;
Now we have our local repository. This has a remote called &amp;quot;origin&amp;quot; that points to our personal fork of Joomla on Github. &lt;br /&gt;
&lt;br /&gt;
In a project like Joomla, many users are submitting bug fixes and features. These changes are committed to the main Joomla CMS repository frequently. It is up to each coder to keep their personal repositories up to date with these changes. Fortunately, as we will see, this is easy to do.&lt;br /&gt;
&lt;br /&gt;
The last step in the setup is to create a second remote called &amp;quot;upstream&amp;quot; that points to the main Joomla CMS repository. We will use this remote to pull changes that others make to the main Joomla repository so we can keep our personal repositories up to date.&lt;br /&gt;
&lt;br /&gt;
===CLI Command ===&lt;br /&gt;
To create a remote called &amp;quot;upstream&amp;quot; that points to the main CMS repository, enter this command: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git remote add upstream &amp;lt;nowiki&amp;gt;https://github.com/joomla/joomla-cms.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note, if you get a error like &amp;quot;fatal: Not a git repository (or any of the parent directories): .git&amp;quot;, then make sure you&#039;ve changed directory to the new repository that&#039;s been created within the current directory (so one level lower).&lt;br /&gt;
&lt;br /&gt;
===Eclipse Command===&lt;br /&gt;
&#039;&#039;Unknown at this time.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this point, you have your personal remote repository (created by &amp;quot;forking&amp;quot; the Joomla CMS project) and your personal local repository (created with CLI or Eclipse). Now you are ready to code patches and features.&lt;br /&gt;
&lt;br /&gt;
=Normal Workflow=&lt;br /&gt;
Now that we have done our one-time setup, we are ready to start our normal workflow. This is outlined below.&lt;br /&gt;
&lt;br /&gt;
== Create a New Feature or Bug Fix Change==&lt;br /&gt;
Let&#039;s say you are ready to start working on a new bug fix or a new feature. Here are the steps you would normally follow.&lt;br /&gt;
# Update your master branches. Update the master branch of your local and Github repositories with the latest CMS changes.&lt;br /&gt;
# Create a branch for writing the new code&lt;br /&gt;
# In the new branch, code the changes and commit them. Depending on the length of time, you can make multiple commits to the branch.&lt;br /&gt;
# When you are ready to propose your code for testing (or when you want others to be able to see it), push the branch to your Github repository.&lt;br /&gt;
# When you are ready to submit the code, either:&lt;br /&gt;
## Create a pull request on Github, or&lt;br /&gt;
## Create a patch or diff file and post to the Joomlacode tracker.&lt;br /&gt;
&lt;br /&gt;
Each of these steps is explained in more detail below.&lt;br /&gt;
&lt;br /&gt;
=== Update Your Master Branches ===&lt;br /&gt;
You need to keep your repositories up to date with changes made by others in the main CMS repository. It&#039;s easy to do, and here are the steps. These are done more easily with the CLI than with Eclipse.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE: Make sure you never commit your own code changes to the master branch. If you do, you won&#039;t be able to keep it synchronized with the master branch on the main CMS repository.&lt;br /&gt;
&lt;br /&gt;
====CLI Commands====&lt;br /&gt;
* Make sure you are in your master branch of your local repository (&amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;). If you aren&#039;t sure, you can use the command &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; to see what branch you are on.&lt;br /&gt;
* Enter the command: &amp;lt;code&amp;gt;git pull upstream master&amp;lt;/code&amp;gt;. You should get a message showing the changes, similar to this:&lt;br /&gt;
 $ git pull upstream master&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;https://github.com/joomla/joomla-cms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * branch            master     -&amp;gt; FETCH_HEAD&lt;br /&gt;
 Updating 76feee8..294c62c&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  installation/CHANGELOG                |    3 +++&lt;br /&gt;
  installation/language/fr-FR/fr-FR.ini |    2 +-&lt;br /&gt;
  2 files changed, 4 insertions(+), 1 deletion(-)&lt;br /&gt;
 Mark@MARK2009 /c/xampp/htdocs/joomla-coder/joomla-cms (master)&lt;br /&gt;
:If your local repository was already up to date, you will get a message like this:&lt;br /&gt;
 $ git pull upstream master&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;https://github.com/joomla/joomla-cms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * branch            master     -&amp;gt; FETCH_HEAD&lt;br /&gt;
 Already up-to-date.&lt;br /&gt;
&lt;br /&gt;
* At this point, your local master branch is up to date with the main CMS repository. Now you need to update the master branch of your Github repository. Enter the command: &amp;lt;code&amp;gt;git push origin master&amp;lt;/code&amp;gt;. You should see a message like this:&lt;br /&gt;
 $ git push origin master&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;https://github.com/joomla-coder/joomla-cms.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    76feee8..294c62c  master -&amp;gt; master&lt;br /&gt;
&lt;br /&gt;
NOTE: If you haven&#039;t stored your user name and password, you will be prompted for them after you enter the push command. See below for how to store your credentials so you don&#039;t have to type them each time.&lt;br /&gt;
&lt;br /&gt;
At this point, your master branches on your local and Github repositories are up to date with the main CMS repository. Now, when you create a new branch, it will start at this point and be based on the latest code.&lt;br /&gt;
&lt;br /&gt;
===Create a Branch for the Code===&lt;br /&gt;
In Git, the best practice is to use a branch for each bug fix or feature. (In fact, experienced Git users will often create more than one branch for an individual project, perhaps trying different approaches to the problem.) It is super easy to create, delete, and even combine branches. Use a naming convention that allows you to keep track. For example, you could incorporate the tracker issue number into the branch name (for example, &amp;quot;php-notice-12345&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
When you create a new branch, it starts from the branch you are currently on. For this reason, you will normally want to make sure you are in your master branch when creating a new one.&lt;br /&gt;
&lt;br /&gt;
====CLI Commands====&lt;br /&gt;
&amp;lt;code&amp;gt;git branch xxx&amp;lt;/code&amp;gt; where &amp;quot;xxx&amp;quot; is the new branch name. Note: If you already have a branch you are working on, use the command: &amp;lt;code&amp;gt;git checkout xxx&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Eclipse Commands====&lt;br /&gt;
#Left-click on the PHP project and select Team&amp;amp;rarr;Switch To&amp;amp;rarr;New Branch as shown below. [[File:Git-coders-tutorial-20121009-07.png|frame|none]]. The screen below will show. [[File:Git-coders-tutorial-20121009-08.png|frame|none]]&lt;br /&gt;
#Fill in the name of the new branch and click finish. &lt;br /&gt;
&lt;br /&gt;
===Code and Commit to the Branch===&lt;br /&gt;
Finally, we are to the fun part! Here we are actually coding and testing our feature or bug fix. The normal workflow is as follows:&lt;br /&gt;
# Do some coding.&lt;br /&gt;
# Commit your work to your branch.&lt;br /&gt;
# Repeat until you are done.&lt;br /&gt;
&lt;br /&gt;
Here are the commands to commit your work to your branch. Make sure you are in the right branch before committing! (Use &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; to check.)&lt;br /&gt;
&lt;br /&gt;
====CLI Commands====&lt;br /&gt;
* To commit all of the changes since the last commit: &amp;lt;code&amp;gt;git commit -m &amp;quot;My commit message&amp;quot; -a&amp;lt;/code&amp;gt;&lt;br /&gt;
* To undo any file changes since the last commit: &amp;lt;code&amp;gt;git reset --hard&amp;lt;/code&amp;gt;&lt;br /&gt;
* To remove any added files and folder since the last commit: &amp;lt;code&amp;gt;git clean -d -f&amp;lt;/code&amp;gt;&lt;br /&gt;
* To change the last commit: &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Eclipse Commands====&lt;br /&gt;
* To commit all changes, right-click on project, select Team&amp;amp;rarr;Commit to show this window. [[File:Git-coders-tutorial-20121009-09.png|frame|none]]&lt;br /&gt;
* To undo any file changes since the last commit, select Team&amp;amp;rarr;Reset and check the Hard Reset Type as shown below. [[File:Git-coders-tutorial-20121009-10.png|frame|none]]&lt;br /&gt;
* To change the last commit, select Team&amp;amp;rarr;Commit and check the Amend Previous Commit button (as shown in the Commit Changes screenshot above).&lt;br /&gt;
&lt;br /&gt;
===Push Branch to Github===&lt;br /&gt;
In the previous workflow, we created the branch and committed changes to our local repository. If we want others to be able to see the branch or to create a pull request, we need to push the branch to our personal repository on Github.&lt;br /&gt;
&lt;br /&gt;
====CLI Command====&lt;br /&gt;
To push a branch to your personal Github repository: &amp;lt;code&amp;gt;git push origin xxx&amp;lt;/code&amp;gt; (where &amp;quot;xxx&amp;quot; is the name of your branch).&lt;br /&gt;
&lt;br /&gt;
===Submit Pull Request or Patch File===&lt;br /&gt;
There are two ways you can submit a proposed code change to the Joomla CMS project. One is to submit a pull request via Github, the other is to create a patch or diff file. In general, pull requests are preferred for very large changes, whereas both work fine for smaller changes.&lt;br /&gt;
&lt;br /&gt;
====Create a Pull Request====&lt;br /&gt;
# Navigate to your personal Github repository.&lt;br /&gt;
# Select the branch that has the changes for the pull request as shown below. [[File:Git-coders-tutorial-20121009-11.png|frame|none]]&lt;br /&gt;
# Click the Pull Request button on the top of the screen. The screen will show as below. [[File:Git-coders-tutorial-20121009-12.png|frame|none]]&lt;br /&gt;
# The left side shows the base repository and base branch. This will normally be the master branch of the &amp;quot;joomla/joomla-cms&amp;quot; repository. The right side shows the head repository and branch. This will normally be your repository and the branch that has the desired code changes. If you like you can change the commit message and enter in a comment describing this pull request.&lt;br /&gt;
# You can review the pull request using the tabs across the top. Clicking the Commits tab shows the commit history for the branch, as shown below.[[File:Git-coders-tutorial-20121009-13.png|frame|none]]&lt;br /&gt;
# Clicking the Files Changed tab shows all of the changes made in this branch, as shown here. [[File:Git-coders-tutorial-20121009-14.png|frame|none]]&lt;br /&gt;
# When you are ready to submit the pull request, click the Send Pull Request button at the bottom right of the screen. Github will process the request and then display it as shown below. [[File:Git-coders-tutorial-20121009-15.png|frame|none]]&lt;br /&gt;
# At this point, you should update the Joomlacode tracker. For example, if this code is a fix for a Confirmed issue, you should change the issue status to Pending and add a comment with a link to the pull request (for example, &amp;lt;nowiki&amp;gt;https://github.com/joomla/joomla-cms/pull/494&amp;lt;/nowiki&amp;gt;). Also, make sure there are good test instructions so people can test the proposed code.&lt;br /&gt;
&lt;br /&gt;
====Create a Patch File====&lt;br /&gt;
It is not necessary to create a pull request to submit code changes to Joomla. Another alternative is to create a patch file. This can be done on your local system from the command line as follows:&lt;br /&gt;
# In your local system, change to the desired branch.&lt;br /&gt;
# Enter the command: &amp;lt;code&amp;gt;git diff master &amp;gt; my-new-patch.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
This will create a patch file in that same folder. (Note that you may want to have Git automatically ignore all patch files. See the section called Git Tips below.) Upload that file to the Joomlacode tracker and add a comment and change the issue status as needed. &lt;br /&gt;
To include changes to binary files in the diff add the &amp;lt;code&amp;gt;--binary&amp;lt;/code&amp;gt; option to the command line as follows:&lt;br /&gt;
# Enter the command: &amp;lt;code&amp;gt;git diff --binary master &amp;gt; my-new-patch.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this method does not require you to push your local branches to Github.&lt;br /&gt;
&lt;br /&gt;
== Keep Your Repositories Up to Date==&lt;br /&gt;
As discussed earlier, the main CMS repository on Github is being changed frequently. It is possible that one or more of these changes could conflict with (or otherwise affect) our work. For this reason, it is very important that we keep our repositories up to date. Otherwise, our patch files and pull requests may not work. As discussed earlier, the way we will do this is by keeping our master branch synchronized with the main CMS repository and then using that to update our working branches.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we are using the git merge command. The merge command merges the changes from a different branch into the current branch. Here we use the merge to merge changes from the master branch into our working branch. For example, say we created a branch (my-branch) on day 1. On day 2, someone does 5 commits to the master branch in the main CMS repository. Now, on day 3 we want to update our branch to be current with these 5 commits. The merge command tries to do this automatically. It looks to see what was changed in the master branch since our last merge and applies those same changes to our current branch (&amp;quot;my-branch&amp;quot;). This will work automatically unless we have made changes that conflict with changes made in the same files in the main repository. In that case, we need to resolve these conflicts before we can finish updating our branch.&lt;br /&gt;
&lt;br /&gt;
To update a working branch with changes to the main CMS repository, follow these steps.&lt;br /&gt;
# Update your local master branch.&lt;br /&gt;
#* Make sure you are on the master branch in your local repository: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Pull changes from the main CMS repository: &amp;lt;code&amp;gt;git pull upstream master&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Push those changes to your Github repository: &amp;lt;code&amp;gt;git push origin master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Now your local master branch is up to date. Next, change to your working branch: &amp;lt;code&amp;gt;git checkout my-branch&amp;lt;/code&amp;gt;&lt;br /&gt;
# Make sure your remote repository &amp;quot;my-branch&amp;quot; is up to date with your local repository. Use the command: &amp;lt;code&amp;gt;git push origin my-branch&amp;lt;/code&amp;gt;. If the remote repository was already up to date, no harm is done. You will just get a message saying it was already up to date.&lt;br /&gt;
# Finally, merge the new changes to the master branch with your working branch. The command is as follows: &amp;lt;code&amp;gt;git merge master&amp;lt;/code&amp;gt;&lt;br /&gt;
# The system will work for a short time and then indicate whether or not the merge was successful. If you don&#039;t have any changes that conflict with changes from the main CMS repository, the merge will be successful. If one or more of your changes conflicts with the changes that were made in the main repository, any affected files will be flagged as being in conflict. See the Fixing Conflicts section below for more information about this.&lt;br /&gt;
&lt;br /&gt;
You can also use Eclipse for the merge by changing to the working branch and selecting Team&amp;amp;rarr;Merge&amp;amp;rarr;. This will show the following screen. [[File:Git-coders-tutorial-20121027-01.png|frame|none]] Select Local-&amp;gt;master as shown above and click Merge.&lt;br /&gt;
&lt;br /&gt;
== Fixing Conflicts ==&lt;br /&gt;
A conflict occurs during a merge (or rebase) if the same file has been changed in the local branch and in the master branch in a way that conflicts. If this happens, the file is flagged as being in conflict and the merge process is suspended. To complete the process, you need to:&lt;br /&gt;
# Manually edit each of the flagged. You will see the changes from your branch and the changes from the main repository highlighted in the file. You need to figure out what should be in the file.&lt;br /&gt;
# Once you have edited each flagged file, enter the command &amp;lt;code&amp;gt;git add xxx&amp;lt;/code&amp;gt; where &amp;quot;xxx&amp;quot; is the name of the flagged file.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s look at a simple example. Here we have added a line of code to a file in our branch and someone has added a different line to the same file in the master branch. When we do the merge command, we get the following message.&lt;br /&gt;
&lt;br /&gt;
 $ git merge master&lt;br /&gt;
 Removing administrator/templates/hathor/html/mod_submenu/default.php&lt;br /&gt;
 Auto-merging administrator/components/com_admin/script.php&lt;br /&gt;
 CONFLICT (content): Merge conflict in administrator/components/com_admin/script&lt;br /&gt;
 php&lt;br /&gt;
 Automatic merge failed; fix conflicts and then commit the result.&lt;br /&gt;
&lt;br /&gt;
So this tells us we have a conflict in the file &amp;lt;code&amp;gt;administrator/components/com_admin/script.php&amp;lt;/code&amp;gt;. If we look at this file in our text editor, we see the following: [[File:Git-coders-tutorial-20121009-17.png|frame|none]] The line under &amp;quot;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD&amp;quot; is from the master branch of the main repository. The line after the &amp;quot;=======&amp;quot; is from our working branch.&lt;br /&gt;
&lt;br /&gt;
At this point, we need to correct the file and remove the &amp;quot;marker&amp;quot; lines. Then we do the command &amp;lt;code&amp;gt;git add administrator/components/com_admin/script.php&amp;lt;/code&amp;gt; to tell Git that the conflict is resolved.&lt;br /&gt;
&lt;br /&gt;
Finally, we do the command &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git commit -a&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
to finish the merge. This commits all of the changes that were applied automatically by the merge as well as the changes we have done manually in fixing the conflicts.&lt;br /&gt;
&lt;br /&gt;
If we want to abandon the merge instead of fixing the conflicts, we can use the following commands to reset our branch back to its state before the merge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git reset --hard&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clean -f -d&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Eclipse For Conflicts===&lt;br /&gt;
Eclipse is very handy for resolving commits. When you do the command Team&amp;amp;rarr;Merge and there is a conflict, you get the following window. [[File:Git-coders-tutorial-20121027-02.png|frame|none]] You will also see a red square annotation in the PHP Explorer window next to each file with a conflict.&lt;br /&gt;
&lt;br /&gt;
To see all of the files in conflict you can use the Merge Tool. Right click on the PHP project and select Team&amp;amp;rarr;Merge Tool. You will see the following option. [[File:Git-coders-tutorial-20121009-20.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
This gives you the option of having Git put in the changes from both sources in the file or letting you compare the changes side by side. If you select Use HEAD version you get a file compare similar to the following. [[File:Git-coders-tutorial-20121009-21.png|frame|none]]&lt;br /&gt;
&lt;br /&gt;
The left shows the change from the master branch, and the right shows the change from your working branch. At this point, you can either edit the file in the left side (for example, by pulling in the change from the right side) or you can just manually edit the file in conflict. &lt;br /&gt;
&lt;br /&gt;
Once the file has been fixed, select the file (either by right-clicking in the PHP Explorer view or in the editor) and select Team&amp;amp;rarr;Add to Index as shown below. [[File:Git-coders-tutorial-20121009-22.png|frame|none]]When you do this, the red square annotation will disappear. &lt;br /&gt;
&lt;br /&gt;
Once all the conflicts are resolved, you can finish the merge by right-clicking on the project and selecting Team&amp;amp;rarr;Commit. The normal commit screen will show as follows. [[File:Git-coders-tutorial-20121027-03.png|frame|none]] Notice that the files that were in conflict are automatically added to the commit message. Edit the commit message as desired and click the Commit button. At this point, the merge is complete.&lt;br /&gt;
&lt;br /&gt;
== Saving Your User Name and Password ==&lt;br /&gt;
When you push changes to Github, it must authenticate you based on your Github user name and password. Normally, the system will simply prompt you for your user name and password each time you do a push. &lt;br /&gt;
&lt;br /&gt;
There are a number of ways you can save your credentials so you don&#039;t have to enter them each time. One very simple method is to use the git &amp;quot;store&amp;quot; feature. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IMPORTANT NOTE: This feature stores your password in plain text on your local computer. If this is not acceptable, do not use this method.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If it is OK to store your credentials on your PC, at the command line enter the command: &amp;lt;code&amp;gt;git config --global credential.helper store&amp;lt;/code&amp;gt; This tells Git to store your credentials in a file called .git-credentials in your home folder (&amp;quot;for example, C:\users\user-name&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The next time you do a push and enter your credentials, they will be stored in that file. After that, you will not need to enter them. Git will use them automatically.&lt;br /&gt;
&lt;br /&gt;
If you want to change your password, simple delete the file and then change your password on Github. The next time you enter your credentials, the new password will be saved.&lt;br /&gt;
&lt;br /&gt;
== Git Tips ==&lt;br /&gt;
&lt;br /&gt;
=== Ignoring Files ===&lt;br /&gt;
Sometimes you don&#039;t want to track all the files in a folder, specially some system files that the operating system generates. One way to have Git ignore files is to use the &amp;quot;.gitignore&amp;quot; file. &lt;br /&gt;
&lt;br /&gt;
If you create a file in your repository named .gitignore, Git uses it to determine which files and directories to ignore, before you make a commit.&lt;br /&gt;
&lt;br /&gt;
A .gitignore file should be committed into your repository, in order to share the ignore rules with any other users that clone the repository.&lt;br /&gt;
&lt;br /&gt;
Read more about .gitignore at:&lt;br /&gt;
* http://git-scm.com/docs/gitignore&lt;br /&gt;
* https://help.github.com/articles/ignoring-files&lt;br /&gt;
&lt;br /&gt;
Here is an example of a file.&lt;br /&gt;
&lt;br /&gt;
 # OSX&lt;br /&gt;
 .DS_Store&lt;br /&gt;
 ._*&lt;br /&gt;
 .Spotlight-V100&lt;br /&gt;
 .Trashes&lt;br /&gt;
  &lt;br /&gt;
 # Windows&lt;br /&gt;
 Thumbs.db&lt;br /&gt;
 Desktop.ini&lt;br /&gt;
  &lt;br /&gt;
 # PHPStorm&lt;br /&gt;
 .idea/&lt;br /&gt;
 &lt;br /&gt;
 # Sublime Text&lt;br /&gt;
 *.sublime*&lt;br /&gt;
 sftp-config.json&lt;br /&gt;
  &lt;br /&gt;
 # Eclipse&lt;br /&gt;
 .buildpath&lt;br /&gt;
 .project&lt;br /&gt;
 .settings&lt;br /&gt;
  &lt;br /&gt;
 # Netbeans (custom)&lt;br /&gt;
 .netbeans/*&lt;br /&gt;
 /nbproject/*&lt;br /&gt;
  &lt;br /&gt;
 # Temp files&lt;br /&gt;
 *.tmp&lt;br /&gt;
 *.bak&lt;br /&gt;
 *.swp&lt;br /&gt;
 *~.nib&lt;br /&gt;
 *~&lt;br /&gt;
  &lt;br /&gt;
 # Phing build script&lt;br /&gt;
 build.properties&lt;br /&gt;
  &lt;br /&gt;
 # Packages #&lt;br /&gt;
 *.zip&lt;br /&gt;
 *.tar.*&lt;br /&gt;
  &lt;br /&gt;
 # Composer&lt;br /&gt;
 composer.lock&lt;br /&gt;
 /vendor&lt;br /&gt;
  &lt;br /&gt;
 # Test related files&lt;br /&gt;
 /tests/system/servers/configdef.php&lt;br /&gt;
 /tests/system/webdriver/tests/logs/&lt;br /&gt;
 /tests/acceptance.suite.yml&lt;br /&gt;
 codecept.phar&lt;br /&gt;
  &lt;br /&gt;
 # Never ignore&lt;br /&gt;
 !.gitignore&lt;br /&gt;
 !index.html&lt;br /&gt;
 !index.php &lt;br /&gt;
&lt;br /&gt;
As you can see from the example, we can exclude specific folders and file names.&lt;br /&gt;
&lt;br /&gt;
Once you have this file created, Git will ignore any of these files.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:GitHub]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=My_first_pull_request_to_Joomla!_on_Github&amp;diff=127329</id>
		<title>My first pull request to Joomla! on Github</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=My_first_pull_request_to_Joomla!_on_Github&amp;diff=127329"/>
		<updated>2014-10-14T04:52:59Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: adding github work flow for joomla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A Pull Request ?? ==&lt;br /&gt;
So what the heck could be a &amp;quot;Pull Request&amp;quot; ? No, I bet it&#039;s not what you&#039;re thinking right now...&lt;br /&gt;
&lt;br /&gt;
A Pull Request is the Git Jargon meaning &amp;quot;I will send a &#039;&#039;&#039;request&#039;&#039;&#039; to a project, to &#039;&#039;&#039;pull&#039;&#039;&#039; in some code changes / additions I have made to their code base&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Got it ? This is how we (including you) are going to contribute source code to the Joomla! code base.&lt;br /&gt;
&lt;br /&gt;
It might look a bit scary at first (at least to me) but in the end it&#039;s pretty easy - &amp;quot;similar&amp;quot; to SVN, but a lot better.&lt;br /&gt;
&lt;br /&gt;
Here is how it works:&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The installation depends on the operating system you are using. If you use Linux, you may find the git software in your repository.&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;example&#039;&#039;&#039; [http://opensuse.org OpenSuSE] offers a &amp;quot;pattern&amp;quot; named &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; that provides the git core (required) as well as a set of tools like [http://gitk.sourceforge.net/ gitk], an e-mail interface, scripts to import source code from other version control systems like svn and others.&lt;br /&gt;
&lt;br /&gt;
[[File:git-opensuse-install.png]]&lt;br /&gt;
&lt;br /&gt;
For more information about installing git on other operating systems see the GitHub site for [https://help.github.com/articles/set-up-git#platform-linux Linux], [https://help.github.com/articles/set-up-git#platform-mac Mac] and even [https://help.github.com/articles/set-up-git#platform-windows Windows].&lt;br /&gt;
&lt;br /&gt;
For this tutorial you will also need [http://eclipse.org/pdt/ Eclipse PDT] with the [http://eclipse.org/egit/ eGit plugin] installed.&lt;br /&gt;
&lt;br /&gt;
== GitHub Work flow for Joomla! ==&lt;br /&gt;
&lt;br /&gt;
[[File:Github work flow joomla.png]]&lt;br /&gt;
&lt;br /&gt;
== GitHub ==&lt;br /&gt;
For this tutorial we have created a GitHub user named &#039;&#039;&#039;&amp;lt;code&amp;gt;jlover&amp;lt;/code&amp;gt;&#039;&#039;&#039; - a dude who loves J :)&lt;br /&gt;
&lt;br /&gt;
He has already [http://help.github.com/fork-a-repo/ forked] the main repository so his repository is at: https://github.com/jlover/joomla-platform&lt;br /&gt;
&lt;br /&gt;
[[File:github-repo.png]]&lt;br /&gt;
&lt;br /&gt;
== Import your clone ==&lt;br /&gt;
Mr. JLover uses Linux and his Eclipse workspace is at &amp;lt;code&amp;gt;/home/jlover/workspace&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before eGit 1.0 it was not possible to create or clone repositories right into your workspace. To make things easier we set the default repository folder to our workspace.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-preferences-1.png]]&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start. Go to your workspace, right click inside the PHP explorer and select &#039;&#039;&#039;Import...&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import.png]]&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;&#039;Git&#039;&#039;&#039; &amp;amp;rArr; &#039;&#039;&#039;Projects from Git&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-2.png]]&lt;br /&gt;
&lt;br /&gt;
Click on &#039;&#039;&#039;Clone...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-3.png]]&lt;br /&gt;
&lt;br /&gt;
=== Source repository ===&lt;br /&gt;
&lt;br /&gt;
In the window that opens up, copy and paste the HTTP URL from your GitHub repository. The remaining fields will be auto filled.&lt;br /&gt;
&lt;br /&gt;
Your may also want to supply your password but this is not required if you limit the write operations to the command line.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-4.png]]&lt;br /&gt;
&lt;br /&gt;
Select the branches you want to clone. The &#039;&#039;&#039;master&#039;&#039;&#039; branch is the &#039;&#039;point of truth&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-5.png]]&lt;br /&gt;
&lt;br /&gt;
=== Local destination ===&lt;br /&gt;
Now choose where you want to save the files. We will save them in our workspace and modify the default name joomla-platform to &#039;&#039;&#039;my-joomla-platform&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please remember this name, as we will use it later when we create our project in the same folder.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-6.png]]&lt;br /&gt;
&lt;br /&gt;
=== Receiving objects... ===&lt;br /&gt;
The files are being checked out. Sit back and watch patiently, or go for a cup of coffee ;)&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-6-checkout.png]]&lt;br /&gt;
&lt;br /&gt;
Finished. Click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-7.png]]&lt;br /&gt;
&lt;br /&gt;
== New Project wizard ==&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;&#039;Use the New Project wizard&#039;&#039;&#039; and click &#039;&#039;&#039;Finish&#039;&#039;&#039; to start it (windows like..)&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-create-project-1.png]]&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;&#039;PHP&#039;&#039;&#039; &amp;amp;rArr; &#039;&#039;&#039;PHP Project&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-create-project-2.png]]&lt;br /&gt;
&lt;br /&gt;
For the Project name enter the name of the repository you previously cloned. &#039;&#039;&#039;my-joola-platform&#039;&#039;&#039; in our example.&lt;br /&gt;
&lt;br /&gt;
Observe the message beside the yellow triangle that appears when you finished inserting the Project name, telling you that the specified location already exists.&amp;lt;br /&amp;gt;&lt;br /&gt;
This is OK and expected.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-8.png]]&lt;br /&gt;
&lt;br /&gt;
Click &#039;&#039;&#039;Next &amp;gt;&#039;&#039;&#039; and include other libraries if required.&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-9.png]]&lt;br /&gt;
&lt;br /&gt;
== Finished ==&lt;br /&gt;
&lt;br /&gt;
After you click Finish, the new project will be created in your workspace.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Welcome to the Joomla! platform.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-import-10.png]]&lt;br /&gt;
&lt;br /&gt;
== The upstream repository ==&lt;br /&gt;
&lt;br /&gt;
OK. So far you have a local &amp;quot;clone&amp;quot; of your GitHub repository which is a fork of the main Joomla! repository.&lt;br /&gt;
&lt;br /&gt;
But what if the information in the main Joomla! repository changes ? Remember your fork (and your clone) are completely independent from the main repository. Fortunately git allows you to add multiple repositories to your &amp;quot;working copy&amp;quot; to track changes and merge them with your work.&lt;br /&gt;
&lt;br /&gt;
We are going to add the main repository and call it &#039;&#039;&#039;upstream&#039;&#039;&#039;. To do this I use the console because I have not figured out yet how to do this in eclipse (@todo?)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/jlover/workspace/my-joomla-platform&lt;br /&gt;
git remote add upstream git://github.com/joomla/joomla-platform.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To „update“ your clone with the latest changes from the main repository use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git fetch upstream&lt;br /&gt;
git merge upstream/master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will &#039;&#039;&#039;fetch&#039;&#039;&#039; the changes from the upstream repository and &#039;&#039;&#039;merge&#039;&#039;&#039; the upstream/master branch into your current branch.&lt;br /&gt;
&lt;br /&gt;
== Code away... ==&lt;br /&gt;
So what are you waiting for ? Go and fix this bug or implement this cool feature and give it back to the Joomla! project. It&#039;s as easy as clicking a button ;)&lt;br /&gt;
&lt;br /&gt;
An example:&lt;br /&gt;
&lt;br /&gt;
Let&#039;s create a simple patch file using Eclipse. We&#039;re going to add a comment line to a file that is really important to Joomla! and then create a pull request in GitHub to the Joomla! project.&lt;br /&gt;
&lt;br /&gt;
So if the developers decide that your changes are worth being included into the code base, all they have to do is pushing a button and your name gets graved in stone (aka changelog) and the respective &#039;&#039;blame&#039;&#039; will show your name as the author for the lines of code you changed - Is this cute or what ?&lt;br /&gt;
&lt;br /&gt;
== Create a feature branch ==&lt;br /&gt;
Git provides a handy feature called [http://book.git-scm.com/3_basic_branching_and_merging.html Branches]. The concept is somewhat similar to SVN but the handling is completely different. This feature is also known as &#039;&#039;cheap branching&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
So if you plan to make more submissions or just to keep your master branch clean, you should create a new branch.&lt;br /&gt;
&lt;br /&gt;
Unfortunately Eclipses branching concept seems to differ a bit from the original. So I use the command line also for branching operations. @todo?&lt;br /&gt;
&lt;br /&gt;
The shortcut for creating and switching to a new branch is &amp;lt;code&amp;gt;checkout -b&amp;lt;/code&amp;gt; so we will create a new branch called &#039;&#039;&#039;&amp;lt;code&amp;gt;first-test&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/jlover/workspace/my-joomla-platform&lt;br /&gt;
git checkout -b first-test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the tree has also changed in eclipse (maybe you need to refresh)&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-tree-details.png]]&lt;br /&gt;
&lt;br /&gt;
OK we can now change whatever we want without &amp;quot;polluting&amp;quot; our master branch. The disk space required to do this is minimal. That&#039;s what is meant by &#039;&#039;cheap&#039;&#039;...&lt;br /&gt;
&lt;br /&gt;
== Change the code ==&lt;br /&gt;
Let&#039;s open the file &amp;lt;code&amp;gt;libraries/joomla/application/application.php&amp;lt;/code&amp;gt;. and make a test change.&lt;br /&gt;
&lt;br /&gt;
You really should feel a bit important right now doing changes to such an important Joomla! core file - do you ? ;).&lt;br /&gt;
&lt;br /&gt;
Note that after you save the file, a &#039;&#039;dirty&#039;&#039; marker &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; appears. You can change this in the configuration if you prefer the svn icon overlays.&lt;br /&gt;
&lt;br /&gt;
[[File:git-pull-test-change.png]]&lt;br /&gt;
&lt;br /&gt;
That looks good. Now here comes another new concept if you are new to git: To get your changes to you repository on GitHub &#039;&#039;&#039;&amp;lt;big&amp;gt;two steps&amp;lt;/big&amp;gt;&#039;&#039;&#039; are required:&lt;br /&gt;
&lt;br /&gt;
== Step 1 - Commit ==&lt;br /&gt;
This step will commit your changes to your &#039;&#039;&#039;local&#039;&#039;&#039; repository. You can do this from within eclipse selecting the file(s) or folders you want to include in the commit.&lt;br /&gt;
&lt;br /&gt;
Right click you project and select Team &amp;amp;rArr; Commit...&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-commit-1.png]]&lt;br /&gt;
&lt;br /&gt;
In the window that opens enter a meaningfull commit message&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-commit-2.png]]&lt;br /&gt;
&lt;br /&gt;
After you press &amp;lt;code&amp;gt;Commit&amp;lt;/code&amp;gt; note that the &#039;&#039;dirty&#039;&#039; marker &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; has disappeared.&lt;br /&gt;
&lt;br /&gt;
You may add as many commits as you like locally before submitting it to the server.&lt;br /&gt;
&lt;br /&gt;
Commit often.&lt;br /&gt;
&lt;br /&gt;
== Step 2 - Push ==&lt;br /&gt;
This step will submit your code to the GitHub server(s).&lt;br /&gt;
&lt;br /&gt;
We do this from the command line @todo?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push origin first-test&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will push your changes to &#039;&#039;&#039;&amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;&#039;&#039;&#039; (your (jlovers) repository on GitHub) and create a new branch named &#039;&#039;&#039;&amp;lt;code&amp;gt;first-test&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Done. Your changes are on the internet. Let&#039;s check out the GitHub site&lt;br /&gt;
&lt;br /&gt;
[[File:git-pull-feed-1.png]]&lt;br /&gt;
&lt;br /&gt;
Looks good.&lt;br /&gt;
&lt;br /&gt;
A nice feature in eclipse is the history view&lt;br /&gt;
&lt;br /&gt;
[[File:git-eclipse-history-view.png]]&lt;br /&gt;
&lt;br /&gt;
== The Pull Request ==&lt;br /&gt;
At this point we are finally ready to do our pull request. Let&#039;s go to our repository, be sure that you are on the correct branch (you may change this later), and find the &#039;&#039;&#039;Pull Request&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
Push it softly, nothing will really happen yet ;)&lt;br /&gt;
&lt;br /&gt;
[[File:github-pull-request-1.png]]&lt;br /&gt;
&lt;br /&gt;
On the next screen you should enter a meaningful message to the developers.&lt;br /&gt;
&lt;br /&gt;
Pay attention to the text white on black that shows &#039;&#039;&#039;from&#039;&#039;&#039; and &#039;&#039;&#039;to&#039;&#039;&#039; which repository:branch you are going to send your pull request. By pushing the button &#039;&#039;&#039;Change Commits&#039;&#039;&#039; you may modify those values.&lt;br /&gt;
&lt;br /&gt;
[[File:github-pull-request-2.png]]&lt;br /&gt;
&lt;br /&gt;
Here you can preview the changes you are proposing.&lt;br /&gt;
&lt;br /&gt;
[[File:github-pull-request-3.png]]&lt;br /&gt;
&lt;br /&gt;
== Push the Button ==&lt;br /&gt;
Ok, we are ready to &#039;&#039;&#039;Push the Button&#039;&#039;&#039; [[File:Button_send_pull_request.png]]&lt;br /&gt;
&lt;br /&gt;
Thank you for your attention and in advance for your contribution(s) to the Joomla! project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:GitHub]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Github_work_flow_joomla.png&amp;diff=127328</id>
		<title>File:Github work flow joomla.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Github_work_flow_joomla.png&amp;diff=127328"/>
		<updated>2014-10-14T04:41:50Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Licensing ==&lt;br /&gt;
{{GFDL}}&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Pizza_Bugs_and_Fun_October_17,_2014&amp;diff=127327</id>
		<title>Pizza Bugs and Fun October 17, 2014</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Pizza_Bugs_and_Fun_October_17,_2014&amp;diff=127327"/>
		<updated>2014-10-14T04:34:57Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: Adding pre event seminar slides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:pbf.png|225px|left]]&lt;br /&gt;
&lt;br /&gt;
A Joomla! Pizza, Bugs and Fun event is scheduled for Friday, October 17, 2014. The event is global for virtual participants (both businesses and individuals), with local venues wherever they are organized. The key goal is to fix as many Joomla 3 and Joomla 2.5 bugs as possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See the section [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#General_Instructions General Instructions] below for instructions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This wiki will be used as the central resource for coordinating efforts and accumulating results from this event.&lt;br /&gt;
&lt;br /&gt;
Follow [https://twitter.com/joomlabugsquad @JoomlaBugSquad] on Twitter for updates during PBF and some social fun.  The &#039;&#039;Twitter&#039;&#039;&#039; hash tag is #JoomlaPBF.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left;&amp;quot; /&amp;gt;&lt;br /&gt;
== Goals ==&lt;br /&gt;
* &#039;&#039;&#039;Bugs&#039;&#039;&#039; : We will be working through the [http://issues.joomla.org/ CMS Issue Tracker] where there are bug reports needing patches and/or testing.&lt;br /&gt;
* &#039;&#039;&#039;Documentation&#039;&#039;&#039; : If you want to help out writing documentation, you&#039;re also more than welcome.  See the [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#If_you_want_to_work_on_Documentation Documentation Details] below for suggestions.&lt;br /&gt;
&lt;br /&gt;
== Organization, logistics and communications ==&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
We will set up a chat for all attendees of the PBF. More details coming soon.&lt;br /&gt;
&lt;br /&gt;
=== Training Sessions ===&lt;br /&gt;
There will be an optional webinar training session on 16 October, 2014 at 15:00 UTC. We&#039;ll post the link here on Wednesday the 15th.&lt;br /&gt;
&lt;br /&gt;
Also, on 16 October, 2014, the chat will be open for a Q&amp;amp;A and for help getting started. We&#039;ll post the link here on Wednesday the 15th.&lt;br /&gt;
&lt;br /&gt;
=== Recognition ===&lt;br /&gt;
We&#039;ve dubbed the event as a Business PBF, since it&#039;s the second PBF on a weekday (Friday) and we&#039;d like to get more business involved. We&#039;ve created badges that you can use on your sites to spread awareness of the event and get recognition for your participation: http://developer.joomla.org/pbf&lt;br /&gt;
&lt;br /&gt;
Furthermore, we&#039;d like to give you more recognition and highlight your pledge of participation by placing your logo and a link to your site on the landing page: http://developer.joomla.org/pbf&lt;br /&gt;
&lt;br /&gt;
There are four participations levels: Epic, Platinum, Gold, and Silver. Platinum is for 10 hours or more pledged to the event. Gold is four hours or more pledged. Silver is pledged to participate in the event. And Epic for 100+ hours pledged!&lt;br /&gt;
&lt;br /&gt;
So, for example, if Company ABC had five of their developers for two hours, then they could use the Platinum badge and have their logo (and link) in the platinum area on the landing page.&lt;br /&gt;
&lt;br /&gt;
The hours you choose to pledge towards the event is totally up to you as an individual or business. As a bonus, if you write a blog post about the event, you can count it as 30 minutes towards your pledge. So if you pledged 5 hours and write a blog post, you&#039;d be helping at the event for 4.5 hours.&lt;br /&gt;
&lt;br /&gt;
Finally, on the day of the event, come and go as you&#039;d like and fulfill your pledged hours. You can help with testing bug fixes, reporting bugs, coding bug fixes, etc. Most of all, enjoy every minute! Have fun, enjoy the fellowship, learn, and make Joomla better for you, your business, your clients, and your friends.&lt;br /&gt;
&lt;br /&gt;
=== General Instructions ===&lt;br /&gt;
&lt;br /&gt;
These instructions may change as we get closer to the event.&lt;br /&gt;
&lt;br /&gt;
==== Task List ====&lt;br /&gt;
On the day of the event, we&#039;ll have a task list available with suggestions of what you can do to help.&lt;br /&gt;
&lt;br /&gt;
==== If you want to test bug fixes (i.e. patches) ====&lt;br /&gt;
* Look for issues with a status of Pending. We want at least 2 testers and more on complex issues, so you can test what others have tested already.&lt;br /&gt;
* Use the [http://issues.joomla.org/ CMS Issue Tracker] as usual, which means you can use the [[Component Patchtester for Testers|Joomla Patch Tester]].&lt;br /&gt;
* Most of the issues should have test instructions with them.&lt;br /&gt;
* Once you have tested, add comments to the tracker on your results. Start your comment with @test so you will get counted in the stats as a tester. If the test is successful check of a successful text box.&lt;br /&gt;
* Note: You don&#039;t have to delete the installation folder when you are using the development version of Joomla. This allows you to reinstall just by deleting the configuration.php file.&lt;br /&gt;
* Note: See the [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#FAQ FAQ] on how to apply a Git pull request.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;h5&amp;gt;Helpful Documentation&amp;lt;/h5&amp;gt;&lt;br /&gt;
:* [[Component Patchtester for Testers]] - We&#039;d recommend beginners to use the [[Component Patchtester for Testers|Joomla Patch Tester]]&lt;br /&gt;
&lt;br /&gt;
==== If you want to code bug fixes ====&lt;br /&gt;
* Use the [http://issues.joomla.org/ CMS Issue Tracker] as usual, looking for the issues with a status of Confirmed.&lt;br /&gt;
* Send in a [[Git for Coders|pull request]]. Add testing instructions if they don&#039;t already exist.{{-}}&amp;lt;h5&amp;gt;Helpful documentation&amp;lt;/h5&amp;gt;&lt;br /&gt;
:* [[Component Patchtester for Testers]]&lt;br /&gt;
:* [[Git for Testers and Trackers]]&lt;br /&gt;
:* [[Git for Coders]]&lt;br /&gt;
:* [[Working with git and github/My first pull request]]&lt;br /&gt;
:* [[Secure coding guidelines]]&lt;br /&gt;
:* [[Development Best Practices]]&lt;br /&gt;
:* [http://www.slideshare.net/patelgunjan/joomla-pizza-bugs-and-fun-2014-preevent-seminar Joomla! Pizza Bugs and Fun 2014 pre-event Seminar]&lt;br /&gt;
&lt;br /&gt;
==== If you want to work on Documentation ====&lt;br /&gt;
* To edit this Documentation Wiki, you will need a user account on the wiki. If you don&#039;t already have one, you may register on [[Special:UserLogin]]. You only need a valid email address to register. After confirming your email address you will have immediate permission to edit any page except for a few that are protected because they are high profile spam targets.&lt;br /&gt;
* &#039;&#039;&#039;Important!&#039;&#039;&#039; - You should review the [[JDOC:Wiki policy|Wiki policy]] and our use of [[User:Abuse filter|Abuse filters]] for new users.&lt;br /&gt;
* Get your user account a few days before and make sure that you are able to sign in since the automatic authorization system can lock some people out.&lt;br /&gt;
* If you&#039;d like something to be edited, but you&#039;re not sure what to write exactly, use talk pages to add comments to pages.&lt;br /&gt;
* During the PBF, several experienced Wiki editors will be available in the chat to help you.&lt;br /&gt;
&lt;br /&gt;
{{:{{PAGENAME}}/Documentation needs}}&lt;br /&gt;
&lt;br /&gt;
=== Pizza ===&lt;br /&gt;
We are offering pizza (or any comparable locally popular main course) and soda for pre-registered groups. We are not setting a specific maximum, but please don’t go crazy with it. Get enough so there’s plenty for everyone, but not a week’s worth of pizza and soda leftovers for everyone. Contact Nick Savov (nick.savov[at]community.joomla[dot]org , replace [at] with @ and [dot] with .) before the event to register and get details.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
&lt;br /&gt;
If you want to get people together and have a venue to share, please add it below. Share as much as possible details like exact location, url for more information about the venue, ways to register, date and time the venue is available etc.&lt;br /&gt;
&lt;br /&gt;
If you set up a location please send contact information to Nick Savov (nick.savov[at]community.joomla[dot]org , replace [at] with @ and [dot] with .). Feel free to contact him with any questions.&lt;br /&gt;
&lt;br /&gt;
===Virtual===&lt;br /&gt;
&lt;br /&gt;
The event is global and across all timezones on October 17th, 2014 (48 hours total). You can come and go as you&#039;d like and fulfill your pledged hours. You can help with testing bug fixes, reporting bugs, coding bug fixes, etc. Most of all, enjoy every minute! Have fun, enjoy the community, learn, and make Joomla better for you, your business, your clients, and your friends.&lt;br /&gt;
&lt;br /&gt;
There are also some physical venues... see below.&lt;br /&gt;
&lt;br /&gt;
====Twitter====&lt;br /&gt;
Follow [https://twitter.com/joomlabugsquad @JoomlaBugSquad] on Twitter for updates during PBF and some social fun.  The &#039;&#039;Twitter&#039;&#039;&#039; hash tag is #JoomlaPBF.&lt;br /&gt;
&lt;br /&gt;
====Chat====&lt;br /&gt;
We will set up a chat for all attendees of the PBF. We&#039;ll post the link here on Wednesday the 15th.&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
&lt;br /&gt;
==== Netherlands ====&lt;br /&gt;
 [http://www.joomlacommunity.eu/nieuws/joomla-in-nederland/976-joomla-pizza-bugs-en-fun-nederland.html Joomla Pizza, Bugs &amp;amp; Fun in Enschede, The Netherlands]&lt;br /&gt;
 Date: Friday, October 17, from 10:30 - 18:00&lt;br /&gt;
 Location: de Bibliotheek, Pijpenstraat 15, 7511 GM Enschede&lt;br /&gt;
 To attend, please add yourself to: http://www.joomlacommunity.eu/joomla-gebruikersgroepen/details/483.html&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
&lt;br /&gt;
=== Asia/Pacific ===&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Middle East ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
=== For write access to this wiki ===&lt;br /&gt;
To get write access to this wiki you will need to [[Special:Userlogin|register here first]]. Please be aware that the registration process requires a valid email address. This is the same login for updating Joomla documentation.&lt;br /&gt;
&lt;br /&gt;
=== At a physical location ===&lt;br /&gt;
If you wish to be present at one of the physical locations listed above then you must register in advance because space most likely is limited.  Registrations are the responsibility of the individual location organizers and you should click on the appropriate link above for more information.&lt;br /&gt;
&lt;br /&gt;
=== Taking bugs, tasks and pizza ===&lt;br /&gt;
&lt;br /&gt;
Please check the [http://docs.joomla.org/Pizza_Bugs_and_Fun_October_17,_2014#Organization.2C_logistics_and_communications Organization, logistics and communications section] for details on how to get involved in working on tasks.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* All code must be made available under the [http://www.gnu.org/licenses/gpl-2.0.html General Public Licence version 2].&lt;br /&gt;
* All documentation contributions must be made available under the [[JEDL|Joomla! Electronic Documentation License]]. Further information on the JEDL is available in the [[JEDL/FAQ|JEDL Frequently Asked Questions]]&lt;br /&gt;
* No advertising or self-promotion will be allowed.  This includes back links to your website or anyone else&#039;s.  The one exception is that if you have made a contribution then feel free to add your name and an optional link to your website to the [[Pizza Bugs and Fun October 17, 2014/Contributors List|Contributors List]]&lt;br /&gt;
* All contributions must be in English.  Note that the official language of the Joomla! project is British English.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
Q: Where is the code for Joomla?&lt;br /&gt;
&lt;br /&gt;
A: The current Joomla code can be found on GitHub.&lt;br /&gt;
&lt;br /&gt;
*GitHub - https://github.com/joomla/joomla-cms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Which one is 3.3?&lt;br /&gt;
&lt;br /&gt;
A: On GitHub, it is the staging branch: [https://github.com/joomla/joomla-cms https://github.com/joomla/joomla-cms]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: Which one is 2.5?&lt;br /&gt;
&lt;br /&gt;
A: On GitHub, it is the 2.5.x branch: [https://github.com/joomla/joomla-cms/tree/2.5.x https://github.com/joomla/joomla-cms/tree/2.5.x]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: How do I apply a Git pull request?&lt;br /&gt;
&lt;br /&gt;
A: Use the [[Component Patchtester for Testers|Joomla Patch Tester]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Contributors==&lt;br /&gt;
{{:Pizza Bugs and Fun October 17, 2014/Contributors List}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]][[Category:Events]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Bug_Tracking_Process&amp;diff=127162</id>
		<title>Bug Tracking Process</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Bug_Tracking_Process&amp;diff=127162"/>
		<updated>2014-10-10T17:37:37Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: Updating SVN to GIT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{page|needs updating|Information on JoomlaCode.org is no longer valid, use [http://issues.joomla.org Issue Tracker].}}&lt;br /&gt;
This article documents the current Joomla! bug tracking process from the time a new bug is reported to the time it is closed.&lt;br /&gt;
&lt;br /&gt;
Joomla! bugs are tracked in the follower tracker:&lt;br /&gt;
;*[http://issues.joomla.org/ Joomla! Issue Tracker] - Active.&lt;br /&gt;
:This is for issues with supported Joomla Versions. As of November 2013, this is version 2.5 and 3.x.&lt;br /&gt;
&lt;br /&gt;
==Helping out==&lt;br /&gt;
&lt;br /&gt;
You do &#039;&#039;not&#039;&#039; need to be a member of the JBS to help fix bugs in Joomla. [[Filing bugs and issues|Anyone can report bugs]], test patches, or submit patches. If you want to help with resolving bugs, go to the [http://issues.joomla.org/ Tracker]. You can help resolve Open issues as outlined below. You can create and submit patches for Confirmed issues. Or you can help test Pending issues. To report about what you have done, login with a Github account and add a comment. You&#039;ll be amazed at how much impact you can have and how good it feels to contribute to the Joomla! project.&lt;br /&gt;
&lt;br /&gt;
If you have any questions, or are interested in joining the [[Portal:Bug_Squad|JBS]], please contact [mailto:nick.savov@community.joomla.org Nick Savov]. &lt;br /&gt;
&lt;br /&gt;
===Testing Pre releases===&lt;br /&gt;
&lt;br /&gt;
Before a stable release of Joomla is released the update needs testing.  This is a simple process:&lt;br /&gt;
# Install the current stable release of Joomla in a subfolder or on localhost (you can use a copy of a production site but &#039;&#039;&#039;never test on a live production site&#039;&#039;&#039;).&lt;br /&gt;
# Navigate to the Options of the Joomla! Update component and set the &#039;Update server&#039; to &#039;Test&#039;. [[Help32:Components Joomla Update|Components Joomla Update]]&lt;br /&gt;
# When a Joomla pre release is ready for testing, log into your test site and install the Update.  Then test the site works as expected.  Please report any errors/bugs on the [http://issues.joomla.org/ Joomla! Issue Tracker]&lt;br /&gt;
&lt;br /&gt;
==Reporting Issues==&lt;br /&gt;
&lt;br /&gt;
[[Image:ReportingIssues.png|ReportingIssues.png]]&lt;br /&gt;
&lt;br /&gt;
The process is normally started in one of two ways: the bug is added to the respective tracker, or a user reports the bug in the [http://forum.joomla.org/viewforum.php?f=728 Joomla! Bug Forum] for the given maintenance release.&lt;br /&gt;
&lt;br /&gt;
=== Issues reported on the forum ===&lt;br /&gt;
&lt;br /&gt;
JBS members scan the forums to determine when issues need to be put into the tracker. If the issue can be reproduced, is clearly a bug, and there are step-by-step instructions for how to reproduce it, it can be entered into the tracker with a status of Confirmed. If it is not as clear-cut, it can be entered with a status of Open, so that other JBS members will know it needs further investigation.&lt;br /&gt;
&lt;br /&gt;
=== Issues directly reported to the tracker ===&lt;br /&gt;
&lt;br /&gt;
When an issue is added to the tracker, the status could be depending on the situation;&lt;br /&gt;
# Open&lt;br /&gt;
# Confirmed&lt;br /&gt;
# Pending&lt;br /&gt;
If the issue needs more investigation, then it should be set to Open. If the issue (1) is a bug and (2) can be reproduced and (3) has good test instructions, it should be set to Confirmed. If it meets the three Confirmed criteria and also has a good patch attached, it should be set to Pending. See below for more information about the status codes.&lt;br /&gt;
&lt;br /&gt;
=== Issue Priorities ===&lt;br /&gt;
&lt;br /&gt;
[[Bug and Issue Tracker Priority|Why most issues are priority 3]], or Normal. The artifacts are prioritized according to the following characteristics:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Critical (1):&#039;&#039;&#039;&lt;br /&gt;
The trunk is not working at all. Significant parts of the source are broken preventing key operations.  Examples would be login, installation, extension installers, javascript errors that prevent you from moving a save or similar action, etc.  Also includes the generation of Fatal PHP errors and major security issues in a prerelease (Security issues for a stable release should NOT be reported in the tracker but instead reported to the security team security@joomla.org).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Urgent (2):&#039;&#039;&#039;&lt;br /&gt;
Parts of the source are obstructing operation in a serious way or causing a major loss in advertised function.  Examples would includes PHP notices and warnings and reported javascript errors.  Major issues will also typically prevent the release cycle from moving from Beta to Release Candidate (RC), or Release Candidate to General Availability (GA).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Medium (3):&#039;&#039;&#039;&lt;br /&gt;
Issues that are hindering advertised behavior but the application is still workable.  Examples would include parameters not working as advertised, language files not loading as expected, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Low (4):&#039;&#039;&#039;&lt;br /&gt;
Minor loss of function and generally annoying behavior.  May include less common platform or browser specific problems that while they may be technically major in those environments, they represent a minority.  Also include missing translation strings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Very low (5):&#039;&#039;&#039;&lt;br /&gt;
Cosmetic problems, misspelled words, graphically misaligned object, less common issues with parameters, etc.&lt;br /&gt;
&lt;br /&gt;
== Resolving Issues ==&lt;br /&gt;
&lt;br /&gt;
The bug squad takes care of the Joomla releases. For example, that means getting the 3.4, 3.5, 3.6, 3.7  etc releases ready by fixing problems that come up. The idea is to make the release increasingly stable and take care of issues that come up. At the same time, it is vitally important not to break anything that is working. That&#039;s called software regression and it&#039;s not something you want at this stage.&lt;br /&gt;
&lt;br /&gt;
In the trackers there are several common statuses, mainly: open, confirmed, pending, ready to commit.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Open/New&#039;&#039;&#039; means it&#039;s reported, but it hasn&#039;t been determined for sure whether it is a real bug or not. Many Open issues are not actually bugs. If the issue fits into one of the categories below, then the status is changed as indicated and the bug is closed:&lt;br /&gt;
** Cannot be reproduced. We have tried the same thing the reported did but the software appears to work correctly. (In many cases, more information is needed to be able to reproduce a bug. See &amp;quot;Information Required&amp;quot; below.) Change status to &#039;&#039;&#039;Unable to confirm&#039;&#039;&#039;.&lt;br /&gt;
** Has already been reported in a different issue number. Change status to &#039;&#039;&#039;Duplicate report&#039;&#039;&#039; and add the number on the duplicates tab.&lt;br /&gt;
** Is a known limitation of the software. Change status to &#039;&#039;&#039;Known issue&#039;&#039;&#039;.&lt;br /&gt;
** Is a feature request, a mistake made by a user, or is the way the software is intended to work. Change status to &#039;&#039;&#039;Not a bug&#039;&#039;&#039;.&lt;br /&gt;
** Is a bug with an extension or some other external program or a server issue that will not be addressed. Change status to &#039;&#039;&#039;Not Joomla! core&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Information Required&#039;&#039;&#039; is used if we need more information &#039;&#039;from the person who reported the issue&#039;&#039; to decide about the issue. For example, there are questions about how to reproduce the problem or other questions about the issue. If we get the information we need, then we can continue processing the issue. If we don&#039;t get the information within two weeks, then we can change the status to Unable to confirm (or another of the closed status codes if that is more applicable).&lt;br /&gt;
* &#039;&#039;&#039;Needs Review&#039;&#039;&#039; is used if we need a JBS Coordinator, Development Coordinator, or other experienced developer to review the issue. This is different from Information Required, which means that we need more information from the person who reported the issue.&lt;br /&gt;
* &#039;&#039;&#039;Started&#039;&#039;&#039; means that JBS has checked the issue, but is not quite sure if the issue is an actual bug (i.e. confirmed), and that there is discussion going on about the issue, which doesn&#039;t require additional information &#039;&#039;from the person who reported the issue&#039;&#039;.  It is a state that&#039;s between &#039;&#039;&#039;Opened&#039;&#039;&#039; and &#039;&#039;&#039;Confirmed&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Confirmed&#039;&#039;&#039; means that JBS has confirmed that this issue is a bug in Joomla! that should be fixed. That&#039;s when the JBS tries to solve it or consults with the development team about a solution. &#039;&#039;At this point there should be clear step-by-step test instructions that indicate how to reproduce the problem. For version 1.6, use the Test Instructions field for this information.&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Pending&#039;&#039;&#039; means that a patch has been submitted that a JBS member or development coordinator or appropriate leadership team member believes fixes the bug. If needed, additional test instructions are entered for the issue. Every Pending issue should have instructions that tell the tester how to reproduce the problem and make sure the patch fixes the problem.&lt;br /&gt;
* &#039;&#039;&#039;In Progress&#039;&#039;&#039; means that an issue is being worked on. This will most likely be a situation where the issue was set to Pending but there were problems with the patch that require additional work. It also may be a case where the issue is complex and will take some time to solve. JBS members can participate in In Progress issues but generally should not start coding before discussing with others working on the issue already.&lt;br /&gt;
* &#039;&#039;&#039;Ready to commit&#039;&#039;&#039; means that (in general) two separate people have successfully tested the same patch file, and it works correctly with the patch. Note that, for some issues that are more complex or higher impact, we may need more than two people to test or may need to test on multiple platforms. For simple issues, such as fixing typos in language strings or comments, one tester is enough.&lt;br /&gt;
* &#039;&#039;&#039;Fixed in Git&#039;&#039;&#039; means that, after reviewing the code, the JBS commit coordinators have determined that the patch is good and the change has been committed to the Joomla! code-base. At this point, it will be part of the next Joomla! maintenance release.&lt;br /&gt;
&lt;br /&gt;
The flowchart below provides a visual guide to how the process for resolving bugs works.&lt;br /&gt;
&lt;br /&gt;
[[Image:ResolvingIssues.png|ResolvingIssues.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt; [[Category:Bug Squad]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:Bug Tracker]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=125394</id>
		<title>J3.x:Developing an MVC Component/Basic backend</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=125394"/>
		<updated>2014-09-11T10:32:10Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Create the general controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
This is a multiple-article series of tutorials on how to develop a Model-View-Contoller [[Component]] for Joomla! Version {{JVer|{{CurrentSTSVer|minor}}}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Basic backend ==&lt;br /&gt;
Designing the backend interface leads us to create at least a Model-View-Controller triptych. We have to modify the administrator entry point of our component, the &#039;&#039;admin/helloworld.php&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
 &lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task and Execute request task&lt;br /&gt;
$controller-&amp;gt;execute(JFactory::getApplication()-&amp;gt;input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
 &lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create the general controller ==&lt;br /&gt;
The entry point now gets an instance of a &#039;&#039;HelloWorld&#039;&#039; prefixed controller. Let&#039;s create a basic controller for the administrator part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controller.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controller.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * General Controller of HelloWorld component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display task&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($cachable = false, $urlparams = false) &lt;br /&gt;
	{&lt;br /&gt;
		// set default view if not set&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;view&#039;, $input-&amp;gt;getCmd(&#039;view&#039;, &#039;HelloWorlds&#039;));&lt;br /&gt;
 &lt;br /&gt;
		// call parent behavior&lt;br /&gt;
		parent::display($cachable);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This controller will display the &#039;HelloWorlds&#039; view by default.&lt;br /&gt;
&lt;br /&gt;
== Create the view ==&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Joomla, views display data using layout. With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This layout calls several sub-layout (&#039;&#039;head&#039;&#039;, &#039;&#039;foot&#039;&#039; and &#039;&#039;body&#039;&#039;). Each sub-layout corresponds to a file prefixed by the name of the main layout (&#039;&#039;default&#039;&#039;), and an underscore.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_head.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;grid.checkall&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;&#039; and &#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;&#039; are placeholders which will later be replaced with language-specific text. The [http://api.joomla.org/cms-3/classes/JText.html JText::_] method translates a string into the current language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;checkAll&#039;&#039; is a javascript function defined in the Joomla core able to check all items.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_body.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach($this-&amp;gt;items as $i =&amp;gt; $item): ?&amp;gt;&lt;br /&gt;
	&amp;lt;tr class=&amp;quot;row&amp;lt;?php echo $i % 2; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo JHtml::_(&#039;grid.id&#039;, $i, $item-&amp;gt;id); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;greeting; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;id; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JHtml::_&#039;&#039; is a helper function able to display several HTML output. In this case, it will display a checkbox for the item.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_foot.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JPagination&#039;&#039; is a Joomla class able to manage and display pagination object.&lt;br /&gt;
&lt;br /&gt;
== Create the model ==&lt;br /&gt;
The &#039;&#039;HelloWorlds&#039;&#039; view asks the model for data. In Joomla, there is a class able to manage a list of data: &#039;&#039;JModelList&#039;&#039;. Class &#039;&#039;JModelList&#039;&#039; and inherited classes need only one method:&lt;br /&gt;
* &#039;&#039;getListQuery&#039;&#039; which constructs an SQL query&lt;br /&gt;
&lt;br /&gt;
and two states:&lt;br /&gt;
* &#039;&#039;list.start&#039;&#039; for determining the list offset&lt;br /&gt;
* &#039;&#039;list.limit&#039;&#039; for determining the list length&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;getItems&#039;&#039; and &#039;&#039;getPagination&#039;&#039; methods are defined in JModelList class. They don&#039;t need to be defined in the &#039;&#039;HelloWorldModelHelloWorlds&#039;&#039; class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
// import the Joomla modellist library&lt;br /&gt;
jimport(&#039;joomla.application.component.modellist&#039;);&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorldList Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorlds extends JModelList&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to build an SQL query to load the list data.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string	An SQL query&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getListQuery()&lt;br /&gt;
	{&lt;br /&gt;
		// Create a new query object.		&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
		// Select some fields from the hello table&lt;br /&gt;
		$query&lt;br /&gt;
		    -&amp;gt;select(&#039;id,greeting&#039;)&lt;br /&gt;
		    -&amp;gt;from(&#039;#__helloworld&#039;);&lt;br /&gt;
		&lt;br /&gt;
		return $query;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;_populateState&#039;&#039; method is, by default, automatically called when a state is read by the &#039;&#039;getState&#039;&#039; method.&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-7-basic-backend.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2014&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.7&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;		&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can see in your component &#039;&#039;&#039;hello-world&#039;&#039;&#039; an array with two colums, two rows and checkboxes. You can click the checkboxes in order to select the different options you want.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Using the database &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
|next=Adding language management &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:presto|Preston Smith]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=125393</id>
		<title>J3.x:Developing an MVC Component/Basic backend</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=125393"/>
		<updated>2014-09-11T10:31:07Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Basic backend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
This is a multiple-article series of tutorials on how to develop a Model-View-Contoller [[Component]] for Joomla! Version {{JVer|{{CurrentSTSVer|minor}}}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Basic backend ==&lt;br /&gt;
Designing the backend interface leads us to create at least a Model-View-Controller triptych. We have to modify the administrator entry point of our component, the &#039;&#039;admin/helloworld.php&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
 &lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task and Execute request task&lt;br /&gt;
$controller-&amp;gt;execute(JFactory::getApplication()-&amp;gt;input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
 &lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create the general controller ==&lt;br /&gt;
The entry point now gets an instance of a &#039;&#039;HelloWorld&#039;&#039; prefixed controller. Let&#039;s create a basic controller for the administrator part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controller.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controller.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
 &lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * General Controller of HelloWorld component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display task&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($cachable = false, $urlparams = false) &lt;br /&gt;
	{&lt;br /&gt;
		// set default view if not set&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;view&#039;, $input-&amp;gt;getCmd(&#039;view&#039;, &#039;HelloWorlds&#039;));&lt;br /&gt;
 &lt;br /&gt;
		// call parent behavior&lt;br /&gt;
		parent::display($cachable);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This controller will display the &#039;HelloWorlds&#039; view by default.&lt;br /&gt;
&lt;br /&gt;
== Create the view ==&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Joomla, views display data using layout. With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This layout calls several sub-layout (&#039;&#039;head&#039;&#039;, &#039;&#039;foot&#039;&#039; and &#039;&#039;body&#039;&#039;). Each sub-layout corresponds to a file prefixed by the name of the main layout (&#039;&#039;default&#039;&#039;), and an underscore.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_head.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;grid.checkall&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;&#039; and &#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;&#039; are placeholders which will later be replaced with language-specific text. The [http://api.joomla.org/cms-3/classes/JText.html JText::_] method translates a string into the current language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;checkAll&#039;&#039; is a javascript function defined in the Joomla core able to check all items.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_body.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach($this-&amp;gt;items as $i =&amp;gt; $item): ?&amp;gt;&lt;br /&gt;
	&amp;lt;tr class=&amp;quot;row&amp;lt;?php echo $i % 2; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo JHtml::_(&#039;grid.id&#039;, $i, $item-&amp;gt;id); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;greeting; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;id; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JHtml::_&#039;&#039; is a helper function able to display several HTML output. In this case, it will display a checkbox for the item.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_foot.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JPagination&#039;&#039; is a Joomla class able to manage and display pagination object.&lt;br /&gt;
&lt;br /&gt;
== Create the model ==&lt;br /&gt;
The &#039;&#039;HelloWorlds&#039;&#039; view asks the model for data. In Joomla, there is a class able to manage a list of data: &#039;&#039;JModelList&#039;&#039;. Class &#039;&#039;JModelList&#039;&#039; and inherited classes need only one method:&lt;br /&gt;
* &#039;&#039;getListQuery&#039;&#039; which constructs an SQL query&lt;br /&gt;
&lt;br /&gt;
and two states:&lt;br /&gt;
* &#039;&#039;list.start&#039;&#039; for determining the list offset&lt;br /&gt;
* &#039;&#039;list.limit&#039;&#039; for determining the list length&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;getItems&#039;&#039; and &#039;&#039;getPagination&#039;&#039; methods are defined in JModelList class. They don&#039;t need to be defined in the &#039;&#039;HelloWorldModelHelloWorlds&#039;&#039; class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
// import the Joomla modellist library&lt;br /&gt;
jimport(&#039;joomla.application.component.modellist&#039;);&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorldList Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorlds extends JModelList&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to build an SQL query to load the list data.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string	An SQL query&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getListQuery()&lt;br /&gt;
	{&lt;br /&gt;
		// Create a new query object.		&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
		// Select some fields from the hello table&lt;br /&gt;
		$query&lt;br /&gt;
		    -&amp;gt;select(&#039;id,greeting&#039;)&lt;br /&gt;
		    -&amp;gt;from(&#039;#__helloworld&#039;);&lt;br /&gt;
		&lt;br /&gt;
		return $query;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;_populateState&#039;&#039; method is, by default, automatically called when a state is read by the &#039;&#039;getState&#039;&#039; method.&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-7-basic-backend.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2014&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.7&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;		&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can see in your component &#039;&#039;&#039;hello-world&#039;&#039;&#039; an array with two colums, two rows and checkboxes. You can click the checkboxes in order to select the different options you want.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Using the database &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
|next=Adding language management &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:presto|Preston Smith]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124735</id>
		<title>J3.x:Developing an MVC Component/Adding backend actions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124735"/>
		<updated>2014-08-14T11:35:47Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Packaging the component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Adding a toolbar ==&lt;br /&gt;
In Joomla, the administrator interacts generally with components through the use of a toolbar. In the file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; put this content. It will create a basic toolbar and a title for the component.&lt;br /&gt;
&lt;br /&gt;
The arguments used in, for example, JToolBarHelper::addNew is used to set a controller instance which will be used after button is clicked. Further details below in the [[#Adding_specific_controllers | adding specific controllers]] section.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span id =&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed  A string if successful, otherwise a JError object.&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		JToolBarHelper::title(JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;));&lt;br /&gt;
		JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;);&lt;br /&gt;
		JToolBarHelper::editList(&#039;helloworld.edit&#039;);&lt;br /&gt;
		JToolBarHelper::addNew(&#039;helloworld.add&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find other classic backend actions in the &#039;&#039;administrator/includes/toolbar.php&#039;&#039; file of your Joomla installation.&lt;br /&gt;
&lt;br /&gt;
Since the view can perform some actions, we have to add some input data. With your favorite file manager and editor, put in the file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;boxchecked&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding specific controllers ==&lt;br /&gt;
Three actions have been added:&lt;br /&gt;
* &#039;&#039;helloworlds.delete&#039;&#039; &lt;br /&gt;
* &#039;&#039;helloworld.edit&#039;&#039;&lt;br /&gt;
* &#039;&#039;helloworld.add&#039;&#039;&lt;br /&gt;
read more about [[JController_and_its_subclass_usage_overview|subcontrollers...]]&lt;br /&gt;
&lt;br /&gt;
These are compound tasks (&#039;&#039;controller&#039;&#039;.&#039;&#039;task&#039;&#039;). So two new controllers &#039;&#039;HelloWorldControllerHelloWorlds&#039;&#039; and &#039;&#039;HelloWorldControllerHelloWorld&#039;&#039; have to be coded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controlleradmin library&lt;br /&gt;
jimport(&#039;joomla.application.component.controlleradmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorlds extends JControllerAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Proxy for getModel.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getModel($name = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldModel&#039;) &lt;br /&gt;
	{&lt;br /&gt;
		$model = parent::getModel($name, $prefix, array(&#039;ignore_request&#039; =&amp;gt; true));&lt;br /&gt;
		return $model;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controllerform library&lt;br /&gt;
jimport(&#039;joomla.application.component.controllerform&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorld extends JControllerForm&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding an editing view ==&lt;br /&gt;
With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworld/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display method of Hello view&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// get the Data&lt;br /&gt;
		$form = $this-&amp;gt;get(&#039;Form&#039;);&lt;br /&gt;
		$item = $this-&amp;gt;get(&#039;Item&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign the Data&lt;br /&gt;
		$this-&amp;gt;form = $form;&lt;br /&gt;
		$this-&amp;gt;item = $item;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;hidemainmenu&#039;, true);&lt;br /&gt;
		$isNew = ($this-&amp;gt;item-&amp;gt;id == 0);&lt;br /&gt;
		JToolBarHelper::title($isNew ? JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW&#039;)&lt;br /&gt;
		                             : JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT&#039;));&lt;br /&gt;
		JToolBarHelper::save(&#039;helloworld.save&#039;);&lt;br /&gt;
		JToolBarHelper::cancel(&#039;helloworld.cancel&#039;, $isNew ? &#039;JTOOLBAR_CANCEL&#039;&lt;br /&gt;
		                                                   : &#039;JTOOLBAR_CLOSE&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This view will display data using a layout.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/tmpl/edit.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id=&#039; . (int) $this-&amp;gt;item-&amp;gt;id); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;form-horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_DETAILS&#039;); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;form-&amp;gt;getFieldset() as $field): ?&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;control-group&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;control-label&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;label; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;controls&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;input; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;helloworld.edit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding a model and modifying the existing one ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;HelloWorldViewHelloWorld&#039;&#039; view asks form and data from a model. This model has to provide a &#039;&#039;getTable&#039;&#039;, a &#039;&#039;getForm&#039;&#039; method and a &#039;&#039;loadData&#039;&#039; method (called from the &#039;&#039;JModelAdmin&#039;&#039; controller)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla modelform library&lt;br /&gt;
jimport(&#039;joomla.application.component.modeladmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns a reference to the a Table object, always creating it.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	type	The table type to instantiate&lt;br /&gt;
	 * @param	string	A prefix for the table class name. Optional.&lt;br /&gt;
	 * @param	array	Configuration array for model. Optional.&lt;br /&gt;
	 * @return	JTable	A database object&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array()) &lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the record form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	array	$data		Data for the form.&lt;br /&gt;
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.&lt;br /&gt;
	 * @return	mixed	A JForm object on success, false on failure&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForm($data = array(), $loadData = true) &lt;br /&gt;
	{&lt;br /&gt;
		// Get the form.&lt;br /&gt;
		$form = $this-&amp;gt;loadForm(&#039;com_helloworld.helloworld&#039;, &#039;helloworld&#039;,&lt;br /&gt;
		                        array(&#039;control&#039; =&amp;gt; &#039;jform&#039;, &#039;load_data&#039; =&amp;gt; $loadData));&lt;br /&gt;
		if (empty($form)) &lt;br /&gt;
		{&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		return $form;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the data that should be injected in the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	mixed	The data for the form.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function loadFormData() &lt;br /&gt;
	{&lt;br /&gt;
		// Check the session for previously entered form data.&lt;br /&gt;
		$data = JFactory::getApplication()-&amp;gt;getUserState(&#039;com_helloworld.edit.helloworld.data&#039;, array());&lt;br /&gt;
		if (empty($data)) &lt;br /&gt;
		{&lt;br /&gt;
			$data = $this-&amp;gt;getItem();&lt;br /&gt;
		}&lt;br /&gt;
		return $data;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This model inherits from the &#039;&#039;JModelAdmin&#039;&#039; class and uses its &#039;&#039;loadForm&#039;&#039; method. This method searches for forms in the &#039;&#039;forms&#039;&#039; folder. With your favorite file manager and editor, put a file &#039;&#039;admin/models/forms/helloworld.xml&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/forms/helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;id&amp;quot;&lt;br /&gt;
			type=&amp;quot;hidden&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;greeting&amp;quot;&lt;br /&gt;
			type=&amp;quot;text&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL&amp;quot;&lt;br /&gt;
			description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_DESC&amp;quot;&lt;br /&gt;
			size=&amp;quot;40&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
			default=&amp;quot;&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* [[J3.x:Developing a MVC Component/Adding language management#site.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.x:Developing a MVC Component/Adding language management#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.x:Developing a MVC Component/Adding language management#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.x:Developing a MVC Component/Adding language management#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-9-adding-backend-actions.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.9&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- admin languages files section --&amp;gt;&lt;br /&gt;
                        &amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;	&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Adding language management &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|next=Adding decorations to the backend &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:betweenbrain|Matt Thomas]]&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124734</id>
		<title>J3.x:Developing an MVC Component/Adding backend actions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124734"/>
		<updated>2014-08-14T11:33:10Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Packaging the component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Adding a toolbar ==&lt;br /&gt;
In Joomla, the administrator interacts generally with components through the use of a toolbar. In the file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; put this content. It will create a basic toolbar and a title for the component.&lt;br /&gt;
&lt;br /&gt;
The arguments used in, for example, JToolBarHelper::addNew is used to set a controller instance which will be used after button is clicked. Further details below in the [[#Adding_specific_controllers | adding specific controllers]] section.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span id =&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed  A string if successful, otherwise a JError object.&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		JToolBarHelper::title(JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;));&lt;br /&gt;
		JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;);&lt;br /&gt;
		JToolBarHelper::editList(&#039;helloworld.edit&#039;);&lt;br /&gt;
		JToolBarHelper::addNew(&#039;helloworld.add&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find other classic backend actions in the &#039;&#039;administrator/includes/toolbar.php&#039;&#039; file of your Joomla installation.&lt;br /&gt;
&lt;br /&gt;
Since the view can perform some actions, we have to add some input data. With your favorite file manager and editor, put in the file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;boxchecked&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding specific controllers ==&lt;br /&gt;
Three actions have been added:&lt;br /&gt;
* &#039;&#039;helloworlds.delete&#039;&#039; &lt;br /&gt;
* &#039;&#039;helloworld.edit&#039;&#039;&lt;br /&gt;
* &#039;&#039;helloworld.add&#039;&#039;&lt;br /&gt;
read more about [[JController_and_its_subclass_usage_overview|subcontrollers...]]&lt;br /&gt;
&lt;br /&gt;
These are compound tasks (&#039;&#039;controller&#039;&#039;.&#039;&#039;task&#039;&#039;). So two new controllers &#039;&#039;HelloWorldControllerHelloWorlds&#039;&#039; and &#039;&#039;HelloWorldControllerHelloWorld&#039;&#039; have to be coded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controlleradmin library&lt;br /&gt;
jimport(&#039;joomla.application.component.controlleradmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorlds extends JControllerAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Proxy for getModel.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getModel($name = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldModel&#039;) &lt;br /&gt;
	{&lt;br /&gt;
		$model = parent::getModel($name, $prefix, array(&#039;ignore_request&#039; =&amp;gt; true));&lt;br /&gt;
		return $model;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controllerform library&lt;br /&gt;
jimport(&#039;joomla.application.component.controllerform&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorld extends JControllerForm&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding an editing view ==&lt;br /&gt;
With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworld/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display method of Hello view&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// get the Data&lt;br /&gt;
		$form = $this-&amp;gt;get(&#039;Form&#039;);&lt;br /&gt;
		$item = $this-&amp;gt;get(&#039;Item&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign the Data&lt;br /&gt;
		$this-&amp;gt;form = $form;&lt;br /&gt;
		$this-&amp;gt;item = $item;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;hidemainmenu&#039;, true);&lt;br /&gt;
		$isNew = ($this-&amp;gt;item-&amp;gt;id == 0);&lt;br /&gt;
		JToolBarHelper::title($isNew ? JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW&#039;)&lt;br /&gt;
		                             : JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT&#039;));&lt;br /&gt;
		JToolBarHelper::save(&#039;helloworld.save&#039;);&lt;br /&gt;
		JToolBarHelper::cancel(&#039;helloworld.cancel&#039;, $isNew ? &#039;JTOOLBAR_CANCEL&#039;&lt;br /&gt;
		                                                   : &#039;JTOOLBAR_CLOSE&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This view will display data using a layout.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/tmpl/edit.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id=&#039; . (int) $this-&amp;gt;item-&amp;gt;id); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;form-horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_DETAILS&#039;); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;form-&amp;gt;getFieldset() as $field): ?&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;control-group&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;control-label&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;label; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;controls&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;input; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;helloworld.edit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding a model and modifying the existing one ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;HelloWorldViewHelloWorld&#039;&#039; view asks form and data from a model. This model has to provide a &#039;&#039;getTable&#039;&#039;, a &#039;&#039;getForm&#039;&#039; method and a &#039;&#039;loadData&#039;&#039; method (called from the &#039;&#039;JModelAdmin&#039;&#039; controller)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla modelform library&lt;br /&gt;
jimport(&#039;joomla.application.component.modeladmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns a reference to the a Table object, always creating it.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	type	The table type to instantiate&lt;br /&gt;
	 * @param	string	A prefix for the table class name. Optional.&lt;br /&gt;
	 * @param	array	Configuration array for model. Optional.&lt;br /&gt;
	 * @return	JTable	A database object&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array()) &lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the record form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	array	$data		Data for the form.&lt;br /&gt;
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.&lt;br /&gt;
	 * @return	mixed	A JForm object on success, false on failure&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForm($data = array(), $loadData = true) &lt;br /&gt;
	{&lt;br /&gt;
		// Get the form.&lt;br /&gt;
		$form = $this-&amp;gt;loadForm(&#039;com_helloworld.helloworld&#039;, &#039;helloworld&#039;,&lt;br /&gt;
		                        array(&#039;control&#039; =&amp;gt; &#039;jform&#039;, &#039;load_data&#039; =&amp;gt; $loadData));&lt;br /&gt;
		if (empty($form)) &lt;br /&gt;
		{&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		return $form;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the data that should be injected in the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	mixed	The data for the form.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function loadFormData() &lt;br /&gt;
	{&lt;br /&gt;
		// Check the session for previously entered form data.&lt;br /&gt;
		$data = JFactory::getApplication()-&amp;gt;getUserState(&#039;com_helloworld.edit.helloworld.data&#039;, array());&lt;br /&gt;
		if (empty($data)) &lt;br /&gt;
		{&lt;br /&gt;
			$data = $this-&amp;gt;getItem();&lt;br /&gt;
		}&lt;br /&gt;
		return $data;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This model inherits from the &#039;&#039;JModelAdmin&#039;&#039; class and uses its &#039;&#039;loadForm&#039;&#039; method. This method searches for forms in the &#039;&#039;forms&#039;&#039; folder. With your favorite file manager and editor, put a file &#039;&#039;admin/models/forms/helloworld.xml&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/forms/helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;id&amp;quot;&lt;br /&gt;
			type=&amp;quot;hidden&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;greeting&amp;quot;&lt;br /&gt;
			type=&amp;quot;text&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL&amp;quot;&lt;br /&gt;
			description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_DESC&amp;quot;&lt;br /&gt;
			size=&amp;quot;40&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
			default=&amp;quot;&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* [[J3.x:Developing a MVC Component/Adding language management#site.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.x:Developing a MVC Component/Adding language management#admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.x:Developing a MVC Component/Adding language management##admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.x:Developing a MVC Component/Adding language management##admin.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.sys.ini|language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-9-adding-backend-actions.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.9&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- admin languages files section --&amp;gt;&lt;br /&gt;
                        &amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;	&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Adding language management &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|next=Adding decorations to the backend &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:betweenbrain|Matt Thomas]]&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124733</id>
		<title>J3.x:Developing an MVC Component/Adding backend actions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124733"/>
		<updated>2014-08-14T11:29:07Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Adding a toolbar ==&lt;br /&gt;
In Joomla, the administrator interacts generally with components through the use of a toolbar. In the file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; put this content. It will create a basic toolbar and a title for the component.&lt;br /&gt;
&lt;br /&gt;
The arguments used in, for example, JToolBarHelper::addNew is used to set a controller instance which will be used after button is clicked. Further details below in the [[#Adding_specific_controllers | adding specific controllers]] section.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span id =&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed  A string if successful, otherwise a JError object.&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		JToolBarHelper::title(JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;));&lt;br /&gt;
		JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;);&lt;br /&gt;
		JToolBarHelper::editList(&#039;helloworld.edit&#039;);&lt;br /&gt;
		JToolBarHelper::addNew(&#039;helloworld.add&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find other classic backend actions in the &#039;&#039;administrator/includes/toolbar.php&#039;&#039; file of your Joomla installation.&lt;br /&gt;
&lt;br /&gt;
Since the view can perform some actions, we have to add some input data. With your favorite file manager and editor, put in the file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;boxchecked&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding specific controllers ==&lt;br /&gt;
Three actions have been added:&lt;br /&gt;
* &#039;&#039;helloworlds.delete&#039;&#039; &lt;br /&gt;
* &#039;&#039;helloworld.edit&#039;&#039;&lt;br /&gt;
* &#039;&#039;helloworld.add&#039;&#039;&lt;br /&gt;
read more about [[JController_and_its_subclass_usage_overview|subcontrollers...]]&lt;br /&gt;
&lt;br /&gt;
These are compound tasks (&#039;&#039;controller&#039;&#039;.&#039;&#039;task&#039;&#039;). So two new controllers &#039;&#039;HelloWorldControllerHelloWorlds&#039;&#039; and &#039;&#039;HelloWorldControllerHelloWorld&#039;&#039; have to be coded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controlleradmin library&lt;br /&gt;
jimport(&#039;joomla.application.component.controlleradmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorlds extends JControllerAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Proxy for getModel.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getModel($name = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldModel&#039;) &lt;br /&gt;
	{&lt;br /&gt;
		$model = parent::getModel($name, $prefix, array(&#039;ignore_request&#039; =&amp;gt; true));&lt;br /&gt;
		return $model;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controllerform library&lt;br /&gt;
jimport(&#039;joomla.application.component.controllerform&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorld extends JControllerForm&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding an editing view ==&lt;br /&gt;
With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworld/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display method of Hello view&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// get the Data&lt;br /&gt;
		$form = $this-&amp;gt;get(&#039;Form&#039;);&lt;br /&gt;
		$item = $this-&amp;gt;get(&#039;Item&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign the Data&lt;br /&gt;
		$this-&amp;gt;form = $form;&lt;br /&gt;
		$this-&amp;gt;item = $item;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;hidemainmenu&#039;, true);&lt;br /&gt;
		$isNew = ($this-&amp;gt;item-&amp;gt;id == 0);&lt;br /&gt;
		JToolBarHelper::title($isNew ? JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW&#039;)&lt;br /&gt;
		                             : JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT&#039;));&lt;br /&gt;
		JToolBarHelper::save(&#039;helloworld.save&#039;);&lt;br /&gt;
		JToolBarHelper::cancel(&#039;helloworld.cancel&#039;, $isNew ? &#039;JTOOLBAR_CANCEL&#039;&lt;br /&gt;
		                                                   : &#039;JTOOLBAR_CLOSE&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This view will display data using a layout.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/tmpl/edit.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id=&#039; . (int) $this-&amp;gt;item-&amp;gt;id); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;form-horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_DETAILS&#039;); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;form-&amp;gt;getFieldset() as $field): ?&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;control-group&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;control-label&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;label; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;controls&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;input; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;helloworld.edit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding a model and modifying the existing one ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;HelloWorldViewHelloWorld&#039;&#039; view asks form and data from a model. This model has to provide a &#039;&#039;getTable&#039;&#039;, a &#039;&#039;getForm&#039;&#039; method and a &#039;&#039;loadData&#039;&#039; method (called from the &#039;&#039;JModelAdmin&#039;&#039; controller)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla modelform library&lt;br /&gt;
jimport(&#039;joomla.application.component.modeladmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns a reference to the a Table object, always creating it.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	type	The table type to instantiate&lt;br /&gt;
	 * @param	string	A prefix for the table class name. Optional.&lt;br /&gt;
	 * @param	array	Configuration array for model. Optional.&lt;br /&gt;
	 * @return	JTable	A database object&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array()) &lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the record form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	array	$data		Data for the form.&lt;br /&gt;
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.&lt;br /&gt;
	 * @return	mixed	A JForm object on success, false on failure&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForm($data = array(), $loadData = true) &lt;br /&gt;
	{&lt;br /&gt;
		// Get the form.&lt;br /&gt;
		$form = $this-&amp;gt;loadForm(&#039;com_helloworld.helloworld&#039;, &#039;helloworld&#039;,&lt;br /&gt;
		                        array(&#039;control&#039; =&amp;gt; &#039;jform&#039;, &#039;load_data&#039; =&amp;gt; $loadData));&lt;br /&gt;
		if (empty($form)) &lt;br /&gt;
		{&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		return $form;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the data that should be injected in the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	mixed	The data for the form.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function loadFormData() &lt;br /&gt;
	{&lt;br /&gt;
		// Check the session for previously entered form data.&lt;br /&gt;
		$data = JFactory::getApplication()-&amp;gt;getUserState(&#039;com_helloworld.edit.helloworld.data&#039;, array());&lt;br /&gt;
		if (empty($data)) &lt;br /&gt;
		{&lt;br /&gt;
			$data = $this-&amp;gt;getItem();&lt;br /&gt;
		}&lt;br /&gt;
		return $data;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This model inherits from the &#039;&#039;JModelAdmin&#039;&#039; class and uses its &#039;&#039;loadForm&#039;&#039; method. This method searches for forms in the &#039;&#039;forms&#039;&#039; folder. With your favorite file manager and editor, put a file &#039;&#039;admin/models/forms/helloworld.xml&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/forms/helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;id&amp;quot;&lt;br /&gt;
			type=&amp;quot;hidden&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;greeting&amp;quot;&lt;br /&gt;
			type=&amp;quot;text&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL&amp;quot;&lt;br /&gt;
			description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_DESC&amp;quot;&lt;br /&gt;
			size=&amp;quot;40&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
			default=&amp;quot;&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* [[J3.x:Developing a MVC Component/Adding language management#site.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/en-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/en-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#language/en-GB/en-GB.com_helloworld.sys.ini|language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-9-adding-backend-actions.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.9&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- admin languages files section --&amp;gt;&lt;br /&gt;
                        &amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;	&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Adding language management &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|next=Adding decorations to the backend &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:betweenbrain|Matt Thomas]]&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124732</id>
		<title>J3.x:Developing an MVC Component/Adding backend actions</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_backend_actions&amp;diff=124732"/>
		<updated>2014-08-14T11:28:24Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Packaging the component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Adding a toolbar ==&lt;br /&gt;
In Joomla, the administrator interacts generally with components through the use of a toolbar. In the file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; put this content. It will create a basic toolbar and a title for the component.&lt;br /&gt;
&lt;br /&gt;
The arguments used in, for example, JToolBarHelper::addNew is used to set a controller instance which will be used after button is clicked. Further details below in the [[#Adding_specific_controllers | adding specific controllers]] section.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;span id =&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return  mixed  A string if successful, otherwise a JError object.&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		JToolBarHelper::title(JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLDS&#039;));&lt;br /&gt;
		JToolBarHelper::deleteList(&#039;&#039;, &#039;helloworlds.delete&#039;);&lt;br /&gt;
		JToolBarHelper::editList(&#039;helloworld.edit&#039;);&lt;br /&gt;
		JToolBarHelper::addNew(&#039;helloworld.add&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find other classic backend actions in the &#039;&#039;administrator/includes/toolbar.php&#039;&#039; file of your Joomla installation.&lt;br /&gt;
&lt;br /&gt;
Since the view can perform some actions, we have to add some input data. With your favorite file manager and editor, put in the file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;boxchecked&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding specific controllers ==&lt;br /&gt;
Three actions have been added:&lt;br /&gt;
* &#039;&#039;helloworlds.delete&#039;&#039; &lt;br /&gt;
* &#039;&#039;helloworld.edit&#039;&#039;&lt;br /&gt;
* &#039;&#039;helloworld.add&#039;&#039;&lt;br /&gt;
read more about [[JController_and_its_subclass_usage_overview|subcontrollers...]]&lt;br /&gt;
&lt;br /&gt;
These are compound tasks (&#039;&#039;controller&#039;&#039;.&#039;&#039;task&#039;&#039;). So two new controllers &#039;&#039;HelloWorldControllerHelloWorlds&#039;&#039; and &#039;&#039;HelloWorldControllerHelloWorld&#039;&#039; have to be coded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controlleradmin library&lt;br /&gt;
jimport(&#039;joomla.application.component.controlleradmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorlds extends JControllerAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Proxy for getModel.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getModel($name = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldModel&#039;) &lt;br /&gt;
	{&lt;br /&gt;
		$model = parent::getModel($name, $prefix, array(&#039;ignore_request&#039; =&amp;gt; true));&lt;br /&gt;
		return $model;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controllers/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controllers/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controllerform library&lt;br /&gt;
jimport(&#039;joomla.application.component.controllerform&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldControllerHelloWorld extends JControllerForm&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding an editing view ==&lt;br /&gt;
With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworld/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display method of Hello view&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// get the Data&lt;br /&gt;
		$form = $this-&amp;gt;get(&#039;Form&#039;);&lt;br /&gt;
		$item = $this-&amp;gt;get(&#039;Item&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign the Data&lt;br /&gt;
		$this-&amp;gt;form = $form;&lt;br /&gt;
		$this-&amp;gt;item = $item;&lt;br /&gt;
&lt;br /&gt;
		// Set the toolbar&lt;br /&gt;
		$this-&amp;gt;addToolBar();&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Setting the toolbar&lt;br /&gt;
	 */&lt;br /&gt;
	protected function addToolBar() &lt;br /&gt;
	{&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;hidemainmenu&#039;, true);&lt;br /&gt;
		$isNew = ($this-&amp;gt;item-&amp;gt;id == 0);&lt;br /&gt;
		JToolBarHelper::title($isNew ? JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW&#039;)&lt;br /&gt;
		                             : JText::_(&#039;COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT&#039;));&lt;br /&gt;
		JToolBarHelper::save(&#039;helloworld.save&#039;);&lt;br /&gt;
		JToolBarHelper::cancel(&#039;helloworld.cancel&#039;, $isNew ? &#039;JTOOLBAR_CANCEL&#039;&lt;br /&gt;
		                                                   : &#039;JTOOLBAR_CLOSE&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This view will display data using a layout.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworld/tmpl/edit.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworld/tmpl/edit.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&amp;amp;layout=edit&amp;amp;id=&#039; . (int) $this-&amp;gt;item-&amp;gt;id); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;form-horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fieldset class=&amp;quot;adminform&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;legend&amp;gt;&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_DETAILS&#039;); ?&amp;gt;&amp;lt;/legend&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;row-fluid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;span6&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;?php foreach ($this-&amp;gt;form-&amp;gt;getFieldset() as $field): ?&amp;gt;&lt;br /&gt;
                        &amp;lt;div class=&amp;quot;control-group&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;control-label&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;label; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                            &amp;lt;div class=&amp;quot;controls&amp;quot;&amp;gt;&amp;lt;?php echo $field-&amp;gt;input; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                        &amp;lt;/div&amp;gt;&lt;br /&gt;
                    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;task&amp;quot; value=&amp;quot;helloworld.edit&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;?php echo JHtml::_(&#039;form.token&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding a model and modifying the existing one ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;HelloWorldViewHelloWorld&#039;&#039; view asks form and data from a model. This model has to provide a &#039;&#039;getTable&#039;&#039;, a &#039;&#039;getForm&#039;&#039; method and a &#039;&#039;loadData&#039;&#039; method (called from the &#039;&#039;JModelAdmin&#039;&#039; controller)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla modelform library&lt;br /&gt;
jimport(&#039;joomla.application.component.modeladmin&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorld Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorld extends JModelAdmin&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns a reference to the a Table object, always creating it.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	type	The table type to instantiate&lt;br /&gt;
	 * @param	string	A prefix for the table class name. Optional.&lt;br /&gt;
	 * @param	array	Configuration array for model. Optional.&lt;br /&gt;
	 * @return	JTable	A database object&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getTable($type = &#039;HelloWorld&#039;, $prefix = &#039;HelloWorldTable&#039;, $config = array()) &lt;br /&gt;
	{&lt;br /&gt;
		return JTable::getInstance($type, $prefix, $config);&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the record form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param	array	$data		Data for the form.&lt;br /&gt;
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.&lt;br /&gt;
	 * @return	mixed	A JForm object on success, false on failure&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	public function getForm($data = array(), $loadData = true) &lt;br /&gt;
	{&lt;br /&gt;
		// Get the form.&lt;br /&gt;
		$form = $this-&amp;gt;loadForm(&#039;com_helloworld.helloworld&#039;, &#039;helloworld&#039;,&lt;br /&gt;
		                        array(&#039;control&#039; =&amp;gt; &#039;jform&#039;, &#039;load_data&#039; =&amp;gt; $loadData));&lt;br /&gt;
		if (empty($form)) &lt;br /&gt;
		{&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		return $form;&lt;br /&gt;
	}&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to get the data that should be injected in the form.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	mixed	The data for the form.&lt;br /&gt;
	 * @since	2.5&lt;br /&gt;
	 */&lt;br /&gt;
	protected function loadFormData() &lt;br /&gt;
	{&lt;br /&gt;
		// Check the session for previously entered form data.&lt;br /&gt;
		$data = JFactory::getApplication()-&amp;gt;getUserState(&#039;com_helloworld.edit.helloworld.data&#039;, array());&lt;br /&gt;
		if (empty($data)) &lt;br /&gt;
		{&lt;br /&gt;
			$data = $this-&amp;gt;getItem();&lt;br /&gt;
		}&lt;br /&gt;
		return $data;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This model inherits from the &#039;&#039;JModelAdmin&#039;&#039; class and uses its &#039;&#039;loadForm&#039;&#039; method. This method searches for forms in the &#039;&#039;forms&#039;&#039; folder. With your favorite file manager and editor, put a file &#039;&#039;admin/models/forms/helloworld.xml&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/forms/helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/forms/helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;fieldset&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;id&amp;quot;&lt;br /&gt;
			type=&amp;quot;hidden&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
		&amp;lt;field&lt;br /&gt;
			name=&amp;quot;greeting&amp;quot;&lt;br /&gt;
			type=&amp;quot;text&amp;quot;&lt;br /&gt;
			label=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL&amp;quot;&lt;br /&gt;
			description=&amp;quot;COM_HELLOWORLD_HELLOWORLD_GREETING_DESC&amp;quot;&lt;br /&gt;
			size=&amp;quot;40&amp;quot;&lt;br /&gt;
			class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
			default=&amp;quot;&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
	&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* [[J3.x:Developing a MVC Component/Adding language management#site.2Flanguage.2Fen-GB.2Fen-GB.com_helloworld.ini|site/language/en-GB/en-GB.com_helloworld.ini]]&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/models/forms/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/forms/helloworld.xml|admin/models/forms/helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworld.php|admin/controllers/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/controllers/helloworlds.php|admin/controllers/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/models/helloworlds.php|admin/controllers/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/view.html.php|admin/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_backend_actions#admin/views/helloworld/tmpl/edit.php|admin/views/helloworld/tmpl/edit.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Basic_backend#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/index.html|admin/language/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/index.html|admin/language/en-GB/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/en-GB.com_helloworld.ini|admin/language/en-GB/en-GB.com_helloworld.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/language/en-GB/en-GB.com_helloworld.sys.ini|admin/language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#language/en-GB/en-GB.com_helloworld.sys.ini|language/en-GB/en-GB.com_helloworld.sys.ini]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-9-adding-backend-actions.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.9&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;COM_HELLOWORLD_DESCRIPTION&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;COM_HELLOWORLD_MENU&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- tables files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- models files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- admin languages files section --&amp;gt;&lt;br /&gt;
                        &amp;lt;folder&amp;gt;language&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- controllers files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;controllers&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;	&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Adding language management &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|next=Adding decorations to the backend &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:betweenbrain|Matt Thomas]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124730</id>
		<title>J3.x:Developing an MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124730"/>
		<updated>2014-08-13T07:13:39Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|3.2}}&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!3.1 - Contents}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing_a_MVC_Component|Developing a Model-View-Controller (MVC) Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
In the Joomla!3.x framework, third party component authors divide their code into three main parts:&lt;br /&gt;
* &#039;&#039;models&#039;&#039; They manage the data &lt;br /&gt;
* &#039;&#039;controllers&#039;&#039; They perform tasks, set and get the states of the models and ask the views to display&lt;br /&gt;
* &#039;&#039;views&#039;&#039; They display the content according to the type (&#039;&#039;error&#039;&#039;, &#039;&#039;feed&#039;&#039;, &#039;&#039;html&#039;&#039;, &#039;&#039;json&#039;&#039;, &#039;&#039;raw&#039;&#039;, &#039;&#039;xml&#039;&#039;) and the layout chosen by the controllers&lt;br /&gt;
&lt;br /&gt;
== Setting the controller ==&lt;br /&gt;
In the core code of Joomla, there is a class able to manage controllers: &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html JControllerLegacy]&#039;&#039;. This class has to be extended to be used in our component. In the file &#039;&#039;yoursite/components/com_helloworld/helloworld.php&#039;&#039; (entry point of our &#039;&#039;Hello World&#039;&#039; component), put these lines:&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html#method_getInstance getInstance]&#039;&#039; static method of the &#039;&#039;JControllerLegacy&#039;&#039; class will create a controller. In the code above, it will instantiate a controller object of a class named &#039;&#039;HelloWorldController&#039;&#039;. Joomla will look for the declaration of that class in an aptly named file called &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; (it&#039;s a default behavior).&lt;br /&gt;
&lt;br /&gt;
Now, &#039;&#039;controller.php&#039;&#039; needs to be created and &#039;&#039;HelloWorldController&#039;&#039; needs to be declared and defined. So with your favorite file manager and editor, create a &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; file containing&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/controller.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello World Component Controller&lt;br /&gt;
 *&lt;br /&gt;
 * @since   0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When no task is given in the request variables, the default task will be executed. It&#039;s the &#039;&#039;display&#039;&#039; task by default. The &#039;&#039;JControllerLegacy&#039;&#039; class has such a task. In our example, it will display a view named &#039;&#039;HelloWorld&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
So with &#039;&#039;task&#039;&#039; simply a public function display() of &#039;&#039;JControllerLegacy&#039;&#039; is refered to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tip|Just a side note for completion, you could call another function aside from &#039;&#039;display()&#039;&#039; by using an URL like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/index.php?option=com_helloworld&amp;amp;task=insert&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would try to call a function &#039;&#039;insert()&#039;&#039; of our controller (which we would actually have to implement in &#039;&#039;HelloWorldController&#039;&#039; ).}}&lt;br /&gt;
&lt;br /&gt;
== Setting the view ==&lt;br /&gt;
&lt;br /&gt;
When JControllerLegacy wants to display a view, it will look for certain files in the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder. &lt;br /&gt;
&lt;br /&gt;
The name of the folder of the default view is the name of the component itself. In our case the path is &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file that will contain the code of the view is called &#039;&#039;view.[view_mode].php&#039;&#039;. The default view mode, and probably the only view a component might need is the &#039;&#039;html&#039;&#039; mode. So this give us our file name which is &#039;&#039;view.html.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/view.html.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* HTML View class for the HelloWorld Component&lt;br /&gt;
*&lt;br /&gt;
* @since 0.0.1&lt;br /&gt;
*/&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
         * Display the Hello World view&lt;br /&gt;
         *&lt;br /&gt;
         * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
         *&lt;br /&gt;
         * @return  void&lt;br /&gt;
         */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;msg = &#039;Hello World&#039;;&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;display&#039;&#039; method of the &#039;&#039;[http://api.joomla.org/cms-3/classes/JViewLegacy.html JViewLegacy]&#039;&#039; class is called with the &#039;&#039;display&#039;&#039; task of the JControllerLegacy class. In our case, this method will display data using the &#039;&#039;tmpl/default.php&#039;&#039; file. With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/tmpl/default.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;msg; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template file will be included by the JViewLegacy class. Therefore, here, $this refers to the HelloWorldViewHelloWorld class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So to give an example, one could call the view inside the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;lt;/code&amp;gt; (this would default to the &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039; folder) or we could explicitly call the folder by calling: &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if we change &amp;lt;code&amp;gt;&amp;amp;view=helloworld&amp;lt;/code&amp;gt; to something else, e.g. &amp;lt;code&amp;gt;&amp;amp;view=fluffy&amp;lt;/code&amp;gt; we would have to create a folder &amp;lt;code&amp;gt;components/com_helloworld/views/fluffy/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;views/helloworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;views/fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The classname of the file &amp;lt;code&amp;gt;view.html.php&amp;lt;/code&amp;gt; of the fluffy folder would be &#039;&#039;HelloWorldViewFluffy&#039;&#039;. Afterwards you can customize the contents of &#039;&#039;default.php&#039;&#039; of the &#039;&#039;fluffy&#039;&#039; subfolder for custom output and see the output by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58226/com_helloworld-1.6-part02.zip archive] and install it using the extension manager of Joomla. You can test this basic component by putting &#039;&#039;index.php?option=com_helloworld&#039;&#039; in your browser address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.2&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql/&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Result:&#039;&#039;&#039;&lt;br /&gt;
You will see by default the message contained in the variable &#039;&#039;$this-&amp;gt;msg&#039;&#039; in the &#039;&#039;view.html.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate|prev=Developing a Basic Component|next=Adding a menu type to the site part}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Component Development]] [[Category:Joomla! 3.0]] [[Category:Joomla! 3.1]][[Category:Joomla! 3.2]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=124728</id>
		<title>J3.x:Developing an MVC Component/Basic backend</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=124728"/>
		<updated>2014-08-13T06:44:54Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
This is a multiple-article series of tutorials on how to develop a Model-View-Contoller [[Component]] for Joomla! Version {{JVer|{{CurrentSTSVer|minor}}}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Basic backend ==&lt;br /&gt;
Designing the backend interface leads us to create at least a Model-View-Controller triptych. We have to modify the administrator entry point of our component, the &#039;&#039;admin/helloworld.php&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
 &lt;br /&gt;
// import joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
 &lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
 &lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create the general controller ==&lt;br /&gt;
The entry point now gets an instance of a &#039;&#039;HelloWorld&#039;&#039; prefixed controller. Let&#039;s create a basic controller for the administrator part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controller.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controller.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
 &lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * General Controller of HelloWorld component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display task&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($cachable = false, $urlparams = false) &lt;br /&gt;
	{&lt;br /&gt;
		// set default view if not set&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;view&#039;, $input-&amp;gt;getCmd(&#039;view&#039;, &#039;HelloWorlds&#039;));&lt;br /&gt;
 &lt;br /&gt;
		// call parent behavior&lt;br /&gt;
		parent::display($cachable);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This controller will display the &#039;HelloWorlds&#039; view by default.&lt;br /&gt;
&lt;br /&gt;
== Create the view ==&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Joomla, views display data using layout. With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This layout calls several sub-layout (&#039;&#039;head&#039;&#039;, &#039;&#039;foot&#039;&#039; and &#039;&#039;body&#039;&#039;). Each sub-layout corresponds to a file prefixed by the name of the main layout (&#039;&#039;default&#039;&#039;), and an underscore.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_head.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;grid.checkall&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;&#039; and &#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;&#039; are placeholders which will later be replaced with language-specific text. The [http://api.joomla.org/cms-3/classes/JText.html JText::_] method translates a string into the current language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;checkAll&#039;&#039; is a javascript function defined in the Joomla core able to check all items.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_body.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach($this-&amp;gt;items as $i =&amp;gt; $item): ?&amp;gt;&lt;br /&gt;
	&amp;lt;tr class=&amp;quot;row&amp;lt;?php echo $i % 2; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo JHtml::_(&#039;grid.id&#039;, $i, $item-&amp;gt;id); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;greeting; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;id; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JHtml::_&#039;&#039; is a helper function able to display several HTML output. In this case, it will display a checkbox for the item.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_foot.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JPagination&#039;&#039; is a Joomla class able to manage and display pagination object.&lt;br /&gt;
&lt;br /&gt;
== Create the model ==&lt;br /&gt;
The &#039;&#039;HelloWorlds&#039;&#039; view asks the model for data. In Joomla, there is a class able to manage a list of data: &#039;&#039;JModelList&#039;&#039;. Class &#039;&#039;JModelList&#039;&#039; and inherited classes need only one method:&lt;br /&gt;
* &#039;&#039;getListQuery&#039;&#039; which constructs an SQL query&lt;br /&gt;
&lt;br /&gt;
and two states:&lt;br /&gt;
* &#039;&#039;list.start&#039;&#039; for determining the list offset&lt;br /&gt;
* &#039;&#039;list.limit&#039;&#039; for determining the list length&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;getItems&#039;&#039; and &#039;&#039;getPagination&#039;&#039; methods are defined in JModelList class. They don&#039;t need to be defined in the &#039;&#039;HelloWorldModelHelloWorlds&#039;&#039; class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
// import the Joomla modellist library&lt;br /&gt;
jimport(&#039;joomla.application.component.modellist&#039;);&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorldList Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorlds extends JModelList&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to build an SQL query to load the list data.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string	An SQL query&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getListQuery()&lt;br /&gt;
	{&lt;br /&gt;
		// Create a new query object.		&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
		// Select some fields from the hello table&lt;br /&gt;
		$query&lt;br /&gt;
		    -&amp;gt;select(&#039;id,greeting&#039;)&lt;br /&gt;
		    -&amp;gt;from(&#039;#__helloworld&#039;);&lt;br /&gt;
		&lt;br /&gt;
		return $query;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;_populateState&#039;&#039; method is, by default, automatically called when a state is read by the &#039;&#039;getState&#039;&#039; method.&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-7-basic-backend.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2014&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.7&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;		&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can see in your component &#039;&#039;&#039;hello-world&#039;&#039;&#039; an array with two colums, two rows and checkboxes. You can click the checkboxes in order to select the different options you want.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Using the database &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
|next=Adding language management &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:Gunjanpatel|Gunjan Patel]]&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:presto|Preston Smith]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=User:Gunjanpatel&amp;diff=124727</id>
		<title>User:Gunjanpatel</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=User:Gunjanpatel&amp;diff=124727"/>
		<updated>2014-08-13T06:44:22Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: Created page with &amp;quot; I  am [http://about.me/patelgunjan Gunjan Patel] from Ahmedabad, Gujarat, India. I am an active contributor and volunteer of Joomla! Project. Among others, my roles are:  B...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
I  am [http://about.me/patelgunjan Gunjan Patel] from Ahmedabad, Gujarat, India. I am an active contributor and volunteer of Joomla! Project. Among others, my roles are:  [[Bug Squad Coding Team|Joomla! Bug Squad member]], [[GSOC 2014|Google Summer Of Code (GSoC) 2014 ]] mentor, Founder of Joomla! User Network Ahmedabad ([http://community.joomla.org/user-groups/asia-pacific/india/joomla-user-group-gujarat.html JUGAhmedabad]), [https://github.com/joomla-projects/com_localise com_localise] component helper and Gujarati Translator, Joomla! Event Speaker.&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=124725</id>
		<title>J3.x:Developing an MVC Component/Basic backend</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Basic_backend&amp;diff=124725"/>
		<updated>2014-08-13T06:24:33Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: JText API link Corrected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:J3.1:Developing a MVC Component}}&lt;br /&gt;
&lt;br /&gt;
{{review}}&lt;br /&gt;
&lt;br /&gt;
This is a multiple-article series of tutorials on how to develop a Model-View-Contoller [[Component]] for Joomla! Version {{JVer|{{CurrentSTSVer|minor}}}}.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing a MVC Component | Developing a MVC Component for Joomla! 3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
== Basic backend ==&lt;br /&gt;
Designing the backend interface leads us to create at least a Model-View-Controller triptych. We have to modify the administrator entry point of our component, the &#039;&#039;admin/helloworld.php&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/helloworld.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/helloworld.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
 &lt;br /&gt;
// import joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
 &lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
 &lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create the general controller ==&lt;br /&gt;
The entry point now gets an instance of a &#039;&#039;HelloWorld&#039;&#039; prefixed controller. Let&#039;s create a basic controller for the administrator part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/controller.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/controller.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
 &lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
 &lt;br /&gt;
/**&lt;br /&gt;
 * General Controller of HelloWorld component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * display task&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($cachable = false, $urlparams = false) &lt;br /&gt;
	{&lt;br /&gt;
		// set default view if not set&lt;br /&gt;
		$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
		$input-&amp;gt;set(&#039;view&#039;, $input-&amp;gt;getCmd(&#039;view&#039;, &#039;HelloWorlds&#039;));&lt;br /&gt;
 &lt;br /&gt;
		// call parent behavior&lt;br /&gt;
		parent::display($cachable);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This controller will display the &#039;HelloWorlds&#039; view by default.&lt;br /&gt;
&lt;br /&gt;
== Create the view ==&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039; containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/view.html.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/view.html.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorlds View&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorlds extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * HelloWorlds view display method&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Get data from the model&lt;br /&gt;
		$items = $this-&amp;gt;get(&#039;Items&#039;);&lt;br /&gt;
		$pagination = $this-&amp;gt;get(&#039;Pagination&#039;);&lt;br /&gt;
&lt;br /&gt;
		// Check for errors.&lt;br /&gt;
		if (count($errors = $this-&amp;gt;get(&#039;Errors&#039;))) &lt;br /&gt;
		{&lt;br /&gt;
			JError::raiseError(500, implode(&#039;&amp;lt;br /&amp;gt;&#039;, $errors));&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;items = $items;&lt;br /&gt;
		$this-&amp;gt;pagination = $pagination;&lt;br /&gt;
&lt;br /&gt;
		// Display the template&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Joomla, views display data using layout. With your favorite file manager and editor, put a file &#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
// load tooltip behavior&lt;br /&gt;
JHtml::_(&#039;behavior.tooltip&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_helloworld&#039;); ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;table class=&amp;quot;adminlist&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;thead&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;head&#039;);?&amp;gt;&amp;lt;/thead&amp;gt;&lt;br /&gt;
		&amp;lt;tfoot&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;foot&#039;);?&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
		&amp;lt;tbody&amp;gt;&amp;lt;?php echo $this-&amp;gt;loadTemplate(&#039;body&#039;);?&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
	&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This layout calls several sub-layout (&#039;&#039;head&#039;&#039;, &#039;&#039;foot&#039;&#039; and &#039;&#039;body&#039;&#039;). Each sub-layout corresponds to a file prefixed by the name of the main layout (&#039;&#039;default&#039;&#039;), and an underscore.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_head.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_head.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JHtml::_(&#039;grid.checkall&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
	&amp;lt;th width=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php echo JText::_(&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_ID&#039;&#039; and &#039;&#039;COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING&#039;&#039; are placeholders which will later be replaced with language-specific text. The [http://api.joomla.org/cms-3/classes/JText.html JText::_] method translates a string into the current language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;checkAll&#039;&#039; is a javascript function defined in the Joomla core able to check all items.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_body.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_body.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach($this-&amp;gt;items as $i =&amp;gt; $item): ?&amp;gt;&lt;br /&gt;
	&amp;lt;tr class=&amp;quot;row&amp;lt;?php echo $i % 2; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo JHtml::_(&#039;grid.id&#039;, $i, $item-&amp;gt;id); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;greeting; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;td&amp;gt;&lt;br /&gt;
			&amp;lt;?php echo $item-&amp;gt;id; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/td&amp;gt;&lt;br /&gt;
	&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JHtml::_&#039;&#039; is a helper function able to display several HTML output. In this case, it will display a checkbox for the item.&lt;br /&gt;
&lt;br /&gt;
Put a file &#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039; containing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/views/helloworlds/tmpl/default_foot.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/views/helloworlds/tmpl/default_foot.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
	&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;pagination-&amp;gt;getListFooter(); ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JPagination&#039;&#039; is a Joomla class able to manage and display pagination object.&lt;br /&gt;
&lt;br /&gt;
== Create the model ==&lt;br /&gt;
The &#039;&#039;HelloWorlds&#039;&#039; view asks the model for data. In Joomla, there is a class able to manage a list of data: &#039;&#039;JModelList&#039;&#039;. Class &#039;&#039;JModelList&#039;&#039; and inherited classes need only one method:&lt;br /&gt;
* &#039;&#039;getListQuery&#039;&#039; which constructs an SQL query&lt;br /&gt;
&lt;br /&gt;
and two states:&lt;br /&gt;
* &#039;&#039;list.start&#039;&#039; for determining the list offset&lt;br /&gt;
* &#039;&#039;list.limit&#039;&#039; for determining the list length&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;getItems&#039;&#039; and &#039;&#039;getPagination&#039;&#039; methods are defined in JModelList class. They don&#039;t need to be defined in the &#039;&#039;HelloWorldModelHelloWorlds&#039;&#039; class.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;admin/models/helloworlds.php&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;admin/models/helloworlds.php&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
// import the Joomla modellist library&lt;br /&gt;
jimport(&#039;joomla.application.component.modellist&#039;);&lt;br /&gt;
/**&lt;br /&gt;
 * HelloWorldList Model&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldModelHelloWorlds extends JModelList&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Method to build an SQL query to load the list data.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return	string	An SQL query&lt;br /&gt;
	 */&lt;br /&gt;
	protected function getListQuery()&lt;br /&gt;
	{&lt;br /&gt;
		// Create a new query object.		&lt;br /&gt;
		$db = JFactory::getDBO();&lt;br /&gt;
		$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
		// Select some fields from the hello table&lt;br /&gt;
		$query&lt;br /&gt;
		    -&amp;gt;select(&#039;id,greeting&#039;)&lt;br /&gt;
		    -&amp;gt;from(&#039;#__helloworld&#039;);&lt;br /&gt;
		&lt;br /&gt;
		return $query;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;_populateState&#039;&#039; method is, by default, automatically called when a state is read by the &#039;&#039;getState&#039;&#039; method.&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Adding_a_view_to_the_site_part#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#site/models/helloworld.php|site/models/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/controller.php|admin/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/install.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/uninstall.mysql.utf8.sql|admin/sql/uninstall.mysql.utf8.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/sql/install.mysql.utf8.sql|admin/sql/updates/mysql/0.0.6.sql]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/models/fields/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/models/fields/helloworld.php|admin/models/fields/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/models/helloworlds.php|admin/models/helloworlds.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/view.html.php|admin/views/helloworlds/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/views/helloworlds/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default.php|admin/views/helloworlds/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_head.php|admin/views/helloworlds/tmpl/default_head.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_body.php|admin/views/helloworlds/tmpl/default_body.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#admin/views/helloworlds/tmpl/default_foot.php|admin/views/helloworlds/tmpl/default_foot.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/tables/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Using_the_database#admin/tables/helloworld.php|admin/tables/helloworld.php]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [https://github.com/joomla/Joomla-3.2-Hello-World-Component/archive/step-7-basic-backend.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;3.2.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;January 2014&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.7&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;install&amp;gt; &amp;lt;!-- Runs on install --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/install.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/install&amp;gt;&lt;br /&gt;
	&amp;lt;uninstall&amp;gt; &amp;lt;!-- Runs on uninstall --&amp;gt;&lt;br /&gt;
		&amp;lt;sql&amp;gt;&lt;br /&gt;
			&amp;lt;file driver=&amp;quot;mysql&amp;quot; charset=&amp;quot;utf8&amp;quot;&amp;gt;sql/uninstall.mysql.utf8.sql&amp;lt;/file&amp;gt;&lt;br /&gt;
		&amp;lt;/sql&amp;gt;&lt;br /&gt;
	&amp;lt;/uninstall&amp;gt;&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;tables&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;models&amp;lt;/folder&amp;gt;&lt;br /&gt;
			&amp;lt;!-- views files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;		&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can see in your component &#039;&#039;&#039;hello-world&#039;&#039;&#039; an array with two colums, two rows and checkboxes. You can click the checkboxes in order to select the different options you want.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate&lt;br /&gt;
|prev=Using the database &amp;lt;!-- previous article subpage name --&amp;gt;&lt;br /&gt;
|next=Adding language management &amp;lt;!-- next article subpage name --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
*[[User:presto|Preston Smith]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124722</id>
		<title>J3.x:Developing an MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124722"/>
		<updated>2014-08-11T06:30:47Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Correcting based on coding standard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|3.2}}&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!3.1 - Contents}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing_a_MVC_Component|Developing a Model-View-Controller (MVC) Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
In the Joomla!3.x framework, third party component authors divide their code into three main parts:&lt;br /&gt;
* &#039;&#039;models&#039;&#039; They manage the data &lt;br /&gt;
* &#039;&#039;controllers&#039;&#039; They perform tasks, set and get the states of the models and ask the views to display&lt;br /&gt;
* &#039;&#039;views&#039;&#039; They display the content according to the type (&#039;&#039;error&#039;&#039;, &#039;&#039;feed&#039;&#039;, &#039;&#039;html&#039;&#039;, &#039;&#039;json&#039;&#039;, &#039;&#039;raw&#039;&#039;, &#039;&#039;xml&#039;&#039;) and the layout chosen by the controllers&lt;br /&gt;
&lt;br /&gt;
== Setting the controller ==&lt;br /&gt;
In the core code of Joomla, there is a class able to manage controllers: &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html JControllerLegacy]&#039;&#039;. This class has to be extended to be used in our component. In the file &#039;&#039;yoursite/components/com_helloworld/helloworld.php&#039;&#039; (entry point of our &#039;&#039;Hello World&#039;&#039; component), put these lines:&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html#method_getInstance getInstance]&#039;&#039; static method of the &#039;&#039;JControllerLegacy&#039;&#039; class will create a controller. In the code above, it will instantiate a controller object of a class named &#039;&#039;HelloWorldController&#039;&#039;. Joomla will look for the declaration of that class in an aptly named file called &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; (it&#039;s a default behavior).&lt;br /&gt;
&lt;br /&gt;
Now, &#039;&#039;controller.php&#039;&#039; needs to be created and &#039;&#039;HelloWorldController&#039;&#039; needs to be declared and defined. So with your favorite file manager and editor, create a &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; file containing&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/controller.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello World Component Controller&lt;br /&gt;
 *&lt;br /&gt;
 * @since   0.0.1&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When no task is given in the request variables, the default task will be executed. It&#039;s the &#039;&#039;display&#039;&#039; task by default. The &#039;&#039;JControllerLegacy&#039;&#039; class has such a task. In our example, it will display a view named &#039;&#039;HelloWorld&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
So with &#039;&#039;task&#039;&#039; simply a public function display() of &#039;&#039;JControllerLegacy&#039;&#039; is refered to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tip|Just a side note for completion, you could call another function aside from &#039;&#039;display()&#039;&#039; by using an URL like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/index.php?option=com_helloworld&amp;amp;task=insert&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would try to call a function &#039;&#039;insert()&#039;&#039; of our controller (which we would actually have to implement in &#039;&#039;HelloWorldController&#039;&#039; ).}}&lt;br /&gt;
&lt;br /&gt;
== Setting the view ==&lt;br /&gt;
&lt;br /&gt;
When JControllerLegacy wants to display a view, it will look for certain files in the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder. &lt;br /&gt;
&lt;br /&gt;
The name of the folder of the default view is the name of the component itself. In our case the path is &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file that will contain the code of the view is called &#039;&#039;view.[view_mode].php&#039;&#039;. The default view mode, and probably the only view a component might need is the &#039;&#039;html&#039;&#039; mode. So this give us our file name which is &#039;&#039;view.html.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/view.html.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* HTML View class for the HelloWorld Component&lt;br /&gt;
*&lt;br /&gt;
* @since 0.0.1&lt;br /&gt;
*/&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
         * Display the Hello World view&lt;br /&gt;
         *&lt;br /&gt;
         * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
         *&lt;br /&gt;
         * @return  void&lt;br /&gt;
         */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;msg = &#039;Hello World&#039;;&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;display&#039;&#039; method of the &#039;&#039;[http://api.joomla.org/cms-3/classes/JViewLegacy.html JViewLegacy]&#039;&#039; class is called with the &#039;&#039;display&#039;&#039; task of the JControllerLegacy class. In our case, this method will display data using the &#039;&#039;tmpl/default.php&#039;&#039; file. With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/tmpl/default.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;msg; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template file will be included by the JViewLegacy class. Therefore, here, $this refers to the HelloWorldViewHelloWorld class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So to give an example, one could call the view inside the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;lt;/code&amp;gt; (this would default to the &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039; folder) or we could explicitly call the folder by calling: &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if we change &amp;lt;code&amp;gt;&amp;amp;view=helloworld&amp;lt;/code&amp;gt; to something else, e.g. &amp;lt;code&amp;gt;&amp;amp;view=fluffy&amp;lt;/code&amp;gt; we would have to create a folder &amp;lt;code&amp;gt;components/com_helloworld/views/fluffy/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;views/helloworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;views/fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The classname of the file &amp;lt;code&amp;gt;view.html.php&amp;lt;/code&amp;gt; of the fluffy folder would be &#039;&#039;HelloWorldViewFluffy&#039;&#039;. Afterwards you can customize the contents of &#039;&#039;default.php&#039;&#039; of the &#039;&#039;fluffy&#039;&#039; subfolder for custom output and see the output by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58226/com_helloworld-1.6-part02.zip archive] and install it using the extension manager of Joomla. You can test this basic component by putting &#039;&#039;index.php?option=com_helloworld&#039;&#039; in your browser address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.2&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql/&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Result:&#039;&#039;&#039;&lt;br /&gt;
You will see by default the message contained in the variable &#039;&#039;$this-&amp;gt;msg&#039;&#039; in the &#039;&#039;view.html.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate|prev=Developing a Basic Component|next=Adding a menu type to the site part}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Component Development]] [[Category:Joomla! 3.0]] [[Category:Joomla! 3.1]][[Category:Joomla! 3.2]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124721</id>
		<title>J3.x:Developing an MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124721"/>
		<updated>2014-08-11T05:58:17Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Setting the view */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|3.2}}&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!3.1 - Contents}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing_a_MVC_Component|Developing a Model-View-Controller (MVC) Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
In the Joomla!3.x framework, third party component authors divide their code into three main parts:&lt;br /&gt;
* &#039;&#039;models&#039;&#039; They manage the data &lt;br /&gt;
* &#039;&#039;controllers&#039;&#039; They perform tasks, set and get the states of the models and ask the views to display&lt;br /&gt;
* &#039;&#039;views&#039;&#039; They display the content according to the type (&#039;&#039;error&#039;&#039;, &#039;&#039;feed&#039;&#039;, &#039;&#039;html&#039;&#039;, &#039;&#039;json&#039;&#039;, &#039;&#039;raw&#039;&#039;, &#039;&#039;xml&#039;&#039;) and the layout chosen by the controllers&lt;br /&gt;
&lt;br /&gt;
== Setting the controller ==&lt;br /&gt;
In the core code of Joomla, there is a class able to manage controllers: &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html JControllerLegacy]&#039;&#039;. This class has to be extended to be used in our component. In the file &#039;&#039;yoursite/components/com_helloworld/helloworld.php&#039;&#039; (entry point of our &#039;&#039;Hello World&#039;&#039; component), put these lines:&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html#method_getInstance getInstance]&#039;&#039; static method of the &#039;&#039;JControllerLegacy&#039;&#039; class will create a controller. In the code above, it will instantiate a controller object of a class named &#039;&#039;HelloWorldController&#039;&#039;. Joomla will look for the declaration of that class in an aptly named file called &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; (it&#039;s a default behavior).&lt;br /&gt;
&lt;br /&gt;
Now, &#039;&#039;controller.php&#039;&#039; needs to be created and &#039;&#039;HelloWorldController&#039;&#039; needs to be declared and defined. So with your favorite file manager and editor, create a &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; file containing&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/controller.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello World Component Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When no task is given in the request variables, the default task will be executed. It&#039;s the &#039;&#039;display&#039;&#039; task by default. The &#039;&#039;JControllerLegacy&#039;&#039; class has such a task. In our example, it will display a view named &#039;&#039;HelloWorld&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
So with &#039;&#039;task&#039;&#039; simply a public function display() of &#039;&#039;JControllerLegacy&#039;&#039; is refered to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tip|Just a side note for completion, you could call another function aside from &#039;&#039;display()&#039;&#039; by using an URL like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/index.php?option=com_helloworld&amp;amp;task=insert&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would try to call a function &#039;&#039;insert()&#039;&#039; of our controller (which we would actually have to implement in &#039;&#039;HelloWorldController&#039;&#039; ).}}&lt;br /&gt;
&lt;br /&gt;
== Setting the view ==&lt;br /&gt;
&lt;br /&gt;
When JControllerLegacy wants to display a view, it will look for certain files in the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder. &lt;br /&gt;
&lt;br /&gt;
The name of the folder of the default view is the name of the component itself. In our case the path is &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file that will contain the code of the view is called &#039;&#039;view.[view_mode].php&#039;&#039;. The default view mode, and probably the only view a component might need is the &#039;&#039;html&#039;&#039; mode. So this give us our file name which is &#039;&#039;view.html.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/view.html.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* HTML View class for the HelloWorld Component&lt;br /&gt;
*&lt;br /&gt;
* @since 0.0.1&lt;br /&gt;
*/&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
         * Display the Hello World view&lt;br /&gt;
         *&lt;br /&gt;
         * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.&lt;br /&gt;
         *&lt;br /&gt;
         * @return  void&lt;br /&gt;
         */&lt;br /&gt;
	public function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;msg = &#039;Hello World&#039;;&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;display&#039;&#039; method of the &#039;&#039;[http://api.joomla.org/cms-3/classes/JViewLegacy.html JViewLegacy]&#039;&#039; class is called with the &#039;&#039;display&#039;&#039; task of the JControllerLegacy class. In our case, this method will display data using the &#039;&#039;tmpl/default.php&#039;&#039; file. With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/tmpl/default.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;msg; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template file will be included by the JViewLegacy class. Therefore, here, $this refers to the HelloWorldViewHelloWorld class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So to give an example, one could call the view inside the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;lt;/code&amp;gt; (this would default to the &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039; folder) or we could explicitly call the folder by calling: &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if we change &amp;lt;code&amp;gt;&amp;amp;view=helloworld&amp;lt;/code&amp;gt; to something else, e.g. &amp;lt;code&amp;gt;&amp;amp;view=fluffy&amp;lt;/code&amp;gt; we would have to create a folder &amp;lt;code&amp;gt;components/com_helloworld/views/fluffy/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;views/helloworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;views/fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The classname of the file &amp;lt;code&amp;gt;view.html.php&amp;lt;/code&amp;gt; of the fluffy folder would be &#039;&#039;HelloWorldViewFluffy&#039;&#039;. Afterwards you can customize the contents of &#039;&#039;default.php&#039;&#039; of the &#039;&#039;fluffy&#039;&#039; subfolder for custom output and see the output by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58226/com_helloworld-1.6-part02.zip archive] and install it using the extension manager of Joomla. You can test this basic component by putting &#039;&#039;index.php?option=com_helloworld&#039;&#039; in your browser address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.2&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql/&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Result:&#039;&#039;&#039;&lt;br /&gt;
You will see by default the message contained in the variable &#039;&#039;$this-&amp;gt;msg&#039;&#039; in the &#039;&#039;view.html.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate|prev=Developing a Basic Component|next=Adding a menu type to the site part}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Component Development]] [[Category:Joomla! 3.0]] [[Category:Joomla! 3.1]][[Category:Joomla! 3.2]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124720</id>
		<title>J3.x:Developing an MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124720"/>
		<updated>2014-08-11T05:52:41Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Setting the controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|3.2}}&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!3.1 - Contents}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing_a_MVC_Component|Developing a Model-View-Controller (MVC) Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
In the Joomla!3.x framework, third party component authors divide their code into three main parts:&lt;br /&gt;
* &#039;&#039;models&#039;&#039; They manage the data &lt;br /&gt;
* &#039;&#039;controllers&#039;&#039; They perform tasks, set and get the states of the models and ask the views to display&lt;br /&gt;
* &#039;&#039;views&#039;&#039; They display the content according to the type (&#039;&#039;error&#039;&#039;, &#039;&#039;feed&#039;&#039;, &#039;&#039;html&#039;&#039;, &#039;&#039;json&#039;&#039;, &#039;&#039;raw&#039;&#039;, &#039;&#039;xml&#039;&#039;) and the layout chosen by the controllers&lt;br /&gt;
&lt;br /&gt;
== Setting the controller ==&lt;br /&gt;
In the core code of Joomla, there is a class able to manage controllers: &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html JControllerLegacy]&#039;&#039;. This class has to be extended to be used in our component. In the file &#039;&#039;yoursite/components/com_helloworld/helloworld.php&#039;&#039; (entry point of our &#039;&#039;Hello World&#039;&#039; component), put these lines:&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html#method_getInstance getInstance]&#039;&#039; static method of the &#039;&#039;JControllerLegacy&#039;&#039; class will create a controller. In the code above, it will instantiate a controller object of a class named &#039;&#039;HelloWorldController&#039;&#039;. Joomla will look for the declaration of that class in an aptly named file called &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; (it&#039;s a default behavior).&lt;br /&gt;
&lt;br /&gt;
Now, &#039;&#039;controller.php&#039;&#039; needs to be created and &#039;&#039;HelloWorldController&#039;&#039; needs to be declared and defined. So with your favorite file manager and editor, create a &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; file containing&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/controller.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello World Component Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When no task is given in the request variables, the default task will be executed. It&#039;s the &#039;&#039;display&#039;&#039; task by default. The &#039;&#039;JControllerLegacy&#039;&#039; class has such a task. In our example, it will display a view named &#039;&#039;HelloWorld&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
So with &#039;&#039;task&#039;&#039; simply a public function display() of &#039;&#039;JControllerLegacy&#039;&#039; is refered to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tip|Just a side note for completion, you could call another function aside from &#039;&#039;display()&#039;&#039; by using an URL like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/index.php?option=com_helloworld&amp;amp;task=insert&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would try to call a function &#039;&#039;insert()&#039;&#039; of our controller (which we would actually have to implement in &#039;&#039;HelloWorldController&#039;&#039; ).}}&lt;br /&gt;
&lt;br /&gt;
== Setting the view ==&lt;br /&gt;
&lt;br /&gt;
When JControllerLegacy wants to display a view, it will look for certain files in the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder. &lt;br /&gt;
&lt;br /&gt;
The name of the folder of the default view is the name of the component itself. In our case the path is &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file that will contain the code of the view is called &#039;&#039;view.[view_mode].php&#039;&#039;. The default view mode, and probably the only view a component might need is the &#039;&#039;html&#039;&#039; mode. So this give us our file name which is &#039;&#039;view.html.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/view.html.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HTML View class for the HelloWorld Component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	// Overwriting JView display method&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;msg = &#039;Hello World&#039;;&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;display&#039;&#039; method of the &#039;&#039;[http://api.joomla.org/cms-3/classes/JViewLegacy.html JViewLegacy]&#039;&#039; class is called with the &#039;&#039;display&#039;&#039; task of the JControllerLegacy class. In our case, this method will display data using the &#039;&#039;tmpl/default.php&#039;&#039; file. With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/tmpl/default.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;msg; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template file will be included by the JViewLegacy class. Therefore, here, $this refers to the HelloWorldViewHelloWorld class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So to give an example, one could call the view inside the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;lt;/code&amp;gt; (this would default to the &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039; folder) or we could explicitly call the folder by calling: &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if we change &amp;lt;code&amp;gt;&amp;amp;view=helloworld&amp;lt;/code&amp;gt; to something else, e.g. &amp;lt;code&amp;gt;&amp;amp;view=fluffy&amp;lt;/code&amp;gt; we would have to create a folder &amp;lt;code&amp;gt;components/com_helloworld/views/fluffy/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;views/helloworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;views/fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The classname of the file &amp;lt;code&amp;gt;view.html.php&amp;lt;/code&amp;gt; of the fluffy folder would be &#039;&#039;HelloWorldViewFluffy&#039;&#039;. Afterwards you can customize the contents of &#039;&#039;default.php&#039;&#039; of the &#039;&#039;fluffy&#039;&#039; subfolder for custom output and see the output by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58226/com_helloworld-1.6-part02.zip archive] and install it using the extension manager of Joomla. You can test this basic component by putting &#039;&#039;index.php?option=com_helloworld&#039;&#039; in your browser address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.2&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql/&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Result:&#039;&#039;&#039;&lt;br /&gt;
You will see by default the message contained in the variable &#039;&#039;$this-&amp;gt;msg&#039;&#039; in the &#039;&#039;view.html.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate|prev=Developing a Basic Component|next=Adding a menu type to the site part}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Component Development]] [[Category:Joomla! 3.0]] [[Category:Joomla! 3.1]][[Category:Joomla! 3.2]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Sandbox2&amp;diff=124719</id>
		<title>Talk:Sandbox2</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Sandbox2&amp;diff=124719"/>
		<updated>2014-08-11T05:48:30Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* This is test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feel free to play with the wikitext and features on this page. It&#039;ll be purged irregulary.&lt;br /&gt;
You can find a few links to the manual on the [[Help:Contents|Help page]].&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[[Image:Insert formula here]]&lt;br /&gt;
== [[Headline text]]&#039;&#039;&#039;&#039;&#039;Italic text&#039;&#039;&#039;[[Media:&lt;br /&gt;
----&lt;br /&gt;
Example.ogg]]&#039;&#039; ==&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Section ==&lt;br /&gt;
&lt;br /&gt;
This is a new section of a talk page.&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Talk:Sandbox2&amp;diff=124718</id>
		<title>Talk:Sandbox2</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Talk:Sandbox2&amp;diff=124718"/>
		<updated>2014-08-11T05:47:54Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feel free to play with the wikitext and features on this page. It&#039;ll be purged irregulary.&lt;br /&gt;
You can find a few links to the manual on the [[Help:Contents|Help page]].&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[[Image:Insert formula here]]&lt;br /&gt;
== [[Headline text]]&#039;&#039;&#039;&#039;&#039;Italic text&#039;&#039;&#039;[[Media:&lt;br /&gt;
----&lt;br /&gt;
Example.ogg]]&#039;&#039; ==&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Section ==&lt;br /&gt;
&lt;br /&gt;
This is a new section of a talk page.&lt;br /&gt;
&lt;br /&gt;
== This is test ==&lt;br /&gt;
[[User:Gunjanpatel|Gunjanpatel]] ([[User talk:Gunjanpatel|talk]]) 00:47, 11 August 2014 (CDT) Gunjan Patel&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=JDOC:Sandbox&amp;diff=124717</id>
		<title>JDOC:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=JDOC:Sandbox&amp;diff=124717"/>
		<updated>2014-08-11T05:46:52Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: hello test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Our sandbox&lt;br /&gt;
CHEYYAR TNSF  MOTHILAL&lt;br /&gt;
&lt;br /&gt;
=== something else ===&lt;br /&gt;
Testing More&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=JDOC:Sandbox&amp;diff=124716</id>
		<title>JDOC:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=JDOC:Sandbox&amp;diff=124716"/>
		<updated>2014-08-11T05:45:55Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: ~~~~Gunjan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Our sandbox&lt;br /&gt;
CHEYYAR TNSF  MOTHILAL&lt;br /&gt;
&lt;br /&gt;
=== something else ===&lt;br /&gt;
Testing&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124715</id>
		<title>J3.x:Developing an MVC Component/Adding a view to the site part</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part&amp;diff=124715"/>
		<updated>2014-08-11T05:42:39Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Setting the controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|3.2}}&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!3.1 - Contents}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This tutorial is part of the [[J3.2:Developing_a_MVC_Component|Developing a Model-View-Controller (MVC) Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.&lt;br /&gt;
&lt;br /&gt;
In the Joomla!3.x framework, third party component authors divide their code into three main parts:&lt;br /&gt;
* &#039;&#039;models&#039;&#039; They manage the data &lt;br /&gt;
* &#039;&#039;controllers&#039;&#039; They perform tasks, set and get the states of the models and ask the views to display&lt;br /&gt;
* &#039;&#039;views&#039;&#039; They display the content according to the type (&#039;&#039;error&#039;&#039;, &#039;&#039;feed&#039;&#039;, &#039;&#039;html&#039;&#039;, &#039;&#039;json&#039;&#039;, &#039;&#039;raw&#039;&#039;, &#039;&#039;xml&#039;&#039;) and the layout chosen by the controllers&lt;br /&gt;
&lt;br /&gt;
== Setting the controller ==&lt;br /&gt;
In the core code of Joomla, there is a class able to manage controllers: &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html JControllerLegacy]&#039;&#039;. This class has to be extended to be used in our component. In the file &#039;&#039;yoursite/components/com_helloworld/helloworld.php&#039;&#039; (entry point of our &#039;&#039;Hello World&#039;&#039; component), put these lines:&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/helloworld.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
* @package Joomla.Administrator&lt;br /&gt;
* @subpackage com_helloworld&lt;br /&gt;
*&lt;br /&gt;
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.&lt;br /&gt;
* @license GNU General Public License version 2 or later; see LICENSE.txt&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
// Get an instance of the controller prefixed by HelloWorld&lt;br /&gt;
$controller = JControllerLegacy::getInstance(&#039;HelloWorld&#039;);&lt;br /&gt;
&lt;br /&gt;
// Perform the Request task&lt;br /&gt;
$input = JFactory::getApplication()-&amp;gt;input;&lt;br /&gt;
$controller-&amp;gt;execute($input-&amp;gt;getCmd(&#039;task&#039;));&lt;br /&gt;
&lt;br /&gt;
// Redirect if set by the controller&lt;br /&gt;
$controller-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;[http://api.joomla.org/cms-3/classes/JControllerLegacy.html#method_getInstance getInstance]&#039;&#039; static method of the &#039;&#039;JControllerLegacy&#039;&#039; class will create a controller. In the code above, it will instantiate a controller object of a class named &#039;&#039;HelloWorldController&#039;&#039;. Joomla will look for the declaration of that class in an aptly named file called &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; (it&#039;s a default behavior).&lt;br /&gt;
&lt;br /&gt;
Now, &#039;&#039;controller.php&#039;&#039; needs to be created and &#039;&#039;HelloWorldController&#039;&#039; needs to be declared and defined. So with your favorite file manager and editor, create a &#039;&#039;yoursite/components/com_helloworld/controller.php&#039;&#039; file containing&lt;br /&gt;
&lt;br /&gt;
{{vanchor|site/controller.php}}&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla controller library&lt;br /&gt;
jimport(&#039;joomla.application.component.controller&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Hello World Component Controller&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldController extends JControllerLegacy&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When no task is given in the request variables, the default task will be executed. It&#039;s the &#039;&#039;display&#039;&#039; task by default. The &#039;&#039;JControllerLegacy&#039;&#039; class has such a task. In our example, it will display a view named &#039;&#039;HelloWorld&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
So with &#039;&#039;task&#039;&#039; simply a public function display() of &#039;&#039;JControllerLegacy&#039;&#039; is refered to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{tip|Just a side note for completion, you could call another function aside from &#039;&#039;display()&#039;&#039; by using an URL like this one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost/index.php?option=com_helloworld&amp;amp;task=insert&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would try to call a function &#039;&#039;insert()&#039;&#039; of our controller (which we would actually have to implement in &#039;&#039;HelloWorldController&#039;&#039; ).}}&lt;br /&gt;
&lt;br /&gt;
== Setting the view ==&lt;br /&gt;
&lt;br /&gt;
When JControllerLegacy wants to display a view, it will look for certain files in the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder. &lt;br /&gt;
&lt;br /&gt;
The name of the folder of the default view is the name of the component itself. In our case the path is &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file that will contain the code of the view is called &#039;&#039;view.[view_mode].php&#039;&#039;. The default view mode, and probably the only view a component might need is the &#039;&#039;html&#039;&#039; mode. So this give us our file name which is &#039;&#039;view.html.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/view.html.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// import Joomla view library&lt;br /&gt;
jimport(&#039;joomla.application.component.view&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * HTML View class for the HelloWorld Component&lt;br /&gt;
 */&lt;br /&gt;
class HelloWorldViewHelloWorld extends JViewLegacy&lt;br /&gt;
{&lt;br /&gt;
	// Overwriting JView display method&lt;br /&gt;
	function display($tpl = null) &lt;br /&gt;
	{&lt;br /&gt;
		// Assign data to the view&lt;br /&gt;
		$this-&amp;gt;msg = &#039;Hello World&#039;;&lt;br /&gt;
&lt;br /&gt;
		// Display the view&lt;br /&gt;
		parent::display($tpl);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;display&#039;&#039; method of the &#039;&#039;[http://api.joomla.org/cms-3/classes/JViewLegacy.html JViewLegacy]&#039;&#039; class is called with the &#039;&#039;display&#039;&#039; task of the JControllerLegacy class. In our case, this method will display data using the &#039;&#039;tmpl/default.php&#039;&#039; file. With your favorite file manager and editor, create a file &#039;&#039;yoursite/components/com_helloworld/views/helloworld/tmpl/default.php&#039;&#039; able to display the default view and containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// No direct access to this file&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $this-&amp;gt;msg; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template file will be included by the JViewLegacy class. Therefore, here, $this refers to the HelloWorldViewHelloWorld class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So to give an example, one could call the view inside the &#039;&#039;yoursite/components/com_[component_name]/views/[name of view]/&#039;&#039; folder by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;lt;/code&amp;gt; (this would default to the &#039;&#039;yoursite/components/com_helloworld/views/helloworld/&#039;&#039; folder) or we could explicitly call the folder by calling: &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=helloworld&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if we change &amp;lt;code&amp;gt;&amp;amp;view=helloworld&amp;lt;/code&amp;gt; to something else, e.g. &amp;lt;code&amp;gt;&amp;amp;view=fluffy&amp;lt;/code&amp;gt; we would have to create a folder &amp;lt;code&amp;gt;components/com_helloworld/views/fluffy/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Copy the contents of &amp;lt;code&amp;gt;views/helloworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;views/fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The classname of the file &amp;lt;code&amp;gt;view.html.php&amp;lt;/code&amp;gt; of the fluffy folder would be &#039;&#039;HelloWorldViewFluffy&#039;&#039;. Afterwards you can customize the contents of &#039;&#039;default.php&#039;&#039; of the &#039;&#039;fluffy&#039;&#039; subfolder for custom output and see the output by calling &amp;lt;code&amp;gt;index.php?option=com_helloworld&amp;amp;view=fluffy&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging the component ==&lt;br /&gt;
&lt;br /&gt;
Content of your code directory&lt;br /&gt;
* &#039;&#039;[[#helloworld.xml|helloworld.xml]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/helloworld.php|site/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/controller.php|site/controller.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/tmpl/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]&#039;&#039;&lt;br /&gt;
* &#039;&#039;[[J3.2:Developing_a_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58226/com_helloworld-1.6-part02.zip archive] and install it using the extension manager of Joomla. You can test this basic component by putting &#039;&#039;index.php?option=com_helloworld&#039;&#039; in your browser address.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;helloworld.xml&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;helloworld.xml&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;extension type=&amp;quot;component&amp;quot; version=&amp;quot;2.5.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;Hello World!&amp;lt;/name&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The following elements are optional and free of formatting constraints --&amp;gt;&lt;br /&gt;
	&amp;lt;creationDate&amp;gt;November 2009&amp;lt;/creationDate&amp;gt;&lt;br /&gt;
	&amp;lt;author&amp;gt;John Doe&amp;lt;/author&amp;gt;&lt;br /&gt;
	&amp;lt;authorEmail&amp;gt;john.doe@example.org&amp;lt;/authorEmail&amp;gt;&lt;br /&gt;
	&amp;lt;authorUrl&amp;gt;http://www.example.org&amp;lt;/authorUrl&amp;gt;&lt;br /&gt;
	&amp;lt;copyright&amp;gt;Copyright Info&amp;lt;/copyright&amp;gt;&lt;br /&gt;
	&amp;lt;license&amp;gt;License Info&amp;lt;/license&amp;gt;&lt;br /&gt;
	&amp;lt;!--  The version string is recorded in the components table --&amp;gt;&lt;br /&gt;
	&amp;lt;version&amp;gt;0.0.2&amp;lt;/version&amp;gt;&lt;br /&gt;
	&amp;lt;!-- The description is optional and defaults to the name --&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Description of the Hello World component ...&amp;lt;/description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;update&amp;gt; &amp;lt;!-- Runs on update; New in 2.5 --&amp;gt;&lt;br /&gt;
		&amp;lt;schemas&amp;gt;&lt;br /&gt;
			&amp;lt;schemapath type=&amp;quot;mysql&amp;quot;&amp;gt;sql/updates/mysql/&amp;lt;/schemapath&amp;gt;&lt;br /&gt;
		&amp;lt;/schemas&amp;gt;&lt;br /&gt;
	&amp;lt;/update&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Site Main File Copy Section --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
		to copy FROM in the package to install therefore files copied&lt;br /&gt;
		in this section are copied from /site/ in the package --&amp;gt;&lt;br /&gt;
	&amp;lt;files folder=&amp;quot;site&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;controller.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;folder&amp;gt;views&amp;lt;/folder&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Menu Section --&amp;gt;&lt;br /&gt;
		&amp;lt;menu&amp;gt;Hello World!&amp;lt;/menu&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Administration Main File Copy Section --&amp;gt;&lt;br /&gt;
		&amp;lt;!-- Note the folder attribute: This attribute describes the folder&lt;br /&gt;
			to copy FROM in the package to install therefore files copied&lt;br /&gt;
			in this section are copied from /admin/ in the package --&amp;gt;&lt;br /&gt;
		&amp;lt;files folder=&amp;quot;admin&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;!-- Admin Main File Copy Section --&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;filename&amp;gt;helloworld.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
			&amp;lt;!-- SQL files section --&amp;gt;&lt;br /&gt;
			&amp;lt;folder&amp;gt;sql&amp;lt;/folder&amp;gt;&lt;br /&gt;
		&amp;lt;/files&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Result:&#039;&#039;&#039;&lt;br /&gt;
You will see by default the message contained in the variable &#039;&#039;$this-&amp;gt;msg&#039;&#039; in the &#039;&#039;view.html.php&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
{{notice|Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.}}&lt;br /&gt;
&lt;br /&gt;
{{:J3.2:Developing a MVC Component/Navigate|prev=Developing a Basic Component|next=Adding a menu type to the site part}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Component Development]] [[Category:Joomla! 3.0]] [[Category:Joomla! 3.1]][[Category:Joomla! 3.2]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
*[[User:cdemko|Christophe Demko]]&lt;br /&gt;
*[[User:oaksu|Ozgur Aksu]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component&amp;diff=124701</id>
		<title>J3.x:Developing an MVC Component</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Developing_an_MVC_Component&amp;diff=124701"/>
		<updated>2014-08-08T13:12:27Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{version/tutor|3.x}}&lt;br /&gt;
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!3.1 - Contents}}&lt;br /&gt;
&lt;br /&gt;
This is a multiple-article series of tutorials on how to develop a Model-View-Controller [[Component]] for Joomla! Version {{JVer|{{Ns}}}}.&lt;br /&gt;
&lt;br /&gt;
Begin with the [[Developing a Model-View-Controller Component/3.1/Introduction|Introduction]], and navigate the articles in this series by using the navigation box to the right (the &#039;&#039;Articles in this series&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
[[Category:Joomla! 3.0]]&lt;br /&gt;
[[Category:Joomla! 3.1]]&lt;br /&gt;
[[Category:Joomla! 3.2]]&lt;br /&gt;
[[Category:Joomla! 3.3]]&lt;br /&gt;
[[Category:Beginner Development]]&lt;br /&gt;
[[Category:Component Development]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Finding_module_positions_on_any_given_page&amp;diff=124699</id>
		<title>Finding module positions on any given page</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Finding_module_positions_on_any_given_page&amp;diff=124699"/>
		<updated>2014-08-07T07:22:41Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To get a visual indication of all module positions used on a page you can follow this procedure:-&lt;br /&gt;
&lt;br /&gt;
* {{JVer|2.5}}{{JVer|3.1}} In the administrative backend go to Extensions-&amp;gt;Template Manager. Click on Options and set &#039;&#039;&#039;Preview Module Positions&#039;&#039;&#039; to &#039;&#039;&#039;enabled&#039;&#039;&#039;.&lt;br /&gt;
* navigate to any of the page in your web browser.&lt;br /&gt;
* click into the URL field in your browser.&lt;br /&gt;
* look for any &amp;quot;parameters&amp;quot; at the end of the URL. These are separated from the main part of the URL by a question mark.  For example, in the URL &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://mydomain.com/index.php?id=17&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;, the &amp;quot;id=17&amp;quot; is a parameter.&lt;br /&gt;
* if there are no parameters, append &amp;quot;?tp=1&amp;quot; to the URL and press RETURN.  For example, &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://mydomain.com/index.php?tp=1&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* if there are already parameters in the URL, append &amp;quot;&amp;amp;tp=1&amp;quot; to the URL and press RETURN.  For example, &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://mydomain.com/index.php?id=17&amp;amp;tp=1&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* the module positions will be outlined in red.&lt;br /&gt;
&lt;br /&gt;
Note that in some circumstances there may be module positions available that are not outlined in red. This can happen when a template defines those module positions as conditional on there being modules enabled in that position. If there are no modules enabled in that position then the template may adapt and the position will not be visible.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:Procedures]]&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
[[Category:Template Development]]&lt;br /&gt;
[[Category:Tips and tricks]]&lt;br /&gt;
[[Category:Tips and tricks 1.5]]&lt;br /&gt;
[[Category:Tips and tricks 1.6]]&lt;br /&gt;
[[Category:Tips and tricks 1.7]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Git_for_Testers_and_Trackers&amp;diff=107502</id>
		<title>Git for Testers and Trackers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Git_for_Testers_and_Trackers&amp;diff=107502"/>
		<updated>2014-02-12T07:12:14Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* CLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tasks are the typical ones needed for the Testing and Tracker teams.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Set up local Git repository (read only from trunk).&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Keep local repository updated with changes from trunk.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Apply patches and pull requests.&#039;&#039;&#039;&lt;br /&gt;
## Option with branches.&lt;br /&gt;
## Option without branches.&lt;br /&gt;
# &#039;&#039;&#039;Reset files to unmodified state.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Work with older versions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{tip|If you want to try a easy way for testing patches without learning git check this page: [[Component Patchtester for Testers]]}}&lt;br /&gt;
&lt;br /&gt;
== Testing and Tracker Teams Work Flow ==&lt;br /&gt;
People who want to test Pending issues need to do the following. These same tasks apply to people who want to monitor the tracker and confirm Open issues.&lt;br /&gt;
&lt;br /&gt;
# Create a local working copy of the Joomla trunk.&lt;br /&gt;
# Update this local copy with changes made to trunk.&lt;br /&gt;
# Apply proposed patches (from Confirmed issues) to trunk to see if they work correctly.&lt;br /&gt;
# Be able to restore the local copy to its unmodified state.&lt;br /&gt;
&lt;br /&gt;
Testers may or may not wish to use Git branches in their testing work. For simple testing of one issue at a time, creating local branches is not necessary. For more complex testing or for testing multiple issues at a time, it is more convenient to create a local branch for each issue. Both approaches are documented here.&lt;br /&gt;
&lt;br /&gt;
In some cases, it is important to identify when a bug or issue was first introduced. With Git it is easy to restore the local repository to a prior state (for example, to a point in time in the past) and test whether the issue was present in that version. This process is also documented here.&lt;br /&gt;
&lt;br /&gt;
== Create Local Read-Only Repository ==&lt;br /&gt;
Testers do not need to create a remote repository on Github. They can simply create a local clone of the CMS trunk on their local test machine. This clone will allow them to easily keep up with changes made to the CMS trunk.&lt;br /&gt;
&lt;br /&gt;
The steps for this process are shown below, first using the command-line-interface (CLI) for Git and then using Eclipse and eGit.&lt;br /&gt;
&lt;br /&gt;
=== CLI Commands ===&lt;br /&gt;
# Navigate to your project root folder, for example: &amp;lt;code&amp;gt;c:\xampp\htdocs\joomla-cms&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enter command: &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;git://github.com/joomla/joomla-cms.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. The system will work for a few minutes, copying the entire remote repository to your local system. When you are done, you will have a local copy of the Joomla CMS repository in the current directory, along with a git repository (in the .git subdirectory). Note that this URL points to the joomla-cms project on Github. This project becomes the remote origin for the local git repository. For example, the command &amp;lt;code&amp;gt;git remote -v&amp;lt;/code&amp;gt; will now list origin as follows:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:42px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
origin git://github.com/joomla/joomla-cms.git (fetch)&lt;br /&gt;
origin git://github.com/joomla/joomla-cms.git (push)&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eclipse Commands: ===&lt;br /&gt;
# Clone joomla-cms repository using the read-only URL. In Repositories View, click the button &amp;quot;Clone a Git Repository and add to this View&amp;quot;. This screen will show the following.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-02.png|Git-document-screenshot-20120529-02.png]]&lt;br /&gt;
# Select URI and click Next. The screen below will show.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-03.png|Git-document-screenshot-20120529-03.png]]&lt;br /&gt;
#Enter the URI git://github.com/joomla/joomla-cms.git as shown above. Then click Next to see the screen below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-04.png|Git-document-screenshot-20120529-04.png]]&lt;br /&gt;
#This will default to select all branches. Keep this default and click Next to show the screen below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-05.png|Git-document-screenshot-20120529-05.png]]&lt;br /&gt;
#Click on Browse and browse to the desired root directory for the project (for example, c:\xampp\htdocs\joomla_development\joomla-cms). Then click Finish. &lt;br /&gt;
# In Eclipse, create new PHP project in same folder. It will give a warning that files exist in this folder (which is OK).&lt;br /&gt;
# In Eclipse, right-click on the project and select Team&amp;amp;rarr;Share to share the project. In the Share Project window, select Git and click Next. In the Configure Git Repository window, select &amp;quot;Use or create repository in parent folder of project&amp;quot; and click finish.&lt;br /&gt;
# Note that this creates a relationship between the local repository and the joomla-cms repository on Github. You can see this relationship by opening the Repositories View and expanding the Remotes tree as shown below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120530-01.png|Git-document-screenshot-20120530-01.png]]&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit Commands: ===&lt;br /&gt;
# Clone joomla-cms repository using the read-only URL. Right-click on project folder (&amp;quot;tortoise-git&amp;quot; in this example) and select &amp;quot;Git Clone&amp;quot; as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-01.png|Tortoisegit-tutorial-screenshot-20120612-01.png]]{{-}}&lt;br /&gt;
# Enter the read-only URL and the desired project directory (again, &amp;quot;tortoise-git&amp;quot; in this example), as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-02.png|Tortoisegit-tutorial-screenshot-20120612-02.png]]{{-}}&lt;br /&gt;
# The system will work for a few minutes, showing progress in the Receiving objects window. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-03.png|Tortoisegit-tutorial-screenshot-20120612-03.png]]{{-}}&lt;br /&gt;
# When it is done, a success message will show as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-04.png|Tortoisegit-tutorial-screenshot-20120612-04.png]]{{-}}&lt;br /&gt;
&lt;br /&gt;
== Update Local Git Repository with Changes Made to Trunk ==&lt;br /&gt;
The first time you clone the Joomla CMS repository on Github, you will have the latest version of trunk. However, the trunk changes frequently, as bugs are fixed and new features added. This means that you need to keep your local repository up to date with these changes, for example each day when you start working.&lt;br /&gt;
&lt;br /&gt;
=== CLI: ===&lt;br /&gt;
# Make sure you are in the master branch of your local repository with this command: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Pull changes from the origin (joomla-cms): &amp;lt;code&amp;gt;git pull origin&amp;lt;/code&amp;gt;&lt;br /&gt;
# If there are any changes, these will show. Otherwise, it will say &amp;quot;Already up to date.&amp;quot;&lt;br /&gt;
# Check your status by entering: git status. The display should show:&lt;br /&gt;
  $ git status&amp;lt;br/&amp;gt; &amp;lt;nowiki&amp;gt;# On branch master&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; nothing to commit (working directory clean)&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Make sure you are on the master branch: {{rarr|Team,Switch To,master}}. (If you are already on master, the master branch will be grayed out.)&lt;br /&gt;
# Pull changes from origin. Right-click on the project in PHP Explorer and select Team&amp;amp;rarr;Pull.&lt;br /&gt;
# If there were changes made, you will see something like this. {{-}}[[Image:Git-document-screenshot-20120529-01.png|Git-document-screenshot-20120529-01.png]]{{-}} Otherwise, you will see a message indicating that everything was up to date, like this.{{-}} [[Image:Git-document-screenshot-20120529-06.png|Git-document-screenshot-20120529-06.png]]&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Make sure you are on the master branch by entering TortoiseGit&amp;amp;rarr;Switch/Checkout and selecting the &amp;quot;master&amp;quot; branch.&lt;br /&gt;
# Pull changes from origin. Right-click on the project folder, and select TortoiseGit&amp;amp;rarr;Pull as shown below. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-05.png|Tortoisegit-tutorial-screenshot-20120612-05.png]]&lt;br /&gt;
# In Remote, select &amp;quot;origin&amp;quot; as shown below and press OK. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-06.png|Tortoisegit-tutorial-screenshot-20120612-06.png]]&lt;br /&gt;
# The system will show a success message as follows. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-05.png|Tortoisegit-tutorial-screenshot-20120612-05.png]]&lt;br /&gt;
&lt;br /&gt;
== Important Notes About Patch File Format ==&lt;br /&gt;
===Leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot;===&lt;br /&gt;
There is a confusing aspect of working with patches between SVN, Eclipse, Git and the CLI. This has to do with the way files are referenced inside a patch. Most patches made with Eclipse and Git will have a leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot; in front of the file names. For example, a standard Git patch will look like this:&lt;br /&gt;
&lt;br /&gt;
 diff --git a/components/com_content/controller.php b/components/com_content/controller.php&lt;br /&gt;
 index 53cc63a..25cee76 100644&lt;br /&gt;
 --- a/components/com_content/controller.php&lt;br /&gt;
 +++ b/components/com_content/controller.php&lt;br /&gt;
&lt;br /&gt;
However, patches made with SVN or using the &amp;quot;--no-prefix&amp;quot; option in Git will omit the leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot; and show in the following format:&lt;br /&gt;
&lt;br /&gt;
 diff --git components/com_content/controller.php components/com_content/controller.php&lt;br /&gt;
 index 53cc63a..ba2de80 100644&lt;br /&gt;
 --- components/com_content/controller.php&lt;br /&gt;
 +++ components/com_content/controller.php&lt;br /&gt;
&lt;br /&gt;
Most patches will be in the first format. It is easy to apply patches in either format, but the exact commands are different. These are outlined below.&lt;br /&gt;
&lt;br /&gt;
===Error Applying Patch Using CLI===&lt;br /&gt;
In some cases, patches made using Eclipse may not apply correctly using the CLI &amp;quot;apply&amp;quot; command. For example, you might get an error: &amp;lt;code&amp;gt;fatal: corrupt patch at line xxx&amp;lt;/code&amp;gt;. This appears to be caused by the fact that Eclipse does not add a blank line to the end of the patch file. If you have this problem, try adding a blank line at the end of the patch file.&lt;br /&gt;
&lt;br /&gt;
== Apply Patches and Pull Requests Without Branches ==&lt;br /&gt;
This can be done either with or without using branches. If you want to work on one patch at a time (similar to the SVN work flow), you can follow this work flow without branches.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# To apply a Git format patch: &amp;lt;code&amp;gt;git apply &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;. For example: &amp;lt;code&amp;gt;git apply mypatchfile.patch&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To apply an SVN format patch: &amp;lt;code&amp;gt;git apply -p0 &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;. For example: &amp;lt;code&amp;gt;git apply -p0 mypatchfile.patch.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, the proposed code changes have been made to your Joomla files. Now you can test the proposed changes to see whether they work correctly.&lt;br /&gt;
&lt;br /&gt;
To apply a Github pull request, add &amp;quot;.diff&amp;quot; to the end of the pull request URL. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://github.com/joomla/joomla-cms/pull/2531.diff&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will display a Git-formatted patch file in your browser. Save this file to your local machine and use the command above to apply it.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# To apply a Git format patch: Team&amp;amp;rarr;Apply patch. The Patch input specification window will show. You can apply a patch from a file or by copying the patch to the clipboard.&lt;br /&gt;
# Click Next to show the Target Resource window. Select the PHP project to apply to patch and click Next.&lt;br /&gt;
# The Review Patch window will show. IMPORTANT: If the patch is in Git format, set &amp;quot;Ignore leading path elements&amp;quot; to 1. If the patch is in SVN format, this is not needed.&lt;br /&gt;
# At this point, if the patch will apply correctly, the files will show with a blue arrow as shown below.{{-}}[[File:Git-document-screenshot-20120530-02.png|Git-document-screenshot-20120530-02.png]]&lt;br /&gt;
&lt;br /&gt;
Note: If a red &amp;quot;X&amp;quot; appears next to a file, it means the patch will not apply correctly. Check the patch file format to make sure you have the right setting for this type. Also, make sure you haven&#039;t already applied the patch.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# To apply a Git format patch: TortoiseGit&amp;amp;rarr;Review/apply single patch. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-08.png|Tortoisegit-tutorial-screenshot-20120612-08.png]]&lt;br /&gt;
# The following windows will show the files to be patched. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-09.png|Tortoisegit-tutorial-screenshot-20120612-09.png]]&lt;br /&gt;
# Click on the button &amp;quot;Patch all items&amp;quot;. The screen will now show the changes to the last file in the patch as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-10.png|Tortoisegit-tutorial-screenshot-20120612-10.png]]&lt;br /&gt;
&lt;br /&gt;
=== Video applying a patch using Github and PHPstorm ===&lt;br /&gt;
This 1 minute video shows how a .patch or .diff file is downloaded and added to your current PHPStorm project: {{#ev:youtube|7xdwNFPJdWk}}&lt;br /&gt;
&lt;br /&gt;
== Apply Patches and Pull Requests Using Branches ==&lt;br /&gt;
In many cases, it can be easier to create a Git branch for each issue you are working on. This way you can be working on several issues at one time while keeping the code changes for each issue separated. Creating branches in Git is very easy. Here is the work flow for applying patches using branches.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Create a new branch: &amp;lt;code&amp;gt;git branch issue-123&amp;lt;/code&amp;gt; (creates a new branch called issue-123).&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change to the branch: &amp;lt;code&amp;gt;commit -a&amp;lt;/code&amp;gt;. Now git will open the editor you chose when you installed git. Enter the commit message in the first line of the editor and save and exit. (If you are unfamiliar with the editor, you can either change the editor or use Eclipse, which bypasses this step in the process.) The commit message should be something short that tells you what you did, for example &amp;quot;Applied patch 123.patch&amp;quot;). OR You can commit the code change to the branch wihtout opening editor using &amp;lt;code&amp;gt;commit -a -m &amp;quot;&amp;lt;type_your_message_here&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# At this point, the branch contains the modified version of the Joomla files for you to test. You can easily switch back to the standard files with the command: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;. To switch back to the modified version, use the command: &amp;lt;code&amp;gt;git checkout issue-123&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Create a new branch: Team&amp;amp;rarr;Switch To&amp;amp;rarr;New Branch. The Create a new branch window will show. Enter the name of the branch and click on Finish.&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change: Team&amp;amp;rarr;Commit. The Commit Changes window will show. Enter the commit message as shown in the example below.{{-}}[[Image:Git-document-screenshot-20120530-03.png|Git-document-screenshot-20120530-03.png]]{{-}} At this point, you can review the code changes or simply press the Commit button to commit the changes.&lt;br /&gt;
# To switch back to master or any other branch, again use Team&amp;amp;rarr;Switch To and select master or the desired branch.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Create a new branch: Right-click on the project folder and select TortoiseGit&amp;amp;rarr;Create Branch, as shown below.&lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-11.png|Tortoisegit-tutorial-screenshot-20120612-11.png]]&lt;br /&gt;
# The following screen will show. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-12.png]]&lt;br /&gt;
# Enter the name of the new branch in Branch and press OK. Note that this also switches you to the new branch.&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change: Right-click on project folder, then Git Commit -&amp;gt; &amp;lt;your branch&amp;gt; as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-16.png|Tortoisegit-tutorial-screenshot-20120612-16.png]]&lt;br /&gt;
# Enter a commit message, check that you are in the right branch, and press OK, as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-17.png|Tortoisegit-tutorial-screenshot-20120612-17.png]]&lt;br /&gt;
# The system will show a success message as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-18.png|Tortoisegit-tutorial-screenshot-20120612-18.png]]&lt;br /&gt;
&lt;br /&gt;
== Restore to Unmodified State (Without Branches) ==&lt;br /&gt;
If you are not using branches, when you are done testing an issue, you will need to restore your programs to the original unmodified state. Note that this is not needed if you are using branches. &lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Use this command to undo &#039;&#039;any&#039;&#039; file changes: &amp;lt;code&amp;gt;git reset --hard origin/master&amp;lt;/code&amp;gt;.  If it doesn&#039;t work, you can use &amp;lt;code&amp;gt;git apply -R &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;to the state before the patch was applied&#039;&#039;.  For example, &amp;lt;code&amp;gt;git apply -R folder/file.diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use this command to delete any new files added by the patch: &amp;lt;code&amp;gt;git clean -f -d&amp;lt;/code&amp;gt; &lt;br /&gt;
#: This removes added files and directories.&lt;br /&gt;
# Run the command: git status and make sure it says &amp;quot;nothing to commit (working directory clean)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Use this command to undo any file changes: Team&amp;amp;rarr;Reset to show the Reset window. Select &amp;quot;Hard&amp;quot; for the Reset type and click on Reset.&lt;br /&gt;
# To remove any new files added by a patch, simple navigate to the files and delete them.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Use this command to undo any file changes: TortoiseGit&amp;amp;rarr;Revert. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-21.png|Tortoisegit-tutorial-screenshot-20120612-21.png]] &lt;br /&gt;
#* Any changed files will show in a window as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-22.png|Tortoisegit-tutorial-screenshot-20120612-22.png]]&lt;br /&gt;
#* Check all changed files and click OK. The success screen will show as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-22a.png|Tortoisegit-tutorial-screenshot-20120612-22a.png]]&lt;br /&gt;
# Use this command to delete any new files: TortoiseGit&amp;amp;rarr;Clean up. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-23.png|Tortoisegit-tutorial-screenshot-20120612-23.png]]{{-}} The system will show a success window and the files that were deleted as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-24.png|Tortoisegit-tutorial-screenshot-20120612-24.png]]&lt;br /&gt;
&lt;br /&gt;
== Restore to Unmodified State With Branches ==&lt;br /&gt;
If you use branches, it is much easier to switch back to the unmodified programs. You simply change back to the master branch. Once you are done with an issue, you will likely want to delete the branch you created. Here are the commands for that.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Change back to the master branch: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Delete the desired branch: &amp;lt;code&amp;gt;git branch -D issue-123&amp;lt;/code&amp;gt; (where issue-123 is the branch name)&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Change back to the master branch: Team&amp;amp;rarr;Switch to&amp;amp;rarr;master.&lt;br /&gt;
# Delete the desired branch: Team&amp;amp;rarr;Advanced&amp;amp;rarr;Delete Branch and select the desired branch to delete.&lt;br /&gt;
&lt;br /&gt;
===TortoiseGit ===&lt;br /&gt;
# Change back to the master branch: TortoiseGit&amp;amp;rarr;Switch/Checkout. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-13.png|Tortoisegit-tutorial-screenshot-20120612-13.png]]&lt;br /&gt;
# Select master as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-25.png|Tortoisegit-tutorial-screenshot-20120612-25.png]]&lt;br /&gt;
# Delete the desired branch: &lt;br /&gt;
#* TortoiseGit&amp;amp;rarr;Show Log as shown here. [{{-}}[File:Tortoisegit-tutorial-screenshot-20120612-19.png|Tortoisegit-tutorial-screenshot-20120612-19.png]]&lt;br /&gt;
#* Right-click on the HEAD line and select Delete branch/tag&amp;amp;rarr;&amp;lt;name of the branch&amp;gt; as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-26.png|Tortoisegit-tutorial-screenshot-20120612-26.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Older Versions of Trunk ==&lt;br /&gt;
At times, it is helpful to figure out which commit might have introduced a new issue. With Git it is easy to restore the code base to any point in time and then test whether an issue was present or not. Note that this is more difficult with the CLI version.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Write some past commits to a temporary file. For example: &amp;lt;code&amp;gt;git log --since=&amp;quot;2 weeks ago&amp;quot; --mylogfile.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find the commit id of the desired date. Note that we only need the first 8 characters of the commit id.&lt;br /&gt;
# Checkout the desired commit: &amp;lt;code&amp;gt;git checkout &amp;lt;id&amp;gt;&amp;lt;/code&amp;gt; (for example: &amp;lt;code&amp;gt;git checkout ba574af0&amp;lt;/code&amp;gt;).&lt;br /&gt;
# See the command reference for git bisect for a more advanced way to find which commit caused a bug.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
&lt;br /&gt;
# Open the History View: Team&amp;amp;rarr;Show in History. This will show a view similar to this:{{-}}[[Image:Git-document-screenshot-20120530-04.png|900px]]{{-}}This view shows every commit to the CMS repository. To restore your local files to a prior time, right click on the desired row in the history view and select Checkout. Your local files will be changed to the state as of that commit. You can now test that version. &lt;br /&gt;
# To change to a different version, repeat this process. To change back to the master branch (the latest version), do Team&amp;amp;rarr;Switch to&amp;amp;rarr;Master.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Open the Log window. TortoiseGit&amp;amp;rarr;Show Log as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-19.png|Tortoisegit-tutorial-screenshot-20120612-19.png]]&lt;br /&gt;
# Right-click on the desired commit in the log listing and select Switch/Checkout to this... as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-27.png|Tortoisegit-tutorial-screenshot-20120612-27.png]]{{-}} You can now test that version.&lt;br /&gt;
# To change to a different version, repeat this process. To change back to the master branch (the latest version), do TortoiseGit&amp;amp;rarr;Switch/Checkout and select master.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:GitHub]]&lt;br /&gt;
[[Category:Video]]&lt;br /&gt;
[[Category:Testing]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Git_for_Testers_and_Trackers&amp;diff=107501</id>
		<title>Git for Testers and Trackers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Git_for_Testers_and_Trackers&amp;diff=107501"/>
		<updated>2014-02-12T07:11:27Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* CLI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tasks are the typical ones needed for the Testing and Tracker teams.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Set up local Git repository (read only from trunk).&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Keep local repository updated with changes from trunk.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Apply patches and pull requests.&#039;&#039;&#039;&lt;br /&gt;
## Option with branches.&lt;br /&gt;
## Option without branches.&lt;br /&gt;
# &#039;&#039;&#039;Reset files to unmodified state.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Work with older versions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{tip|If you want to try a easy way for testing patches without learning git check this page: [[Component Patchtester for Testers]]}}&lt;br /&gt;
&lt;br /&gt;
== Testing and Tracker Teams Work Flow ==&lt;br /&gt;
People who want to test Pending issues need to do the following. These same tasks apply to people who want to monitor the tracker and confirm Open issues.&lt;br /&gt;
&lt;br /&gt;
# Create a local working copy of the Joomla trunk.&lt;br /&gt;
# Update this local copy with changes made to trunk.&lt;br /&gt;
# Apply proposed patches (from Confirmed issues) to trunk to see if they work correctly.&lt;br /&gt;
# Be able to restore the local copy to its unmodified state.&lt;br /&gt;
&lt;br /&gt;
Testers may or may not wish to use Git branches in their testing work. For simple testing of one issue at a time, creating local branches is not necessary. For more complex testing or for testing multiple issues at a time, it is more convenient to create a local branch for each issue. Both approaches are documented here.&lt;br /&gt;
&lt;br /&gt;
In some cases, it is important to identify when a bug or issue was first introduced. With Git it is easy to restore the local repository to a prior state (for example, to a point in time in the past) and test whether the issue was present in that version. This process is also documented here.&lt;br /&gt;
&lt;br /&gt;
== Create Local Read-Only Repository ==&lt;br /&gt;
Testers do not need to create a remote repository on Github. They can simply create a local clone of the CMS trunk on their local test machine. This clone will allow them to easily keep up with changes made to the CMS trunk.&lt;br /&gt;
&lt;br /&gt;
The steps for this process are shown below, first using the command-line-interface (CLI) for Git and then using Eclipse and eGit.&lt;br /&gt;
&lt;br /&gt;
=== CLI Commands ===&lt;br /&gt;
# Navigate to your project root folder, for example: &amp;lt;code&amp;gt;c:\xampp\htdocs\joomla-cms&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enter command: &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;git://github.com/joomla/joomla-cms.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. The system will work for a few minutes, copying the entire remote repository to your local system. When you are done, you will have a local copy of the Joomla CMS repository in the current directory, along with a git repository (in the .git subdirectory). Note that this URL points to the joomla-cms project on Github. This project becomes the remote origin for the local git repository. For example, the command &amp;lt;code&amp;gt;git remote -v&amp;lt;/code&amp;gt; will now list origin as follows:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:42px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
origin git://github.com/joomla/joomla-cms.git (fetch)&lt;br /&gt;
origin git://github.com/joomla/joomla-cms.git (push)&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eclipse Commands: ===&lt;br /&gt;
# Clone joomla-cms repository using the read-only URL. In Repositories View, click the button &amp;quot;Clone a Git Repository and add to this View&amp;quot;. This screen will show the following.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-02.png|Git-document-screenshot-20120529-02.png]]&lt;br /&gt;
# Select URI and click Next. The screen below will show.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-03.png|Git-document-screenshot-20120529-03.png]]&lt;br /&gt;
#Enter the URI git://github.com/joomla/joomla-cms.git as shown above. Then click Next to see the screen below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-04.png|Git-document-screenshot-20120529-04.png]]&lt;br /&gt;
#This will default to select all branches. Keep this default and click Next to show the screen below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-05.png|Git-document-screenshot-20120529-05.png]]&lt;br /&gt;
#Click on Browse and browse to the desired root directory for the project (for example, c:\xampp\htdocs\joomla_development\joomla-cms). Then click Finish. &lt;br /&gt;
# In Eclipse, create new PHP project in same folder. It will give a warning that files exist in this folder (which is OK).&lt;br /&gt;
# In Eclipse, right-click on the project and select Team&amp;amp;rarr;Share to share the project. In the Share Project window, select Git and click Next. In the Configure Git Repository window, select &amp;quot;Use or create repository in parent folder of project&amp;quot; and click finish.&lt;br /&gt;
# Note that this creates a relationship between the local repository and the joomla-cms repository on Github. You can see this relationship by opening the Repositories View and expanding the Remotes tree as shown below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120530-01.png|Git-document-screenshot-20120530-01.png]]&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit Commands: ===&lt;br /&gt;
# Clone joomla-cms repository using the read-only URL. Right-click on project folder (&amp;quot;tortoise-git&amp;quot; in this example) and select &amp;quot;Git Clone&amp;quot; as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-01.png|Tortoisegit-tutorial-screenshot-20120612-01.png]]{{-}}&lt;br /&gt;
# Enter the read-only URL and the desired project directory (again, &amp;quot;tortoise-git&amp;quot; in this example), as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-02.png|Tortoisegit-tutorial-screenshot-20120612-02.png]]{{-}}&lt;br /&gt;
# The system will work for a few minutes, showing progress in the Receiving objects window. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-03.png|Tortoisegit-tutorial-screenshot-20120612-03.png]]{{-}}&lt;br /&gt;
# When it is done, a success message will show as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-04.png|Tortoisegit-tutorial-screenshot-20120612-04.png]]{{-}}&lt;br /&gt;
&lt;br /&gt;
== Update Local Git Repository with Changes Made to Trunk ==&lt;br /&gt;
The first time you clone the Joomla CMS repository on Github, you will have the latest version of trunk. However, the trunk changes frequently, as bugs are fixed and new features added. This means that you need to keep your local repository up to date with these changes, for example each day when you start working.&lt;br /&gt;
&lt;br /&gt;
=== CLI: ===&lt;br /&gt;
# Make sure you are in the master branch of your local repository with this command: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Pull changes from the origin (joomla-cms): &amp;lt;code&amp;gt;git pull origin&amp;lt;/code&amp;gt;&lt;br /&gt;
# If there are any changes, these will show. Otherwise, it will say &amp;quot;Already up to date.&amp;quot;&lt;br /&gt;
# Check your status by entering: git status. The display should show:&lt;br /&gt;
  $ git status&amp;lt;br/&amp;gt; &amp;lt;nowiki&amp;gt;# On branch master&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; nothing to commit (working directory clean)&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Make sure you are on the master branch: {{rarr|Team,Switch To,master}}. (If you are already on master, the master branch will be grayed out.)&lt;br /&gt;
# Pull changes from origin. Right-click on the project in PHP Explorer and select Team&amp;amp;rarr;Pull.&lt;br /&gt;
# If there were changes made, you will see something like this. {{-}}[[Image:Git-document-screenshot-20120529-01.png|Git-document-screenshot-20120529-01.png]]{{-}} Otherwise, you will see a message indicating that everything was up to date, like this.{{-}} [[Image:Git-document-screenshot-20120529-06.png|Git-document-screenshot-20120529-06.png]]&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Make sure you are on the master branch by entering TortoiseGit&amp;amp;rarr;Switch/Checkout and selecting the &amp;quot;master&amp;quot; branch.&lt;br /&gt;
# Pull changes from origin. Right-click on the project folder, and select TortoiseGit&amp;amp;rarr;Pull as shown below. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-05.png|Tortoisegit-tutorial-screenshot-20120612-05.png]]&lt;br /&gt;
# In Remote, select &amp;quot;origin&amp;quot; as shown below and press OK. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-06.png|Tortoisegit-tutorial-screenshot-20120612-06.png]]&lt;br /&gt;
# The system will show a success message as follows. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-05.png|Tortoisegit-tutorial-screenshot-20120612-05.png]]&lt;br /&gt;
&lt;br /&gt;
== Important Notes About Patch File Format ==&lt;br /&gt;
===Leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot;===&lt;br /&gt;
There is a confusing aspect of working with patches between SVN, Eclipse, Git and the CLI. This has to do with the way files are referenced inside a patch. Most patches made with Eclipse and Git will have a leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot; in front of the file names. For example, a standard Git patch will look like this:&lt;br /&gt;
&lt;br /&gt;
 diff --git a/components/com_content/controller.php b/components/com_content/controller.php&lt;br /&gt;
 index 53cc63a..25cee76 100644&lt;br /&gt;
 --- a/components/com_content/controller.php&lt;br /&gt;
 +++ b/components/com_content/controller.php&lt;br /&gt;
&lt;br /&gt;
However, patches made with SVN or using the &amp;quot;--no-prefix&amp;quot; option in Git will omit the leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot; and show in the following format:&lt;br /&gt;
&lt;br /&gt;
 diff --git components/com_content/controller.php components/com_content/controller.php&lt;br /&gt;
 index 53cc63a..ba2de80 100644&lt;br /&gt;
 --- components/com_content/controller.php&lt;br /&gt;
 +++ components/com_content/controller.php&lt;br /&gt;
&lt;br /&gt;
Most patches will be in the first format. It is easy to apply patches in either format, but the exact commands are different. These are outlined below.&lt;br /&gt;
&lt;br /&gt;
===Error Applying Patch Using CLI===&lt;br /&gt;
In some cases, patches made using Eclipse may not apply correctly using the CLI &amp;quot;apply&amp;quot; command. For example, you might get an error: &amp;lt;code&amp;gt;fatal: corrupt patch at line xxx&amp;lt;/code&amp;gt;. This appears to be caused by the fact that Eclipse does not add a blank line to the end of the patch file. If you have this problem, try adding a blank line at the end of the patch file.&lt;br /&gt;
&lt;br /&gt;
== Apply Patches and Pull Requests Without Branches ==&lt;br /&gt;
This can be done either with or without using branches. If you want to work on one patch at a time (similar to the SVN work flow), you can follow this work flow without branches.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# To apply a Git format patch: &amp;lt;code&amp;gt;git apply &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;. For example: &amp;lt;code&amp;gt;git apply mypatchfile.patch&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To apply an SVN format patch: &amp;lt;code&amp;gt;git apply -p0 &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;. For example: &amp;lt;code&amp;gt;git apply -p0 mypatchfile.patch.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, the proposed code changes have been made to your Joomla files. Now you can test the proposed changes to see whether they work correctly.&lt;br /&gt;
&lt;br /&gt;
To apply a Github pull request, add &amp;quot;.diff&amp;quot; to the end of the pull request URL. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://github.com/joomla/joomla-cms/pull/2531.diff&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will display a Git-formatted patch file in your browser. Save this file to your local machine and use the command above to apply it.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# To apply a Git format patch: Team&amp;amp;rarr;Apply patch. The Patch input specification window will show. You can apply a patch from a file or by copying the patch to the clipboard.&lt;br /&gt;
# Click Next to show the Target Resource window. Select the PHP project to apply to patch and click Next.&lt;br /&gt;
# The Review Patch window will show. IMPORTANT: If the patch is in Git format, set &amp;quot;Ignore leading path elements&amp;quot; to 1. If the patch is in SVN format, this is not needed.&lt;br /&gt;
# At this point, if the patch will apply correctly, the files will show with a blue arrow as shown below.{{-}}[[File:Git-document-screenshot-20120530-02.png|Git-document-screenshot-20120530-02.png]]&lt;br /&gt;
&lt;br /&gt;
Note: If a red &amp;quot;X&amp;quot; appears next to a file, it means the patch will not apply correctly. Check the patch file format to make sure you have the right setting for this type. Also, make sure you haven&#039;t already applied the patch.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# To apply a Git format patch: TortoiseGit&amp;amp;rarr;Review/apply single patch. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-08.png|Tortoisegit-tutorial-screenshot-20120612-08.png]]&lt;br /&gt;
# The following windows will show the files to be patched. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-09.png|Tortoisegit-tutorial-screenshot-20120612-09.png]]&lt;br /&gt;
# Click on the button &amp;quot;Patch all items&amp;quot;. The screen will now show the changes to the last file in the patch as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-10.png|Tortoisegit-tutorial-screenshot-20120612-10.png]]&lt;br /&gt;
&lt;br /&gt;
=== Video applying a patch using Github and PHPstorm ===&lt;br /&gt;
This 1 minute video shows how a .patch or .diff file is downloaded and added to your current PHPStorm project: {{#ev:youtube|7xdwNFPJdWk}}&lt;br /&gt;
&lt;br /&gt;
== Apply Patches and Pull Requests Using Branches ==&lt;br /&gt;
In many cases, it can be easier to create a Git branch for each issue you are working on. This way you can be working on several issues at one time while keeping the code changes for each issue separated. Creating branches in Git is very easy. Here is the work flow for applying patches using branches.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Create a new branch: &amp;lt;code&amp;gt;git branch issue-123&amp;lt;/code&amp;gt; (creates a new branch called issue-123).&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change to the branch: &amp;lt;code&amp;gt;commit -a&amp;lt;/code&amp;gt;. Now git will open the editor you chose when you installed git. Enter the commit message in the first line of the editor and save and exit. (If you are unfamiliar with the editor, you can either change the editor or use Eclipse, which bypasses this step in the process.) The commit message should be something short that tells you what you did, for example &amp;quot;Applied patch 123.patch&amp;quot;). &lt;br /&gt;
OR You can commit the code change to the branch wihtout opening editor using &amp;lt;code&amp;gt;commit -a -m &amp;quot;&amp;lt;type_your_message_here&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# At this point, the branch contains the modified version of the Joomla files for you to test. You can easily switch back to the standard files with the command: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;. To switch back to the modified version, use the command: &amp;lt;code&amp;gt;git checkout issue-123&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Create a new branch: Team&amp;amp;rarr;Switch To&amp;amp;rarr;New Branch. The Create a new branch window will show. Enter the name of the branch and click on Finish.&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change: Team&amp;amp;rarr;Commit. The Commit Changes window will show. Enter the commit message as shown in the example below.{{-}}[[Image:Git-document-screenshot-20120530-03.png|Git-document-screenshot-20120530-03.png]]{{-}} At this point, you can review the code changes or simply press the Commit button to commit the changes.&lt;br /&gt;
# To switch back to master or any other branch, again use Team&amp;amp;rarr;Switch To and select master or the desired branch.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Create a new branch: Right-click on the project folder and select TortoiseGit&amp;amp;rarr;Create Branch, as shown below.&lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-11.png|Tortoisegit-tutorial-screenshot-20120612-11.png]]&lt;br /&gt;
# The following screen will show. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-12.png]]&lt;br /&gt;
# Enter the name of the new branch in Branch and press OK. Note that this also switches you to the new branch.&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change: Right-click on project folder, then Git Commit -&amp;gt; &amp;lt;your branch&amp;gt; as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-16.png|Tortoisegit-tutorial-screenshot-20120612-16.png]]&lt;br /&gt;
# Enter a commit message, check that you are in the right branch, and press OK, as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-17.png|Tortoisegit-tutorial-screenshot-20120612-17.png]]&lt;br /&gt;
# The system will show a success message as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-18.png|Tortoisegit-tutorial-screenshot-20120612-18.png]]&lt;br /&gt;
&lt;br /&gt;
== Restore to Unmodified State (Without Branches) ==&lt;br /&gt;
If you are not using branches, when you are done testing an issue, you will need to restore your programs to the original unmodified state. Note that this is not needed if you are using branches. &lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Use this command to undo &#039;&#039;any&#039;&#039; file changes: &amp;lt;code&amp;gt;git reset --hard origin/master&amp;lt;/code&amp;gt;.  If it doesn&#039;t work, you can use &amp;lt;code&amp;gt;git apply -R &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;to the state before the patch was applied&#039;&#039;.  For example, &amp;lt;code&amp;gt;git apply -R folder/file.diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use this command to delete any new files added by the patch: &amp;lt;code&amp;gt;git clean -f -d&amp;lt;/code&amp;gt; &lt;br /&gt;
#: This removes added files and directories.&lt;br /&gt;
# Run the command: git status and make sure it says &amp;quot;nothing to commit (working directory clean)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Use this command to undo any file changes: Team&amp;amp;rarr;Reset to show the Reset window. Select &amp;quot;Hard&amp;quot; for the Reset type and click on Reset.&lt;br /&gt;
# To remove any new files added by a patch, simple navigate to the files and delete them.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Use this command to undo any file changes: TortoiseGit&amp;amp;rarr;Revert. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-21.png|Tortoisegit-tutorial-screenshot-20120612-21.png]] &lt;br /&gt;
#* Any changed files will show in a window as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-22.png|Tortoisegit-tutorial-screenshot-20120612-22.png]]&lt;br /&gt;
#* Check all changed files and click OK. The success screen will show as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-22a.png|Tortoisegit-tutorial-screenshot-20120612-22a.png]]&lt;br /&gt;
# Use this command to delete any new files: TortoiseGit&amp;amp;rarr;Clean up. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-23.png|Tortoisegit-tutorial-screenshot-20120612-23.png]]{{-}} The system will show a success window and the files that were deleted as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-24.png|Tortoisegit-tutorial-screenshot-20120612-24.png]]&lt;br /&gt;
&lt;br /&gt;
== Restore to Unmodified State With Branches ==&lt;br /&gt;
If you use branches, it is much easier to switch back to the unmodified programs. You simply change back to the master branch. Once you are done with an issue, you will likely want to delete the branch you created. Here are the commands for that.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Change back to the master branch: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Delete the desired branch: &amp;lt;code&amp;gt;git branch -D issue-123&amp;lt;/code&amp;gt; (where issue-123 is the branch name)&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Change back to the master branch: Team&amp;amp;rarr;Switch to&amp;amp;rarr;master.&lt;br /&gt;
# Delete the desired branch: Team&amp;amp;rarr;Advanced&amp;amp;rarr;Delete Branch and select the desired branch to delete.&lt;br /&gt;
&lt;br /&gt;
===TortoiseGit ===&lt;br /&gt;
# Change back to the master branch: TortoiseGit&amp;amp;rarr;Switch/Checkout. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-13.png|Tortoisegit-tutorial-screenshot-20120612-13.png]]&lt;br /&gt;
# Select master as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-25.png|Tortoisegit-tutorial-screenshot-20120612-25.png]]&lt;br /&gt;
# Delete the desired branch: &lt;br /&gt;
#* TortoiseGit&amp;amp;rarr;Show Log as shown here. [{{-}}[File:Tortoisegit-tutorial-screenshot-20120612-19.png|Tortoisegit-tutorial-screenshot-20120612-19.png]]&lt;br /&gt;
#* Right-click on the HEAD line and select Delete branch/tag&amp;amp;rarr;&amp;lt;name of the branch&amp;gt; as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-26.png|Tortoisegit-tutorial-screenshot-20120612-26.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Older Versions of Trunk ==&lt;br /&gt;
At times, it is helpful to figure out which commit might have introduced a new issue. With Git it is easy to restore the code base to any point in time and then test whether an issue was present or not. Note that this is more difficult with the CLI version.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Write some past commits to a temporary file. For example: &amp;lt;code&amp;gt;git log --since=&amp;quot;2 weeks ago&amp;quot; --mylogfile.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find the commit id of the desired date. Note that we only need the first 8 characters of the commit id.&lt;br /&gt;
# Checkout the desired commit: &amp;lt;code&amp;gt;git checkout &amp;lt;id&amp;gt;&amp;lt;/code&amp;gt; (for example: &amp;lt;code&amp;gt;git checkout ba574af0&amp;lt;/code&amp;gt;).&lt;br /&gt;
# See the command reference for git bisect for a more advanced way to find which commit caused a bug.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
&lt;br /&gt;
# Open the History View: Team&amp;amp;rarr;Show in History. This will show a view similar to this:{{-}}[[Image:Git-document-screenshot-20120530-04.png|900px]]{{-}}This view shows every commit to the CMS repository. To restore your local files to a prior time, right click on the desired row in the history view and select Checkout. Your local files will be changed to the state as of that commit. You can now test that version. &lt;br /&gt;
# To change to a different version, repeat this process. To change back to the master branch (the latest version), do Team&amp;amp;rarr;Switch to&amp;amp;rarr;Master.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Open the Log window. TortoiseGit&amp;amp;rarr;Show Log as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-19.png|Tortoisegit-tutorial-screenshot-20120612-19.png]]&lt;br /&gt;
# Right-click on the desired commit in the log listing and select Switch/Checkout to this... as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-27.png|Tortoisegit-tutorial-screenshot-20120612-27.png]]{{-}} You can now test that version.&lt;br /&gt;
# To change to a different version, repeat this process. To change back to the master branch (the latest version), do TortoiseGit&amp;amp;rarr;Switch/Checkout and select master.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:GitHub]]&lt;br /&gt;
[[Category:Video]]&lt;br /&gt;
[[Category:Testing]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Git_for_Testers_and_Trackers&amp;diff=107500</id>
		<title>Git for Testers and Trackers</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Git_for_Testers_and_Trackers&amp;diff=107500"/>
		<updated>2014-02-12T07:08:15Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* Video applying a patch using Github and PHPstorm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tasks are the typical ones needed for the Testing and Tracker teams.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Set up local Git repository (read only from trunk).&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Keep local repository updated with changes from trunk.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Apply patches and pull requests.&#039;&#039;&#039;&lt;br /&gt;
## Option with branches.&lt;br /&gt;
## Option without branches.&lt;br /&gt;
# &#039;&#039;&#039;Reset files to unmodified state.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Work with older versions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{tip|If you want to try a easy way for testing patches without learning git check this page: [[Component Patchtester for Testers]]}}&lt;br /&gt;
&lt;br /&gt;
== Testing and Tracker Teams Work Flow ==&lt;br /&gt;
People who want to test Pending issues need to do the following. These same tasks apply to people who want to monitor the tracker and confirm Open issues.&lt;br /&gt;
&lt;br /&gt;
# Create a local working copy of the Joomla trunk.&lt;br /&gt;
# Update this local copy with changes made to trunk.&lt;br /&gt;
# Apply proposed patches (from Confirmed issues) to trunk to see if they work correctly.&lt;br /&gt;
# Be able to restore the local copy to its unmodified state.&lt;br /&gt;
&lt;br /&gt;
Testers may or may not wish to use Git branches in their testing work. For simple testing of one issue at a time, creating local branches is not necessary. For more complex testing or for testing multiple issues at a time, it is more convenient to create a local branch for each issue. Both approaches are documented here.&lt;br /&gt;
&lt;br /&gt;
In some cases, it is important to identify when a bug or issue was first introduced. With Git it is easy to restore the local repository to a prior state (for example, to a point in time in the past) and test whether the issue was present in that version. This process is also documented here.&lt;br /&gt;
&lt;br /&gt;
== Create Local Read-Only Repository ==&lt;br /&gt;
Testers do not need to create a remote repository on Github. They can simply create a local clone of the CMS trunk on their local test machine. This clone will allow them to easily keep up with changes made to the CMS trunk.&lt;br /&gt;
&lt;br /&gt;
The steps for this process are shown below, first using the command-line-interface (CLI) for Git and then using Eclipse and eGit.&lt;br /&gt;
&lt;br /&gt;
=== CLI Commands ===&lt;br /&gt;
# Navigate to your project root folder, for example: &amp;lt;code&amp;gt;c:\xampp\htdocs\joomla-cms&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enter command: &amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;git://github.com/joomla/joomla-cms.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. The system will work for a few minutes, copying the entire remote repository to your local system. When you are done, you will have a local copy of the Joomla CMS repository in the current directory, along with a git repository (in the .git subdirectory). Note that this URL points to the joomla-cms project on Github. This project becomes the remote origin for the local git repository. For example, the command &amp;lt;code&amp;gt;git remote -v&amp;lt;/code&amp;gt; will now list origin as follows:&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:42px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
origin git://github.com/joomla/joomla-cms.git (fetch)&lt;br /&gt;
origin git://github.com/joomla/joomla-cms.git (push)&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eclipse Commands: ===&lt;br /&gt;
# Clone joomla-cms repository using the read-only URL. In Repositories View, click the button &amp;quot;Clone a Git Repository and add to this View&amp;quot;. This screen will show the following.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-02.png|Git-document-screenshot-20120529-02.png]]&lt;br /&gt;
# Select URI and click Next. The screen below will show.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-03.png|Git-document-screenshot-20120529-03.png]]&lt;br /&gt;
#Enter the URI git://github.com/joomla/joomla-cms.git as shown above. Then click Next to see the screen below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-04.png|Git-document-screenshot-20120529-04.png]]&lt;br /&gt;
#This will default to select all branches. Keep this default and click Next to show the screen below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120529-05.png|Git-document-screenshot-20120529-05.png]]&lt;br /&gt;
#Click on Browse and browse to the desired root directory for the project (for example, c:\xampp\htdocs\joomla_development\joomla-cms). Then click Finish. &lt;br /&gt;
# In Eclipse, create new PHP project in same folder. It will give a warning that files exist in this folder (which is OK).&lt;br /&gt;
# In Eclipse, right-click on the project and select Team&amp;amp;rarr;Share to share the project. In the Share Project window, select Git and click Next. In the Configure Git Repository window, select &amp;quot;Use or create repository in parent folder of project&amp;quot; and click finish.&lt;br /&gt;
# Note that this creates a relationship between the local repository and the joomla-cms repository on Github. You can see this relationship by opening the Repositories View and expanding the Remotes tree as shown below.&amp;lt;br/&amp;gt;[[Image:Git-document-screenshot-20120530-01.png|Git-document-screenshot-20120530-01.png]]&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit Commands: ===&lt;br /&gt;
# Clone joomla-cms repository using the read-only URL. Right-click on project folder (&amp;quot;tortoise-git&amp;quot; in this example) and select &amp;quot;Git Clone&amp;quot; as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-01.png|Tortoisegit-tutorial-screenshot-20120612-01.png]]{{-}}&lt;br /&gt;
# Enter the read-only URL and the desired project directory (again, &amp;quot;tortoise-git&amp;quot; in this example), as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-02.png|Tortoisegit-tutorial-screenshot-20120612-02.png]]{{-}}&lt;br /&gt;
# The system will work for a few minutes, showing progress in the Receiving objects window. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-03.png|Tortoisegit-tutorial-screenshot-20120612-03.png]]{{-}}&lt;br /&gt;
# When it is done, a success message will show as shown below. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-04.png|Tortoisegit-tutorial-screenshot-20120612-04.png]]{{-}}&lt;br /&gt;
&lt;br /&gt;
== Update Local Git Repository with Changes Made to Trunk ==&lt;br /&gt;
The first time you clone the Joomla CMS repository on Github, you will have the latest version of trunk. However, the trunk changes frequently, as bugs are fixed and new features added. This means that you need to keep your local repository up to date with these changes, for example each day when you start working.&lt;br /&gt;
&lt;br /&gt;
=== CLI: ===&lt;br /&gt;
# Make sure you are in the master branch of your local repository with this command: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Pull changes from the origin (joomla-cms): &amp;lt;code&amp;gt;git pull origin&amp;lt;/code&amp;gt;&lt;br /&gt;
# If there are any changes, these will show. Otherwise, it will say &amp;quot;Already up to date.&amp;quot;&lt;br /&gt;
# Check your status by entering: git status. The display should show:&lt;br /&gt;
  $ git status&amp;lt;br/&amp;gt; &amp;lt;nowiki&amp;gt;# On branch master&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt; nothing to commit (working directory clean)&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Make sure you are on the master branch: {{rarr|Team,Switch To,master}}. (If you are already on master, the master branch will be grayed out.)&lt;br /&gt;
# Pull changes from origin. Right-click on the project in PHP Explorer and select Team&amp;amp;rarr;Pull.&lt;br /&gt;
# If there were changes made, you will see something like this. {{-}}[[Image:Git-document-screenshot-20120529-01.png|Git-document-screenshot-20120529-01.png]]{{-}} Otherwise, you will see a message indicating that everything was up to date, like this.{{-}} [[Image:Git-document-screenshot-20120529-06.png|Git-document-screenshot-20120529-06.png]]&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Make sure you are on the master branch by entering TortoiseGit&amp;amp;rarr;Switch/Checkout and selecting the &amp;quot;master&amp;quot; branch.&lt;br /&gt;
# Pull changes from origin. Right-click on the project folder, and select TortoiseGit&amp;amp;rarr;Pull as shown below. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-05.png|Tortoisegit-tutorial-screenshot-20120612-05.png]]&lt;br /&gt;
# In Remote, select &amp;quot;origin&amp;quot; as shown below and press OK. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-06.png|Tortoisegit-tutorial-screenshot-20120612-06.png]]&lt;br /&gt;
# The system will show a success message as follows. {{-}}[[Image:Tortoisegit-tutorial-screenshot-20120612-05.png|Tortoisegit-tutorial-screenshot-20120612-05.png]]&lt;br /&gt;
&lt;br /&gt;
== Important Notes About Patch File Format ==&lt;br /&gt;
===Leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot;===&lt;br /&gt;
There is a confusing aspect of working with patches between SVN, Eclipse, Git and the CLI. This has to do with the way files are referenced inside a patch. Most patches made with Eclipse and Git will have a leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot; in front of the file names. For example, a standard Git patch will look like this:&lt;br /&gt;
&lt;br /&gt;
 diff --git a/components/com_content/controller.php b/components/com_content/controller.php&lt;br /&gt;
 index 53cc63a..25cee76 100644&lt;br /&gt;
 --- a/components/com_content/controller.php&lt;br /&gt;
 +++ b/components/com_content/controller.php&lt;br /&gt;
&lt;br /&gt;
However, patches made with SVN or using the &amp;quot;--no-prefix&amp;quot; option in Git will omit the leading &amp;quot;a/&amp;quot; and &amp;quot;b/&amp;quot; and show in the following format:&lt;br /&gt;
&lt;br /&gt;
 diff --git components/com_content/controller.php components/com_content/controller.php&lt;br /&gt;
 index 53cc63a..ba2de80 100644&lt;br /&gt;
 --- components/com_content/controller.php&lt;br /&gt;
 +++ components/com_content/controller.php&lt;br /&gt;
&lt;br /&gt;
Most patches will be in the first format. It is easy to apply patches in either format, but the exact commands are different. These are outlined below.&lt;br /&gt;
&lt;br /&gt;
===Error Applying Patch Using CLI===&lt;br /&gt;
In some cases, patches made using Eclipse may not apply correctly using the CLI &amp;quot;apply&amp;quot; command. For example, you might get an error: &amp;lt;code&amp;gt;fatal: corrupt patch at line xxx&amp;lt;/code&amp;gt;. This appears to be caused by the fact that Eclipse does not add a blank line to the end of the patch file. If you have this problem, try adding a blank line at the end of the patch file.&lt;br /&gt;
&lt;br /&gt;
== Apply Patches and Pull Requests Without Branches ==&lt;br /&gt;
This can be done either with or without using branches. If you want to work on one patch at a time (similar to the SVN work flow), you can follow this work flow without branches.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# To apply a Git format patch: &amp;lt;code&amp;gt;git apply &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;. For example: &amp;lt;code&amp;gt;git apply mypatchfile.patch&amp;lt;/code&amp;gt;.&lt;br /&gt;
# To apply an SVN format patch: &amp;lt;code&amp;gt;git apply -p0 &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt;. For example: &amp;lt;code&amp;gt;git apply -p0 mypatchfile.patch.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, the proposed code changes have been made to your Joomla files. Now you can test the proposed changes to see whether they work correctly.&lt;br /&gt;
&lt;br /&gt;
To apply a Github pull request, add &amp;quot;.diff&amp;quot; to the end of the pull request URL. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;https://github.com/joomla/joomla-cms/pull/2531.diff&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will display a Git-formatted patch file in your browser. Save this file to your local machine and use the command above to apply it.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# To apply a Git format patch: Team&amp;amp;rarr;Apply patch. The Patch input specification window will show. You can apply a patch from a file or by copying the patch to the clipboard.&lt;br /&gt;
# Click Next to show the Target Resource window. Select the PHP project to apply to patch and click Next.&lt;br /&gt;
# The Review Patch window will show. IMPORTANT: If the patch is in Git format, set &amp;quot;Ignore leading path elements&amp;quot; to 1. If the patch is in SVN format, this is not needed.&lt;br /&gt;
# At this point, if the patch will apply correctly, the files will show with a blue arrow as shown below.{{-}}[[File:Git-document-screenshot-20120530-02.png|Git-document-screenshot-20120530-02.png]]&lt;br /&gt;
&lt;br /&gt;
Note: If a red &amp;quot;X&amp;quot; appears next to a file, it means the patch will not apply correctly. Check the patch file format to make sure you have the right setting for this type. Also, make sure you haven&#039;t already applied the patch.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# To apply a Git format patch: TortoiseGit&amp;amp;rarr;Review/apply single patch. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-08.png|Tortoisegit-tutorial-screenshot-20120612-08.png]]&lt;br /&gt;
# The following windows will show the files to be patched. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-09.png|Tortoisegit-tutorial-screenshot-20120612-09.png]]&lt;br /&gt;
# Click on the button &amp;quot;Patch all items&amp;quot;. The screen will now show the changes to the last file in the patch as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-10.png|Tortoisegit-tutorial-screenshot-20120612-10.png]]&lt;br /&gt;
&lt;br /&gt;
=== Video applying a patch using Github and PHPstorm ===&lt;br /&gt;
This 1 minute video shows how a .patch or .diff file is downloaded and added to your current PHPStorm project: {{#ev:youtube|7xdwNFPJdWk}}&lt;br /&gt;
&lt;br /&gt;
== Apply Patches and Pull Requests Using Branches ==&lt;br /&gt;
In many cases, it can be easier to create a Git branch for each issue you are working on. This way you can be working on several issues at one time while keeping the code changes for each issue separated. Creating branches in Git is very easy. Here is the work flow for applying patches using branches.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Create a new branch: &amp;lt;code&amp;gt;git branch issue-123&amp;lt;/code&amp;gt; (creates a new branch called issue-123).&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change to the branch: &amp;lt;code&amp;gt;commit -a&amp;lt;/code&amp;gt;. Now git will open the editor you chose when you installed git. Enter the commit message in the first line of the editor and save and exit. (If you are unfamiliar with the editor, you can either change the editor or use Eclipse, which bypasses this step in the process.) The commit message should be something short that tells you what you did, for example &amp;quot;Applied patch 123.patch&amp;quot;). &lt;br /&gt;
# At this point, the branch contains the modified version of the Joomla files for you to test. You can easily switch back to the standard files with the command: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;. To switch back to the modified version, use the command: &amp;lt;code&amp;gt;git checkout issue-123&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Create a new branch: Team&amp;amp;rarr;Switch To&amp;amp;rarr;New Branch. The Create a new branch window will show. Enter the name of the branch and click on Finish.&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change: Team&amp;amp;rarr;Commit. The Commit Changes window will show. Enter the commit message as shown in the example below.{{-}}[[Image:Git-document-screenshot-20120530-03.png|Git-document-screenshot-20120530-03.png]]{{-}} At this point, you can review the code changes or simply press the Commit button to commit the changes.&lt;br /&gt;
# To switch back to master or any other branch, again use Team&amp;amp;rarr;Switch To and select master or the desired branch.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Create a new branch: Right-click on the project folder and select TortoiseGit&amp;amp;rarr;Create Branch, as shown below.&lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-11.png|Tortoisegit-tutorial-screenshot-20120612-11.png]]&lt;br /&gt;
# The following screen will show. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-12.png]]&lt;br /&gt;
# Enter the name of the new branch in Branch and press OK. Note that this also switches you to the new branch.&lt;br /&gt;
# Apply the patch as shown earlier.&lt;br /&gt;
# Commit the code change: Right-click on project folder, then Git Commit -&amp;gt; &amp;lt;your branch&amp;gt; as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-16.png|Tortoisegit-tutorial-screenshot-20120612-16.png]]&lt;br /&gt;
# Enter a commit message, check that you are in the right branch, and press OK, as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-17.png|Tortoisegit-tutorial-screenshot-20120612-17.png]]&lt;br /&gt;
# The system will show a success message as shown here. &lt;br /&gt;
::[[Image:Tortoisegit-tutorial-screenshot-20120612-18.png|Tortoisegit-tutorial-screenshot-20120612-18.png]]&lt;br /&gt;
&lt;br /&gt;
== Restore to Unmodified State (Without Branches) ==&lt;br /&gt;
If you are not using branches, when you are done testing an issue, you will need to restore your programs to the original unmodified state. Note that this is not needed if you are using branches. &lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Use this command to undo &#039;&#039;any&#039;&#039; file changes: &amp;lt;code&amp;gt;git reset --hard origin/master&amp;lt;/code&amp;gt;.  If it doesn&#039;t work, you can use &amp;lt;code&amp;gt;git apply -R &amp;lt;file&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;to the state before the patch was applied&#039;&#039;.  For example, &amp;lt;code&amp;gt;git apply -R folder/file.diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Use this command to delete any new files added by the patch: &amp;lt;code&amp;gt;git clean -f -d&amp;lt;/code&amp;gt; &lt;br /&gt;
#: This removes added files and directories.&lt;br /&gt;
# Run the command: git status and make sure it says &amp;quot;nothing to commit (working directory clean)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Use this command to undo any file changes: Team&amp;amp;rarr;Reset to show the Reset window. Select &amp;quot;Hard&amp;quot; for the Reset type and click on Reset.&lt;br /&gt;
# To remove any new files added by a patch, simple navigate to the files and delete them.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Use this command to undo any file changes: TortoiseGit&amp;amp;rarr;Revert. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-21.png|Tortoisegit-tutorial-screenshot-20120612-21.png]] &lt;br /&gt;
#* Any changed files will show in a window as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-22.png|Tortoisegit-tutorial-screenshot-20120612-22.png]]&lt;br /&gt;
#* Check all changed files and click OK. The success screen will show as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-22a.png|Tortoisegit-tutorial-screenshot-20120612-22a.png]]&lt;br /&gt;
# Use this command to delete any new files: TortoiseGit&amp;amp;rarr;Clean up. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-23.png|Tortoisegit-tutorial-screenshot-20120612-23.png]]{{-}} The system will show a success window and the files that were deleted as follows. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-24.png|Tortoisegit-tutorial-screenshot-20120612-24.png]]&lt;br /&gt;
&lt;br /&gt;
== Restore to Unmodified State With Branches ==&lt;br /&gt;
If you use branches, it is much easier to switch back to the unmodified programs. You simply change back to the master branch. Once you are done with an issue, you will likely want to delete the branch you created. Here are the commands for that.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Change back to the master branch: &amp;lt;code&amp;gt;git checkout master&amp;lt;/code&amp;gt;&lt;br /&gt;
# Delete the desired branch: &amp;lt;code&amp;gt;git branch -D issue-123&amp;lt;/code&amp;gt; (where issue-123 is the branch name)&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
# Change back to the master branch: Team&amp;amp;rarr;Switch to&amp;amp;rarr;master.&lt;br /&gt;
# Delete the desired branch: Team&amp;amp;rarr;Advanced&amp;amp;rarr;Delete Branch and select the desired branch to delete.&lt;br /&gt;
&lt;br /&gt;
===TortoiseGit ===&lt;br /&gt;
# Change back to the master branch: TortoiseGit&amp;amp;rarr;Switch/Checkout. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-13.png|Tortoisegit-tutorial-screenshot-20120612-13.png]]&lt;br /&gt;
# Select master as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-25.png|Tortoisegit-tutorial-screenshot-20120612-25.png]]&lt;br /&gt;
# Delete the desired branch: &lt;br /&gt;
#* TortoiseGit&amp;amp;rarr;Show Log as shown here. [{{-}}[File:Tortoisegit-tutorial-screenshot-20120612-19.png|Tortoisegit-tutorial-screenshot-20120612-19.png]]&lt;br /&gt;
#* Right-click on the HEAD line and select Delete branch/tag&amp;amp;rarr;&amp;lt;name of the branch&amp;gt; as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-26.png|Tortoisegit-tutorial-screenshot-20120612-26.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Older Versions of Trunk ==&lt;br /&gt;
At times, it is helpful to figure out which commit might have introduced a new issue. With Git it is easy to restore the code base to any point in time and then test whether an issue was present or not. Note that this is more difficult with the CLI version.&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
# Write some past commits to a temporary file. For example: &amp;lt;code&amp;gt;git log --since=&amp;quot;2 weeks ago&amp;quot; --mylogfile.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
# Find the commit id of the desired date. Note that we only need the first 8 characters of the commit id.&lt;br /&gt;
# Checkout the desired commit: &amp;lt;code&amp;gt;git checkout &amp;lt;id&amp;gt;&amp;lt;/code&amp;gt; (for example: &amp;lt;code&amp;gt;git checkout ba574af0&amp;lt;/code&amp;gt;).&lt;br /&gt;
# See the command reference for git bisect for a more advanced way to find which commit caused a bug.&lt;br /&gt;
&lt;br /&gt;
=== Eclipse ===&lt;br /&gt;
&lt;br /&gt;
# Open the History View: Team&amp;amp;rarr;Show in History. This will show a view similar to this:{{-}}[[Image:Git-document-screenshot-20120530-04.png|900px]]{{-}}This view shows every commit to the CMS repository. To restore your local files to a prior time, right click on the desired row in the history view and select Checkout. Your local files will be changed to the state as of that commit. You can now test that version. &lt;br /&gt;
# To change to a different version, repeat this process. To change back to the master branch (the latest version), do Team&amp;amp;rarr;Switch to&amp;amp;rarr;Master.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseGit ===&lt;br /&gt;
# Open the Log window. TortoiseGit&amp;amp;rarr;Show Log as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-19.png|Tortoisegit-tutorial-screenshot-20120612-19.png]]&lt;br /&gt;
# Right-click on the desired commit in the log listing and select Switch/Checkout to this... as shown here. {{-}}[[File:Tortoisegit-tutorial-screenshot-20120612-27.png|Tortoisegit-tutorial-screenshot-20120612-27.png]]{{-}} You can now test that version.&lt;br /&gt;
# To change to a different version, repeat this process. To change back to the master branch (the latest version), do TortoiseGit&amp;amp;rarr;Switch/Checkout and select master.&lt;br /&gt;
&lt;br /&gt;
[[Category:Bug Squad]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:GitHub]]&lt;br /&gt;
[[Category:Video]]&lt;br /&gt;
[[Category:Testing]]&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105917</id>
		<title>Joomla info page/hi-IN</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105917"/>
		<updated>2013-11-30T07:09:53Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* जुमला के लिए मदद कहाँ से मीलेगी? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hindi / हिन्दी =&lt;br /&gt;
== जुमला क्या है? ==&lt;br /&gt;
जुमला एक पुरस्कारसे सम्मानीत कन्टेन्ट मेनेजमेन्ट सिस्टम (CMS) है, जो आपको आपकी वेब साइट और शक्तिशाली ऑनलाइन अप्लीकेसन का निर्माण करने के लिए सक्षम बनाता है। अपने आसानी के उपयोग सहित कई पहलुओं ने जुमला को सबसे लोकप्रिय वेब साइट सॉफ्टवेयर उपलब्ध कराया है और इससे भी अधिक अच्छी बात ये है की जुमला एक ओपन-सोर्स सॉफ्टवेयर है। &lt;br /&gt;
&lt;br /&gt;
जूमला उपयोग करने के लाभ:&lt;br /&gt;
&lt;br /&gt;
* आसान इन्स्टोलेशन&lt;br /&gt;
* सरल वेबसाइट संभरण&lt;br /&gt;
* बढिया सुरक्षा और स्थिरता&lt;br /&gt;
* शक्तिशाली निःशुल्क और वाणिज्यिक प्रसारक&lt;br /&gt;
* अद्भुत टेम्‍पलेट जिनसे आप अपनी वेबसाइट सरलता से बदल सके&lt;br /&gt;
&lt;br /&gt;
== जुमला कैसे डाउनलोड करे? ==&lt;br /&gt;
* जूमला यहा से प्रयाप्त करे: http://www.joomla.org/download.html&lt;br /&gt;
* जूमला को हिन्दी मे यहा से प्रयाप्त करे (hi-IN): http://extensions.joomla.org/extensions/languages/translations-for-joomla/5811&lt;br /&gt;
&lt;br /&gt;
== एक्सटेंशन कैसे डाउनलोड करे? ==&lt;br /&gt;
* एक्सटेन्षन यहा से पाये: http://extensions.joomla.org/&lt;br /&gt;
* जूमला एक्सटेंशन भिन्न भाषा ओ में यहाँ से पाये : {http://extensions.joomla.org/extensions/languages/translations-for-joomla}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? ==&lt;br /&gt;
* अंग्रेजी प्रलेखन: http://docs.joomla.org/&lt;br /&gt;
* भाषाकीय प्रलेखन: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए मदद कहाँ से मीलेगी? ==&lt;br /&gt;
* मुफ्त अंग्रेजी मदद: http://forum.joomla.org/&lt;br /&gt;
* मुफ्त भाषाकिय मदद: &lt;br /&gt;
** http://forum.joomla.org/viewforum.php?f=162&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
* वाणिज्यिक सहायता: http://resources.joomla.org/ (website in English)&lt;br /&gt;
&lt;br /&gt;
== जुमला क्षेत्रीय कार्यक्रम / Joomladays ==&lt;br /&gt;
Local communities worldwide organise Joomla Days. A Joomla Day is an event created exclusively for Joomla users and projects and usually draws a regional audience. More information: http://community.joomla.org/events/joomla-days.html&lt;br /&gt;
&lt;br /&gt;
== जुमला उपयोग करने वाला समुह (JUG) ==&lt;br /&gt;
Local Joomla User Groups (JUG) are a great way to meet new people, get help with a project, or share your own knowledge with other Joomla users. Joomla is everywhere so check to see if there&#039;s already a JUG in your area. If not, you might want to consider forming one.&lt;br /&gt;
* JUGs in India: http://community.joomla.org/user-groups/asia-pacific/india.html&lt;br /&gt;
* JUG FAQ: http://community.joomla.org/user-groups/jug-faq.html &lt;br /&gt;
&lt;br /&gt;
== जुमला मे कैसे अपना योगदान दे? ==&lt;br /&gt;
* Answer Questions in any Joomla! Forum (link to: Where to get support for Joomla?)&lt;br /&gt;
* Write or Translate a Tutorial or Documentation (link to: Where to get documentation for Joomla?)&lt;br /&gt;
* Develop an Extension or Template &lt;br /&gt;
* Test or Add a Comment to an Issue Report&lt;br /&gt;
* Join a Joomla! Working Group&lt;br /&gt;
* Help Out at a Joomla! Event&lt;br /&gt;
* Contribute in Other Ways, see http://contribute.joomla.org/&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105916</id>
		<title>Joomla info page/hi-IN</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105916"/>
		<updated>2013-11-30T07:05:27Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hindi / हिन्दी =&lt;br /&gt;
== जुमला क्या है? ==&lt;br /&gt;
जुमला एक पुरस्कारसे सम्मानीत कन्टेन्ट मेनेजमेन्ट सिस्टम (CMS) है, जो आपको आपकी वेब साइट और शक्तिशाली ऑनलाइन अप्लीकेसन का निर्माण करने के लिए सक्षम बनाता है। अपने आसानी के उपयोग सहित कई पहलुओं ने जुमला को सबसे लोकप्रिय वेब साइट सॉफ्टवेयर उपलब्ध कराया है और इससे भी अधिक अच्छी बात ये है की जुमला एक ओपन-सोर्स सॉफ्टवेयर है। &lt;br /&gt;
&lt;br /&gt;
जूमला उपयोग करने के लाभ:&lt;br /&gt;
&lt;br /&gt;
* आसान इन्स्टोलेशन&lt;br /&gt;
* सरल वेबसाइट संभरण&lt;br /&gt;
* बढिया सुरक्षा और स्थिरता&lt;br /&gt;
* शक्तिशाली निःशुल्क और वाणिज्यिक प्रसारक&lt;br /&gt;
* अद्भुत टेम्‍पलेट जिनसे आप अपनी वेबसाइट सरलता से बदल सके&lt;br /&gt;
&lt;br /&gt;
== जुमला कैसे डाउनलोड करे? ==&lt;br /&gt;
* जूमला यहा से प्रयाप्त करे: http://www.joomla.org/download.html&lt;br /&gt;
* जूमला को हिन्दी मे यहा से प्रयाप्त करे (hi-IN): http://extensions.joomla.org/extensions/languages/translations-for-joomla/5811&lt;br /&gt;
&lt;br /&gt;
== एक्सटेंशन कैसे डाउनलोड करे? ==&lt;br /&gt;
* एक्सटेन्षन यहा से पाये: http://extensions.joomla.org/&lt;br /&gt;
* जूमला एक्सटेंशन भिन्न भाषा ओ में यहाँ से पाये : {http://extensions.joomla.org/extensions/languages/translations-for-joomla}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? ==&lt;br /&gt;
* अंग्रेजी प्रलेखन: http://docs.joomla.org/&lt;br /&gt;
* भाषाकीय प्रलेखन: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए मदद कहाँ से मीलेगी? ==&lt;br /&gt;
* Free English support: http://forum.joomla.org/&lt;br /&gt;
* Free {language} support: &lt;br /&gt;
** http://forum.joomla.org/viewforum.php?f=162&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
* Commercial support: http://resources.joomla.org/ (website in English)&lt;br /&gt;
&lt;br /&gt;
== जुमला क्षेत्रीय कार्यक्रम / Joomladays ==&lt;br /&gt;
Local communities worldwide organise Joomla Days. A Joomla Day is an event created exclusively for Joomla users and projects and usually draws a regional audience. More information: http://community.joomla.org/events/joomla-days.html&lt;br /&gt;
&lt;br /&gt;
== जुमला उपयोग करने वाला समुह (JUG) ==&lt;br /&gt;
Local Joomla User Groups (JUG) are a great way to meet new people, get help with a project, or share your own knowledge with other Joomla users. Joomla is everywhere so check to see if there&#039;s already a JUG in your area. If not, you might want to consider forming one.&lt;br /&gt;
* JUGs in India: http://community.joomla.org/user-groups/asia-pacific/india.html&lt;br /&gt;
* JUG FAQ: http://community.joomla.org/user-groups/jug-faq.html &lt;br /&gt;
&lt;br /&gt;
== जुमला मे कैसे अपना योगदान दे? ==&lt;br /&gt;
* Answer Questions in any Joomla! Forum (link to: Where to get support for Joomla?)&lt;br /&gt;
* Write or Translate a Tutorial or Documentation (link to: Where to get documentation for Joomla?)&lt;br /&gt;
* Develop an Extension or Template &lt;br /&gt;
* Test or Add a Comment to an Issue Report&lt;br /&gt;
* Join a Joomla! Working Group&lt;br /&gt;
* Help Out at a Joomla! Event&lt;br /&gt;
* Contribute in Other Ways, see http://contribute.joomla.org/&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105915</id>
		<title>Joomla info page/hi-IN</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105915"/>
		<updated>2013-11-30T07:00:53Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* एक्सटेंशन कैसे डाउनलोड करे? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hindi / हिन्दी =&lt;br /&gt;
== जुमला क्या है? ==&lt;br /&gt;
जुमला एक पुरस्कारसे सम्मानीत कन्टेन्ट मेनेजमेन्ट सिस्टम (CMS) है, जो आपको आपकी वेब साइट और शक्तिशाली ऑनलाइन अप्लीकेसन का निर्माण करने के लिए सक्षम बनाता है। अपने आसानी के उपयोग सहित कई पहलुओं ने जुमला को सबसे लोकप्रिय वेब साइट सॉफ्टवेयर उपलब्ध कराया है और इससे भी अधिक अच्छी बात ये है की जुमला एक ओपन-सोर्स सॉफ्टवेयर है। &lt;br /&gt;
&lt;br /&gt;
जूमला उपयोग करने के लाभ:&lt;br /&gt;
&lt;br /&gt;
* आसान इन्स्टोलेशन&lt;br /&gt;
* सरल वेबसाइट संभरण&lt;br /&gt;
* बढिया सुरक्षा और स्थिरता&lt;br /&gt;
* शक्तिशाली निःशुल्क और वाणिज्यिक प्रसारक&lt;br /&gt;
* अद्भुत टेम्‍पलेट जिनसे आप अपनी वेबसाइट सरलता से बदल सके&lt;br /&gt;
&lt;br /&gt;
== जुमला कैसे डाउनलोड करे? ==&lt;br /&gt;
* जूमला यहा से प्रयाप्त करे: http://www.joomla.org/download.html&lt;br /&gt;
* जूमला को हिन्दी मे यहा से प्रयाप्त करे (hi-IN): http://extensions.joomla.org/extensions/languages/translations-for-joomla/5811&lt;br /&gt;
&lt;br /&gt;
== एक्सटेंशन कैसे डाउनलोड करे? ==&lt;br /&gt;
* एक्सटेन्षन यहा से पाये: http://extensions.joomla.org/&lt;br /&gt;
* जूमला एक्सटेंशन भिन्न भाषा ओ में यहाँ से पाये : {http://extensions.joomla.org/extensions/languages/translations-for-joomla}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? ==&lt;br /&gt;
* English documentation: http://docs.joomla.org/&lt;br /&gt;
* {language} documentation: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए मदद कहाँ से मीलेगी? ==&lt;br /&gt;
* Free English support: http://forum.joomla.org/&lt;br /&gt;
* Free {language} support: &lt;br /&gt;
** http://forum.joomla.org/viewforum.php?f=162&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
* Commercial support: http://resources.joomla.org/ (website in English)&lt;br /&gt;
&lt;br /&gt;
== जुमला क्षेत्रीय कार्यक्रम / Joomladays ==&lt;br /&gt;
Local communities worldwide organise Joomla Days. A Joomla Day is an event created exclusively for Joomla users and projects and usually draws a regional audience. More information: http://community.joomla.org/events/joomla-days.html&lt;br /&gt;
&lt;br /&gt;
== जुमला उपयोग करने वाला समुह (JUG) ==&lt;br /&gt;
Local Joomla User Groups (JUG) are a great way to meet new people, get help with a project, or share your own knowledge with other Joomla users. Joomla is everywhere so check to see if there&#039;s already a JUG in your area. If not, you might want to consider forming one.&lt;br /&gt;
* JUGs in India: http://community.joomla.org/user-groups/asia-pacific/india.html&lt;br /&gt;
* JUG FAQ: http://community.joomla.org/user-groups/jug-faq.html &lt;br /&gt;
&lt;br /&gt;
== जुमला मे कैसे अपना योगदान दे? ==&lt;br /&gt;
* Answer Questions in any Joomla! Forum (link to: Where to get support for Joomla?)&lt;br /&gt;
* Write or Translate a Tutorial or Documentation (link to: Where to get documentation for Joomla?)&lt;br /&gt;
* Develop an Extension or Template &lt;br /&gt;
* Test or Add a Comment to an Issue Report&lt;br /&gt;
* Join a Joomla! Working Group&lt;br /&gt;
* Help Out at a Joomla! Event&lt;br /&gt;
* Contribute in Other Ways, see http://contribute.joomla.org/&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105914</id>
		<title>Joomla info page/hi-IN</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105914"/>
		<updated>2013-11-30T06:53:45Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* जुमला कैसे डाउनलोड करे? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hindi / हिन्दी =&lt;br /&gt;
== जुमला क्या है? ==&lt;br /&gt;
जुमला एक पुरस्कारसे सम्मानीत कन्टेन्ट मेनेजमेन्ट सिस्टम (CMS) है, जो आपको आपकी वेब साइट और शक्तिशाली ऑनलाइन अप्लीकेसन का निर्माण करने के लिए सक्षम बनाता है। अपने आसानी के उपयोग सहित कई पहलुओं ने जुमला को सबसे लोकप्रिय वेब साइट सॉफ्टवेयर उपलब्ध कराया है और इससे भी अधिक अच्छी बात ये है की जुमला एक ओपन-सोर्स सॉफ्टवेयर है। &lt;br /&gt;
&lt;br /&gt;
जूमला उपयोग करने के लाभ:&lt;br /&gt;
&lt;br /&gt;
* आसान इन्स्टोलेशन&lt;br /&gt;
* सरल वेबसाइट संभरण&lt;br /&gt;
* बढिया सुरक्षा और स्थिरता&lt;br /&gt;
* शक्तिशाली निःशुल्क और वाणिज्यिक प्रसारक&lt;br /&gt;
* अद्भुत टेम्‍पलेट जिनसे आप अपनी वेबसाइट सरलता से बदल सके&lt;br /&gt;
&lt;br /&gt;
== जुमला कैसे डाउनलोड करे? ==&lt;br /&gt;
* जूमला यहा से प्रयाप्त करे: http://www.joomla.org/download.html&lt;br /&gt;
* जूमला को हिन्दी मे यहा से प्रयाप्त करे (hi-IN): http://extensions.joomla.org/extensions/languages/translations-for-joomla/5811&lt;br /&gt;
&lt;br /&gt;
== एक्सटेंशन कैसे डाउनलोड करे? ==&lt;br /&gt;
* Download extensions: http://extensions.joomla.org/&lt;br /&gt;
* Download {language} language packs for extensions: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? ==&lt;br /&gt;
* English documentation: http://docs.joomla.org/&lt;br /&gt;
* {language} documentation: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए मदद कहाँ से मीलेगी? ==&lt;br /&gt;
* Free English support: http://forum.joomla.org/&lt;br /&gt;
* Free {language} support: &lt;br /&gt;
** http://forum.joomla.org/viewforum.php?f=162&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
* Commercial support: http://resources.joomla.org/ (website in English)&lt;br /&gt;
&lt;br /&gt;
== जुमला क्षेत्रीय कार्यक्रम / Joomladays ==&lt;br /&gt;
Local communities worldwide organise Joomla Days. A Joomla Day is an event created exclusively for Joomla users and projects and usually draws a regional audience. More information: http://community.joomla.org/events/joomla-days.html&lt;br /&gt;
&lt;br /&gt;
== जुमला उपयोग करने वाला समुह (JUG) ==&lt;br /&gt;
Local Joomla User Groups (JUG) are a great way to meet new people, get help with a project, or share your own knowledge with other Joomla users. Joomla is everywhere so check to see if there&#039;s already a JUG in your area. If not, you might want to consider forming one.&lt;br /&gt;
* JUGs in India: http://community.joomla.org/user-groups/asia-pacific/india.html&lt;br /&gt;
* JUG FAQ: http://community.joomla.org/user-groups/jug-faq.html &lt;br /&gt;
&lt;br /&gt;
== जुमला मे कैसे अपना योगदान दे? ==&lt;br /&gt;
* Answer Questions in any Joomla! Forum (link to: Where to get support for Joomla?)&lt;br /&gt;
* Write or Translate a Tutorial or Documentation (link to: Where to get documentation for Joomla?)&lt;br /&gt;
* Develop an Extension or Template &lt;br /&gt;
* Test or Add a Comment to an Issue Report&lt;br /&gt;
* Join a Joomla! Working Group&lt;br /&gt;
* Help Out at a Joomla! Event&lt;br /&gt;
* Contribute in Other Ways, see http://contribute.joomla.org/&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105913</id>
		<title>Joomla info page/hi-IN</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105913"/>
		<updated>2013-11-30T06:50:23Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* जुमला क्या है? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hindi / हिन्दी =&lt;br /&gt;
== जुमला क्या है? ==&lt;br /&gt;
जुमला एक पुरस्कारसे सम्मानीत कन्टेन्ट मेनेजमेन्ट सिस्टम (CMS) है, जो आपको आपकी वेब साइट और शक्तिशाली ऑनलाइन अप्लीकेसन का निर्माण करने के लिए सक्षम बनाता है। अपने आसानी के उपयोग सहित कई पहलुओं ने जुमला को सबसे लोकप्रिय वेब साइट सॉफ्टवेयर उपलब्ध कराया है और इससे भी अधिक अच्छी बात ये है की जुमला एक ओपन-सोर्स सॉफ्टवेयर है। &lt;br /&gt;
&lt;br /&gt;
जूमला उपयोग करने के लाभ:&lt;br /&gt;
&lt;br /&gt;
* आसान इन्स्टोलेशन&lt;br /&gt;
* सरल वेबसाइट संभरण&lt;br /&gt;
* बढिया सुरक्षा और स्थिरता&lt;br /&gt;
* शक्तिशाली निःशुल्क और वाणिज्यिक प्रसारक&lt;br /&gt;
* अद्भुत टेम्‍पलेट जिनसे आप अपनी वेबसाइट सरलता से बदल सके&lt;br /&gt;
&lt;br /&gt;
== जुमला कैसे डाउनलोड करे? ==&lt;br /&gt;
* Download Joomla: http://www.joomla.org/download.html&lt;br /&gt;
* Download Joomla language pack for Hindi (hi-IN): http://extensions.joomla.org/extensions/languages/translations-for-joomla/5811&lt;br /&gt;
&lt;br /&gt;
== एक्सटेंशन कैसे डाउनलोड करे? ==&lt;br /&gt;
* Download extensions: http://extensions.joomla.org/&lt;br /&gt;
* Download {language} language packs for extensions: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? ==&lt;br /&gt;
* English documentation: http://docs.joomla.org/&lt;br /&gt;
* {language} documentation: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए मदद कहाँ से मीलेगी? ==&lt;br /&gt;
* Free English support: http://forum.joomla.org/&lt;br /&gt;
* Free {language} support: &lt;br /&gt;
** http://forum.joomla.org/viewforum.php?f=162&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
* Commercial support: http://resources.joomla.org/ (website in English)&lt;br /&gt;
&lt;br /&gt;
== जुमला क्षेत्रीय कार्यक्रम / Joomladays ==&lt;br /&gt;
Local communities worldwide organise Joomla Days. A Joomla Day is an event created exclusively for Joomla users and projects and usually draws a regional audience. More information: http://community.joomla.org/events/joomla-days.html&lt;br /&gt;
&lt;br /&gt;
== जुमला उपयोग करने वाला समुह (JUG) ==&lt;br /&gt;
Local Joomla User Groups (JUG) are a great way to meet new people, get help with a project, or share your own knowledge with other Joomla users. Joomla is everywhere so check to see if there&#039;s already a JUG in your area. If not, you might want to consider forming one.&lt;br /&gt;
* JUGs in India: http://community.joomla.org/user-groups/asia-pacific/india.html&lt;br /&gt;
* JUG FAQ: http://community.joomla.org/user-groups/jug-faq.html &lt;br /&gt;
&lt;br /&gt;
== जुमला मे कैसे अपना योगदान दे? ==&lt;br /&gt;
* Answer Questions in any Joomla! Forum (link to: Where to get support for Joomla?)&lt;br /&gt;
* Write or Translate a Tutorial or Documentation (link to: Where to get documentation for Joomla?)&lt;br /&gt;
* Develop an Extension or Template &lt;br /&gt;
* Test or Add a Comment to an Issue Report&lt;br /&gt;
* Join a Joomla! Working Group&lt;br /&gt;
* Help Out at a Joomla! Event&lt;br /&gt;
* Contribute in Other Ways, see http://contribute.joomla.org/&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105912</id>
		<title>Joomla info page/hi-IN</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_info_page/hi-IN&amp;diff=105912"/>
		<updated>2013-11-30T06:48:36Z</updated>

		<summary type="html">&lt;p&gt;Gunjanpatel: /* जुमला क्या है? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hindi / हिन्दी =&lt;br /&gt;
== जुमला क्या है? ==&lt;br /&gt;
जुमला एक पुरस्कारसे सम्मानीत कन्टेन्ट मेनेजमेन्ट सिस्टम (CMS) है, जो आपको आपकी वेब साइट और शक्तिशाली ऑनलाइन अप्लीकेसन का निर्माण करने के लिए सक्षम बनाता है। अपने आसानी के उपयोग सहित कई पहलुओं ने जुमला को सबसे लोकप्रिय वेब साइट सॉफ्टवेयर उपलब्ध कराया है और इससे भी अधिक अच्छी बात ये है की जुमला एक ओपन-सोर्स सॉफ्टवेयर है। &lt;br /&gt;
&lt;br /&gt;
जुमल उपयोग करने के लाभ:&lt;br /&gt;
&lt;br /&gt;
* आसान इन्स्टोलेशन&lt;br /&gt;
* सरल वेबसाइट संभरण&lt;br /&gt;
* बढिया सुरक्षा और स्थिरता&lt;br /&gt;
* शक्तिशाली निःशुल्क और वाणिज्यिक प्रसारक&lt;br /&gt;
* अद्भुत टेम्‍पलेट जिनसे आप अपनी वेबसाइट सरलता से बदल सके&lt;br /&gt;
&lt;br /&gt;
== जुमला कैसे डाउनलोड करे? ==&lt;br /&gt;
* Download Joomla: http://www.joomla.org/download.html&lt;br /&gt;
* Download Joomla language pack for Hindi (hi-IN): http://extensions.joomla.org/extensions/languages/translations-for-joomla/5811&lt;br /&gt;
&lt;br /&gt;
== एक्सटेंशन कैसे डाउनलोड करे? ==&lt;br /&gt;
* Download extensions: http://extensions.joomla.org/&lt;br /&gt;
* Download {language} language packs for extensions: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए दस्तावेज़ीकरण कहाँ से पाए जाए? ==&lt;br /&gt;
* English documentation: http://docs.joomla.org/&lt;br /&gt;
* {language} documentation: {http://www.example.com/}&lt;br /&gt;
&lt;br /&gt;
== जुमला के लिए मदद कहाँ से मीलेगी? ==&lt;br /&gt;
* Free English support: http://forum.joomla.org/&lt;br /&gt;
* Free {language} support: &lt;br /&gt;
** http://forum.joomla.org/viewforum.php?f=162&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
** {http://www.example.com/}&lt;br /&gt;
* Commercial support: http://resources.joomla.org/ (website in English)&lt;br /&gt;
&lt;br /&gt;
== जुमला क्षेत्रीय कार्यक्रम / Joomladays ==&lt;br /&gt;
Local communities worldwide organise Joomla Days. A Joomla Day is an event created exclusively for Joomla users and projects and usually draws a regional audience. More information: http://community.joomla.org/events/joomla-days.html&lt;br /&gt;
&lt;br /&gt;
== जुमला उपयोग करने वाला समुह (JUG) ==&lt;br /&gt;
Local Joomla User Groups (JUG) are a great way to meet new people, get help with a project, or share your own knowledge with other Joomla users. Joomla is everywhere so check to see if there&#039;s already a JUG in your area. If not, you might want to consider forming one.&lt;br /&gt;
* JUGs in India: http://community.joomla.org/user-groups/asia-pacific/india.html&lt;br /&gt;
* JUG FAQ: http://community.joomla.org/user-groups/jug-faq.html &lt;br /&gt;
&lt;br /&gt;
== जुमला मे कैसे अपना योगदान दे? ==&lt;br /&gt;
* Answer Questions in any Joomla! Forum (link to: Where to get support for Joomla?)&lt;br /&gt;
* Write or Translate a Tutorial or Documentation (link to: Where to get documentation for Joomla?)&lt;br /&gt;
* Develop an Extension or Template &lt;br /&gt;
* Test or Add a Comment to an Issue Report&lt;br /&gt;
* Join a Joomla! Working Group&lt;br /&gt;
* Help Out at a Joomla! Event&lt;br /&gt;
* Contribute in Other Ways, see http://contribute.joomla.org/&lt;/div&gt;</summary>
		<author><name>Gunjanpatel</name></author>
	</entry>
</feed>