Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3248 → Rev 3249

/trunk/widget/modules/saisie2/squelettes/js/WidgetSaisie.js
138,8 → 138,6
WidgetSaisie.prototype.initEvts = function() {
var lthis = this;
 
// console.log($( '#taxon' ).data('label') );
 
$( 'body' ).on( 'click', '.effacer-miniature', function() {
$( this ).parent().remove();
});
942,36 → 940,6
$( '#taxon' ).bind( 'autocompleteselect', this.surAutocompletionTaxon );
};
 
// /* auto completion nom sci */
// WidgetSaisie.prototype.ajouterAutocompletionNoms = function() {
// var lthis = this;
// $( '#taxon' ).autocomplete({
// source: function( requete, add ) {
// // la variable de requête doit être vidée car sinon le parametre 'term' est ajouté
// requete = '';
// if( 'autre' !== $( '#referentiel' ).val() ) {
// var url = lthis.getUrlAutocompletionNomsSci();
// // console.log( url );
// $.getJSON( url, requete, function( data ) {
// var suggestions = lthis.traiterRetourNomsSci( data );
// add( suggestions );
// });
// }
// },
// html: true,
// position : {
// my : 'top',
// at : 'top'
// }
// });
 
// $( '#taxon' ).bind( 'autocompleteselect', this.surAutocompletionTaxon );
// };
 
// WidgetSaisie.prototype.focusChampFormulaire = function() {
// $( '#date_releve' ).focus();
// };
 
WidgetSaisie.prototype.chargerInfoObs = function() {
var urlObs = this.serviceObsUrl + '/' + this.obsId;
var lthis = this;
1077,8 → 1045,6
}
$( '#taxon-input-groupe' ).removeClass( 'error' );
$( element ).next( 'span.help-inline' ).remove();
} else {
$( '#taxon-input-groupe' ).addClass( 'error' );
}
} else {
$( element ).closest( '.control-group' ).removeClass( 'error' );
1096,8 → 1062,8
date_releve : {
required : true,
'dateCel' : true
},
taxon : 'required'
}
// taxon : 'required'
// latitude : {
// range: [-90, 90]
// },
1121,19 → 1087,6
});
};
 
// /* calendrier */
// WidgetSaisie.prototype.configurerDatePicker = function( selector ) {
// $.datepicker.setDefaults( $.datepicker.regional[ this.langue ] );
// $( selector ).datepicker({
// dateFormat: 'dd/mm/yyyy',
// maxDate: new Date,
// onSelect: function( date ) {
// $( this ).valid();
// }
// });
// $( selector + ' + img.ui-datepicker-trigger' ).appendTo( selector + '-icone.add-on' );
// };
 
