# Coppermine Photo Gallery v1.5.x: Documentation et manuel

# Ajout/renommage/effacement de fichiers

## Cible visée

Cette partie de la documentation n'est pas destinée aux utilisateurs finaux de Coppermine, mais uniquement aux développeurs. Il n'y a pas d'aide pour cette section, elle est disponible telle-quelle.

## But

Ce document est destiné à expliquer ce qu'un développeur doit faire lors de l'ajout/de la modification/de l'effacement de fichiers vers/depuis le SVN pendant l'étape de développement.

## Conventions de nommage

Référez-vous à la section "Conventions de nommage" lors de l'ajout de nouveaux fichiers ou lors du renommage de fichiers existants.

## Ajouts de fichiers

Si un développeur a besoin d'ajouter un nouveau fichier au noyau de Coppermine, voici la liste des choses à faire:

- Créez le fichier localement sur votre ordinateur (dans une copie de travail récupérée sur le SVN), en respectant les conventions de nommage
- Si c'est un fichier non binaire (un fichier texte par exemple), ajoutez l'entête de fichier qui montrera que c'est une partie du pack Coppermine. Actuellement l'entête des fichiers PHP ressemble à ça:

      /*************************
        Coppermine Photo Gallery
        ************************
        Copyright (c) 2003-2017 Coppermine Dev Team
        v1.0 originally written by Gregory Demar

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License version 3
        as published by the Free Software Foundation.

        ********************************************
        Coppermine version: 1.5.46
        $HeadURL$
        $Revision$
      **********************************************/

  Pour les autres types de fichiers (comme les fichiers SQL par exemple) différents symboles de commentaires doivent être utilisés.
- Ajoutez le fichier au SVN en utilisant la commande ajouter puis la commande commettre de votre client SVN favori
- Dans votre client SVN, assurez vous que le fichier que vous avez ajouté à les propriétés du SVN nécessaires. Dans RapidSVN (Linux-Client), faites un clic droit, propriétés et assurez vous que la paire nom/valeur "svn:keywords"/"Author Date Id Revision HeadURL" existe. Si ce n'est pas le cas créez une telle entrée (en utilisant le bouton "new" de la boite de dialogue propriétés). Cela permettra de s'assurer que les conteneurs de variables SVN avec les signes $ sont complétés correctement. Regardez un fichier existant pour voir comment c'est fait.
- Ajoutez une entrée pour votre nouveau fichier dans `includes/cpg15x.files.xml`. Des détails peuvent être trouvés dans la section Vérificateur de version : structure XML
- Si possible ajoutez des instructions concernant votre fichier dans la documentation

### Fichiers langues

L'ajout de fichiers langues (contribution d'utilisateurs) au pack est un processus qui doit être fait en plusieurs étapes. Ces étapes ne doivent pas nécessairement être faites par le même développeur, mais il est préférable qu'un seul développeur s'occupe d'un fichier langue proposé par un contributeur pour s'assurer que tout fonctionne sans problèmes.
Cette section n'est pas destinée aux utilisateurs finaux qui veulent ajouter un fichier langue à Coppermine. Non, cette section est uniquement destinée aux membres de l'équipe de développement de Coppermine et à personne d'autre. Merci de ne pas poser de questions sur le forum d'aide concernant le contenu de cette page, parce qu'elle ne s'adresse simplement pas à vous.

