Modification de l'URL dans l'onglet 'Partage' (resolu)

cancel
Showing results for 
Search instead for 
Did you mean: 
unknown-user
Active Member

Modification de l'URL dans l'onglet 'Partage' (resolu)

Bonjour,

c'est encore moi!

Lorsqu'on affiche les détails d'un document, on a l'onglet Partager qui permet d'afficher le lien de la page actuelle.
J'ai besoin de modifier ce lien pour qu'il ne redirige pas sur la page Share des détails du document en question, mais sur le lien direct de téléchargement sur Alfresco Explorer de ce même document. L'idée étant que si je donne ce lien à quelqu'un, il puisse accéder au fichier sans avoir à se connecter grâce au compte guest sur l'explorer.

Je pense qu'il suffit de modifier le document document-details/document-links.get.html.ftl et de remplacer la ligne href du code suivant:

<!– Current page url - (javascript will prefix with the current browser location) –>
           <h3 class="thin dark">${msg("page.header")}</h3>
           <div class="link-info">
              <input id="${el}-page" value=""/>
              <a href="#" name=".onCopyLinkClick" class="${el} hidden">${msg("page.copy")}</a>
           </div>

par quelque chose du type:


<a href=http://monadresse:monport/alfresco/d/d/workspace/SpacesStore/${noeud}/${nomDuFichier} </a>

Probleme: je ne trouve pas ou est codé le lien de téléchargement sur l'explorer (car je voulais m'en inspirer pour modifier celui du share), du coup je ne sais pas quels paramètres je dois mettre à la place des {noeud} et {nomDuFichier} de mon exemple.

J'ai plusieurs questions:

1)- A quoi correspondent les d/d de l'adresse explorer? J'ai vu que parfois qu'ils étaient remplacés par des s, je vais donc devoir paramétrer l'URL en fonction, correct?
2)- Les éléments présents dans l'espace Site ne sont pas accessibles sans authentification depuis l'explorer. Je vais devoir configurer le lien pour que si l'on se trouve dans un Site, le lien affiché soit le lien de partage classique. Une idée pour faire cela?
3) quels paramètres dois-je utiliser pour conigurer l'URL comme je le souhaite? ( http: //monadresse:monport/alfresco/d/d/workspace/SpacesStore/${noeud}/${nomDuFichier} )


Merci de vos précisions.
4 Replies
unknown-user
Active Member

Re: Modification de l'URL dans l'onglet 'Partage' (resolu)

Je seche.

Je ne comprends pas concrètement ce qu'il se passe dans le fichier document-links.get.html.ftl

En effet, l'affichage du lien se fait dans la balise <input id=${el}-page" value=""> mais l'attribut value est vide. Du coup je ne comprends pas comment l'url est trouvée.

Je souhaite juste transformer cet onglet en modifiant le lien par le lien de telechargement. On partage non plus le lien de la page mais le lien de telechargement du fichier, pour un acces direct.

Personne ne peux m'aider? Ou me donner des indications?
unknown-user
Active Member

Re: Modification de l'URL dans l'onglet 'Partage' (resolu)

Je progresse à tâtons.

Mon probleme vient du fait que je n'ai pas acces a la variable document.downloadUrl dans le fichier document-links.get.html.ftl (ni a aucune des variables du type document d'ailleurs).

Si j'avais cette variable, alors tout deviens très simple (il me faut juste l'url public,c'est a dire celle de la forme : /alfresco/guestDownload/<direct|attach>/<workspace>/<store>/<nodeId>/<filename>

Comment la récupérer et la mettre dans mon fichier .ftl?

S'il vous plait…
unknown-user
Active Member

Re: Modification de l'URL dans l'onglet 'Partage' (resolu)

Ah! j'ai découvert quelque chose d'essentiel que j'avais manqué jusqu'à la, il existe des fonctions spécifiques aux modifications effectuées avec surf: http://wiki.alfresco.com/wiki/Surf_Platform_-_Freemarker_Template_and_JavaScript_API

Mais, cela ne change rien a mon probleme, je ne sais toujours pas comment recuperer le nom du fichier sur lequel je me trouve, ainsi que sa nodeRef, qui sont les deux seules infos dont j'ai besoin.

