Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 36 → Rev 37

/trunk/interfaces/index.php
44,7 → 44,7
<div id="reducteur">
 
<div id="logo_tela">
<a href="/" title="Retour à l'accueil du site">
<a href="/referentiel/" title="Retour à l'accueil du site">
<img src="http://www.tela-botanica.org/sites/reseau/generique/images/graphisme/logo_jaune.gif" alt="le logo de Tela Botanica"/>
</a>
</div>
82,11 → 82,7
</div>
<div id="nav_gauche">
<ul>
<li><a href="<?=basename(__FILE__)?>?module=Test">Test</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Versionnage">Versionnage</a></li>
<li><a href="<?=basename(__FILE__)?>?module=Consultation">Consultation</a></li>
</ul>
<?php echo Referentiel::getContenuMenu(); ?>
</div>
</div>
/trunk/interfaces/squelettes/fil_ariane.tpl.html
New file
0,0 → 1,9
<!-- REF - DEBUT FIL D'ARIANE -->
<?php if (isset($entrees)) : ?>
<ul class="fil-ariane">
<?php foreach ($entrees as $entree) : ?>
<li><a href="<?=$entree['url'];?>"><?=$entree['nom'];?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<!-- REF - FIN FIL D'ARIANE -->
/trunk/interfaces/squelettes/menu.tpl.html
New file
0,0 → 1,11
<!-- REF - DEBUT MENU -->
<h1>Menu</h1>
 
<?php if (isset($menus)) : ?>
<ul>
<?php foreach ($menus as $menu) : ?>
<li><a href="<?=$menu['url'];?>"><?=$menu['nom'];?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<!-- REF - FIN MENU -->
/trunk/interfaces/squelettes/accueil.tpl.html
New file
0,0 → 1,18
<!-- REF - DEBUT ACCUEIL -->
<h1>Liste des référentiels en cours de travail</h1>
 
<?php if (isset($messages)) : ?>
<h2>Messages</h2>
<?php foreach ($messages as $message) : ?>
<p class="information"><?=$message;?></p>
<?php endforeach; ?>
<?php endif; ?>
 
<?php if (isset($referentiels)) : ?>
<ul>
<?php foreach ($referentiels as $referentiel) : ?>
<li><a href="<?=$referentiel['url'];?>"><?=$referentiel['nom'];?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<!-- REF - FIN ACCUEIL -->
/trunk/interfaces/squelettes/detail_referentiel.tpl.html
New file
0,0 → 1,22
<!-- REF - DEBUT DETAIL -->
<h1>Référentiel «<?=$referentiel;?>»</h1>
 
<?php if (isset($messages)) : ?>
<h2>Messages</h2>
<?php foreach ($messages as $message) : ?>
<p class="information"><?=$message;?></p>
<?php endforeach; ?>
<?php endif; ?>
 
