/trunk/widget/Widget.php |
---|
8,7 → 8,7 |
* Les widget sont dans des dossiers en minuscule correspondant au nom de la classe du widget. |
* Exemple : /widget/carto avec la classe Carto.php dans le dossier carto. |
* |
* |
* |
* @author jpm |
* |
*/ |
19,10 → 19,10 |
/** Le nom du widget demandé. */ |
private $widget = null; |
/** Les chemins où l'autoload doit chercher des classes. */ |
private static $autoload_chemins = array(); |
/** Les paramètres de l'url $_GET nettoyés. */ |
private $parametres = null; |
34,17 → 34,17 |
public function __construct($fichier_ini = 'widget.ini.php') { |
// Chargement de la configuration |
self::$config = parse_ini_file($fichier_ini, TRUE); |
// Paramêtres de config dynamiques |
self::$config['chemins']['baseURLAbsoluDyn'] = 'http://'.$_SERVER['SERVER_NAME'].self::$config['chemins']['baseURL'].'%s'; |
// Gestion de la mémoire maximum allouée aux services |
ini_set('memory_limit', self::$config['parametres']['limiteMemoire']); |
// Réglages de PHP |
setlocale(LC_ALL, self::$config['parametres']['locale']); |
date_default_timezone_set(self::$config['parametres']['fuseauHoraire']); |
// Gestion des erreurs |
error_reporting(self::$config['parametres']['erreurNiveau']); |
52,19 → 52,15 |
$url_morceaux = $this->parserUrl(); |
if (isset($url_morceaux[0])) { |
$this->widget = $url_morceaux[0]; |
// hack car chez moi (mathias) je me retrouve avec $url_morceaux[0] = "delnomduwidget", pourtant j'ai le même .htaccess... |
if (strpos($this->widget, ":") !== false) { |
$this->widget = substr($this->widget, strpos($this->widget, ":") + 1); |
} |
self::$config['chemins']['widgetCourantDossier'] = self::$config['chemins']['widgetsDossier'].strtolower($this->widget).DIRECTORY_SEPARATOR; |
$this->chargerWidgetConfig(); |
} |
// Chargement des chemins pour l'autoload |
$this->chargerCheminAutoload(); |
// Enregistrement de la méthode gérant l'autoload des classes |
spl_autoload_register(array('Widget', 'chargerClasse')); |
// Nettoyage du $_GET (sécurité) |
$this->collecterParametres(); |
} else { |
72,7 → 68,7 |
trigger_error($e, E_USER_ERROR); |
} |
} |
private function parserUrl() { |
if (strlen($_SERVER['QUERY_STRING']) == 0) { |
$len = strlen($_SERVER['REQUEST_URI']); |
83,7 → 79,7 |
$url_morceaux = explode('/', $url); |
return $url_morceaux; |
} |
private function collecterParametres() { |
if (isset($_GET) && $_GET != '') { |
$this->nettoyerGet(); |
90,19 → 86,19 |
$this->parametres = $_GET; |
} |
} |
private function nettoyerGet() { |
foreach ($_GET as $cle => $valeur) { |
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';'); |
$verifier = array('NULL', "\n", "\r", "\\", '"', "\x00", "\x1a", ';'); |
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur)); |
} |
} |
private function chargerCheminAutoload() { |
$chemins_communs = explode(';', self::$config['chemins']['autoload']); |
$chemins_communs = array_map('trim', $chemins_communs); |
array_unshift($chemins_communs, ''); |
$chemins_widget = array(); |
if (isset(self::$config[$this->widget]['autoload'])) { |
$chemins_widget = explode(';', self::$config[$this->widget]['autoload']); |
110,10 → 106,10 |
$chemins_widget[$cle] = self::$config['chemins']['widgetCourantDossier'].trim($chemin); |
} |
} |
self::$autoload_chemins = array_merge($chemins_communs, $chemins_widget); |
} |
/** |
* La méthode chargerClasse() charge dynamiquement les classes trouvées dans le code. |
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code. |
132,7 → 128,8 |
} |
} |
} |
/** |
* Execute le widget. |
*/ |
147,11 → 144,9 |
$widget->executer(); |
} |
} |
} else { |
echo "pas de module précisé"; |
} |
} |
/** |
* Charge le fichier de config spécifique du wiget et fusionne la config avec celle partagés par l'ensemble des widgets. |
*/ |
162,5 → 157,4 |
self::$config = array_merge(self::$config, $widget_config); |
} |
} |
} |
?> |
} |
/trunk/widget/index.php |
---|
1,5 → 1,4 |
<?php |
require 'Widget.php'; |
$widget = new Widget(); |
$widget->executer(); |
?> |
$widget->executer(); |
/trunk/widget/widget.ini.defaut.php |
---|
23,7 → 23,7 |
; Dossier contenant les fichiers des bibliothèques tierces |
bibliothequeDossier = "bibliotheque/" |
; Base de l'url servant à appeler les widgets |
baseURL = "/widget/" |
baseURL = "/widget:del:" |
; URL de base absolue des Widgets du CEL construit dynamiquement dans le fichier WidgetCommun.php |
baseURLAbsoluDyn = "" |
; URL des services web du CEL sous forme de template à utiliser avec sprintf |
/trunk/widget/modules/vote/config.defaut.ini |
---|
1,5 → 1,24 |
[vote] |
; URL de base des services web de DEL |
baseURLServicesDelTpl = "http://localhost/del/services/0.1/" |
; URL de base des services web de DEL (avec le / final) |
baseURLServicesDelTpl = "http://api.tela-botanica.org/service:del:0.1/" |
; Squelette d'Url permettant d'afficher une image du CEL (remplace %s par l'id de l'image sans underscore) |
celImgUrlTpl = "http://api.tela-botanica.org/img:%s.jpg" |
celImgUrlTpl = "http://api.tela-botanica.org/img:%s.jpg" |
; Mapping entre les paramètres d'appel de ce widget et les paramètres d'appel du ws «observations» de DEL |
mapping_masque = " |
filtre = masque, |
famille = masque.famille, |
genre = masque.genre, |
referentiel = masque.referentiel, |
ns = masque.ns, |
nn = masque.nn, |
auteur = masque.auteur, |
date-obs = masque.date, |
commune = masque.commune, |
dept = masque.departement, |
tag-cel = masque.tag_cel, |
sp = masque.espece, |
depart = navigation.depart, |
limite = navigation.limite, |
tri = tri, |
ordre = ordre, |
type = masque.type" |
/trunk/widget/modules/vote/bibliotheque/Cache.php |
---|
1,10 → 1,10 |
<?php |
class Cache { |
private $actif = null; |
private $dossier_stockage = null; |
private $duree_de_vie = null; |
public function __construct($dossier_stockage = null, $duree_de_vie = null, $activation = true) { |
$this->actif = ($activation) ? true : false; |
if ($this->actif) { |
18,10 → 18,10 |
} |
} |
} |
public function charger($id) { |
$contenu = false; |
if ($this->actif) { |
if ($this->actif) { |
$chemin_fichier_cache = $this->dossier_stockage.DIRECTORY_SEPARATOR.$id.'.txt'; |
if (file_exists($chemin_fichier_cache ) && (time() - @filemtime($chemin_fichier_cache) < $this->duree_de_vie)) { |
$contenu = file_get_contents($chemin_fichier_cache); |
29,11 → 29,11 |
} |
return $contenu; |
} |
public function sauver($id, $contenu) { |
if ($this->actif) { |
$chemin_fichier_cache = $this->dossier_stockage.DIRECTORY_SEPARATOR.$id.'.txt'; |
if (!file_exists($chemin_fichier_cache) || (time() - @filemtime($chemin_fichier_cache) > $this->duree_de_vie)) { |
$fh = fopen($chemin_fichier_cache,'w+'); |
if ($fh) { |
43,7 → 43,7 |
} |
} |
} |
/** |
* Détermine le dossier système temporaire et détecte si nous y avons accès en lecture et écriture. |
* |
68,7 → 68,7 |
} |
} |
} |
if ( ! $dossier_tmp) { |
$dossier_televersement_tmp = ini_get('upload_tmp_dir'); |
if ($dossier_televersement_tmp) { |
78,7 → 78,7 |
} |
} |
} |
if ( ! $dossier_tmp) { |
if (function_exists('sys_get_temp_dir')) { |
$dossier = sys_get_temp_dir(); |
87,7 → 87,7 |
} |
} |
} |
if ( ! $dossier_tmp) { |
// Tentative de création d'un fichier temporaire |
$fichier_tmp = tempnam(md5(uniqid(rand(), TRUE)), ''); |
99,18 → 99,18 |
} |
} |
} |
if ( ! $dossier_tmp && self::etreAccessibleEnLectureEtEcriture('/tmp')) { |
$dossier_tmp = '/tmp'; |
} |
if ( ! $dossier_tmp && self::etreAccessibleEnLectureEtEcriture('\\temp')) { |
$dossier_tmp = '\\temp'; |
} |
return $dossier_tmp; |
} |
/** |
* Vérifie si le fichier ou dossier est accessible en lecture et écriture. |
* |
124,5 → 124,4 |
} |
return $accessible; |
} |
} |
?> |
} |
/trunk/widget/modules/vote/squelettes/vote.tpl.html |
---|
2,12 → 2,12 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Votez !</title> |
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> |
<meta http-equiv="Content-style-type" content="text/css" /> |
<meta http-equiv="Content-script-type" content="text/javascript" /> |
<meta http-equiv="Content-language" content="fr" /> |
<meta name="revisit-after" content="15 days" /> |
<meta name="robots" content="index,follow" /> |
<meta name="author" content="Delphine Cauquil, Aurélien Peronnet" /> |
22,7 → 22,7 |
<!-- Feuilles de styles --> |
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /> |
<link rel="stylesheet" type="text/css" href="<?=$url_css?>vote.css" media="screen" /> |
<!-- Javascript : bibliothèques --> |
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> |
<script type="text/Javascript"> |
37,7 → 37,7 |
<body> |
<!-- WIDGET:DEL:VOTE - DEBUT --> |
<div data-role="page"> |
<!-- Variables globales à réinjecter à chaque changement de page |
<!-- Variables globales à réinjecter à chaque changement de page |
(hors jquery mobile ne recharge pas le contenu du header --> |
<script type="text/Javascript"> |
//<![CDATA[ |
44,7 → 44,7 |
var g_urlServiceVotes = "<?= $donnees['url_service_votes']; ?>"; |
var g_urlServiceUtilisateurs = "<?= $donnees['url_service_utilisateurs']; ?>"; |
var g_idObservation = "<?= $donnees['id_observation']; ?>"; |
<?= $donnees['votes_js']; ?>; |
<?= $donnees['votes_js']; ?>; |
//]]> |
</script> |
<!-- /navbar --> |
82,7 → 82,7 |
<li class="ui-li ui-li-static ui-body-c"> |
<div class="intitule_determination"> |
<div><?= $vote_determination['nom_sel']; ?></div> |
<div class="auteur_determination">Proposé par : <?= $vote_determination['auteur.prenom']; ?> <?= $vote_determination['auteur.nom']; ?></div> |
<div class="auteur_determination">Proposé par : <?= $vote_determination['auteur_intitule']; ?></div> |
</div> |
<div id="vote_determination_<?= $vote_determination['id_commentaire']; ?>" class="votes_determination"> |
<a href="#" class="bouton_vote bouton_vote_oui" data-role="button" data-mini="true" data-inline="true"> oui</a> |
99,7 → 99,7 |
<?php endforeach ?> |
</ul> |
</div> |
<div data-role="footer" data-theme="b"> |
<div data-role="footer" data-theme="b"> |
<div data-role="navbar" > |
<ul> |
<li><a href="">Aide</a></li> |
107,7 → 107,7 |
</ul> |
</div> |
</div> |
</div> |
</div> |
<!-- WIDGET:DEL:VOTE - FIN --> |
</body> |
</html> |
/trunk/widget/modules/vote/squelettes/vote_ajax.tpl.html |
---|
31,7 → 31,7 |
<li class="ui-li ui-li-static ui-body-c"> |
<div class="intitule_determination"> |
<div><?= $vote_determination['nom_sel']; ?></div> |
<div class="auteur_determination">Proposé par : <?= $vote_determination['auteur.prenom']; ?> <?= $vote_determination['auteur.nom']; ?></div> |
<div class="auteur_determination">Proposé par : <?= $vote_determination['auteur_intitule']; ?></div> |
</div> |
<div id="vote_determination_<?= $vote_determination['id_commentaire']; ?>" class="votes_determination"> |
<a href="#" class="bouton_vote bouton_vote_oui" data-role="button" data-mini="true" data-inline="true"> oui</a> |
48,7 → 48,7 |
<?php endforeach ?> |
</ul> |
</div> |
<div data-role="footer" data-theme="b" data-position="fixed"> |
<div data-role="footer" data-theme="b" data-position="fixed"> |
</div> |
</div> |
</div> |
<!-- WIDGET:DEL:VOTE - FIN --> |
/trunk/widget/modules/vote/squelettes/aide.tpl.html |
---|
2,12 → 2,12 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<title>Votez !</title> |
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> |
<meta http-equiv="Content-style-type" content="text/css" /> |
<meta http-equiv="Content-script-type" content="text/javascript" /> |
<meta http-equiv="Content-language" content="fr" /> |
<meta name="revisit-after" content="15 days" /> |
<meta name="robots" content="index,follow" /> |
<meta name="author" content="Delphine Cauquil, Aurélien Peronnet" /> |
16,15 → 16,15 |
<!-- Spécial mobile --> |
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> |
<!-- Favicones --> |
<link rel="icon" type="image/png" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.png" /> |
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.ico" /> |
<!-- Feuilles de styles --> |
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /> |
<link rel="stylesheet" type="text/css" href="<?=$url_css?>vote.css" media="screen" /> |
<!-- Javascript : bibliothèques --> |
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> |
<script type="text/Javascript"> |
44,9 → 44,9 |
<!-- WIDGET:DEL:VOTE - DEBUT --> |
<div data-role="page"> |
<div class="aide-contenu"> |
À rédiger ! |
</div> |
<div data-role="footer" data-theme="b" data-position="fixed"> |
<div data-role="footer" data-theme="b" data-position="fixed"> |
<div data-role="navbar" > |
<ul> |
<li><a href="">Aide</a></li> |
54,7 → 54,7 |
</ul> |
</div> |
</div> |
</div> |
</div> |
<!-- WIDGET:DEL:VOTE - FIN --> |
</body> |
</html> |
/trunk/widget/modules/vote/Vote.php |
---|
21,23 → 21,22 |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
*/ |
class Vote extends WidgetCommun { |
const DS = DIRECTORY_SEPARATOR; |
const SERVICE_DEFAUT = 'photo'; |
private $ce_img_url_tpl = null; |
private $del_url_service_tpl = null; |
private $id_observation_suivant = null; |
private $id_observation_precedent = null; |
private $id_observation = null; |
/** |
* Méthode appelée par défaut pour charger ce widget. |
*/ |
public function executer() { |
public function executer() { |
$this->del_url_service_tpl = $this->config['vote']['baseURLServicesDelTpl']; |
$this->ce_img_url_tpl = $this->config['vote']['celImgUrlTpl']; |
$this->collecterParametres(); |
$ids_observations = $this->obtenirIdsObservation(); |
$donnees = $this->obtenirDonnees($this->id_observation); |
53,37 → 52,38 |
$widget['donnees']['url_service_votes'] = $this->del_url_service_tpl.'observations/'.$this->id_observation; |
$widget['donnees']['url_service_utilisateurs'] = $this->del_url_service_tpl.'utilisateurs/'; |
$widget['donnees']['urls_navigation'] = $this->construireUrlsSuivantesEtPrecedentes($ids_observations); |
if (isset($this->parametres['mode']) && $this->parametres['mode'] == 'ajax') { |
$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.'vote_ajax.tpl.html'; |
} else { |
$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.'vote.tpl.html'; |
} |
$contenu = $this->traiterSquelettePhp($squelette, $widget['donnees']); |
$this->envoyer($contenu); |
} |
private function collecterParametres() { |
$this->id_observation = (isset($_GET['id_observation'])) ? $_GET['id_observation'] : null; |
unset($_GET['id_observation']); |
$this->parametres = $_GET; |
} |
private function convertirParametresEnChaineRequeteService() { |
$requete = ''; |
$mapping = $this->config['mapping_masque']; |
if(!empty($this->parametres)) { |
foreach ($this->parametres as $parametre=>$valeur) { |
$parametresWs = array(); |
$mapping = $this->transformerEnTableau($this->config['vote']['mapping_masque']); |
if (!empty($this->parametres)) { |
foreach ($this->parametres as $parametre => $valeur) { |
if (isset($mapping[$parametre])) { |
$requete .= '&'.$mapping[$parametre].'='.urlencode($valeur); |
$parametresWs[] = $mapping[$parametre].'='.urlencode($valeur); |
} |
} |
} |
$requete = (!empty($parametresWs)) ? '?'.implode('&', $parametresWs) : ''; |
return $requete; |
} |
private function convertirParametresEnChaineRequete() { |
$requete = str_replace('masque_','masque.',http_build_query($this->parametres)); |
if(!empty($this->parametres)) { |
91,93 → 91,119 |
} |
return $requete; |
} |
private function obtenirIdsObservation() { |
$ids = json_decode(file_get_contents($this->del_url_service_tpl.'observations?retour.format=widget'.$this->convertirParametresEnChaineRequeteService()), true); |
if($this->id_observation == null) { |
$this->id_observation = $ids['resultats'][0]; |
$url = $this->del_url_service_tpl.'observations'.$this->convertirParametresEnChaineRequeteService(); |
//exit('<pre>'.print_r($url, true).'</pre>'); |
$infos = json_decode(file_get_contents($url), true); |
//exit('<pre>'.print_r($infos, true).'</pre>'); |
$ids = array(); |
foreach ($infos['resultats'] as $resultat) { |
if ($this->id_observation == null) { |
$this->id_observation = $resultat['id_observation']; |
} |
$ids[] = $resultat['id_observation']; |
} |
return $ids['resultats']; |
return $ids; |
} |
private function obtenirUrlBaseWidget() { |
return $this->config['chemins']['baseURL'].'vote'; |
} |
private function construireUrlsSuivantesEtPrecedentes($tableau_id_observation) { |
$indices_id_obs = array_flip($tableau_id_observation); |
$indice_obs_courante = $indices_id_obs[$this->id_observation]; |
$url_base = $this->obtenirUrlBaseWidget(); |
$indice_predecent = isset($tableau_id_observation[$indice_obs_courante - 1]) ? $tableau_id_observation[$indice_obs_courante - 1] : ''; |
$indice_suivant = isset($tableau_id_observation[$indice_obs_courante + 1]) ? $tableau_id_observation[$indice_obs_courante + 1] : ''; |
$url_suivant = isset($tableau_id_observation[$indice_obs_courante + 1]) ? $url_base.'?id_observation='.$tableau_id_observation[$indice_obs_courante + 1].$this->convertirParametresEnChaineRequete() : null; |
$url_precedent = isset($tableau_id_observation[$indice_obs_courante - 1]) ? $url_base.'?id_observation='.$tableau_id_observation[$indice_obs_courante - 1].$this->convertirParametresEnChaineRequete() : null; |
return array('url_suivant' => $url_suivant, |
'url_precedent' => $url_precedent |
); |
return array('url_suivant' => $url_suivant, 'url_precedent' => $url_precedent); |
} |
private function obtenirDonnees($id_observation) { |
$donnees = json_decode(file_get_contents($this->del_url_service_tpl.'observations/'.$id_observation), true); |
//exit('<pre>'.print_r($donnees, true).'</pre>'); |
return $donnees; |
} |
private function construireTitreImage($donnees) { |
return 'Pris par '.$donnees['auteur.prenom'].' '.$donnees['auteur.nom'].' à '.$donnees['zone_geo'].' le '.$this->formaterDate($donnees['date_observation'],'%d/%m/%Y'); |
} |
private function obtenirUrlImage($images) { |
return $images[0]['binaire.href']; |
} |
private function formaterDeterminations($observation) { |
$liste_determinations = $observation['commentaires']; |
$liste_determinations_formatees = array(); |
$creerPropositionAPartirObservation = true; |
foreach ($liste_determinations as $determination) { |
$determination_formatee = $determination; |
if($determination['nom_sel'] != null && $determination['nom_sel'] != '') { |
$determination_formatee['votes'] = $this->formaterVotes($determination['votes']); |
$liste_determinations_formatees[] = $determination_formatee; |
foreach ($liste_determinations as $determination) { |
if ($determination['nom_sel'] != null && $determination['nom_sel'] != '') { |
$liste_determinations_formatees[] = $this->formaterDetermination($determination); |
} |
if($determination['nom_sel'] == $observation['determination.ns'] && |
if ($determination['nom_sel'] == $observation['determination.ns'] && |
$determination['auteur.id'] == $observation['auteur.id']) { |
$creerPropositionAPartirObservation = false; |
} |
} |
if($creerPropositionAPartirObservation) { |
if ($creerPropositionAPartirObservation) { |
$liste_determinations_formatees[] = $this->creerDeterminationAPartirObservation($observation); |
} |
return $liste_determinations_formatees; |
} |
private function formaterDetermination($infos) { |
//exit('<pre>'.print_r($infos, true).'</pre>'); |
$determination = array( |
"id_commentaire" => $infos['id_commentaire'], |
"observation" => $infos['observation'], |
"proposition" => $infos['proposition'], |
"id_parent" => $infos['id_parent'], |
"texte" => $infos['texte'], |
"date" => $infos['date_observation'], |
"nom_sel" => $infos['nom_sel'], |
"auteur_intitule" => $this->formaterIntituleAuteur($infos), |
"votes" => $this->formaterVotes($infos['votes']) |
); |
return $determination; |
} |
private function creerDeterminationAPartirObservation($observation) { |
$proposition = array("id_commentaire" => "0", |
"observation" => $observation['id_observation'], |
"proposition" => "0", |
"id_parent" => "0", |
"auteur.id" => $observation['auteur.id'], |
"texte" => null, |
"auteur.nom" => $observation['auteur.nom'], |
"auteur.prenom" => $observation['auteur.prenom'], |
"auteur.courriel" => $observation['observateur'], |
"date" => $observation['date_observation'], |
"nom_sel" => $observation['determination.ns'], |
"votes" => array('oui' => 0, 'non' => 0) |
$determination = array( |
"id_commentaire" => "0", |
"observation" => $observation['id_observation'], |
"proposition" => "0", |
"id_parent" => "0", |
"texte" => null, |
"date" => $observation['date_observation'], |
"nom_sel" => $observation['determination.ns'], |
"auteur_intitule" => $this->formaterIntituleAuteur($observation), |
"votes" => array('oui' => 0, 'non' => 0) |
); |
return $proposition; |
return $determination; |
} |
private function formaterIntituleAuteur($donnees) { |
$intitule = 'Anonyme'; |
// TODO : si auteur.id existe, appelé le WS de l'annuaire... |
if (!empty($donnees['auteur.prenom']) && !empty($donnees['auteur.nom'])) { |
$intitule = $donnees['auteur.prenom'].' '.$donnees['auteur.nom']; |
} else if (!empty($donnees['auteur.courriel'])) { |
$intitule = strstr($donnees['auteur.courriel'], '@').'@...'; |
} |
return $intitule; |
} |
private function formaterVotes($liste_votes) { |
$liste_votes_formates = array('oui' => 0, 'non' => 0); |
foreach($liste_votes as $vote) { |
187,10 → 213,9 |
$liste_votes_formates['non']++; |
} |
} |
return $liste_votes_formates; |
} |
private function convertirTableauVotesEnJs($liste_commentaires) { |
$tableau_js = "var g_votes = new Array();"; |
foreach($liste_commentaires as $commentaire) { |
201,8 → 226,6 |
} |
} |
} |
return $tableau_js; |
} |
} |
?> |
} |
/trunk/widget/modules/statistiques/StatistiquesOld.php |
---|
File deleted |
\ No newline at end of file |
/trunk/widget/modules/statistiques/squelettes/stats_tout.tpl.html |
---|
5,12 → 5,12 |
<meta http-equiv="Content-style-type" content="text/css" /> |
<meta http-equiv="Content-script-type" content="text/javascript" /> |
<meta http-equiv="Content-language" content="fr" /> |
<meta name="revisit-after" content="15 days" /> |
<meta name="robots" content="index,follow" /> |
<meta name="author" content="Jean-Pascal MILCENT, Mathias CHOUET" /> |
<meta name="keywords" content="Statistiques, CEL, Tela Botanica, graphiques" /> |
<meta name="description" content="Graphiques et statistiques sur les observations et images du Carnet en Ligne (CEL)" /> |
<meta name="robots" content="index,follow" /> |
<meta name="author" content="Jean-Pascal MILCENT, Mathias CHOUET" /> |
<meta name="keywords" content="Statistiques, CEL, Tela Botanica, graphiques" /> |
<meta name="description" content="Graphiques et statistiques sur les observations et images du Carnet en Ligne (CEL)" /> |
<link rel="stylesheet" type="text/css" href="http://resources.tela-botanica.org/bootstrap/3.1.0/css/bootstrap.min.css" /> |
<link rel="stylesheet" type="text/css" href="<?=$url_css?>" media="screen" /> |
29,7 → 29,7 |
var _gaq = _gaq || []; |
_gaq.push(['_setAccount', 'UA-20092557-1']); |
_gaq.push(['_trackPageview']); |
(function() { |
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
78,7 → 78,7 |
</ul> |
</div> |
<div class="col-md-offset-2 main"> |
<div class="col-md-offset-2 main"> |
<h1 class="page-header">Statistiques Identiplante / Pictoflora</h1> |
<div id="zone-chargement"> |
/trunk/widget/modules/statistiques/Statistiques.php |
---|
23,17 → 23,17 |
private $page; |
private $annee; |
/** |
* Méthode appelée avec une requête de type GET. |
*/ |
public function executer() { |
$retour = null; |
extract($this->parametres); |
$this->page = (isset($page)) ? $page : self::PAGE_DEFAUT; |
$this->annee = (isset($annee)) ? $annee : null; |
$methode = $this->traiterNomMethodeExecuter($this->page); |
if (method_exists($this, $methode)) { |
$retour = $this->$methode(); |
59,11 → 59,11 |
public function executerDefaut() { |
$widget = null; |
$widget['squelette'] = 'stats_tout'; // squelette bootstrap unifié |
if (!is_null($widget)) { |
$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/statistiques/squelettes/css/stats_tout.css'); |
$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/statistiques/squelettes/js/defaut.js'); |
$widget['donnees']['url_script_navigation'] = sprintf($this->config['chemins']['baseURLRessources'], 'tb/reseau/navigation.js'); |
$widget['donnees']['url_script_navigation'] = sprintf($this->config['chemins']['baseURLRessources'], 'tb/reseau/navigation.js'); |
$widget['donnees']['url_js_bootstrap'] = sprintf($this->config['chemins']['baseURLRessources'], 'bootstrap/3.1.0/js/bootstrap.min.js'); |
$widget['donnees']['url_css_bootstrap'] = sprintf($this->config['chemins']['baseURLRessources'], 'bootstrap/3.1.0/css/bootstrap.min.css'); |
$widget['donnees']['url_image_chargement'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/statistiques/squelettes/img/chargement.gif'); |
105,5 → 105,4 |
return (array) json_decode($json); |
} |
} |
?> |
} |