2010-12-06 5 views
0

Ich muss von einem Alfresco Raum eine ungeordnete Liste bauen beginnen:Alfresco ungeordnete Liste Webskript

ich diese Arbeitsvorlage gefunden:

<#macro recurse_macro node depth> 
    <#if node.isContainer> 
    <tr> 
<td align='left'>(${depth}) 
    <#if (depth>0) > 
    <#list 1..depth as i>.</#list> 
    </#if> 
    <img src="/alfresco${node.icon16}"> <a href="/alfresco${node.url}">${node.properties.name}</a> 
</td> 
    </tr> 

    <#list node.children as child> 
<#if child.isContainer && node.children?size != 0 > 
    <@recurse_macro node=child depth=depth+1/> 
</#if> 
    </#list> 
    </#if> 
</#macro> 

<b>Recursive Listing of Spaces:</b> 
<table border="1" celpadding="1" cellspacing="1"> 
<tr><th> Name Space </th></tr> 
<@recurse_macro node=companyhome depth=0/> 
</table> 

Was ich brauche, ist diese Vorlage zu ändern, um den Raum zu machen Inhalt als ungeordnete Liste:

<ul id="0" > 
    <li id="1">Content_one 
    <ul> 
     <li id="2">Content_two 
    <ul> 
    <li id="3">Content_three</li> 
     <li id="4">Content_four</li> 
    </ul> 
     </li> 
     <li id="5">Content_five</li> 
    </ul> 
    </li> 
</ul> 

Jede Hilfe wird geschätzt.

Dank

Antwort

0

Nun, müssen Sie überall einen < li> Tag hinzuzufügen, wo Sie eine Knotenliste, für einen: zuerst die Tabellen-Tags mit < ul id = 0> und </ul> ersetzen.

Dann in der #macro - müssen Sie den Inhaltsnamen aber ohne den < td> Teil auflisten. Löschen Sie daher die Tags < td> und </td>. Außerdem benötigen Sie die Punkte nicht, entfernen Sie also den Block < #if (depth> 0)>.

Sie benötigen einen Zähler. Haben Sie also einen < #Zuweisungszähler = 0 />, kurz bevor Sie das Rekursurmakro zum ersten Mal eingeben. Und inkrementieren Sie den Zähler jedes Mal, wenn Sie das Makro eingeben (also in der zweiten Zeile des Makros: < #assign counter = counter + 1 />

Sie < li> -Tags um die Zeile, in Ihrem aktuellen Dokumentname ist auch benötigen. die < img /> und < </a> Blöcke in einem < li id ​​= "$ a> So fügen {counter } "> und schließen Sie es mit </li>

Nun, werden Sie auch einen neuen Satz von < ul brauchen> -Tags, wenn Sie tun, um eine Rekursion. , es zu tun, Sie nee d zu ändern, um den <

#if child.isContainer && node.children?size != 0 > 
    <@recurse_macro node=child depth=depth+1/> 
</#if> 

Block. Schließen Sie das Tag mit Ihren Tags < ul> und </ul> ein.

Das sollte es tun.

+0

jedoch schlage ich vor, dass dies in Server-Side-Javascript in Kombination mit Freimarker neu geschrieben wird, sollte das Rendering sichtbar schneller sein – Zlatko