Difference between revisions of "Deploying an Update Server/fr"

From Joomla! Documentation

(Created page with "== Définition d'un serveur de mise à jour ==")
 
(114 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
<noinclude><languages /></noinclude>
 
<noinclude><languages /></noinclude>
<noinclude>{{Joomla version|version=2.5|status=eos}}{{Joomla version|version=3.x|}}</noinclude>
+
<noinclude>{{Joomla version|version=2.5|status=eos}}{{Joomla version|version=3.x|}}{{Joomla version|version=4.x|}}</noinclude>
  
 
== Introduction ==
 
== Introduction ==
 
__TOC__
 
__TOC__
This tutorial is designed to teach developers how to create an update server for integration with the update system introduced in Joomla!. By adding an update server listing to your extension's manifest, developers enable users to update their extensions via the Extension Manager's Update (see [[S:MyLanguage/Help25:Extensions Extension Manager Update|Joomla 2.5]] and [[S:MyLanguage/Help31:Extensions Extension Manager Update|Joomla 3.x]] helpscreens) view with only a few clicks.
+
Ce didacticiel a pour vocation d'aider les développeurs à créer un serveur de mise à jour pour une intégration avec le système de mise à jour implémenté dans Joomla. En ajoutant une liste de serveurs de mise à jour dans le fichier manifest de leurs extensions, les développeurs vont permettre aux utilisateurs de mettre à jour leurs extensions via le gestionnaire des mises à jour des extensions (voir l'écran d'aide [[S:MyLanguage/Help31:Extensions Extension Manager Update|Mise à Jour de Joomla 3.x]]) en un clic seulement.
 
== Définition d'un serveur de mise à jour ==
 
== Définition d'un serveur de mise à jour ==
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:
+
Pour pouvoir utiliser cette fonction, un serveur de mise à jour doit être défini dans le fichier "manifest" de votre extension. Cette définition peut être utilisée pour toutes les extensions compatibles avec les versions 2.5 et plus récentes de Joomla! mais n'est pas disponible pour les templates. Vous pouvez utiliser deux options pour votre type de serveur&nbsp;: collection ou extension. Celles-ci seront expliquées en détail par la suite. Ce code doit être ajouté au fichier "manifest" de l'extension, à l'intérieur de la balise pour l'élément ''extension''. Le serveur de mise à jour est définie comme suit pour chaque type :
  
 
<source lang="xml">
 
<source lang="xml">
Line 12: Line 12:
 
  <...>
 
  <...>
 
  <updateservers>
 
  <updateservers>
     <server type="collection">http://example.com/list.xml</server>
+
     <server type="collection">https://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>
 
  </extension>
 
</source>
 
</source>
 +
Plusieurs serveurs peuvent être définis à l'aide de balises <tt><updateservers></tt>. Si vous disposez de plusieurs serveurs de mise à jour, vous pouvez indiquer une priorité différente pour chacun d'eux. De cette manière, vous contrôlez l'ordre dans lequel les serveurs de mise à jour vont être utilisés.
  
Multiple servers can be defined within the <updateservers> tag.
+
== Types de serveur ==
 
 
== Server types ==
 
 
=== Collection ===
 
=== Collection ===
The collection server type allows developers to define an extension's manifest to pull updates from a collection. This type of server can be used if the developer wants to define all of their extension's updates in a single file (not recommended) or if their extension has multiple sub-extensions which are not distributed or updated at the same time (such as a package extension type). The below example is the collection definition used by the updater when processing core Joomla! updates:
+
Le serveur de type <tt>"collection"</tt> permet aux développeurs de définir un fichier "manifest" pour une extension afin de charger des mises à jour à partir d'une collection. Ce type de serveur peut être utilisé par les développeurs qui souhaitent définir les mises à jour pour leurs extensions dans un seul fichier (non recommandé) ou si leurs extensions disposent de plusieurs sous-extensions qui ne sont pas distribués ou mises à jour toutes en même temps (comme un type pack d'extension). L'exemple ci-dessous est la définition de <tt>"collection"</tt> utilisée par le programme de mise à jour du noyau Joomlaǃ :
  
 
<source lang="xml">
 
<source lang="xml">
 
  <extensionset name="Joomla Core" description="Joomla! Core">
 
  <extensionset name="Joomla Core" description="Joomla! Core">
     <extension name="Joomla" element="joomla" type="file" version="1.7.0" detailsurl="http://update.joomla.org/core/extension.xml"/>
+
     <extension name="Joomla" element="joomla" type="file" version="1.7.0" detailsurl="https://update.joomla.org/core/extension.xml"/>
 
  </extensionset>
 
  </extensionset>
 
</source>
 
</source>
  