WidgetSaisie.prototype.surAutocompletionTaxon = function( event, ui ) {
$( '#taxon' ).data( ui.item );
if ( ui.item.retenu ) {
/trunk/widget/modules/saisie2/squelettes/saisie.tpl.html
266,12 → 266,12
<?php endif; ?>
 
<div class="control-group">
<label for="taxon" class="col-sm-8 obligatoire" title="">
<label for="taxon" class="col-sm-8" title="">
<i class="fa fa-leaf" aria-hidden="true"></i>
<?php echo $observation['espece']; ?><?php if ( $widget['referentiel'] !== '' && $widget['referentiel'] !== NULL ) echo " (" . $widget['referentiel'] . ")"; ?>
</label>
<div class="col-sm-8 mb-3">
<input id="taxon" name="taxon" class="form-control" type="text" required>
<input id="taxon" name="taxon" class="form-control" type="text">
</div>
</div>
 
328,12 → 328,12
 
<?php foreach( $widget['chpSupp'][ $widget['projet'] ]['champs-supp'] as $champ ) : ?>
<?php
$min = ( $champ['fieldValues']['min'] )? ' min="' . $champ['fieldValues']['min'] . '"':'';
$max = ( $champ['fieldValues']['max'] )? ' max="' . $champ['fieldValues']['max'] . '"':'';
$step = ( $champ['fieldValues']['step'] )? ' step="' . $champ['fieldValues']['step'] . '"':'';
$default = ( $champ['fieldValues']['default'] )? ' value="' . $champ['fieldValues']['default'] . '"':'';
$description = ( $champ['description'] )? ' title="' . $champ['description'] . '"':'';
$placeholder = ( $champ['fieldValues']['placeholder'] )? ' placeholder="' . $champ['fieldValues']['placeholder'] . '"':'';
$min = ( isset( $champ['fieldValues']['min'] ) )? ' min="' . $champ['fieldValues']['min'] . '"':'';
$max = ( isset( $champ['fieldValues']['max'] ) )? ' max="' . $champ['fieldValues']['max'] . '"':'';
$step = ( isset( $champ['fieldValues']['step'] ) )? ' step="' . $champ['fieldValues']['step'] . '"':'';
$default = ( isset( $champ['fieldValues']['default'] ) )? ' value="' . $champ['fieldValues']['default'] . '"':'';
$description = ( isset( $champ['description'] ) )? ' title="' . $champ['description'] . '"':'';
$placeholder = ( isset( $champ['fieldValues']['placeholder'] ) )? ' placeholder="' . $champ['fieldValues']['placeholder'] . '"':'';
$required = '';
$mandatory = '';
$pattern = '';
477,7 → 477,7
<?php
$div_range_min_max = '';
 
if ( $champ['fieldValues']['min'] ) {
if ( isset( $champ['fieldValues']['min'] ) ) {
$div_range_min_max =
"<p class=\"col-sm-2 range-values text-center font-weight-bold\">".
"Min " . $champ['fieldValues']['min'] .
486,9 → 486,9
 
$div_range_min_max .= '<div class="range-live-value range-values text-center font-weight-bold col-sm-';
 
if ( $champ['fieldValues']['min'] && $champ['fieldValues']['max'] ) {
if ( isset( $champ['fieldValues']['min'] ) && isset( $champ['fieldValues']['max'] ) ) {
$div_range_min_max .= '8';
} elseif ( $champ['fieldValues']['min'] || $champ['fieldValues']['max'] ) {
} elseif ( isset( $champ['fieldValues']['min'] ) || isset( $champ['fieldValues']['max'] ) ) {
$div_range_min_max .= '10';
} else {
$div_range_min_max .= '12';
496,7 → 496,7
 
$div_range_min_max .= '"></div>';
 
if( $champ['fieldValues']['max'] ) {
if( isset( $champ['fieldValues']['max'] ) ) {
$div_range_min_max .=
"<p class=\"col-sm-2 range-values text-center font-weight-bold\">".
"Max " . $champ['fieldValues']['max'] .
671,10 → 671,10
var locationDatas = location.detail;
var latitude = '';
var longitude = '';
if ( undefined !== locationDatas.geometry.features ) {
if ( undefined !== locationDatas.geometry.features ) {// rue
latitude = ( locationDatas.geometry.features[0].geometry.coordinates[0][1] + locationDatas.geometry.features[0].geometry.coordinates[1][1]) / 2;
longitude = ( locationDatas.geometry.features[0].geometry.coordinates[0][0] + locationDatas.geometry.features[0].geometry.coordinates[1][0]) / 2;
} else if ( undefined !== locationDatas.geometry.coordinates ) {
} else if ( undefined !== locationDatas.geometry.coordinates ) {// point
latitude = locationDatas.geometry.coordinates[1];
longitude = locationDatas.geometry.coordinates[0];
}
/trunk/widget/modules/saisie2/Saisie2.php
91,7 → 91,7
$this->messages[] = 'La ressource demandée a retourné une valeur nulle.';
} else {
if (isset($retour['donnees'])) {
$retour['donnees']['prod'] = ($this->config['parametres']['modeServeur'] == "prod");
$retour['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod');
$retour['donnees']['bar'] = $this->bar;
$retour['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
$retour['donnees']['url_ws_annuaire'] = sprintf($this->config['chemins']['baseURLServicesAnnuaireTpl'], 'utilisateur/identite-par-courriel/');
142,14 → 142,14
$tableau = json_decode($json, true);
$tableau = $this->traiterParametres($estProjetDefini, $tableau[0]);
$tableau['especes'] = $this->rechercherInfosEspeces($tableau);
if ($tableau['milieux'] != "") {
$tableau['milieux'] = explode(";", $tableau['milieux']);
if ($tableau['milieux'] != '') {
$tableau['milieux'] = explode(';', $tableau['milieux']);
} else {
$tableau['milieux'] = array();
}
$tableau['chpSupp'] = $tab;
$langue_projet_url = ( isset ( $this->parametres['langue'] ) && $this->parametres['langue'] !== 'fr' ) ? '_' . $this->parametres['langue'] : '';
$tableau['chemin_fichiers'] = sprintf( $this->config['chemins']['baseURLAbsoluDyn'], $this->config['manager']['dossierTmp'] . $tableau["projet"] . $langue_projet_url . '/' );
$tableau['chemin_fichiers'] = sprintf( $this->config['chemins']['baseURLAbsoluDyn'], $this->config['manager']['dossierTmp'] . $tableau['projet'] . $langue_projet_url . '/' );
return $tableau;
}
 
160,27 → 160,25
$url = $this->config['manager']['celChpSupTpl'] .'?projet=' . $projet . '&langue=' . $this->parametres['langue'];
$json = $this->getDao()->consulter($url);
$retour = (array) json_decode($json, true);
$patterns = array( '/\@apos\@/' , '/\@quot\@/' );
$replacements = array( '&apos;' , '&quot;' );
 
foreach ( $retour[$projet]['champs-supp'] as $key => $chsup ) {
 
 
$retour[$projet]['champs-supp'][$key]['name'] = preg_replace( $patterns, $replacements, $chsup['name'] );
$retour[$projet]['champs-supp'][$key]['description'] = preg_replace( $patterns, $replacements, $chsup['description']);
$retour[$projet]['champs-supp'][$key]['unit'] = preg_replace( $patterns, $replacements, $chsup['unit'] );
$retour[$projet]['champs-supp'][$key]['name'] = $this->clean_string( $chsup['name'] );
$retour[$projet]['champs-supp'][$key]['description'] = $this->clean_string( $chsup['description']);
$retour[$projet]['champs-supp'][$key]['unit'] = $this->clean_string( $chsup['unit'] );
 
if ( isset( $chsup['fieldValues'] ) ) {
$retour[$projet]['champs-supp'][$key]['fieldValues'] = json_decode( $chsup['fieldValues'], true );
if ( isset($retour[$projet]['champs-supp'][$key]['fieldValues']['placeholder'] ) ) {
$retour[$projet]['champs-supp'][$key]['fieldValues']['placeholder'] = preg_replace( $patterns, $replacements, $retour[$projet]['champs-supp'][$key]['fieldValues']['placeholder'] );
$retour[$projet]['champs-supp'][$key]['fieldValues']['placeholder'] = $this->clean_string( $retour[$projet]['champs-supp'][$key]['fieldValues']['placeholder'] );
}
 
if ( isset( $retour[$projet]['champs-supp'][$key]['fieldValues']['listValue'] ) ) {
foreach( $retour[$projet]['champs-supp'][$key]['fieldValues']['listValue'] as $list_key => $list_value ) {
$list_value = preg_replace( $patterns, $replacements, $list_value );
$retour[$projet]['champs-supp'][$key]['fieldValues']['listValue'][$list_key] = $list_value;
$retour[$projet]['champs-supp'][$key]['fieldValues']['listValue'][$list_key] = $this->clean_string( $list_value );
// Obtenir une liste de valeurs utilisables dans les attributs for id ou name par exemple
$retour[$projet]['champs-supp'][$key]['fieldValues']['cleanListValue'][] = 'val-' . preg_replace('/[^A-Za-z0-9_\-]/', '', $this->remove_accents($list_value));
$retour[$projet]['champs-supp'][$key]['fieldValues']['cleanListValue'][] = 'val-' . preg_replace( '/[^A-Za-z0-9_\-]/', '', $this->remove_accents( $list_value ) );
}
}
}
189,6 → 187,20
return $retour;
}
 
private function clean_string( $string ) {
// les fonctions de base de php ne parviennent pas à une conversion satisfaisante des codes ascii
// qui ont été générés automatiquement lors de la transmission des chaines en json
// dans le widget cel manager vers la base
// Pour les mêmes raisons, @apos@ et @quot@ est une autre astuces utilisée dans ce même widget
// pour permettre la transmission des apostrophes et guillements sans erreur
$patterns = array( '/\@apos\@/', '/\@quot\@/', '/u00c0/', '/u00c1/', '/u00c2/', '/u00c3/', '/u00c4/', '/u00c5/', '/u00c6/', '/u00c7/', '/u00c8/', '/u00c9/', '/u00ca/', '/u00cb/', '/u00cc/', '/u00cd/', '/u00ce/', '/u00cf/', '/u00d1/', '/u00d2/', '/u00d3/', '/u00d4/', '/u00d5/', '/u00d6/', '/u00d8/', '/u00d9/', '/u00da/', '/u00db/', '/u00dc/', '/u00dd/', '/u00df/', '/u00e0/', '/u00e1/', '/u00e2/', '/u00e3/', '/u00e4/', '/u00e5/', '/u00e6/', '/u00e7/', '/u00e8/', '/u00e9/', '/u00ea/', '/u00eb/', '/u00ec/', '/u00ed/', '/u00ee/', '/u00ef/', '/u00f0/', '/u00f1/', '/u00f2/', '/u00f3/', '/u00f4/', '/u00f5/', '/u00f6/', '/u00f8/', '/u00f9/', '/u00fa/', '/u00fb/', '/u00fc/', '/u00fd/', '/u00ff/' );
$replacements = array( '&apos;', '&quot;', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý','ÿ' );
 
$clean_string = preg_replace( $patterns, $replacements, $string );
 
return $clean_string;
}
 
private function remove_accents($string) {
if ( !preg_match('/[\x80-\xff]/', $string) )
return $string;
300,7 → 312,7
$criteres = array('tag', 'motcle', 'projet', 'titre', 'logo');
$criteresProjetNonDefini = array('commune', 'num_nom', 'referentiel');
foreach($this->parametres as $nom_critere => $valeur_critere) {
if (($estProjetDefini == false || $tableau['projet'] == "base") && in_array($nom_critere, $criteresProjetNonDefini)) {
if (($estProjetDefini == false || $tableau['projet'] == 'base') && in_array($nom_critere, $criteresProjetNonDefini)) {
$tableau[$nom_critere] = $valeur_critere;
} else if (in_array($nom_critere, $criteres)) {
$tableau[$nom_critere] = $valeur_critere;
323,11 → 335,11
if ( isset( $infos_projets['type_especes'] ) ) {
 
switch ( $infos_projets['type_especes'] ) {
case "fixe" :
case 'fixe' :
$retour['especes'] = $this->chargerInfosTaxon( $infos_projets['referentiel'], $infos_projets['especes'] );
break;
case "referentiel" :
case "liste" :
case 'referentiel' :
case 'liste' :
$referentiel = $infos_projets['referentiel'];
break;
}
368,9 → 380,9
$retour = array();
if ( isset( $infos ) && !empty( $infos ) ) {
$infos = (array) $infos;
if ( isset( $infos['nom_sci'] ) && $infos['nom_sci'] != '' ) {
if ( isset( $infos['nom_sci'] ) && $infos['nom_sci'] !== '' ) {
$resultat = array_intersect_key( $infos, array_flip($champs_a_garder ) );
$resultat['retenu'] = ( $infos['id'] == $infos['nom_retenu.id'] ) ? "true" : "false";
$resultat['retenu'] = ( $infos['id'] == $infos['nom_retenu.id'] ) ? 'true' : 'false';
$retour['espece_imposee'] = true;
$retour['nn_espece_defaut'] = $nnEspeceImposee;
$retour['nom_sci_espece_defaut'] = $resultat['nom_complet'];
382,7 → 394,7
 
protected function getReferentielImpose() {
$referentiel_impose = true;
if (!empty($_GET['referentiel']) && $_GET['referentiel'] != "autre") {
if (!empty($_GET['referentiel']) && $_GET['referentiel'] !== 'autre') {
$this->ns_referentiel = $_GET['referentiel'];
} else if (isset($this->configProjet['referentiel'])) {
$this->ns_referentiel = $this->configProjet['referentiel'];
471,7 → 483,7
/**
* Découpe un fihcier tsv
*/
protected function decomposerFichierTsv($fichier, $delimiter = "\t"){
protected function decomposerFichierTsv($fichier, $delimiter = '\t'){
$header = null;
$data = array();
if (($handle = fopen($fichier, 'r')) !== FALSE) {