-
Bug
-
Résolution: Résolu
-
Mineur
-
6.02.27
-
Aucune
-
Aucune
Bonjour,
le fichier jquery.layout-manager-fieldHandlers-0.1.0.js contient des erreurs sur la gestion du kmultiselect (au niveau de la méthode edit).
En effet, le code actuel :
edit: function (field, card) { if (field) { var $component = $(field), $compositionList = $('.kmultiselect-composition-list', $component), $libelles = $('input[name^="LIBELLE_"]', $component), name = $libelles.attr('name').replace('LIBELLE_', ''), $input = $('#' + name, $component); $input.val(''); if (card.model[name]) { $compositionList.empty(); $.each(card.model[name].split(';'), function (index, value) { var splitedValues = value.split(','), ignore = splitedValues[0].lastIndexOf('#AUTO#', 0) === 0; $libelles.val($libelles.val() + splitedValues[3]); $input.val($input.val() + splitedValues[0]); $('<li>').addClass(ignore ? 'ignore' : '').html(splitedValues[3]).attr('data-value', splitedValues[0]).attr('title', splitedValues[3]).appendTo($compositionList); }); $component.kMultiSelect().update(); return true; } } return false; },
- se base du des index "incertains" (ex: splitedValues [ 3 ])
- concatène les libellés et les valeurs sans séparateur (ex: $libelles.val($libelles.val() + splitedValues [ 3 ]); $input.val($input.val() + splitedValues [ 0 ]); )
Le code pourrait être corrigé et amélioré. Il est bien sûr admis que gérer tous les cas semble difficiles, mais on peut gérer au moins les fiches de manières assez clair et propre.
Un exemple de code qui demande à être amélioré :
$.each(card.model[name].split(';'), function (index, value) { var splitedValues = value.split(','), ignore = splitedValues[0].lastIndexOf('#AUTO#', 0) === 0; var lastIndex = splitedValues.length - 1 ; $libelles.val($libelles.val() + splitedValues[lastIndex]+";"); var type = ''; if(lastIndex > 2){ splitedValues[2] = splitedValues[2].split('TYPE=').join(''); type = ',TYPE=' + splitedValues[2]; } splitedValues[1] = splitedValues[1].split('LANGUE=').join(''); var langue = ",LANGUE=" + splitedValues[1]; $input.val($input.val() + splitedValues[0] + langue+ type+";"); $('<li>').addClass(ignore ? 'ignore' : '').html(splitedValues[3]).attr('data-value', splitedValues[0]).attr('title', splitedValues[3]).appendTo($compositionList); });