All definitions must be defined between <extensionset> tags in your collection manifest. The <extensionset> tag has two optional parameters; name and description. For each extension that this collection references, a separate <extension> tag is required. The <extension> tag has the following parameters, all of which are required for updates to properly process:
+
Toutes les définitions doivent être présentes entre les balises <tt><extensionset></tt> dans votre "manifest" collection. La balise <tt><extensionset></tt> peut avoir deux paramètres facultatifs : <tt>name</tt> et <tt>description</tt>. Pour chaque extension que cette collection références, une balise <tt><extension></tt> est nécessaire. La balise <tt><extension></tt> présente les paramètres suivants, qui sont tous requis pour que le processus de mise à jour se déroule correctement :
 
 
* '''name''' - The name of the extension
 
* '''element''' - The untranslated extension name i.e. mod_custom
 
* '''type''' - The extension type (component, module, plugin, etc.)
 
* '''version''' - The latest version of the extension
 
* '''detailsurl''' - The URL of the XML file which contains that extension's individual update definitions
 
  
=== Extension ===
+
* '''name''' (nom) - le nom de l'extension
The extension server type allows developers to define an extension's manifest to pull updates from a single extension's manifest. All collection manifests eventually point to this XML file. All updates in this file must be defined after an <updates> tag at the beginning of the file. The below example is the update definition for the Joomla! 1.7.0 release:
+
* '''element''' (élément) - le nom non traduit de l'extension c'est à dire mod_custom
 +
* '''type''' - le type d'extension (composant, module, plugin, etc.)
 +
* '''version''' - la dernière version de l'extension
 +
* '''detailsurl''' - L'URL du fichier XML qui contient les définitions indivielles de mises à jour de l'extension
 +
=== Extensions ===
 +
Le type de serveur d'<tt>"extension"</tt> permet aux développeurs de définir un manifest d'extension pour obtenir les mises à jour depuis un seul manifest d'extension. Tous les manifests de collection pointent finalement vers ce fichier XML. Toutes les mises à jour dans ce fichier doivent être définies après une balise <tt><updates></tt> au début du fichier. L'exemple ci-dessous est la définition de la mise à jour pour la version Joomla! 3.9.6&nbsp;:
  
 
<source lang="xml">
 
<source lang="xml">
<update>
+
<updates>
    <name>Joomla! 1.7</name>
+
<update>
    <description>Joomla! 1.7 CMS</description>
+
<name>Joomla! 3.9</name>
    <element>joomla</element>
+
<description>Joomla! 3.9 CMS</description>
    <type>file</type>
+
<element>joomla</element>
    <version>1.7.0</version>
+
<type>file</type>
    <infourl title="Joomla!">http://www.joomla.org/</infourl>
+
<version>3.9.6</version>
    <downloads>
+
<infourl title="Joomla!">https://www.joomla.org/announcements/release-news/5765-joomla-3-9-6-release.html</infourl>
        <downloadurl type="full" format="zip">http://joomlacode.org/gf/download/frsrelease/15279/66552/Joomla_1.6.5_to_1.7.0_Package.zip</downloadurl>
+
<downloads>
    </downloads>
+
<downloadurl type="full" format="zip">https://downloads.joomla.org/cms/joomla3/3-9-6/Joomla_3.9.6-Stable-Update_Package.zip</downloadurl>
    <tags>
+
<downloadsource type="full" format="zip">https://github.com/joomla/joomla-cms/releases/download/3.9.6/Joomla_3.9.6-Stable-Update_Package.zip</downloadsource>
        <tag>stable</tag>
+
<downloadsource type="full" format="zip">https://update.joomla.org/releases/3.9.6/Joomla_3.9.6-Stable-Update_Package.zip</downloadsource>
    </tags>
+
</downloads>
    <maintainer>Sam Moffatt</maintainer>
+
<tags>
    <maintainerurl>http://sammoffatt.com.au</maintainerurl>
+
<tag>stable</tag>
    <section>Testing</section>
+
</tags>
    <targetplatform name="joomla" version="1.6"/>
+
<sha256>05157273aadd3045564ee44373ea3643b437fa5321d17993a3119b38b04578e2</sha256>
</update>
+
<sha384>ebd9b0666fbe84e20a420a4bcd6c10d306fc4dee4edbbe8e2133c85f0fb84e59be5a50aa97cb38c068b77f77f6bbc091</sha384>
 +
<sha512>a4c47644ceeaeec28944e0c74160203cf12037e0ea1439022e95055dfb6716de172667ce6d9164f12bb519d9cfcf1fdc728abea00f853b41debc7d2740f2b711</sha512>
 +
<maintainer>Joomla! Production Department</maintainer>
 +
<maintainerurl>https://www.joomla.org</maintainerurl>
 +
<section>STS</section>
 +
<targetplatform name="joomla" version="3.[789]" />
 +
<php_minimum>5.3.10</php_minimum>
 +
</update>
 +
</updates>
 
</source>
 
</source>
  
The following section describes the elements of a single update entity.
+
La section suivante décrit les éléments d'une mise à jour unique.
 
 
* '''name''' - The name of the extension, this name will appear in the Name column of the Extension Manager's Update view (required)
 
* '''description''' - A short description of the extension (optional) -- if you choose to use <![CDATA[]]>, double-quotes will break the HTML formatting.  Use single quotes with your HTML entities.
 
