/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é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/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).' 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ésinscrire de la liste de discussion, hébergée par Yahoo Groupes.'; |
$msg = 'Pensez si vous le souhaitez � vous désinscrire de la liste de discussion, hébergé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/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/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/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érentes colonnes donnent des indications sur les projets. |
<h3>Les forums</h3> |
<p>L'icône <img src="sites/commun/generique/images/favicones/yahoo.png" alt="Yahoo"/> indique qu'un liste Yahoo ! est associée à ce projet. |
<p>L'icône <img src="sites/commun/generique/images/favicones/yahoo.png" alt="Yahoo"/> indique qu'un liste Yahoo ! est associ�e à ce projet. |
Le nombre entre parenthèses indique le nombre de messages échangé sur ce forum cette semaine.</p> |
<p>L'icône <img src="sites/commun/generique/images/favicones/tela_botanica.png" alt="Tela Botanica" /> indique un liste de discussion associée |
au projet et hébergée par Tela Botanica. Le nombre entre parenthè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 êtes identifié sur le site de Tela Botanica, une colonne intitulé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 êtes identifié sur le site de Tela Botanica, une colonne intitulé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 étoile verte <img src="http://www.tela-botanica.org/client/projet/icones/etoile_verte.png" alt="étoile verte" /> indique que vous êtes <b>Participant</b> à ce projet.</li> |
<li>Une é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 étoile grise <img src="http://www.tela-botanica.org/client/projet/icones/etoile_grise.png" alt="étoile verte" /> signifie que vous avez demandé votre inscription à ce projet et que votre demande est <b>en attente de validation</b> par un modérateur.</li> |
<li>Une étoile verte <img src="http://www.tela-botanica.org/reseau/projet/icones/etoile_verte.png" alt="�toile verte" /> indique que vous êtes <b>Participant</b> à ce projet.</li> |
<li>Une é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 étoile grise <img src="http://www.tela-botanica.org/reseau/projet/icones/etoile_grise.png" alt="�toile verte" /> signifie que vous avez demandé votre inscription à ce projet et que votre demande est <b>en attente de validation</b> par un modé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/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/. |
---|
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v3.1-sardain:r435-436 |