Valider 9665659c rédigé par nicolas.dorigny@gmail.com's avatar nicolas.dorigny@gmail.com
Parcourir les fichiers

Ajout d'options sur les saisies, et y++

- checkboxes et radios : pouvoir désactiver certains choix (disable_choix)
- checkboxes : nombre maximal de choix possibles (maximum_choix)
- textarea : nombre maximal de caractères (longueur_max)
avec une vérification côté client (navigateur) en JS

TODO : 
- vérifications en PHP
- traduire la chaine en JS dans saisies/textarea.html, ligne 34 (chaine de texte avec une variable), pour l'instant en français "en dur"
parent 158d637b
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -86,6 +86,8 @@ Il est possible d’utiliser les opérateurs booléens <code>||</code> (ou) et
	'option_disable_avec_post_label' => 'Désactiver mais poster',
	'option_disable_explication' => 'Le champ ne peut plus obtenir le focus.',
	'option_disable_label' => 'Désactiver le champ',
	'option_disable_choix_label' => 'Désactiver certains choix',
	'option_disable_choix_explication' => 'Indiquer les choix séparés par une virgule, exemple : choix1,choix3',
	'option_erreur_obligatoire_explication' => 'Vous pouvez personnaliser le message d’erreur affiché pour indiquer l’obligation (sinon laisser vide).',
	'option_erreur_obligatoire_label' => 'Message d’obligation',
	'option_explication_explication' => 'Si besoin, une courte phrase décrivant l’objet du champ.',
@@ -116,6 +118,8 @@ Il est possible d’utiliser les opérateurs booléens <code>||</code> (ou) et
	'option_limite_branche_label' => 'Limiter à une branche',
	'option_maxlength_explication' => 'L’utilisateur ne pourra pas taper plus de caractères que ce nombre.',
	'option_maxlength_label' => 'Nombre de caractères maximum',
	'option_maximum_choix_explication' => 'Nombre de choix maximum ?',
	'option_maximum_choix_label' => 'Limiter le nombre de choix',
	'option_multiple_explication' => 'L’utilisateur pourra sélectionner plusieurs valeurs',
	'option_multiple_label' => 'Sélection multiple',
	'option_nom_explication' => 'Un nom informatique qui identifiera le champ. Il ne doit contenir que des caractères alpha-numériques minuscules ou le caractère "_".',
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<paquet
	prefix="saisies"
	categorie="outil"
	version="2.24.3"
	version="2.25.0"
	etat="stable"
	compatibilite="[3.0.0;3.2.*]"
	logo="images/logo_saisie_48.png"
+13 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -37,6 +37,9 @@
	[(#GET{disabled}|strlen|non) #SET{disabled,#ARRAY} ]
	[(#GET{disabled}|oui) #SET{disabled,#ARRAY|push{#GET{disabled}}} ]
]
[(#ENV{disable_choix}|strlen|oui)
	#SET{disabled, #ENV{disable_choix}|explode{','}}
]
[(#ENV{tout_selectionner}|oui)
	<div class="[(#ENV{choix,choix})][ (#ENV{choix,choix})_tout_selectionner ][ (#ENV{class}) ]none-nojs">
		<input type="checkbox" name="#ENV{nom}_tout" class="checkbox" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_tout" value="on" onChange="if (jQuery(this).prop('checked')==true) jQuery(this).parent('div').parent().find('input').prop('checked',true); else jQuery(this).parent('div').parent().find('input').prop('checked',false);"/>
@@ -46,7 +49,7 @@

<BOUCLE_checkbox(POUR){tableau #GET{data}}>
<div class="#ENV{choix,choix}[ (#ENV{choix,choix})_#CLE][ (#ENV{class})]">[(#SET{id,champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_[(#COMPTEUR_BOUCLE|concat{'-',#CLE}|md5)]})]
	<input type="checkbox" name="#ENV{nom}[]" class="checkbox" id="#GET{id}"[ (#CLE|in_array{#ENV{valeur_forcee,#GET{valeur,#GET{defaut}}}}|oui)checked="checked"] value="#CLE"[(#CLE|in_array{#GET{disabled}}|oui) disabled="disabled"][ aria-describedby="(#ENV{describedby})"][ (#ENV*{attributs})] />
	<input type="checkbox" name="#ENV{nom}[]" class="checkbox checkbox_#ENV{nom}" id="#GET{id}"[ (#CLE|in_array{#ENV{valeur_forcee,#GET{valeur,#GET{defaut}}}}|oui)checked="checked"] value="#CLE"[(#CLE|in_array{#GET{disabled}}|oui) disabled="disabled"][ aria-describedby="(#ENV{describedby})"][ (#ENV*{attributs})] />
	<label for="#GET{id}"[(#CLE|in_array{#ENV{valeur_forcee,#GET{valeur,#GET{defaut}}}}|oui)class="on"][(#ENV{attribut_title}|oui) title="#CLE"]>#VALEUR</label>
</div>
</BOUCLE_checkbox>
@@ -63,3 +66,12 @@
</div>
]
</B_checkbox>
[(#ENV{maximum_choix}|intval|oui)
<script type="text/javascript">
	$('input.checkbox_#ENV{nom}').on('change', function() {
		if($('input.checkbox_#ENV{nom}:checked').length > [(#ENV{maximum_choix}|intval)]) {
			this.checked = false;
		}
	});
</script>	
]
 No newline at end of file
+12 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -67,6 +67,18 @@ options:
          nom: 'disable'
          label: '<:saisies:option_disable_label:>'
          explication: '<:saisies:option_disable_explication:>'
      -
        saisie: 'input'
        options:
          nom: 'disable_choix'
          label: '<:saisies:option_disable_choix_label:>'
          explication: '<:saisies:option_disable_choix_explication:>'          
      -
        saisie: 'input'
        options:
          nom: 'maximum_choix'
          label: '<:saisies:option_maximum_choix_label:>'
          explication: '<:saisies:option_maximum_choix_explication:>'          
      -
        saisie: 'oui_non'
        options:
+4 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -21,10 +21,13 @@
#SET{data, #ENV*{data, #ENV*{datas}}}
#SET{data, #GET{data}|is_string|?{(#GET{data}|saisies_chaine2tableau), #GET{data}}}

[(#ENV{disable_choix}|strlen|oui)
#SET{disable_choix, #ENV{disable_choix}|trim|explode{','}}
]
<BOUCLE_radio(POUR){tableau #GET{data}}>
#SET{disabled, #ENV{disable}|is_string|?{#ENV{disable}, #ENV{disable/#CLE}}}
<div class="#ENV{choix,choix}[ (#ENV{choix,choix})_#CLE][ (#ENV{class})]">
	<input type="radio" name="#ENV{nom}" class="radio" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_#COMPTEUR_BOUCLE"[ (#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}|=={#CLE}|oui)checked="checked"] value="#CLE"[(#GET{disabled}|oui) disabled="disabled"][ readonly="(#ENV{readonly})"][ aria-describedby="(#ENV{describedby})"] />
	<input type="radio" name="#ENV{nom}" class="radio" id="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_#COMPTEUR_BOUCLE"[ (#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}|=={#CLE}|oui)checked="checked"] value="#CLE"[(#GET{disabled}|ou{#CLE|in_array{#GET{disable_choix}}}) disabled="disabled"][ readonly="(#ENV{readonly})"][ aria-describedby="(#ENV{describedby})"] />
	<label for="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_#COMPTEUR_BOUCLE"[(#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}|=={#CLE}|oui)class="on"]>#VALEUR</label>
</div>
</BOUCLE_radio>
Chargement en cours