* '''element''' - The installed name of the extension (required). For plugins, this needs to be same as plugin attribute value for main file in plugin manifest. For <filename plugin="pluginname">pluginname.php</filename>, element value should be '''pluginname'''.
 
* '''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)
 
* '''client''' - Required for modules and templates as of 3.2.0. - 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.
 
* '''version''' - The version of the release (required)
 
* '''infourl''' - A URL to point users to containing information about the update (optional) (In CMS 2.5, if set, this URL will be displayed in the update view)
 
* '''downloads''' - The section which lists all download locations
 
** '''downloadurl''' - The URL to download the extension from; the <downloadurl> tag has two required parameters:
 
*** '''type''' - The type of package (full or upgrade)
 
*** '''format''' - The format of the package (zip, tar, etc.)
 
** '''NB''' - there must be no newline before or after the URL; it needs to all be on one line or you will get Error connecting to the server: malformed when the update is run
 
* '''tags''' - A list of tags relevant to this version. Joomla! 3.4 and later uses this to determine the stability level of the update. The valid tags are:
 
** ''dev'': Development versions, very unstable and pre-alpha (e.g. nightly builds)
 
** ''alpha'': Alpha quality software (features not implemented, show-stopper bugs)
 
** ''beta'': Beta quality software (all features implemented, show-stopper bugs possible, minor bugs almost certain)
 
** ''rc'': Release Candidate quality software (no show-stopper bugs, minor bugs may still be present)
 
** ''stable'': Production quality software All other tags are currently ignored. If you provide more than one tag containing one of the aforementioned stability keywords only the LAST tag will be taken into account. If you do not provide any tags Joomla! will assume it is a stable version.
 
* '''maintainer''' - The name of the extension maintainer (similar to the <author> tag in a manifest) (optional)
 
* '''maintainerurl''' - The website of the extension maintainer (similar to the <authorUrl> tag in a manifest) (optional)
 
* '''section''' - Optional (unknown use)
 
* '''targetplatform''' - A tag to define platform requirements, requires the following elementsː
 
** '''name''' - The name of the platform dependency; as of this writing, it should ONLY be "joomla"
 
** '''version''' - The version of Joomla! the extension supports
 
** '''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 specify 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 if you specify a number. However to show your extension on all Joomla versions that support automatic updates add <code><targetplatform name="joomla" version=".*"/></code>. If you want your extension to show on all {{JVer|3.x}} versions then rather than specifying a version in the version tag add in <code><targetplatform name="joomla" version="3.[012345]"/></code>. This will show the update to all 3.x versions.
 
* '''php_minimum''' - Beginning with 3.2.2, a minimum supported PHP version can be supplied in the update stream.  If the server does not meet the minimum, a message is displayed to the user advising that an update is available but cannot be installed due to unsupported requirements.
 
 
 
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.
+
* '''name''' - le nom de l'extension, ce nom apparaîtra dans la colonne "Nom" de la vue de mise à jour du gestionnaire d'extension (obligatoire).
 +
* '''description''' – une courte description de l'extension (facultatif) — si vous choisissez d'utiliser <tt><![CDATA[]]></tt>, les guillemets doubles vont briser le formatage HTML. Utilisez des guillemets simples avec vos entités HTML.
 +
