/trunk/jrest/services/CelWidgetImage.php |
---|
54,7 → 54,7 |
$chercheur_images = new RechercheImage($this->config); |
$total = $chercheur_images->compterImages(null, $criteres); |
$images = $chercheur_images->rechercherImagesJoinObservation(null, $criteres, $this->start, $this->limit); |
$images = $this->mettreEnForme($images); |
$images = $this->mettreEnForme($images); |
$resultat = array('total' => $total,'images' => $images); |
$images_json = json_encode($resultat); |
65,34 → 65,34 |
exit(); |
} |
public function mettreEnForme($images) { |
$retour = array(); |
foreach ($images as $id => $image) { |
$retour[$id]['id_photo'] = $image['id_photo']; |
unset($image['id_photo']); |
$retour[$id]['guid'] = $image['guid']; |
unset($image['guid']); |
$retour[$id]['nom_original'] = $image['nom_original']; |
unset($image['nom_original']); |
$retour[$id]['date_photo'] = $image['date_photo']; |
unset($image['date_photo']); |
$retour[$id]['licence'] = $image['licence']; |
unset($image['licence']); |
$retour[$id]['attribution'] = $image['attribution']; |
unset($image['attribution']); |
$retour[$id]['url_photo'] = $image['url_photo']; |
unset($image['url_photo']); |
$retour[$id]['tags_photo'] = $image['tags_photo']; |
unset($image['tags_photo']); |
$retour[$id]["utilisateur"]['id_utilisateur'] = $image['id_utilisateur']; |
unset($image['id_utilisateur']); |
$retour[$id]["utilisateur"]['mail_utilisateur'] = $image['mail_utilisateur']; |
unset($image['mail_utilisateur']); |
$retour[$id]["utilisateur"]['nom_utilisateur'] = $image['nom_utilisateur']; |
unset($image['nom_utilisateur']); |
$retour[$id]['obs'] = $image; |
} |
return $retour; |
$retour = array(); |
foreach ($images as $id => $image) { |
$retour[$id]['id_photo'] = $image['id_photo']; |
unset($image['id_photo']); |
$retour[$id]['guid'] = $image['guid']; |
unset($image['guid']); |
$retour[$id]['nom_original'] = $image['nom_original']; |
unset($image['nom_original']); |
$retour[$id]['date_photo'] = $image['date_photo']; |
unset($image['date_photo']); |
$retour[$id]['licence'] = $image['licence']; |
unset($image['licence']); |
$retour[$id]['attribution'] = $image['attribution']; |
unset($image['attribution']); |
$retour[$id]['url_photo'] = $image['url_photo']; |
unset($image['url_photo']); |
$retour[$id]['tags_photo'] = $image['tags_photo']; |
unset($image['tags_photo']); |
$retour[$id]["utilisateur"]['id_utilisateur'] = $image['id_utilisateur']; |
unset($image['id_utilisateur']); |
$retour[$id]["utilisateur"]['mail_utilisateur'] = $image['mail_utilisateur']; |
unset($image['mail_utilisateur']); |
$retour[$id]["utilisateur"]['nom_utilisateur'] = $image['nom_utilisateur']; |
unset($image['nom_utilisateur']); |
$retour[$id]['obs'] = $image; |
} |
return $retour; |
} |
} |
/trunk/jrest/bibliotheque/RechercheImage.php |
---|
42,13 → 42,13 |
// redéfinis en 2020, affiche toutes les infos images et obs à partir d'un join pour n'avoir que les images liées à une obs |
public function rechercherImagesJoinObservation($id_utilisateur = null, $criteres = array(), $debut = 0 , $limite = 50) { |
$ordre = (isset($criteres['tri']) && $criteres['tri']) ? $criteres['tri'] : ''; |
unset($criteres['tri']); |
$direction = (isset($criteres['dir']) && $criteres['dir']) ? $criteres['dir'] : 'ASC'; |
unset($criteres['dir']); |
$debut = ($debut < 0) ? 0 : $debut; |
$requete_recherche_images = 'SELECT ci.`id_image` as id_photo, co.guid, |
$ordre = (isset($criteres['tri']) && $criteres['tri']) ? $criteres['tri'] : ''; |
unset($criteres['tri']); |
$direction = (isset($criteres['dir']) && $criteres['dir']) ? $criteres['dir'] : 'ASC'; |
unset($criteres['dir']); |
$imgUrlTplBase = explode('%', $this->config['settings']['celImgUrlTpl'])[0]; |
$debut = ($debut < 0) ? 0 : $debut; |
$requete_recherche_images = 'SELECT ci.`id_image` as id_photo, co.guid, |
`id_observation` as id_obs, `nom_sel`, `nom_sel_nn`, `zone_geo` as localisation, `latitude`, `longitude`, |
`date_observation` as date_obs, `commentaire`, `certitude`, `grade` as fiabilite, programme as projet, |
`score_identiplante` as score_ip, `url_identiplante` as url_ip, `validation_identiplante` as est_ip_valide, |
59,24 → 59,24 |
`ce_utilisateur` as id_utilisateur, `courriel_utilisateur` as mail_utilisateur, `pseudo_utilisateur` as nom_utilisateur, |
ci.`nom_original`, ci.`date_prise_de_vue` as date_photo, "Creative Commons BY-SA (2.0)" as licence, |
concat(`nom_sel`, " par ", `pseudo_utilisateur`, " [CC BY-SA 2.0 FR], via Tela Botanica") as attribution, |
concat("https://api.tela-botanica.org/img:", lpad(ci.id_image, 9, "0"), "O,") as url_photo, ci.`mots_cles_texte` as tags_photo '; |
$requete_recherche_images .= $this->fabriquerRequeteJointureDblObs(); |
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND co.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : ''; |
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres); |
$requete_recherche_images .= $sous_requete_recherche; |
if (!empty($ordre)) { |
$requete_recherche_images .= ' ORDER BY '.$ordre.' '.$direction; |
} |
$requete_recherche_images .= ' LIMIT '.$debut.','.$limite; |
$resultats_images = array(); |
$resultats_images = Cel::db()->requeter($requete_recherche_images); |
return $resultats_images; |
concat("'.$imgUrlTplBase.'", lpad(ci.id_image, 9, "0"), "O") as url_photo, ci.`mots_cles_texte` as tags_photo '; |
$requete_recherche_images .= $this->fabriquerRequeteJointureDblObs(); |
$requete_recherche_images .= ($id_utilisateur != null) ? 'AND co.ce_utilisateur = '.Cel::db()->proteger($id_utilisateur) : ''; |
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres); |
$requete_recherche_images .= $sous_requete_recherche; |
if (!empty($ordre)) { |
$requete_recherche_images .= ' ORDER BY '.$ordre.' '.$direction; |
} |
$requete_recherche_images .= ' LIMIT '.$debut.','.$limite; |
$resultats_images = array(); |
$resultats_images = Cel::db()->requeter($requete_recherche_images); |
return $resultats_images; |
} |
public function rechercherImages($id_utilisateur = null, $criteres = array(), $debut = 0 , $limite = 50) { |
142,11 → 142,11 |
} |
private function fabriquerRequeteJointureDblObs() { |
$requete = 'FROM cel_images_export ci '. |
'JOIN cel_export_total co '. |
'ON ci.ce_observation = co.id_observation '. |
'WHERE 1 '; |
return $requete; |
$requete = 'FROM cel_images_export ci '. |
'JOIN cel_export_total co '. |
'ON ci.ce_observation = co.id_observation '. |
'WHERE 1 '; |
return $requete; |
} |
public function obtenirInformationsObservationsAssociees($id_utilisateur, $id_image) { |
220,9 → 220,9 |
$sous_requete .= ' AND '; |
break; |
case "standard": |
$sous_requete .= 'co.donnees_standard = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND '; |
break; |
$sous_requete .= 'co.donnees_standard = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND '; |
break; |
case "taxon": |
$valeur = str_replace('indetermine','null',$valeur); |
$sous_requete .= ' ('; |
256,9 → 256,9 |
$sous_requete .= ' AND ' ; |
break; |
case "tri": |
break; |
break; |
case "dir": |
break; |
break; |
default: |
$sous_requete .= 'ci.'.$nom.' = '.Cel::db()->proteger($valeur) ; |
$sous_requete .= ' AND ' ; |
/trunk/widget/modules/photo/config.defaut.ini |
---|
3,8 → 3,6 |
autoload = "bibliotheque/;bibliotheque/xml_feed_parser/1.0.4/;bibliotheque/xml_feed_parser/1.0.4/parsers/" |
; URL ou chemin du flux RSS contenant les liens vers les photos - ne pas oublier de changer motif_guid en même temps! |
fluxRssUrl = "https://api.tela-botanica.org/service:cel:CelSyndicationImage/multicriteres/atom/M" |
; Expression régulière pour récupérer le numéro de l'image à partir de l'URL renvoyée par le flux Atom |
motif_guid = "/appli:cel-img:([0-9]+)[^.]+\.jpg$/" |
; Squelette d'url pour accéder à la fiche eFlore |
efloreUrlTpl = "https://www.tela-botanica.org/bdtfx-nn-%s" |
; Nombre de vignette à afficher : nombre de vignettes par ligne et nombre de lignes séparés par une vigule (ex. : 4,3). |
11,6 → 9,8 |
vignette = 4,3 |
; Afficher/Cacher l'affichage en grand de la dernière image ajoutée |
extraActif = true |
; url service widget image |
celUrlImages = "https://api.tela-botanica.org/service:cel:CelWidgetImage/" |
[photo.cache] |
; Active/Désactive le cache |
/trunk/widget/modules/photo/squelettes/popup.tpl.html |
---|
24,7 → 24,7 |
<input type="text" class="form-control" id="saisir-tag" name="saisir-tag"> |
<div id="tags-pf-supp"></div> |
<a id="signaler-photo" class="btn btn-sm btn-warning"><i class="fas fa-exclamation-triangle"></i> Signaler une photo inappropriée</a> |
<a id="signaler-erreur-id-bis" class="btn btn-sm btn-warning"><i class="fas fa-exclamation-triangle"></i> Signaler une erreur d'identification</a> |
<a id="signaler-erreur-id-bis" class="btn btn-sm btn-warning signaler-erreur-obs" title="Signaler une mauvaise identification ou en proposer une autre via l'outil identiplante" target="_blank"><i class="fas fa-exclamation-triangle"></i> Signaler une erreur d'identification</a> |
</div> |
<div id="bloc-noter" class="bloc-volet noter hidden" data-volet="noter"> |
<h2>Protocoles</h2> |
99,7 → 99,7 |
</div> |
</div> |
</form> |
<a id="signaler-erreur-id-signaler" class="btn btn-sm btn-warning"><i class="fas fa-exclamation-triangle"></i> Signaler une erreur d'identification</a> |
<a id="signaler-erreur-id-signaler" class="btn btn-sm btn-warning signaler-erreur-obs" title="Signaler une mauvaise identification ou en proposer une autre via l'outil identiplante" target="_blank"><i class="fas fa-exclamation-triangle"></i> Signaler une erreur d'identification</a> |
</div> |
120,12 → 120,12 |
<li id="nom" class="row"> |
<div class="col-5 label">Nom</div> |
<div class="col-5 contenu"></div> |
<a class="bouton btn btn-sm btn-outline-secondary"><i class="fas fa-search"></i></a> |
<a class="bouton btn btn-sm btn-outline-secondary" target="_blank"><i class="fas fa-search"></i></a> |
</li> |
<li id="localisation" class="row"> |
<div class="col-5 label">Localisation</div> |
<div class="col-5 contenu"></div> |
<a class="bouton btn btn-sm btn-outline-secondary"><i class="fas fa-map-marker-alt"></i></a> |
<a id="obs-localisation" class="bouton btn btn-sm btn-outline-secondary"><i class="fas fa-map-marker-alt"></i></a> |
</li> |
<li id="auteur" class="row"> |
<div class="col-5 label">Auteur</div> |
136,7 → 136,7 |
<div class="col-5 label">Date d'observation</div> |
<div class="col-5 contenu"></div> |
</li> |
<li id="commentaires" class="row"> |
<li id="commentaire" class="row"> |
<div class="col-5 label">Commentaires</div> |
<div class="col-5 contenu"></div> |
</li> |
159,10 → 159,14 |
</li> |
<li id="licence" class="row"> |
<div class="col-5 label">Licence</div> |
<div class="col-5 contenu"></div> |
<div class="col-5 contenu"> |
<a target="_blank" href="http://creativecommons.org/licenses/by-sa/2.0/fr/">CC-BY-SA 2.0 FR</a> |
</div> |
</li> |
</ul> |
<a id="signaler-erreur-id" class="btn btn-sm btn-warning"><i class="fas fa-exclamation-triangle"></i> Signaler une erreur d'identification</a> |
<a id="signaler-erreur-id" class="btn btn-sm btn-warning signaler-erreur-obs" title="Signaler une mauvaise identification ou en proposer une autre via l'outil identiplante" target="_blank" href="https://www.tela-botanica.org/appli:identiplante"><i class="fas fa-exclamation-triangle"></i> Signaler une erreur d'identification</a> |
<h2>Téléchargement</h2> |
<ul id="contenu-telechargement"> |
<li id="titre-original" class="row"> |
175,24 → 179,32 |
</li> |
<li id="Licence-bis" class="row"> |
<div class="col-5 label">Licence</div> |
<div class="col-5 contenu"></div> |
<div class="col-5 contenu"> |
<a target="_blank" href="http://creativecommons.org/licenses/by-sa/2.0/fr/">CC-BY-SA 2.0 FR</a> |
</div> |
</li> |
<li id="attribution" class="row"> |
<div class="col-5 label">Attribution</div> |
<div class="col-7 contenu message"></div> |
<div class="col-12 label">Attribution</div> |
<div class="col-12 contenu"> |
<input id="attribution-copy" type="text" name="attribution-copy" rows="4" class="form-control" readonly="readonly" style="width: 100%; height: 100%;"> |
</div> |
</li> |
<li id="url" class="row"> |
<div class="col-5 label">Url</div> |
<div class="col-5 contenu"></div> |
<div class="col-12 label">Url</div> |
<div class="col-12 contenu"> |
<input id="url-copy" type="text" name="url-copy" rows="2" class="form-control" readonly="readonly" style="width: 100%; height: 100%;"> |
</div> |
</li> |
</ul> |
<a id="telecharger" class="btn btn-success"><i class="fas fa-upload"></i> Télécharger</a> |
<a href="" data-url-base-telechargement="<?php echo $url_base_telechargement; ?>" id="telecharger" class="btn btn-success"><i class="fas fa-upload"></i> Télécharger</a> |
<ul id="contenu-telechargement-suite"> |
<li id="autres-formats" class="row"> |
<div class="col-5 label">Autres formats</div> |
<div class="col-7 contenu"> |
<select name="formats" id="formats" class="form-control custom-select"> |
<option value="" selected hidden>Carrée, rognée...</option> |
<?php foreach ($formats_description as $format => $description):?> |
<option value="<?php echo $format; ?>" <?php echo $format === 'O' ? 'selected' : ''; ?>><?php echo $description; ?></option> |
<?php endforeach; ?> |
</select> |
</div> |
</li> |
284,13 → 296,15 |
<script type="text/Javascript"> |
//<![CDATA[ |
var widgetProp = { |
'urlWidget' : "<?php echo $url_widget; ?>", |
'urls' : [<?php echo '"'.implode($urls, '","').'"'; ?>], |
'infos_images' : <?php echo json_encode($infos_images); ?>, |
'indexImage' : 0, |
'urlImage' : "<?php echo $url_image; ?>", |
'tailleMax' : 580, |
'popup_url' : "<?php echo $popup_url; ?>" |
'urlWidget' : "<?php echo $url_widget; ?>", |
'urls' : [<?php echo '"'.implode($urls, '","').'"'; ?>], |
'infos_images' : <?php echo json_encode($infos_images); ?>, |
'indexImage' : 0, |
'urlImage' : "<?php echo $url_image; ?>", |
'tailleMax' : 580, |
'popupUrl' : "<?php echo $popup_url; ?>", |
'urlBaseTelechargement' : "<?php echo $url_base_telechargement; ?>", |
'urlServiceRegenererMiniature' : "<?php echo $url_ws_regenerer_img; ?>" |
}; |
$( document ).ready( function() { |
popup = new WidgetPhotoPopup( widgetProp ); |
/trunk/widget/modules/photo/squelettes/css/popup.css |
---|
352,6 → 352,29 |
margin-top: 1rem; |
} |
/************************************************************************************************************/ |
#localisation-map-container { |
position: absolute; |
z-index: 100; |
top: 30px; |
right: 5%; |
left: 5%; |
height: 302px; |
border: 1px solid #606060; |
overflow: hidden; |
} |
#localisation-map { |
width: 100%; |
height: 300px; |
background-color: #fff; |
} |
#map-close { |
z-index: 10000; |
} |
/*----------------------------------------------------------------------------------------------------------*/ |
@media screen and ( max-width: 991px ) { |
#bloc-infos-img { |
/trunk/widget/modules/photo/squelettes/photo.tpl.html |
---|
19,18 → 19,14 |
<meta property="og:title" content="Widget photo du CeL" /> |
<meta property="og:site_name" content="Tela Botanica" /> |
<meta property="og:description" content="Mini-galerie photo des observations publiques du Carnet en Ligne" /> |
<?php |
if (isset($items[0])) { |
$iz = $items[0]; |
$izUrl = sprintf($iz['url_tpl'], 'CRS'); |
echo '<meta property="og:image" content="' . $izUrl . '" />'; |
} else { |
echo '<meta property="og:image" content="https://resources.tela-botanica.org/tb/img/256x256/carre_englobant.png" />' |
.'<meta property="og:image:type" content="image/png" />' |
.'<meta property="og:image:width" content="256" />' |
.'<meta property="og:image:height" content="256" />'; |
} |
?> |
<?php if (isset($items[0])) : ?> |
<meta property="og:image" content="<?php echo sprintf($items[0]['url_tpl'], 'CRS'); ?>" />'; |
<?php else : ?> |
<meta property="og:image" content="https://resources.tela-botanica.org/tb/img/256x256/carre_englobant.png" /> |
<meta property="og:image:type" content="image/png" /> |
<meta property="og:image:width" content="256" /> |
<meta property="og:image:height" content="256" /> |
<?php endif; ?> |
<meta property="og:locale" content="fr_FR" /> |
<!-- Spécial mobile --> |
44,7 → 40,9 |
<!-- Bootstrap CSS --> |
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous" /> |
<!-- Fontawesome --> |
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> |
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous" /> |
<!-- Leaflet --> |
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/> |
<!-- Feuilles de styles --> |
<link rel="stylesheet" type="text/css" href="<?php echo $url_css; ?>photo.css" media="screen" /> |
88,6 → 86,9 |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> |
<!-- Masonry --> |
<script src="<?php echo $url_js; ?>masonry.pkgd.js"></script> |
<!-- Leaflet --> |
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> |
<!-- Script WidgetPhoto --> |
<script type="text/Javascript" src="<?php echo $url_js; ?>WidgetPhotoCommun.js"></script> |
<script type="text/Javascript" src="<?php echo $url_js; ?>WidgetPhoto.js"></script> |
236,22 → 237,22 |
?> |
<?php endif; ?> |
<div class="cel-photo grid-item <?php echo $class_extra; ?>"> |
<a href="<?php echo sprintf($item['url_tpl'], 'O'); ?>" class="cel-img" title="<?php echo $item['titre']; ?> - Publiée le <?php echo $item['date']; ?> - GUID : <?php echo $item['guid']; ?>" rel="galerie-princ<?php echo $id; ?>"> |
<a href="<?php echo sprintf($item['url_tpl'], 'O'); ?>" class="cel-img" title="<?php echo $item['titre']; ?> - Publiée le <?php echo $item['date_redige']; ?> - GUID : <?php echo $item['id_photo_formate']; ?>" rel="galerie-princ<?php echo $id; ?>"> |
<img src="<?php echo sprintf($item['url_tpl'], $dimention_img); ?>" alt="<?php echo $item['titre']; ?>"> |
</a> |
<div id="cel-info-<?php echo $item['guid']; ?>" class="cel-infos"> |
<div id="cel-info-<?php echo $item['id_photo_formate']; ?>" class="cel-infos"> |
<strong> |
<?php if ($item['eflore_url'] != '#' && $item['eflore_url'] != '') : ?> |
<a class="cel-img-titre" href="<?php echo $item['eflore_url']; ?>" |
onclick="window.open(this.href);return false;" |
title="Cliquez pour accéder à la fiche eFlore"> |
<?php echo $item['infos']['nom_sci']; ?> |
<?php echo $item['obs']['nom_sel']; ?> |
</a><br /> |
par |
<a class="cel-img-contact" |
href="?mode=contact&nn=<?php echo urlencode($item['infos']['nn']); ?>&nom_sci=<?php echo urlencode($item['infos']['nom_sci']); ?>&date=<?php echo urlencode($item['infos']['date']); ?>&id_image=<?php echo $item['guid']; ?>&auteur=<?php echo $item['infos']['auteur']; ?>" |
href="?mode=contact&nn=<?php echo urlencode($item['obs']['nom_sel_nn']); ?>&nom_sci=<?php echo urlencode($item['obs']['nom_sel']); ?>&date=<?php echo urlencode($item['date']); ?>&id_image=<?php echo $item['id_photo_formate']; ?>&auteur=<?php echo $item['utilisateur']['nom_utilisateur']; ?>" |
title="Cliquez pour contacter l'auteur de la photo"> |
<?php echo $item['infos']['auteur']; ?> |
<?php echo $item['utilisateur']['nom_utilisateur']; ?> |
</a> |
<?php else : ?> |
<?php echo $item['titre']; ?> |
/trunk/widget/modules/photo/squelettes/js/WidgetPhotoContact.js |
---|
66,7 → 66,7 |
WidgetPhotoContact.prototype.envoyerCourriel = function() { |
const lthis = this; |
var donnees = new Array(); |
var donnees = []; |
if ( $( '#form-contact' ).valid() ) { |
var destinataireId = $( '#fc_destinataire_id' ).val(), |
/trunk/widget/modules/photo/squelettes/js/WidgetPhotoCommun.js |
---|
62,7 → 62,7 |
retour = ( '' !== valeur ); |
break; |
case 'number' : |
retour = ( NaN !== valeur ); |
retour = ( !isNaN(valeur) ); |
break; |
case 'object' : |
retour = ( null !== valeur && undefined !== valeur && !$.isEmptyObject( valeur ) ); |
/trunk/widget/modules/photo/squelettes/js/WidgetPhotoPopup.js |
---|
1,13 → 1,17 |
function WidgetPhotoPopup( proprietes ) { |
if( this.valOk( proprietes ) ) { |
this.urlWidget = proprietes.urlWidget; |
this.urls = proprietes.urls; |
this.infos_images = proprietes.infos_images; |
this.indexImage = proprietes.indexImage; |
this.urlImage = proprietes.urlImage; |
this.tailleMax = proprietes.tailleMax; |
this.popup_url = proprietes.popup_url; |
this.urlWidget = proprietes.urlWidget; |
this.urls = proprietes.urls; |
this.infos_images = proprietes.infos_images; |
this.indexImage = proprietes.indexImage; |
this.urlImage = proprietes.urlImage; |
this.tailleMax = proprietes.tailleMax; |
this.popupUrl = proprietes.popupUrl; |
this.urlBaseTelechargement = proprietes.urlBaseTelechargement; |
this.urlServiceRegenererMiniature = proprietes.urlServiceRegenererMiniature; |
} |
this.mettreAJourInfosImage(); |
} |
WidgetPhotoPopup.prototype = new WidgetPhotoCommun(); |
15,11 → 19,15 |
WidgetPhotoPopup.prototype.initTpl = function() { |
this.redimensionnerGalerie(); |
if( this.valOk( this.urlImage, false, 'null' ) ) { |
this.indexImage = this.urls.indexOf( this.urlImage ); |
$( '#info-img-galerie' ).find( '.active' ).removeClass( 'active' ); |
$( '#img-cadre-' + this.indexImage + ',#indicateur-img-' + this.indexImage ).addClass( 'active' ); |
this.afficherTitreImage(); |
this.mettreAJourPopup(); |
} |
this.redimentionnerModaleCarousel(); |
}; |
29,11 → 37,33 |
this.initEvtsDefilerImage(); |
this.initEvtsContact(); |
$( window ).on( 'resize', lthis.redimentionnerModaleCarousel.bind( lthis ) ); |
this.initEvtsFonstionsPhoto(); |
this.initEvtsFonctionsPhoto(); |
this.initEvtsRetourGalerieResponsive(); |
this.initEvtsTagsPF(); |
}; |
WidgetPhotoPopup.prototype.mettreAJourPopup = function() { |
this.mettreAJourInfosImage(); |
this.afficherTitreImage(); |
this.traiterMetas(); |
this.regenererMiniature(); |
this.fournirLienIdentiplante(); |
}; |
WidgetPhotoPopup.prototype.mettreAJourInfosImage = function() { |
this.item = this.infos_images[this.urls[this.indexImage]]; |
this.titreImage = this.item['titre']; |
this.lienEflore = this.item['lien']; |
this.idImage = this.item['id_photo']; |
this.urlThisImage = this.item['url_photo']+'.jpg'; |
this.obs = this.item['obs']; |
this.nn = '[nn' + this.obs['nom_sel_nn']+']'; |
this.urlIP = 'https://'+this.obs['url_ip']; |
this.auteur = this.item['utilisateur']['nom_utilisateur']; |
this.urlProfil = '/profil-par-id/'+this.item['utilisateur']['id_utilisateur']; |
this.date = this.item['date']; |
}; |
WidgetPhotoPopup.prototype.initEvtsDefilerImage = function() { |
const lthis = this; |
40,22 → 70,26 |
$( '#precedent, #suivant' ).on( 'click', function() { |
lthis.defilerImage( this.id ); |
}); |
$( '#print_content:not(saisir-tag)' ).on( 'keydown', function( event ) { |
var sens = ''; |
event = event || window.event; |
// event.keyCode déprécié, on tente d'abord event.key |
if ( 'key' in event ) { |
if( event.key === 'ArrowLeft') { // gauche |
sens = 'suivant'; |
} else if ( event.key === 'ArrowRight' ) { // droite |
sens = 'precedent'; |
const determinerSens = function( enventKey, left, right ) { |
switch ( enventKey ) { |
case left: |
return 'suivant'; |
case right: |
return 'precedent' |
default: |
break; |
} |
} else if( event.keyCode == 37 ) { // gauche |
sens = 'suivant'; |
} else if( event.keyCode == 39 ) { // droite |
sens = 'precedent'; |
return; |
} |
event = (event || window.event); |
// event.keyCode déprécié, on tente d'abord event.key |
let sens = ( 'key' in event ) ? determinerSens( event.key, 'ArrowLeft', 'ArrowRight' ) : determinerSens( event.keyCode, 37, 39 );; |
if ( lthis.valOk( sens ) ) { |
lthis.defilerImage( sens ); |
} |
71,7 → 105,7 |
}); |
}; |
WidgetPhotoPopup.prototype.initEvtsFonstionsPhoto = function() { |
WidgetPhotoPopup.prototype.initEvtsFonctionsPhoto = function() { |
const lthis = this; |
$( '#boutons-footer #bloc-fct a, #retour-metas' ).on( 'click', function( event ){ |
130,9 → 164,9 |
}); |
$( '#bloc-tags' ).on( 'keyup', '.custom-tag.actif', function( event ) { |
var supprimerTag = false; |
let supprimerTag = false; |
event = event || window.event; |
event = ( event || window.event ); |
// event.keyCode déprécié, on tente d'abord event.key |
if ( 'key' in event ) { |
supprimerTag = ( 'Delete' === event.key || 'Backspace' === event.key ); |
140,20 → 174,20 |
supprimerTag = ( 46 === event.keyCode || 8 === event.keyCode ); |
} |
if ( supprimerTag ) { |
// Supprimer un custom-tag |
// _OPTIONS |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles/38368 |
// _paramètres |
// L'id du tag à la fin de l'url |
// _DELETE |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles/38368 |
// _réponse: |
// "" |
// Mettre à jour les mots cles |
// _OPTIONS |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles?image=197938 |
// _GET |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles?image=197938 |
// Supprimer un custom-tag |
// _OPTIONS |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles/38368 |
// _paramètres |
// L'id du tag à la fin de l'url |
// _DELETE |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles/38368 |
// _réponse: |
// "" |
// Mettre à jour les mots cles |
// _OPTIONS |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles?image=197938 |
// _GET |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles?image=197938 |
$( this ).parent( '.custom-tag' ).remove(); |
} |
}); |
160,67 → 194,47 |
}; |
WidgetPhotoPopup.prototype.defilerImage = function( sens ) { |
if ( this.valOk( sens, true, 'suivant' ) ) { |
if ( 'suivant' === sens ) { |
this.indexImage++ ; |
if( this.indexImage >= this.urls.length ) { |
this.indexImage = 0; |
} |
} else if ( this.valOk( sens, true, 'precedent' ) ) { |
} else if ( 'precedent' === sens ) { |
this.indexImage--; |
if( this.indexImage <= 0 ) { |
this.indexImage = this.urls.length -1; |
} |
} |
this.afficherTitreImage(); |
// @TODO: Modifier l'attr content de 'meta[property=og:image]' et y mettre l'url de l'image |
this.mettreAJourPopup(); |
}; |
WidgetPhotoPopup.prototype.afficherTitreImage = function() { |
var item = this.infos_images[this.urls[this.indexImage]], |
titre = item['titre'], |
infos = this.decouperTitre( titre ), |
urlThisImage = $( '#illustration-' + this.indexImage ).attr( 'src' ); |
lienContact = |
this.urlWidget +'?mode=contact&nn=' + infos.nn + |
'&nom_sci=' + infos.nom_sci + |
'&date=' + infos.date + |
'&id_image=' + item['guid'] + |
'&auteur=' + infos.auteur; |
let lienContact = |
this.urlWidget +'?mode=contact&nn=' + this.nn + |
'&nom_sci=' + this.obs['nom_sel'] + |
'&date=' + this.date + |
'&localisation=' + this.obs['localisation'] + |
'&id_image=' + this.idImage + |
'&auteur=' + this.auteur; |
if ( this.valOk( this.popup_url ) ) { |
if (! this.popup_url.match( new RegExp( '/img:000' + item['guid'] ) ) ) { |
this.popup_url = this.actualiserPopupUrl( this.popup_url, urlThisImage ); |
if ( this.valOk( this.popupUrl ) ) { |
if (! this.popupUrl.match( new RegExp( 'img:' + this.idImage ) ) ) { |
this.popupUrl = this.actualiserPopupUrl( this.popupUrl, this.urlThisImage ); |
} |
lienContact += '&popup_url=' + encodeURIComponent( this.popup_url ); |
lienContact += '&popup_url=' + encodeURIComponent( this.popupUrl ); |
} |
titre = |
'<a href="' + item['lien'] + '">' + infos.nom_sci + '</a> '+ |
' par <a class="lien_contact" href="' + lienContact + '">' + infos.auteur + '</a> '+ |
' le ' + infos.date + ' '; |
$( '#bloc-infos-img' ).html( titre ); |
$( '#bloc-infos-img' ).html( |
'<a href="' + this.lienEflore + '">' + this.obs['nom_sel'] + '</a> '+ |
' par '+ |
'<a class="lien_contact" href="' + lienContact + '">' + this.auteur + '</a> '+ |
' le ' + this.date + ' - ' + this.obs['localisation'] |
); |
}; |
WidgetPhotoPopup.prototype.decouperTitre = function( titre ) { |
var tab_titre = titre.split( '[nn' ), |
nom_sci = tab_titre[0], |
tab_titre_suite = tab_titre[1].split( ' par ' ), |
nn = '[nn' + tab_titre_suite[0], |
tab_titre_fin = tab_titre_suite[1].split( ' le ' ), |
utilisateur = tab_titre_fin[0], |
date = tab_titre_fin[1], |
titre_decoupe = { |
'nom_sci' : nom_sci, |
'nn' : nn, |
'date' : date, |
'auteur' : utilisateur |
}; |
return titre_decoupe; |
}; |
WidgetPhotoPopup.prototype.actualiserPopupUrl = function( queryString, remplacement ) { |
const lthis = this; |
var queryStringParsee = queryString.substring(1).split('&'); |
let queryStringParsee = queryString.substring(1).split('&'); |
$.each( queryStringParsee, function( i, param ) { |
if( /url_image/.test( param ) ) { |
253,7 → 267,6 |
}; |
WidgetPhotoPopup.prototype.redimensionnerGalerie = function() { |
const lthis = this; |
var maxSize = ( $( window ).width() / $( window ).height() ) < 1 ? $( window ).width() : $( window ).height(); |
maxSize -= 30; |
278,11 → 291,7 |
$( '#bloc-' + voletAFermer ).addClass( 'hidden' ); |
$( '#bloc-' + voletAOuvrir ).removeClass( 'hidden' ); |
$( '#volet' ).scrollTop(0); |
if( 'meta' !== voletAOuvrir ) { |
$( '#retour-metas' ).removeClass( 'hidden' ); |
} else { |
$( '#retour-metas' ).addClass( 'hidden' ); |
} |
$( '#retour-metas' ).removeClass( 'hidden', 'meta' === voletAOuvrir ); |
} |
}; |
290,7 → 299,7 |
const lthis = this; |
$( '#saisir-tag' ).on( 'blur keyup', function( event ) { |
event = event || window.event; |
event = ( event || window.event ); |
var ajouterTag = ( 'blur' === event.type ); |
322,7 → 331,7 |
// _GET |
// https://api-test.tela-botanica.org/service:del:0.1/mots-cles?image=197938 |
$( '#tags-pf-supp' ).append( |
'<a id="' + nouveauTagAttr + '" class="btn tag custom-tag">' + |
'<a id="' + nouveauTagAttr + '" class="btn tag custom-tag actif">' + |
nouveauTag + ' <i class="fas fa-times-circle fermer"></i>' + |
'</a>' |
); |
332,3 → 341,280 |
} |
}); |
}; |
WidgetPhotoPopup.prototype.traiterMetas = function() { |
this.afficherMetas(); |
this.afficherPopupLocalisation(); |
this.afficherMetasPlus(); |
this.fournirLienTelechargement(); |
}; |
WidgetPhotoPopup.prototype.afficherMetas = function() { |
const lthis = this; |
const META_CONTENUS = { |
'nom' : '<a href="' + this.lienEflore + '" target="_blank">' + this.obs['nom_sel'] + '</a> ', |
'localisation' : this.obs['localisation'], |
'auteur' : this.auteur, |
'date-obs' : this.date, |
'commentaire' : this.obs['commentaire'], |
'certitude' : this.obs['certitude'], |
'fiabilite' : this.obs['fiabilite'], |
'num-photo' : this.idImage, |
'titre-original' : this.item['nom_original'], |
'date-photo' : this.formaterDate( this.item['date_photo'] ), |
'attribution-copy' : this.item['attribution'], |
'url-copy' : this.urlThisImage |
}; |
$.each( META_CONTENUS, function( attrId, contenu ) { |
let $metaContainer = $( '#bloc-meta #'+attrId ); |
if ( lthis.valOk( contenu ) ) { |
switch( attrId ) { |
case 'attribution-copy' : |
case 'url-copy' : |
$metaContainer.val( contenu ); |
lthis.copieAutoChamp( $metaContainer ); |
break; |
case 'nom' : |
$( '.contenu', $metaContainer ).html( contenu ); |
$( '.bouton', $metaContainer ).attr( 'href', lthis.lienEflore ); |
break; |
case 'auteur' : |
$( '.bouton', $metaContainer ).attr( 'href', lthis.urlProfil ); |
default: |
$( '.contenu', $metaContainer ).text( contenu ); |
break; |
} |
} |
}); |
}; |
WidgetPhotoPopup.prototype.copieAutoChamp = function($champACopier) { |
$champACopier.on( 'click', function() { |
$( this ).select(); |
document.execCommand( 'copy' ); |
$( this ).after( |
'<p class="copy-message alert-success" style="width: 100%; height:' + $( this ).outerHeight() + 'px; margin: 0; display:flex;">'+ |
'<span style="margin:auto; font-size:1rem;">Copié dans le presse papier</span>'+ |
'</p>' |
).addClass( 'hidden' ); |
setTimeout( function() { |
$( '.copy-message' ).remove(); |
$champACopier.removeClass( 'hidden' ); |
}, 1000 ); |
}); |
}; |
WidgetPhotoPopup.prototype.afficherMetasPlus = function() { |
const lthis = this; |
const META_LABELS = { |
'id_obs' : 'observation n°', |
'projet' : 'projet', |
'date_obs' : 'date d´observation', |
'nom_sel': 'nom scientifique', |
'nom_sel_nn' : 'nom scientifique n°', |
'nom_ret' : 'nom retenu', |
'nom_ret_nn' : 'nom retenu n°', |
'famille' : 'famille', |
'nom_referentiel' : 'réferentiel', |
'commentaire' : 'commentaire', |
'certitude' : 'certitude', |
'fiabilite' : 'fiabilite', |
'tags_obs' : 'tags de l´observation', |
'localisation' : 'localisation', |
'lieudit' : 'lieu dit', |
'station' : 'station', |
'milieu' : 'milieu', |
'latitude' : 'latitude', |
'longitude' : 'longitude', |
'altitude' : 'altitude', |
'localisation_precision': 'précision de la localisation', |
'code_insee' : 'code insee de la commune', |
'dept' : 'département', |
'pays' : 'pays', |
'est_ip_valide' : 'validée sur identiplante', |
'score_ip' : 'score identiplante', |
'url_ip' : 'url identiplante', |
'abondance' : 'abondance', |
'phenologie' : 'phénologie', |
'spontaneite' : 'spontaneite', |
'type_donnees' : 'type de donnees', |
'biblio' : 'bibliographie', |
'source' : 'source', |
'herbier' : 'herbier', |
'observateur' : 'observateur', |
'observateur_structure' : 'structure' |
}; |
const $contenuPlusMeta = $( '#contenu-meta-plus' ); |
let degres = '0'; |
this.rotationFleche( degres ); |
$.each( META_LABELS, function( cle, label ) { |
let idAttr = cle.replace( '_', '-' ), |
contenu = lthis.obs[cle]; |
if ( 0 <= $.inArray( cle, ['est_ip_valide', 'herbier'] ) && '0' === contenu ) { |
contenu = 'non'; |
} else if ( 'date_obs' === cle ) { |
contenu = lthis.formaterDate(contenu); |
} |
if ( lthis.valOk( contenu ) ) { |
$contenuPlusMeta.append( |
'<li id="' + idAttr + '-meta-plus" class="row">'+ |
'<div class="col-5 label">' + label.charAt( 0 ).toUpperCase() + label.slice( 1 ) + '</div>'+ |
'<div class="col-5 contenu">' + contenu + '</div>'+ |
'</li>' |
); |
} |
}); |
$contenuPlusMeta.hide(); |
$( '#plus-meta' ).off( 'click' ).on( 'click', function( event ) { |
event.preventDefault(); |
$contenuPlusMeta.toggle( 200, function() { |
degres = $contenuPlusMeta.is( ':visible' ) ? '180' : '0'; |
lthis.rotationFleche( degres ); |
}); |
}); |
}; |
WidgetPhotoPopup.prototype.rotationFleche = function( degres ) { |
$( '#plus-meta i' ).css({ |
'-webkit-transform' : 'rotate('+ degres +'deg)', |
'-moz-transform' : 'rotate('+ degres +'deg)', |
'-ms-transform' : 'rotate('+ degres +'deg)', |
'transform' : 'rotate('+ degres +'deg)' |
}); |
}; |
WidgetPhotoPopup.prototype.fournirLienTelechargement = function() { |
const lthis = this; |
$( '#formats' ).on( 'change', function() { |
let format = ( $( this ).val() || 'O' ), |
lienTelechargement = lthis.urlBaseTelechargement + lthis.idImage + '?methode=telecharger&format=' + format; |
$( '#telecharger' ).attr( 'href', lienTelechargement ); |
}); |
$( '#formats' ).trigger( 'change' ); |
}; |
WidgetPhotoPopup.prototype.afficherPopupLocalisation = function() { |
const lthis = this; |
$( '#localisation a.bouton' ).on( 'click', function( event ){ |
event.preventDefault(); |
$( this ).after( |
'<div id="localisation-map-container">'+ |
'<button id="map-close" type="button" class="bouton btn btn-sm btn-outline-secondary" aria-label="Close">'+ |
'<span aria-hidden="true">×</span>'+ |
'</button>'+ |
'<div id="localisation-map"></div>'+ |
'</div>' |
); |
let lat = lthis.obs['latitude'], |
lng = lthis.obs['longitude'], |
map = L.map( 'localisation-map', { |
zoomControl: true, |
dragging: false, |
scrollWheelZoom: 'center' |
} ).setView( [lat, lng], 12 ); |
map.markers = []; |
L.tileLayer( |
'https://osm.tela-botanica.org/tuiles/osmfr/{z}/{x}/{y}.png', |
{ |
attribution: 'Data © <a href="http://osm.org/copyright">OpenStreetMap</a>', |
maxZoom: 18 |
} |
).addTo( map ); |
map.addLayer( new L.FeatureGroup() ); |
let marker = new L.Marker( |
{ |
'lat': lat, |
'lng': lng |
}, |
{ |
draggable: false, |
} |
); |
map.addLayer( marker ); |
map.markers.push( marker ); |
$( '#map-close' ).on( 'click', function( event ){ |
$( '#localisation-map-container' ).remove(); |
}); |
}); |
$( '#fenetre-modal' ).on( 'click', function( event ) { |
if( |
!$( event.target ).closest( '#localisation-map-container' ).length |
&& !$( event.target ).closest( '#obs-localisation' ).length |
) { |
$( '#localisation-map-container' ).remove(); |
} |
}); |
}; |
WidgetPhotoPopup.prototype.regenererMiniature = function() { |
const lthis = this; |
$( '#regenerer-miniature' ).off( 'click' ).on( 'click', function( event ) { |
event.preventDefault(); |
let url = lthis.urlServiceRegenererMiniature + lthis.idImage; |
$.get( url ).fail( function() { |
console.log( 'a foiré :(' ); |
}); |
}); |
}; |
WidgetPhotoPopup.prototype.formaterDate = function( sqlDate ) { |
dateFormatee = sqlDate |
.substring( 0, 10 ) |
.split( '-' ) |
.reverse() |
.join('/'); |
return dateFormatee; |
}; |
WidgetPhotoPopup.prototype.fournirLienIdentiplante = function() { |
const lthis = this; |
$( '.signaler-erreur-obs' ).each( function() { |
$( this ).attr( 'href', lthis.urlIP ); |
}); |
}; |
// WidgetPhotoPopup.prototype.afficherTags = function() { |
// const lthis = this; |
// const TAGS_BASE = [ |
// 'port', |
// 'fleur', |
// 'fruit', |
// 'feuille', |
// 'ecorce', |
// 'rameau', |
// 'planche', |
// 'insecte' |
// ]; |
// }; |
/trunk/widget/modules/photo/Photo.php |
---|
14,16 → 14,34 |
* ===> vignette = [0-9]+,[0-9]+ [par défaut : 4,3] |
* Indique le nombre de vignette par ligne et le nombre de ligne. |
* |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @version $Id$ |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @version $Id$ |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
*/ |
class Photo extends WidgetCommun { |
const DS = DIRECTORY_SEPARATOR; |
const SERVICE_DEFAUT = 'photo'; |
const VIGNETTE_DEFAULT = '4,3'; |
const WS_IMG_LIST = 'celImage'; |
const IMAGE_FORMATS = [ |
'CRX2S' => '63px (Carrée, rognée)', |
'CRXS' => '100px (Carrée, rognée)', |
'CXS' => '100px (Carrée)', |
'CS' => '300px (Carrée)', |
'CRS' => '300px (Carrée, rognée)', |
'XS' => '150px', |
'S' => '400px', |
'M' => '600px', |
'L' => '800px', |
'CRL' => '600px (Carrée, rognée)', |
'XL' => '1024px', |
'X2L' => '1280px', |
'X3L' => '1600px', |
'O' => 'Format original (Taille inconnue)' |
]; |
private $flux_rss_url = null; |
private $eflore_url_tpl = null; |
44,6 → 62,7 |
} |
$this->eflore_url_tpl = $this->config['photo']['efloreUrlTpl']; |
$this->service_images_url = $this->config['photo']['celUrlImages']; |
$this->flux_rss_url = $this->config['photo']['fluxRssUrl']; |
$cache_activation = $this->config['photo.cache']['activation']; |
116,7 → 135,10 |
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/'); |
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/'); |
$widget['donnees']['max_photo'] = $_SESSION[$galerie_id]['max_photo']; |
$widget['donnees']['url_ws_regenerer_img'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_IMG_LIST) . '/regenerer-miniatures?ids-img='; |
$widget['donnees']['popup_url'] = isset( $_GET['popup_url'] ) ? $_GET['popup_url'] : null; |
$widget['donnees']['url_base_telechargement'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelImageFormat/'); |
$widget['donnees']['formats_description'] = self::IMAGE_FORMATS; |
$widget['squelette'] = 'popup' . $this->suffixeLangue; |
151,155 → 173,99 |
return $widget; |
} |
private function decouperTitre($titre) { |
if ('nl' === $this->suffixeLangue) { |
$dic = array(' door ', ' op '); |
} else { |
$dic = array(' par ', ' le '); |
} |
$tab_titre = explode('[nn', $titre); |
if (isset($tab_titre[1])) { |
$nom_sci = $tab_titre[0]; |
$tab_titre_suite = explode($dic[0], $tab_titre[1]); |
} else { |
$nom_sci = ''; |
$tab_titre_suite = explode($dic[0], $tab_titre[0]); |
} |
$nn = '[nn'.$tab_titre_suite[0]; |
$tab_titre_resuite = explode($dic[1], $tab_titre_suite[1]); |
$utilisateur = $tab_titre_resuite[0]; |
$tab_titre_fin = explode(' - ', $tab_titre_resuite[1]); |
$date = $tab_titre_fin[0]; |
$localite = (empty($tab_titre_fin[1]) ? '' : $tab_titre_fin[1]); |
$titre_decoupe = array('nom_sci' => $nom_sci, 'nn' => $nn, 'date' => $date, 'auteur' => $utilisateur, 'localite' => $localite); |
return $titre_decoupe; |
} |
private function executerPhoto() { |
session_start(); |
$_SESSION['urls'] = array(); |
$widget = null; |
extract($this->parametres); |
$vignette = (isset($vignette) && preg_match('/^[0-9]+,[0-9]+$/', $vignette)) ? $vignette : '4,3'; |
$hasTriedValueInConfig = false; |
while (!isset($vignette) || !preg_match('/^[0-9]+,[0-9]+$/', $vignette)) { |
$vignette = (!$hasTriedValueInConfig) ? $this->config['photo']['vignette'] : self::VIGNETTE_DEFAULT; |
$hasTriedValueInConfig = true; |
} |
$id = '-'.(isset($id) ? $id : '1'); |
$titre = isset($titre) ? htmlentities(rawurldecode($titre)) : ''; |
$icone_rss = (isset($_GET['rss']) && $_GET['rss'] != 1) ? false : true; |
$utilise_fancybox = (isset($_GET['mode_zoom']) && $_GET['mode_zoom'] != 'fancybox') ? false : true; |
list($colonne, $ligne) = explode(',', $vignette); |
$extra = (isset($extra) && $extra == 0) ? false : (!$this->config['photo']['extraActif'] ? false : ($colonne == 1 || $ligne == 1 ? false : true)); |
$this->flux_rss_url .= $this->traiterParametres(); |
$extra = (isset($extra) && $extra == 0) ? false : (!$this->config['photo']['extraActif'] ? false : ($colonne == 1 || $ligne == 1 ? false : true)); |
$parametresTraites = $this->traiterParametres(); |
$this->flux_rss_url .= $parametresTraites; |
$url = $this->service_images_url.(!empty($parametresTraites) ? $parametresTraites : '*'); |
$json = $this->getDao()->consulter($url); |
$xml = @file_get_contents($this->flux_rss_url); |
if ($xml !== false) { |
if ($xml) { |
try { |
$flux = new XmlFeedParser($xml); |
$widget['donnees']['id'] = $id; |
$widget['donnees']['titre'] = $titre; |
$widget['donnees']['flux_rss_url'] = $this->flux_rss_url; |
$widget['donnees']['url_widget'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'photo'); |
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/'); |
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/'); |
$widget['donnees']['colonne'] = $colonne; |
$widget['donnees']['extra_actif'] = $extra; |
$widget['donnees']['icone_rss'] = $icone_rss; |
$widget['donnees']['utilise_fancybox'] = $utilise_fancybox; |
$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod'); |
if (empty($json) || !strpos($json,'images') ) { |
$this->messages[] = "L'URI suivante est invalide : $this->service_images_url.\n". |
"Veuillez vérifier les paramêtres indiqués et la présence d'images associées."; |
$max_photo = $colonne * $ligne; |
if ( $extra && 2 == $colonne ) { |
$max_photo = $max_photo - 1; |
} elseif ( $extra && 2 < $colonne ) { |
$max_photo = $max_photo - 3; |
} |
$num = 0; |
$galerie_id = md5(http_build_query($_GET)); |
$widget['donnees']['galerie_id'] = $galerie_id; |
} else { |
$tableau = json_decode($json, true); |
foreach ($flux as $entree) { |
if ($num == $max_photo) { |
break; |
} |
if (empty($tableau['total']) || empty($tableau['images'])) { |
$this->messages[] = 'Aucune photo ne correspond à vos critères'; |
} else { |
$widget['donnees']['id'] = $id; |
$widget['donnees']['titre'] = $titre; |
// $widget['donnees']['service_images_url'] = $this->service_images_url; |
$widget['donnees']['flux_rss_url'] = $this->flux_rss_url; |
$widget['donnees']['url_widget'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'photo'); |
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/'); |
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/'); |
$widget['donnees']['colonne'] = $colonne; |
$widget['donnees']['extra_actif'] = $extra; |
$widget['donnees']['icone_rss'] = $icone_rss; |
$widget['donnees']['utilise_fancybox'] = $utilise_fancybox; |
$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod'); |
$item = array(); |
// Formatage date |
$date = $entree->updated ? $entree->updated : null; |
$date = $entree->pubDate ? $entree->pubDate : $date; |
$max_photo = $colonne * $ligne; |
if ( $extra && 2 == $colonne ) { |
$max_photo = $max_photo - 1; |
} elseif ( $extra && 2 < $colonne ) { |
$max_photo = $max_photo - 3; |
} |
$num = 0; |
$galerie_id = md5(http_build_query($_GET)); |
$widget['donnees']['galerie_id'] = $galerie_id; |
$item['date'] = strftime('%A %d %B %Y', $date); |
$item['lien'] = $entree->link; |
$item['url_tpl'] = preg_replace('/(XS|[SML]|X(?:[23]|)L|CR(?:|X2)S|C(?:|X)S)\.jpg$/', '%s.jpg', $entree->guid); |
// Formatage titre |
$item['titre'] = str_replace('"', '', $entree->title); |
$item['infos'] = $this->decouperTitre($item['titre']); |
$item['nn'] = ''; |
$item['eflore_url'] = '#'; |
foreach ($tableau['images'] as $image) { |
if ($num == $max_photo) { |
break; |
} |
$item = $image; |
// Formatage date |
$item['date_photo'] = $image['date_photo'] ?? $image['obs']['date_obs']; |
$item['date_redige'] = strftime('%A %d %B %Y', $item['date_photo']); |
$item['date'] = date_format(date_create($item['date_photo']),"d/m/Y"); |
$item['lien'] = sprintf($this->eflore_url_tpl, $image['obs']['nom_referentiel'], $image['obs']['nom_sel_nn']); |
$item['eflore_url'] = isset($item['nn']) ? $item['lien'] : '#'; |
$item['url_tpl'] = preg_replace('/(O|XS|[SML]|X(?:[23]|)L|CR(?:|X2)S|C(?:|X)S)$/', '%s.jpg', $image['url_photo']); |
// Formatage titre |
$item['titre'] = $image['obs']['nom_sel'].' [nn'.$image['obs']['nom_sel_nn'].'] par '.$image['utilisateur']['nom_utilisateur'].' le '.date_format(date_create($image['obs']['date_obs']),"d/m/Y").' - '.$image['obs']['localisation']; |
$item['id_photo_formate'] = sprintf('%09d', $image['id_photo']); |
// Ajout aux items et si première photo à extra |
if ($num == 0) { |
$widget['donnees']['extra'] = $item; |
if (preg_match('/\[nn([0-9]+)\]/', $entree->title, $match)) { |
$item['nn'] = $match[1]; |
$item['eflore_url'] = $item['lien'] ; |
} |
// Récupération du GUID - aaaaah c'est cracra si on change la config yatoukipett !! Satan is in this code !!! |
if (preg_match($this->config['photo']['motif_guid'], $entree->guid, $match)) { |
$item['guid'] = (int) $match[1]; |
} else { |
$item['guid'] = $entree->guid; |
} |
// Ajout aux items et si première photo à extra |
if ($num == 0) { |
$widget['donnees']['extra'] = $item; |
} |
$widget['donnees']['items'][$num++] = $item; |
//TODO: voir si l'on ne peut pas faire mieux |
$url_galerie_popup = sprintf($item['url_tpl'],'O'); |
$image_size = getimagesize($url_galerie_popup); |
$_SESSION[$galerie_id]['urls'][] = $url_galerie_popup; |
$_SESSION[$galerie_id]['max_photo'] = $max_photo; |
$_SESSION[$galerie_id]['infos_images'][$url_galerie_popup] = array( |
'titre' => $item['titre'], |
'date' => $item['date'], |
'guid' => $item['guid'], |
'lien' => $item['lien'], |
'width' => $image_size[0], |
'height' => $image_size[1] |
); |
} |
$widget['squelette'] = 'photo'; |
} catch (XmlFeedParserException $e) { |
trigger_error('Flux invalide : '.$e->getMessage(), E_USER_WARNING); |
$widget['donnees']['items'][$num++] = $item; |
$url_galerie_popup = sprintf($item['url_tpl'],'O'); |
$image_size = getimagesize($url_galerie_popup); |
$item['width'] = $image_size[0]; |
$item['height'] = $image_size[1]; |
$_SESSION[$galerie_id]['urls'][] = $url_galerie_popup; |
$_SESSION[$galerie_id]['max_photo'] = $max_photo; |
$_SESSION[$galerie_id]['infos_images'][$url_galerie_popup] = $item; |
} |
} else { |
// si on arrive ici c'est qu'il n'y a aucune image correspondant |
// à la requête, mais il n'y a rien d'invalide là-dedans |
//$this->messages[] = "Fichier xml invalide."; |
$widget['squelette'] = 'photo'; |
} |
} else { |
$this->messages[] = "L'URI suivante est invalide : $this->flux_rss_url.\n". |
"Veuillez vérifier les paramêtres indiqués et la présence d'images associées."; |
} |
return $widget; |
327,4 → 293,4 |
return $parametres_flux; |
} |
} |
?> |
?> |