// AutoTitreHistory.spr - v 1.0 © 2003 Escot-Sep christophe
//
// Affiche le titre de la rubrique
// utilise les éléments indiqués dans "Options|projet|Style
// Toute modification est répercutée par le script
//
// si History est à true (par défaut) les liens sont créés
// elle développe l'arborescence horizontalement :
// ex : Bas de Page - Page1 > Sous-Page1
//
// le signet Titre_bas est à créer en fin de rubrique

var Fonte,FonteDef,masque,link,Skip,Signet:string;
History:boolean;
HistoryLine,Item,Parent,Titre,Nom:string;
ParentNum:integer;
nbr,i:integer;
Liste:TStringList;
begin
// correction style mainbody
write('<<WEB(<style type="text/css">#mainbody {padding-left:10px; padding-top:0px}</style>)>>');
// récupérer le flag history
History := GetParam('history','true')='true'; // vrai par défaut
// récupérer les fontes du titre et par défaut
// réagir différement si la rubrique est un chapitre ou non
if Condition('_ISRUB_CHAPITRE_') then
begin
Fonte := GetElement(eFntChapter);
FonteDef := GetElement(eFntDefaultChapter);
end else begin
Fonte := GetElement(eFntTopic);
FonteDef := GetElement(eFntDefaultTopic);
end;
// création du masque, [ #12] est un champ calculé qui fournit le titre
Masque := '<<FNT(%s:[ #12])>>';

// écrire le Titre
Write(Format(Masque,[Fonte]));

// construire la liste des signets internes
Liste := TStringList.create;
// skip contient les noms des signets à ne pas reprendre
Skip := GetParam('SKIP','');
// Titre & nom de la rubrique
Titre := GetTitre;
Nom := GetNom;
// obtenir le nombre de signet de la rubrique
if skip='ALL' then nbr:=0 else nbr := GetSignetCount(Titre)-1;
// pour chaque signet, un lien à son nom
for i:=0 to nbr do
begin
signet := GetSignetOf(Titre,i);
// on vérifie que le signet n'est pas das la liste des refusés
if (signet<>'')and(pos(Signet,Skip)=0) then
begin
// le nom du signet doit etre :
// en majuscule, sans accent et les espace, "'" et "-" remplacés par _
Link := UpperCase(Replace(signet,' ','_'));
Link := Replace(link,#39,'_');
Link := Replace(link,'-','_');
Link := Replace(link,'É','E');
Link := Replace(link,'È','E');
Link := Replace(link,'À','A');
Liste.add('<option value="#'+Link+'">'+Signet);
end;
end;

if Liste.Count>0 then
begin
write(' <form name="fastsignet">');
writeln('<select class="combo" name="signetlinks" onChange="window.location=document.fastsignet.signetlinks.options[document.fastsignet.signetlinks.selectedIndex].value">');
writeln('<option selected value="javascript:void(0)">-- signets --');
for i:=0 to Liste.count-1 do
writeln(liste.strings[i]);
write('</select>');
write('</form>');
end;
write(#13+#10);
// libérer la liste
Liste.free;

// si flag History alors création à plat du chemin d'accés à la rubrique
// Bas de page - parent > parent2 > ...
if History then
begin
HistoryLine := '';
Parent := GetTitre;
// masque pour poser un lien
Link := '<<MCR(JI(qchPath,`%s')>>+<<FNT(NUMBER.-,-,-,-:#39)>>+<<FNT(STRING.-,-,-,-:'):%s)>>';
Parent := GetParentOf(GetNumOf(Parent));
while Parent<>GetProjet do
begin
ParentNum := GetNumOf(Parent);
Item := Format(Link,[GetNomOf(ParentNum),GetTitreOf(ParentNum)]);
if HistoryLine<>'' then HistoryLine := Item +' > '+HistoryLine else HistoryLine :=Item;
Parent := GetParentOf(ParentNum);
end;
//if HistoryLine<>'' then HistoryLine:=' - '+HistoryLine;
// on va insérer notre ligne historique dans une section ayant pour style css "mini"
// on en profite pour rajouter un lien vers le bas de la page
// le signet portera le meme nom que la rubrique + '_bas'
// il sera créé par le script qui est automatiquement inséré à la fin de chaque page

write('<<BKG(mini|500,100,255,,0,255,0)>>');
write(Format(Link,[GetNom,'<<BMP(C,top_page.gif,,Haut de page,,1,1)>>'])+'<<JMP(<<BMP(C,bottom_page.gif,,Bas de page,,1,1)>>,:')>>+GetNom+<<FNT(STRING.-,-,-,-:'_bas)>>');
write(HistoryLine);


write('<<BKG(END)>>');
end;
end;
end.

Sommaire