* '''element''' - le nom de l'extension installée (obligatoire). Pour les plugins, ce doit être le même que la valeur de l'attribut du plugin  dans le manifest du fichier principal du plugin. Pour <tt><filename plugin="nomduplugin">nomduplugin.php</filename></tt>, la valeur de l'élément doit être '''nomduplugin'''.
 +
* '''type''' - le type de l'extension (composant, module, plugin, etc.) (obligatoire).
 +
* '''folder''' (dossier) - spécifique aux plugins, cette balise décrit le type du plugin mis à jour (contenu, système, etc.) (obligatoire pour les plugins).
 +
* '''client''' – Le client de l'extension. Requis pour les modules et modèles de site depuis la version 3.2.0. – Les valeurs possibles actuellement sont "site" ou "administrator". '''Attention&nbsp;!''' Les plugins et les modules du site public sont automatiquement installés avec le client à 0 (site), mais vous devez tout de même indiquer le client dans une mise à jour ou il sera mis par défaut à 1 (administrator) et, du coup, la mise à jour trouvée ne sera pas affichée parce qu'elle ne correspondra à aucune extension. Les composants sont automatiquement installés avec un client à "administrator", ce qui est la valeur actuelle par défaut.
 +
** '''Attention''' : Concernant Joomla! 4.0 seule une chaîne de caractère est autorisée. L'utilisation de nombres pour le champ client a été déprécié en 2012 et supprimé de Joomla! 4.0 (remplacer "0" par "site" et "1" par "administrator").
 +
** '''Attention''' : le nom de la balise est '''<client>''' pour Joomla! 2.5 et '''<client_id>''' pour les versions 1.6 et 1.7. Si vous utilisez <client_id> plutôt que de <client> sur un site de 2.5, la balise sera ignorée.
 +
* '''version''' - les références de la version (obligatoire)
 +
* '''infourl''' - l'URL pour diriger les utilisateurs vers des informations complémentaires concernant la mise à jour (facultatif).
 +
* '''downloads''' - la section qui liste tous les emplacements pour le téléchargement.
 +
** '''downloadurl''' - l'URL à partir de laquelle il est possible de télécharger l'extension. La balise <downloadurl> doit contenir deux paramètres obligatoires :
 +
*** '''type''' - le type du package (complète ou mise à jour).
 +
*** '''format''' - Le format de l'archive (zip, tar, etc.).
 +
** '''downloadsource''' - Facultatif. Depuis la version Joomlaǃ 3.8.3., une URL alternative depuis laquelle il est possible de télécharger l'extension lorsque la connexion depuis <downloadurl> échoue. Plusieurs balises <downloadsource> sont autorisées. La balise  <downloadsource> nécessite de renseigner deux paramètres obligatoires&nbsp;:
 +
*** '''type''' - Le type du package (complète ou mise à jour).
 +
*** '''format''' - Le format de l'archive (zip, tar, etc.).
 +
** '''NB''' - il ne doit pas y avoir de saut à la ligne avant ou après l'URL&nbsp;; tout doit être écrit sur une seule est même ligne où vous aurez une erreur de connexion au serveur&nbsp;: requête malformée quand la mise à jour sera exécutée
 +
* '''changelogurl''' - Un lien vers un fichier xml du journal des modifications. Les versions Joomlaǃ 4.0 et ultérieures vous permettront d'afficher un bouton vers le journal des modifications dans la page de mise à jour de l'extension. Pour plus de détails pour utiliser cela, consulter&nbsp;: [[Adding changelog to your manifest file/fr|Ajouter un journal de modifications à votre fichier manifest]]
 +
* '''tags''' - Une liste de mots clés pertinents pour cette version. Les versions Joomla! 3.4 et suivantes utilisent cela pour déterminer le niveau de stabilité de la mise à jour. Les valeurs des tags valides sont&nbsp;:
 +
** ''dev'' : versions de développement, très instables et pré-alpha (par exemple, les nightly builds).
 +
** ''alpha'' : Niveau de qualité de logiciel Alpha (fonctionnalités non implémentées, bogues bloquants)
 +
** ''beta'' : Niveau de qualité de logiciel Beta (toutes les fonctionnalités sont implémentées, possibilité de bogues bloquants, certitude de présence de bogues mineurs)
 +
** ''rc'' : Niveau de qualité de logiciel Release Candidate (plus de bogues bloquants, des bogues mineurs peuvent encore subsister)
 +
** ''stable'' : Niveau de qualité de logiciel Production. Tous les autres tags sont actuellement ignorés. Si vous fournissez plus d'un tag contenant l'un des mots clés de stabilité du code ci-dessus, seul le DERNIER tag sera pris en compte. Si aucun tag n'est fourni, Joomla! va considérer que la version est stable.
 +
* '''maintainer''' – Le nom de la personne qui maintient l'extension (similaire à la balise <author> dans le manifest) (optionnel)
 +
* '''maintainerurl''' – Le site web de la personne qui maintient l'extension (similaire à la balise <authorUrl> du manifest) (optionnel)
 +
* '''section''' – Facultatif (utilisation inconnue)
 +
* '''targetplatform''' – Une balise pour définir les exigences de la plateforme (depuis la version {{ JVer| 3.10 }} ceci est également utilisé pour détecter la compatibilité des extensions pour le composant de mise à jour de Joomla), et qui a besoin des éléments suivant&nbsp;ː
 +
** '''name''' – Le nom de la dépendance de la plateforme&nbsp;; actuellement, SEUL "joomla" est supporté
 +
** '''version'''– La version de Joomla! prenant en charge l'extension.
 +
** '''min_dev_level''' et '''max_dev_level''' – Ces attributs ont été ajoutés en 3.0.1 pour permettre de sélectionner une plateforme cible pour un certain niveau de développement ("z" dans x.y.z). Ils sont optionnels. Vous pouvez en spécifier un seul ou les deux. S'il sont omis, les niveaux de développements correspondent tous. Par exemple, la balise suivante inclut les versions 4.0.0 et 4.0.1. <code><targetplatform name="joomla" version="4.0" min_dev_level="0" max_dev_level="1"/></code>
 +
*** '''Note :''' Si votre extension est compatible Joomla! 2.5 et/ou 3.1, vous devrez avoir des définitions séparées de <update> pour chaque version à cause de la manière dans le moteur de mise à jour va vérifier la version, si vous spécifiez une valeur. Cependant, pour montrer votre extension sur toutes les versions Joomla qui supportent les mises à jour automatiques (et de fait indique la compatibilité avec toutes les versions futures de Joomla dans le système de mise à jour de Joomla), ajoutez <code><targetplatform name="joomla" version=".*"/></code>. Si vous voulez que la mise à jour de votre extension s'affiche pour toutes les versions {{JVer|3.x}}, alors plutôt que de spécifier une version dans le tag de version, ajoutez <code><targetplatform name="joomla" version="3.[012345]"/></code>. Ceci va montrer la mise à jour dans toutes les versions 3.x de 3.0 à 3.5. Si vous voulez inclure la version 3.10, vous pouvez utiliser un <code>|</code> comme ceci&nbsp;: <code><targetplatform name="joomla" version="3.[012345]|10"/></code>. Si vous voulez montrer les mises à jour pour toutes les versions 3.8.x et toutes les versions 3.10.x, vous pouvez utiliser <code><targetplatform name="joomla" version="3.(8|10)"/></code>
 +
* '''php_minimum''' – Depuis la version 3.2.2, une version minimale PHP supportée peut être fournie dans le flux de mise à jour. Si le serveur n'a pas cette version minimale, un message indique à l'utilisateur que la mise à jour est accessible mais ne peut pas être installée du fait d'une exigence non couverte.
 +
* '''supported_databases''' – Depuis la version 3.7, une vérification de la base de données et de sa version minimale supportée peut être fournie dans le flux de mise à jour. Lorsque le serveur n'a pas cette version minimale, un message indique à l'utilisateur que la mise à jour est accessible mais ne peut pas être installée du fait d'une exigence non couverte. A noter&nbsp;: [https://github.com/joomla/joomla-cms/pull/26079 Comme pour la version 3.9.12] il y a également un cas spécial pour mariadb et ainsi vous pouvez indiquer une version spécifique minimale pour cela aussi.
 +
** Un exemple pourrait être&nbsp;: <code><supported_databases mysql="5.5.3" mariadb="10.1" postgresql="9.2" mssql="10.50.1600.1" /></code>
 +
* '''sha256''', '''sha384''', '''sha512''' – Facultatif. Depuis la version Joomlaǃ 3.9.0, vous pouvez ajouter des checksums sur vos fichiers pour ces formats hash. Notez que dans Joomlaǃ 3, seule une information est présente dans '''mises à jour''' si un checksum n'est pas correct. C'est tout. La mise à jour ne s'arrête pas pour autant. Pour les mises à jour avec Joomlaǃ 4 et les installations, si un checksum fourni n'est pas correct, alors la mise à jour s'arrêtera.
  
'''Important for plugins:''' Plugins have to include <folder> and <client> elements to work properly
+
La définition d'un <update> séparé sera requis pour chaque version de l'extension que vous mettez à disposition.
  
== Troubleshooting ==
+
Les valeurs de '''element''', '''type''', '''client_id''' et '''folder''' doivent correspondre à ceux de la table #__extensions.
* '''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 ==
+
'''Important pour les plugins :''' les plugins doivent intégrer les éléments <tt><folder></tt> et <tt><client></tt> pour fonctionner correctement.
Maintaining your update server files can be difficult depending on the manner in which you set up your files. An extension which can help you to maintain this is the Akeeba Release System, available free of charge from https://www.akeebabackup.com
+
== Résolution de problèmes ==
 +
