Alfresco 3.4 et Wordpress, Typepad

cancel
Showing results for 
Search instead for 
Did you mean: 
jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

Je n'ai toujours pas trouvé comment spécifier le répertoire de recherche mais j'ai un autre problème.

J'utilise le webscript keywordsearch mais la présentation sous forme de liens ne me plaît pas. Alors je souhaite modifier l'affichage. Je duplique donc tous les fichiers de keywordsearch et je les mets dans "Extensions de webscript" dans l'explorer Alfresco. Je change leur noms.
Je modifie l'url (/api/search/keyword.html deviens /api/search/keywordcustom.html) dans tous les fichiers.

Mais après je ne sais pas quoi modifier. Cela ne fonctionne pas, j'ai une erreur 500 :
18:07:07,964 User:admin ERROR [extensions.webscripts.AbstractRuntime] Exception from executeScript - redirecting to status template error: 00270080 Wrapped Exception (with status template): 00270036 Read-Write transaction started within read-only transaction
org.springframework.extensions.webscripts.WebScriptException: 00270080 Wrapped Exception (with status template): 00270036 Read-Write transaction started within read-only transaction


Pourquoi j'ai cette erreur ?
Sinon, est-ce que je suis sur la bonne voie, quelles modifications je dois encore faire ?

Merci d'avance.

PS: si vous avez aussi une idée pour mon histoire de répertoire de recherche cela m'intéresse également.
jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

Je n'arrive toujours pas à exécuter mon custom script !
Je ne comprends rien.

Je vais poster le code au cas où une âme charitable pourrait m'aider ! Le principe est d'avoir les résultats de la recherche sous la même forme que l'affichage du script Myspaces
Mes fichiers se trouvent dans : Espace racine > Espace invité > Dictionnaire de données > Scripts Web > org > alfresco > sample

custom_keywordsearch.get.atom.ftl
<?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 &gt; 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 &lt; 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>

custom_keywordsearch.get.desc.xml
<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}&amp;p={startPage?}&amp;c={count?}&amp;l={language?}</url>
  <authentication>guest</authentication>
  <transaction allow="readonly">required</transaction>
</webscript>

custom_keywordsearch.get.html.ftl
<?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 &gt; 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 &lt; 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>

custom_keywordsearch.get.query_.ftl
(
  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>
  )
)

custom_keywordsearch.get.rss.ftl
<?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 &gt; 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 &lt; 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>

custom_keywordsearchdescription.get.desc.xml
<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>

custom_keywordsearchdescription.get.opensearchdescription.ftl
<?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}&amp;p={startPage?}&amp;c={count?}&amp;l={language?}&amp;guest={alf:guest?}"/>
  <Url type="application/atom+xml" template="${absurl(url.serviceContext)}/sample/custom_keyword.atom?q={searchTerms}&amp;p={startPage?}&amp;c={count?}&amp;l={language?}&amp;guest={alf:guest?}"/>
  <Url type="application/rss+xml" template="${absurl(url.serviceContext)}/sample/custom_keyword.rss?q={searchTerms}&amp;p={startPage?}&amp;c={count?}&amp;l={language?}&amp;guest={alf:guest?}"/>
  <Image height="16" width="16" type="image/x-icon">${absurl(url.context)}/images/logo/AlfrescoLogo16.ico</Image>
</OpenSearchDescription>

Lorsque je tape l'URL suivant : http://localhost:8080/alfresco/service/sample/custom_keyword.html?q=exemple
j'ai l'erreur suivante :

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)

Quelqu'un a une idée ?

PS: désolé pour le pavé !
jayjayecl
Active Member II

Re: Alfresco 3.4 et Wordpress, Typepad

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_Queries

Bonne chance Smiley Happy
jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

Merci je regarderai en détails dès que j'aurais réglé mon problème de customisation de webscript.
jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

Personne n'a d'idée pour mon histoire script custom ?

J'ai l'erreur suivante lorsque je lance mon script :

Message:   01030018 Wrapped Exception (with status template): 01030021 Erreur lors du traitement du modèle 'Expression search is undefined on line 5, column 39 in org/alfresco/repository/search/wordpress.get.html.ftl.'. Veuillez contacter votre administrateur système.
   
Exception:   freemarker.core.InvalidReferenceException - Expression search is undefined on line 5, column 39 in org/alfresco/repository/search/custom_keyword.get.html.ftl.
jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

J'ai réussi à intégrer mon script custom.

Maintenant je dois chercher comment effectuer la recherche dans un répertoire précis.

Si jamais vous avez une idée …
jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

Personne ne sait comment spécifier un répertoire lors de la recherche ?  :shock:
jayjayecl
Active Member II

Re: Alfresco 3.4 et Wordpress, Typepad

jgautier
Member II

Re: Alfresco 3.4 et Wordpress, Typepad

Merci pour le lien mais il y a juste deux questions sans réponses !

EDIT : le lien a été changé est redirige vers cette page.

J'ai bien lu les deux pages que vous m'avez envoyé mais je ne vois rien concernant le répertoire de recherche. Je ne le trouve nul part dans les fichiers que je modifie. Peut être est-il spécifié à un endroit précis ?
jayjayecl
Active Member II

Re: Alfresco 3.4 et Wordpress, Typepad

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_Queries

Bonne chance Smiley Happy

Le lien redirige vers votre message où vous m'expliquez que vous regarderez la page wiki que je vous indique, et qui correspond à votre demande.
Je ne peux pas faire grand chose d'autre que dire qu'il s'agit des requêtes "PATH", vous donner le lien qui pointe vers la documentation de ces requêtes …
Je ne vois pas ce qui bloque  :?:
Pourriez-vous nous l'expliquer ?