<p>
Vous pouvez <a href="<?=$url_menu_test;?>">tester</a> le référentiel «<?=$referentiel;?>»
afin de contrôler les données saisies dans la version de travail.<br />
Lorsqu'une version de travail est prête à être publié, vous pouvez accéder à
<a href="<?=$url_menu_versionnage;?>">l'outil de versionnage</a> pour réaliser
cette manipulation. Cette interface permet aussi de télécharger les versions précédentes.<br />
Enfin, il est possible de <a href="<?=$url_menu_consultation;?>">consulter</a> en permanence les données saisies
dans la version de travail.
</p>
<!-- REF - FIN DETAIL -->
/trunk/interfaces/controleurs/Accueil.php
New file
0,0 → 1,90
<?php
// declare(encoding='UTF-8');
/**
* Classe Controleur du module Accueil.
* Affichage les infos sur l'ensemble des référentiels disponibles.
*
* @package Referentiel
* @category Php5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*/
class Accueil extends AppliControleur {
private $referentiel = null;
private $referentielDao = null;
public function __construct() {
parent::__construct();
// Récupération de paramêtres
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower(strip_tags($_GET['ref']));
}
// Chargement des DAO nécessaires
$this->referentielDao = new ReferentielDao();
}
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
* Fonction d'affichage par défaut
*/
public function executerActionParDefaut() {
return $this->afficherAccueil();
}
/**
* Affiche la liste des référentiels
*/
public function afficherAccueil() {
$donnees = array();
$infos = $this->referentielDao->getReferentielsDispo();
if ($infos != false) {
$referentiel = array();
foreach ($infos as $info) {
$referentiel['nom'] = $info;
$referentiel['url'] = $this->obtenirUrlDetailReferentiel($info);
}
$donnees['referentiels'][] = $referentiel;
} else {
$this->addMessage("Aucun référentiel n'est disponible.");
}
$donnees['messages'] = $this->getMessages();
$this->traiterEsperluette($donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('accueil', $donnees), false);
$this->construireFilAriane();
}
/**
* Affiche le détail d'un référentiel et la liste des actions possibles
*/
public function afficherDetail() {
$donnees = array();
// Traitement de l'info sur le code du référentiel
if (isset($this->referentiel)) {
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel);
$donnees['referentiel'] = $this->referentiel;
$donnees['url_menu_test'] = $this->obtenirUrlMenuTest($this->referentiel);
$donnees['url_menu_versionnage'] = $this->obtenirUrlMenuVersionnage($this->referentiel);
$donnees['url_menu_consultation'] = $this->obtenirUrlMenuConsultation($this->referentiel);
} else {
$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
}
$donnees['messages'] = $this->getMessages();
$this->traiterEsperluette($donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
}
}
?>
/trunk/interfaces/controleurs/Traitement.php
14,6 → 14,7
*/
class Traitement extends AppliControleur {
private $referentiel = null;
private $traitementId = null;
private $traitementDao = null;
private $resultatDao = null;
25,6 → 26,9
if (isset($_GET['id-t'])) { // id du traitement courant
$this->traitementId = strtolower($_GET['id-t']);
}
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower($_GET['ref']);
}
// Chargement des DAO nécessaires
if (isset($this->traitementId)) {
62,14 → 66,9
$infos = $this->resultatDao->getResultatsTraitement($this->traitementId);
if ($infos != false) {
// Ajout de l'url vers la fiche du resultat
$this->url->unsetVariablesRequete(array('action','id-t'));
$this->url->setVariableRequete('module', 'Resultat');
foreach ($infos as &$resultat) {
$this->url->setVariableRequete('id-r', $resultat['id_resultat']);
$resultat['url'] = $this->url->getUrl();
$this->url->unsetVariableRequete('id-r');
$resultat['url'] = $this->obtenirUrlFicheResultat($this->referentiel, $resultat['id_resultat']);
}
$this->url->unsetVariablesRequete(array('module'));
$donnees['resultats'] = $infos;
}
} else {
79,6 → 78,8
$donnees['messages'] = $this->getMessages();
$this->traiterEsperluette($donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('traitement', $donnees), false);
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel, $this->traitementId);
}
}
?>
/trunk/interfaces/controleurs/Test.php
62,13 → 62,9
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel);
if ($resultat != false) {
// Ajout de l'url vers la fiche du traitement
$this->url->setVariableRequete('module', 'Traitement');
foreach ($resultat as &$traitement) {
$this->url->setVariableRequete('id-t', $traitement['id_traitement']);
$traitement['url'] = $this->url->getUrl();
$this->url->unsetVariableRequete('id-t');
$traitement['url'] = $this->obtenirUrlFicheTraitement($this->referentiel, $traitement['id_traitement']);
}
$this->url->unsetVariableRequete('module');
$donnees['traitements_termines'] = $resultat;
}
} else {
77,6 → 73,8
$donnees['messages'] = $this->getMessages();
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_traitement', $donnees), false);
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel);
}
/**
/trunk/interfaces/controleurs/Versionnage.php
New file
0,0 → 1,39
<?php
// declare(encoding='UTF-8');
/**
* Classe Controleur du module Versionnage.
* Permet de publier une nouvelle version d'un référentiel de travail.
*
* @package Referentiel
* @category Php5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*/
class Versionnage extends AppliControleur {
private $referentiel = null;
public function __construct() {
parent::__construct();
// Récupération de paramêtres
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower($_GET['ref']);
}
}
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
* Fonction d'affichage par défaut
*/
public function executerActionParDefaut() {
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel);
$this->setSortie(self::RENDU_CORPS, '<p>En cours de réalisation...</p>', false);
}
}
?>
/trunk/interfaces/controleurs/AppliControleur.php
16,6 → 16,8
const RENDU_TETE = 'tete';
const RENDU_CORPS = 'corps';
const RENDU_PIED = 'pied';
const RENDU_NAVIGATION = 'navigation';
const RENDU_MENU = 'menu';
// FIXME : voir s'il est plus intéressant d'utiliser une méthode dans les classes filles
protected $url = null;
84,7 → 86,9
$existe = true;
if ($position != self::RENDU_TETE &&
$position != self::RENDU_CORPS &&
$position != self::RENDU_PIED) {
$position != self::RENDU_PIED &&
$position != self::RENDU_NAVIGATION &&
$position != self::RENDU_MENU) {
trigger_error("La position '$position' n'est pas une valeur prédéfinie.", E_USER_WARNING);
$existe = false;
}
139,5 → 143,120
$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9a-f]+);)/i', '&amp;', $txt, -1);
return $txt;
}
/**
* Construction du menu et stockage dans le conteneur de sortie RENDU_MENU.
*
* @param string $referentiel code du référentiel.
*/
protected function construireMenu($referentiel) {
$menu['nom'] = 'Accueil';
$menu['url'] = $this->obtenirUrlMenuAccueil();
$donnees['menus'][] = $menu;
$menu['nom'] = 'Tests';
$menu['url'] = $this->obtenirUrlMenuTest($referentiel);
$donnees['menus'][] = $menu;
$menu['nom'] = 'Versionnage';
$menu['url'] = $this->obtenirUrlMenuVersionnage($referentiel);
$donnees['menus'][] = $menu;
$menu['nom'] = 'Consultation';
$menu['url'] = $this->obtenirUrlMenuConsultation($referentiel);
$donnees['menus'][] = $menu;
$this->setSortie(self::RENDU_MENU, $this->getVue('menu', $donnees), false);
}
/**
* Construction du fil d'ariane et stockage dans le conteneur de sortie RENDU_NAVIGATION.
*
* @param $referentiel code du référentiel
* @param $id_traitement id du traitement
* @param $id_resultat id du résultat
*/
protected function construireFilAriane($referentiel = null, $id_traitement = null, $id_resultat = null) {
$entree['nom'] = 'Accueil';
$entree['url'] = $this->obtenirUrlMenuAccueil();
$donnees['entrees'][] = $entree;
if (isset($referentiel)) {
$entree['nom'] = strtoupper($referentiel);
$entree['url'] = $this->obtenirUrlDetailReferentiel($referentiel);
$donnees['entrees'][] = $entree;
$module = Referentiel::getModule();
if ($module != 'Accueil') {
$entree['nom'] = $module;
$entree['url'] = $this->obtenirUrlMenu($module, $referentiel);
$donnees['entrees'][] = $entree;
}
if (isset($id_traitement)) {
$entree['nom'] = "Traitement #$id_traitement";
$entree['url'] = $this->obtenirUrlFicheTraitement($referentiel, $id_traitement);
$donnees['entrees'][] = $entree;
}
if (isset($id_resultat)) {
$entree['nom'] = "Résultat #$id_resultat";
$entree['url'] = $this->obtenirUrlFicheResultat($referentiel, $id_resultat);
$donnees['entrees'][] = $entree;
}
}
$this->setSortie(self::RENDU_NAVIGATION, $this->getVue('fil_ariane', $donnees), false);
}
protected function obtenirUrlDetailReferentiel($referentiel) {
$this->url->setRequete(false);
$this->url->setVariableRequete('module', 'Accueil');
$this->url->setVariableRequete('action', 'afficherDetail');
$this->url->setVariableRequete('ref', $referentiel);
$url = $this->url->getURL();
$this->url->unsetVariablesRequete(array('module', 'action', 'ref'));
return $url;
}
protected function obtenirUrlMenuAccueil() {
return $this->obtenirUrlMenu('Accueil');
}
protected function obtenirUrlMenuTest($referentiel) {
return $this->obtenirUrlMenu('Test', $referentiel);
}
protected function obtenirUrlMenuVersionnage($referentiel) {
return $this->obtenirUrlMenu('Versionnage', $referentiel);
}
protected function obtenirUrlMenuConsultation($referentiel) {
return $this->obtenirUrlMenu('Consultation', $referentiel);
}
private function obtenirUrlMenu($menu, $referentiel = null) {
$this->url->setRequete(false);
$this->url->setVariableRequete('module', $menu);
if (isset($referentiel)) {
$this->url->setVariableRequete('ref', $referentiel);
}
$url = $this->url->getURL();
$this->url->unsetVariablesRequete(array('module', 'ref'));
return $url;
}
protected function obtenirUrlFicheTraitement($referentiel, $id_traitement) {
$this->url->setRequete(false);
$this->url->setVariableRequete('module', 'Traitement');
$this->url->setVariableRequete('id-t', $id_traitement);
$this->url->setVariableRequete('ref', $referentiel);
$url = $this->url->getURL();
$this->url->unsetVariablesRequete(array('module', 'id-t', 'ref'));
return $url;
}
protected function obtenirUrlFicheResultat($referentiel, $id_resultat) {
$this->url->setRequete(false);
$this->url->setVariableRequete('module', 'Resultat');
$this->url->setVariableRequete('id-r', $id_resultat);
$this->url->setVariableRequete('ref', $referentiel);
$url = $this->url->getURL();
$this->url->unsetVariablesRequete(array('module', 'id-r', 'ref'));
return $url;
}
}
/trunk/interfaces/controleurs/Consultation.php
New file
0,0 → 1,39
<?php
// declare(encoding='UTF-8');
/**
* Classe Controleur du module Consultation.
* Permet de consultation la version de travail d'un référentiel.
*
* @package Referentiel
* @category Php5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
*/
class Consultation extends AppliControleur {
private $referentiel = null;
public function __construct() {
parent::__construct();
// Récupération de paramêtres
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower($_GET['ref']);
}
}
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
* Fonction d'affichage par défaut
*/
public function executerActionParDefaut() {
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel);
$this->setSortie(self::RENDU_CORPS, '<p>En cours de réalisation...</p>', false);
}
}
?>
/trunk/interfaces/controleurs/Resultat.php
14,6 → 14,8
*/
class Resultat extends AppliControleur {
private $referentiel = null;
private $traitementId = null;
private $resultatId = null;
private $resultatDao = null;
24,6 → 26,9
if (isset($_GET['id-r'])) { // id du resultat courant
$this->resultatId = strtolower($_GET['id-r']);
}
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower($_GET['ref']);
}
// Chargement des DAO nécessaires
if (isset($this->resultatId)) {
51,7 → 56,8
// Recherche d'info sur le résultat
$infos = $this->resultatDao->getInfos($this->resultatId);
if ($infos != false) {
$donnees['resultat'] = $infos;
$donnees['resultat'] = $infos;
$this->traitementId = $infos['ce_traitement'];
} else {
$this->addMessage("L'identifiant de résultat n'est pas indexé dans la base de données.");
}
62,6 → 68,8
$donnees['messages'] = $this->getMessages();
$this->traiterEsperluette($donnees);
$this->setSortie(self::RENDU_CORPS, $this->getVue('resultat', $donnees), false);
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel, $this->traitementId, $this->resultatId);
}
}
?>
/trunk/interfaces/controleurs/Referentiel.php
32,9 → 32,9
*/
public function __construct() {
$meta = array('titre' => '', 'description' => '', 'tags' => '');
$sortie = array('metadonnees' => $meta, 'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '');
$sortie = array('metadonnees' => $meta, 'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '', 'menu' => '');
$url = new Url(Config::get('url_base_index'));
self::$parametres = array( 'module' => 'Test',
self::$parametres = array( 'module' => 'Accueil',
'action' => 'executerActionParDefaut',
'sortie' => $sortie,
'url' => $url);
95,6 → 95,13
}
/**
* Retourne le module courrant.
*/
public static function getModule() {
return self::$parametres['module'];
}
/**
* Retourne le titre du contenu de l'application.
*/
public static function getMetaTitre() {
160,6 → 167,17
}
/**
* Retourne le menu de l'application.
*/
public static function getContenuMenu() {
$sortie = self::$parametres['sortie']['menu'];
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
$sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage'));
}
return $sortie;
}
/**
* Retourne les chronos pris dans l'appli
*/
public static function getChrono() {