Arborescence de fichiers

Description

<!-- L'explorateur comprend 3 pages cfm -->
<!-- 1. Page listing.cfm : feuille qui comprendra l'arborecence-->
<!-- 2. Custom Tag arbot.cfm : C'est lui qui va permettre d'alimenter l'arborescence -->
<!-- 3. Page traitement.cfm : feuille qui sera appelée lors du clic sur un fichier-->

Source / Exemple :


<!-- ************ PAGE listing.cfm ************ -->

<!-- Ici le répertoire à explorer -->
<cfset ExploreRep = "VOTRE REPERTOIRE">

<!-- Accès à la page qui sera appelée lors du clic sur un fichier de l'arborescence -->
<cfset TraitePage = "traitement.cfm">

<cfset DirComplet = "">

<!--- Custom Tag qui renvoie l'arborescence complète à partir du répertoire maître ---> 
<cf_arbot dir="#ExploreRep#">

<cfform action="#TraitePage#" method="POST">
	<cftree name="Tree"
			width="50%"
			bold="No"
			italic="No"
			border="yes"
			hscroll="yes"
			vscroll="yes"
			required="Yes"
			completepath="no"
			appendkey="Yes"
			highlighthref="no"
		>
					
		<!--- Répertoire maître --->
		<cftreeitem 
			value="#ExploreRep#" 
			display="#ExploreRep#" 
			img="dossier_ouv.gif"
			imgopen="dossier_ferm.gif"
			queryasroot="yes" 
			expand="Yes"
		>
					
		<!--- Le contenu du répertoire maître --->
		<cfloop list="#DirComplet#" index="curdir" delimiters=";">
			<cftreeitem value="#GetToken('#curdir#',1,',')#" 
						display="#GetToken('#curdir#',2,',')#" 
						parent="#GetToken('#curdir#',3,',')#" 
						img="#GetToken('#curdir#',4,',')#" 
						imgopen="dossier_ferm.gif"
						queryasroot="yes" 
						expand="no" 
						HREF="#TraitePage#" 
						target=""
			>
		</cfloop>
	</cftree>
</cfform>

<!-- ************ CUSTOM TAG Arbot.cfm ************ -->

<!--- Récupération du chemin à explorer --->
<cfparam name="attributes.dir">

<cfdirectory action="LIST" directory="#attributes.dir#" name="curdir" sort="Name">
	<!--- Directory = nom du répertoire --->
	<!--- Sort = liste optionnelle de colonnes séparées par une virgule IMPORTANT ---> 
	<!--- Name = Requête  si ACTION="list" --->
	
	<cfset DirComplet = "">		<!--- Elément qui sera renvoyé  --->
	
	<cfloop query="curdir">		<!--- Contient l'arboresence à partir du dossier maître --->

		<cfif  Name is not "." and name is not "..">
			<!--- Si ACTION = "LIST"...Name = "nom du fichier ou du répertoire " 
									...Type = "FILE" pour fichier, "DIR" pour répertoire --->
			<cfif Type IS "dir">
				<cfset img = "dossier_ouv.gif">
			<cfelse>
				<cfset img = "file.gif">
			</cfif>
			
			<cfset DirComplet = DirComplet & "#attributes.dir#/#name#,#name#,#attributes.dir#,#img#;">
			
			<!--- S'il y a encore un dossier, on affiche son arborescence --->
			<!-- Appel du custom tag de manière récursive -->
			<cf_arbot dir="#attributes.dir#/#name#">
		</cfif>
	</cfloop>

<cfset caller.DirComplet = caller.DirComplet & DirComplet>

<!-- ************ PAGE traitement.cfm ************ -->

<!-- Récupération du nom du fichier sur lequel l'utilisateur a cliqué -->
<cfparam name="url.cftreeitemkey" default = "">

<!-- On met au bon format le chemin complet du fichier -->
<cfset url.cftreeitemkey = replace(trim(#url.cftreeitemkey#),"/","\","ALL")>

<!-- On affiche l'élement selectionné -->
<cfoutput>
	#url.cftreeitemkey#
</cfoutput>

Conclusion :


Je l'ai testé plusieurs fois et il marche correctement, cependant il a une petite faille et je ne sais pas comment le résoudre.

Si l'on rafraichit la page listing.cfm, le CFTREE ne s'affiche plus et il est nécessaire de vider le cache afin de pouvoir reconsulter l'arborescence.

Si vous avez des corrections, je serai trés attentif...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.