* '''Le script de mise à jour SQL n'est pas exécuté durant une mise à jour.'''
 +
:Si le script de mise à jour SQL (par exemple, dans le répertoire <code>sql/updates/mysql</code>) n'est pas exécuté durant le processus de mise à jour, cela peut être dû au fait qu'il n'y avait pas de numéro de version dans la table <code>#__schemas</code> de cette extension ''avant la mise à jour''. Cette valeur est déterminée par le dernier nom de script dans le répertoire de mises à jour SQL. Si cette valeur est vierge, aucun script SQL ne sera exécuté durant le cycle de mise à jour. Pour vous assurer que cette valeur est correctement spécifiée, assurez vous que vous avez un script SQL dans ce répertoire dont le nom est le numéro de version (par exemple, 1.2.3.sql si la version est 1.2.3). Le fichier peut être vide ou avoir juste une ligne de commentaire SQL. Ceci doit avoir été fait dans une version antérieure — celle avant la mise à jour. Comme alternative, vous pouvez ajouter cette valeur dans la table <code>#__schemas</code> en utilisant une requête SQL.  
  
== Contributors ==
+
== Outils de support ==
*[[User:mbabker|Michael Babker]]
 
*[[User:Renekorss|Rene Korss]]
 
  
<noinclude>[[Category:Development]]</noinclude>
+
<noinclude>[[Category:Development/fr|Développement]]</noinclude>

Latest revision as of 09:47, 1 December 2022

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎中文(台灣)‎ • ‎日本語
Joomla! 
2.5
Joomla! 
3.x
Joomla! 
4.x

Introduction

Ce didacticiel a pour vocation d'aider les développeurs à créer un serveur de mise à jour pour une intégration avec le système de mise à jour implémenté dans Joomla. En ajoutant une liste de serveurs de mise à jour dans le fichier manifest de leurs extensions, les développeurs vont permettre aux utilisateurs de mettre à jour leurs extensions via le gestionnaire des mises à jour des extensions (voir l'écran d'aide Mise à Jour de Joomla 3.x) en un clic seulement.

