As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
<webscript> <shortname>Folder Listing Sample</shortname> <description>Sample demonstrating the listing of folder contents</description> <url>/sample/folder/{path}</url> <format default="html">argument</format> <authentication>guest</authentication> <transaction>required</transaction> </webscript>
<html> <head> <title>${folder.displayPath}/${folder.name}</title> </head> <body> Folder: ${folder.displayPath}/${folder.name} <br> <table> <#if folder.parent.parent?exists> <tr> <td><td><a href="${url.serviceContext}/sample/folder<@encodepath node=folder.parent/>">..</a> </tr> </#if> <#list folder.children as child> <tr> <#if child.isContainer> <td>><td><a href="${url.serviceContext}/sample/folder<@encodepath node=child/>">${child.name}</a> <#else> <td><td><a href="${url.serviceContext}/api/node/content/${child.nodeRef.storeRef.protocol}/${child.nodeRef.storeRef.identifier}/${child.nodeRef.id}/${child.name?url}">${child.name}</a> </#if> </tr> </#list> </table> </body> </html> <#macro encodepath node><#if node.parent?exists><@encodepath node=node.parent/>/${node.name?url}</#if></#macro>
// locate folder by path var folder = roothome.childByNamePath(url.extension); if (folder == undefined || !folder.isContainer) { status.code = 404; status.message = "Folder " + url.extension + " not found."; status.redirect = true; } model.folder = folder;
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <generator version="${server.version}">Alfresco (${server.edition})</generator> <title>Folder: ${folder.displayPath}/${folder.name}</title> <updated>${xmldate(date)}</updated> <icon>${absurl(url.context)}/images/logo/AlfrescoLogo16.ico</icon> <#list folder.children as child> <entry> <title>${child.name}</title> <#if child.isContainer> <link rel="alternate" href="${absurl(url.serviceContext)}/sample/folder<@encodepath node=child/>"/> <#else> <link rel="alternate" href="${absurl(url.serviceContext)}/api/node/content/${child.nodeRef.storeRef.protocol}/${child.nodeRef.storeRef.identifier}/${child.nodeRef.id}/${child.name?url}"/> </#if> <icon>${absurl(url.context)}${child.icon16}</icon> <id>urn:uuid:${child.id}</id> <updated>${xmldate(child.properties.modified)}</updated> <summary>${child.properties.description!""}</summary> <author> <name>${child.properties.creator}</name> </author> </entry> </#list> </feed> <#macro encodepath node><#if node.parent?exists><@encodepath node=node.parent/>/${node.name?url}</#if></#macro>
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:relevance="http://a9.com/-/opensearch/extensions/relevance/1.0/" xmlns:alf="http://www.alfresco.org/opensearch/1.0/"> <generator version="${server.version}">Alfresco (${server.edition})</generator> <title>Alfresco Keyword Search: ${search.searchTerms?xml}</title> <updated>${xmldate(date)}</updated> <icon>${absurl(url.context)}/images/logo/AlfrescoLogo16.ico</icon> <author> <name><#if person??>${person.properties.userName}<#else>unknown</#if></name> </author> <id>urn:uuid:${search.id}</id> <opensearch:totalResults>${search.totalResults}</opensearch:totalResults> <opensearch:startIndex>${search.startIndex}</opensearch:startIndex> <opensearch:itemsPerPage>${search.itemsPerPage}</opensearch:itemsPerPage> <opensearch:Query role="request" searchTerms="${search.searchTerms?xml}" startPage="${search.startPage}" count="${search.itemsPerPage}" language="${search.localeId}"/> <link rel="alternate" href="${absurl(scripturl("?q=${search.searchTerms?url?xml}&p=${search.startPage}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="text/html"/> <link rel="self" href="${absurl(scripturl("?q=${search.searchTerms?url?xml}&p=${search.startPage}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> <#if search.startPage > 1> <link rel="first" href="${absurl(scripturl("?q=${search.searchTerms?url?xml}&p=1&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> <link rel="previous" href="${absurl(scripturl("?q=${search.searchTerms?url?xml}&p=${search.startPage - 1}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> </#if> <#if search.startPage < search.totalPages> <link rel="next" href="${absurl(scripturl("?q=${search.searchTerms?url?xml}&p=${search.startPage + 1}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> <link rel="last" href="${absurl(scripturl("?q=${search.searchTerms?url?xml}&p=${search.totalPages}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> </#if> <link rel="search" type="application/opensearchdescription+xml" href="${absurl(url.serviceContext)}/api/search/keyword/description.xml"/> <#list search.results as row> <entry> <title>${row.name?xml}</title> <link rel="alternate" href="${absurl(url.serviceContext)}${row.url}"/> <icon>${absurl(url.context)}${row.icon16}</icon> <#comment>TODO: What's the standard for entry icons?</#comment> <id>urn:uuid:${row.id}</id> <alf:noderef>${row.nodeRef}</alf:noderef> <updated>${xmldate(row.properties.modified)}</updated> <summary>${(row.properties.description!"")?html}</summary> <author> <name>${row.properties.creator}</name> </author> <relevance:score>${row.score}</relevance:score> </entry> </#list> </feed>
<webscript> <shortname>Alfresco keyword search (OpenSearch enabled)</shortname> <description>Executes a keyword search against the Alfresco repository (Company Home and below).</description> <url>/sample/custom_keyword.html?q={searchTerms}&p={startPage?}&c={count?}&l={language?}</url> <authentication>guest</authentication> <transaction allow="readonly">required</transaction> </webscript>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://a9.com/-/spec/opensearch/1.1/"> <title>Alfresco Keyword Search: ${search.searchTerms?html}</title> <link rel="stylesheet" href="/alfresco/css/main.css" TYPE="text/css"> <link rel="search" type="application/opensearchdescription+xml" href="${url.serviceContext}/api/search/wordpress/description.xml" title="Alfresco Keyword Search"/> <meta name="totalResults" content="${search.totalResults}"/> <meta name="startIndex" content="${search.startIndex}"/> <meta name="itemsPerPage" content="${search.itemsPerPage}"/> </head> <body> <table> <tr> <td><img src="${url.context}/images/logo/AlfrescoLogo32.png" alt="Alfresco" /></td> <td><nobr><span class="mainTitle">Alfresco Keyword Search</span></nobr></td> </tr> </table> <br> <table> <tr> <td>Results <b>${search.startIndex}</b> - <b><#if search.startIndex == 0>0<#else>${search.startIndex + search.totalPageItems - 1}</#if></b> of <b>${search.totalResults}</b> for <b>${search.searchTerms}</b> visible to user <b><#if person??>${person.properties.userName}<#else>unknown</#if>.</b></td> </tr> </table> <br> <table> <#list search.results as row> <tr> <td><img src="${url.context}${row.icon16}"/></td><td><a href="${url.serviceContext}${row.url}">${row.name}</a></td> </tr> <#if row.properties.description?? == true> <tr> <td></td> <td>${row.properties.description?html}</td> </tr> </#if> </#list> </table> <br> <table> <tr> <td><a href="${scripturl("?q=${search.searchTerms?url}&p=1&c=${search.itemsPerPage}&l=${search.localeId}")}">first</a></td> <#if search.startPage > 1> <td><a href="${scripturl("?q=${search.searchTerms?url}&p=${search.startPage - 1}&c=${search.itemsPerPage}&l=${search.localeId}")}">previous</a></td> </#if> <td><a href="${scripturl("?q=${search.searchTerms?url}&p=${search.startPage}&c=${search.itemsPerPage}&l=${search.localeId}")}">${search.startPage}</a></td> <#if search.startPage < search.totalPages> <td><a href="${scripturl("?q=${search.searchTerms?url}&p=${search.startPage + 1}&c=${search.itemsPerPage}&l=${search.localeId}")}">next</a></td> </#if> <td><a href="${scripturl("?q=${search.searchTerms?url}&p=${search.totalPages}&c=${search.itemsPerPage}&l=${search.localeId}")}">last</a></td> </tr> </table> </body> </html>
( TYPE:"{http://www.alfresco.org/model/content/1.0}content" AND ( <#list 1..terms?size as i> @\{http\://www.alfresco.org/model/content/1.0\}name:'${terms[i - 1]}" </#list> <#list 1..terms?size as i> TEXT:"${terms[i - 1]}" </#list> ) )
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>Alfresco Keyword Search: ${search.searchTerms?xml}</title> <link>${absurl(scripturl("?q=${search.searchTerms?url}&p=${search.startPage}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}"</link> <description>Alfresco Keyword Search: ${search.searchTerms?xml}</description> <language>${search.localeId}</language> <lastBuildDate>${xmldate(date)}</lastBuildDate> <pubDate>${xmldate(date)}</pubDate> <generator>Alfresco ${server.edition} v${server.version}</generator> <image> <title>Alfresco Search: ${search.searchTerms?xml}</title> <width>16</width> <height>16</height> <url>${absurl(url.context)}/images/logo/AlfrescoLogo16.ico)}</url> </image> <opensearch:totalResults>${search.totalResults}</opensearch:totalResults> <opensearch:startIndex>${search.startIndex}</opensearch:startIndex> <opensearch:itemsPerPage>${search.itemsPerPage}</opensearch:itemsPerPage> <opensearch:Query role="request" searchTerms="${search.searchTerms?xml}" startPage="${search.startPage}" count="${search.itemsPerPage}" language="${search.localeId}"/> <atom:link rel="self" href="${absurl(scripturl("?q=${search.searchTerms?url}&p=${search.startPage}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> <#if search.startPage > 1> <atom:link rel="first" href="${absurl(scripturl("?q=${search.searchTerms?url}&p=1&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> <atom:link rel="previous" href="${absurl(scripturl("?q=${search.searchTerms?url}&p=${search.startPage - 1}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> </#if> <#if search.startPage < search.totalPages> <atom:link rel="next" href="${absurl(scripturl("?q=${search.searchTerms?url}&p=${search.startPage + 1}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> <atom:link rel="last" href="${absurl(scripturl("?q=${search.searchTerms?url}&p=${search.totalPages}&c=${search.itemsPerPage}&l=${search.localeId}")?xml)}" type="application/atom+xml"/> </#if> <atom:link rel="search" type="application/opensearchdescription+xml" href="${absurl(url.serviceContext)}/api/search/keyword/description.xml"/> <#list search.results as row> <item> <title>${row.name?xml}</title> <link>${absurl(url.serviceContext)}${row.url}</link> <description>${(row.properties.description!"")?html}</description> <pubDate>${xmldate(row.properties.modified)}</pubDate> <guid isPermaLink="false">${row.id}</guid> </item> </#list> </channel> </rss>
<webscript> <shortname>Get keyword search description</shortname> <description>Gets an OpenSearch description document for an Alfresco repository keyword search.</description> <url>/sample/custom_keyword/description.xml</url> <format default="opensearchdescription">argument</format> </webscript>
<?xml version="1.0" encoding="UTF-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:alf="http://www.alfresco.org"> <ShortName>Alfresco Keyword Search</ShortName> <LongName>Alfresco ${server.edition} Keyword Search ${server.version}</LongName> <Description>Search Alfresco "company home" using keywords</Description> <#comment>IE takes first template from list, thus html response is listed first</#comment> <Url type="text/html" template="${absurl(url.serviceContext)}/sample/custom_keyword?q={searchTerms}&p={startPage?}&c={count?}&l={language?}&guest={alf:guest?}"/> <Url type="application/atom+xml" template="${absurl(url.serviceContext)}/sample/custom_keyword.atom?q={searchTerms}&p={startPage?}&c={count?}&l={language?}&guest={alf:guest?}"/> <Url type="application/rss+xml" template="${absurl(url.serviceContext)}/sample/custom_keyword.rss?q={searchTerms}&p={startPage?}&c={count?}&l={language?}&guest={alf:guest?}"/> <Image height="16" width="16" type="image/x-icon">${absurl(url.context)}/images/logo/AlfrescoLogo16.ico</Image> </OpenSearchDescription>
The Web Script /alfresco/service/sample/custom_keyword.html has responded with a status of 500 - Internal Error. 500 Description: An error inside the HTTP server which prevented it from fulfilling the request. Message: 00280002 Wrapped Exception (with status template): 00280002 Read-Write transaction started within read-only transaction Exception: org.alfresco.error.AlfrescoRuntimeException - 00280002 Read-Write transaction started within read-only transaction org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:309) org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:253) org.alfresco.repo.web.scripts.RepoStore$RepoTemplateSource$1.doWork(RepoStore.java:806) org.alfresco.repo.web.scripts.RepoStore$RepoTemplateSource$1.doWork(RepoStore.java:803) org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508) org.alfresco.repo.web.scripts.RepoStore$RepoTemplateSource.lastModified(RepoStore.java:802) org.alfresco.repo.web.scripts.RepoStore$RepoTemplateLoader.getLastModified(RepoStore.java:726) freemarker.cache.MultiTemplateLoader$MultiSource.getLastModified(MultiTemplateLoader.java:172) freemarker.cache.MultiTemplateLoader.getLastModified(MultiTemplateLoader.java:126) freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:306) freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:235) freemarker.template.Configuration.getTemplate(Configuration.java:487) freemarker.template.Configuration.getTemplate(Configuration.java:452) org.alfresco.repo.web.scripts.RepositoryTemplateProcessor.hasTemplate(RepositoryTemplateProcessor.java:148) org.springframework.extensions.webscripts.TemplateProcessorRegistry.findValidTemplatePath(TemplateProcessorRegistry.java:214) org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:585) org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267) org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147) org.alfresco.repo.web.scripts.RepositoryContainer$2.execute(RepositoryContainer.java:377) org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381) org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:436) org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466) org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304) org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333) org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189) org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859) org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555) java.lang.Thread.run(Thread.java:619) Exception: org.springframework.extensions.webscripts.WebScriptException - 00280002 Wrapped Exception (with status template): 00280002 Read-Write transaction started within read-only transaction org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:758) Server: Community v3.4.0 (c 3335) schema 4 113 Time: 28 janv. 2011 10:06:39 Diagnostics: Inspect Web Script (org/alfresco/sample/custom_keywordsearch.get)
Pour spécifier un répertoire de recherche, en effet la page que j'avais pointée est plutôt riche, mais l'information y figure tout de même :http://wiki.alfresco.com/wiki/Search#Path_QueriesBonne chance
( TYPE:"{http://www.alfresco.org/model/content/1.0}content" AND ( <#list 1..terms?size as i> d\:content:"${terms[i - 1]}" </#list> <#list 1..terms?size as i> d\:text:"${terms[i - 1]}*" </#list> ) )