1#
2#
3# Mod�le "page d'accueil"
4#
5# Historique
6#   1998/06/15 : pda          : conception
7#   1999/07/04 : pda          : r��criture
8#   2008/02/11 : pda/moindrot : simplification
9#
10
11#
12# Inclure les directives de formattage de base
13#
14
15inclure-tcl include/html/base.tcl
16
17# nb maximum de colonnes dans une ligne de l'accueil
18set maxcol 1
19# largeur (fixe) d'une colonne (en fonction du nb max)
20set largeur 1
21set currentcol 0
22
23###############################################################################
24# Proc�dures de conversion HTML sp�cifiques au mod�le
25###############################################################################
26
27# XXX : pourquoi cette proc�dure est-elle ici et pas en commun ?
28# (la CLASS ne justifie pas tout)
29
30proc htg_nouveautes {} {
31    global partie
32
33    if [catch {set titre [htg getnext]} v] then {error $v}
34    set r [helem DIV [helem B $titre] CLASS "alerte"]
35    return $r
36}
37
38proc htg_maxaccueil {} {
39    global maxcol largeur
40
41    if [catch {set maxcol [htg getnext]} v] then {error $v}
42    check-int $maxcol
43    set largeur [expr int((100-($maxcol-1))/$maxcol)]
44    return ""
45}
46
47proc htg_ligneaccueil {} {
48    global partie
49    global largeur maxcol currentcol
50
51    if [catch {set nbcol [htg getnext]} v] then {error $v}
52    check-int $nbcol
53    if [catch {set texte [htg getnext]} v] then {error $v}
54
55    #
56    # D�termination des largeurs des colonnes
57    # 1- on cacule :
58    #	largeur = (100 - (maxcol - 1)) / maxcol
59    #
60    # 2- suivant nbcol par rapport � maxcol
61    #	- si nbcol > maxcol
62    #        erreur
63    #	- si nbcol == maxcol
64    #	     les nbcol colonnes sont de largeurs :
65    #		largeur% 1% largeur% 1% ... largeur%
66    #	- si nbcol < maxcol
67    #	     on calcule une largeur L = (100 - nbcol * largeur - (nbcol-1))/2
68    #
69
70    set L [expr int((100 - ($nbcol * $largeur) - ($maxcol-1))/2)]
71    set bourrage ""
72    set currentcol 0
73
74    set colgroup ""
75    if {$nbcol > $maxcol} then {
76	error "Nb de colonnes incorrect ($nbcol > $maxcol)"
77    }
78
79    if {$nbcol < $maxcol} then {
80	append colgroup [helem COLGROUP "" WIDTH "$L%"]
81	# On est oblig� de mettre une largeur sous cette forme � cause de Safari.
82	set bourrage [helem TD " " STYLE "width: $L%"]
83    }
84
85    for {set i 0} {$i < $nbcol} {incr i} {
86	if {$i > 0} then {
87	    append colgroup [helem COLGROUP "" WIDTH "1%"]
88	}
89	append colgroup [helem COLGROUP "" WIDTH "$largeur%"]
90    }
91
92    if {$nbcol < $maxcol} then {
93	append colgroup [helem COLGROUP "" WIDTH "$L%"]
94    }
95
96    set tr [helem TR "$bourrage$texte$bourrage"]
97
98    set r [helem TABLE "$colgroup$tr" \
99		CLASS accueil \
100		WIDTH 100% CELLPADDING 0 CELLSPACING 0]
101
102    return $r
103}
104
105proc htg_colonneaccueil {} {
106    global currentcol
107
108    if [catch {set texte [htg getnext]} v] then {error $v}
109
110    # le s�parateur vertical
111    set sep ""
112    if {$currentcol > 0} {
113    	set sep [helem TD [helem DIV ""] CLASS "separation-verticale"]
114    }
115    incr currentcol
116
117    set td [helem TD $texte]
118
119    return "$sep$td"
120}
121
122proc htg_element {} {
123    if [catch {set titre    [htg getnext]} v] then {error $v}
124    if [catch {set image    [htg getnext]} v] then {error $v}
125    if [catch {set texte    [htg getnext]} v] then {error $v}
126
127    # l'image
128    set img ""
129    if {! [string equal $image ""]} then {
130        append img [helem P ""]
131        append img [helem IMG "" SRC $image CLASS icone ALT ""]
132    }
133
134    # les �l�ments
135    set els [helem UL $texte]
136
137    # le titre + l'image + les �l�ments
138    set r [helem UL [helem LI "$titre$img$els"]]
139
140    return $r
141}
142
143proc htg_item {} {
144    if [catch {set texte [htg getnext]} v] then {error $v}
145
146    set r [helem LI $texte]
147    return "$r"
148}
149
150
151proc htg_separation {} {
152
153    set r [helem DIV "" CLASS separation-milieu]
154
155    return $r
156}
157
158proc htg_titre {} {
159    if [catch {set niveau [htg getnext]} v] then {error $v}
160    check-int $niveau
161    if [catch {set texte  [htg getnext]} v] then {error $v}
162
163    incr niveau
164    set r [helem H$niveau $texte]
165    return $r
166}
167
168proc htg_partie {} {
169    global partie
170
171    if [catch {set id    [htg getnext]} v] then {error $v}
172    if [catch {set texte [htg getnext]} v] then {error $v}
173
174    set texte [nettoyer-html $texte]
175
176    switch -exact $id {
177	banniere	-
178	titrepage	{
179	    regsub -all "\n" $texte "<BR>\n" texte
180	}
181	default {
182	    regsub -all "\n\n+" $texte "<P>" texte
183	}
184    }
185
186    set partie($id) $texte
187
188    return {}
189}
190