Définition d'un serveur de mise à jour

Pour pouvoir utiliser cette fonction, un serveur de mise à jour doit être défini dans le fichier "manifest" de votre extension. Cette définition peut être utilisée pour toutes les extensions compatibles avec les versions 2.5 et plus récentes de Joomla! mais n'est pas disponible pour les templates. Vous pouvez utiliser deux options pour votre type de serveur : collection ou extension. Celles-ci seront expliquées en détail par la suite. Ce code doit être ajouté au fichier "manifest" de l'extension, à l'intérieur de la balise pour l'élément extension. Le serveur de mise à jour est définie comme suit pour chaque type :

 <extension>
 <...>
 <updateservers>
    <server type="collection">https://example.com/list.xml</server>
    <server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server>
 </updateservers>
 </extension>

Plusieurs serveurs peuvent être définis à l'aide de balises <updateservers>. Si vous disposez de plusieurs serveurs de mise à jour, vous pouvez indiquer une priorité différente pour chacun d'eux. De cette manière, vous contrôlez l'ordre dans lequel les serveurs de mise à jour vont être utilisés.

Types de serveur

Collection

Le serveur de type "collection" permet aux développeurs de définir un fichier "manifest" pour une extension afin de charger des mises à jour à partir d'une collection. Ce type de serveur peut être utilisé par les développeurs qui souhaitent définir les mises à jour pour leurs extensions dans un seul fichier (non recommandé) ou si leurs extensions disposent de plusieurs sous-extensions qui ne sont pas distribués ou mises à jour toutes en même temps (comme un type pack d'extension). L'exemple ci-dessous est la définition de "collection" utilisée par le programme de mise à jour du noyau Joomlaǃ :

 <extensionset name="Joomla Core" description="Joomla! Core">
    <extension name="Joomla" element="joomla" type="file" version="1.7.0" detailsurl="https://update.joomla.org/core/extension.xml"/>
 </extensionset>

Toutes les définitions doivent être présentes entre les balises <extensionset> dans votre "manifest" collection. La balise <extensionset> peut avoir deux paramètres facultatifs : name et description. Pour chaque extension que cette collection références, une balise <extension> est nécessaire. La balise <extension> présente les paramètres suivants, qui sont tous requis pour que le processus de mise à jour se déroule correctement :

  • name (nom) - le nom de l'extension
  • element (élément) - le nom non traduit de l'extension c'est à dire mod_custom
  • type - le type d'extension (composant, module, plugin, etc.)
  • version - la dernière version de l'extension
  • detailsurl - L'URL du fichier XML qui contient les définitions indivielles de mises à jour de l'extension

Extensions

Le type de serveur d'"extension" permet aux développeurs de définir un manifest d'extension pour obtenir les mises à jour depuis un seul manifest d'extension. Tous les manifests de collection pointent finalement vers ce fichier XML. Toutes les mises à jour dans ce fichier doivent être définies après une balise <updates> au début du fichier. L'exemple ci-dessous est la définition de la mise à jour pour la version Joomla! 3.9.6 :

<updates>
	<update>
		<name>Joomla! 3.9</name>
		<description>Joomla! 3.9 CMS</description>
		<element>joomla</element>
		<type>file</type>
		<version>3.9.6</version>
		<infourl title="Joomla!">https://www.joomla.org/announcements/release-news/5765-joomla-3-9-6-release.html</infourl>
		<downloads>
			<downloadurl type="full" format="zip">https://downloads.joomla.org/cms/joomla3/3-9-6/Joomla_3.9.6-Stable-Update_Package.zip</downloadurl>
			<downloadsource type="full" format="zip">https://github.com/joomla/joomla-cms/releases/download/3.9.6/Joomla_3.9.6-Stable-Update_Package.zip</downloadsource>
			<downloadsource type="full" format="zip">https://update.joomla.org/releases/3.9.6/Joomla_3.9.6-Stable-Update_Package.zip</downloadsource>
		</downloads>
		<tags>
			<tag>stable</tag>
		</tags>
		<sha256>05157273aadd3045564ee44373ea3643b437fa5321d17993a3119b38b04578e2</sha256>
		<sha384>ebd9b0666fbe84e20a420a4bcd6c10d306fc4dee4edbbe8e2133c85f0fb84e59be5a50aa97cb38c068b77f77f6bbc091</sha384>
		<sha512>a4c47644ceeaeec28944e0c74160203cf12037e0ea1439022e95055dfb6716de172667ce6d9164f12bb519d9cfcf1fdc728abea00f853b41debc7d2740f2b711</sha512>
		<maintainer>Joomla! Production Department</maintainer>
		<maintainerurl>https://www.joomla.org</maintainerurl>
		<section>STS</section>
		<targetplatform name="joomla" version="3.[789]" />
		<php_minimum>5.3.10</php_minimum>
