JMRI: Web Site
Author: Bob Jacobsen
Keywords: JMRI technical code web site

# JMRI: Site Web

Cette page présente les aspects techniques du site web JMRI.
Si vous voulez juste savoir comment faire un petit changement dans le site Web ou la page d'aide, s'il vous plaît voir la page séparée des instructions.

## Structure de l'Information

Nous distinguons trois types d'informations sur le site Web principal:

1. Les informations pour l'usager qui sont utileS au moment de l'exécution. Celles-ci sont rendues disponibles à la fois via notre JavaHelp, et aussi directement en plaçant les fichiers sur le Web.
2. Les Informations pour l'usager qui sont soit inutiles au moment de l'exécution, tels que les instructions pour l'installation du logiciel, ou sont trop grandes pour l'inclusion dans les version, par exemple, tutoriels vidéo.
3. Les informations de références à partir de versions, telles que les définitions décodeur, des copies de scripts, JavaDocs, etc

Nous fournissons ces informations séparément:

1. L'information d'exécution pour l'utilisateur- est disponible en plaçant le système d'aide sur le site web.
2. Les informations d'autres utilisateurs sont stockées dans notre `JMRI/website` répertoire GitHub placé directement sur le site web
3. Les informations de référence sont mises sur le site web à partir de leurs propres emplacements de répertoire, ou créées par des scripts Ant automatisés lors de la construction de la version.

## Technologie

La mise en page se fait en utilisant CSS, initialement créé par John Plocher. Toutes les pages doivent référencer les fichiers CSS pour l'écran et l'impression du répertoire "/css" . Cela signifie également que vous devez quitter le formatage des feuilles de style, et de minimiser le formatage explicite que vous faites directement dans HTML.

Parce que nous utilisons nos pages Web dans JavaHelp, il y a des restrictions sur l'utilisation des étiquettes. Voir nos pages web JavaHelp pour plus de détails.

Nous utilisons le server-Side inclut pour fournir une information cohérente pour les en-têtes, les encadrés et les pieds de page. Cela nous permet de partager le contenu HTML entre le web et le système JavaHelp utilisé par le programme lui-même. Chaque page ne contiendra que le contenu, en plus elle comprendra les fichiers nommés "Header", "Sidebar" et "footer" qui contiennent les informations de navigation. Finalement, toutes mais quelques pages qui ont l'extension ".shtml". (Les autres pages index.html gardent ce nom afin que les gens qui demandent juste une URL répertoire soient servi avec quelque chose d'utile)

Nous utilisons les fichiers .htaccess pour faire des redirections lorsqu'une page Web est supprimée. Ça permet que les signets plus âgés continuent à travailler. Le fichier hardware/.htaccess fournit un exemple. Pour plus d'information sur la syntaxe, voir la documentation Apache mod_rewrite .

## Organisation des Répertoires

Le site web contient plusieurs zones séparées:

- Jython,ressources, xml, web - ils sont prit directement à partir des répertoires du même nom dans le répertoire `JMRI/JMRI` Ils ne sont que rarement mentionnés directement.
- help - aussi utilisé pour le système JavaHelp, ce qui a la structure interne décrite ci-dessous et sur notre page JavaHelp.

D'autres groupe sont depuis le répertoire `JMRI/website`, et sont vérifiés à la racine du serveur web.

- Notes de Version - Des informations spécifiques sur chaque test et libération de version
- installer - Renseignements sur la façon d'installer le logiciel JMRI sur différents types d'ordinateurs
- Communauté - Tutoriels, pages web, et autres communautés qui ont fourni des informations
- images - (Les images utilisées par les pages web)
- contact -

Finalement, une partie du site est généré à partir de la source JMRI elle-même, plutôt que d'être contenue dans la source. Le JavaDoc est une telle section, avec une partie de l'information human-readable au sujet des décodeurs définis.

## Mise à Jour du site jmri.org

La plupart des contenus du site web est mis à jour toutes les heures à partir d'un travail en cours sur l'une des compilation du projet sur les serveurs Jenkins. Les répertoires listés ci-dessus constituent la majeure partie du site, et ce contenu est mis à jour depuis le répertoire JMRI sans aucun travail supplémentaire.

- Contenu statique depuis le répertoire JMRI/JMRI, ex:e.g. help, xml, etc dans les distributions JMRI
- Contenu statique depuis le répertoire JMRI/website, ex:. information website-only
- Contenu statique depuis le répertoire JMRI/website-legal , ex: contenu autour de l'affaire juridique JMRI-Katzer

La régénération de la JavaDoc et le contenu XML implique beaucoup plus de travail qu'une simple mise à jour d'un répertoire, et ainsi celleci ne se fait qu'une fois par jour, selon les besoins, par la tâche Générer site Web sur la production serveur Jenkins.

## Local Web Site: Mac OS X

Si vous souhaitez héberger une copie du site Web JMRI sur votre machine Mac OS X locale, suivez ces instructions pour d'abord configurer le serveur Apache pour faire les inclusions coté serveur, et ensuite faire une copie des fichiers du site web disponibles sur le serveur.

Un processus similaire peut fonctionner pour les systèmes Linux (ou même Windows) avec Apache installé.

1. Pour vous assurer que votre serveur local a les options activées, modifiez le fichier de configuration du serveur Web Apache.
   - Sur Mac OS X 10.4 (Tiger), c'est le fichier /etc/httpd/httpd.conf
   - Sur Mac OS X 10.5 (Leopard) et, plus tard, c'est le fichier/etc/apache2/httpd.conf
   Une fois que vous avez trouvé le fichier, ouvrez-le avec votre éditeur favori (Vous devez vous authentifier avec le mot de passe administrateur pour modifier ce fichier).
   - Pour activer les inclusions coté serveur, trouver la section qui ressemble à ce qui suit

         # Cela peut être aussi "None", "All", ou n'importe quelle combinaison de "index",
         # "Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews".
         #
         # Notez que "MultiViews" devant être nommé *explicitement* --- "Options All"
         # Ne vous le donne pas.
         #
              Options Index FollowSymLinks MultiViews

     Ajouter le mot "Includes" à la dernière ligne de sorte qu'elle ressemble à:

              Options Includes Indexes FollowSymLinks MultiViews

   - Maintenant, configurez le serveur pour gérer les fichiers avec l'extension ".shtml" . Trouvez la section qui ressemble (le premier commentaire peut être différent):

         	 #
              # Pour utiliser les fichiers HTML analysés par le serveur
              #
              # AddType text/html.shtml
              # AddHandler server-parsed.shtml

     et non commenter les deux dernières lignes de sorte qu'elle ressemble à

              #
              # Pour utiliser les fichiers HTML analysés par le serveur
              #
              AddType text/html.shtml
              AddHandler server-parsed.shtml

     Ensuite, trouver la référence au include_module et assurez-vous qu'il est chargé par une ligne comme:

         LoadModule inclut le_module libexec/apache2/mod_include.so

     Par défaut, c'est commenté avec un caractère # leader.
   - Finalement, configurez le serveur pour permettre aux fichiers .htaccess de fournir les redirections. Nous utilisons ceci pour permettre aux gens qui ont de vieux URLs dans leurs signets d'atteindre les bonnes pages actuelles.

     Trouvez une section qui ressemble à:

         DocumentRoot "/Library/WebServer/Documents"
         <Directory "/Library/WebServer/Documents">

     Il y a une section en retrait directement au-dessous. Trouvez la partie qui ressemble à:

         	#
             # AllowOverride controle quelles directives doivent être placées dans les fichiers .htaccess.
             # Ce peut être"All", "None", ou n'importer quelle combinaison de mot-clés:
             #   AllowOverride FileInfo AuthConfig Limit
             #
             AllowOverride None

     Changez la dernière ligne pour permettre les changements ( c'est ce que fait un fichier .htaccess )

             AllowOverride All

     Puis trouvez la référence au rewrite_module et assurez-vous qu'il est chargé par une ligne comme:

         LoadModule rewrite_module libexec/apache2/mod_rewrite.so

     Par défaut, c'est commenté avec un caractère # leader.

     Nous voulons aussi le PHP actif, de telle sorte que les indices pour les pages de ressources travailleront. Trouver la ligne de suivi et assurez-vous qu'il est pas commentée:

         LoadModule php5_module libexec/apache2/libphp5.so

2. Installez les fichiers JMRI qui doivent être servis
   - Vérifiez à la fois les répertoires JMRI/JMRI et JMRI/website quelque part dans votre ordinateur. C'est OK que ceux-ci soient en dehors l'arborescence des répertoires du serveur Web.
   - Changer pour le répertoire serveur web

         cd /Library/WebServer/Documents

   - Réglez les liens symboliques pour apporter le contenu depuis les répertoires

         ~me/git/website/setSymLinks.sh  ~me/git/JMRI ~me/git/website

     où "~me/git/website" est le chemin pour le répertoire que vous venez vérifié, et "~me/git/JMRI" est le chemin pour le répertoire JMRI/website. setSymLinks.sh met en place les liens symboliques qui permettent à votre serveur web de voir le haut du site Web JMRI comme si les fichiers étaient directement présents.
3. Redémarrez votre ordinateur pour réinitialiser le serveur web.
4. Testez le en essayant d'afficher l'URL http://localhost/index.shtml, Qui devrait vous donner une page JMRI de haut niveau.

### Installation d'un catalogue local XML

Beaucoup de fichiers JMRI XML contiennent XIncludes qui référence d'autres fichiers XML avec des URLs comme "http://jmri.org/xml/schema/types/turnouts-2-9-6.xsd". Quand un programme JMRI rencontre ceux-ci, il les convertit automatiquement en fichier de référence locale. D'autre outils comme NetBeans ou xmllint, ne savent pas le faire.

L'installation d'un catalogue local XML, et ensuite dir à vos outils pour l'utiliser, peut résoudre ce problème.

- Si vous n'exécutez pas un serveur web local, vous pouvez fournir une solution limité en copiant le fichier xml/catalog.xml depuis votre répertoire JMRI vers un fichier /etc/xml/catalog. ( Notez que ceci est pour Linux et Mac OS X et on ne sait pas ce qui fonctionne pour Windows; vous pourriez avoir à utiliser sudo pour ce faire; qu'il n'y a pas de suffixe .xml sur la fichier résultant; s'il y a déjà un fichier, il vous faudra fusionner manuellement le contenu; vous devez mettre à jour celui-ci périodiquement pour que JMRI continue d'évoluer)
- Alternativement, si vous exécutez un serveur local comme décrit ci-dessus, vous pouvez fournir une solution plus générique en copiant Le suivant dans un fichier /etc/xml/catalog ( Notez que ceci est pour Linux et Mac OS X et on ne sait pas ce qui fonctionne pour Windows; vous pourriez avoir à utiliser sudo pour ce faire; qu'il n'y a pas de suffixe .xml sur la fichier résultant; s'il y a déjà un fichier, il vous faudra fusionner manuellement le contenu; mais au moins vous n'aurez pas mettre à jour à l'avenir):

          <?xml version='1.0'?>
      	<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

      	 <rewriteURI uriStartString="http://jmri.org/xml/"
           rewritePrefix="http://localhost/xml/" />

          </catalog>

  Ce catalogue redirige toutes les références HTTP vers le répertoire "xml" sur le site Web JMRI dans le répertoire "xml" sur votre serveur web local.