Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error %foreach;ancestor_level on templm template #1

Open
rpo opened this issue Dec 11, 2021 · 10 comments
Open

Error %foreach;ancestor_level on templm template #1

rpo opened this issue Dec 11, 2021 · 10 comments

Comments

@rpo
Copy link

rpo commented Dec 11, 2021

Every appearence of this function %foreach;ancestor_level; in templm pages leads to an error %foreach;ancestor_level? See attached file as an exemple. Is it an issue ?

Error listed on log:
File "anclist.txt", line 40, characters 7-9:
Failed - unbound var " %l_v?"

foreach;ancestor_level

@hgouraud
Copy link

Je ne reproduis pas l'erreur!!
image

Intrigué par le titre : "Jusqu'à la nième génération"
On devrait avoir un nombre explicite de générations!!

Je soupçonne un problème avec les variables du calcul de xx :

%let;xx;
      %if;(bvar.max_anc_level = "")%apply;min(evar.v, max_anc_level, 7)
      %else;%apply;min(evar.v, max_anc_level, bvar.max_anc_level)%end;
    %in;

Utilisé dans <p>%apply;togena(xx).</p>
Il semblerait que xx soit à 0, ce qui n'est pas normal.
Ceci dit, chez moi, même avec var.v à 0 (ou même -1), je n'ai pas ce problème.

@rpo
Copy link
Author

rpo commented Dec 11, 2021

Sur mon log file j'ai cette erreur pour toutes les pages appelant %foreach;ancestor_level :

Exemple pour Anclist:
File "anclist.txt", line 40, characters 7-9:
Failed - unbound var " %l_v?"

ou

File "anclist.txt", line 10, characters 70-77:
Failed - int value expected
Found =

selon la page demandée

A dire vrai je n'ai pas beaucoup de requêtes opérationnelles avec ce template pour les requêtes reliées aux Ascendants, la plupart échoues avec cette même erreur sur Anclist en plusieurs endroits. - Curieux car auparavant c'était fonctionnel!!. Par contre toutes les requêtes reliées aux générations descendantes fonctionnent, celles pour la parenté aussi. - Donc exclusivement pour Anclist !

@rpo
Copy link
Author

rpo commented Dec 12, 2021

J'ai maintenant une version templm qui affiche correctement tous les rapports proposés au menu. Si ce n'est que pour mon cas d'utilisation (mode CGI, mais je ne crois pas que ça y soit spécifique) je constate que la dernière version du template disponible en téléchargement [geneweb-linux-88536ed4] comporte des erreurs sur plusieurs pages. D'abord cette erreur %foreach;ancestor_level; récurrente sur la plupart des rapports ascendants du template et ensuite la fonction "import" qui doit être remplacée par "include" dans plusieurs fichiers txt. Je joins la version corrigée du template.

Templm-version-ok-dec-2021.zip

@a2line
Copy link

a2line commented Dec 12, 2021

Je n'ai aucun "import" sur templm, ni d'erreur dans les outils ascendants !

@a2line
Copy link

a2line commented Dec 12, 2021

Par contre je vois l'erreur en CGI sur la demo v7.00 et c'est bien un bug avec le renommage massif des %include;fichier à la place des %include̛.fichier. Aucune idée pourquoi il faut revenir à l'ancien pour que ça fonctionne en CGI. @hgouraud saura peut-être nous dire.

@rpo
Copy link
Author

rpo commented Dec 12, 2021

J'ai effectivement récupéré sur mon ordinateur une ancienne version du template 'templm' nommée GW7 "clean templm" (je ne me rapelle plus son origine). Cette version de 'templm' ne produit pas l'erreur "%foreach;ancestor_level;" qui survient dans la version actuellement téléchargeable [geneweb-linux-88536ed4] pour à peu près tous les outils ascendants. Cependant dans cette ancienne version comme dans celle plus récente il faut changer en masse les "%import" par "%include".

Je n'ai pas comparé le fichier "anclist" des deux versions pour identifier leur différence et ce qui peut occasionner l'erreur sur la fonction %foreach;ancestor_level; ... ;togena(xx) etc. des outils ascendants, je le ferai et dirai la différence ici.

@rpo
Copy link
Author

rpo commented Dec 13, 2021

Alors voici pour le fichier anclist.txt : comparaison de la version actuellement téléchargeable pour Linux [geneweb-linux-88536ed4] qui pose problème et une version correcte du même fichier qui ne produit pas l'erreur "%foreach;ancestor_level;"

Le fichier ancosa.txt amène aussi l'erreur "%foreach;ancestor_level;" et pour les mêmes raisons, par exemple { %include;ancsosa VS %include.ancsosa }
Anclist-error

@hgouraud
Copy link

hgouraud commented Dec 15, 2021

I dont understand this problem!!

Placing (in ancsosa.txt) the 5 %let; definitions "after" the %include;css suppresses the problem

</head>
%let;l_v0;%if;(evar.v != "")%if;(evar.v > max_anc_level)%max_anc_level;%else;%evar.v;%end;%else;1%end;%in;
%let;l_v;%if;(bvar.max_anc_level = "")%l_v0;%elseif;(bvar.max_anc_level > l_v0)%l_v0;%else;%bvar.max_anc_level;%end;%in;
%let;birth_symbol;%if;(bvar.birth_symbol != "")%bvar.birth_symbol;%else;&deg;%end;%in;
%let;death_symbol;%if;(bvar.death_symbol != "")%bvar.death_symbol;%else;&dagger;%end;%in;
%let;l_up;%if;(evar.i1 != "" or evar.p1 != "")1%end;%in;
....

