/branches/v0.3-aleaume/exemple/interfaces/admin_administrateur.php |
---|
File deleted |
\ No newline at end of file |
/branches/v0.3-aleaume/exemple/interfaces/framework.php |
---|
1,6 → 1,6 |
<?php |
// Inclusion du Framework |
// Renomer ce fichier en "framework.php" |
// Indiquyer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework |
// Indiquer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework |
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'Framework.php'; |
?> |
/branches/v0.3-aleaume/exemple/interfaces/exemple.php |
---|
New file |
0,0 → 1,20 |
<?php |
// Le fichier Framework.php du Framework de Tela Botanica doit être appelé avant tout autre chose dans l'application. |
// Sinon, rien ne sera chargé. |
// L'emplacement du Framework peut varier en fonction de l'environnement (test, prod...). Afin de faciliter la configuration |
// de l'emplacement du Framework, un fichier framework.defaut.php doit être renommé en framework.php et configuré pour chaque installation de |
// l'application. |
// Chemin du fichier chargeant le framework requis |
$framework = dirname(__FILE__).'/framework.php'; |
if (!file_exists($framework)) { |
$e = "Veuillez paramêtrer l'emplacement et la version du Framework dans le fichier $framework"; |
trigger_error($e, E_USER_ERROR); |
} else { |
// Inclusion du Framework |
require_once $framework; |
// Ajout d'information concernant cette application |
Framework::setCheminAppli(__FILE__);// Obligatoire |
Framework::setInfoAppli(Config::get('info'));// Optionnel |
// Vous pouvez ci-dessous commencer le développement de votre application |
} |
?> |
/branches/v0.3-aleaume/exemple/interfaces/modeles/ListeAdmin.php |
---|
File deleted |
\ No newline at end of file |
/branches/v0.3-aleaume/exemple/interfaces/modeles/MaClasseMetierDao.php |
---|
New file |
0,0 → 1,5 |
<?php |
class MaClasseMetierDao extends RestClient { |
} |
?> |
/branches/v0.3-aleaume/exemple/interfaces/configurations/config.ini |
---|
1,9 → 1,64 |
; Info sur l'application |
info.nom = Gestion des administrateurs de Papyrus |
info.abr = AA |
;Encodage de l'application |
encodage_appli = "UTF8" |
; +------------------------------------------------------------------------------------------------------+ |
; Général |
; Séparateur de dossier |
ds = DIRECTORY_SEPARATOR |
; +------------------------------------------------------------------------------------------------------+ |
; Infos sur l'application |
; Le nom de votre application. |
info.nom = "Exemple." |
; Le code ou l'abréviation de votre application. |
info.abr = "EXPL" |
; Code numérique de la version de l'application |
info.version.code.num = "1.0" |
; Code alphabétique de la version de l'application |
info.version.code.alpha = "test" |
; Nom de la version de l'application |
info.version.nom = "Test" |
;Encodage de l'application. (Pour l'utf-8 ne pas mettre le tiret!) |
appli_encodage = "UTF8" |
; Nom de domaine pour l'URL de base de l'application : |
domaine = "www.tela-botanica.org" |
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone |
url_base = "" |
url_base = "http://{ref:domaine}/exemple/" |
; URL de base de l'application avec l'indication du fichier de départ |
url_base_index = "{ref:url_base}index.php" |
; URL de base où se situe le .htaccess réalisant la réécriture d'URL pour les permaliens de l'application |
url_base_permalien = "http://{ref:domaine}/exemple/" |
; Mettre à true si l'application nécessite de s'identifier. |
identification = true |
identification = false |
; +------------------------------------------------------------------------------------------------------+ |
; Paramétrage de la base de données. |
; abstraction de la base de données. |
bdd_abstraction = pdo |
; Protocole de la base de données. |
bdd_protocole = mysql |
; Nom du serveur de bases de données. |
bdd_serveur = localhost |
; Nom de l'utilisateur de la base de données. |
bdd_utilisateur = "root" |
; Mot de passe de l'utilisateur de la base de données. |
bdd_mot_de_passe = "" |
; Nom de la base de données principale. |
bdd_nom = "exemple" |
; Encodage de la base de données principale. (Pour l'utf-8 ne pas mettre le tiret!) |
bdd_encodage = "UTF8" |
; +------------------------------------------------------------------------------------------------------+ |
; Paramètrage de la session |
; Devons nous démarrer une session : oui (true) ou non (false) |
session_demarrage = "php:true" |
; Définition du nom de la session à utiliser |
session_nom = "exemple" |
; +------------------------------------------------------------------------------------------------------+ |
; Débogage |
; Indique si oui ou non on veut afficher le débogage. |
fw_debogage = true |
; Indique sous quelle forme les messages de débogage doivent s'afficher : |
; - Debug::MODE_ECHO : le message est affiché en utilisant echo |
; - Debug::MODE_NOTICE : le message est affiché en utilisant une erreur de type notice |
fw_debogage_mode = "php:Debug::MODE_NOTICE" |
; Indique si oui ou non on veut lancer le chronométrage |
chronometrage = true |
/branches/v0.3-aleaume/exemple/interfaces/configurations/config_papyrus.ini |
---|
1,6 → 1,12 |
;Encodage de l'application |
encodage_appli = "UTF8" |
; +------------------------------------------------------------------------------------------------------+ |
; Paramètrage de la session |
; Devons nous démarrer une session : oui (true) ou non (false) |
session_demarrage = "php:false" |
; Encodage de sortie de l'application dans le contexte de Papyrus |
sortie_encodage = "ISO-8859-1" |
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone |
url_base = "php:$GLOBALS['_GEN_commun']['url']->getUrl()" |
; Mettre à true si l'application nécessite de s'identifier. |
identification = "php:$GLOBALS['_GEN_commun']['pear_auth']->getAuth()" |
; URL de base de l'application avec l'indication du fichier de départ |
url_base_index = "{ref:url_base}" |
; URL de base où se situe le .htaccess réalisant la réécriture d'URL pour les permaliens de l'application |
url_base_permalien = "http://www.tela-botanica.org/" |
/branches/v0.3-aleaume/exemple/interfaces/framework.defaut.php |
---|
1,6 → 1,6 |
<?php |
// Inclusion du Framework |
// Renomer ce fichier en "framework.php" |
// Indiquyer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework |
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'Framework.php'; |
// Indiquer ci-dessous le chemin absolu vers le fichier Framework.php de la version souhaitée du Framework |
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'mon_chemin_vers'.DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'Framework.php'; |
?> |
/branches/v0.3-aleaume/exemple/interfaces/index.php |
---|
1,103 → 1,70 |
<?php |
/** Inclusion du fichier principal de l'application (administrations des administrateurs)*/ |
require_once 'admin_administrateur.php'; |
$contenu_navigation = afficherContenuNavigation(); |
$contenu_tete = afficherContenuTete(); |
$contenu_corps = afficherContenuCorps(); |
$titre = ""; |
$contenu_pied = afficherContenuPied(); |
$contenu_menu = afficherContenuMenu(); |
$erreurs = GestionnaireException::getExceptions(); |
// declare(encoding='UTF-8'); |
/** Inclusion du fichier principal de l'application*/ |
require_once 'exemple.php'; |
?> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml" > |
<head xml:lang="fr" lang="fr"> |
<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" /> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> |
<head> |
<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" /> |
<title><?php echo $titre; ?></title> |
<title><?php echo AppControleur::getMetaTitre(); ?></title> |
<meta name="description" content="<?php echo AppControleur::getMetaDescription();?>" /> |
<meta name="keywords" content="<?php echo AppControleur::getMetaTags();?>" /> |
<meta name="revisit-after" content="15 days" /> |
<meta name="robots" content="index,follow" /> |
<meta name="author" content="Tela Botanica" /> |
<meta name="revisit-after" content="15 days" /> |
<meta name="robots" content="index,follow" /> |
<meta name="author" content="Tela Botanica" /> |
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/favicon.ico" /> |
<link rel="icon" type="image/png" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.png" /> |
<script type="text/javascript" src="squelettes/js/jquery-1.4.2.min.js"></script> |
</head> |
<body> |
<div id="reducteur"> |
<style type="text/css" media="screen"> |
/*--------------------------------------------------------------------------------------------------------------*/ |
/* Tableau du chronométrage du programme */ |
#pied_texte #chrono { |
text-align: center; |
margin:0 auto;} |
#chrono table { |
display:block; |
border:3px solid #6495ed; |
border-collapse:collapse;} |
#chrono thead, tfoot { |
background-color:#D0E3FA; |
border:1px solid #6495ed;} |
#chrono tbody { |
background-color:#FFFFFF; |
border:1px solid #6495ed;} |
#chrono th { |
font-family:monospace; |
border:1px dotted #6495ed; |
padding:5px; |
background-color:#EFF6FF; |
width:25%;} |
#chrono td { |
font-family:sans-serif; |
font-size:80%; |
border:1px solid #6495ed; |
padding:5px; |
text-align:center;} |
#chrono caption { |
font-family:sans-serif; |
text-align: center; |
width:90%; |
margin:auto;} |
.debogage{ |
color:black; |
border:3px solid #6495ed;} |
.debogage_fichier, .debogage_ligne{ |
font-size:10px; |
color:#A9A9A9;} |
</style> |
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/favicon.ico" /> |
<link rel="icon" type="image/png" href="http://www.tela-botanica.org/sites/commun/generique/images/favicones/tela_botanica.png" /> |
</head> |
<body xml:lang="fr" lang="fr"> |
<div id="reducteur"> |
<div id="logo_tela"> |
<a href="/" title="Retour à l'accueil du site"> |
<img src="http://www.tela-botanica.org/sites/accueil/generique/images/graphisme/logo_tela_fond_blanc.png" alt="le logo de Tela Botanica"/> |
</a> |
</div> |
<div id="droite"> |
<div id="onglets"> |
<?php echo $contenu_navigation; ?> |
</div> |
<div id="contenu"> |
<div id="entete"> |
<?php echo $contenu_tete; ?> |
</div> |
<div id="texte"> |
<?php echo $contenu_corps; ?> |
</div> |
<div id="pied_texte"> |
<?php |
echo $contenu_pied; |
?> |
</div> |
</div> |
</div> |
<div> |
<?php echo $erreurs; ?> |
</div> |
<div id="pied"> |
<p> ©<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-2004 - Le réseau des Botanistes Francophones</p> |
</div> |
</div> |
</body> |
<div id="logo_tela"> |
<a href="/" 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> |
<div id="bandeau"> |
<div id="bandeau_contenu"> |
<div id="titre_monde"> |
<h1>Collections</h1> |
</div> |
</div> |
</div> |
<div id="droite"> |
<div id="onglets"> |
<?php echo AppControleur::getContenuNavigation(); ?> |
</div> |
<div id="contenu"> |
<div id="entete"> |
<?php echo AppControleur::getContenuTete(); ?> |
</div> |
<div id="texte"> |
<?php echo AppControleur::getContenuCorps(); ?> |
</div> |
<div id="pied_texte"> |
<?php echo AppControleur::getContenuPied(); ?> |
</div> |
</div> |
<div> |
<?php echo AppControleur::getChrono(); ?> |
<?php echo AppControleur::getExceptions(); ?> |
</div> |
<div id="pied"> |
<p> ©<a href="http://www.tela-botanica.org/" accesskey="1">Tela Botanica</a> / 2000-<?=date('Y')?> - Le réseau des Botanistes Francophones</p> |
</div> |
</div> |
</div> |
</body> |
</html> |
/branches/v0.3-aleaume/exemple/interfaces/squelettes/modif_admin.tpl.html |
---|
File deleted |
\ No newline at end of file |
/branches/v0.3-aleaume/exemple/interfaces/squelettes/liste_admin.tpl.html |
---|
File deleted |
/branches/v0.3-aleaume/exemple/interfaces/squelettes/ajout_admin.tpl.html |
---|
File deleted |
\ No newline at end of file |
/branches/v0.3-aleaume/exemple/interfaces/squelettes/ident_admin.tpl.html |
---|
File deleted |
\ No newline at end of file |
/branches/v0.3-aleaume/exemple/interfaces/controleurs/AdminAdministrateur.php |
---|
File deleted |
\ No newline at end of file |
/branches/v0.3-aleaume/exemple/interfaces/controleurs/AppControleur.php |
---|
New file |
0,0 → 1,196 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* AppControleur est le controlleur principal de l'application. |
* Elle repartie les demandes utilisateurs dans les différents modules, executent les actions et redistribue le code |
* html dans les différentes fonctions d'affichage. |
* C'est une Singleton. |
* |
* @category PHP 5.2 |
* @package exemple |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 |
* @version $Id$ |
*/ |
class AppControleur extends Controleur { |
/** |
* Instance de la classe pointant sur elle même (pour le pattern singleton) |
*/ |
private static $instance = null; |
/** |
* Paramètres pour les collections |
*/ |
private static $parametres = array(); |
/** |
* Constructeur vide |
*/ |
public function __construct() { |
$sortie = array('titre' => '', 'description' => '', 'tags' => '', |
'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => ''); |
$url = new Url(Config::get('url_base_index')); |
self::$parametres = array( 'module' => 'Recherche', |
'action' => 'executerActionParDefaut', |
'sortie' => $sortie, |
'url' => $url); |
parent::__construct(); |
} |
/** |
* Initialisation du controleur principal en fonction des paramêtres de l'url. |
*/ |
public static function initialiser() { |
self::verifierCreationInstance(); |
self::gererSession(); |
if (isset($_GET['module'])) { |
self::$parametres['module'] = $_GET['module']; |
} |
if (isset($_GET['action'])) { |
self::$parametres['action'] = $_GET['action']; |
} |
self::$parametres['url']->setRequete(array('action' => self::$parametres['action'], 'module' => self::$parametres['module'])); |
$registre = Registre::getInstance(); |
$registre->set('parametres', &self::$parametres); |
$ClasseModule = self::$parametres['module']; |
$action = self::$parametres['action']; |
$module = new $ClasseModule(); |
$module->$action(); |
self::fusionnerSortie($module->getSortie()); |
} |
private static function gererSession() { |
if (Config::get('session_demarrage')) { |
// Attribution d'un nom à la session |
session_name(Config::get('session_nom')); |
// Démarrage de la session |
session_start(); |
} |
} |
/** |
* Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module. |
* @param array le tableau à fusionner |
*/ |
private static function fusionnerSortie($sortie) { |
self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie); |
} |
/** |
* Vérifie si l'instance de classe à été crée, si non la crée. |
*/ |
private static function verifierCreationInstance() { |
if (empty(self::$instance)) { |
self::$instance = new AppControleur(); |
} |
} |
/** |
* Retourne le titre du contenu de l'application. |
*/ |
public static function getMetaTitre() { |
$sortie = self::$parametres['sortie']['titre']; |
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 la description du contenu de l'application. |
*/ |
public static function getMetaDescription() { |
$sortie = self::$parametres['sortie']['description']; |
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 mots-clés (tags) du contenu de l'application. |
*/ |
public static function getMetaTags() { |
$sortie = self::$parametres['sortie']['tags']; |
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 le contenu du corps de l'application. |
*/ |
public static function getContenuCorps() { |
$sortie = self::$parametres['sortie']['corps']; |
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 le contenu de la tête de l'application. |
*/ |
public static function getContenuTete() { |
$sortie = self::$parametres['sortie']['tete']; |
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 le contenu du pied de l'application. |
*/ |
public static function getContenuPied() { |
$sortie = self::$parametres['sortie']['pied']; |
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 éléments de navigation de l'application. |
*/ |
public static function getContenuNavigation() { |
$sortie = self::$parametres['sortie']['navigation']; |
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() { |
$sortie = ''; |
if (Config::get('chronometrage')) { |
$chrono = Chronometre::afficherChrono(); |
$sortie = mb_convert_encoding($chrono, Config::get('sortie_encodage'), Config::get('appli_encodage')); |
} |
return $sortie; |
} |
/** |
* Retourne les messages d'exceptions et d'erreurs. |
*/ |
public static function getExceptions() { |
$sortie = (Config::get('fw_debogage')) ? GestionnaireException::getExceptions() : ''; |
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) { |
$sortie = mb_convert_encoding($sortie, Config::get('sortie_encodage'), Config::get('appli_encodage')); |
} |
return $sortie; |
} |
} |
?> |
/branches/v0.3-aleaume/exemple/interfaces/controleurs/aControleur.php |
---|
New file |
0,0 → 1,99 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe abstraite dont chaque controleur de l'application doit hériter. |
* |
* @category php5.2 |
* @package exemple |
* @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 $Id$ |
*/ |
abstract class aControleur extends Controleur { |
const META_TITRE = 'titre'; |
const META_DESCRIPTION = 'description'; |
const META_TAGS = 'tags'; |
const RENDU_TETE = 'tete'; |
const RENDU_CORPS = 'corps'; |
const RENDU_PIED = 'pied'; |
private $sortie = array(); |
private $parametres = array(); |
protected $url = null; |
public function __construct() { |
$registre = Registre::getInstance(); |
$this->parametres = $registre->get('parametres'); |
$this->url = $this->parametres['url']; |
parent::__construct(); |
} |
/** |
* Attribue une position de sortie à un contenu. |
*/ |
protected function setSortie($position, $contenu, $fusionner = false) { |
if ($this->verifierExistenceTypeSortie($position)) { |
if ($fusionner) { |
$this->sortie[$position] .= $contenu; |
} else { |
$this->sortie[$position] = $contenu; |
} |
} |
} |
/** |
* Vérifie l'existence du type de sortie indiqué pour son utilisation dans le tableau de sortie. |
* @param string le type de sortie à tester. |
* @return bool true si le type de sortie est valide, sinon false. |
*/ |
private function verifierExistenceTypeSortie($type) { |
$existe = true; |
if ($type != self::RENDU_TETE && |
$type != self::RENDU_CORPS && |
$type != self::RENDU_PIED && |
$type != self::META_TITRE && |
$type != self::META_DESCRIPTION && |
$type != self::META_TAGS) { |
trigger_error("Le type de sortie '$type' n'est pas une valeur prédéfinie.", E_USER_WARNING); |
$existe = false; |
} |
return $existe; |
} |
/** |
* Retourne le tableau de sortie à utiliser dans le controleur principal de l'application. |
*/ |
public function getSortie() { |
return $this->sortie; |
} |
/** |
* Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie. |
*/ |
protected function executerAction($ClasseModule, $action) { |
$module = new $ClasseModule(); |
$module->$action(); |
$this->fusionnerSortie($module->getSortie()); |
} |
/** |
* Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre. |
* @param array le tableau à fusionner |
*/ |
private function fusionnerSortie($sortie) { |
$this->sortie = array_merge($this->sortie, $sortie); |
} |
/** |
* Pour mutualiser la création du pied de page de l'application, sa gestion est gérée dans cette classe. |
*/ |
protected function chargerPiedDePage() { |
$donnees['appli'] = Framework::getInfoAppli(); |
$this->setSortie(self::RENDU_PIED, $this->getVue('pied', $donnees)); |
} |
} |
?> |