var FirstTopic,LastTopic,Name,CssClass,ajmp,bjmp,fjmp,texte,jmp,indent: string;
MaxLevel,ici,nl,this,firstLevel,i,thislevel : integer;
SubList,flagli1,flagli:boolean;
begin

FirstTopic := GetParam('FirstTopic',GetTitreOf(0)); // par défaut la première
LastTopic := GetParam('LastTopic',GetTitreOf(GetTopicCount)); // par défaut la dernière
MaxLevel := StrToInt(GetParam('MaxLevel','2'));
Name := GetParam('Name','ListOfTopic');
cssClass := GetParam('cssClass','');
// obtenir le numéro de la 1ere rubrique
ici := GetNumOf(FirstTopic);
// récupérer le numéro de la denière rubrique
nl := GetNumOf(LastTopic);
// récupérer le numéro de la rubrique actuelle
this := GetNum;
// ne créer des liens que s'il y en a !
if ici<=nl then
begin

// obtenir le niveau de la rubrique
FirstLevel := GetLevelOf(ici);
//
SubList := false;


if cssClass<>'' then cssClass := ' class="'+cssClass+'"';
// début de la liste
write('<<WEB(<div id="')>>+name+<<FNT(STRING.-,-,-,-:'"')>>+cssClass+<<FNT(STRING.-,-,-,-:'>)>>');
write('<<WEB(ul)>>');

// masque pour le code
ajmp :='<<JMP(%s^')>>+name+<<FNT(STRING.-,-,-,-:'_selected,%s)>>';
bjmp :='<<JMP(%s,%s)>>';


indent := '';
// pour chaque lien à effectuer
for i:=ici to nl do
begin
// prendre en compte la rubrique active
if i=This then fjmp:=ajmp else fjmp:=bjmp;
// déterminer le niveau
ThisLevel := GetLevelOf(i);
// on ignore la rubrique si elle possède un mot clef avec une note Z
if GetKeysNoteOf(i,'Z')= 0 then
begin
// on ignore les popups
if not IsPopup(i) then
begin
// on ignore les rubriques de niveau + 2 et plus
if ThisLevel<FirstLevel+MaxLevel then
begin
// gérer le passage à une sous rubrique
if (ThisLevel<>FirstLevel) and (SubList=false) then
begin
writeln('<<WEB(<ul>)>>');
SubList := true;
indent := indent+' ';
end;
// gérer le retour au premier niveau
if (ThisLevel=FirstLevel) and (SubList=true) then
begin
if flagli1 then
begin
writeln('<<WEB(</li>)>>');
flagli1:=false;
end;
writeln('<<WEB(</ul>)>>');
indent := copy(indent,1,length(indent)-4);
SubList := false;
end;

if flagli and (ThisLevel=FirstLevel) then
begin
writeln('<<WEB(</li>)>>');
flagli:=false;
end;

if flagli1 and (ThisLevel>FirstLevel) then
begin
writeln('<<WEB(</li>)>>');
flagli1:=false;
end;


// on récupére le titre de la rubrique cible
Texte := GetTitreOf(i);


// on fabrique le lien
jmp := format(fjmp,[texte,GetNomOf(i)]);

if not Condition('_HTML_') then write(indent);
write('<<WEB(li)>> '+jmp);


if ThisLevel=FirstLevel then
flagli := true else FlagLi1 := true;
end;
end; // end popup
end; // end if GetKeysNoteOf(i,'Z')=0 then
end; // end for i:=ici to nl do


// Correctif 1.2
if (SubList=true) then
begin
if flagli1 then writeln('<<WEB(</li>)>>');
writeln('<<WEB(</ul>)>>');
end;
// fin correctif 1.2

// terminer la liste
writeln('<<WEB(</li>)>>');
writeln('<<WEB(/ul)>>');
writeln('<<WEB(</div>)>>');
end;
end;
end.

Sommaire