The same problem arises in other files (anclist, ancsosa, deslist), with the same fix, but surprisingly, anctree is not impacted!! very strange.

Changing %include;css into %include.css; is another fix indeed.

None of this helps in identifying the underlying problem

@rpo
Copy link
Author

rpo commented Dec 15, 2021

I'm just beginning to understand the code so i have no real idea what is wrong but here the ancosa version that work for me

%doctype;
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <!-- $Id: ancsosa.txt,v 7.00 2016/02/04 21:20:57 mr Exp $ -->
  %let;l_v0;%if;(evar.v != "")%if;(evar.v > max_anc_level)%max_anc_level;%else;%evar.v;%end;%else;1%end;%in;
  %let;l_v;%if;(bvar.max_anc_level = "")%l_v0;%elseif;(bvar.max_anc_level > l_v0)%l_v0;%else;%bvar.max_anc_level;%end;%in;
  %let;birth_symbol;%if;(bvar.birth_symbol != "")%bvar.birth_symbol;%else;&deg;%end;%in;
  %let;death_symbol;%if;(bvar.death_symbol != "")%bvar.death_symbol;%else;&dagger;%end;%in;
  %let;l_up;%if;(evar.i1 != "" or evar.p1 != "")1%end;%in;
  <title>%nn;
    %if;(l_up = 1)
      [*ancestors] … [up to] …%nn;
    %elseif;(evar.t = "N" and evar.only = "on")
      [*generation/generations]0 %l_v;
    %else;
      %apply;a_of_b%with;
        %if;(evar.t = "M")[*missing ancestors]%else;[*ancestors]%end;
      %and;
        %if;(public_name != "")%public_name;%else;%first_name;%end;
        %if;(qualifier != "") %qualifier;%end;
        %sp;%surname;
      %end;
    %end;
  </title>
  <meta http-equiv="Content-Type" content="text/html; charset=%charset;"%/>
  <meta http-equiv="Content-Style-Type" content="text/css"%/>
  <meta name="robots" content="none"%/>
  <meta name="format-detection" content="telephone=no"%/>
  <link rel="shortcut icon" href="%image_prefix;/favicon_gwd.png"%/>
  %include.css;
  %base_header;
</head>

%( <!-- Begin define --> %)

%define;tothegen(xx)
  [*to the %s generation:::xx]%nn;
%end;

%define;togen1(xx)
  %if;(xx = 1)[*specify::generation/generations]0%nn;
  %elseif;(xx = 2)[*to the parents]%nn;
  %elseif;(xx = 3)[*to the grandparents]%nn;
  %elseif;(xx = 4)[*to the great-grandparents]%nn;
  %else;
    %apply;tothegen%with;
      %apply;nth([nth (generation)], xx)
    %end;
  %end;
%end;

%define;togen()
  <p>
    %if;(evar.only != "on")
      %apply;togen1(l_v)
    %else;
      [*generation/generations]0 %l_v;
    %end;
  </p>
%end;

%( <!-- End define --> %)

%(   Main   %)
<body%body_prop; id="ancsosa">
%message_to_wizard;

<h1>%nn;
  %apply;a_of_b%with;
    %if;(evar.t = "M")[*missing ancestors]%else;[*ancestors]%end;
  %and;
    %if;(not cancel_links)<a href="%prefix;%access;">%end;
      %if;(public_name != "")%public_name;%else;%first_name;%end;
      %if;(qualifier != "") <em>%qualifier;</em>%end;
      %sp;%surname;
      %if;(alias != "") <em>(%alias;)</em>%end;
    %if;(not cancel_links)</a>%end;
  %end;
  %sp;%dates;
</h1>

<dl>
  %if;(evar.t = "M")
    %if;(evar.miss="M2")
      <dt>[*not found]</dt>
        <dd>
          %if;(evar.M2b="b") · %bvar.var_t_BIRTHA;%end;
          %if;(evar.M2m="m") · %bvar.var_t_MARRIAGEA;%end;
          %if;(evar.M2d="d") · %bvar.var_t_DEATHA;%end;
        </dd>
    %elseif;(evar.miss="M3")
      <dt>[*date/dates]0 != [exact]</dt>
        <dd>
          %if;(evar.M3b="b") · [*birth]%end;
          %if;(evar.M3m="m") · [*marriage/marriages]0%end;
          %if;(evar.M3d="d") · [*death]%end;
        </dd>
    %end;
  %end;

</dl>
%if;(evar.t = "G")
  %include.ancsosa_tg;
%elseif;(evar.t = "N" and evar.same != "")
  %include.ancsosa_same;
%elseif;(evar.t = "M")
  %include.ancsosa_miss;
%elseif;(evar.t = "D" or evar.t = "Z")
  %include.ancsosa_tdz;
%end;
%if;not cancel_links;
  %include;tools;
  %apply;tools_ancsosa()
  %base_trailer;
  %include.copyr;
%end;
</body>
</html>

@hgouraud
Copy link

hgouraud commented Dec 15, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants