Utilisation des templates

From GeneWeb
Jump to: navigation, search
150px-Geographylogo svg.png Language: English • français

Le serveur gwd produit le code HTML affiché par votre navigateur à partir d'instructions conservées dans un fichier texte. Des exemples de tels fichiers sont :

  • welcome.txt la page d'accueil de votre base lorsque vous vous connectez à localhost:2317/basename
  • perso.txt la page qui affiche les données spécifiques d'un individu
  • updfam.txt la page contenant le formulaire de saisie des éléments d'une famille

Un ensemble de fichiers constituant une interface utilisateur cohérente s'appelle un "template".

Les templates sont invoqués en ajoutant (avec un bouton cliquable si disponible, ou manuellement si non) le texte templ=templ_name; dans l'URL qui apparait et haut de votre navigateur. GeneWeb se "souviendra" de cette demande de template et insèrera le code correspondant dans toutes les URL à suivre (la variable templ fait partie des variables contextuelles de gwd).

Les fichiers d'un template sont stockés dans un dossier de la distribution appelé geneweb/gw/etc/template_name.

Quand gwd a besoin d'un fichier, il le recherche successivement et dans cet ordre dans les endroits suivants :

bdir/etc/base/
gw/etc/template_name/
gw/etc/

-bdir est la valeur du paramètre -bd de gwd, et gw est le dossier dans lequel réside gwd.

Si aucun fichier n'est trouvé, on parcours successivement les templates définis par la variable template du fichier de configuration base.gwf.

Vous pouvez par conséquent vous limiter à l'édition d'un seul fichier, les autres seront trouvés dans les dossiers par défaut.

Un template est appelé (avec un bouton cliquable ou manuellement) en ajoutant {{{1}}} dans l'URL dans la barre de navigation de votre client Web. GeneWeb se souviendra de cet ajout le le refera automatiquement pour toutes les autres URL suivantes.

Consultez la page experts pour la programmation des templates.

Modules de personnalisation

La version 7 de GeneWeb offre nouvelle manière pour personnaliser l'aspect de la page personnelle. Cette solution repose sur l'existence d'une liste de modules définis dans le fichier de configuration base.gwf en associant chaque module à une lettre entre a et z (attention à ne pas mettre de texte supplémentaire après le nom de l'option - ni espaces, ni commentaires!).

  perso_module_i=individu
  perso_module_p=parents
  perso_module_f=fratrie
  ...

Associée à ces modules, la variable contextuelle p_mod définira l'ordre dans lequel ces modules seront affichés, et pour chacun d'eux une valeur d'option comprise entre 0 et 9 qui pourra modifier le comportement du module. Cette variable contextuelle est constitué par une succession de paires "lettre, chiffre", la lettre précisant le module et le chiffre l'option d'affichage. Ces paires apparaissent dans l'ordre d'affichage souhaité comme dans l'exemple ci-dessous : "individu" (option 1), "parents" (option 2), "fratrie" (option 3) et "unions" (option 1).

p_mod=p_mod=i1p2f3u1

Dans cet autre exemple

p_mod=i1l1i2l1i3l1i4
Graphical interface for module and options selection (p_mod).

on affichera les quatre variantes du module individu séparées par une ligne horizontale.

Le fichier de configuration par défaut a.gwf donne la liste des modules actuellement disponibles, sachant qu'il est toujours possible pour un utilisateur de rajouter ses propres modules qu'il conservera dans le dossier

bases/etc/perso_modules/nouveau_module.txt

On notera que la valeur du paramètre p_mod peut être conservée dans le fichier base.gwf de votre base. Elle est reportée dans l'URL (au même titre que la variable templ=) et peut donc être mémorisée dans l'URL d'un raccourci conservé dans votre navigateur. Cette dernière approche sera particulièrement utile pour les utilisateurs d'un service tel que la base Roglo. En effet, GeneWeb ne sait pas conserver un profil spécifique à chaque visiteur.

Une interface graphique permet la sélection et le choix des options. L'affichage de vignettes permet de se rendre compte de l'aspect global de chaque option et de la page résultant de leur assemblage. Les modules personnels ajoutés par l’utilisateur n'apparaissent pas dans l'interface graphique mais restent accessibles en éditant manuellement le vecteur p_mod=. Pour les faire apparaître dans l’interface graphique, il faut éditer le fichier gw/etc/p_mod.js en s'inspirant des modules existants.

Certains modules disposent eux mêmes de boutons permettant de faire varier leur comportement (avec ou sans images, avec ou sans les demi-frères et soeurs, nombre de générations, etc)

On notera sur cette interface le bouton le plus à droite qui active le premier mode d'affichage prédéfini p_mod=zz sur deux colonnes décrit dans la section perso.txt.

Perso.txt

Le fichier perso.txt gère l'affichage des pages d'informations associées à chaque individu avec la structure d'ensemble suivante :

Import des fonctions utilitaires et affichage de la barre de menus.

%import;perso_utils;
%include.menubar;

Deux modes d'affichage :

1/ affichage sur deux colonnes, données fixes

 %if;(p_mod="zz")
  %(Statique%)
  %( two columns if screen_width>=992px but full width for tablets/phone < 992px %)
    %if;(has_parents and (father.has_parents or mother.has_parents))
       <div class="collapse" id="collapseExample1">
          %let;op_m;1%in;%apply;show_templ("perso_module/gr_parents")
       </div>
    %end;
    <div class="row">
      %(be carefull h1 is full width then an opening <div class="col-8"> in individu module %)
      %let;op_m;3%in;%apply;show_templ("perso_module/individu")
      %let;op_m;2%in;%apply;show_templ("perso_module/unions")
      %let;op_m;1%in;%apply;show_templ("perso_module/chronologie")
      %let;op_m;1%in;%apply;show_templ("perso_module/notes")
      %let;op_m;2%in;%apply;show_templ("perso_module/sources")
      </div> %( closing the <div class="col-8"> in module individu %)
      <div class="d-none d-lg-block col-lg-4">%(second column above lg%)
        %let;op_m;2%in;%apply;show_templ("perso_module/arbre_3gen_photo")
        %let;op_m;1%in;%apply;show_templ("perso_module/fratrie")
        %let;op_m;1%in;%apply;show_templ("perso_module/relations")
      </div>
    </div>

2/ affichage sur une colonne. Modules de a à z tels que définis dans le fichier .gwf et gouvernés par le vecteur de modules/options défini dans la variable p_mod

 %else;(p_mod!="")
  %(Dynamic %)
    %for;i;0;p_mod_nbr;
      %let;mmi;%apply;mm(i)%in;
      %let;ooi;%apply;oo(i)%in;
      %if;(mmi!="" and ooi!=0)
        %apply;get_mod(mmi, ooi)
      %end
    %end;

%end;

Exemples de définitions des modules :

perso_module_i=individu
perso_module_p=parents
perso_module_u=unions
perso_module_f=fratrie
perso_module_r=relations
perso_module_c=chronologie
perso_module_n=notes
perso_module_s=sources
perso_module_a=arbres
perso_module_g=gr_parents
perso_module_l=ligne

Exemples

Chaque sous-module produit les résultats ci-dessous :

(les exemples ci dessous sont extraits d'une version 6, et peuvent être différents avec la version 7)

Fichier Exemple
personnal_data
Personal data.
parents, option=1
Parents (simple).
parents, option 2
Parents (more complex).
parents, option 3
Parents (full).
parent, option 4
Parents (with photo).
unions, option 1
Union (simple).
unions, option 2
Union (more complex).
unions, option 3
Union (full).
unions, option 4
Union (with photo).
siblings, option 1
Brothers and sisters (simple).
siblings, option 2
Brothers and sisters (full).
family
Family.
relations
Relations.
notes
Notes.
sources
Sources.
timeline
trees, option 3
Tree, vertical, 3 generations.
trees, option 1
Tree, vertical, 3 generations with photos.
trees, option 4
Tree, vertical, 4 generations.
trees, option 5
Tree, horizontal, 5 generations.

Manuel GeneWeb

Rembrandt Old Man Reading a Book.jpg

Utiliser et gérer une base généalogique

Annexe technique