Нужна помощь в репликации структуры каталогов с ColdFusion и jsTree - PullRequest
2 голосов
/ 28 апреля 2010

Я использую этот новый плагин jQuery под названием jsTree www.jstree.com и использую источник данных HTML.
Я также использую ColdFusion 7 с cfdirectory и фильтрую файлы, так что просто каталоги. Мне нужно воссоздать структуру каталогов на изображении, ну и любую структуру каталогов, которую я даю. У меня чертовски много времени с логикой. variables.imageDirectoriesLen = 8 в этом сценарии, потому что выводится из середины фактического пути к файлу, а не из начала.

Спасибо за помощь.
Дерек

альтернативный текст http://i41.tinypic.com/2yjsirl.png

это то, что я имею до сих пор

<cfoutput query="clientImageDirsFilter">
<cfset nextLen = 0 />
<cfset nextDir = "" />
<cfset nextRowCnt = currentRow+1 />

<cfset nextDir = clientImageDirsFilter.directory[nextRowCnt] & "\" & clientImageDirsFilter.name[nextRowCnt] />
<cfset nextLen = listLen(nextDir, "\") />
<cfset currLen = listLen(clientImageDirsFilter.directory & "\" & clientImageDirsFilter.name,"\") />

<cfif currLen eq nextLen>
<li rel="folder" id="node_#randRange(1,99999)#"><a href="##"><ins>&nbsp;</ins>#clientImageDirsFilter.name#</a></li>
<cfelseif nextLen lt currLen>

    <cfif nextLen eq 0>
        #repeatString("</li></ul>",(currLen-nextLen-variables.imageDirectoriesLen))#
    </cfif>

<cfelse>                                        
<ul>
    <li rel="folder" id="node_#randRange(1,99999)#"><a href="##"><ins>&nbsp;</ins>#clientImageDirsFilter.name#</a>
        <ul>
</cfif>

1 Ответ

3 голосов
/ 28 апреля 2010

Я использую слегка модифицированную версию рекурсивной функции, которую Кэмден написал . Он должен делать то, что вы хотите.

<cfset initialDir = "C:\myrootdir">
<cfdirectory directory="#initialDir#" recurse="yes" name="files" sort="type asc">

<cfquery name="test" dbtype="query">
    select * from files where name <> 'Thumbs.db'
</cfquery>


<div id="basic_html">
        <cfset display(test,initialDir)>
</div>

<cffunction name="display" returnType="void" output="true">
    <cfargument name="files" type="query" required="true">
    <cfargument name="parent" type="string" required="true">
    <cfset var justMyKids = "">

    <cfquery name="justMyKids" dbtype="query">
    select  *
    from    arguments.files
    where   directory = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.parent#">
    </cfquery>  
    <ul>
    <cfoutput query="justMyKids">
        <cfif type is "Dir">
            <ul><li><a href="##"><ins> </ins>#Replace(name, "_", " ", "All")#</a> #display(arguments.files, directory & "\" & name)#</li></ul>
        <cfelse>
            <cfset fileURL = Replace(Replace(directory, initialDir, "", "All"), "\", "", "All") & "/" &  name>
            <li class="close"><a href="#fileURL#"><img src="http://localhost/globalincludes/interface/includes/js/jquery_plugins/jsTree/file.png" border="0"> #Replace(name, "_", " ", "All")#</a></li>
        </cfif>
        </li>
    </cfoutput>
    </ul>   
</cffunction>
...