Subversion Repositories Applications.projet

Compare Revisions

No changes between revisions

Ignore whitespace Rev 436 → Rev 437

/trunk/services/projet_statistiques.php
76,7 → 76,7
else echo "\n"."connection ok...";
// Quelques constantes de chemin
include_once PROJET_CHEMIN_SITE_APPLI_PROJET.'client/projet/configuration/projet.config.inc.php';
include_once PROJET_CHEMIN_SITE_APPLI_PROJET . PROJET_CHEMIN_APPLI . 'configuration/projet.config.inc.php';
 
/trunk/jrest/JRest.php
1,304 → 1,319
<?php
// In : utf8 url_encoded (get et post)
// Out : utf8
 
// TODO : gerer les retours : dans ce controleur : code retour et envoi ...
class JRest {
 
/** Parsed configuration file */
private $config;
 
/** The HTTP request method used. */
private $method = 'GET';
 
/** The HTTP request data sent (if any). */
private $requestData = NULL;
 
/** Array of strings to convert into the HTTP response. */
private $output = array();
 
/** Nom resource. */
private $resource = NULL;
 
/** Identifiant unique resource. */
private $uid = NULL;
 
/**
* Constructor. Parses the configuration file "JRest.ini", grabs any request data sent, records the HTTP
* request method used and parses the request URL to find out the requested resource
* @param str iniFile Configuration file to use
*/
public function JRest($iniFile = 'jrest.ini.php') {
 
$this->config = parse_ini_file($iniFile, TRUE);
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
$this->requestData = '';
$httpContent = fopen('php://input', 'r');
while ($data = fread($httpContent, 1024)) {
$this->requestData .= $data;
}
fclose($httpContent);
}
if (strlen($_SERVER['QUERY_STRING']) == 0) {
$len = strlen($_SERVER['REQUEST_URI']);
} else {
$len = -(strlen($_SERVER['QUERY_STRING']) + 1);
}
$urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseURL']), $len);
 
$urlParts = explode('/', $urlString);
 
if (isset($urlParts[0])) $this->resource = $urlParts[0];
if (count($urlParts) > 1 && $urlParts[1] != '') {
array_shift($urlParts);
foreach ($urlParts as $uid) {
if ($uid != '') {
$this->uid[] = urldecode($uid);
}
}
}
 
$this->method = $_SERVER['REQUEST_METHOD'];
} else {
trigger_error('I require the server variables REQUEST_URI, REQUEST_METHOD and QUERY_STRING to work.', E_USER_ERROR);
}
}
 
/**
* Execute the request.
*/
function exec() {
 
switch ($this->method) {
case 'GET':
$this->get();
break;
case 'POST':
$this->post();
break;
case 'DELETE':
$this->delete();
break;
case 'PUT':
$this->add();
break;
}
}
 
/**
* Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element
* when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
* database contents.
*/
private function get() {
if ($this->resource) {
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if ($this->uid) { // get a resource element
if (method_exists($service, 'getElement')) {
$service->getElement($this->uid);
}
} elseif (method_exists($service, 'getRessource')) { // get all elements of a ressource
$service->getRessource();
}
}
}
} else { // get resources
// include set.jrest.php, instanticiation et appel
}
}
 
private function post() {
$pairs = array();
// Récupération des paramètres passés dans le contenu de la requête HTTP (= POST)
if ($this->requestData) {
$pairs = $this->parseRequestData();
}
 
// Ajout des informations concernant l'upload de fichier passées dans la variable $_FILE
if(isset($_FILES)) {
foreach ($_FILES as $v) {
$pairs[$v['name']] = $v;
}
 
// Ne pas effacer cette ligne ! Elle est indispensable pour les services du Carnet en ligne
// qui n'utilisent que le tableau pairs dans les posts
$pairs = array_merge($pairs, $_POST);
}
 
// gestion du contenu du post
if(isset($_POST))
{
// Safari ne sait pas envoyer des DELETE avec gwt...
// Nous utilisons le parametre "action" passé dans le POST qui doit contenir DELETE pour lancer la supression
if ($pairs['action'] == 'DELETE') {
$this->delete();
return;
}
 
if (count($pairs) != 0) {
if ($this->uid) { // get a resource element
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if (method_exists($service,'updateElement')) { // Update element
// TODO : a voir le retour ...
if ($service->updateElement($this->uid, $pairs)) {
$this->created();
}
}
}
}
} else { // get all elements of a ressource
$this->add($pairs);
}
} else {
$this->lengthRequired();
}
}
}
 
private function delete() {
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if ($this->uid) { // get a resource element
if (method_exists($service, 'deleteElement')) { // Delete element
if ($service->deleteElement($this->uid)) {
$this->noContent();
}
}
}
}
}
}
 
