how Can we change the output format to CSV instead of HTML in Alfresco using webscripts?
below are the my corresponding FTL and Webscript files
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>
Recursive Listing of Spaces & Documents:
Space Documentrecursive.get.desc.xml
<webscript>
<shortname>recurcive</shortname>
<description>Recursive</description>
<url>/sample/recursive/{recursive}</url>
<format default="html">extension</format>
<authentication>guest</authentication>
</webscript>
and html output is
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.开发者_StackOverflowxml
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
Yes it's possible to output a csv. Refer to http://wiki.alfresco.com/wiki/Web_Scripts#Implementation
You need to change your desc file to:
<webscript>
<shortname>recurcive</shortname>
<description>Recursive</description>
<url>/sample/recursive/{recursive}</url>
<format default="csv">extension</format>
<authentication>guest</authentication>
</webscript>
or if you want to mantain html as your default format you can just call the script with the csv extension (alfresco/service/recursive/blabla.csv) or with the format parameter ?format=csv
Then you have create a recursive.get.csv.ftl file like this:
<#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>
I haven't tested the code, but i'm assuming that you understand the idea that in the end of each main node you need to break the line, and after each child (except on the last) you need a coma.
You can specify that the default output will be csv. Put this in the webscript description file (.desc.xml) extension
Then add a recursive.get.xml.ftl which will create the csv output.
精彩评论