source: spip-zone/_plugins_/acs/lib/composant/controles.php @ 40939

Last change on this file since 40939 was 40939, checked in by webmaster@…, 9 years ago

ACS :

  • suppression du numero de release d'ACS dans plugin.xml et partout ailleurs
  • changement du schéma composant.xml : une valeur par défaut héritée se note désormais "=acsComposantVariable" et non plus "acsComposantVariable, par souci de cohérence avec l'affectation de valeurs de propriétés héritées.
  • changement de syntaxe pour les variables de type "bord" : #VAR{acsComposantBord/Width} au lieu de #VAR{acsComposantBordWidth} et modification de la balise VAR pour tenir compte de ce cas récursivement
  • nombreuses améliorations "cosmétiques" comme par exemple le changement d'icône de composant selon l'orientation (utilisé par le composant Module)

Modèle Cat : transformation (en cours) de TOUTES les pages du squelette en page constituées UNIQUEMENT de composants ACS

ATTENTION : toutes les pages du modèle "cat" n'ont pas encore étés changées : cette mise à jour a pour but essentiel de restaurer une installation automatisée d'un site fonctionnel dès l'installation (nouveau fichier composants/def.php pour les pages faites à 100% de modules).
Attention aux effets de cache après l'installation : recalculer la feuille de style habillage.css APRES activation du plugin.

