- [x] [manager/Repo] Gestion des Repo
- [x] [ManagerError] Correction/ajout des codes erreurs - [x] [ModuleRequest] Modification des erreurs
This commit is contained in:
parent
1ff26f01f7
commit
3ec1b53ee8
29
automate.php
29
automate.php
|
@ -140,7 +140,7 @@
|
|||
|
||||
return true;
|
||||
|
||||
}selectMachines();
|
||||
}//selectMachines();
|
||||
|
||||
|
||||
|
||||
|
@ -158,7 +158,7 @@
|
|||
function displayUsers(){
|
||||
|
||||
// Creation de la requete
|
||||
$request = new \manager\ModuleRequest('firstModule/getUsers');
|
||||
$request = new \manager\ModuleRequest('userDefaultModule/getAll');
|
||||
$answer = $request->dispatch();
|
||||
// Debug error
|
||||
var_dump( $answer->error );
|
||||
|
@ -166,7 +166,7 @@
|
|||
|
||||
$users = $answer->get('users');
|
||||
|
||||
|
||||
var_dump( $users );
|
||||
|
||||
return true;
|
||||
|
||||
|
@ -199,4 +199,27 @@
|
|||
}//testModuleDispatcher();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* TEST DU DISPATCHER DES REPO
|
||||
*
|
||||
* @return nomRetour<typeRetour> Description du retour
|
||||
|
||||
*/
|
||||
function testRepoDispatcher(){
|
||||
|
||||
// Creation d'une requete en objet
|
||||
$req1 = new manager\Repo('user/get', array('19'));
|
||||
var_dump( $req1->answer() );
|
||||
|
||||
if( $req1->error != manager\ManagerError::Success )
|
||||
var_dump( manager\ManagerError::explicit($req1->error) );
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
}testRepoDispatcher();
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"user" :[
|
||||
"get",
|
||||
"getAll",
|
||||
"getGroup"
|
||||
],
|
||||
|
||||
"machine" :[
|
||||
"get",
|
||||
"getAll",
|
||||
"getGroup"
|
||||
],
|
||||
|
||||
"group" :[
|
||||
"get",
|
||||
"getAll",
|
||||
"getUser",
|
||||
"getMachine"
|
||||
]
|
||||
|
||||
}
|
|
@ -1,2 +1,2 @@
|
|||
#WRAPPER>#CONTAINER>.sub-menu-side{display:block;position:relative}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]{display:block;position:relative;width:7.5em;padding:.3em 1em .3em 2em;margin:1em;border-radius:3px;color:#5b5e63;text-shadow:1px 1px white;white-space:nowrap;transition:all .2s;cursor:pointer;overflow:hidden}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg{display:inline-block;position:absolute;left:.5em;top:50%;width:1em;height:1em;transform:translateY(-50%)}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg path{fill:#5b5e63 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active{color:#121213;background-color:#d8deea;box-shadow:inset 0 0 4px #c8ced9}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover>.svg>svg path,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active>.svg>svg path{fill:#121213 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:nth-child(1){margin-top:1em}#WRAPPER>#CONTAINER>section{display:none;flex-grow:1}#WRAPPER>#CONTAINER>section.active{display:block}#WRAPPER>#CONTAINER>section.active.list{display:flex;flex-direction:column}#WRAPPER>#CONTAINER>section.active.list .inline-box{flex:1 1 1}#WRAPPER>#CONTAINER>section>.inline-box{display:inline-block;position:relative;margin:.3em 0;padding:1em;border-radius:3px;box-shadow:0 0 1px #b7b7b7;background-color:#fff}#WRAPPER>#CONTAINER>section>.inline-box .title{display:inline-block;font-size:1.15em;font-weight:bold}#WRAPPER>#CONTAINER>section>.inline-box .title>span{font-size:.8em;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .code{display:inline-block;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .code svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .code svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .mail{display:block;margin:1em;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .mail svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .mail svg path{fill:#777 !important}
|
||||
#WRAPPER>#CONTAINER>.sub-menu-side{display:block;position:relative}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]{display:block;position:relative;width:7.5em;padding:.3em 1em .3em 2em;margin:1em;border-radius:3px;color:#5b5e63;text-shadow:1px 1px white;white-space:nowrap;transition:all .2s;cursor:pointer;overflow:hidden}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg{display:inline-block;position:absolute;left:.5em;top:50%;width:1em;height:1em;transform:translateY(-50%)}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]>.svg>svg path{fill:#5b5e63 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active{color:#121213;background-color:#d8deea;box-shadow:inset 0 0 4px #c8ced9}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:hover>.svg>svg path,#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink].active>.svg>svg path{fill:#121213 !important}#WRAPPER>#CONTAINER>.sub-menu-side>span[data-sublink]:nth-child(1){margin-top:1em}#WRAPPER>#CONTAINER>section{display:none;flex-grow:1}#WRAPPER>#CONTAINER>section.active{display:block}#WRAPPER>#CONTAINER>section.active.list{display:flex;flex-direction:column}#WRAPPER>#CONTAINER>section.active.list .inline-box{flex:1 1 1}#WRAPPER>#CONTAINER>section>.inline-box{display:inline-block;position:relative;margin:.3em 0;padding:1em;border-radius:3px;box-shadow:0 0 1px #b7b7b7;background-color:#fff}#WRAPPER>#CONTAINER>section>.inline-box .title{display:inline-block;font-size:1.15em;font-weight:bold}#WRAPPER>#CONTAINER>section>.inline-box .title>span{font-size:.8em;color:#333}#WRAPPER>#CONTAINER>section>.inline-box .code{display:inline-block;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .code svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .code svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .mail{display:block;margin:1em;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .mail svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .mail svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .groups{display:block;margin:1em;color:#777}#WRAPPER>#CONTAINER>section>.inline-box .groups svg{display:inline-block;position:relative;margin-left:.5em;margin-right:.5em;margin-bottom:-.6em;width:1.5em;height:2em}#WRAPPER>#CONTAINER>section>.inline-box .groups svg path{fill:#777 !important}#WRAPPER>#CONTAINER>section>.inline-box .groups span{display:inline-block;padding:.1em .5em;margin-right:.2em;border-radius:3px;border:1px solid #bdbdbd;box-shadow:inset 0 0 2px #fdfdfd;background-color:#f9f9f9;color:#666;cursor:default}
|
||||
/*# sourceMappingURL=container.css.map */
|
||||
|
|
|
@ -169,6 +169,46 @@
|
|||
|
||||
}
|
||||
|
||||
|
||||
/* (4) Groupes */
|
||||
.groups{
|
||||
display: block;
|
||||
margin: 1em;
|
||||
color: #777;
|
||||
|
||||
// svg (icone)
|
||||
svg{
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin-left: .5em;
|
||||
margin-right: .5em;
|
||||
margin-bottom: -.6em;
|
||||
width: 1.5em;
|
||||
height: 2em;
|
||||
|
||||
path{
|
||||
fill: #777 !important;
|
||||
}
|
||||
}
|
||||
|
||||
span{
|
||||
display: inline-block;
|
||||
padding: .1em .5em;
|
||||
margin-right: .2em;
|
||||
|
||||
border-radius: 3px;
|
||||
border: 1px solid #bdbdbd;
|
||||
box-shadow: inset 0 0 2px #fdfdfd;
|
||||
|
||||
background-color: #f9f9f9;
|
||||
|
||||
color: #666;
|
||||
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -26,21 +26,25 @@
|
|||
// Le @path n'est pas renseigne
|
||||
const MissingPath = 4;
|
||||
|
||||
// Le @path n'est pas du bon type
|
||||
const WrongPathType = 5;
|
||||
|
||||
// Verification de la coherence du chemin (existe dans la conf)
|
||||
const WrongPath = 6;
|
||||
const WrongPathModule = 5;
|
||||
|
||||
// Module non specifie dans la conf
|
||||
const UnknownModule = 7;
|
||||
const UnknownModule = 6;
|
||||
|
||||
// Methode non specifie pour ce Module dans la conf
|
||||
const UnknownMethod = 8;
|
||||
const UnknownMethod = 7;
|
||||
|
||||
// Methode inamorcable
|
||||
const UncallableMethod = 9;
|
||||
const UncallableMethod = 8;
|
||||
|
||||
/* Repo */
|
||||
|
||||
// Verification de la coherence du chemin (existe dans la conf)
|
||||
const WrongPathRepo = 9;
|
||||
|
||||
// Module non specifie dans la conf
|
||||
const UnknownRepo = 10;
|
||||
|
||||
|
||||
/* EXPLICITE UN CODE D'ERREUR
|
||||
|
@ -57,11 +61,14 @@
|
|||
case self::InvalidFlags: return "Les specifications (drapeaux) sont incorrects"; break;
|
||||
case self::UnreachableResource: return "La ressource n'existe pas (404)"; break;
|
||||
case self::MissingPath: return "Le chemin de delegation n'a pas ete renseigne"; break;
|
||||
case self::WrongPathType: return "Le chemin de delegation n'est pas du bon type (chaine de caractere)"; break;
|
||||
case self::WrongPath: return "Le chemin de delegation est incorrect ('nomModule/nomMethode')"; break;
|
||||
case self::WrongPathModule: return "Le chemin de delegation est incorrect ('nomModule/nomMethode')"; break;
|
||||
case self::WrongPathRepo: return "Le chemin de delegation est incorrect ('nomRepo/nomMethode')"; break;
|
||||
case self::UnknownModule: return "Le module n'existe pas"; break;
|
||||
case self::UnknownRepo: return "Le repo n'existe pas"; break;
|
||||
case self::UnknownMethod: return "Le methode n'existe pas"; break;
|
||||
case self::UncallableMethod: return "Le methode n'est pas amorcable"; break;
|
||||
|
||||
default: return "Erreur inconnue..."; break;
|
||||
}
|
||||
|
||||
return 'Aucune erreur trouvee';
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
// Attributs prives utiles (initialisation)
|
||||
private $path;
|
||||
private $data;
|
||||
private $modules;
|
||||
|
||||
// Contiendra la reponse a la requete
|
||||
public $answer;
|
||||
|
@ -66,7 +67,7 @@
|
|||
=========================================================*/
|
||||
// Type de @path
|
||||
if( !is_string($path) ){ // Si le type est incorrect
|
||||
$this->error = ManagerError::WrongPathType;
|
||||
$this->error = ManagerError::WrongPathModule;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
|
@ -199,7 +200,7 @@
|
|||
/* [1] Verification format general
|
||||
=========================================================*/
|
||||
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
|
||||
$this->error = ManagerError::WrongPathType;
|
||||
$this->error = ManagerError::WrongPathModule;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
<?php
|
||||
|
||||
namespace manager;
|
||||
|
||||
|
||||
// FORMAT:
|
||||
//
|
||||
// path: "nomModule/nomMethode"
|
||||
// data1: {donnee1}
|
||||
// data2: {donnee2}
|
||||
// ...
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
class Repo{
|
||||
|
||||
// Constantes
|
||||
public static $config_path = 'f/json/repositories/conf';
|
||||
|
||||
|
||||
// Attributs prives utiles (initialisation)
|
||||
private $path;
|
||||
private $data;
|
||||
private $repositories;
|
||||
|
||||
// Contiendra la reponse a la requete
|
||||
private $answer;
|
||||
|
||||
// Contiendra l'etat de la requete
|
||||
public $error;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* CONSTRUCTEUR D'UNE REQUETE DE MODULE
|
||||
*
|
||||
* @path<String> Chemin de delegation ("repo/methode")
|
||||
* @data<Array> Tableau contenant les parametres utiles au traitement
|
||||
*
|
||||
* @return status<Boolean> Retourne si oui ou non tout s'est bien passe
|
||||
*
|
||||
*/
|
||||
public function __construct($path=null, $data=null){
|
||||
// Si pas parametre manquant, on quitte
|
||||
if( $path == null ){
|
||||
$this->error = ManagerError::MissingPath;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* [0] On met a jour la configuration
|
||||
=========================================================*/
|
||||
// Modules specifies
|
||||
$this->repositories = json_decode( ResourceDispatcher::getResource(self::$config_path), true );
|
||||
|
||||
// Gestion de l'erreur de parsage
|
||||
if( $this->repositories == null ){
|
||||
$this->error = ManagerError::ParsingFailed;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* [1] Verification des types des parametres
|
||||
=========================================================*/
|
||||
// Type de @path
|
||||
if( !is_string($path) ){ // Si le type est incorrect
|
||||
$this->error = ManagerError::WrongPathRepo;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
// Type de @data (optionnel)
|
||||
$data = (is_array($data)) ? $data : array();
|
||||
|
||||
|
||||
/* [2] Verification du chemin (existence repo+methode)
|
||||
=========================================================*/
|
||||
if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution
|
||||
return false;
|
||||
// Gestion d'erreur interne
|
||||
|
||||
|
||||
/* [3] Construction de l'objet
|
||||
=========================================================*/
|
||||
$this->data = $data;
|
||||
$this->error = ManagerError::Success;
|
||||
|
||||
/* [4] Enregistrement de la reponse
|
||||
=========================================================*/
|
||||
$this->answer = $this->dispatch();
|
||||
|
||||
|
||||
|
||||
return true; // On retourne que tout s'est bien passe
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function answer(){
|
||||
return $this->answer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* EXECUTE LE TRAITEMENT ASSOCIE ET REMPLIE LA REPONSE
|
||||
*
|
||||
* @return answer<mixed*> Retourne une reponse, si tout s'est bien passe
|
||||
*
|
||||
*/
|
||||
public function dispatch(){
|
||||
/* [1] On verifie qu'aucune erreur n'a ete signalee
|
||||
=========================================================*/
|
||||
if( $this->error != ManagerError::Success ) // si il y a une erreur
|
||||
return false; // on la passe a la reponse
|
||||
|
||||
|
||||
/* [2] On verifie que la methode est amorcable
|
||||
=========================================================*/
|
||||
if( !is_callable($this->getFunctionCaller()) ){
|
||||
$this->error = ManagerError::UncallableMethod;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* [3] On amorce la methode
|
||||
=========================================================*/
|
||||
return call_user_func_array( $this->getFunctionCaller(), $this->data );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* VERIFICATION DU FORMAT ET DE LA COHERENCE DU CHEMIN SPECIFIE
|
||||
*
|
||||
* @path<String> String correspondant au chemin de delegation ("repo/methode")
|
||||
*
|
||||
* @return validity<Boolean> Retourne si oui ou non l'objet est correct
|
||||
*
|
||||
*/
|
||||
private function checkPath($path){
|
||||
/* [1] Verification format general
|
||||
=========================================================*/
|
||||
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
|
||||
$this->error = ManagerError::WrongPathRepo;
|
||||
return false;
|
||||
}
|
||||
|
||||
// On recupere les donnes de la regex
|
||||
$repository = $matches[1];
|
||||
$method = $matches[2];
|
||||
|
||||
/* [2] Verification de l'existence du repo (conf)
|
||||
=========================================================*/
|
||||
if( !array_key_exists($repository, $this->repositories) ){ // Si le repo n'est pas specifie dans la conf
|
||||
$this->error = ManagerError::UnknownRepo;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
/* [3] Verification de l'existence de la methode (conf)
|
||||
=========================================================*/
|
||||
if( array_search($method, $this->repositories[$repository]) === false ){ // Si la methode n'est pas specifie dans la conf
|
||||
$this->error = ManagerError::UnknownMethod;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* [4] Enregistrement du chemin et renvoi de SUCCESS
|
||||
=========================================================*/
|
||||
$this->path = array(
|
||||
'repo' => $repository,
|
||||
'method' => $method
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE
|
||||
*
|
||||
* @return path<Array> Retourne le chemin d'amorcage de la requete
|
||||
*
|
||||
*/
|
||||
private function getFunctionCaller(){
|
||||
return array( '\\manager\\repo\\'.$this->path['repo'], $this->path['method'] );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -6,8 +6,11 @@
|
|||
|
||||
|
||||
public static function getAll(){
|
||||
// On recupere les donnees
|
||||
$users = new \manager\Repo('user/getAll');
|
||||
|
||||
return array(
|
||||
'users' => \manager\Database::delNumeric( \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user")->fetchAll() )
|
||||
'users' => $users->answer()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
namespace manager\repo;
|
||||
|
||||
class user{
|
||||
|
||||
|
||||
/* RENVOIE LA LISTE DE TOUS LES UTILISATEURS
|
||||
*
|
||||
* @return utilisateurs<Array> Liste des utilisateurs de la BDD
|
||||
*
|
||||
*/
|
||||
public static function getAll(){
|
||||
// On ecrit la requete
|
||||
$request = \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user");
|
||||
|
||||
// On recupere le resutat
|
||||
$answer = $request->fetchAll();
|
||||
|
||||
// On retourne en supprimant les indices numeriques
|
||||
return \manager\Database::delNumeric( $answer );
|
||||
}
|
||||
|
||||
|
||||
/* RENVOIE L'UTILISATEUR D'ID DONNE
|
||||
*
|
||||
* @return utilisateur<Array> Renvoie l'utilisateur d'id donne si existe
|
||||
* @return error<Boolean> Retourne FALSE si aucun resultat
|
||||
*
|
||||
*/
|
||||
public static function get($id){
|
||||
// On ecrit la requete
|
||||
$request = \manager\Database::getPDO()->prepare("SELECT * FROM user
|
||||
WHERE id_user = :id");
|
||||
|
||||
// On execute la requete
|
||||
$request->execute(array(
|
||||
':id' => $id
|
||||
));
|
||||
|
||||
// On recupere 1 seul utilisateur
|
||||
$answer = $request->fetch();
|
||||
|
||||
// Gestion d'erreur -> aucun resultat
|
||||
if( $answer == null )
|
||||
return false;
|
||||
|
||||
// On retourne en supprimant les indices numeriques
|
||||
return \manager\Database::delNumeric( $answer, true );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
enable-background="new 0 0 512 512"
|
||||
height="512px"
|
||||
id="Layer_1"
|
||||
version="1.1"
|
||||
viewBox="0 0 512 512"
|
||||
width="512px"
|
||||
xml:space="preserve"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="1455201790_folder.svg"><metadata
|
||||
id="metadata9"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs7" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="640"
|
||||
inkscape:window-height="480"
|
||||
id="namedview5"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.4609375"
|
||||
inkscape:cx="256"
|
||||
inkscape:cy="256"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="34"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="Layer_1" /><path
|
||||
d="M463.518,94.909H193.885v-10.37c0-22.908-18.574-41.482-41.482-41.482H48.699 c-22.908,0-41.482,18.574-41.482,41.482v51.852v72.593v217.78c0,22.907,18.574,41.482,41.482,41.482h414.819 c22.908,0,41.482-18.575,41.482-41.482V136.391C505,113.483,486.426,94.909,463.518,94.909z M27.958,84.539 c0-11.435,9.308-20.741,20.741-20.741h103.705c11.433,0,20.741,9.306,20.741,20.741v10.37v20.741h20.741h269.633 c11.433,0,20.741,9.306,20.741,20.741v20.741H27.958v-20.741V84.539z M463.518,447.506H48.699c-11.433,0-20.741-9.307-20.741-20.741 v-217.78v-31.111h456.301v248.892C484.259,438.198,474.952,447.506,463.518,447.506z"
|
||||
fill="#37404D"
|
||||
id="path3" /></svg>
|
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 713 B |
7
todo.md
7
todo.md
|
@ -13,6 +13,10 @@
|
|||
############
|
||||
# EN COURS #
|
||||
############
|
||||
- [ ] Gestion des groupes (utilisateurs/machines)
|
||||
- [ ] Creation d'un groupe individuel pour utilisateurs
|
||||
- [ ] Creation d'un groupe individuel pour machines
|
||||
- [ ] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine)
|
||||
- [ ] Prendre en compte au lieu de SERVER['HTTP_HOST'] l'hote et son dossier source
|
||||
- [ ] Gestion de l'erreur de chargement ou erreur de nav (page-manager)
|
||||
- [.] [/users/view] Affichage basique de liste d'elements complexes (users/machines/journal, ...)
|
||||
|
@ -34,6 +38,9 @@
|
|||
########
|
||||
# FAIT #
|
||||
########
|
||||
- [x] [manager/Repo] Gestion des Repo
|
||||
- [x] [ManagerError] Correction/ajout des codes erreurs
|
||||
- [x] [ModuleRequest] Modification des erreurs
|
||||
- [x] [ResourceDispatcher] Modification du gestionnaire de ressource car ne marche pas en ligne
|
||||
- [x] [css/container.css + js/action-script.js] Gestion de l'affichage de la page associee au sous-menu (.active)
|
||||
- [x] [view/*.php] Modification des views
|
||||
|
|
|
@ -78,6 +78,15 @@
|
|||
echo "</span>";
|
||||
echo"</span>";
|
||||
|
||||
// Groupes de la machine
|
||||
echo "<span class='groups'>";
|
||||
echo \manager\ResourceDispatcher::getResource('f/svg/group/st/container');
|
||||
|
||||
echo "<span>a</span>";
|
||||
echo "<span>a</span>";
|
||||
echo"</span>";
|
||||
|
||||
|
||||
echo "</article>";
|
||||
}
|
||||
var_dump( $answer->get('machines') );
|
||||
|
|
Loading…
Reference in New Issue