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