</update>
</updates>

La section suivante décrit les éléments d'une mise à jour unique.

  • name - le nom de l'extension, ce nom apparaîtra dans la colonne "Nom" de la vue de mise à jour du gestionnaire d'extension (obligatoire).
  • description – une courte description de l'extension (facultatif) — si vous choisissez d'utiliser <![CDATA[]]>, les guillemets doubles vont briser le formatage HTML. Utilisez des guillemets simples avec vos entités HTML.
  • element - le nom de l'extension installée (obligatoire). Pour les plugins, ce doit être le même que la valeur de l'attribut du plugin dans le manifest du fichier principal du plugin. Pour <filename plugin="nomduplugin">nomduplugin.php</filename>, la valeur de l'élément doit être nomduplugin.
  • type - le type de l'extension (composant, module, plugin, etc.) (obligatoire).
  • folder (dossier) - spécifique aux plugins, cette balise décrit le type du plugin mis à jour (contenu, système, etc.) (obligatoire pour les plugins).
  • client – Le client de l'extension. Requis pour les modules et modèles de site depuis la version 3.2.0. – Les valeurs possibles actuellement sont "site" ou "administrator". Attention ! Les plugins et les modules du site public sont automatiquement installés avec le client à 0 (site), mais vous devez tout de même indiquer le client dans une mise à jour ou il sera mis par défaut à 1 (administrator) et, du coup, la mise à jour trouvée ne sera pas affichée parce qu'elle ne correspondra à aucune extension. Les composants sont automatiquement installés avec un client à "administrator", ce qui est la valeur actuelle par défaut.
    • Attention : Concernant Joomla! 4.0 seule une chaîne de caractère est autorisée. L'utilisation de nombres pour le champ client a été déprécié en 2012 et supprimé de Joomla! 4.0 (remplacer "0" par "site" et "1" par "administrator").
    • Attention : le nom de la balise est <client> pour Joomla! 2.5 et <client_id> pour les versions 1.6 et 1.7. Si vous utilisez <client_id> plutôt que de <client> sur un site de 2.5, la balise sera ignorée.
  • version - les références de la version (obligatoire)
  • infourl - l'URL pour diriger les utilisateurs vers des informations complémentaires concernant la mise à jour (facultatif).
  • downloads - la section qui liste tous les emplacements pour le téléchargement.
    • downloadurl - l'URL à partir de laquelle il est possible de télécharger l'extension. La balise <downloadurl> doit contenir deux paramètres obligatoires :
      • type - le type du package (complète ou mise à jour).
      • format - Le format de l'archive (zip, tar, etc.).
    • downloadsource - Facultatif. Depuis la version Joomlaǃ 3.8.3., une URL alternative depuis laquelle il est possible de télécharger l'extension lorsque la connexion depuis <downloadurl> échoue. Plusieurs balises <downloadsource> sont autorisées. La balise <downloadsource> nécessite de renseigner deux paramètres obligatoires :
      • type - Le type du package (complète ou mise à jour).
      • format - Le format de l'archive (zip, tar, etc.).
    • NB - il ne doit pas y avoir de saut à la ligne avant ou après l'URL ; tout doit être écrit sur une seule est même ligne où vous aurez une erreur de connexion au serveur : requête malformée quand la mise à jour sera exécutée
  • changelogurl - Un lien vers un fichier xml du journal des modifications. Les versions Joomlaǃ 4.0 et ultérieures vous permettront d'afficher un bouton vers le journal des modifications dans la page de mise à jour de l'extension. Pour plus de détails pour utiliser cela, consulter : Ajouter un journal de modifications à votre fichier manifest
  • tags - Une liste de mots clés pertinents pour cette version. Les versions Joomla! 3.4 et suivantes utilisent cela pour déterminer le niveau de stabilité de la mise à jour. Les valeurs des tags valides sont :
    • dev : versions de développement, très instables et pré-alpha (par exemple, les nightly builds).
    • alpha : Niveau de qualité de logiciel Alpha (fonctionnalités non implémentées, bogues bloquants)
    • beta : Niveau de qualité de logiciel Beta (toutes les fonctionnalités sont implémentées, possibilité de bogues bloquants, certitude de présence de bogues mineurs)
    • rc : Niveau de qualité de logiciel Release Candidate (plus de bogues bloquants, des bogues mineurs peuvent encore subsister)
    • stable : Niveau de qualité de logiciel Production. Tous les autres tags sont actuellement ignorés. Si vous fournissez plus d'un tag contenant l'un des mots clés de stabilité du code ci-dessus, seul le DERNIER tag sera pris en compte. Si aucun tag n'est fourni, Joomla! va considérer que la version est stable.
  • maintainer – Le nom de la personne qui maintient l'extension (similaire à la balise <author> dans le manifest) (optionnel)
  • maintainerurl – Le site web de la personne qui maintient l'extension (similaire à la balise <authorUrl> du manifest) (optionnel)
  • section – Facultatif (utilisation inconnue)
  • targetplatform – Une balise pour définir les exigences de la plateforme (depuis la version Joomla 3.10 ceci est également utilisé pour détecter la compatibilité des extensions pour le composant de mise à jour de Joomla), et qui a besoin des éléments suivant ː
    • name – Le nom de la dépendance de la plateforme ; actuellement, SEUL "joomla" est supporté
    • version– La version de Joomla! prenant en charge l'extension.
    • min_dev_level et max_dev_level – Ces attributs ont été ajoutés en 3.0.1 pour permettre de sélectionner une plateforme cible pour un certain niveau de développement ("z" dans x.y.z). Ils sont optionnels. Vous pouvez en spécifier un seul ou les deux. S'il sont omis, les niveaux de développements correspondent tous. Par exemple, la balise suivante inclut les versions 4.0.0 et 4.0.1. <targetplatform name="joomla" version="4.0" min_dev_level="0" max_dev_level="1"/>
      • Note : Si votre extension est compatible Joomla! 2.5 et/ou 3.1, vous devrez avoir des définitions séparées de <update> pour chaque version à cause de la manière dans le moteur de mise à jour va vérifier la version, si vous spécifiez une valeur. Cependant, pour montrer votre extension sur toutes les versions Joomla qui supportent les mises à jour automatiques (et de fait indique la compatibilité avec toutes les versions futures de Joomla dans le système de mise à jour de Joomla), ajoutez <targetplatform name="joomla" version=".*"/>. Si vous voulez que la mise à jour de votre extension s'affiche pour toutes les versions Joomla 3.x, alors plutôt que de spécifier une version dans le tag de version, ajoutez <targetplatform name="joomla" version="3.[012345]"/>. Ceci va montrer la mise à jour dans toutes les versions 3.x de 3.0 à 3.5. Si vous voulez inclure la version 3.10, vous pouvez utiliser un | comme ceci : <targetplatform name="joomla" version="3.[012345]|10"/>. Si vous voulez montrer les mises à jour pour toutes les versions 3.8.x et toutes les versions 3.10.x, vous pouvez utiliser <targetplatform name="joomla" version="3.(8|10)"/>
  • php_minimum – Depuis la version 3.2.2, une version minimale PHP supportée peut être fournie dans le flux de mise à jour. Si le serveur n'a pas cette version minimale, un message indique à l'utilisateur que la mise à jour est accessible mais ne peut pas être installée du fait d'une exigence non couverte.
  • supported_databases – Depuis la version 3.7, une vérification de la base de données et de sa version minimale supportée peut être fournie dans le flux de mise à jour. Lorsque le serveur n'a pas cette version minimale, un message indique à l'utilisateur que la mise à jour est accessible mais ne peut pas être installée du fait d'une exigence non couverte. A noter : Comme pour la version 3.9.12 il y a également un cas spécial pour mariadb et ainsi vous pouvez indiquer une version spécifique minimale pour cela aussi.
    • Un exemple pourrait être : <supported_databases mysql="5.5.3" mariadb="10.1" postgresql="9.2" mssql="10.50.1600.1" />
  • sha256, sha384, sha512 – Facultatif. Depuis la version Joomlaǃ 3.9.0, vous pouvez ajouter des checksums sur vos fichiers pour ces formats hash. Notez que dans Joomlaǃ 3, seule une information est présente dans mises à jour si un checksum n'est pas correct. C'est tout. La mise à jour ne s'arrête pas pour autant. Pour les mises à jour avec Joomlaǃ 4 et les installations, si un checksum fourni n'est pas correct, alors la mise à jour s'arrêtera.

