/trunk/widget/modules/saisie2/squelettes/saisie.tpl.html |
---|
17,9 → 17,9 |
<!-- OpenGraph pour Facebook, Pinterest, Google+ --> |
<meta property="og:type" content="website" /> |
<meta property="og:title" content="Gestion des widgets de saisie du CeL" /> |
<meta property="og:title" content="Widgets de saisie du CeL" /> |
<meta property="og:site_name" content="Tela Botanica" /> |
<meta property="og:description" content="Gestion des widgets de saisie du Carnet en Ligne" /> |
<meta property="og:description" content="Widgets de saisie du Carnet en Ligne" /> |
<meta property="og:image" content="http://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" /> |
30,9 → 30,7 |
<link rel="shortcut icon" type="image/x-icon" href="http://resources.tela-botanica.org/tb/img/16x16/favicon.ico" /> |
<!-- Jquery --> |
<!-- Google Map v3 --> |
<script type="text/javascript" src="http://maps.google.com/maps/api/js?language=fr&region=FR"></script> |
<!-- Jquery --> |
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.1.js"></script> |
<!-- Jquery UI : nécessaire pour le minicalendrier et l'auto-complétion --> |
<script type="text/javascript" src="http://resources.tela-botanica.org/jquery/jquery-ui/1.11.0/js/jquery-ui.min.js"></script> |
48,6 → 46,7 |
<script type="text/javascript" src="http://resources.tela-botanica.org/bootstrap/2.3.2/js/bootstrap.min.js"></script> |
<script type="text/javascript" src="<?=$url_base?>modules/saisie2/squelettes/js/WidgetSaisie.js"></script> |
<script type="text/javascript" src="<?=$url_base?>modules/saisie2/squelettes/js/auth.js"></script> |
<script type="text/javascript"> |
//<![CDATA[ |
$(document).ready(function() { |
116,6 → 115,8 |
<?php if($prod): ?> |
<?php include "analytics.html"; ?> |
<?php endif; ?> |
<link rel="icon" type="image/x-icon" href="favicon.ico"> |
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> |
</head> |
<body> |
143,21 → 144,14 |
<h3><?= $aide['titre']; ?></h3> |
<div id="aide-txt" class="hiden-sm-down"> |
<p> |
Cet outil vous permet de partager simplement vos observations avec |
le <a target="_blank" href="http://www.tela-botanica.org/site:accueil">réseau Tela Botanica</a> |
(<a target="_blank" href="http://www.tela-botanica.org/page:licence">licence CC-BY-SA</a>). |
Identifiez-vous bien pour ensuite retrouver et gérer vos données dans votre |
<a target="_blank" href="http://www.tela-botanica.org/appli:cel"> Carnet en ligne</a>. |
Créez jusqu'à 10 observations (avec 10Mo max d'images) puis partagez-les avec le bouton 'transmettre'. |
Elles apparaissent immédiatement sur les |
<a target="_blank" href="http://www.tela-botanica.org/site:botanique">cartes et galeries photos </a> du site. |
<?= $aide['description']; ?> |
</p> |
<p class="discretion"> |
Pour toute question ou remarque, |
<?= $aide['contact']; ?> |
<a href="<?= $url_remarques ?>?service=cel&pageSource=<?php echo urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); ?>" |
target="_blank" |
onclick="javascript:window.open(this.getAttribute('href'), 'Tela Botanica - Remarques', config='height=700, width=640, scrollbars=yes, resizable=yes'); return false;"> |
contactez-nous</a> |
<?= $aide['contact2']; ?></a> |
</p> |
</div> |
</div> |
165,7 → 159,37 |
</div> |
<div id="formulaire"> |
<form id="form-observateur" role="form" autocomplete="on"> |
<h2><?= $observateur['titre']; ?></h2> |
<h2><?= $observateur['titre']; ?> |
<!--la partie tb-navigation vient du widget stats http://svn.tela-botanica.net/websvn/filedetails.php?repname=eFlore%2FApplications.cel&path=%2Ftrunk%2Fwidget%2Fmodules%2Fstats%2Fsquelettes%2Fstats_utilisateur.tpl.html |
la partie contenu-souce vient de http://svn.tela-botanica.net/websvn/filedetails.php?repname=Applications.reseau&path=%2Ftrunk%2Fwidget%2Fmodules%2Fnavigation%2Fsquelettes%2Fbootstrap3.tpl.php |
le javascript auth.js vient de http://svn.tela-botanica.net/websvn/filedetails.php?repname=Applications.reseau&path=%2Ftrunk%2Fresources%2Fjs%2Fnavigation.js |
de l'aide dans la partie Intégration dans l'interface (applications AJAX) de https://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=MemoIntegrationSSO |
<div id="tb-navigation" data-courant="widget-cel-stats" data-squelette="bootstrap3" data-mode="prod"> |
<form class="navbar-form navbar-left"> |
<?php if ($utilisateur_authentifie): ?> |
<button class="btn btn-default" disabled><?=$utilisateur?></button> |
<a id="mode-stats" class="btn btn-success" href="?mode=defaut" data-mode-courant="utilisateur">Statistiques globales</a> |
<?php else: ?> |
<a id="mode-stats" class="btn btn-success" href="?mode=utilisateur" data-mode-courant="defaut">Statistiques personnelles</a> |
<?php endif; ?> |
</form> |
</div> |
<div id="contenu-source"> |
<!-- ici le contenu du div #tb-navigation de la page appelante --> |
<!--</div>--> |
<ul class="nav navbar-nav navbar-right"> |
<li id="bouton-connexion" class="dropdown"> |
<a href="<?= $authTpl; ?>">Connexion</a> |
</li> |
<li class="dropdown" id="utilisateur-connecte" style="display: none;"> |
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span id="nom-complet"></span> <b class="caret"></b></a> |
<ul class="dropdown-menu"> |
<li id="profil-utilisateur"><a href="http://www.tela-botanica.org/inscription">Mon profil</a></li> |
<li id="deconnexion"><a href="http://www.tela-botanica.org/widget:reseau:auth?action=deconnexion&origine=">Déconnexion</a></li> |
</ul> |
</li> |
</ul> |
</h2> |
<div id="zone-courriel" class="row align-items-center"> |
<div class="col-md-6 form-inline"> |
<label for="courriel" class="col-sm-3" title="<?= $observateur['courriel-title']; ?>"> |
209,14 → 233,21 |
<h2><?= $observation['titre']; ?></h2> |
<div id="zone-observation" class="row align-items-center"> |
<div class="col-md-6 form-inline"> |
<label for="courriel" class="col-sm-3" title="<?= $observateur['courriel-title']; ?>"> |
<label for="geolocalisation" class="col-sm-3" title="<?= $observateur['courriel-title']; ?>"> |
<strong class="obligatoire">* </strong> |
<?= $observation['geolocalisation']; ?> |
</label> |
<div class="col-sm-8 mb-2 input-group"> |
<span class="input-group-addon hidden-xs-down"><span class="fa fa-envelope"></span></span> |
<input id="courriel" name="courriel" class="form-control" type="email" title="<?= $observateur['courriel-title']; ?> "/> |
<input id="id_utilisateur" name="id_utilisateur" type="hidden"/> |
<input id="geolocalisation" name="geolocalisation" type="hidden"/> |
<!-- code à décommenter pour avoir un aperçu de la carte qui fonctionne sous chrome, |
à remplacer quand Stéphane aura fait une release sur https://github.com/steph-del/tb-geoloc-lib/releases --> |
<!-- <app-root></app-root> |
<script type="text/javascript" src="modules/saisie2/squelettes/js/runtime.js"></script> |
<script type="text/javascript" src="modules/saisie2/squelettes/js/polyfills.js"></script> |
<script type="text/javascript" src="modules/saisie2/squelettes/js/styles.js"></script> |
<script type="text/javascript" src="modules/saisie2/squelettes/js/vendor.js"></script> |
<script type="text/javascript" src="modules/saisie2/squelettes/js/main.js"></script> --> |
</div> |
<label for="milieu" class="col-sm-3"> |
<?= $observation['milieu']; ?> |
/trunk/widget/modules/saisie2/squelettes/js/auth.js |
---|
New file |
0,0 → 1,123 |
// configuration |
var urlRacine = 'https://www.tela-botanica.org', |
config = { |
prod: { |
urlWidgetNavigation : urlRacine + '/widget:cel:saisie2', |
urlBaseAuth : 'https://www.tela-botanica.org/service:annuaire:auth' |
}, |
test: { |
urlWidgetNavigation : urlRacine + '/widget-test:cel:saisie2', |
urlBaseAuth : 'https://www.tela-botanica.org/service:annuaire-test:auth' |
}, |
local: { |
urlWidgetNavigation : 'https://localhost/widget:cel:saisie2', |
urlBaseAuth : 'https://localhost/service:annuaire:auth' |
} |
} |
/** |
* Charge la barre de navigation depuis le widget:reseau:navigation dans un <div id="tb-navigation"> , s'il existe |
* dans la page appelante. |
* |
* Nécessite jQuery |
* |
* Utilisation : |
* - prévoir un <div id="tb-navigation"> dans la page, qui accueillera la barre de navigation. |
* - si ce <div> contient déjà quelque chose, son contenu sera reporté à la place de la zone ayant l'id "contenu-source" |
* de la barre de navigation (si une telle zone existe) |
* - si ce <div> contient un attribut "data-courant" et si la valeur de cet attribut correspond à l'id d'un des éléments |
* de navigation, alors cet élément aura la classe "active" (pour localiser la page courante dans les menus) |
* - si ce <div> contient un attribut "data-squelette", alors le widget de navigation sera appelé avec le paramètre |
* "?squelette=contenu-de-data-squelette"; se reporter à la documentation du widget:reseau:navigation |
*/ |
$(document).ready(function() { |
var div = $('#tb-navigation'); |
if (div) { |
var squelette = div.data('squelette'), |
courant = div.data('courant'), |
mode = div.data('mode') || 'prod', |
contenu = div.html(); |
// chargement de la barre |
var urlBarreNavigation = config[mode]['urlWidgetNavigation']; |
if (squelette) { |
urlBarreNavigation += '?squelette=' + squelette; |
} |
htmlBarre = $.ajax({ |
url: urlBarreNavigation, |
type: 'get', |
success: function(data) { |
// remplacement de la zone contenu-source |
var zoneSource = div.find('#contenu-source'); |
if (zoneSource) { |
zoneSource.replaceWith(contenu); |
// Chargement de sinformations de connexion SSO |
var urlBaseAuth = config[mode]['urlBaseAuth']; |
chargerStatutSSO(urlBaseAuth); |
} |
}, |
error: function() { |
div.html('Erreur: impossible de charger la barre de navigation'); |
} |
}); |
} |
}); |
/** |
* Modifie les liens des boutons de connexion / déconnexion SSO pour prendre ne compte |
* l'adresse exacte de la page d'origine (si on fait ça en PHP, on obtient l'URL du |
* widget de barre de navigation et pas de la page appelante) |
*/ |
function definirPageOrigineDansLiens() { |
var page = window.location.href; |
$('#bouton-connexion a').attr('href', $('#bouton-connexion a').attr('href') + page); |
$('#deconnexion a').attr('href', $('#deconnexion a').attr('href') + page); |
} |
/** |
* Interroge le SSO pour connaître le statut de l'utilisateur, et change le menu |
* à droite de la barre en fonction |
*/ |
function chargerStatutSSO(urlBaseAuth) { |
var urlAuth = urlBaseAuth + '/identite'; |
$.ajax({ |
url: urlAuth, |
type: "GET", |
dataType: 'json', |
xhrFields: { |
withCredentials: true |
} |
}).done(function(data) { |
// connecté |
definirUtilisateur(data.token); |
}); |
} |
function definirUtilisateur(jeton) { |
var nomComplet = ''; |
if (jeton != undefined) { |
// décodage jeton |
var jetonDecode = decoderJeton(jeton); |
nomComplet = jetonDecode.intitule; |
} |
// affichage |
$('#bouton-connexion').hide(); |
$('#utilisateur-connecte').show(); |
$('#nom-complet').html(nomComplet); |
} |
/** |
* Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE |
* JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple |
* Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/ |
* ou ceci : https://code.google.com/p/crypto-js |
*/ |
function decoderJeton(jeton) { |
parts = jeton.split('.'); |
payload = parts[1]; |
payload = atob(payload); |
payload = JSON.parse(payload, true); |
return payload; |
} |
/trunk/widget/modules/saisie2/i18n/fr.ini |
---|
3,8 → 3,18 |
[Aide] |
titre = "Aide" |
description="" |
description="Cet outil vous permet de partager simplement vos observations avec |
le <a target=\"_blank\" href=\"https://www.tela-botanica.org/\">réseau Tela Botanica</a> |
(<a target=\"_blank\" href=\"https://www.tela-botanica.org/page:licence\">licence CC-BY-SA</a>). |
Identifiez-vous bien pour ensuite retrouver et gérer vos données dans votre |
<a target=\"_blank\" href=\"https://www.tela-botanica.org/appli:cel\"> Carnet en ligne</a>. |
Créez jusqu'à 10 observations (avec 10Mo max d'images) puis partagez-les avec le bouton 'transmettre'. |
Elles apparaissent immédiatement sur les |
<a target=\"_blank\" href=\"https://www.tela-botanica.org/flore/france-metropolitaine/\"> |
cartes et galeries photos </a> du site." |
bouton="Désactiver l'aide" |
contact="Pour toute question ou remarque," |
contact2="contactez-nous." |
[Observateur] |
titre = "Observateur" |
/trunk/widget/modules/saisie2/i18n/en.ini |
---|
5,6 → 5,8 |
titre = "Help" |
description="" |
bouton="Inactive help" |
contact="For any questions," |
contact2="contact us." |
[Observateur] |
titre = "Observer" |
/trunk/widget/modules/saisie2/Saisie2.php |
---|
92,6 → 92,7 |
$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/'); |
$retour['donnees']['authTpl'] = $this->config['manager']['authTpl'].'?projet='.$this->parametres['projet'].'&langue='.$this->parametres['langue']; |
$retour['donnees']['mode'] = $mode; |
$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$retour['squelette'].'.tpl.html'; |
$contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']); |
142,39 → 143,9 |
/* Recherche si un projet a des champs de saisie supplémentaire */ |
private function rechercherChampsSupp() { |
$retour = array(); |
$url = $this->config['manager']['celChpSupTpl'].'groupes?groupe='.$this->parametres['projet'].'&langue='.$this->parametres['langue']; |
$json = $this->getDao()->consulter($url); |
$tableau = (array) json_decode($json, true); |
if ($tableau != false) { |
foreach ($tableau[0]['champs'] as $champ) { |
switch ($champ['type']) { |
case "select" : |
if ($champ['valeur'] != "") { |
$valeurs = split(";", $champ['valeur']); |
$html = '<label for="'.$champ['cle'].'" class="col-sm-3" >'.$champ['label'].'</label>'. |
'<div class="col-sm-8 input-group" >'. |
'<select class="form-control obs-chp-etendu" id="'.$champ['cle'].'"></div>'; |
foreach ( $valeurs as $valeur) { |
$html .= '<option>'.$valeur.'</option>'; |
} |
$html .= "</select>"; |
$retour[] = $html; |
} |
break; |
case "text" : |
$valeurs = split(";", $champ['valeur']); |
$html = '<label for="'.$champ['cle'].'" class="col-sm-3" >'.$champ['label'].'</label>'. |
'<div class="input-group col-sm-8">'. |
'<input id="'.$champ['cle'].'" name="'.$champ['cle'].'" class="form-control" type="text"/> |
</div>'; |
$retour[] = $html; |
break; |
default : |
//$this->verifierChampsCachés(); |
break; |
} |
} |
} |
$url = $this->config['manager']['celChpSupTpl'].'?projet='.$this->parametres['projet'].'&langue='.$this->parametres['langue']; |
$json = $this->getDao()->consulter($url); |
$retour = (array) json_decode($json, true); |
return $retour; |
} |
/trunk/widget/modules/saisie2/config.defaut.ini |
---|
3,4 → 3,6 |
autoload = "bibliotheque/;bibliotheque/xml_feed_parser/1.0.4/;bibliotheque/xml_feed_parser/1.0.4/parsers/" |
; Squelette d'url pour accéder à la fiche eFlore |
celUrlTpl = "http://localhost/service:cel:CelWidgetManager/Widget" |
celChpSupTpl = "http://localhost/service:cel:CelWidgetManager/ChampsEtendus" |
languesUrl = "http://localhost/service:eflore:0.1/iso-639-1/langues" |
authTpl = "http://www.tela-botanica.org/widget:reseau:auth?origine=http://localhost/cel/widget/saisie2" |