<?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=Uglyeoin</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=Uglyeoin"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Uglyeoin"/>
	<updated>2026-05-19T12:00:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Joomla_3.x_to_4.x_Step_by_Step_Migration&amp;diff=714642</id>
		<title>Joomla 3.x to 4.x Step by Step Migration</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Joomla_3.x_to_4.x_Step_by_Step_Migration&amp;diff=714642"/>
		<updated>2020-08-18T21:25:51Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Got bullets working&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{needs|needs updating|Upload screenshots}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{warning|&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This guide assumes you are starting on Joomla 3.10.x. If you are on a earlier version make sure you upgrade to Joomla 3.10 first before moving to Joomla 4.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The following are step by step instructions to migrate your 3.10.x site to Joomla! 4.x. While there are hundreds of different scenarios, this will give you the basic procedure to follow. Very complex migrations will likely be a result of installed third-party extensions. You are encouraged to contact the developers of third-party extensions installed on your Joomla site for their suggested path to migrate their extensions.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Intro == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The migration from Joomla! 3.10.x to 4.x is considered a mini-migration. This is because the Joomla! core extensions will upgrade with a “one-click” upgrade via the Joomla! Update component in the backend administrator side of Joomla. Many third-party extensions are a one-click upgrade too. Some are not. You need to look at each one and determine what path the extension needs to follow to get from 3.10 to 4.x. If you haven&#039;t already, you might be interested in reading the [[S:MyLanguage/Migration Step by Step Self Assessment|Self Assessment]] and [[S:MyLanguage/Planning for Mini-Migration - Joomla 3.10 to 4.x|Planning for 3.10 to 4.x Migration]] prior to following the steps below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Joomla! Core Extensions:&lt;br /&gt;
* Categories&lt;br /&gt;
* Articles&lt;br /&gt;
* Menus&lt;br /&gt;
* Modules (core modules - not third-party)&lt;br /&gt;
* Banners&lt;br /&gt;
* Fields&lt;br /&gt;
* Content History&lt;br /&gt;
* Contacts&lt;br /&gt;
* Messaging&lt;br /&gt;
* Newsfeeds&lt;br /&gt;
* Redirect&lt;br /&gt;
* Search (decoupled in 4.x. Use Smart Search going forward. See Notes under Assess Each Extension)&lt;br /&gt;
* Smart Search&lt;br /&gt;
* Tags&lt;br /&gt;
* Weblinks (decoupled but your site may be using it and it will migrate. See Notes under Assess Each Extension)&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step by Step == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
=== Set up a Development Location ===&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
# Make sure you are running the latest Joomla 3.10.x version before proceeding.&lt;br /&gt;
# Take a backup of your live 3.10.x site. You can use a suggested tool (see the &#039;&#039;Suggested Tools&#039;&#039; at the bottom of page) or you can do this manually.&lt;br /&gt;
#*[[S:MyLanguage/Backup_Basics_for_a_Joomla!_Web_Site|Backup Basics for a Joomla! Web Site]]&lt;br /&gt;
#*[[S:MyLanguage/What_are_the_best_practices_for_site_backups%3F|What are the best practices for site backups?]]&lt;br /&gt;
# Make sure your environment meets the [https://downloads.joomla.org/technical-requirements technical requirements for Joomla 4] before proceeding.&lt;br /&gt;
# Create a new database and new user to restore your 3.10.x site to. &lt;br /&gt;
# Create a testing site or build area to work in and restore the backup copy of your 3.10.x site in one of the following places:&lt;br /&gt;
#* A subdomain.&lt;br /&gt;
#* A subdirectory.&lt;br /&gt;
#* A local device. Joomla has a detailed tutorial on installing [http://sourceforge.net/projects/xampp/ XAMPP] at [[XAMPP]]. However [https://www.wampserver.com/en/ WAMP], [https://www.mamp.info/en/windows/ MAMP], [https://sourceforge.net/projects/lampas/ LAMP] are all suitable alternatives.&lt;br /&gt;
#* A new hosting account on a temporary domain in the root. (If you would like to change hosts in the process of migration.)&lt;br /&gt;
#** Restoring a site on a local device. See [[S:MyLanguage/Installing Joomla locally|Installing Joomla locally]] and [[S:MyLanguage/Setting up your workstation for Joomla development|Setting up your workstation for Joomla development]].&lt;br /&gt;
#** Restoring a site with a tool listed at the bottom of the page. (Read the developer documentation.)&lt;br /&gt;
# In your test location, update your Joomla! 3.10.x instance to the latest maintenance release.&lt;br /&gt;
# Make sure you have the latest database schema updated to the latest version 3.10.x version by going to {{rarr|Extension Manager,Database}} tab. If your schema is not up to date as in the following image, click the &#039;&#039;&#039;Fix&#039;&#039;&#039; button:&amp;lt;/translate&amp;gt;{{-}}[[File:J310-admin-extension-database-fix-&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|border]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
# Empty trash: Do you have any articles in the trash? If so, delete them (and any applicable media that may be associated with them if not in use elsewhere on the site). Articles (categories and menu items too) left in the trash can cause issues in having a migration to complete without errors.&lt;br /&gt;
# Test.&lt;br /&gt;
# Backup again.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Assess Each Extension === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
In your [[Planning_for_Mini-Migration_-_Joomla_3.10_to_4.x|planning]], you determined which third-party extensions were staying or going and how they migrate. For this portion of the Step by Step, you’ll be using two different sections of the site extensively; The Pre-Update Check in {{rarr|Components,Joomla! Update}} and {{rarr|Extensions,Manage,Manage}}. You are going to be looking at every single extension installed on your site. You will be determining if they need to be updated to the latest version or uninstalled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
# Using the &#039;&#039;&#039;Pre-Update Check&#039;&#039;&#039;: in order to use the Pre-Update Check, you will need to set the Joomla! Update component to Joomla 4. To do this follow:&lt;br /&gt;
# Go to {{rarr|Components,Joomla Update}}. (It should say no updates found. If it doesn’t, update Joomla to the latest version (must be 3.10.x) and test. Then do another backup.) Click on the Options button at the top right corner.&lt;br /&gt;
# Select &#039;&#039;Joomla Next&#039;&#039; (This is the current text - it may be different in the future) from the drop-down for Update server. &lt;br /&gt;
Need an image just like below in go to j4 but the thing will not let me do it.&lt;br /&gt;
# Click Save &amp;amp; Close&lt;br /&gt;
# You will then see your Installed Joomla Version, the latest Joomla! version and the URL for the update package. Joomla will show you the requirements again for Joomla 4. If it flags that you have either an incompatible system or extensions it will tell you here. Take a moment to review this page. &lt;br /&gt;
Need an image just like below in the going to 4 section but the thing will not let me do it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
BIG NOTE: DO NOT UPDATE TO JOOMLA! 4 RIGHT NOW. THIS IS ONLY TO PREPARE YOUR THIRD-PARTY EXTENSIONS AND GET THE SITE COMPATIBLE WITH JOOMLA 4.&lt;br /&gt;
# Look at the Pre-Update Check and the Extension Pre-Update Check in the Pre-Update Check tab of the Joomla Update component. If any extension that isn’t in your planning is listed here, add it to your list of extensions to investigate.&lt;br /&gt;
# If you migrated from Joomla! 2.5 to 3.x in the past, there may be some leftover extensions that need to be cleaned up. The following are older 2.5 or 3.x extensions that need to be uninstalled before updating to Joomla 4:&lt;br /&gt;
## plg_content_geshi&lt;br /&gt;
## Bluestork Administrator Template&lt;br /&gt;
## Beez_20&lt;br /&gt;
## Beez5&lt;br /&gt;
## Atomic&lt;br /&gt;
## When it comes to templates, uninstall all core frontend or backend templates except Protostar and Beez3 (frontend templates) and Isis or Hathor (administrator templates)&lt;br /&gt;
## If you come across other files that need to be uninstalled, please add them to this page. This is a wiki so anyone can add to the page. Thank you in advance for your service.&lt;br /&gt;
# You will notice the tags for whether an extension is compatible or not. These tags generally tell a true story if they say No or Yes. If they say “Missing Compatibility Tag” it means that the extension developer didn’t use a tag in their extension so we don’t know if it is or isn’t compatible with Joomla 4. Talk to the developer to verify.&lt;br /&gt;
# &#039;&#039;&#039;Update Extensions&#039;&#039;&#039;: update any extensions that you will keep in your website. In Joomla! 3.10.x you can go to {{rarr|Extension Manager,Update tab}} and click &#039;&#039;&#039;Find Updates&#039;&#039;&#039; which will add a tooltip in the Version column, under the Manage tab, giving some compatibility information from the backend. This functionality only supports extensions that update via the Extension Manager Update tab. If you have extensions installed that do not use the Joomla extension update they need to be assessed manually as detailed below. The same goes for those extensions that have a tooltip. You will still need to check the type of package and migration path with the extension developer to verify how to upgrade/migrate.&lt;br /&gt;
# Uninstall and Investigate Extensions: go to {{rarr|Extension Manager,Manage tab}}&lt;br /&gt;
# Click the drop-down for Type.&lt;br /&gt;
# Select Package from the drop-down.&amp;lt;/translate&amp;gt;{{-}}[[File:J310-admin-extension-manage-package-&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|border]]{{-}}{{note|&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Selecting Package first is recommended because if there is something you need to uninstall in a package, it will automatically uninstall the associated Modules, Plugins, or anything else in the package at one time.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
# Uninstall any Packages that are no longer needed or will not be migrating to Joomla 4.&lt;br /&gt;
# Repeat this process of going through the Manage tab for all Types in the drop-down: Component, File, Language, Library, Module, Plugin and Template. If the Author states Joomla! Project, then leave those extensions alone. For all others, make sure that you uninstall those not in use or not compatible with Joomla! 4.x.&amp;lt;/translate&amp;gt;{{-}}{{note|&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE!&#039;&#039;&#039; You will not be able to uninstall any template that is set as default. You will need to select a Core supported template like Beez3 or Protostar and then uninstall the template if you need to do so.&amp;lt;/translate&amp;gt;|type=serious}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
# Make a note of any versions of Packages and Components currently running that you will be keeping on your site. You can use the [https://docs.joomla.org/images/7/7a/3to4-Third-Party_Extension_Checklist_Inventory_Sheet.pdf Third Party Extension Checklist and Inventory Sheet] or just copy/paste them into a document for reference.&lt;br /&gt;
# For any extensions you are keeping but don&#039;t use the Extension Manager to one-click update ({{rarr|Extensions,Manage,Update}}) update all extensions to the latest versions.&lt;br /&gt;
# Before and as you update, note if the extensions have both 3.10.x &amp;amp; 4.x versions in the same package. If so, they will be fine to &amp;quot;one-click update.&amp;quot; If not, and 3.10 and 4.x have different packages, you need to look at them case by case. They will normally fall into one of the following scenarios:&lt;br /&gt;
#* The extension has separate packages but upon upgrading to 4.x, they automatically detect this and still work. Make sure the developer confirms this.&lt;br /&gt;
#* The extension has separate packages that need to be uninstalled in 3.10.x and then installed with the Joomla 4.x version once the site is migrated. An example of this might be a content plugin. It is very simple to uninstall it in 3.10.x and then install it again in 4.x.&lt;br /&gt;
#* See [[S:MyLanguage/Template_Considerations_During_Migration|Template Considerations]] for more specific information on templates and [[S:MyLanguage/J3.x:Converting_A_Previous_Joomla!_Version_Template|Converting a previous Joomla! Version template]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Notes on Search (com_search) ==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Search (com_search) will be decoupled in Joomla 4.x. Search (com_search) will migrate to Joomla 4. After migration, you&#039;ll need to update it to the Joomla 4.x version via com_installer. It will continue to be maintained, but more the same way a third-party extension is by receiving updates via com_installer. It is recommended to use Smart Search (com_finder) going forward. Search will still be available at https://extensions.joomla.org/category/official-extensions/.&lt;br /&gt;
&lt;br /&gt;
==== Notes on Weblinks ==== &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Weblinks was decoupled back in Joomla 3.4. If it was in use on a 2.5 site, the migration process would note this and migrate the Weblinks component and data. For the migration from 3.10.x to 4.x, it will be the same. It is still available and maintained on the JED at [https://extensions.joomla.org/category/official-extensions/ Official Extensions].&lt;br /&gt;
&lt;br /&gt;
=== Going to Joomla! 4.x === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Once you have either updated or uninstalled your third-party extensions so that only those compatible with Joomla! 4 remain in your installation, continue with the following steps:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
# Go to {{rarr|Site,Global Configuration,Server tab}} and turn Error Reporting from System Default to Maximum. Make sure to Save &amp;amp; Close.&amp;lt;/translate&amp;gt;{{-}} [[File:J310-system-global-config-server-tab-&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|border|500px]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
# Take another backup.&lt;br /&gt;
# Go to {{rarr|Components,Joomla Update}}. (It should say no updates found. If it doesn’t, update Joomla to the latest version and test. Then do another backup.) Click on the Options button at the top right corner.&lt;br /&gt;
# Select &#039;&#039;Joomla Next&#039;&#039; (This is the current text—it may be different in the future.) from the drop-down for Update server.&amp;lt;/translate&amp;gt;{{-}}[[File:J310-component-joomla-update-select-support-&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|border|500px]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
# Click Save &amp;amp; Close.&lt;br /&gt;
# You will then see your Installed Joomla Version, the Latest Joomla! version and the URL for the update package. Joomla will show you the requirements again for Joomla 4. If it flags that you have either an incompatible system or extensions it will tell you here. Take a moment to review this page.&amp;lt;/translate&amp;gt;{{-}}[[File:J310-to-j4-dev-update-found-&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|border]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
# If the update is not showing up, go to {{rarr|Extension manager,Update}} and press Purge Cache from the toolbar. Now the update to Joomla! 4 should show up.&lt;br /&gt;
# Cross your fingers, and make sure you have that backup available in case.&lt;br /&gt;
# Click the Install the Update button.&lt;br /&gt;
# Make tea whilst the spinning circle goes round and round. The amount of time the wheel spins is dependent on your site, Internet connection and server speed. The process takes about two minutes. When the update is finished, you will probably be logged out of the Administrator. Sign in again. Twice.&lt;br /&gt;
# If all goes well, you will get to a totally new look to the backend administrator panel.&amp;lt;/translate&amp;gt;{{-}}[[File:j4-administrator-overview-&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
en&amp;lt;/translate&amp;gt;.png|border]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
# Click the Clear Cache button. You will now see a &#039;&#039;A Joomla update was found&#039;&#039; notice for a later version of Joomla. Postpone this update temporarily.&lt;br /&gt;
# Go to {{rarr|Extensions,Manage,Database}} and click &#039;&#039;Fix&#039;&#039; if any errors show.&lt;br /&gt;
# In the Extension Manager, go to Discover and see if there are any extensions to install. (There shouldn&#039;t be any!)&lt;br /&gt;
# Go to the frontend of your site and see if it shows up even if it’s not the right template. If so, continue. If not, see [[S:MyLanguage/Joomla 3.10 to 4.x Common Migration Errors|common errors during migration]].&lt;br /&gt;
# Take a backup.&lt;br /&gt;
# Install your new template or other extensions if you have them to install. Back up often.&lt;br /&gt;
# Configure them. Back up often.&lt;br /&gt;
# Test everything. Back up often.&lt;br /&gt;
# If everything works as expected, turn Error Reporting back to System Default ({{rarr|System,Global Configuration,Server tab}}). Make sure to Save &amp;amp; Close.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Going Live with your Joomla! 4.x Site === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
# When you’re ready to go live, back up your 3.10 site for the last time. Restore it in a subdirectory or subdomain if you would like to.&lt;br /&gt;
# Back up your Joomla! 4.x site and move or restore your Joomla! 4.x site to the root (or change nameservers if you were building on a temporary domain at a new hosting account root).&lt;br /&gt;
# Test again.&lt;br /&gt;
# Remove the Joomla! 3.10 site from the server within a couple of days unless you have edited your &#039;&#039;robots.txt&#039;&#039; file to block the search engine spiders.&lt;br /&gt;
# Remove all development sites you have been working with or keep them up-to-date if they are running a current version in order to ward off hack attempts on your server. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
If you had data change on the 3.10 site while you were migrating to 4.x, you will want to get that data moved over to the 4.x site before going live. You can do this manually (make sure you keep the same user IDs - go in order) or by using a [https://extensions.joomla.org/category/migration-a-conversion/data-import-a-export%20transfer%20tool/third-party%20extension/ third party extension].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suggested Tools == &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* [http://extensions.joomla.org/extensions/access-a-security/site-security/backup/1606 Akeeba Backup] is very popular for backup and restore. See more [https://extensions.joomla.org/tags/backup/ backup tools].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
[[Category:Migration]]&lt;br /&gt;
[[Category:Tutorials]]&amp;lt;/translate&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs&amp;diff=680916</id>
		<title>J4.x:Joomla Core APIs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs&amp;diff=680916"/>
		<updated>2020-06-16T22:12:52Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; This page lists the endpoints available in Joomla by example of curl commands.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Every URL requires authentication unless designated a public URL. For security in Joomla 4.0.0 we plan to make the default Api Application require a Super User account (as the API Application is brand new), this may get relaxed as the API stabilizes and is well tested in the community. If you are using the basic authentication plugin (currently the only shipped plugin as of Joomla 4 alpha 10) it requires the addition to the curl commands below using --user user_name:password&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; Every URL needs to be prepended with the Joomla host before the path (e.g. instead of &amp;lt;tt&amp;gt;/api/index.php/v1/article&amp;lt;/tt&amp;gt; you need &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/api/index.php/v1/article&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; Any names of properties in curly brackets ({}) indicate the property is a variable that should be substituted.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Unless otherwise noted these APIs were introduced in Joomla 4. For more information on the Joomla API Specification (as opposed to this list of URLs and options) please visit the [[S:MyLanguage/Joomla Api Specification|Joomla Api Specification]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Where end points require the value of {app} the variable currently takes two values, site (front end), or administrator {back end)&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Banners == &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Banners === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Banners ==== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Banner ==== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Banner ==== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Banner ==== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;clicks&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;custombannercode&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Text&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;height&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;imageurl&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;width&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Banner ==== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/{banner_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;New Text&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Clients === &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Clients ==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Client ==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Client ==== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Client ==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;extrainfo&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Client ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients/{client_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;new Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;newemail@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Categories ==== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Category ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Category ==== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Category ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;extension&amp;quot;: &amp;quot;com_banners&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;workflow_id&amp;quot;: 1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Category ==== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories/{category_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Some Text&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content History === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Content Histories ==== &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/contenthistory/{banner_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Toggle Keep Content History ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/contenthistory/keep/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Content History ==== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/contenthistory/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Config == &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Application === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Application Configs ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/config/application&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Application Config ==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Component === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Component Configs ==== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/config/{component_name}&lt;br /&gt;
&lt;br /&gt;
Example “component_name” is “com_content”.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Application Config ==== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;link_titles&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Contact == &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Contact === &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Contacts ==== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/contact&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Contact ==== &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Contact ==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Contact ==== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Contact ==== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Submit Contact Form ==== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/form/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact_email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_message&amp;quot;: &amp;quot;some text&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_subject&amp;quot;: &amp;quot;subject&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; Route Contact Categories is&amp;lt;/translate&amp;gt;: &amp;quot;v1/contact/categories&amp;quot;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Contact === &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Fields Contact ==== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Field Contact ==== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Field Contact ==== &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Field Contact ==== &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Field Contact ==== &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact/{field_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Some New Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Contact Mail === &amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; Route Fields Contact Mail is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/contact/mail&amp;quot;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Contact Categories === &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt; Route Fields Contact Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/contact/categories&amp;quot;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Groups Fields Contact === &amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Groups Fields Contact ==== &amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Group Fields Contact ==== &amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Group Fields Contact ==== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Group Fields Contact ==== &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field3&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Group Fields Contact ==== &amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact/{group_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact group&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;new description&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Group Fields Contact Mail === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt; #Route Group Fields Contact Mail is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/contact/mail&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Group Fields Contact Categories=== &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt; #Route Group Fields Contact Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/contact/categories&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content History === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt; #Route Content History is:&amp;lt;/translate&amp;gt; &amp;quot;v1/contact/contenthistory&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Content == &amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Articles === &amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Articles ==== &amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/content/article&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Article ==== &amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/content/article/{article_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Article ==== &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/content/article/{article_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Article ==== &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/article -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;my-article&amp;quot;,&lt;br /&gt;
    &amp;quot;articletext&amp;quot;: &amp;quot;My text&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Here&#039;s an article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt; Currently the options mentioned here are required properties. However the intention is currently to make AT LEAST metakey and metadesc optional in the API.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Article ==== &amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/article/{article_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Updated article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#Route Content Categories is: &amp;quot;v1/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fields Articles === &amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt; #Route Fields Articles is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/content/articles&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Groups Fields Articles === &amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt; #Route Groups Fields Articles is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/content/articles&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Categories === &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:90--&amp;gt; #Route Fields Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/content/categories&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content History === &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:93--&amp;gt; #Route Content History is:&amp;lt;/translate&amp;gt; &amp;quot;v1/content/article/contenthistory&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:94--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Languages == &amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Languages === &amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Languages ==== &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Install Language ==== &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;package&amp;quot;: &amp;quot;pkg_fr-FR&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content Languages === &amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Content Languages ==== &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/content&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Content Language ==== &amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Content Language ==== &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Content Language ==== &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;: &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;fr-FR&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sef&amp;quot;: &amp;quot;fk&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;French (FR)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;Français (France)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Content Language ==== &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content/{language_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;English (en-GB)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;English (United Kingdom)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Overrides Languages === &amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Overrides Languages Constants ==== &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Override Language Constant ==== &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Content Language ==== &amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Content Language ==== &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Content Language ==== &amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;new text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var app - enum {&amp;quot;site&amp;quot;, &amp;quot;administrator&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
var lang_code - string Example: “fr-FR“, “en-GB“ you can get lang_code from v1/languages/content&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Search Override Constant ==== &amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;searchstring&amp;quot;: &amp;quot;JLIB_APPLICATION_ERROR_SAVE_FAILED&amp;quot;,&lt;br /&gt;
    &amp;quot;searchtype&amp;quot;: &amp;quot;constant&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; var searchtype - enum {“constant”, “value”}. “constant” search by constant name, “value” - search by constant value&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Refresh Override Search Cache ==== &amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search/cache/refresh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Menus == &amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Menus === &amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Menus ==== &amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Menu ==== &amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Menu ==== &amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Menu ==== &amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;The menu for the site&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Menu ==== &amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/{menu_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Menus Items === &amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Menus Items Types ==== &amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Menus Items ==== &amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Menu Item ==== &amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Menu Item ==== &amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Menu Item ==== &amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;associations&amp;quot;: {&lt;br /&gt;
        &amp;quot;en-GB&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;fr-FR&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;browserNav&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;cancel_redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;catid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;custom_cancel_redirect&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;enable_category&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_keywords&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_show&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_text&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;page_heading&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;page_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;pageclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_page_heading&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;template_style_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_assigned&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt; Example for &amp;quot;Create Article Page&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Menu Item ==== &amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items/{menu_item_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt; Example for &amp;quot;Create Article Page&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Messages == &amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Messages === &amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Messages ==== &amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/messages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Message ==== &amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Message ==== &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Message ==== &amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Message ==== &amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages/{message_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;new text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;new text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Modules == &amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Modules === &amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Modules Types ==== &amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/types/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Modules ==== &amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Module ==== &amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Module ==== &amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Module ==== &amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;assigned&amp;quot;: [&lt;br /&gt;
        &amp;quot;101&amp;quot;,&lt;br /&gt;
        &amp;quot;105&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;assignment&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;bootstrap_size&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;cache&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;cache_time&amp;quot;: &amp;quot;900&amp;quot;,&lt;br /&gt;
        &amp;quot;cachemode&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
        &amp;quot;count&amp;quot;: &amp;quot;10&amp;quot;,&lt;br /&gt;
        &amp;quot;header_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;header_tag&amp;quot;: &amp;quot;h3&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;_:default&amp;quot;,&lt;br /&gt;
        &amp;quot;module_tag&amp;quot;: &amp;quot;div&amp;quot;,&lt;br /&gt;
        &amp;quot;moduleclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;style&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;position&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;showtitle&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:144--&amp;gt; Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Module ==== &amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app}/{module_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Newsfeeds == &amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Feeds === &amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Feeds ==== &amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Feed ==== &amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Feed ==== &amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Feed ==== &amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;alias&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;images&amp;quot;: {&lt;br /&gt;
        &amp;quot;float_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;float_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_caption&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;hits&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;rights&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;tags&amp;quot;: {&lt;br /&gt;
            &amp;quot;tags&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;typeAlias&amp;quot;: null&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;feed_character_count&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;feed_display_order&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;newsfeed_layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_item_description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Feed ==== &amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds/{feed_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test2&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt; #Route Newsfeeds Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/newsfeeds/categories&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Privacy == &amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Request === &amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Requests ==== &amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Request ==== &amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/{request_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Request Export Data ==== &amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/export/{request_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Request ==== &amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/privacy/request -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;:&amp;quot;somenewemail@com.ua&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;export&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Consent === &amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Consents ==== &amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Consent ==== &amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Consent ==== &amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Redirect == &amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Redirect === &amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Redirects ==== &amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Redirect ==== &amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Redirect ==== &amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Redirect ==== &amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;header&amp;quot;: 301,&lt;br /&gt;
    &amp;quot;hits&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/99&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/12&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;referer&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Redirect ==== &amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect/{redirect_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/4&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/132&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Tags == &amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Tags === &amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Tags ==== &amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/tags&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Tag ==== &amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Tag ==== &amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Tag ==== &amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;access_title&amp;quot;: &amp;quot;Public&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Tag ==== &amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags/{tag_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Templates == &amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Templates Styles === &amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Templates Styles ==== &amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Template Style ==== &amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Template Style ==== &amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Template Style ==== &amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;fluidContainer&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;logoFile&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarLeftWidth&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarRightWidth&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;cassiopeia - Some Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Template Style ==== &amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app}/{template_style_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
	&amp;quot;title&amp;quot;: &amp;quot;new cassiopeia - Default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Users == &amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Users === &amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Users ==== &amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single User ==== &amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete User ==== &amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create User ==== &amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;block&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;test@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;lastResetTime&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastvisitDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;nnn&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;admin_language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_style&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;editor&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;helpsite&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;timezone&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;qwerty&amp;quot;,&lt;br /&gt;
    &amp;quot;password2&amp;quot;: &amp;quot;qwerty&amp;quot;,&lt;br /&gt;
    &amp;quot;registerDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;requireReset&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;resetCount&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;sendEmail&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;ad&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update User ==== &amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users/{user_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;new@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;username&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Users === &amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:195--&amp;gt; #Route Fields Users is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/users&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:196--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Groups Fields Users === &amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:198--&amp;gt; #Route Groups Fields Users is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/users&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:199--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_Api{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs&amp;diff=680915</id>
		<title>J4.x:Joomla Core APIs</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Joomla_Core_APIs&amp;diff=680915"/>
		<updated>2020-06-16T22:12:16Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.0}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; This page lists the endpoints available in Joomla by example of curl commands.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; Every URL requires authentication unless designated a public URL. For security in Joomla 4.0.0 we plan to make the default Api Application require a Super User account (as the API Application is brand new), this may get relaxed as the API stabilizes and is well tested in the community. If you are using the basic authentication plugin (currently the only shipped plugin as of Joomla 4 alpha 10) it requires the addition to the curl commands below using --user user_name:password&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; Every URL needs to be prepended with the Joomla host before the path (e.g. instead of &amp;lt;tt&amp;gt;/api/index.php/v1/article&amp;lt;/tt&amp;gt; you need &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/api/index.php/v1/article&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;)&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; Any names of properties in curly brackets ({}) indicate the property is a variable that should be substituted.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Unless otherwise noted these APIs were introduced in Joomla 4. For more information on the Joomla API Specification (as opposed to this list of URLs and options) please visit the [[S:MyLanguage/Joomla Api Specification|Joomla Api Specification]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Where end points require the value of {app} currently takes two values, site (front end), or administrator {back end)&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Banners == &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Banners === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Banners ==== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Banner ==== &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Banner ==== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/{banner_id}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Banner ==== &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;clicks&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;custombannercode&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Text&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;height&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;imageurl&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;width&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Banner ==== &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/{banner_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 3,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;New Text&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Name&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Clients === &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Clients ==== &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Client ==== &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Client ==== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/clients/{client_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Client ==== &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;extrainfo&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Client ==== &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/clients/{client_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact&amp;quot;: &amp;quot;new Name&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;newemail@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Clients&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Categories ==== &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Category ==== &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Category ==== &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/categories/{category_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Category ==== &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;extension&amp;quot;: &amp;quot;com_banners&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;workflow_id&amp;quot;: 1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Category ==== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/categories/{category_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;cat&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;Some Text&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content History === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Content Histories ==== &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/banners/contenthistory/{banner_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Toggle Keep Content History ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/banners/contenthistory/keep/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Content History ==== &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/banners/contenthistory/{contenthistory_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Config == &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Application === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Application Configs ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/config/application&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Application Config ==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;debug&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;123&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Component === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Component Configs ==== &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/config/{component_name}&lt;br /&gt;
&lt;br /&gt;
Example “component_name” is “com_content”.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Application Config ==== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/config/application -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;link_titles&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Contact == &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Contact === &amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Contacts ==== &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/contact&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Contact ==== &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Contact ==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/contact/{contact_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Contact ==== &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Contact ==== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;contact&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;New Contact&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Submit Contact Form ==== &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/contact/form/{contact_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;contact_email&amp;quot;: &amp;quot;email@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_message&amp;quot;: &amp;quot;some text&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;contact_subject&amp;quot;: &amp;quot;subject&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; Route Contact Categories is&amp;lt;/translate&amp;gt;: &amp;quot;v1/contact/categories&amp;quot;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Contact === &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Fields Contact ==== &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Field Contact ==== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Field Contact ==== &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/contact/contact/{field_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Field Contact ==== &amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Field Contact ==== &amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/contact/contact/{field_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field&amp;quot;,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Some New Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Contact Mail === &amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; Route Fields Contact Mail is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/contact/mail&amp;quot;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Contact Categories === &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt; Route Fields Contact Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/contact/categories&amp;quot;&lt;br /&gt;
#&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Groups Fields Contact === &amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Groups Fields Contact ==== &amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Group Fields Contact ==== &amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Group Fields Contact ==== &amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/fields/groups/contact/contact/{group_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Group Fields Contact ==== &amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;context&amp;quot;: &amp;quot;com_contact.contact&amp;quot;,&lt;br /&gt;
    &amp;quot;default_value&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;group_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;label&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;contact-field3&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;display&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;display_readonly&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
        &amp;quot;hint&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;label_render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;prefix&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;render_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_on&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;showlabel&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;suffix&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;required&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;contact field&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Group Fields Contact ==== &amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/fields/groups/contact/contact/{group_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new contact group&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;new description&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Group Fields Contact Mail === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt; #Route Group Fields Contact Mail is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/contact/mail&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Group Fields Contact Categories=== &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt; #Route Group Fields Contact Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/contact/categories&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Group Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content History === &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:72--&amp;gt; #Route Content History is:&amp;lt;/translate&amp;gt; &amp;quot;v1/contact/contenthistory&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Content == &amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Articles === &amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Articles ==== &amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/content/article&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Article ==== &amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/content/article/{article_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Article ==== &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/content/article/{article_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Article ==== &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/article -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;my-article&amp;quot;,&lt;br /&gt;
    &amp;quot;articletext&amp;quot;: &amp;quot;My text&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Here&#039;s an article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt; Currently the options mentioned here are required properties. However the intention is currently to make AT LEAST metakey and metadesc optional in the API.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Article ==== &amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/content/article/{article_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 64,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Updated article&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
#Route Content Categories is: &amp;quot;v1/content/categories&amp;quot;&lt;br /&gt;
#Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fields Articles === &amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt; #Route Fields Articles is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/content/articles&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:85--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Groups Fields Articles === &amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt; #Route Groups Fields Articles is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/content/articles&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Categories === &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:90--&amp;gt; #Route Fields Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/content/categories&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content History === &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:93--&amp;gt; #Route Content History is:&amp;lt;/translate&amp;gt; &amp;quot;v1/content/article/contenthistory&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:94--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Content_History|Banners Content History]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Languages == &amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Languages === &amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Languages ==== &amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Install Language ==== &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;package&amp;quot;: &amp;quot;pkg_fr-FR&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Content Languages === &amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Content Languages ==== &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/content&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Content Language ==== &amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Content Language ==== &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/content/{language_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Content Language ==== &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;image&amp;quot;: &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;fr-FR&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sef&amp;quot;: &amp;quot;fk&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;French (FR)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;Français (France)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Content Language ==== &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/content/{language_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lang_code&amp;quot;: &amp;quot;en-GB&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;sitename&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;English (en-GB)&amp;quot;,&lt;br /&gt;
    &amp;quot;title_native&amp;quot;: &amp;quot;English (United Kingdom)&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Overrides Languages === &amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Overrides Languages Constants ==== &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Override Language Constant ==== &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Content Language ==== &amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Content Language ==== &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Content Language ==== &amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/{app}/{lang_code}/{constant_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;quot;new_key&amp;quot;,&lt;br /&gt;
    &amp;quot;override&amp;quot;: &amp;quot;new text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var app - enum {&amp;quot;site&amp;quot;, &amp;quot;administrator&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
var lang_code - string Example: “fr-FR“, “en-GB“ you can get lang_code from v1/languages/content&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Search Override Constant ==== &amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;searchstring&amp;quot;: &amp;quot;JLIB_APPLICATION_ERROR_SAVE_FAILED&amp;quot;,&lt;br /&gt;
    &amp;quot;searchtype&amp;quot;: &amp;quot;constant&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt; var searchtype - enum {“constant”, “value”}. “constant” search by constant name, “value” - search by constant value&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Refresh Override Search Cache ==== &amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/languages/overrides/search/cache/refresh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Menus == &amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Menus === &amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Menus ==== &amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Menu ==== &amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Menu ==== &amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/{menu_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Menu ==== &amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;The menu for the site&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Menu ==== &amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/{menu_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;menu&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Menu&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Menus Items === &amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Menus Items Types ==== &amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Menus Items ==== &amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Menu Item ==== &amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Menu Item ==== &amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/menus/{app}/items/{menu_item_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Menu Item ==== &amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;associations&amp;quot;: {&lt;br /&gt;
        &amp;quot;en-GB&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;fr-FR&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;browserNav&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;cancel_redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;catid&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;custom_cancel_redirect&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;enable_category&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-anchor_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu-meta_keywords&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_image_css&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_show&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;menu_text&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;page_heading&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;page_title&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;pageclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;redirect_menuitem&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_page_heading&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;template_style_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;title&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_assigned&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;toggle_modules_published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:127--&amp;gt; Example for &amp;quot;Create Article Page&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Menu Item ==== &amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/menus/{app}/items/{menu_item_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;component_id&amp;quot;: &amp;quot;20&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;index.php?option=com_content&amp;amp;view=form&amp;amp;layout=edit&amp;quot;,&lt;br /&gt;
    &amp;quot;menutype&amp;quot;: &amp;quot;mainmenu&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;component&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt; Example for &amp;quot;Create Article Page&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Messages == &amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Messages === &amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Messages ==== &amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/messages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Message ==== &amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Message ==== &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/messages/{message_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Message ==== &amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;state&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Message ==== &amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/messages/{message_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;new text&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;subject&amp;quot;: &amp;quot;new text&amp;quot;,&lt;br /&gt;
    &amp;quot;user_id_from&amp;quot;: 773,&lt;br /&gt;
    &amp;quot;user_id_to&amp;quot;: 772&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Modules == &amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Modules === &amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Modules Types ==== &amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/types/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Modules ==== &amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Module ==== &amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Module ==== &amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/modules/{app}/{module_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Module ==== &amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;assigned&amp;quot;: [&lt;br /&gt;
        &amp;quot;101&amp;quot;,&lt;br /&gt;
        &amp;quot;105&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;assignment&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;bootstrap_size&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;cache&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;cache_time&amp;quot;: &amp;quot;900&amp;quot;,&lt;br /&gt;
        &amp;quot;cachemode&amp;quot;: &amp;quot;static&amp;quot;,&lt;br /&gt;
        &amp;quot;count&amp;quot;: &amp;quot;10&amp;quot;,&lt;br /&gt;
        &amp;quot;header_class&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;header_tag&amp;quot;: &amp;quot;h3&amp;quot;,&lt;br /&gt;
        &amp;quot;layout&amp;quot;: &amp;quot;_:default&amp;quot;,&lt;br /&gt;
        &amp;quot;module_tag&amp;quot;: &amp;quot;div&amp;quot;,&lt;br /&gt;
        &amp;quot;moduleclass_sfx&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;style&amp;quot;: &amp;quot;0&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;position&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_down&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;publish_up&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;showtitle&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:144--&amp;gt; Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Module ==== &amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/modules/{app}/{module_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;mod_articles_archive&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;New Title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;Example for &amp;quot;Articles - Archived&amp;quot;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Newsfeeds == &amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Feeds === &amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Feeds ==== &amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Feed ==== &amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Feed ==== &amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/newsfeeds/feeds/{feed_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Feed ==== &amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;alias&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;images&amp;quot;: {&lt;br /&gt;
        &amp;quot;float_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;float_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_first_caption&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_alt&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;image_second_caption&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
        &amp;quot;hits&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;rights&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;robots&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;tags&amp;quot;: {&lt;br /&gt;
            &amp;quot;tags&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;typeAlias&amp;quot;: null&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Name&amp;quot;,&lt;br /&gt;
    &amp;quot;ordering&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;feed_character_count&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;feed_display_order&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;newsfeed_layout&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_feed_image&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;show_item_description&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Feed ==== &amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/newsfeeds/feeds/{feed_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test2&amp;quot;,&lt;br /&gt;
    &amp;quot;catid&amp;quot;: 5,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;link&amp;quot;: &amp;quot;http://samoylov/joomla/gsoc19_webservices/index.php&amp;quot;,&lt;br /&gt;
    &amp;quot;metadesc&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;metakey&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Categories === &amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt; #Route Newsfeeds Categories is:&amp;lt;/translate&amp;gt; &amp;quot;v1/newsfeeds/categories&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Categories|Banners Categories]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Privacy == &amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Request === &amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Requests ==== &amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Request ==== &amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/{request_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Request Export Data ==== &amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/request/export/{request_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Request ==== &amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/privacy/request -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;:&amp;quot;somenewemail@com.ua&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;export&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Consent === &amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Consents ==== &amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Consent ==== &amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Consent ==== &amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/privacy/consent/{consent_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Redirect == &amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Redirect === &amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Redirects ==== &amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Redirect ==== &amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Redirect ==== &amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/redirect/{redirect_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Redirect ==== &amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;header&amp;quot;: 301,&lt;br /&gt;
    &amp;quot;hits&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/99&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/12&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;referer&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Redirect ==== &amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/redirect/{redirect_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;new_url&amp;quot;: &amp;quot;/content/art/4&amp;quot;,&lt;br /&gt;
    &amp;quot;old_url&amp;quot;: &amp;quot;/content/art/132&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Tags == &amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Tags === &amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Tags ==== &amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/tags&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Tag ==== &amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Tag ==== &amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/tags/{tag_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Tag ==== &amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;access&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;access_title&amp;quot;: &amp;quot;Public&amp;quot;,&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;note&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;parent_id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;published&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;test&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Tag ==== &amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/tags/{tag_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;alias&amp;quot;: &amp;quot;test&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;new title&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Templates == &amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Templates Styles === &amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Templates Styles ==== &amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single Template Style ==== &amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete Template Style ==== &amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/templates/styles/{app}/{template_style_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create Template Style ==== &amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;home&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;fluidContainer&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
        &amp;quot;logoFile&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarLeftWidth&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
        &amp;quot;sidebarRightWidth&amp;quot;: &amp;quot;3&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;cassiopeia - Some Text&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update Template Style ==== &amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/templates/styles/{app}/{template_style_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;template&amp;quot;: &amp;quot;cassiopeia&amp;quot;,&lt;br /&gt;
	&amp;quot;title&amp;quot;: &amp;quot;new cassiopeia - Default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Users == &amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Users === &amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get List of Users ==== &amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Get Single User ==== &amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X GET /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Delete User ==== &amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X DELETE /api/index.php/v1/users/{user_id}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Create User ==== &amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;block&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;test@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;lastResetTime&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;lastvisitDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;nnn&amp;quot;,&lt;br /&gt;
    &amp;quot;params&amp;quot;: {&lt;br /&gt;
        &amp;quot;admin_language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;admin_style&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;editor&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;helpsite&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;language&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;timezone&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;password&amp;quot;: &amp;quot;qwerty&amp;quot;,&lt;br /&gt;
    &amp;quot;password2&amp;quot;: &amp;quot;qwerty&amp;quot;,&lt;br /&gt;
    &amp;quot;registerDate&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
    &amp;quot;requireReset&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;resetCount&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;sendEmail&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;ad&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Update User ==== &amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
curl -X PATCH -H &amp;quot;Content-Type: application/json&amp;quot; /api/index.php/v1/users/{user_id} -d &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;new@mail.com&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: [&lt;br /&gt;
        &amp;quot;2&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;name&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;username&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Fields Users === &amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:195--&amp;gt; #Route Fields Users is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/users&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:196--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Fields_Contact|Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Groups Fields Users === &amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:198--&amp;gt; #Route Groups Fields Users is:&amp;lt;/translate&amp;gt; &amp;quot;v1/fields/groups/users&amp;quot;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:199--&amp;gt; #Working with it is similar to [[S:MyLanguage/#Groups_Fields_Contact|Groups Fields Contact]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_4.0{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla!_Api{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679986</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679986"/>
		<updated>2020-06-14T13:38:20Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Setting the values of a List Option and using JSON or an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Setting the values of a List Option and using JSON or an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php&lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;api_site_parameter&amp;quot;:&amp;quot;meta.stackoverflow&amp;quot;,&amp;quot;site_url&amp;quot;:&amp;quot;https://meta.stackoverflow.com&amp;quot;~}&lt;br /&gt;
        // decode the JSON&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
       &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            $site_url = $site[&#039;site_url&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site_url);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679985</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679985"/>
		<updated>2020-06-14T13:35:28Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Setting the values of a List Option and using JSON or an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Setting the values of a List Option and using JSON or an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php&lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSON&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
       &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679984</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679984"/>
		<updated>2020-06-14T13:27:24Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Using an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Setting the values of a List Option and using JSON or an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php&lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSON&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
&lt;br /&gt;
       // set the variable $i so we can iterate over it&lt;br /&gt;
        $i = 0;&lt;br /&gt;
        &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
&lt;br /&gt;
            // iterate the $i variable so the next loop will choose the next item&lt;br /&gt;
            $i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679983</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679983"/>
		<updated>2020-06-14T13:26:47Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Using an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Using an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php&lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSON&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
&lt;br /&gt;
       // set the variable $i so we can iterate over it&lt;br /&gt;
        $i = 0;&lt;br /&gt;
        &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
&lt;br /&gt;
            // iterate the $i variable so the next loop will choose the next item&lt;br /&gt;
            $i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679982</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679982"/>
		<updated>2020-06-14T13:26:07Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Using an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Using an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php&lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSOn&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
&lt;br /&gt;
       // set the variable $i so we can iterate over it&lt;br /&gt;
        $i = 0;&lt;br /&gt;
        &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
&lt;br /&gt;
            // iterate the $i variable so the next loop will choose the next item&lt;br /&gt;
            $i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679981</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679981"/>
		<updated>2020-06-14T13:25:46Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Using an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Using an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php* &lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSOn&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
&lt;br /&gt;
       // set the variable $i so we can iterate over it&lt;br /&gt;
        $i = 0;&lt;br /&gt;
        &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
&lt;br /&gt;
            // iterate the $i variable so the next loop will choose the next item&lt;br /&gt;
            $i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679980</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679980"/>
		<updated>2020-06-14T13:25:12Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: /* Using an API instead of a database call */&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Using an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php* &lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSOn&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
&lt;br /&gt;
       // set the variable $i so we can iterate over it&lt;br /&gt;
        $i = 0;&lt;br /&gt;
        &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
&lt;br /&gt;
            // iterate the $i variable so the next loop will choose the next item&lt;br /&gt;
            $i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679979</id>
		<title>Creating a custom form field type</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Creating_a_custom_form_field_type&amp;diff=679979"/>
		<updated>2020-06-14T13:24:07Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Added an example of how to set the options value in a form field list&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;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x|comment=&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
series&amp;lt;/translate&amp;gt;}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{page|needs review}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.Form.html JForm], a feature introduced in Joomla! 2.5, lets you easily create HTML forms (&amp;lt;code&amp;gt;&amp;lt;form&amp;gt;&amp;lt;/code&amp;gt;). Forms created using JForm consist of [[S:MyLanguage/Form field|form fields]], implemented as [https://api.joomla.org/cms-3/classes/Joomla.CMS.Form.FormField.html JFormField]. There is a JFormField for each different field type you can find in a form, such as a text field type and a date field type. JForm supports a large selection of standard field types. For a full list, see [[S:MyLanguage/Standard form field types|Standard form field types]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Joomla! makes it possible to extend standard field types or define your own. For example, if your component manages phone book entries, you might want to define a form field type that outputs a select list of cities. There are several advantages to defining a custom form field type:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* You will be able to mix standard field types with your custom field type in a JForm-based form.&lt;br /&gt;
* You will eventually have a reusable code package that can be used easily throughout your code.&lt;br /&gt;
* Extensions that collaborate with your extension will be able to create form fields without meddling with your database tables and other internals.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Form field type class requirements == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
A form field type is defined in a [[wikipedia:Class (computer programming)|class]] that must be a (not necessarily direct) subclass of JFormField. To work correctly, the class must define at least three methods:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getLabel()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
*: This function will be called to create the label that belongs to your field and must return a HTML string containing it. Since JFormField defines a ready-to-use &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; implementation, custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you leave it out, the inherited method of creating labels will be used. It is recommended to leave out the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; method for consistency and speed unless you actually want to modify the label&#039;s HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getInput()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
*: This function will be called to create the field itself and must return a HTML string containing it. This is also where most of the processing usually happens. In our phone book City field example, this function will have to retrieve a list of available cities and return a HTML &amp;lt;code&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/code&amp;gt; with the cities inserted as &amp;lt;code&amp;gt;&amp;lt;option&amp;gt;&amp;lt;/code&amp;gt;s.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;public function getValue()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
*: This function will be called to get the field value. The value is obtained from the function LoadFormData in the Model&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
Inside your code, you will have to process the attributes set by the field&#039;s user in the XML form definition. Some of those attributes are accessible via protected member variables of JFormField. For example, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is available in your code as &amp;lt;code&amp;gt;$this-&amp;gt;name&amp;lt;/code&amp;gt;. Similarly, &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;multiple&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; are also available as properties of &amp;lt;code&amp;gt;$this&amp;lt;/code&amp;gt;. Other parameters you might have defined can be accessed through the &amp;lt;code&amp;gt;$this-&amp;gt;element&amp;lt;/code&amp;gt; array: the attribute &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; will be in &amp;lt;code&amp;gt;$this-&amp;gt;element[&#039;size&#039;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which class to subclass? == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
For a form field type to be usable in JForm, it needs to be a subclass of JFormField. However, it does not have to be a direct child of that class: you can also subclass an existing (standard or custom) form field type and thereby inherit useful code.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is quite similar to an existing type,&#039;&#039;&#039; you should subclass that type. Especially if your form field type is a &#039;&#039;&#039;list&#039;&#039;&#039;, please subclass [[S:MyLanguage/JFormFieldList|JFormFieldList]]. You only have to override &amp;lt;code&amp;gt;getOptions()&amp;lt;/code&amp;gt; method to return the options to be shown; the &amp;lt;code&amp;gt;getInput()&amp;lt;/code&amp;gt; method will convert those options to HTML.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
To subclass an existing type, for example JFormFieldList, load it by adding the following to after &amp;lt;code&amp;gt;jimport(&#039;joomla.form.formfield&#039;);&amp;lt;/code&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
jimport(&#039;joomla.form.helper&#039;);&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If your form field type is unlike any existing type,&#039;&#039;&#039; subclass JFormField directly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Location of files == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* The standard form field types are located in &amp;lt;code&amp;gt;libraries/joomla/form/fields/&amp;lt;/code&amp;gt;. You should not store custom fields there, nor should you have to use this path in your own code, but the standard types are usually good examples.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
* The custom field types that belong to your component are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields&amp;lt;/code&amp;gt;. You can specify this or another path in your code:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The XML files that define forms are usually located in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/forms&amp;lt;/code&amp;gt;. Use something like the following snippet to specify a path to your forms:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;JForm::addFormPath(JPATH_COMPONENT . &#039;/models/forms&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Naming conventions and skeleton == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
In this section, &amp;lt;ComponentName&amp;gt; represents the camel-cased name of your component and &amp;lt;FieldName&amp;gt; represents the camel-cased name of your form field type. The field&#039;s class should be placed in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/&amp;lt;name of your field&amp;gt;.php&amp;lt;/code&amp;gt;, and look like this:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
class JFormField&amp;lt;FieldName&amp;gt; extends JFormField {&lt;br /&gt;
&lt;br /&gt;
	//The field class must know its own type through the variable $type.&lt;br /&gt;
	protected $type = &#039;&amp;lt;FieldName&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		// code that returns HTML that will be shown as the label&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		// code that returns HTML that will be shown as the form field&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Grouping custom field types === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Warning: this information is partially incorrect and needs to be improved.&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Custom field types can be grouped by using an underscore in the field name. A field class with a name for example like &amp;quot;JFormFieldMy_randomField&amp;quot; must be stored in &amp;lt;code&amp;gt;administrator/components/&amp;lt;name of your component&amp;gt;/models/fields/my/randomField.php&amp;lt;/code&amp;gt;. We can prefix our form field names with some group name, then we put an underscore and then a name of a field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== An example custom field type == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Suppose you&#039;re working on your component named &#039;&#039;com_phonebook&#039;&#039; and you want to define a field that contains cities. Create the file &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/fields/city.php&amp;lt;/code&amp;gt; and write something similar to the following:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
jimport(&#039;joomla.form.formfield&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormField {&lt;br /&gt;
	&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	// getLabel() left out&lt;br /&gt;
&lt;br /&gt;
	public function getInput() {&lt;br /&gt;
		return &#039;&amp;lt;select id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; name=&amp;quot;&#039;.$this-&amp;gt;name.&#039;&amp;quot;&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;1&amp;quot; &amp;gt;New York&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;2&amp;quot; &amp;gt;Chicago&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;option value=&amp;quot;3&amp;quot; &amp;gt;San Francisco&amp;lt;/option&amp;gt;&#039;.&lt;br /&gt;
		       &#039;&amp;lt;/select&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
A more advanced approach is extending the &amp;lt;code&amp;gt;JFormFieldList&amp;lt;/code&amp;gt; class. Suppose you want to create a drop-down of cities dynamically from database based on a dynamic condition, then you can do this in the following way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
                $app = JFactory::getApplication();&lt;br /&gt;
                $country = $app-&amp;gt;input-&amp;gt;get(&#039;country&#039;); //country is the dynamic value which is being used in the view&lt;br /&gt;
                $db = JFactory::getDbo();&lt;br /&gt;
                $query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
                $query-&amp;gt;select(&#039;a.cityname&#039;)-&amp;gt;from(&#039;`#__tablename` AS a&#039;)-&amp;gt;where(&#039;a.country = &amp;quot;&#039;.$country.&#039;&amp;quot; &#039;);&lt;br /&gt;
		$rows = $db-&amp;gt;setQuery($query)-&amp;gt;loadObjectlist();&lt;br /&gt;
                foreach($rows as $row){&lt;br /&gt;
                    $cities[] = $row-&amp;gt;cityname;&lt;br /&gt;
                }&lt;br /&gt;
                // Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
                return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
The above example shows a simple query which will show a list of cities from a table where city name belongs to its country respectively. You can create a drop-down based on more complex queries.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Using an API instead of a database call == &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
If you want to use an API call instead of a database call for example to build a custom list item you can use the following code.&lt;br /&gt;
&lt;br /&gt;
This field was created in a module.  To get it to work it needs to be saved to&lt;br /&gt;
*mod_modulename/models/fields/stackexchangesites.php* &lt;br /&gt;
The naming convention is important as it is used within our function name.  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Check to ensure this file is included in Joomla!&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
&lt;br /&gt;
// call the list field type&lt;br /&gt;
JFormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
// The class name must always be the same as the filename (in camel case)&lt;br /&gt;
// extend the list field type&lt;br /&gt;
class JFormFieldStackexchangesites extends JFormFieldList&lt;br /&gt;
{&lt;br /&gt;
    //The field class must know its own type through the variable $type.&lt;br /&gt;
    protected $type = &#039;Stackexchangesites&#039;;&lt;br /&gt;
&lt;br /&gt;
    // get the options for the list field&lt;br /&gt;
    public function getOptions()&lt;br /&gt;
    {&lt;br /&gt;
       // insert your JSON here or else call an API&lt;br /&gt;
        $json = {&amp;quot;items&amp;quot;:[{&amp;quot;aliases&amp;quot;:[&amp;quot;http://www.stackoverflow.com&amp;quot;,&amp;quot;http://facebook.stackoverflow.com&amp;quot;]~}&lt;br /&gt;
        // decode the JSOn&lt;br /&gt;
        $sites = json_decode($json, true);&lt;br /&gt;
&lt;br /&gt;
       // set the variable $i so we can iterate over it&lt;br /&gt;
        $i = 0;&lt;br /&gt;
        &lt;br /&gt;
        // use a for each to iterate over the JSON&lt;br /&gt;
        foreach($sites[&#039;items&#039;] as $site)&lt;br /&gt;
        {&lt;br /&gt;
           // choose the element of the JSON we want, and set it as a variable so we can use it in our array.&lt;br /&gt;
            $site = $site[&#039;api_site_parameter&#039;];&lt;br /&gt;
            // set an array and start adding values to it.  Set another array within our array to set our value / text items.&lt;br /&gt;
            $stackExchangesSitesOptions[] = array(&amp;quot;value&amp;quot; =&amp;gt; $site, &amp;quot;text&amp;quot; =&amp;gt; $site);&lt;br /&gt;
&lt;br /&gt;
            // iterate the $i variable so the next loop will choose the next item&lt;br /&gt;
            $i++;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Merge any additional options in the XML definition.&lt;br /&gt;
        $options = array_merge(parent::getOptions(), $stackExchangesSitesOptions);&lt;br /&gt;
        return $options;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
On the front end simply calling the parameter gets us the value.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$stackexchangesites = $params-&amp;gt;get(&#039;stackexchangesites&#039;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Pitfalls === &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
Loading a custom field can result in a Fatal Error, if a core field exists with the same filename, and the custom field extends the core field.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Consider a file &amp;lt;code&amp;gt;testfields/radio.php&amp;lt;/code&amp;gt; containing&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Calling &amp;lt;code&amp;gt;JFormHelper::loadFieldClass(&#039;radio&#039;)&amp;lt;/code&amp;gt; will yield in a Fatal error: Class &#039;JFormFieldRadio&#039; not found.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
There are two reasons for this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
# JLoader cannot autoload &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because the class name (&amp;lt;code&amp;gt;JFormField*&amp;lt;/code&amp;gt;) does not match the path name (&amp;lt;code&amp;gt;joomla/form/fields/*&amp;lt;/code&amp;gt; - notice the plural on fields).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
# JFormHelper cannot load &amp;lt;code&amp;gt;JFormFieldRadio&amp;lt;/code&amp;gt;, because custom paths are scanned first, and the requested field type(&#039;radio&#039;) gets resolved before the core classes are reached&amp;lt;/translate&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Require the core field file directly:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require_once JPATH_LIBRARIES . &#039;/joomla/form/fields/radio.php&#039;;&lt;br /&gt;
&lt;br /&gt;
class TestFormFieldRadio extends JFormFieldRadio {}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
and use &amp;lt;code&amp;gt;JFormHelper::loadFieldClass&amp;lt;/code&amp;gt; properly with &#039;test.radio&#039; instead of &#039;radio&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Using the custom field type === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Linked with a form ==== &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
To use the field type City, we need to update the XML file that contains the form fields. Open your XML file located in &amp;lt;code&amp;gt;administrator/components/com_phonebook/models/forms&amp;lt;/code&amp;gt; and add the field in the usual way:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;field name=&amp;quot;title&amp;quot; type=&amp;quot;City&amp;quot; label=&amp;quot;JGLOBAL_TITLE&amp;quot;&lt;br /&gt;
	description=&amp;quot;JFIELD_TITLE_DESC&amp;quot;&lt;br /&gt;
	required=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The attribute name is cAsE-sEnSiTiVe.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
In addition, you may need to add the field path to the parent &amp;lt;fieldset&amp;gt;:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fieldset addfieldpath=&amp;quot;/administrator/components/&amp;lt;component name&amp;gt;/models/fields&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Not linked with a form ==== &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
E.g. when you need the field as a dropdown in a component as admin/site filter.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//Get custom field&lt;br /&gt;
JFormHelper::addFieldPath(JPATH_COMPONENT . &#039;/models/fields&#039;);&lt;br /&gt;
$cities = JFormHelper::loadFieldType(&#039;City&#039;, false);&lt;br /&gt;
$cityOptions=$cities-&amp;gt;getOptions(); // works only if you set your field getOptions on public!!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Overriding &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
As mentioned in the section [[#Form field type class requirements|Form field type class requirements]], custom form field types usually do not define their own &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt;. If you do want to create a custom label, you can still make use of the &amp;lt;code&amp;gt;getLabel()&amp;lt;/code&amp;gt; that every field type class inherits from JFormField, for example by defining it as follows:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
     return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
} &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
This code will underline your form labels. (Please note that if your goal is to underline form labels, using [[CSS]] is the preferred way.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
If you want to do something completely different, you can of course also override it completely:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;public function getLabel() {&lt;br /&gt;
	// Initialize variables.&lt;br /&gt;
	$label = &#039;&#039;;&lt;br /&gt;
	$replace = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// Get the label text from the XML element, defaulting to the element name.&lt;br /&gt;
	$text = $this-&amp;gt;element[&#039;label&#039;] ? (string) $this-&amp;gt;element[&#039;label&#039;] : (string) $this-&amp;gt;element[&#039;name&#039;];&lt;br /&gt;
&lt;br /&gt;
	// Build the class for the label.&lt;br /&gt;
	$class = !empty($this-&amp;gt;description) ? &#039;hasTip&#039; : &#039;&#039;;&lt;br /&gt;
	$class = $this-&amp;gt;required == true ? $class.&#039; required&#039; : $class;&lt;br /&gt;
		&lt;br /&gt;
	// Add replace checkbox&lt;br /&gt;
	$replace = &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;update[&#039;.$this-&amp;gt;name.&#039;]&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&#039;;&lt;br /&gt;
		&lt;br /&gt;
	// Add the opening label tag and main attributes attributes.&lt;br /&gt;
	$label .= &#039;&amp;lt;label id=&amp;quot;&#039;.$this-&amp;gt;id.&#039;-lbl&amp;quot; for=&amp;quot;&#039;.$this-&amp;gt;id.&#039;&amp;quot; class=&amp;quot;&#039;.$class.&#039;&amp;quot;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// If a description is specified, use it to build a tooltip.&lt;br /&gt;
	if (!empty($this-&amp;gt;description)) {&lt;br /&gt;
		$label .= &#039; title=&amp;quot;&#039;.htmlspecialchars(trim(JText::_($text), &#039;:&#039;).&#039;::&#039; .&lt;br /&gt;
				JText::_($this-&amp;gt;description), ENT_COMPAT, &#039;UTF-8&#039;).&#039;&amp;quot;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the label text and closing tag.&lt;br /&gt;
	$label .= &#039;&amp;gt;&#039;.$replace.JText::_($text).&#039;&amp;lt;/label&amp;gt;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	return $label; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
This example will add a checkbox inside the label.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Component Code ==&lt;br /&gt;
Below is the code for a small component which you can install and run, and can adapt to experiment further with custom fields. The component includes 2 custom fields&lt;br /&gt;
# a &amp;quot;City&amp;quot; field as described above (except that the options are hard-coded rather than being selected from a database). We&#039;ll also allow multiple Cities to be selected, and pre-select two of them as default.&lt;br /&gt;
# a custom &amp;quot;time&amp;quot; field which maps to the HTML &amp;quot;time&amp;quot; input type, and includes underlining the label and support for setting a min and max time.&lt;br /&gt;
&lt;br /&gt;
Create the following 5 files in a folder called com_custom_fields, then zip up this folder to create com_custom_fields.zip, and install this component on your Joomla instance. Once installed, navigate on your browser to your Joomla site, and add to the URL the parameter &amp;lt;tt&amp;gt;&amp;amp;option=com_custom_fields&amp;lt;/tt&amp;gt;. This should display the form with the 2 custom fields. You can submit the form and see the HTTP POST parameters using the browser development tools, but the component doesn&#039;t contain any code which handles those parameters.&lt;br /&gt;
&lt;br /&gt;
(As described in [[Basic_form_guide#MVC_and_other_considerations|Basic form guide]], the approach below isn&#039;t the recommended way to design Joomla components, but it&#039;s written in this minimalistic fashion to focus on the custom fields aspects).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;com_custom_fields.xml&amp;lt;/tt&amp;gt; Manifest file for the component&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.1.0&amp;quot; method=&amp;quot;upgrade&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;name&amp;gt;com_custom_fields&amp;lt;/name&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;Custom Fields demo component&amp;lt;/description&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;administration&amp;gt;&lt;br /&gt;
	&amp;lt;/administration&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;custom_fields.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;form_definition.xml&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;City.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
		&amp;lt;filename&amp;gt;Time.php&amp;lt;/filename&amp;gt;&lt;br /&gt;
	&amp;lt;/files&amp;gt;&lt;br /&gt;
&amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;custom_fields.php&amp;lt;/tt&amp;gt; The main code file which is run when an HTTP GET or POST is directed towards this component. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted Access&#039;);&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Form\Form;&lt;br /&gt;
&lt;br /&gt;
$form = Form::getInstance(&amp;quot;sample&amp;quot;, __DIR__ . &amp;quot;/form_definition.xml&amp;quot;, array(&amp;quot;control&amp;quot; =&amp;gt; &amp;quot;jform&amp;quot;));&lt;br /&gt;
Form::addFieldPath(__DIR__);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo JRoute::_(&#039;index.php?option=com_custom_fields&#039;); ?&amp;gt;&amp;quot;&lt;br /&gt;
    method=&amp;quot;post&amp;quot; name=&amp;quot;adminForm&amp;quot; id=&amp;quot;adminForm&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mytime&#039;);  ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php echo $form-&amp;gt;renderField(&#039;mycity&#039;);  ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;form_definition.xml&amp;lt;/tt&amp;gt; File containing the XML for the form definition, basically the 2 custom fields.&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 name=&amp;quot;myForm&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;field&lt;br /&gt;
		name=&amp;quot;mytime&amp;quot;&lt;br /&gt;
		type=&amp;quot;time&amp;quot;&lt;br /&gt;
		label=&amp;quot;Time:&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot;&lt;br /&gt;
		min=&amp;quot;09:00&amp;quot;&lt;br /&gt;
		max=&amp;quot;17:30&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;field name=&amp;quot;mycity&amp;quot; &lt;br /&gt;
		type=&amp;quot;City&amp;quot;&lt;br /&gt;
		label=&amp;quot;City:&amp;quot;&lt;br /&gt;
		required=&amp;quot;true&amp;quot;&lt;br /&gt;
		multiple=&amp;quot;true&amp;quot;&lt;br /&gt;
		class=&amp;quot;inputbox&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;City.php&amp;lt;/tt&amp;gt; PHP code for the City custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;_JEXEC&#039;) or die(&#039;Restricted access&#039;);&lt;br /&gt;
use Joomla\CMS\Form\FormHelper;&lt;br /&gt;
&lt;br /&gt;
FormHelper::loadFieldClass(&#039;list&#039;);&lt;br /&gt;
&lt;br /&gt;
class JFormFieldCity extends JFormFieldList {&lt;br /&gt;
&lt;br /&gt;
	protected $type = &#039;City&#039;;&lt;br /&gt;
&lt;br /&gt;
	public function getOptions() {&lt;br /&gt;
		$cities = array(&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 1, &#039;text&#039; =&amp;gt; &#039;New York&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 2, &#039;text&#039; =&amp;gt; &#039;Chicago&#039;),&lt;br /&gt;
					array(&#039;value&#039; =&amp;gt; 3, &#039;text&#039; =&amp;gt; &#039;San Francisco&#039;),&lt;br /&gt;
					);&lt;br /&gt;
		// Merge any additional options in the XML definition.&lt;br /&gt;
		$options = array_merge(parent::getOptions(), $cities);&lt;br /&gt;
&lt;br /&gt;
		// pre-select values 2 and 3 by setting the protected $value property&lt;br /&gt;
		$this-&amp;gt;value = array(2, 3);&lt;br /&gt;
&lt;br /&gt;
		return $options;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Time.php&amp;lt;/tt&amp;gt; PHP code for the time custom field.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
defined(&#039;JPATH_PLATFORM&#039;) or die;&lt;br /&gt;
&lt;br /&gt;
use Joomla\CMS\Factory;&lt;br /&gt;
use Joomla\CMS\Form\FormField;&lt;br /&gt;
&lt;br /&gt;
class JFormFieldTime extends FormField&lt;br /&gt;
{&lt;br /&gt;
	protected $type = &#039;time&#039;;&lt;br /&gt;
&lt;br /&gt;
	protected function getInput()&lt;br /&gt;
	{&lt;br /&gt;
		// get relevant attributes which were defined in the XML form definition&lt;br /&gt;
		$attr = !empty($this-&amp;gt;class) ? &#039; class=&amp;quot;&#039; . $this-&amp;gt;class . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;min&#039;]) ? &#039; min=&amp;quot;&#039; . $this-&amp;gt;element[&#039;min&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
		$attr .= !empty($this-&amp;gt;element[&#039;max&#039;]) ? &#039; max=&amp;quot;&#039; . $this-&amp;gt;element[&#039;max&#039;] . &#039;&amp;quot;&#039; : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		// set up html, including the value and other attributes&lt;br /&gt;
		$html = &#039;&amp;lt;input type=&amp;quot;time&amp;quot; name=&amp;quot;&#039; . $this-&amp;gt;name . &#039;&amp;quot; value=&amp;quot;&#039; . $this-&amp;gt;value . &#039;&amp;quot;&#039; . $attr . &#039;/&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		return $html;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function getLabel() {&lt;br /&gt;
		return &#039;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&#039; . parent::getLabel() . &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Extension development]]&lt;br /&gt;
[[Category:Form fields]]&lt;br /&gt;
[[Category:Joomla! 2.5]]&lt;br /&gt;
[[Category:Joomla! 3.x]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667963</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667963"/>
		<updated>2020-05-23T20:16:30Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: change states to stages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;Stages:&#039;&#039; Stages are the start points and end points within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;State:&#039;&#039; The state of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions occur between stages.  They are where the actions happen.  .&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow stages (for more info see [[S:MyLanguage/Publishing_Workflow#Stages|Stages]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;Stages&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow icon, next to &amp;quot;default&amp;quot;, representing the number of existing stages in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one stage to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible stages are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|800px|center|Workflows Plugins]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.  This option is not within the workflows screen.  For this option you need to go to Content -&amp;gt; Categories.  Once there open any category and you will see a &amp;quot;workflows&amp;quot; tab.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Workflow-categories.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667962</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667962"/>
		<updated>2020-05-23T20:15:30Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Update states to stages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;Stages:&#039;&#039; Stages are the start points and end points within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;State:&#039;&#039; The state of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions occur between stages.  They are where the actions happen.  .&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow stages (for more info see [[S:MyLanguage/Publishing_Workflow#Stages|Stages]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;Stages&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow icon, next to &amp;quot;default&amp;quot;, representing the number of existing stages in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|800px|center|Workflows Plugins]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.  This option is not within the workflows screen.  For this option you need to go to Content -&amp;gt; Categories.  Once there open any category and you will see a &amp;quot;workflows&amp;quot; tab.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Workflow-categories.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667961</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667961"/>
		<updated>2020-05-23T20:13:33Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Updated States to Stages.  Then made conditions states.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;Stages:&#039;&#039; Stages are the start points and end points within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;State:&#039;&#039; The state of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions occur between stages.  They are where the actions happen.  .&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|800px|center|Workflows Plugins]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.  This option is not within the workflows screen.  For this option you need to go to Content -&amp;gt; Categories.  Once there open any category and you will see a &amp;quot;workflows&amp;quot; tab.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Workflow-categories.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667960</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667960"/>
		<updated>2020-05-23T20:11:52Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|800px|center|Workflows Plugins]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.  This option is not within the workflows screen.  For this option you need to go to Content -&amp;gt; Categories.  Once there open any category and you will see a &amp;quot;workflows&amp;quot; tab.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Workflow-categories.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667959</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667959"/>
		<updated>2020-05-23T20:11:01Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|800px|center|Workflows Plugins]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Workflow-categories.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Workflow-categories.png&amp;diff=667958</id>
		<title>File:Workflow-categories.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Workflow-categories.png&amp;diff=667958"/>
		<updated>2020-05-23T20:10:32Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Workflow in the categories menu&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667957</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667957"/>
		<updated>2020-05-23T20:09:10Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Make workflows plugin image correct width.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|800px|center|Workflows Plugins]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667956</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667956"/>
		<updated>2020-05-23T20:08:15Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|800px]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667955</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667955"/>
		<updated>2020-05-23T20:07:43Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Added instructions to disable workflows.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:999--&amp;gt; You can disable workflows at any times by visiting &amp;quot;articles&amp;quot; or &amp;quot;workflows&amp;quot; and clicking &amp;quot;options&amp;quot; int he top right.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Disable-workflows.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Disable-workflows.png&amp;diff=667954</id>
		<title>File:Disable-workflows.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Disable-workflows.png&amp;diff=667954"/>
		<updated>2020-05-23T20:07:29Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to disable workflows in Joomla!&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667953</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667953"/>
		<updated>2020-05-23T20:03:43Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Insert section about workflow plugins.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; All of the workflow transition actions are Joomla! workflow plugins.  If you go to System -&amp;gt; Plugins.  Then change the &amp;quot;type&amp;quot; dropdown to &amp;quot;workflow&amp;quot; you will see the plugins.  These can be disabled like any other plugin.  &amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows--plugins--workflows.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Workflows--plugins--workflows.png&amp;diff=667952</id>
		<title>File:Workflows--plugins--workflows.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Workflows--plugins--workflows.png&amp;diff=667952"/>
		<updated>2020-05-23T20:03:29Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Workflow plugins&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667951</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667951"/>
		<updated>2020-05-23T19:59:15Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; The final tab is the permissions tab.  This allows you to set who can use this transition.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667950</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667950"/>
		<updated>2020-05-23T19:58:06Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Multiple changes to content and images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|800px|center|Edit Transition Actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; Finally there is the &amp;quot;more receivers&amp;quot; option.  This allows you to choose individual users to receive this notification.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--notification.png|800px|center|Edit Transition Notification]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667949</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667949"/>
		<updated>2020-05-23T19:56:47Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; You can also add additional message text.  This will also allow you to use a [[J3.x:Language_Overrides_in_Joomla|language]] string which would make the message text translatable.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; The Usergroups option will allow you to define who will receive the notification.  In the example we have chosen we would choose &#039;&#039;editor&#039;&#039; as the usergroup.  In that example all users within that usergroup would get a notification.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667948</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667948"/>
		<updated>2020-05-23T19:56:09Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--transition-actions.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; The &#039;&#039;transition notifications&#039;&#039; tab allows you to define whether a notification is sent during that state.  For example if an article has been written but needs to be proofread, you could send an email notification to the editor     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667947</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667947"/>
		<updated>2020-05-23T19:55:25Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;transition actions&#039;&#039; stage allows you to define what state the item will be in after the transition is complete.  For example if the item is an article it could become unpublished, which is exactly what happens in the &#039;&#039;unpublish&#039;&#039; transition.  You can also define whether the item is featured or not by the end of the state.     &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667946</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667946"/>
		<updated>2020-05-23T19:54:16Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Transitions--edit--description.png|800px|center|Edit Transitions View]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667945</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667945"/>
		<updated>2020-05-23T19:54:01Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; The &#039;&#039;target stage&#039;&#039; is the stage the workflow will end up at after the transition has taken place.   &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667944</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667944"/>
		<updated>2020-05-23T19:53:31Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.  &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667943</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667943"/>
		<updated>2020-05-23T19:52:21Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue icon.  You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667942</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667942"/>
		<updated>2020-05-23T19:51:29Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667941</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667941"/>
		<updated>2020-05-23T19:49:21Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The &#039;&#039;current stage&#039;&#039; will define where this transition is applied.  You can choose all stages, or a specific stage.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Transitions--edit--notification.png&amp;diff=667940</id>
		<title>File:Transitions--edit--notification.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Transitions--edit--notification.png&amp;diff=667940"/>
		<updated>2020-05-23T19:14:20Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Transitions - Edit - the Notifications Tab&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Transitions--edit--transition-actions.png&amp;diff=667939</id>
		<title>File:Transitions--edit--transition-actions.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Transitions--edit--transition-actions.png&amp;diff=667939"/>
		<updated>2020-05-23T19:02:28Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Edit Transitions -- transitions actions tab&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Transitions--edit--description.png&amp;diff=667938</id>
		<title>File:Transitions--edit--description.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Transitions--edit--description.png&amp;diff=667938"/>
		<updated>2020-05-23T18:53:04Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The transition edit window&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Transitions-View.png&amp;diff=667937</id>
		<title>File:Transitions-View.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Transitions-View.png&amp;diff=667937"/>
		<updated>2020-05-23T18:49:23Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The transitions view&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667936</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667936"/>
		<updated>2020-05-23T18:45:10Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.  You can edit the name of a stage by clicking on it. &amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667935</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667935"/>
		<updated>2020-05-23T18:44:12Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stages== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667934</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667934"/>
		<updated>2020-05-23T18:43:57Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The stages are accessed via the &amp;quot;Workflows List&amp;quot; container via clicking on the yellow icon showing the number of stages.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Stages.png|800px|center|Stages View]]&lt;br /&gt;
&lt;br /&gt;
[[File:Stages--edit.png|800px|center|The Edit Stage view]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you can edit the stage.  You can enable or disable it and write a note.  It also has a &amp;quot;default&amp;quot; toggle.  If there is only one item you will not be able to toggle this.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667933</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667933"/>
		<updated>2020-05-23T18:43:01Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The states can be accessed through the &amp;quot;Workflows List&amp;quot; container via clicking on &#039;&#039;Manage&#039;&#039; states. You can set a default state (which must be of the condition &amp;quot;published&amp;quot;). When clicking on the title, you can &#039;&#039;Edit&#039;&#039; the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:States List-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
[[File:Edit State-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit State]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you find a status option to the right. This is the condition of the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; To the left there is a &amp;quot;Condition of items in this State&amp;quot; dropdown. This concerns the status of the items (e.g. articles) which are currently in this state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;Example:&#039;&#039; A possible sequence of states would be: Unpublished {{rarr}} In Review {{rarr}}Published.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Stages--edit.png&amp;diff=667932</id>
		<title>File:Stages--edit.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Stages--edit.png&amp;diff=667932"/>
		<updated>2020-05-23T18:36:12Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The edit stage view&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Stages.png&amp;diff=667931</id>
		<title>File:Stages.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Stages.png&amp;diff=667931"/>
		<updated>2020-05-23T18:35:26Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The stages view&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667930</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667930"/>
		<updated>2020-05-23T18:33:15Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Grammar correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally tidier. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The states can be accessed through the &amp;quot;Workflows List&amp;quot; container via clicking on &#039;&#039;Manage&#039;&#039; states. You can set a default state (which must be of the condition &amp;quot;published&amp;quot;). When clicking on the title, you can &#039;&#039;Edit&#039;&#039; the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:States List-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
[[File:Edit State-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit State]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you find a status option to the right. This is the condition of the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; To the left there is a &amp;quot;Condition of items in this State&amp;quot; dropdown. This concerns the status of the items (e.g. articles) which are currently in this state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;Example:&#039;&#039; A possible sequence of states would be: Unpublished {{rarr}} In Review {{rarr}}Published.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667929</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667929"/>
		<updated>2020-05-23T18:32:07Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Remove inaccurate information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally more tidy. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow square icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; You can also see the workflow ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The states can be accessed through the &amp;quot;Workflows List&amp;quot; container via clicking on &#039;&#039;Manage&#039;&#039; states. You can set a default state (which must be of the condition &amp;quot;published&amp;quot;). When clicking on the title, you can &#039;&#039;Edit&#039;&#039; the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:States List-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
[[File:Edit State-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit State]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you find a status option to the right. This is the condition of the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; To the left there is a &amp;quot;Condition of items in this State&amp;quot; dropdown. This concerns the status of the items (e.g. articles) which are currently in this state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;Example:&#039;&#039; A possible sequence of states would be: Unpublished {{rarr}} In Review {{rarr}}Published.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667926</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667926"/>
		<updated>2020-05-23T16:30:03Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: Updated Workflows Screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally more tidy. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows-en.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow circle icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; Furthermore you see the date the workflow was created, the author and an ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The states can be accessed through the &amp;quot;Workflows List&amp;quot; container via clicking on &#039;&#039;Manage&#039;&#039; states. You can set a default state (which must be of the condition &amp;quot;published&amp;quot;). When clicking on the title, you can &#039;&#039;Edit&#039;&#039; the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:States List-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
[[File:Edit State-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit State]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you find a status option to the right. This is the condition of the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; To the left there is a &amp;quot;Condition of items in this State&amp;quot; dropdown. This concerns the status of the items (e.g. articles) which are currently in this state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;Example:&#039;&#039; A possible sequence of states would be: Unpublished {{rarr}} In Review {{rarr}}Published.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=File:Workflows-en.png&amp;diff=667925</id>
		<title>File:Workflows-en.png</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=File:Workflows-en.png&amp;diff=667925"/>
		<updated>2020-05-23T16:28:01Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;com_worksflows initial page&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667924</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667924"/>
		<updated>2020-05-23T15:47:37Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally more tidy. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows List-&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow circle icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; Furthermore you see the date the workflow was created, the author and an ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The states can be accessed through the &amp;quot;Workflows List&amp;quot; container via clicking on &#039;&#039;Manage&#039;&#039; states. You can set a default state (which must be of the condition &amp;quot;published&amp;quot;). When clicking on the title, you can &#039;&#039;Edit&#039;&#039; the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:States List-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
[[File:Edit State-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit State]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you find a status option to the right. This is the condition of the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; To the left there is a &amp;quot;Condition of items in this State&amp;quot; dropdown. This concerns the status of the items (e.g. articles) which are currently in this state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;Example:&#039;&#039; A possible sequence of states would be: Unpublished {{rarr}} In Review {{rarr}}Published.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667923</id>
		<title>J4.x:Workflow</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J4.x:Workflow&amp;diff=667923"/>
		<updated>2020-05-23T15:47:13Z</updated>

		<summary type="html">&lt;p&gt;Uglyeoin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=4.x}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Introduction== &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:2--&amp;gt; The Publishing Workflow component is used to replace static states (unpublished, published, trashed and archived) with a more generic approach. This way you can easily create a customized workflow to manage your articles within a component.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; The article backend view in Joomla3.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:Article view 3-&amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center]]&lt;br /&gt;
*&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; The article backend view in Joomla 4.x:&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[File:J4 Articles Backend.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; The article tool range is now smaller and the view generally more tidy. You can create customized states for the articles and group them in categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; There is a tutorial page containing steps for the creation of your first workflow: [[S:MyLanguage/Publishing Workflow/Scenarios|Scenarios]].&amp;lt;/translate&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
You can find more information about the implementation of the component in other areas on the page of the Google Summer of Code project DOC: [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terms &amp;amp; Definitions== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;Workflows:&#039;&#039; You can create several workflows. Each workflow contains states, possible transitions and item conditions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;States:&#039;&#039; States can be regarded as steps within a workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;Conditions:&#039;&#039; The condition of an item can be unpublished, published, trashed or archived.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;Transitions:&#039;&#039; Transitions set the sequence of states an article has to pass.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;Categories:&#039;&#039; Articles can be assigned to categories.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Usage of the toolbar== &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; In the toolbar you find several buttons. You can select an item via the checkbox at the left of the title. At least one item must be selected to complete one of the following actions:&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; Publish or unpublish items&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; Set an item to default&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Item Check-In&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; While a user is editing an item, the items edit functionality will be locked for other users during that period of time. The check-in function unlocks the item. &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Make sure that the edit process has been completed and saved before you unlock the item. Otherwise previously made changes could be lost.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; Trash Items&amp;lt;/translate&amp;gt; &lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Please keep in mind:&#039;&#039;&#039; Through the usage of the trash button you are only &#039;&#039;&#039;&#039;&#039;moving items to trash&#039;&#039;&#039;&#039;&#039;. This means the items status is being set to &amp;quot;trashed&amp;quot;. In order to &#039;&#039;&#039;&#039;&#039;delete an item completely&#039;&#039;&#039;&#039;&#039;, you have to use the search tools and filter for the status &amp;quot;trashed&amp;quot;. In the displayed list of items, select the item you wish to be permanently deleted and click the trash button again.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Workflows== &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; The workflow resembles a sequence of steps. It can be accessed via the main top menu under &amp;quot;Content&amp;quot;. You will be directed to the &amp;quot;Workflows List&amp;quot;, an overview of all your existing workflows. A workflow contains several states of different conditions. Items (e.g. articles) can transit through those states.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:Workflows List-&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; You see the status of the workflow (published / unpublished)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Next to the status is the title. By clicking on the title you can &#039;&#039;edit the workflow&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;Editable&#039;&#039;: Title | Description | Status | Default Option | Permissions (Rights Management)&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Next to the title you find the option to &#039;&#039;Manage&#039;&#039; the workflow states (for more info see [[S:MyLanguage/Publishing_Workflow#States|States]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; Next to the &amp;quot;States&amp;quot; is the default option&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; You find a yellow circle icon, next to &amp;quot;default&amp;quot;, representing the number of existing states in this workflow&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Next to the yellow circle is a blue arrow icon that represents the number of existing transitions in this workflow (for more info see[[S:MyLanguage/Publishing_Workflow#Transitions| Transitions]])&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; Furthermore you see the date the workflow was created, the author and an ID.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==States== &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; The states can be accessed through the &amp;quot;Workflows List&amp;quot; container via clicking on &#039;&#039;Manage&#039;&#039; states. You can set a default state (which must be of the condition &amp;quot;published&amp;quot;). When clicking on the title, you can &#039;&#039;Edit&#039;&#039; the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:States List-&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Workflows List]]&lt;br /&gt;
&lt;br /&gt;
[[File:Edit State-&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit State]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; In the second picture you find a status option to the right. This is the condition of the state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; To the left there is a &amp;quot;Condition of items in this State&amp;quot; dropdown. This concerns the status of the items (e.g. articles) which are currently in this state.&amp;lt;/translate&amp;gt;&lt;br /&gt;
** &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;Example:&#039;&#039; A possible sequence of states would be: Unpublished {{rarr}} In Review {{rarr}}Published.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Transitions== &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Articles can transit from one state to another. The transitions can be managed through the &amp;quot;Workflows List&amp;quot; container via clicking on the blue arrow icon or via the menu on the left, after clicking on &#039;&#039;Manage&#039;&#039; states. You can set several transitions that items can go through. The possible states are based on the ones you have created for this specific workflow.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Edit Transition-&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; en&amp;lt;/translate&amp;gt;.png|800px|center|Edit Transition]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;Example:&#039;&#039; In the transition &amp;quot;Next Step: Publishing&amp;quot; items are originally of the state &amp;quot;unpublished&amp;quot;. They are, for example, in need of a review. After they have been reviewed, they can transit to the state &amp;quot;published&amp;quot;.&amp;lt;/translate&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Categories== &amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Articles can be assigned to categories. They correspond to a certain workflow and can be customized in various ways. You can set a status, parent category and also restrict the access as well as the permissions.&amp;lt;/translate&amp;gt; &lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;Example:&#039;&#039; You have certain articles that you want to be available only for administrators or users of a higher rank. You can call your category &amp;quot;Restricted&amp;quot; and set all permissions on &amp;quot;Allowed&amp;quot; for administrators or higher. This way you do not have to set those permissions for every article concerned but can move them into this special category and save time instead.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==Related Information== &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; See also:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow_Implementation|Publishing Workflow Implementation]]&lt;br /&gt;
* [[S:MyLanguage/Publishing_Workflow/Scenarios|Scenarios]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
[[Category:Article Management{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Uglyeoin</name></author>
	</entry>
</feed>