en effet, toutes les infos auxquelles j'ai acces (page, url, ect) se reporte au lien du template en lui meme (org.alfresco.document-links) , et pas du tout sur le document sur lequel je suis actuellement.

Je réitère ma question: dans un template, comment accéder au nom du document sur lequel je me trouve et sa nodeRef?

Concretement, j'ai besoin d'acceder à la variable node.contentUrl qui est presente dans node-heade.get.html.ftl dans mon fichier monfichier.get.html.ftl et je ne sais pas comment faire.

S'il vous plait, je désespère…
unknown-user
Active Member

Re: Modification de l'URL dans l'onglet 'Partage' (resolu)

J'ai reussi! Ouf Smiley Tongue

Il fallait modifier le javaScript associé, c'etait vraiment tout bidon.

Pour ceux que ça interesse, si vous voulez rajouter un onglet permettant d'afficher le lien de téléchargement public d'un fichier sur share (pour l'envoyer par mail a quelqu'un qui n'est pas sur alfresco par exemple) voici les différents fichiers:

creation d'un web script lien-partage:

lien_partage.get.desc.xml

 <webscript>
  <shortname>Creation d'un onglet de partage du lien public d'un fichier</shortname>
  <url>/test/lien_partage</url>
  </webscript>

lien_partage.get.head.ftl

<#include "component.head.inc">
<!– Document Links –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/components/document-details/document-links.css" />
<@script type="text/javascript" src="${page.url.context}/components/document-details/document-links.js"></@script>

lien_partage.get.html.ftl

<#if document??>
   <#if document.workingCopy??>
      <!– Don't display links since this nodeRef points to one of a working copy pair –>
   <#else>
      <#assign el=args.htmlid?html>
      <script type="text/javascript">//<![CDATA[
      new Alfresco.DocumentLinks("${el}").setOptions(
      {
         nodeRef: "${nodeRef?js_string}",
         siteId: <#if site??>"${site?js_string}"<#else>null</#if>
      }).setMessages(${messages});
      //]]></script>
      <div id="${el}-body" class="document-links document-details-panel">

         <h2 id="${el}-heading" class="thin dark">${msg("header")}</h2>

         <div class="panel-body">

            <!– Current page url - (javascript will prefix with the current browser location) –>
            <h3 class="thin dark">${msg("page.header")}</h3>
            <div class="link-info">
      <input value="10.1.8.14:8082/alfresco/guestDownload/a/${node.contentURL?substring(18)}">   
                 <a href="#" name=".onCopyLinkClick" class="${el} hidden">${msg("page.copy")}</a>
            </div>

         </div>

         <script type="text/javascript">//<![CDATA[
         Alfresco.util.createTwister("${el}-heading", "DocumentLinks");
         //]]></script>
   </div>
   </#if>
</#if>

lien_partage.get.js

<import resource="classpath:/alfresco/templates/org/alfresco/import/alfresco-util.js">

function main()
{
   AlfrescoUtil.param('nodeRef');
   AlfrescoUtil.param('site', null);
   var documentDetails = AlfrescoUtil.getNodeDetails(model.nodeRef, model.site);
   var nodeDetails = AlfrescoUtil.getNodeDetails(model.nodeRef, model.site);
   if (documentDetails)
   {
      model.document = documentDetails.item;
      model.repositoryUrl = AlfrescoUtil.getRepositoryUrl();
      model.node = nodeDetails.item.node;
   }
}

main()

lien_partage.get_fr.properties

header=Partager le lien

page.header=Copier ce lien pour partager le lien de telechargement
page.copy=copier ce lien pour partager le lien de telechargement

et enfin declaration du module dans site-data:

<extension>
- <modules>
- <module>
  <id>modifie lien "partager"</id>
- <components>
- <component>
  <region-id>document-links</region-id>
  <source-id>document-details</source-id>
  <scope>template</scope>
- <sub-components>
- <sub-component id="lien_partage">
  <url>/test/lien_partage</url>
  </sub-component>
  </sub-components>
  </component>
  </components>
  </module>
  </modules>
  </extension>

et rajouter le fichier component.head.inc dans le meme dossier sitewebscript et le tour est joué