La définition d'un <update> séparé sera requis pour chaque version de l'extension que vous mettez à disposition.

Les valeurs de element, type, client_id et folder doivent correspondre à ceux de la table #__extensions.

Important pour les plugins : les plugins doivent intégrer les éléments <folder> et <client> pour fonctionner correctement.

Résolution de problèmes

  • Le script de mise à jour SQL n'est pas exécuté durant une mise à jour.
Si le script de mise à jour SQL (par exemple, dans le répertoire sql/updates/mysql) n'est pas exécuté durant le processus de mise à jour, cela peut être dû au fait qu'il n'y avait pas de numéro de version dans la table #__schemas de cette extension avant la mise à jour. Cette valeur est déterminée par le dernier nom de script dans le répertoire de mises à jour SQL. Si cette valeur est vierge, aucun script SQL ne sera exécuté durant le cycle de mise à jour. Pour vous assurer que cette valeur est correctement spécifiée, assurez vous que vous avez un script SQL dans ce répertoire dont le nom est le numéro de version (par exemple, 1.2.3.sql si la version est 1.2.3). Le fichier peut être vide ou avoir juste une ligne de commentaire SQL. Ceci doit avoir été fait dans une version antérieure — celle avant la mise à jour. Comme alternative, vous pouvez ajouter cette valeur dans la table #__schemas en utilisant une requête SQL.

Outils de support