Actions

Difference between revisions of "Deploying an Update Server"

From Joomla! Documentation

(not needet ;-))
(Mark as needs review - see discussion for reasoning)
Line 1: Line 1:
{{RightTOC}}
+
{{RightTOC}}{{review}}
  
This tutorial is for all Joomla! versions newer than {{JVer|1.6}}
+
This tutorial is for all Joomla! version {{JVer|2.5}} and newer
  
 
= Introduction =
 
= Introduction =
This tutorial is designed to teach developers how to create an update server for integration with the update system introduced in Joomla! 1.6.  By adding an update server listing to your extension's manifest, developers enable users to update their extensions via the [[Help16:Extensions Extension Manager Update|Extension Manager's Update]] view with only a few clicks.
+
This tutorial is designed to teach developers how to create an update server for integration with the update system introduced in Joomla! 2.5.  By adding an update server listing to your extension's manifest, developers enable users to update their extensions via the [[Help25:Extensions Extension Manager Update|Extension Manager's Update]] view with only a few clicks.
  
 
= Defining an update server =
 
= Defining an update server =
In order to use this feature, an update server must be defined in your extension's manifest.  This definition can be used in all Joomla! 1.6 and newer compatible extensions but is not available for templates.  You can use two options for your server type; collection or extension.  These will be explained in detail shortly.  The update server is defined as follows for each type:
+
In order to use this feature, an update server must be defined in your extension's manifest.  This definition can be used in all Joomla! 2.5 and newer compatible extensions but is not available for templates.  You can use two options for your server type; collection or extension.  These will be explained in detail shortly.  This code should be added to the extension manifest file, within the root "extension" element. The update server is defined as follows for each type:
  
 
<code>
 
<code>
 +
<extension>
 +
<...>
 
  <updateservers>
 
  <updateservers>
 
     <server type="collection">http://example.com/list.xml</server>
 
     <server type="collection">http://example.com/list.xml</server>
 
     <server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server>
 
     <server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server>
 
  </updateservers>
 
  </updateservers>
 +
</extension>
 
</code>
 
</code>
  
Line 67: Line 70:
 
* '''type''' - The type of extension (component, module, plugin, etc.) (required)
 
* '''type''' - The type of extension (component, module, plugin, etc.) (required)
 
* '''folder''' - Specific to plugins, this tag describes the type of plugin being updated (content, system, etc.) (required for plugins)
 
* '''folder''' - Specific to plugins, this tag describes the type of plugin being updated (content, system, etc.) (required for plugins)
* '''client''' (usually optional, required for J! 1.7.3 due to a regression; but highly encouraged regardless) - The client ID of the extension, which can be found by looking inside the #__extensions table. To date, use 0 for "site" and 1 for "administrator". Plugins are automatically installed with a client of 0 (site), but you will need to specify the client in an update or it will default to 1 (administrator). Components are automatically installed with a client of 1, which is currently the default.
+
* '''client''' (usually optional, required for J! 1.7.3 due to a regression; but highly encouraged regardless) - The client ID of the extension, which can be found by looking inside the #__extensions table. To date, use 0 for "site" and 1 for "administrator". Plugins and front-end modules are automatically installed with a client of 0 (site), but you will need to specify the client in an update or it will default to 1 (administrator) and then found update would not be shown because it would not match any extension. Components are automatically installed with a client of 1, which is currently the default.
 
** ''Warning'': The tag name is <'''client'''> for Joomla! 2.5 and <'''client_id'''> for 1.6 and 1.7. If you use <client_id> (rather than <client>) on a 2.5 site, it will be ignored.
 
** ''Warning'': The tag name is <'''client'''> for Joomla! 2.5 and <'''client_id'''> for 1.6 and 1.7. If you use <client_id> (rather than <client>) on a 2.5 site, it will be ignored.
 
* '''version''' - The version of the release (required)
 
* '''version''' - The version of the release (required)
Line 82: Line 85:
 
** '''name''' - The name of the platform dependency; as of this writing, it should ONLY be "joomla"
 
** '''name''' - The name of the platform dependency; as of this writing, it should ONLY be "joomla"
 
** '''version''' - The version of Joomla! the extension supports
 
** '''version''' - The version of Joomla! the extension supports
*** '''Note:''' If your extension is Joomla! 1.6, 1.7, and/or 2.5 compatible, you will be required to have separate <update> definitions for each version due to the manner in which the updater checks the version
+
** '''min_dev_level''' and '''max_dev_level''' - These attributes were added in 3.0.1 to allow you to select a target platform based on the developer level ("z" in x.y.z). They are optional. You can specifiy either one or both. If omitted, all developer levels are matched. For example, the following matches versions 4.0.0 and 4.0.1. <code><targetplatform name="joomla" version="4.0" min_dev_level="0" max_dev_level="1"/></code>
 +
*** '''Note:''' If your extension is Joomla! 2.5 and/or 3.1 compatible, you will be required to have separate <update> definitions for each version due to the manner in which the updater checks the version
  
 
A separate <update> definition will be required for each version of your extension you release.
 
A separate <update> definition will be required for each version of your extension you release.
  
 
The values of '''element''', '''type''', '''client_id''' and '''folder''' should match those in the table #__extensions.
 
The values of '''element''', '''type''', '''client_id''' and '''folder''' should match those in the table #__extensions.
 +
 +
'''Important for plugins:''' Plugins have to include <folder> and <client> elements to work properly
 +
 +
= Troubleshooting =
 +
* '''SQL update script is not executed during update.'''
 +
:If the SQL update script (for example, in the folder <code>sql/updates/mysql</code>) does not get executed during the update process, it could be because there is no version number in the <code>#__schemas</code> table for this extension ''prior to the update''. This value is determined by the last script name in the SQL updates folder. If this value is blank, no SQL scripts will be executed during that update cycle. To make sure this value is set correctly, make sure you have a SQL script in this folder with its name as the version number (for example, 1.2.3.sql if the version is 1.2.3). The file can be empty or just have a SQL comment line. This should be done in the old version -- the one before the update. Alternatively, you can add this value to the <code>#__schemas</code> using a SQL query.
  
 
= Supporting Tools =
 
= Supporting Tools =
Line 93: Line 103:
 
= Contributors =
 
= Contributors =
 
*[[User:mbabker|Michael Babker]]
 
*[[User:mbabker|Michael Babker]]
 +
[[Category:Development]]

Revision as of 17:05, 29 April 2013