Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3187 → Rev 3188

/trunk/widget/modules/manager/squelettes/js/manager.js
239,7 → 239,19
case 'radio':
displayFieldDetailsCollect(
fieldIndex,
'<p class="message">Ajoutez les valeurs de \"' + $( this ).children( 'option:selected' ).text() + '\"</p>'+
'<p class="message element-message">' +
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i> ' +
'Entrez au moins une valeur de ' + $( this ).children( 'option:selected' ).text() +
'</p>'+
// Première option
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+
// Recueil d'une valeur de la liste
'<label for="list-value">Valeur *:</label>'+
'<input type="text" name="list-value" data-id="' + fieldIndex + '" class="list-value" data-list-value-id="' + valueIndex +'" placeholder="Une des valeurs de la liste" required>'+
// Checkbox valeur par défaut
'<label for="is-defaut-value" title="Ceci est la valeur par défaut">Valeur par défaut</label>'+
'<input type="checkbox" name="is-defaut-value" data-id="' + fieldIndex + '" class="is-defaut-value" title="entrez une valeur pour activer cette case" data-list-value-id="' + valueIndex +'" disabled >'+
'</div>' +
// Bouton ajout d'une valeur à la liste
'<label for="add-value" class="add-value" data-id="' + fieldIndex + '" title="Ajouter une valeur à la liste">Ajouter une valeur</label>'+
'<div class="button add-value-button" name="add-value" data-id="' + fieldIndex + '" title="Ajouter une valeur à la liste"><i class="fa fa-puzzle-piece" aria-hidden="true"></i></div>'+
281,6 → 293,7
// Ajout des options des listes (deroulantes, cases à cocher etc.)
function onClickAddNewValueToList( fieldIndex , valueIndex ) {
$( '.add-value-button[data-id="' + fieldIndex + '"]' ).click( function() {
valueIndex++;
$( '.add-value[data-id="' + fieldIndex + '"]' ).before(
'<div class="new-value" data-list-value-id="' + valueIndex +'">'+
// Recueil d'une valeur de la liste
307,8 → 320,6
onClickDefaultValueRemoveOthers( fieldIndex );
// Supprimer une valeur
onClickRemoveListValue( fieldIndex );
 
valueIndex++;
});
}
 
381,7 → 392,7
if( 0 === $( '.invalid-field-key[data-id="' + index + '"]' ).length ) {
// Le champ est signalé en rouge
// Un message d'alerte apparait sous le champ
thisFieldKey.addClass( 'invalid' );
thisFieldKey.addClass( 'invalid-key' );
thisFieldKey.after(
'<p class="message invalid-field-key" data-id="' + index + '">' +
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
404,13 → 415,13
);
}
// Les boutons prévisualiser/valider sont désactivés et signalés en rouge
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' ).css( 'pointer-events', 'none' );
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid-key' ).css( 'pointer-events', 'none' );
} else {// Si on est ok on retire toutes les alertes
// signalements rouges
$( '.field-key' ).each( function() {
$( this ).removeClass( 'invalid' );
$( this ).removeClass( 'invalid-key' );
});
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid-key' );
// messages d'alerte
$( '.invalid-field-key' ).each( function() {
$( this ).hide( 200 , function () {
430,97 → 441,90
}
}
 
//Activation/Désactivation des boutons valider/prévisualiser
function activatePreviewAndValidateButtons() {
var invalidElementInfos = false, // true si aucune option n'a été entrée pour un élément de liste (select, radio, etc.)
invalidTextInfos = false; // true si au moins un input required n'est pas renseigné
// Clique sur le bouton prévisualiser ou valider
$('#preview-field , #validate-new-fields').on( 'click' , function() {
// S'il n'y a pas (plus) de bloc nouveau champ
// Activation/desactivation des champs valider/previsualiser
function onClickButtonsTagMissingValues() {
$( '#preview-field , #validate-new-fields' ).on( 'click' , function() {
var $button = $( this );
//S'il n'y a pas (plus) de bloc nouveau champ
if( 0 === $( 'fieldset' ).length ) {
return;
}
var count = $( 'fieldset' ).last().attr('data-id');
// si on a déjà des avertissements on les supprime
if( 0 < $( '.validation-warning' ).length ) {
// Supprimer les messages
$( '.validation-warning' ).each( function() {
$( this ).hide( 200 , function () {
$( this ).remove();
});
});
// Supprimer les bordures en rouge vif
$('.add-value-button , input[required]' ).each( function() {
$( this ).removeClass( 'invalid' );
});
}
// Parcourir tous les blocs d'infos de champs supplémentaires
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) {
var thisFieldset = $( 'fieldset[data-id="' + index + '"]');
// Certains indices peuvent correspondre à un champ supprimé
if( 0 < $( thisFieldset ).length ) {
var $fieldElement = $( '.field-element' , thisFieldset ),
fieldElementVal = $fieldElement.val(),
isList = ( // true si c'est un élément "liste"
fieldElementVal === 'list-checkbox' ||
fieldElementVal === 'checkbox' ||
fieldElementVal === 'radio' ||
fieldElementVal === 'select'
);
// Si aucune option n'a été créée pour un élément "liste"
if( isList && 0 === $( '.list-value' , thisFieldset ).length ) {
invalidElementInfos = true;
// Le bouton "Ajouter une valeur" est signalé en rouge
$( '.add-value-button' , thisFieldset ).addClass( 'invalid' );
}
// Classe "invalid"
missingValuesClass();
if( !$( this ).hasClass( 'invalid' ) ) {
if( $( this ).is( '#validate-new-fields') ) {
// Lancement de l'enregistrement des valeurs à transmettre
onClickStoreNewFields();
} else if( $( this ).is( '#preview-field') ) {
// Lancement de la prévisualisation
newFieldsPreview();
}
}
// Si au moins un champ "required" n'est pas rempli
$( 'input[required]' , thisFieldset ).each( function() {
if( 0 === $( this ).val().length ) {
invalidTextInfos = true;
// Le champ est signalé en rouge
$( this ).addClass( 'invalid' );
}
});
// Si la saisie est invalide
if( invalidElementInfos || invalidTextInfos ) {
// Désactivation des boutons valider et prévisualiser
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' );
// Message pour les options des "listes"
if( invalidElementInfos ) {
$( '#new-fields' ).after(
});
// Si un champ manquant est renseigné
// ou on choisit nouvel élément liste (au moins une option)
// Cette action doit être prise en compte dans la validation
$( '#new-fields' ).on( 'change' , '.invalid[type="text"] , .field-element' , function() {
// S'il on a pas encore cliqué sur prévisualiser/valider
// changer l'élément ne doit pas déclancher le signalement en rouge
if( $( this ).is( '.field-element' ) && !$( '#preview-field , #validate-new-fields' ).hasClass( 'invalid' ) ) {
return;
} else {
// Classe "invalid"
missingValuesClass();
}
});
}
 
 
// Classe "invalid"
function missingValuesClass() {
// Si au moins un champ "required" n'est pas rempli
$( '#new-fields input[required]' ).each( function() {
if( 0 === $( this ).val().length ) {
// Le champ est signalé en rouge
$( this ).addClass( 'invalid' );
// Un message d'alerte apparait après le champ
if( 0 === $( this).next( '.validation-warning' ).length ) {
$( this).after(
'<p class="validation-warning message">' +
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
'&nbsp;Vérifiez les boutons<br>"<i class="fa fa-puzzle-piece" aria-hidden="true" style="color:#4bbacb"></i>&nbsp;Ajouter une valeur" signalés en rouge:' +
' il faut au moins une valeur pour les éléments "menu déroulant", "boutons radio", "cases à cocher" ou "liste de cases à cocher", ' +
'&nbsp;Ce champ est requis' +
'</p>'
);
}
// Message pour les champs
if( invalidTextInfos ) {
$( '#new-fields' ).after(
'<p class="validation-warning message">' +
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
'&nbsp;Des informations sont manquantes pour certains champs,' +
' vérifiez ceux signalés en rouge' +
'</p>'
);
}
} else {
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
if( $( this ).is( '#validate-new-fields') ) {
// Lancement de l'enregistrement des valeurs à transmettre
onClickStoreNewFields();
} else if( $( this ).is( '#preview-field') ) {
// Lancement de la prévisualisation
newFieldsPreview();
// Le champ est signalé en rouge
$( this ).removeClass( 'invalid' );
// Le message d'alerte du champ est supprimé
if( 0 < $( this).next( '.validation-warning' ).length ) {
$( this ).next( '.validation-warning' ).hide( 200 , function () {
$( this ).remove();
});
}
}
// Réinitialisation des drapeaux de saisie invalide
invalidElementInfos = false;
invalidTextInfos = false;
});
// Si on a des champs à compléter
if( 0 < $( '.invalid[type="text"]' ).length ) {
// Les boutons sont signalés en rouge
$( '#preview-field , #validate-new-fields' ).addClass( 'invalid' );
// Un message d'alerte apparait avant les boutons
if( 0 === $( '#new-fields' ).next( '.validation-warning' ).length ) {
$( '#new-fields' ).after(
'<p class="validation-warning message">' +
'<i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#ff5d55"></i>' +
'&nbsp;Des informations sont manquantes pour certains champs,' +
' vérifiez ceux signalés en rouge' +
'</p>'
);
}
} else {
// Les signalements et messages sont supprimés
$( '#preview-field , #validate-new-fields' ).removeClass( 'invalid' );
$( '#new-fields' ).next( '.validation-warning' ).hide( 200 , function () {
$( this ).remove();
});
}
}
 
// Enregistrement des valeurs à transmettre
541,7 → 545,6
if( helpFileExists ){
$('#submit-button').before( '<div id="help-doc-submit" class="hidden"></div>' );
}
 
// On déroule les blocs de champs supplémentaires
for( var index = $( 'fieldset' ).first().attr('data-id') ; index <= count ; index++ ) {
var thisFieldset = $( 'fieldset[data-id="' + index + '"]');
1502,7 → 1505,7
// Ajout de nouveaux champs
onClickAddNewFields( fieldIndex );
// Activation/Desactivation des boutons valider et prévisualiser
activatePreviewAndValidateButtons();
onClickButtonsTagMissingValues();
// Prévisualisation des champs classiques
DisplayClassicFields();
// Affichage des images ou nom des documents importés