Table des matières

Docu-Pro

Contexte

Etablissement

Une grande surface spécialisée dans différents secteurs (notion de Monde).

Développement

Il s'agit de créer un gestionnaire de documentation adapté à une entreprise, qui permettra aux salariés de gérer/créer puis consulter/rechercher dans une documentation partagée.

Outils

Langages

Fonctionnalité : Recherche quelconque

• Définition de la fonctionnalité :

La fonctionnalité « rechercher » permettra donc à un membre de saisir une valeur puis de choisir le type de recherche. Recherche de type document, theme, utilisateur, groupe, domaine, monde ou bien de tout type.

• Contenu

1/ La valeur recherchée et le choix du type seront récupérés en paramètre dans une fonction :

function SearchBar ($valeurRecherchée, $type=utilisateur)

La fonction sera appelée via le click d’un bouton représentant une image de loupe, logo habituellement associé à la recherche et/ou via un keyPress de la touche Entrée.

2/ Ensuite ces valeurs seront retransmises vers une deuxième fonction : cette dernière contiendra donc plusieurs requêtes SQL selon le type du style :

SELECT id, tnom FROM utilisateur WHERE nom like '%valeurrecherhée%'

3/ Enfin, il faudra afficher pour chaque résultat un lien permettant à l’utilisateur d’afficher le contenu d’un monde par exemple, ou le contenu d’un document. Il sera donc appelé au click, une troisième fonction qui contiendra l’id de l’élement cliqué ainsi que son type!

Exemples : si on clique sur le monde informatique ayant pour id=2, cette troisième fonction récupère donc l’integer 2 et le type=monde et exécute une requête du style :

If (type==monde){ SELECT * FROM domaines WHERE idmonde =2 ; }

Controleur

→ Un seul contrôleur « CRecherche ».

Voici les fonctions :

Nom Description
index() Charge les vues
_construct() Charge la librairie pour les sessions
search() Récupère la valeur recherchée ainsi que les cases cochées par l'utilisateur puis retourne ces informations vers resultatSearch()
resultatSearch() Effectue les requêtes SQL selon les cases cochées et la valeur recherchée. Tout type de résultat est géré (valeur recherchée nulle, aucun résultat après la recherche,etc)
loadViewExecSearch() Fonction exécutée au click d'un résultat : si on clique sur un monde, cette fonction se chargera d'afficher les domaines contenus dans ce dernier. Si on clique sur un domaine, sera alors affichés les thèmes présents dans ce domaine, etc

Vues

Nom Description
vHeader Affichage de l’en tête de la page
vMenu Affichage du menu à gauche
vRecherche Affichage de la zone de saisie pour la recherche, les cases a cochées et une zone consacrées aux résultats
vResultatRecherche Affichage des résultats dans la zone prévue dans la vue vRecherche
vExecSearch Affichage des informations concernant l'élément cliqué toujours dans la zone prévue dans la vue vRecherche
v_footer Affichage du pied-de-page

Base de donnée

! Remarque :

  • il faut supprimer les ORM pour les models Utilisateur, Partie et Version.
  • Des modifications sont nécessaires sur la base de donnés : dans la table partie, il faut rajouter un champ document_id, qui est donc en relation avec la table document. Pensez à ajouter ce dernier champ au model Partie sur eclipse !
  • Dans la fonction loadViewExecSearch, le click sur un utilisateur n'a pas encore été traité. Des modifications de la base de données sont nécessaires pour cela.

Code

		public function search(){			
		// on récupere la valeur recherchée
		$searched=$_POST['searchBar'];
		// stock l'array des casés cochées en session (le temps d'une requête)
		$caseChecked=$_POST['Recherche'];
		$this->session->set_flashdata('caseChecked', $caseChecked);
	
		// get avec la valeur recherchée par l'utilisateur vers resultatSearch
		$this->jsutils->get("CRecherche/resultatSearch/".$searched,"#SearchResultContainer");
		echo $this->jsutils->compile();
	}

