2010-04-25 7 views
1

Comment pouvons-nous changer le format de sortie au format CSV au lieu de HTML dans Alfresco en utilisant des scripts web?Comment pouvons-nous obtenir le format de sortie au format CSV au lieu du format HTML dans Alfresco en utilisant des scripts web?

ci-dessous sont les mes fichiers FTL et Webscript correspondant


recursive.get.html.ftl

<#macro recurse_macro node depth> 
    <#if node.isContainer> 
    <tr> 
    <td> 
     ${node.properties.name} 
    </td> 
<td></td> 
    </tr> 

    <#list node.children as child> 
    <#if child.isContainer> 

     <@recurse_macro node=child depth=depth+1/> 

<#list child.children as child2> 
    <#if child2.isDocument> 
    <tr><td></td><td>${child2.properties.name}</td></tr> 
     </#if> 
</#list> 

    </#if> 
    </#list> 
    </#if> 
</#macro> 

récursive Liste des espaces & Documents:

Espace document

recursive.get.desc.xml

<webscript> 
    <shortname>recurcive</shortname> 
    <description>Recursive</description> 
    <url>/sample/recursive/{recursive}</url> 
    <format default="html">extension</format> 
    <authentication>guest</authentication> 
    </webscript> 

et la sortie html est

Recursive Listing of Spaces & Documents: 
Space Document 
Company Home  
Data Dictionary  
Space Templates  
Software Engineering Project  
Documentation 
Drafts 
Pending Approval  
Published 
Samples  
    system-overview.html 
Discussions  
UI Design 
Presentations 
Quality Assurance 
Presentation Templates 
    doc_info.ftl 
    localizable.ftl 
    my_docs.ftl 
    my_spaces.ftl 
    my_summary.ftl 
    translatable.ftl 
    recent_docs.ftl 
    general_example.ftl 
    my_docs_inline.ftl 
    show_audit.ftl 
    readme.ftl 
Email Templates  
    notify_user_email.ftl 
    invite_user_email.ftl 
RSS Templates 
    RSS_2.0_recent_docs.ftl 
Saved Searches 
admin 
Scripts  
    backup.js 
    example test script.js 
    backup and log.js 
    append copyright.js 
    alfresco docs.js 
    test return value.js 
Web Scripts  
org  
alfresco  
sample 
    blogsearch.get.js 
    blogsearch.get.atom.ftl 
    blogsearch.get.desc.xml 
    blogsearch.get.html.ftl 
    blogsearch.get.html.400.ftl 
    blogsearch.get.atom.400.ftl 
    categorysearch.get.js 
    categorysearch.get.atom.ftl 
    categorysearch.get.desc.xml 
    categorysearch.get.html.ftl 
    categorysearch.get.html.404.ftl 
    categorysearch.get.atom.404.ftl 
    folder.get.js 
    folder.get.atom.ftl 
    folder.get.desc.xml 
    folder.get.html.ftl 
    avmstores.get.desc.xml 
    avmstores.get.html.ftl 
    avmbrowse.get.js 
    avmbrowse.get.desc.xml 
    avmbrowse.get.html.ftl 
    recursive.get.desc.xml 
    recursive.get.html.ftl 
    sgs.get.desc.xml 
    sgs.get.csv.ftl 
    sample1.get.desc.xml 
    sample1.get.csv.ftl 
    first.get.desc.xml 
    first.get.text.ftl 
    rag.get.html.ftl 
    rag.get.desc.xml 
    new1.get.desc.xml 
    new1.get.html.ftl 
    excel.get.html.ftl 
    excel.get.desc.xml 
    sgs1.get.desc.xml 
    one.get.html.ftl 
    one.get.desc.xml 
    one.get.js 
    readme.html 
Web Scripts Extensions 
    readme.html 
Guest Home 
    Alfresco-Tutorial.pdf 
User Homes 
isabel 
Users Home 

Répondre

0

Vous pouvez spécifier que la sortie par défaut sera csv. Mettez ceci dans le fichier de description de webscript (.desc.xml) extension

Ajoutez ensuite un fichier recursive.get.xml.ftl qui créera la sortie csv.

1

Oui, il est possible de générer un fichier csv. Reportez-vous à http://wiki.alfresco.com/wiki/Web_Scripts#Implementation

Vous devez changer votre fichier desc à:

<webscript> 
    <shortname>recurcive</shortname> 
    <description>Recursive</description> 
    <url>/sample/recursive/{recursive}</url> 
    <format default="csv">extension</format> 
    <authentication>guest</authentication> 
</webscript> 

ou si vous voulez mantenir HTML comme format par défaut, vous pouvez simplement appeler le script avec l'extension csv (alfresco/Service/récursive /blabla.csv) ou avec le paramètre de format? format = csv

Ensuite, vous avez créé un fichier récursif.get. csv fichier .ftl comme ceci:

<#macro recurse_macro node depth> 
     <#if node.isContainer>  
      ${node.properties.name} 
     <#list node.children as child>   
     <#if child.isContainer> 
     ,   
     <@recurse_macro node=child depth=depth+1/>   
      <#list child.children as child2> 
      <#if child2.isDocument> 
       ${child2.properties.name} 
       <#if child2_has_next>,</#if> 
      </#if> 
      </#list>    
     </#if> 
      \n   
     </#list> 
     </#if> 
    </#macro> 

Je ne l'ai pas testé le code, mais je suppose que vous comprenez l'idée que la fin de chaque noeud principal, vous devez casser la ligne, et Après chaque enfant (sauf le dernier), vous avez besoin d'un coma.