private function add($pairs = null) {
if (is_null($pairs)) {
$pairs = array();
// Récupération des paramètres passés dans le contenu de la requête HTTP (= POST)
// FIXME : vérifier que l'on récupère bien les données passées par PUT
if ($this->requestData) {
$pairs = $this->parseRequestData();
}
}
 
if (count($pairs) != 0) {
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if (method_exists($service,'createElement')) { // Create a new element
if ($service->createElement($pairs)) {
$this->created();
}
}
}
}
} else {
$this->lengthRequired();
}
}
 
/**
* Parse the HTTP request data.
* @return str[] Array of name value pairs
*/
private function parseRequestData() {
$values = array();
$pairs = explode('&', $this->requestData);
foreach ($pairs as $pair) {
$parts = explode('=', $pair);
if (isset($parts[0]) && isset($parts[1])) {
$parts[1] = rtrim(urldecode($parts[1]));
$values[$parts[0]] = $parts[1];
}
}
return $values;
}
 
/**
* Send a HTTP 201 response header.
*/
private function created($url = FALSE) {
header('HTTP/1.0 201 Created');
if ($url) {
header('Location: '.$url);
}
}
 
/**
* Send a HTTP 204 response header.
*/
private function noContent() {
header('HTTP/1.0 204 No Content');
}
 
/**
* Send a HTTP 400 response header.
*/
private function badRequest() {
header('HTTP/1.0 400 Bad Request');
}
 
/**
* Send a HTTP 401 response header.
*/
private function unauthorized($realm = 'JRest') {
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
header('WWW-Authenticate: Basic realm="'.$realm.'"');
}
header('HTTP/1.0 401 Unauthorized');
}
 
/**
* Send a HTTP 404 response header.
*/
private function notFound() {
header('HTTP/1.0 404 Not Found');
}
 
/**
* Send a HTTP 405 response header.
*/
private function methodNotAllowed($allowed = 'GET, HEAD') {
header('HTTP/1.0 405 Method Not Allowed');
header('Allow: '.$allowed);
}
 
/**
* Send a HTTP 406 response header.
*/
private function notAcceptable() {
header('HTTP/1.0 406 Not Acceptable');
echo join(', ', array_keys($this->config['renderers']));
}
 
/**
* Send a HTTP 411 response header.
*/
private function lengthRequired() {
header('HTTP/1.0 411 Length Required');
}
 
/**
* Send a HTTP 500 response header.
*/
private function internalServerError() {
header('HTTP/1.0 500 Internal Server Error');
}
}
<?php
// In : utf8 url_encoded (get et post)
// Out : utf8
 
// TODO : gerer les retours : dans ce controleur : code retour et envoi ...
class JRest {
 
/** Parsed configuration file */
private $config;
 
/** The HTTP request method used. */
private $method = 'GET';
 
/** The HTTP request data sent (if any). */
private $requestData = NULL;
 
/** Array of strings to convert into the HTTP response. */
private $output = array();
 
/** Nom resource. */
private $resource = NULL;
 
/** Identifiant unique resource. */
private $uid = NULL;
 
/**
* Constructor. Parses the configuration file "JRest.ini", grabs any request data sent, records the HTTP
* request method used and parses the request URL to find out the requested resource
* @param str iniFile Configuration file to use
*/
public function JRest($iniFile = 'jrest.ini.php') {
$this->config = parse_ini_file($iniFile, TRUE);
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
$this->requestData = '';
$httpContent = fopen('php://input', 'r');
while ($data = fread($httpContent, 1024)) {
$this->requestData .= $data;
}
fclose($httpContent);
}
if (strlen($_SERVER['QUERY_STRING']) == 0) {
$len = strlen($_SERVER['REQUEST_URI']);
} else {
$len = -(strlen($_SERVER['QUERY_STRING']) + 1);
}
$urlString = '';
if (substr_count($_SERVER['REQUEST_URI'], $this->config['settings']['baseURL']) > 0) {
$urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseURL']), $len);
} else if (substr_count($_SERVER['REQUEST_URI'], $this->config['settings']['baseAlternativeURL']) > 0) {
$urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseAlternativeURL']), $len);
}
 
$urlParts = explode('/', $urlString);
 
if (isset($urlParts[0])) $this->resource = $urlParts[0];
if (count($urlParts) > 1 && $urlParts[1] != '') {
array_shift($urlParts);
foreach ($urlParts as $uid) {
if ($uid != '') {
$this->uid[] = urldecode($uid);
}
}
}
 
$this->method = $_SERVER['REQUEST_METHOD'];
} else {
trigger_error('I require the server variables REQUEST_URI, REQUEST_METHOD and QUERY_STRING to work.', E_USER_ERROR);
}
}
 