- A l'emplacement ou le fichier langue a été proposé par le contributeur (généralement dans un sujet du forum ou le contributeur a attaché le fichier langue), répondez et précisez que vous, en tant que membre de l'équipe de développement êtes volontaires pour ajouter ce fichier. Ceci est destiné à s'assurer que le travail ne sera pas fait deux fois.
- Téléchargez le fichier et décompressez le dans votre installation de test
- Démarrez votre installation de test et forcez l'utilisation du nouveau fichier langue en ajoutant les paramètres correspondants à la barre d'adresse de votre navigateur. La galerie de test devrait s'afficher dans la langue choisie. C'est suffisant pour un test basique pour vérifier que le fichier langue ne plante pas la galerie avec un message d'erreur ou un affichage bizarre.
- Ouvrez le fichier langue avec un éditeur de texte et vérifiez que l'entête est intact comme expliqué plus haut. Faites attention au numéro de version de Coppermine qui souvent ne correspond pas dans les fichiers langue proposés par les contributeurs.
- Renseignez le tableau `$lang_translation_info` si le traducteur ne l'a pas déjà fait. Si le traducteur n'a pas indiqué de site qu'il souhaite faire apparaitre dans la section "crédits", mettez une référence à sa page de profil utilisateur du forum à la place.
- Vérifiez si vous le pouvez que le fichier langue est en Unicode (UTF-8 sans BOM).
- Modifiez les crédits traducteurs de la documentation. Dans un monde idéal, vous devriez modifier tous les fichiers crédits pour toutes les langues de la documentation (`docs/language_name/credits.htm` et ajoutez les références du traducteur, mais bien entendu, cela deviendra un travail important avec un nombre important de traductions de la documentation. C'est pourquoi, il est admis que vous ne modifiez que le fichier de langue Anglaise de la documentation (`docs/en/credits.htm`) et laissiez les autres aux personnes qui s'occupent de la maintenance des documentations traduites.
- Comme avec tous les autres fichiers, vous devez aussi modifier `includes/cpg15x.files.xml` pour refléter les nouveaux fichiers ajoutés.
- Ensuite vous devrez vérifier le degré de finition du fichier langue de cette contribution, par exemple s'il s'agit d'une traduction complète ou partielle. C'est un très gros travail qui peut amener à des résultats imparfaits, donc dans le doute, mettez un signet traduction partielle, ce qui n'a pas d'impact au niveau technique, mais qui sert uniquement d'information aux utilisateurs.
  Les facteurs qui peuvent vous aider à déterminer si une traduction est complète ou partielle peuvent être:
  - Le conributeur peut avoir posté dan son sujet sur le forum si sa tradution est partielle ou complète.
  - Taille du fichier: la taille des fichiers pour une traduction complète peut changer de manière très importante (parce que les langues ont des symboles pour des mots ou que les syllabes utilisent moins de place que les langues composées de lettres qui représentent des sons (des phonèmes pour être exact). Mais avec un poids de 180 KB pour le fichier Anglais, il est évident que le fichier Anglais-Britannique (`lang/english_gb.php`) ne peut pas être une traduction complète, mais uniquement une traduction partielle (ce qui n'est pas vraiment surprenant, puisqu'il ne contient que les chaines ou l'Anglais-Britannique est différent de l'Anglais-Américain)
  - Une lecture rapide du fichier langue depuis votre éditeur de texte devrait vous permettre de vous rendre compte si une grande partie du fichier original Anglais transparait en particulier avec les fichiers utilisant des caractères non latins.
- Vous devrez vous assurer que la table des traductions dans la structure des tables de la base de donnée de Coppermine sera mise à jour aussi bien pour les nouvelles installations que pour les mises à jour, c'est pourquoi vous devrez
  - ouvrir `sql/basic.sql`, trouvez les lignes qui commencent par `INSERT INTO CPG_languages` et vous assurer que la langue que vous êtes en train d'ajouter existe et que le niveau de finition du fichier langue correspond avec l'enregistrement de la base de données.
    Si vous êtes en train d'ajouter le fichier langue Klingon, cherchez dans `sql/basic.sql` la chaine `klingon`. Si elle est là, c'est à dire si une ligne du genre
    INSERT INTO CPG_languages (lang_id, english_name, native_name, flag, abbr, available, enabled, complete) VALUES ('klingon', 'Klingon','tlhIngan','klingon','', 'NO', 'NO', 'NO');existe, modifiez juste les champs qui déterminent si la traduction existe et si elle est complète (traduction complète) ou pas.
    Si la ligne correspondant au nom anglais de la nouvelle langue n'existe pas, créez la (gardez en mémoire la structure alphabétique de la section `INSERT INTO CPG_languages`.
    Pour plus de détails, regardez la documentation du gestionnaire de langue.
  - ouvrez `sql/update.sql` avec un éditeur de texte.
    - Si la ligne correspondant à la nouvelle langue n'existe pas dans `sql/basic.sql`, vous devrez ajouter une ligne à `sql/update.sql` qui ajoute un nouvel enregistrement.
      Pour le fichier langue Klingon mentionné plus hait, la ligne pour créer un nouvel enregistrement dans la base de donnée sera INSERT INTO CPG_languages (lang_id, english_name, native_name, flag, abbr, available, enabled, complete) VALUES ('klingon', 'Klingon','tlhIngan','klingon','', 'YES', 'NO', 'NO');
    - S'il y a un enregistrement existant pour cette langue, vous n'aurez qu'a le basculer de non disponible à disponible, ajoutez une ligne qui fait la mise à jour
      L'exemple pour la langue Klingon dans ce cas serait UPDATE CPG_languages SET `available` = 'YES' WHERE `lang_id`='klingon';
- Assurez vous qu'il y a une image du drapeau dans le répertoire `images/flags/` représentant la nouvelle langue. S'il n'y a pas de drapeau disponible, créez en une si vous en avez les capacités et ajoutez ce fichier. Alternativement, assignez une image vide comme drapeau en attendant.
- Ajoutez le nouveau fichier langue dans le référenciel grâce à votre client SVN. Vous devrez avoir les droits en écriture sur le référenciel subversion pour pouvoir le faire.
- Ajoutez une ligne dans le fichier CHANGELOG correspondant à l'ajout de ce nouveau fichier langue.
- Testez aussi attentivement que possible le fichier langue sur votre galerie de test: naviguez en tant que visiteur, enregistrés et administrateur dans la galerie, essayez de télécharger des fichiers, jetez un œil aux principales pages (index, page des vignettes, images intermédiaires).
- Faites vos changements sur le référenciel subversion en utilisant votre client SVN.
- Finalement répondez au sujet ou le contributeur avait mis le fichier à disposition, postez ce que vous avez fait, Cela aidera à ajouter des références au Web SVN, et postez le numéro de révision de votre ajout.
- Si vous avez les privilèges administrateur sur le forum de Coppermine, changez l'appartenance de groupe du contributeur et assignez le au groupe "translator".
- Si vous avez un accès au site de Coppermine, modifiez le fichier "crédits" pour ajouter le nouveau traducteur.

## Renomer des fichiers

Si un nom de fichier ne peut pas être géré (par exemple à cause d'un problème avec la convention de nommage), il doit être renommé au lieu d'effacer l'ancien et d'en crée un nouveau. Le bénéfice du renommage est de garder l'historique des versions dans le référenciel SVN.

Chaque fois qu'un fichier a été renommé sur le SVN vous devrez faire des modifications additionnelles:

- Ajoutez une entrez pour le nouveau nom de fichier dans `includes/cpg15x.files.xml`. Les détails peuvent être trouvés dans la section Vérificateur de version : structure XML
- Si un ancien nom de fichier a déjà été inclut dans une précédent publication publique, vous devrez vous assurez que l'utilisateur n'auras pas une version obsolète laissée avec l'ancien nom lors de la mise à jour. Pour cela, vous devrez ouvrir `update.php`, trouver la définition du tableau `$delete_file_array` et y ajouter l'ancien nom de fichier.
  En plus, vous devrez ouvrir `includes/cpg15x.files.xml` et assigner à l'ancien nom le statut "remove".
- Si l'ancien nom de fichier n'a pas été utilisé dans une précédente version publique, il suffit d'ouvrir `includes/cpg15x.files.xml` et d'effacer l'enregistrement se référant à l'ancien nom de fichier.
- Vous devrez chercher dans tous les fichiers (aussi bien les fichiers PHP que ceux HTML de la doc) la référence à l'ancien nom et la changer avec celle du nouveau nom.

## Effacer des fichiers

Ce qui a été dit plus haut à propos du renommage de fichier s'applique aussi à l'effacement de fichiers: après avoir effacé le fichier du SVN, assurez vous de modifier le fichier XML utilisé par le vérificateur de version et le tableau des fichiers prévus à l'effacement par le script de mise à jour.

Rappelez vous qu'avant d'effacer un fichier PHP du noyau de Coppermine, il faut impérativement en discuter avant avec les autres développeurs sur le forum dédié uniquement aux développeurs.