Fonction resultatSearch()

	public function resultatSearch($searched){
		$caseChecked=$this->session->flashdata('caseChecked');
		$searched=urldecode($searched);
		if ($searched=='undefined')
		{
			$src=ressource_url('sad.png');
			echo "<div class='NoResult'>
					<img src='".$src."'/>
					<h1 class='recherche'>Aucune valeur saisie !</h1>
				</div>";
		}else{
			$documents=array();
			$groupes=array();
			$domaines=array();
			$utilisateurs=array();
			$themes=array();
			$mondes=array();
			$tablesNeeded=array();
				
			foreach($caseChecked as $valeur)
			{
				if ($valeur=="tout"){
					$documents=DAO\getAll("document","o.titre LIKE '%".$searched."%'");
					$groupes=DAO\getAll("groupe","o.libelle LIKE '%".$searched."%'");
					$domaines=DAO\getAll("domaine","o.libelle LIKE '%".$searched."%'");
					$utilisateurs=DAO\getAll("utilisateur","o.prenom LIKE '%".$searched."%' OR o.nom LIKE '%".$searched."%'");
					$themes=DAO\getAll("theme","o.libelle LIKE '%".$searched."%'");
					$mondes=DAO\getAll("monde","o.libelle LIKE '%".$searched."%'");
					$allResult=array($documents,$groupes,$domaines,$utilisateurs,$themes,$mondes);
					$i=0;
					foreach($allResult as $typeRes)
					{	$strTablesName="";
					$i++;
					if (!empty($typeRes)){
						switch ($i){
							case 1:
								$strTablesName="document";
								break;
							case 2:
								$strTablesName="groupe";
								break;
							case 3:
								$strTablesName="domaine";
								break;
							case 4:
								$strTablesName="utilisateur";
								break;
							case 5:
								$strTablesName="theme";
								break;
							case 6:
								$strTablesName="monde";
								break;
						}
						array_push($tablesNeeded, $strTablesName);
					}
					}
				}else{
					if ($valeur=="groupe" OR $valeur=="domaine" OR $valeur=="theme" OR $valeur=="monde"){
						${$valeur."s"}=DAO\getAll($valeur,"o.libelle LIKE '%".$searched."%'");
					}else{
						if ($valeur=="document"){
							${$valeur."s"}=DAO\getAll($valeur,"o.titre LIKE '%".$searched."%'");
						}else{
							${$valeur."s"}=DAO\getAll($valeur,"o.prenom LIKE '%".$searched."%' OR o.nom LIKE '%".$searched."%'");
						}
					}
					$allResult=array();
					$allResultName=array();
					array_push($allResult, ${$valeur."s"});
					array_push($allResultName, $valeur);
					$i=0;
					foreach ($allResult as $typeRes){
						$strTablesName="";
						if (!empty($typeRes)){
							$strTablesName=$allResultName[$i];
							array_push($tablesNeeded, $strTablesName);
						}
						$i++;
					}
				}
					
			}
				
			$this->jsutils->getAndBindTo(".eltRes_text_world", "click", "CRecherche/loadViewExecSearch/monde","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_user", "click", "CRecherche/loadViewExecSearch/utilisateur","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_grp", "click", "CRecherche/loadViewExecSearch/groupe","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_doc", "click", "CRecherche/loadViewExecSearch/document","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_dom", "click", "CRecherche/loadViewExecSearch/domaine","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_thm", "click", "CRecherche/loadViewExecSearch/theme","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->compile();
			$this->load->view('vResultatRecherche',array("documents"=>$documents,"groupes"=>$groupes,"domaines"=>$domaines,"utilisateurs"=>$utilisateurs,"themes"=>$themes,"mondes"=>$mondes,"searched"=>$searched,"tablesNeeded"=>$tablesNeeded));
		}
	}
	

Fonction loadViewExecSearch()

public function loadViewExecSearch($type,$eltId){
		$tableName="";
		switch ($type){
			case "groupe":
				$tableName="utilisateur";
				break;
			case "domaine":
				$tableName="theme";
				break;
			case "document":
				$tableName="partie";
				break;
			case "theme":
				$tableName="document";
				break;
			case "utilisateur":
				break;
			case "monde":
				$tableName="domaine";
				break;
		}
	
		$eltInfo=DAO\getAll($type,"o.id = '".$eltId."'");
	
		if ($type=="groupe" || $type=="domaine" || $type=="theme" || $type=="monde"){
			$lstSubElt=DAO\getAll($tableName,"o.".$type." = '".$eltId."'");
			$this->jsutils->getAndBindTo(".eltRes_text_dom", "click", "CRecherche/loadViewExecSearch/domaine","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_doc", "click", "CRecherche/loadViewExecSearch/document","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_thm", "click", "CRecherche/loadViewExecSearch/theme","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->getAndBindTo(".eltRes_text_user", "click", "CRecherche/loadViewExecSearch/utilisateur","#SearchResultContainer","{'eltId': $(this).attr('id')}");
			$this->jsutils->compile();
			$this->load->view('vExecSearch', array("type"=>$type, "lstSubElt"=>$lstSubElt, "eltInfo"=>$eltInfo));
		}else{
			if ($type=="document"){
				$lstPartie=DAO\getAll($tableName,"o.".$type." = '".$eltId."' ORDER BY o.ordre ASC");
				$this->load->view('vExecSearch', array("type"=>$type, "lstPartie"=>$lstPartie, "eltInfo"=>$eltInfo));
			}
			else{
				$this->load->view('vExecSearch', array("type"=>$type,"eltInfo"=>$eltInfo));
			}
		}
	}

Vue vRecherche

<?php echo $script_foot;?>
<div id="titleRecherche" class="titleRecherche">
	RECHERCHE
</div>

<br>
<form name="formSearch" id="formSearch" >
<div class="bloc_search">
	
	<img title="lancer la recherche" id="btnSubmit" class="imgSubmit" src="<?php echo ressource_url("search.png");?>"/> 
	<input title="saisir le mot clef" type="search" name="searchBar" id="searchBar" class="input_search2" />
	
	<div id="CheckBoxContent">
		<div>  
   			<input onclick="checkToutOnly()" type="checkbox" name="Recherche[]" checked="checked" value="tout" id="tout" >  
   			<label for="tout" title="rechercher tout">Tout</label>  
		</div>
		<div>  
   			<input onclick="uncheckTout()" type="checkbox" name="Recherche[]" value="groupe" id="groupe">  
   			<label for="groupe" title="rechercher dans les groupes">Groupe</label>  
		</div>  
		<div>  
   			<input onclick="uncheckTout()" type="checkbox" name="Recherche[]" value="document" id="document">  
   			<label for="document" title="rechercher dans les documents">Document</label>  
		</div>  
		<div>  
   			<input onclick="uncheckTout()" type="checkbox" name="Recherche[]" value="utilisateur" id="utilisateur">  
   			<label for="utilisateur" title="rechercher dans les utilisateurs">Utilisateur</label>  
		</div>  
		<div>  
   			<input onclick="uncheckTout()" type="checkbox" name="Recherche[]" value="theme" id="theme">  
   			<label for="theme" title="rechercher dans les thèmes">Thème</label>  
		</div>
		<div>  
   			<input onclick="uncheckTout()" type="checkbox" name="Recherche[]" value="domaine" id="domaine">  
   			<label for="domaine" title="rechercher dans les domaines">Domaine</label>  
		</div>
		<div>  
   			<input onclick="uncheckTout()" type="checkbox" name="Recherche[]" value="monde" id="monde">  
   			<label for="monde" title="rechercher dans les mondes">Monde</label>  
		</div> 
	</div> 
</div>
</form>


<div id="SearchResultContainer" class="SearchResultContainer">

</div>

Vue vResultatRecherche

<?php echo $script_foot;
if (empty($tablesNeeded)){
	?>
	<div class="NoResult">
		<img src="<?php echo ressource_url("sad.png");?>"/>
		<h1 class="recherche">Oups ! Aucun résultat pour " <?php echo $searched;?> " !</h1>
	</div>
	<?php
}
else{
	?>
	<h1 class="recherche">Résultat(s) pour " <?php echo $searched;?> " :</h1>
	<div class="accordion">
	<?php
	if (in_array("document",$tablesNeeded)){
		?>
			<div class="accordeon_document" title="ouvrir le volet Document">
				<h1 class="accordeon_title">Document</h1>
				<span  class="nbResult"><?php echo sizeof($documents)." résultat (s)";?></span>
			</div>
			<div class="contenu_type">
				<?php
					foreach ($documents as $doc){
						echo "<div class='eltRes'><div id='".$doc->getId()."' class='eltRes_text_doc'>".$doc->getTitre()."</div></div>";
					}
				?>
			</div>
		<?php
	}	
	if (in_array("groupe",$tablesNeeded)){
		?>
			<div class="accordeon_groupe" title="ouvrir le volet Groupe">
				<h1 class="accordeon_title">Groupe</h1>
				<span  class="nbResult"><?php echo sizeof($groupes)." résultat (s)";?></span>
			</div>
			<div class="contenu_type">
				<?php 
					foreach ($groupes as $grp){
						echo "<div class='eltRes'><div id='".$grp->getId()."' class='eltRes_text_grp'>".$grp->getLibelle()."</div></div>";			
					}
				?>
			</div>
		<?php
	}	
	if (in_array("domaine",$tablesNeeded)){
		?>
			<div class="accordeon_domaine" title="ouvrir le volet Domaine">
				<h1 class="accordeon_title">Domaine</h1>
				<span  class="nbResult"><?php echo sizeof($domaines)." résultat (s)";?></span>
			</div>
			<div class="contenu_type">
				<?php 
					foreach ($domaines as $dom){
						echo "<div class='eltRes'><div id='".$dom->getId()."' class='eltRes_text_dom'>".$dom->getLibelle()."</div></div>";			
					}
				?>
			</div>
		<?php
	}	
	if (in_array("utilisateur",$tablesNeeded)){
		?>
			<div class="accordeon_utilisateur" title="ouvrir le volet Utilisateur">
				<h1 class="accordeon_title">Utilisateur</h1>
				<span  class="nbResult">
					<?php echo sizeof($utilisateurs)." résultat (s)";?>
				</span>
			</div>
			<div class="contenu_type">
				<?php 
					foreach ($utilisateurs as $user){
						echo "<div class='eltRes'><div id='".$user->getId()."' id='".$user->getNom()."' class='eltRes_text_user'>".$user->getNom()." ".$user->getPrenom()."</div></div>";			
					}
				?>
			</div>
		<?php
	}
	if (in_array("theme",$tablesNeeded)){
		?>
			<div class="accordeon_theme" title="ouvrir le volet Thème">
				<h1 class="accordeon_title">Thème</h1>
				<span  class="nbResult"><?php echo sizeof($themes)." résultat (s)";?></span>
			</div>
			<div class="contenu_type">
				<?php 
					foreach ($themes as $thm){
						echo "<div class='eltRes'><div id='".$thm->getId()."' class='eltRes_text_thm'>".$thm->getLibelle()."</div></div>";			
					}
				?>
			</div>
		<?php
	}
	if (in_array("monde",$tablesNeeded)){
		?>
				<div class="accordeon_monde" title="ouvrir le volet Monde">
					<h1 class="accordeon_title">Monde</h1>
					<span  class="nbResult"><?php echo sizeof($mondes)." résultat (s)";?></span>
				</div>
				<div class="contenu_type">
					<?php 
						foreach ($mondes as $world){
							echo "<div class='eltRes'><div id='".$world->getId()."' class='eltRes_text_world'>".$world->getLibelle()."</div></div>";			
						}
					?>
				</div>
			<?php
		}	
	?>
	</div>
	<?php
}
?>

<script>
$(function() {
    $( ".accordion" ).accordion({
      collapsible: true,
      animate: 500,
      heightStyle: "content",
      active: null
    });
});
</script>

Vue vExecSearch

<?php echo @$script_foot;
switch ($type){
	case "groupe":?>
		<h1 class="recherche"><span class="titleElt"><?php echo $eltInfo[0]->getLibelle();?></span><span class="eltType_grp"> ( <?php echo $type;?> ) </span></h1>
		<?php if (empty($lstSubElt)){
			?>
				<div class="NoResult">
					<img src="<?php echo ressource_url("sad.png");?>"/>
					<h1 class="recherche">Oups ! Aucun utilisateurs n'est présent dans le groupe " <?php echo $eltInfo[0]->getLibelle();?> " !</h1>
				</div>
				<?php
		}else{	
		?>
		<div class="accordion">
			<div class="accordeon_utilisateur" title="ouvrir le volet Utilisateur">
				<h1 class="accordeon_title">Utilisateurs du groupe</h1>
				<span  class="nbResult"><?php echo sizeof($lstSubElt)." résultat (s)";?></span>			
			</div>
			<div class="contenu_type">
			<?php
			foreach($lstSubElt as $user){
				echo "<div class='eltRes'><div id='".$user->getId()."' class='eltRes_text_user'>".$user->getNom()." ".$user->getPrenom()."</div></div>";
			}			
			?>	
			</div>
		</div>
		<?php
		}
		break;
	case "document":?>
		<h1 class="recherche"><span class="titleElt"><?php echo $eltInfo[0]->getTitre();?></span><span class="eltType_doc"> ( <?php echo $type;?> ) </span></h1>
		<?php if(empty($lstPartie)){?>		
			<div class="NoResult">
				<img src="<?php echo ressource_url("sad.png");?>"/>
				<h1 class="recherche">Oups ! Aucune partie n'est présente dans le document " <?php echo $eltInfo[0]->getTitre();?> " !</h1>
			</div>
		<?php
		}else{
		?>
		<div>
			<?php
				foreach($lstPartie as $partie){
					?>
					<div class="titlePartie"><?php echo $partie->getTitre();?></div>
					<div class="contenuPartie">
						<?php echo $partie->getContenu();?>
					</div>
					<?php
				}
			?>
		</div>
		<?php 
		}
		break;
	case "domaine":?>
		<h1 class="recherche"><span class="titleElt"><?php echo $eltInfo[0]->getLibelle();?></span><span class="eltType_dom"> ( <?php echo $type;?> ) </span></h1>
		<?php if (empty($lstSubElt)){
			?>
				<div class="NoResult">
					<img src="<?php echo ressource_url("sad.png");?>"/>
					<h1 class="recherche">Oups ! Aucun thème n'est présent dans le domaine " <?php echo $eltInfo[0]->getLibelle();?> " !</h1>
				</div>
				<?php
		}else{	
		?>
		<div class="accordion">
			<div class="accordeon_theme" title="ouvrir le volet Thème">
				<h1 class="accordeon_title">Thèmes du domaine</h1>
				<span  class="nbResult"><?php echo sizeof($lstSubElt)." résultat (s)";?></span>			
			</div>
			<div class="contenu_type">
			<?php
			foreach($lstSubElt as $thm){
				echo "<div class='eltRes'><div id='".$thm->getId()."' class='eltRes_text_thm'>".$thm->getLibelle()."</div></div>";
			}			
			?>	
			</div>
		</div>
		<?php
		}
		break;
	case "utilisateur":?>
		<h1 class="recherche"><span class="titleElt"><?php echo $eltInfo[0]->getNom()." ".$eltInfo[0]->getPrenom();?></span><span class="eltType_user"> ( <?php echo $type;?> ) </span></h1>
		<div>
		</div>
		<?php
		break;
	case "theme":?>
		<h1 class="recherche"><span class="titleElt"><?php echo $eltInfo[0]->getLibelle();?></span><span class="eltType_thm"> ( <?php echo $type;?> ) </span></h1>
		<?php if (empty($lstSubElt)){
			?>
				<div class="NoResult">
					<img src="<?php echo ressource_url("sad.png");?>"/>
					<h1 class="recherche">Oups ! Aucun document n'est présent dans le thème " <?php echo $eltInfo[0]->getLibelle();?> " !</h1>
				</div>
				<?php
		}else{	
		?>
		<div class="accordion">
			<div class="accordeon_document" title="ouvrir le volet Document">
				<h1 class="accordeon_title">Documents du thème</h1>
				<span  class="nbResult"><?php echo sizeof($lstSubElt)." résultat (s)";?></span>			
			</div>
			<div class="contenu_type">
			<?php
			foreach($lstSubElt as $doc){
				echo "<div class='eltRes'><div id='".$doc->getId()."' class='eltRes_text_doc'>".$doc->getTitre()."</div></div>";
			}			
			?>	
			</div>
		</div>
		<?php
		}
		break;
	case "monde":?>
		<h1 class="recherche"><span class="titleElt"><?php echo $eltInfo[0]->getLibelle();?></span><span class="eltType_world"> ( <?php echo $type;?> ) </span></h1>
		<?php if (empty($lstSubElt)){
			?>
				<div class="NoResult">
					<img src="<?php echo ressource_url("sad.png");?>"/>
					<h1 class="recherche">Oups ! Aucun domaine n'est présent dans le monde " <?php echo $eltInfo[0]->getLibelle();?> " !</h1>
				</div>
				<?php
		}else{	
		?>
		<div class="accordion">
			<div class="accordeon_domaine" title="ouvrir le volet Domaine">
				<h1 class="accordeon_title">Domaines du monde</h1>
				<span  class="nbResult"><?php echo sizeof($lstSubElt)." résultat (s)";?></span>			
			</div>
			<div class="contenu_type">
			<?php
			foreach($lstSubElt as $dom){
				echo "<div class='eltRes'><div id='".$dom->getId()."' class='eltRes_text_dom'>".$dom->getLibelle()."</div></div>";
			}			
			?>	
			</div>
		</div>
		<?php
		}
		break;
}
?>

<script>
$(function() {
    $( ".accordion" ).accordion({
      collapsible: true,
      animate: 500,
      heightStyle: "content",
      active: null
    });
});
</script>

Jquery

function uncheckTout() 
{ 	
	idTheme=document.getElementById('theme');
	idGroupe=document.getElementById('groupe');
	idDocument=document.getElementById('document');
	idUtilisateur=document.getElementById('utilisateur');
	idDomaine=document.getElementById('domaine');
	idTout=document.getElementById('tout');
	idMonde=document.getElementById('monde');
	
	// si tous les boxes sont cochées, alors on les décoches et on coche "tout"
	if(idMonde.checked==true && idTheme.checked==true && idUtilisateur.checked==true && idDocument.checked==true && idGroupe.checked==true && idDomaine.checked==true){
		idTout.checked=true;
		idMonde.checked=false;
		idTheme.checked=false;
		idGroupe.checked=false;
		idDocument.checked=false;
		idUtilisateur.checked=false;
		idDomaine.checked=false;
	}else{ // sinon on décoche "tout"
		document.getElementById('tout').checked=false;
	}
	
	if (idMonde.checked==false && idTheme.checked==false && idUtilisateur.checked==false && idDocument.checked==false && idGroupe.checked==false && idDomaine.checked==false && idTout.checked==false){
		idTout.checked=true;
	}
			
}

function checkToutOnly() 
{ 		
	idTheme=document.getElementById('theme');
	idGroupe=document.getElementById('groupe');
	idDocument=document.getElementById('document');
	idUtilisateur=document.getElementById('utilisateur');
	idDomaine=document.getElementById('domaine');
	idTout=document.getElementById('tout');
	idMonde=document.getElementById('monde');
	
	idGroupe.checked=false;
	idDocument.checked=false;
	idUtilisateur.checked=false;
	idDomaine.checked=false;
	idTheme.checked=false;
	idMonde.checked=false;
	
	if (idMonde.checked==false && idTheme.checked==false && idUtilisateur.checked==false && idDocument.checked==false && idGroupe.checked==false && idDomaine.checked==false && idTout.checked==false){
		idTout.checked=true;
	}
	
}

// permet la simulation du click sur le bouton recherche via la touche Entrée
document.onkeypress = function (e) {
	 var enterpressed = e? e.which == 13: window.event.keyCode == 13;
	 if (enterpressed ){
		 document.getElementById('btnSubmit').click();
	 	return false;
	 }
}

Design/ Aperçu

Ci-dessous, on peut voir les différents résultats suite à la recherche “m” en ayant coché “tout”. Remarquez qu'il n'y aucun résultat concernant les thèmes et qu'ainsi il n'y a pas de tableau Thèmes avec 0 résultats ce qui aurait été inutile.

Et là, ci-dessous, on peut voir les différents résultats suite à la recherche “m” en ayant coché cette fois ci “Groupe”, “Document” et “Utilisateur”. Ainsi, les résultas concernant les domaines et les mondes ne sont pas affichés contrairement à la première image.

Maintenant voici ce qui se passe au click d'un monde : on a cliqué sur le monde Informatique, on affiche les domaines présents dans ce monde soit Analyse et Développement.

Et à partir d'ici, si on click sur le domaine Analyse, voici ce qui se passe : on affiche les thèmes présents dans ce domaine soit seulement Analyse fonctionnelle (et ainsi de suite)

Exemple pour un document : on clique sur le document Document trivia, on affiche alors les parties des documents dans l'ordre avec leur titre et leur contenu :