File size: 12.6 KB
Line 
1<?php
2#              ACS
3#          (Plugin Spip)
4#     http://acs.geomaticien.org
5#
6# Copyright Daniel FAIVRE, 2007-2010
7# Copyleft: licence GPL - Cf. LICENCES.txt
8
9// Choix de couleur - Color choice
10function ctlColor($composant, $nic, $nom, $couleur, $param, $wid) {
11  $var =  nomvar($composant, $nic, $nom);
12  return '<div align="'.$GLOBALS['spip_lang_right'].'"><table><tr><td align="'.$GLOBALS['spip_lang_right'].'">&nbsp;<label for "'.$var.'_'.$wid.'" title="'.$var.'" class="label">'._TC($composant, $nom).'</label>&nbsp;</td><td><input type="text" class="palette" id="'.$var.'" name="'.$var.'_'.$wid.'" size="16" value="'.$couleur.'"></td></tr></table></div>';
13}
14
15// Choix d'image - Image choice
16function ctlImg($composant, $nic, $nom, $image, $param, $wid) {
17  $var =  nomvar($composant, $nic, $nom);
18  $path = $GLOBALS['ACS_CHEMIN'].'/'.$param['chemin'];
19  mkdir_recursive(_ACS_DIR_SITE_ROOT.$path);
20  $s = @getimagesize('../'.$path.'/'.$image);
21  $r = '<div align="'.$GLOBALS['spip_lang_right'].'"><table><tr>';
22  if ($param['label'] != 'non')
23    $r .= '<td align="'.$GLOBALS['spip_lang_right'].'">&nbsp;<label for "'.$var.'_'.$wid.'" title="'.$var.'"  class="label">'._TC($composant, $nom).'</label>&nbsp;</td>';
24  $r .= '<td><input type="text" name="'.$var.'_'.$wid.'"'.(is_array($s) ? ' title="'.$s[0].'x'.$s[1].'"' : '').' value="'.$image.'" size="40" class="forml" /></td>';
25  $r .= '<td>&nbsp;</td><td><a href="javascript:TFP.popup(document.forms[\'acs\'].elements[\''.$var.'_'.$wid.'\'], document.forms[\'acs\'].elements[\''.$var.'_'.$wid.'\'].value, \''.$path.'\', \''._ACS_DIR_SITE_ROOT.'\');" title="'._T('acs:choix_image').'"><img src="'._DIR_ACS.'images/folder_image.png" class="icon" alt="'._T('acs:choix_image').'" /></a></td></tr></table></div>';
26  return $r;
27}
28
29// Choix de bordure - Border choice
30function ctlBord($composant, $nic, $nom, $bord, $param, $wid) {
31  $var =  nomvar($composant, $nic, $nom);
32  $b = $GLOBALS['meta'][$var];
33  $bord = unserialize($b);
34  if (is_array($bord)) {
35        $largeur = $bord['Width'];
36        $style = $bord['Style'];
37        $couleur = $bord['Color'];
38  }
39  elseif (substr($b,0,1) == '=') {
40        $largeur = '=';
41        $style = '=';
42        $couleur = $b;
43  }
44        $r = '<table><tr><td>'.ctlColor($composant, $nic, $nom.'Color', $couleur, $param, $wid).'</td>';
45        $param['label'] = 'non';
46        $r .= '<td>'.ctlLargeurBord($composant, $nic, $nom.'Width', $largeur, $param, $wid).
47                                '<td>'.ctlStyleBord($composant, $nic, $nom.'Style', $style, $param, $wid).'</td>'.
48                '</tr></table>';
49        return $r;
50}
51
52// Choix d'une largeur de bordure - Border width choice
53function ctlLargeurBord($composant, $nic, $nom, $largeur='0', $param, $wid) {
54  $var =  nomvar($composant, $nic, $nom);
55  $r = '<div align="'.$GLOBALS['spip_lang_right'].'"><table><tr>';
56  if ($param['label'] != 'non') $r .= '<td align="'.$GLOBALS['spip_lang_right'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'" class="label">'._TC($composant, $nom).'</label></td>';
57  if (!in_array($largeur, array('', '0', 'thin', '1px', '2px', '3px', '4px', '5px')))
58        $option = '<option value="'.$largeur.'"  title="'.$largeur.' ('.$GLOBALS['meta'][substr($largeur, 1)].')" selected>=</option>';
59  $r .= '<td><select name="'.$var.'_'.$wid.'" title="'._T('acs:bordlargeur').' '.$var.'" class="forml" style="width: auto">'.
60    '<option value=""'.($largeur=="" ? ' selected' : '').' title="'._T('acs:parent').'"></option>'.
61        $option.
62    '<option value="0"'.($largeur=="0" ? ' selected' : '').' title="0">0</option>'.
63    '<option value="1px"'.($largeur=="1px" ? ' selected' : '').' title="1px">1px</option>'.
64    '<option value="2px"'.($largeur=="2px" ? ' selected' : '').' title="2px">2px</option>'.
65    '<option value="3px"'.($largeur=="3px" ? ' selected' : '').' title="3px">3px</option>'.
66    '<option value="4px"'.($largeur=="4px" ? ' selected' : '').' title="4px">4px</option>'.
67    '<option value="5px"'.($largeur=="5px" ? ' selected' : '').' title="5px">5px</option>'.
68    '<option value="8px"'.($largeur=="8px" ? ' selected' : '').' title="5px">8px</option>'.
69    '<option value="10px"'.($largeur=="10px" ? ' selected' : '').' title="5px">10px</option>'.
70    '<option value="15px"'.($largeur=="15px" ? ' selected' : '').' title="5px">15px</option>'.
71    '</select></td></tr></table></div>';
72  return $r;
73}
74
75// Choix d'un style  de bordure - Border style choice
76function ctlStyleBord($composant, $nic, $nom, $style='solid', $param, $wid) {
77  $var =  nomvar($composant, $nic, $nom);
78  $r = '<div align="'.$GLOBALS['spip_lang_right'].'"><table><tr>';
79  if ($param['label'] != 'non') $r .= '<td align="'.$GLOBALS['spip_lang_right'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'" class="label">'._TC($composant, $nom).'</label></td>';
80  if (!in_array($style, array('', 'none', 'solid', 'dashed', 'dotted', 'double', 'groove', 'ridge', 'inset', 'outset')))
81        $option = '<option value="'.$style.'"  title="'.$style.' ('.$GLOBALS['meta'][substr($style, 1)].')" selected>=</option>';
82  $r .= '<td><select name="'.$var.'_'.$wid.'" title="'._T('acs:bordstyle').' '.$var.'" class="forml" style="width: auto">'.
83    '<option value=""'.($style=="" ? ' selected' : '').' title="'._T('acs:parent').'"></option>'.
84        $option.
85    '<option value="none"'.($style=="none" ? ' selected' : '').' title="'._T('acs:none').'">none</option>'.
86    '<option value="solid"'.($style=="solid" ? ' selected' : '').' title="'._T('acs:solid').'">solid</option>'.
87    '<option value="dashed"'.($style=="dashed" ? ' selected' : '').' title="'._T('acs:dashed').'">dashed</option>'.
88    '<option value="dotted"'.($style=="dotted" ? ' selected' : '').' title="'._T('acs:dotted').'">dotted</option>'.
89    '<option value="double"'.($style=="double" ? ' selected' : '').' title="'._T('acs:double').'">double</option>'.
90    '<option value="groove"'.($style=="groove" ? ' selected' : '').' title="'._T('acs:groove').'">groove</option>'.
91    '<option value="ridge"'.($style=="ridge" ? ' selected' : '').' title="'._T('acs:ridge').'">ridge</option>'.
92    '<option value="inset"'.($style=="inset" ? ' selected' : '').' title="'._T('acs:inset').'">inset</option>'.
93    '<option value="outset"'.($style=="outset" ? ' selected' : '').' title="'._T('acs:outset').'">outset</option>'.
94    '</select></td></tr></table></div>';
95  return $r;
96}
97
98// Choix d'une famille de fonte - Font family choice
99function ctlFontFamily($composant, $nic, $nom, $style='sans-serif', $param, $wid) {
100  $var =  nomvar($composant, $nic, $nom);
101  $r = '<div align="'.$GLOBALS['spip_lang_right'].'"><table><tr>';
102  if ($param['label'] != 'non') $r .= '<td align="'.$GLOBALS['spip_lang_right'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'" class="label">'._TC($composant, $nom).'</label>&nbsp;</td>';
103  $r .= '<td><select name="'.$var.'_'.$wid.'" title="'._T('acs:bordstyle').'" class="forml" style="width: auto">'.
104    '<option value="serif"'.($style=="serif" ? ' selected' : '').' title="'._T('acs:serif').'">serif</option>'.
105    '<option value="sans-serif"'.($style=="sans-serif" ? ' selected' : '').' title="'._T('acs:sans-serif').'">sans-serif</option>'.
106    '<option value="cursive"'.($style=="cursive" ? ' selected' : '').' title="'._T('acs:cursive').'">cursive</option>'.
107    '<option value="fantasy"'.($style=="fantasy" ? ' selected' : '').' title="'._T('acs:fantasy').'">fantasy</option>'.
108    '<option value="monotype"'.($style=="monotype" ? ' selected' : '').' title="'._T('acs:monotype').'">monotype</option>'.
109    '</select></td></tr></table></div>';
110  return $r;
111}
112
113// Choix de valeur, avec + / - (todo)
114function ctlNombre($composant, $nic, $nom, $nombre=0, $param, $wid) {
115  $var =  nomvar($composant, $nic, $nom);
116        return '<div align="'.$GLOBALS['spip_lang_right'].'"><table><tr><td align="'.$GLOBALS['spip_lang_right'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'"  class="label">'._TC($composant, $nom).'</label>&nbsp;</td><td><input type="text" name="'.$var.'_'.$wid.'" size="8" class="forml" value="'.$nombre.'" style="text-align:'.$GLOBALS['spip_lang_right'].'" /></td></tr></table></div>';
117}
118
119// Saisie d'un texte
120function ctlText($composant, $nic, $nom, $txt, $param = array('taille' => 30), $wid) {
121  $var =  nomvar($composant, $nic, $nom);
122  $r = '<table width="100%"><tr>';
123  if ($param['label'] != 'non')
124        $r .= '<td align="'.$GLOBALS['spip_lang_right'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'"  class="label">'._TC($composant, $nom).'</label>&nbsp;</td>';
125  $r .= '<td><input type="text" name="'.$var.'_'.$wid.'" size="'.$param['taille'].'" maxlength="'.$param['taille'].'" class="forml" value="'.$txt.'" /></td></tr></table>';
126  return $r;
127}
128
129// Saisie d'un texte long
130function ctlTextarea($composant, $nic, $nom, $txt, $param, $wid) {
131  $var =  nomvar($composant, $nic, $nom);
132  return '<div align="'.$GLOBALS['spip_lang_left'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'">'._TC($composant, $nom).'</label><textarea name="'.$var.'_'.$wid.'" class="forml" rows="'.(isset($param['lines']) ? $param['lines']-1 : 2).'">'.$txt.'</textarea></div>';
133}
134
135// Choix oui / non
136function ctlChoix($composant, $nic, $nom, $value, $param, $wid) {
137  $var =  nomvar($composant, $nic, $nom);
138  if (!is_array($param['option'])) return 'Pas d\'options pour '.$nom;
139  $r = '<table><tr valign="middle"><td align="'.$GLOBALS['spip_lang_right'].'"><label for "'.$var.'_'.$wid.'" title="'.$var.'" class="label">'._TC($composant, $nom).'</label></td>';
140  foreach($param['option'] as $option) {
141    switch($option) {
142      case 'oui';
143        $label = _T('item_oui');
144        break;
145      case 'non';
146        $label = _T('item_non');
147        break;
148      default:
149        $label = _TC($composant, $nom.ucfirst($option));
150        // S'il n'existe pas de traduction propre au composant, on cherche une traduction ACS generique pour cette option
151        if ($label == strtolower(str_replace('_', ' ', $nom.$option)))
152                $label = _T('acs:'.strtolower($option));
153    }
154    $r .= '<td>&nbsp;'.acs_bouton_radio(
155      $var.'_'.$wid,
156      $option,
157      $label,
158      $value == $option
159    ).'&nbsp;<td>';
160  }
161  $r .= '</tr></table>';
162  return $r;
163}
164
165function ctlUse($composant, $nic, $nom, $txt, $param, $wid) {
166        return ctlChoix($composant, $nic, $nom, (($GLOBALS['meta'][nomvar($composant, $nic, $nom)] == 'oui') ? 'oui' : 'non'), array('option' => array('oui', 'non')), $wid);
167}
168
169// Choix d'un composant
170function ctlWidget($composant, $nic, $nom, $value, $param, $wid) {
171  $var =  nomvar($composant, $nic, $nom);
172  require_once(_DIR_PLUGIN_ACS.'lib/composant/composants_variables.php');
173  $vars = composants_variables();
174
175  $r = '<table><tr>';
176  if ($param['label'] != 'non')
177    $r .= '<td><label for "'.$var.'_'.$wid.'" title="'.$var.'"  class="label">'._TC($composant, $nom).'</label>&nbsp;</td>';
178  $r .= '<td><div id="'.$var.'_'.$wid.'" class="ctlWidget">';
179  $r .= '<select id="select_'.$var.'_'.$wid.'" name="'.$var.'_'.$wid.'" class="forml select_widget">';
180  $r .= '<option value=""'.($value=='' ? ' selected' : '').'> </option>';
181 
182  //foreach($cl as $c=>$widget)
183  foreach (composants_liste() as $class => $c) {
184        foreach($c['instances'] as $lnic => $cp) {
185        if ($lnic == $nic) continue;
186        if ($cp['on'] == 'oui')
187                                $r .= '<option value="'.$class.($lnic ? '-'.$lnic : '').'"'.($value==$class.($lnic ? '-'.$lnic : '') ? ' selected' : '').'>'.ucfirst($class).($lnic ? ' '.$lnic : '').'</option>';
188        }
189  }
190  $r .= '</select></div></td>';
191  $r .= '</tr></table>';
192  return $r;
193}
194
195function ctlHidden($composant, $nic, $nom, $value, $param, $wid) {
196  $var =  nomvar($composant, $nic, $nom);
197  return '<input type="hidden" name="'.$var.'_'.$wid.'" value="'.$value.'" />';
198}
199/**
200 * Retourne la traduction spécifique au composant,
201 * une traduction par défaut, ou le texte
202 */
203function _TC($composant, $texte) {
204        // traduction ACS propre au composant
205        $t = _T('acs:'.$composant.'_'.$texte);
206        if ($t != str_replace('_', ' ', $composant.'_'.$texte))
207                return str_replace(' ', '&nbsp;', $t);
208        // traduction ACS generique
209        $t = _T('acs:'.strtolower($texte));
210        if ($t != str_replace('_', ' ', $texte))
211                return str_replace(' ', '&nbsp;', $t);
212        // traduction SPIP generique
213        $t = _T(strtolower($texte));
214        if ($t != str_replace('_', ' ', $texte))
215                return str_replace(' ', '&nbsp;', $t);
216        return $texte;
217}
218
219function nomvar($composant, $nic, $nom) {
220        return 'acs'.ucfirst($composant).$nic.$nom;
221}
222
223// http://doc.spip.org/@bouton_radio
224function acs_bouton_radio($nom, $valeur, $titre, $actif = false, $onClick="", $enable=true) {
225  static $id_label = 0;
226
227  if (strlen($onClick) > 0) $onClick = " onclick=\"$onClick\"";
228  $texte = "<input type='radio' name='$nom' value='$valeur' id='radio_$id_label'$onClick";
229  if ($actif) {
230    $texte .= ' checked="checked"';
231    $titre = '<b>'.$titre.'</b>';
232  }
233  $texte .= ($enable ? '' : ' disabled')." />&nbsp;<label for='radio_$id_label'>$titre</label>";
234  $id_label++;
235  return $texte;
236}
237?>
Note: See TracBrowser for help on using the repository browser.