/**
* Execute the request.
*/
function exec() {
switch ($this->method) {
case 'GET':
$this->get();
break;
case 'POST':
$this->post();
break;
case 'DELETE':
$this->delete();
break;
case 'PUT':
$this->add();
break;
}
}
 
/**
* Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element
* when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
* database contents.
*/
private function get() {
if ($this->resource) {
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if ($this->uid) { // get a resource element
if (method_exists($service, 'getElement')) {
$service->getElement($this->uid);
}
} elseif (method_exists($service, 'getRessource')) { // get all elements of a ressource
$service->getRessource();
}
}
}
} else { // get resources
// include set.jrest.php, instanticiation et appel
}
}
 
private function post() {
$pairs = array();
// Récupération des paramètres passés dans le contenu de la requête HTTP (= POST)
if ($this->requestData) {
$pairs = $this->parseRequestData();
}
 
// Ajout des informations concernant l'upload de fichier passées dans la variable $_FILE
if(isset($_FILES)) {
foreach ($_FILES as $v) {
$pairs[$v['name']] = $v;
}
 
// Ne pas effacer cette ligne ! Elle est indispensable pour les services du Carnet en ligne
// qui n'utilisent que le tableau pairs dans les posts
$pairs = array_merge($_POST, $pairs);
}
 
// gestion du contenu du post
if(isset($_POST))
{
// Safari ne sait pas envoyer des DELETE avec gwt...
// Nous utilisons le parametre "action" passé dans le POST qui doit contenir DELETE pour lancer la supression
if (isset($pairs['action']) && $pairs['action'] == 'DELETE') {
$this->delete();
return;
}
 
if (count($pairs) != 0) {
if ($this->uid) { // get a resource element
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if (method_exists($service,'updateElement')) { // Update element
$ret_value = false;
try {
// TODO : a voir le retour ...
$ret_value = $service->updateElement($this->uid, $pairs);
if($ret_value) $this->created();
else $this->badRequest();
} catch (Exception $e) {
$this->badRequest($e);
}
}
}
}
} else { // get all elements of a ressource
$this->add($pairs);
}
} else {
$this->lengthRequired();
}
}
}
 
private function delete() {
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if ($this->uid) { // get a resource element
if (method_exists($service, 'deleteElement')) { // Delete element
if ($service->deleteElement($this->uid)) {
$this->noContent();
}
}
}
}
}
}
 
private function add($pairs = null) {
if (is_null($pairs)) {
$pairs = array();
// Récupération des paramètres passés dans le contenu de la requête HTTP (= POST)
// FIXME : vérifier que l'on récupère bien les données passées par PUT
if ($this->requestData) {
$pairs = $this->parseRequestData();
}
}
 
if (count($pairs) != 0) {
$resource_file = 'services/'.ucfirst($this->resource).'.php';
$resource_class = ucfirst($this->resource);
if (file_exists($resource_file)) {
include_once $resource_file;
if (class_exists($resource_class)) {
$service = new $resource_class($this->config);
if (method_exists($service,'createElement')) { // Create a new element
$ret_value = false;
try {
$ret_value = $service->createElement($pairs);
if($ret_value) $this->created();
else $this->badRequest();
} catch (Exception $e) {
$this->badRequest($e);
}
}
}
}
} else {
$this->lengthRequired();
}
}
 
/**
* Parse the HTTP request data.
* @return str[] Array of name value pairs
*/
private function parseRequestData() {
$values = array();
$pairs = explode('&', $this->requestData);
foreach ($pairs as $pair) {
$parts = explode('=', $pair);
if (isset($parts[0]) && isset($parts[1])) {
$parts[1] = rtrim(urldecode($parts[1]));
$values[$parts[0]] = $parts[1];
}
}
return $values;
}
 
/**
* Send a HTTP 201 response header.
*/
private function created($url = FALSE) {
header('HTTP/1.0 201 Created');
if ($url) {
header('Location: '.$url);
}
}
 
/**
* Send a HTTP 204 response header.
*/
private function noContent() {
header('HTTP/1.0 204 No Content');
}
 
/**
* Send a HTTP 400 response header.
*/
private function badRequest(Exception $e = NULL) {
header('HTTP/1.0 400 Bad Request');
if($e) echo $e->getMessage();
}
 
/**
* Send a HTTP 401 response header.
*/
private function unauthorized($realm = 'JRest') {
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
header('WWW-Authenticate: Basic realm="'.$realm.'"');
}
header('HTTP/1.0 401 Unauthorized');
}
 
/**
* Send a HTTP 404 response header.
*/
private function notFound() {
header('HTTP/1.0 404 Not Found');
}
 
