Ajout fonctionnel : les groupes de checkboxes enfants se déplient / replient dans les saisies "Mots clés arborescents"

Cette fonctionnalité s'active dans la configuration du plugin (elle est désactivée par défaut)
svn/root/tags/v1.1.11 v1.1.11
nicod_ 4 years ago
parent a0cb8a7b3b
commit bf38a5cceb

@ -0,0 +1,26 @@
<div id="formulaire_#FORM" class='formulaire_spip formulaire_configurer formulaire_#FORM'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<BOUCLE_editable(CONDITION){si #ENV{editable}}>
<form method="post" action="#ENV{action}#formulaire_#FORM">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer-groupe">
[(#SAISIE{case, checkbox_repliables, label=<:motsar:label_checkbox_repliables:>, label_case=<:motsar:label_case_checkbox_repliables:>})]
</div>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons">
<input type="submit" class="submit" value="<:bouton_enregistrer:>"/>
</p>
</div>
</form>
</BOUCLE_editable>
</div>

@ -19,6 +19,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'icone_creation_mot_enfant' => 'Créer un mot enfant',
'info_modifier_groupe' => '<strong>Attention : ce mot clé possède des enfants.</strong><br /> Si vous le déplacez dans un groupe de mot clé qui ne permet pas des arborescences de mots, votre arborescence sera perdue : tous les mots enfants seront placés à la racine du nouveau groupe.',
// L
'label_checkbox_repliables' => 'Saisie',
'label_case_checkbox_repliables' => 'Utiliser des groupes de checkboxes repliables dans les saisies',
// O
'option_autoriser_mots_arborescents' => 'Mots arborescents',
'option_autoriser_mots_arborescents_explication' => "Autoriser pour ce groupe la création d'arborescence de mots ?",

@ -1,7 +1,7 @@
<paquet
prefix="motsar"
categorie="navigation"
version="1.1.10"
version="1.1.11"
etat="test"
compatibilite="[3.0.4;3.2.*]"
logo="prive/themes/spip/images/motsar-64.png"

@ -0,0 +1,7 @@
[(#AUTORISER{configurer,motsar}|sinon_interdire_acces)]
<h1 class="grostitre"><:motsar:motsar_titre:></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_MOTSAR
</div>

@ -6,6 +6,7 @@
#SET{foncee,##ENV{couleur_foncee,3874b0}}
#SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
#SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
[(#REM)<style>]
.editer_groupe_mot select[name=id_groupe] optgroup { padding:.5em 3px 3px 3px; }
.editer_groupe_mot select[name=id_groupe] option { padding:3px 3px 3px 25px; }
@ -17,12 +18,9 @@ span.profondeur_mot { opacity:.3; }
.liste-objets.mots .motsar span.profondeur_mot { display: table-cell; padding-right: 0.5em; }
.liste-objets.mots .motsar a { display: table-cell; }
.choix.motsar-racine,
.choix.motsar-enfant { display: table; width: 100%; }
.choix.motsar-racine { padding-bottom: 0.5em; }
.choix.motsar-enfant + .choix.motsar-racine { padding-top: 1em; }
.choix.motsar-enfant span.profondeur_mot { display: table-cell; opacity: 0; }
.choix.motsar-racine .checkbox,
.choix.motsar-enfant .checkbox { display: table-cell; }
.choix.motsar-racine label,
.choix.motsar-enfant label { display: table-cell; padding-left: 0.5em; width: 100%; }
.choix.motsar-mot { display: flex; justify-content: flex-start; align-items: flex-start; padding: 0.3em;}
.choix.motsar-mot + .choix.motsar-mot { padding: 0.3em;}
.choix.motsar-mot span.profondeur_mot { opacity: 0; white-space: nowrap; }
.choix.motsar-mot .checkbox { margin-top: 4px; }
.choix.motsar-mot label { padding-left: 0.25em; width: 100%; }
.formulaire_spip .choix.motsar-mot--last { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-bottom: 1px solid #ddd; }

@ -39,7 +39,7 @@
[(#REM) valeur doit être un tableau ! ]
#SET{valeur_forcee, #ENV{valeur_forcee}|saisies_valeur2tableau}
<BOUCLE_checkmots(MOTS){racine}{par num titre, titre}{id_groupe}>
<div class="choix choix_#ID_MOT[ (#ENV{class})] motsar-racine">[(#SET{id,champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_[(#ID_MOT|concat{'-',#ENV{nom}}|md5)]})]
<div class="choix choix_#ID_MOT[ (#ENV{class})] motsar-mot motsar-racine" data-id_mot="#ID_MOT">[(#SET{id,champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_[(#ID_MOT|concat{'-',#ENV{nom}}|md5)]})]
[(#SET{checked,[(#ID_MOT|in_array{#GET{valeur_forcee,#GET{valeur,#GET{defaut}}}}|oui)]})]
[(#ENV{interdire_racine}|oui)<label>#TITRE</label>]
[(#ENV{interdire_racine}|non)
@ -48,7 +48,7 @@
]
</div>
<BOUCLE_check_enfants(MOTS){id_parent}{id_groupe?}{par num titre, titre}>
<div class="choix choix_#ID_MOT[ (#ENV{class})] motsar-enfant">[(#SET{id,champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_[(#ID_MOT|concat{'-',#ENV{nom}}|md5)]})]
<div class="choix choix_#ID_MOT[ (#ENV{class})] motsar-mot motsar-enfant" data-id_mot="#ID_MOT" data-id_parent="#ID_PARENT">[(#SET{id,champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_[(#ID_MOT|concat{'-',#ENV{nom}}|md5)]})]
[(#SET{checked,[(#ID_MOT|in_array{#GET{valeur_forcee,#GET{valeur,#GET{defaut}}}}|oui)]})]
[(#PROFONDEUR|mostar_tabulation)]
<input type="checkbox" name="#ENV{nom}[]" class="checkbox" id="#GET{id}"[ (#GET{checked})checked="checked"] value="#ID_MOT"[ (#ENV*{attributs})] />
@ -57,6 +57,45 @@
<BOUCLE_check_recursif(BOUCLE_check_enfants) />
</BOUCLE_check_enfants>
</BOUCLE_checkmots>
<BOUCLE_test_config(CONDITION){si #CONFIG{motsar/checkbox_repliables}}>
<script>
$(function() {
function motsarCheckRacine(id_mot) {
var cbRacine = $('.motsar-mot[data-id_mot=' + id_mot + ']').find('input');
var cbEnfants = $('.motsar-mot[data-id_parent=' + id_mot + ']');
// replier ou déplier les enfants en fonction de l'état
if(cbRacine.is(':checked')) {
cbEnfants.show();
} else {
cbEnfants.hide();
cbEnfants.each(function() {
$(this).find('input').prop('checked', false);
});
}
// vérifier chaque enfant
cbEnfants.each(function() {
motsarCheckRacine($(this).data('id_mot'))
});
// ajouter une bordure sous le dernier item visible
$('.motsar-mot--last').removeClass('motsar-mot--last');
$('.editer').each(function() {
$(this).find('.motsar-mot:visible').last().addClass('motsar-mot--last');
});
}
$('.motsar-enfant').hide();
$('.motsar-mot').each(function() {
var idMot = $(this).data('id_mot');
motsarCheckRacine(idMot)
$(this).find('input').on('change', function() {
motsarCheckRacine(idMot)
});
});
});
</script>
</BOUCLE_test_config>
</BOUCLE_multiples>
<select name="#ENV{nom}[(#ENV{multiple}|?{\[\]})]" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][(#ENV{multiple}|oui) multiple="multiple" size="#ENV{size,10}"][ disabled="(#ENV{disable})"]>

Loading…
Cancel
Save