/**
* Send a HTTP 405 response header.
*/
private function methodNotAllowed($allowed = 'GET, HEAD') {
header('HTTP/1.0 405 Method Not Allowed');
header('Allow: '.$allowed);
}
 
/**
* Send a HTTP 406 response header.
*/
private function notAcceptable() {
header('HTTP/1.0 406 Not Acceptable');
echo join(', ', array_keys($this->config['renderers']));
}
 
/**
* Send a HTTP 411 response header.
*/
private function lengthRequired() {
header('HTTP/1.0 411 Length Required');
}
 
/**
* Send a HTTP 500 response header.
*/
private function internalServerError() {
header('HTTP/1.0 500 Internal Server Error');
}
}
?>
/trunk/jrest/services/Gestion.php
39,7 → 39,7
} else {
foreach($projets as $projet) {
 
$cible_lien_desinscrire = 'http://www.tela-botanica.org/client/projet/jrest/DesinscriptionProjet/?id_projet='.$projet['p_id'].'&id_utilisateur='.$id_utilisateur.'&mail='.$mail_utilisateur;
$cible_lien_desinscrire = 'http://www.tela-botanica.org/' . PROJET_CHEMIN_APPLI . 'jrest/DesinscriptionProjet/?id_projet='.$projet['p_id'].'&id_utilisateur='.$id_utilisateur.'&mail='.$mail_utilisateur;
$cible_lien = 'http://www.tela-botanica.org/page:liste_projets?id_projet='.$projet['p_id'];
$resume_item = array('element' => $projet['p_titre'], 'lien_desinscrire' => $cible_lien_desinscrire, 'lien' => $cible_lien, 'intitule_lien' => 'Se d&eacute;sinscrire');
$resume['elements'][] = $resume_item;
/trunk/jrest/jrest.ini.php
1,6 → 1,6
;<?/*
[settings]
baseURL = "/client/projet/jrest/"
baseURL = "/reseau/projet/jrest/"
 
; Default
[appli]
35,7 → 35,7
 
; LOGS
[log]
cheminlog = "/client/projet/jrest/logs/"
cheminlog = "/reseau/projet/jrest/logs/"
timezone = "Europe/Paris"
taillemax = 100000
 
/trunk/projet.php
44,13 → 44,13
 
// Inclusion des styles selon papyrus
if (function_exists("GEN_stockerStyleExterne")) {
if (file_exists('client/projet/projet.css')) GEN_stockerStyleExterne('projet','client/projet/projet.css') ;
if (file_exists(PROJET_CHEMIN_APPLI . 'projet.css')) GEN_stockerStyleExterne('projet', PROJET_CHEMIN_APPLI . 'projet.css') ;
}
 
// Nettoyage de la variable logout de papyrus
$GLOBALS['url']->removeQueryString('logout');
 
// Nous indiquons à Papyrus de ne pas chercher de balises d'applettes dans le contenu généré par l'appli
// Nous indiquons � Papyrus de ne pas chercher de balises d'applettes dans le contenu g�n�r� par l'appli
$GLOBALS['_PAPYRUS_']['applette']['analyse'] = true;
// +------------------------------------------------------------------------------------------------------+
// | LISTE des constantes |
/trunk/wikini/wakka.config.php
15,7 → 15,7
"table_prefix" => strtolower($nom_wiki)."_",
"root_page" => "PagePrincipale",
"wakka_name" => $nom_wiki,
"base_url" => "http://www.tela-botanica.org/client/projet/wikini/wakka.php?wikini=$nom_wiki&wiki=",
"base_url" => "http://www.tela-botanica.org/reseau/projet/wikini/wakka.php?wikini=$nom_wiki&wiki=",
"rewrite_mode" => "0",
"meta_keywords" => "",
"meta_description" => "",
23,7 → 23,7
"handler_path" => "handlers",
"header_action" => "header",
"footer_action" => "footer",
"navigation_links" => "[[DerniersChangementsPages Derniers changements ]] :: [[TableauDeBord Tableau de bord ]]\n[[ParametresUtilisateur Paramêtres utilisateur ]]",
"navigation_links" => "[[DerniersChangementsPages Derniers changements ]] :: [[TableauDeBord Tableau de bord ]]\n[[ParametresUtilisateur Param�tres utilisateur ]]",
"referrers_purge_time" => "24",
"pages_purge_time" => "365",
"default_write_acl" => "*",
/trunk/projet.css
138,17 → 138,17
 
table.table_cadre {display:block;max-width:800px;}
.table_cadre a.tri_bas {
background: url("/client/projet/images/icon_sort_dwn.gif") no-repeat left;
background: url("/reseau/projet/images/icon_sort_dwn.gif") no-repeat left;
padding: 0 0 0 10px;
color:white;
}
.table_cadre a.tri_haut {
background: url("/client/projet/images/icon_sort_up.gif") no-repeat left;
background: url("/reseau/projet/images/icon_sort_up.gif") no-repeat left;
padding: 0 0 0 10px;
color:white;
}
.table_cadre a.tri_sans {
background: url("/client/projet/images/icon_sort.gif") no-repeat left;
background: url("/reseau/projet/images/icon_sort.gif") no-repeat left;
padding: 0 0 0 10px;
color:white;
}
/trunk/projet.desinscription.inc.php
42,8 → 42,8
// On se trouve dans la fonction afficherContenuCorps de inscription.php
 
 
 
include_once 'client/projet/configuration/projet.config.inc.php' ;
include_once 'configuration/projet.config.inc.php' ;
//include_once 'reseau/projet/configuration/projet.config.inc.php' ;
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
include_once PROJET_CHEMIN_CLASSES.'projetControleur.class.php' ;
/trunk/classes/HTML_listeDocuments.class.php
308,7 → 308,7
}
} else {
GEN_stockerFichierScript('dojo', 'api/js/dojo/dojo.js', 'text/javascript');
GEN_stockerFichierScript('dojoScriptProjet', 'client/projet/js/arbreDocument.js');
GEN_stockerFichierScript('dojoScriptProjet', PROJET_CHEMIN_APPLI . 'js/arbreDocument.js');
$res = '' ;
/trunk/classes/AJAX_arbreDocuments.class.php
70,7 → 70,7
/**
* Tableau contenant les actions possibles. "couper" => 1, "modifier" => 2,
* "supprimer" => 3 Elles seront passées en paramètre aux url des icones des
* "supprimer" => 3 Elles seront pass�es en param�tre aux url des icones des
* documents.
* @access private
*/
83,13 → 83,13
var $_chemin_icone = "icones/";
/**
* L'identifiant du répertoire que l'on est en train d'observer.
* L'identifiant du r�pertoire que l'on est en train d'observer.
* @access private
*/
var $_id_repertoire;
 
/**
* Un tableau contenant les id et les noms du chemin des répertoires. 0 => ["id"],
* Un tableau contenant les id et les noms du chemin des r�pertoires. 0 => ["id"],
* ["nom"] etc.
* @access private
*/
120,7 → 120,7
 
function AJAX_construitListe($id_projet, $droits, $mode = '', $objetDB = '') {
GEN_stockerFichierScript('dojoScriptProjet', 'client/projet/js/arbreDocument.js');
GEN_stockerFichierScript('dojoScriptProjet', PROJET_CHEMIN_APPLI . 'js/arbreDocument.js');
$res = '' ;
$RCPUrl = PROJET_CHEMIN_APPLI.'services/ecouteArbreFichier.php?id_projet='.$id_projet;
151,7 → 151,7
/**
*
*
* @param Array tableau_label Un tableau contenant les labels à afficher dans l'entête.
* @param Array tableau_label Un tableau contenant les labels � afficher dans l'ent�te.
* @return void
* @access public
*/
163,7 → 163,7
/**
*
*
* @param Array tableau_label Un tableau à deux dimensions avec les labels à afficher dans le corps du
* @param Array tableau_label Un tableau � deux dimensions avec les labels � afficher dans le corps du
* tableau.
* @return void
* @access public
173,11 → 173,11
$compteur = 0 ;$class[0] = 'ligne_impaire'; $class[1] = 'ligne_paire' ;
 
for ($i = 0; $i < count ($tableau_document) ; $i++) {
// Première condition : est-ce que le fichier a pour père le répertoire courant, si oui on l'affiche
// Premi�re condition : est-ce que le fichier a pour p�re le r�pertoire courant, si oui on l'affiche
if ($tableau_document[$i]->_id_pere == $this->_id_repertoire || $mode == 'ignore_repertoire') {
// d'abord l'image
$icone = '<img src="'.$tableau_document[$i]->getCheminIcone().'" />' ;
// Si le document est un répertoire, on ajoute id_repertoire au lien.
// Si le document est un r�pertoire, on ajoute id_repertoire au lien.
if ($tableau_document[$i]->isRepertoire()) {
$this->_url->addQueryString ('id_repertoire', $tableau_document[$i]->getChemin()) ;
$lien = $this->_url->getURL() ;
184,24 → 184,24
} else { // Si c'est un fichier, on fait un lien direct
$lien = $tableau_document[$i]->getChemin() ;
}
// pour éviter des effets de bords, on enlève id_repertoire de l'url
// dans le cas d'un répertoire, pour les fichiers on le laisse pour
// qu'après une opération, on reste dans le répertoire où a eu lieu l'opération
// pour �viter des effets de bords, on enl�ve id_repertoire de l'url
// dans le cas d'un r�pertoire, pour les fichiers on le laisse pour
// qu'apr�s une op�ration, on reste dans le r�pertoire o� a eu lieu l'op�ration
if ($tableau_document[$i]->isRepertoire()) $this->_url->removeQueryString('id_repertoire') ;
// on insère le lien
// on ins�re le lien
$lien_nom = '<a href="'.$lien.'">'.$icone.' '.$tableau_document[$i]->getNomLong()."</a>\n" ;
// Pour la taille on divise par 1000 et on écrit Ko
// Pour la taille on divise par 1000 et on �crit Ko
$taille = round($tableau_document[$i]->getTaille() / 1000).'&nbsp;Ko' ;
// Récupération de l'auteur
// R�cup�ration de l'auteur
include_once PROJET_CHEMIN_CLASSES.'annuaire.class.php' ;
$annuaire = new annuaire($objetDB, array('table' => PROJET_ANNUAIRE, 'identifiant' => PROJET_CHAMPS_ID,
'nom' => PROJET_CHAMPS_NOM, 'prenom' => PROJET_CHAMPS_PRENOM)) ;
$annuaire->setId($tableau_document[$i]->_id_proprietaire) ;
$nom_prenom = $annuaire->getInfo('nom').' '.$annuaire->getInfo('prenom') ;
// On rempli le tableau à donner en paramètre à HTML_Table avec toutes ces infos, une par colonne
// On rempli le tableau � donner en param�tre � HTML_Table avec toutes ces infos, une par colonne
$ligne_tableau = array($lien_nom, $taille, $nom_prenom, $tableau_document[$i]->getDateMiseAJour()) ;
if ($droits <= PROJET_DROIT_CONTRIBUTEUR) array_push ($ligne_tableau, $tableau_document[$i]->getVisibilite()) ;
210,7 → 210,7
array_push ($ligne_tableau, $this->_actions ($tableau_document[$i])) ;
if ($tableau_document[$i]->getVisibilite() != 'prive' || $droits < PROJET_DROIT_AUCUN) {
$this->addRow ($ligne_tableau, array('class' => $class[$compteur]), 'TD', true) ;
// enfin , s'il y a une description, on l'ajoute, mais sur une ligne entière (colspan)
// enfin , s'il y a une description, on l'ajoute, mais sur une ligne enti�re (colspan)
if ($tableau_document[$i]->getDescription() != "") {
$this->addRow (array ($tableau_document[$i]->getDescription()),
array ('colspan' => $this->getColCount(), 'class' => $class[$compteur])) ;
228,7 → 228,7
/**
*
*
* @param Array actions Un tableau avec les valeurs d'actions comme clé. "couper", modifier",
* @param Array actions Un tableau avec les valeurs d'actions comme cl�. "couper", modifier",
* "supprimer".
* @return void
* @access public
251,8 → 251,8
} // end of member function setCheminIcones
 
/**
* Surcharge de l'opération de la classe mère. Ajoute la navigation dans les
* répertoires.
* Surcharge de l'op�ration de la classe m�re. Ajoute la navigation dans les
* r�pertoires.
*
* @return string
* @access public
283,7 → 283,7
/**
*
*
* @param Array tableau_navigation Un tableau contenant les identifiants et les noms des répertoires. 0 => ["id"],
* @param Array tableau_navigation Un tableau contenant les identifiants et les noms des r�pertoires. 0 => ["id"],
* ["nom"] etc.
* @return void
* @access public
294,7 → 294,7
} // end of member function setCheminNavigation
 
/**
* Affiche la légende des actions du module "documents"
* Affiche la l�gende des actions du module "documents"
*
* @return string
* @access public
310,7 → 310,7
 
 
/**
* Renvoie le chemin HTML, depuis le répertoire courant jusqu'à la racine.
* Renvoie le chemin HTML, depuis le r�pertoire courant jusqu'� la racine.
*
* @return string
* @access private
326,7 → 326,7
 
/**
* Renvoie une chaine contenant le code html des icones des actions possibles sur un
* fichier, c'est à dire couper, modifier, supprimer.
* fichier, c'est � dire couper, modifier, supprimer.
*
* @return string
* @access private
/trunk/classes/projetControleur.class.php
43,9 → 43,9
 
if (isset ($GLOBALS['lang'])) {
/** le fichier de langue, par defaut PROJET_LANGUE_DEFAUT */
include_once 'client/projet/langues/pro_langue_'.$GLOBALS['lang'].'.inc.php' ;
include_once PROJET_CHEMIN_APPLI . 'langues/pro_langue_'.$GLOBALS['lang'].'.inc.php' ;
} else {
include_once 'client/projet/langues/pro_langue_'.PROJET_LANGUE_DEFAUT.'.inc.php' ;
include_once PROJET_CHEMIN_APPLI . 'langues/pro_langue_'.PROJET_LANGUE_DEFAUT.'.inc.php' ;
}
 
require_once GEN_CHEMIN_API.'sql/SQL_manipulation.fonct.php' ;
163,7 → 163,7
var $_id_projet;
 
/**
* L'identifiant du repertoire que l'on est en train d'observer. Il sera passé en
* L'identifiant du repertoire que l'on est en train d'observer. Il sera pass� en
* parametre a la classe HTML_listeDocuments.
* @access private
*/
349,7 → 349,7
* Permet de fixer la valeur de l'action pour l'objet projetControleur. Cette action
* provient generalement de $_POST['action'] ou $_GET['action']
*
* @param int action L'action à passer provient de l'URL.
* @param int action L'action � passer provient de l'URL.
* @return void
* @access public
*/
360,9 → 360,9
 
/**
* Permet de fixer la valeur de du service pour l'objet projetControleur. Ce service
* provient généralement de $_POST['service'] ou $_GET['service']
* provient g�n�ralement de $_POST['service'] ou $_GET['service']
*
* @param int service Le service à appeler provient de l'URL.
* @param int service Le service � appeler provient de l'URL.
* @return void
* @access public
*/
703,7 → 703,7
}
 
/**
* Valide le formulaire et appelle la fonction de mise à jour.
* Valide le formulaire et appelle la fonction de mise � jour.
*
* @return void
* @access public
1396,7 → 1396,7
$msg = '';
if (count ($listes) != 0) {
$info_liste = $liste_ext->getInfoListe($listes[0]);
$msg = 'Pensez si vous le souhaitez à vous d&eacute;sinscrire de la liste de discussion, h&eacute;berg&eacute;e par Yahoo Groupes.';
$msg = 'Pensez si vous le souhaitez � vous d&eacute;sinscrire de la liste de discussion, h&eacute;berg&eacute;e par Yahoo Groupes.';
$msg .= ' Vous pouvez le faire en <a href="mailto:';
$msg .= $info_liste->AGO_A_MAILDESA.'">cliquez ici</a>';
}
1505,7 → 1505,7
function supprimerWiki( )
{
include_once PROJET_CHEMIN_CLASSES.'gestion_wikini.class.php' ;
// On crée une nouvelle connexion avec les paramètres spécifiques aux wikinis
// On cr�e une nouvelle connexion avec les param�tres sp�cifiques aux wikinis
$connexion_bd = DB::connect('mysql://'.PROJET_UTILISATEUR_WIKINI.':'.PROJET_MDP_WIKINI.'@'.PROJET_HOTE_WIKINI.'/'.PROJET_DB_WIKINI) ;
$gerantWiki = new gestion_wikini($connexion_bd) ;
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
1515,7 → 1515,7
} // end of member function supprimerWiki
 
/**
* Permet de lier une ou plusieurs listes de la table agora à un projet.
* Permet de lier une ou plusieurs listes de la table agora � un projet.
*
* @return string
* @access public
1525,7 → 1525,7
$requete = 'show tables like \'agora\'' ;
$resultat = $this->_db->query ($requete);
if ($resultat->numRows() == 0) {
return 'Cette fonctionnalité n\'est pas active' ;
return 'Cette fonctionnalit� n\'est pas active' ;
}
$res = '<h1>'.PROJET_REFERENCER_LISTE.'</h1>' ;
include_once PROJET_CHEMIN_CLASSES.'liste_externe.class.php' ;
/trunk/squelettes/boutons/bouton_login.tpl.html
1,5 → 1,5
<div id="projet_lien_login"><a>
<img src="client/projet/images/identification.png" />
<img src="reseau/projet/images/identification.png" />
<span>S'identifier</span></a><br style="clear:both;" />
<!-- PAPYRUS_IDENTIFICATION -->
</div>
/trunk/squelettes/liste_projet_expert.tpl.html
4,7 → 4,7
<div id="legende">
A Chaque ligne du tableau correspond un projet, les diff&eacute;rentes colonnes donnent des indications sur les projets.
<h3>Les forums</h3>
<p>L'ic&ocirc;ne <img src="sites/commun/generique/images/favicones/yahoo.png" alt="Yahoo"/> indique qu'un liste Yahoo ! est associée &agrave; ce projet.
<p>L'ic&ocirc;ne <img src="sites/commun/generique/images/favicones/yahoo.png" alt="Yahoo"/> indique qu'un liste Yahoo ! est associ�e &agrave; ce projet.
Le nombre entre parenth&egrave;ses indique le nombre de messages &eacute;chang&eacute; sur ce forum cette semaine.</p>
<p>L'ic&ocirc;ne <img src="sites/commun/generique/images/favicones/tela_botanica.png" alt="Tela Botanica" /> indique un liste de discussion associ&eacute;e
au projet et h&eacute;berg&eacute;e par Tela Botanica. Le nombre entre parenth&egrave;ses indique le nombre de nouveaux messages de la semaine.</p>
27,11 → 27,11
</ul>
<?php if ($loggue) : ?>
<h3>Votre inscription</h3>
<p>Lorsque vous &ecirc;tes identifi&eacute; sur le site de Tela Botanica, une colonne intitul&eacute;e "Votre inscription" s'affiche. Elle permet de voir rapidement les projets auxquels vous êtes inscrit et votre statut dans ces projets :</p>
<p>Lorsque vous &ecirc;tes identifi&eacute; sur le site de Tela Botanica, une colonne intitul&eacute;e "Votre inscription" s'affiche. Elle permet de voir rapidement les projets auxquels vous �tes inscrit et votre statut dans ces projets :</p>
<ul>
<li>Une &eacute;toile verte <img src="http://www.tela-botanica.org/client/projet/icones/etoile_verte.png" alt="étoile verte" /> indique que vous &ecirc;tes <b>Participant</b> &agrave; ce projet.</li>
<li>Une &eacute;toile rouge <img src="http://www.tela-botanica.org/client/projet/icones/etoile_rouge.png" alt="étoile rouge" /> signale que vous êtes <b>Coordonnateur</b> de ce projet.</li>
<li>Une &eacute;toile grise <img src="http://www.tela-botanica.org/client/projet/icones/etoile_grise.png" alt="étoile verte" /> signifie que vous avez demand&eacute; votre inscription &agrave; ce projet et que votre demande est <b>en attente de validation</b> par un mod&eacute;rateur.</li>
<li>Une &eacute;toile verte <img src="http://www.tela-botanica.org/reseau/projet/icones/etoile_verte.png" alt="�toile verte" /> indique que vous &ecirc;tes <b>Participant</b> &agrave; ce projet.</li>
<li>Une &eacute;toile rouge <img src="http://www.tela-botanica.org/reseau/projet/icones/etoile_rouge.png" alt="�toile rouge" /> signale que vous �tes <b>Coordonnateur</b> de ce projet.</li>
<li>Une &eacute;toile grise <img src="http://www.tela-botanica.org/reseau/projet/icones/etoile_grise.png" alt="�toile verte" /> signifie que vous avez demand&eacute; votre inscription &agrave; ce projet et que votre demande est <b>en attente de validation</b> par un mod&eacute;rateur.</li>
</ul>
<?php endif; ?>
</div>
54,7 → 54,7
<?php foreach ($tableau_donnees as $projet) : ?>
<tr <?php if ($pair) {echo ' class="ligne_paire"'; $pair = false; } else { echo 'class="ligne_impaire"'; $pair = true;} ?>>
<td><a href="<?= $projet['lien'] ;?>"><?= $projet['titre']; ?></a></td>
<td><?= $projet['forum'] ; ?><?php if ($projet['nombre_message']) : ?><span title="Nombres de messages échangés cette semaine">( + <?php echo $projet['nombre_message']; ?> )</span><?php endif; ?></td>
<td><?= $projet['forum'] ; ?><?php if ($projet['nombre_message']) : ?><span title="Nombres de messages �chang�s cette semaine">( + <?php echo $projet['nombre_message']; ?> )</span><?php endif; ?></td>
<td><?= $projet['wikini'] ; ?></td>
<td><?= $projet['wikini_rss'] ; ?></td>
<td><?= $projet['document'] ; ?></td>
/trunk/projet.modification.inc.php
42,7 → 42,8
 
 
 
include_once 'client/projet/configuration/projet.config.inc.php' ;
include_once 'configuration/projet.config.inc.php' ;
//include_once 'reseau/projet/configuration/projet.config.inc.php' ;
include_once PROJET_CHEMIN_CLASSES.'projet.class.php' ;
include_once PROJET_CHEMIN_CLASSES.'participe.class.php' ;
include_once PROJET_CHEMIN_CLASSES.'projetControleur.class.php' ;
54,11 → 55,11
// On boucle sur chaque projet et on desinscrit l'utilisateur
foreach ($tableau_projet as $projet) {
// si le projet possède une liste associée
// si le projet poss�de une liste associ�e
if ($projet->avoirListe()) {
$est_abonne = '0' ;
// on vérifie si l'utilisateur y est abonné
// on v�rifie si l'utilisateur y est abonn�
$projet->getListesAssociees() ;
 
try {
/trunk/.
Property changes:
Added: svn:mergeinfo
Merged /branches/v3.1-sardain:r435-436