[Alfresco 4.0b Community] Share et Action personnalisée

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

[Alfresco 4.0b Community] Share et Action personnalisée

Bonjour,

Je viens de passer quelques longues heures à éplucher le Web pour pouvoir trouver une piste pour résoudre mon problème mais malgré mes différents tests je m'avoue vaincu. Je travaille actuellement sur la version 4.0b Community d'Alfresco, et je souhaite ajouter une action personnalisée dans Share au niveau des documents.

Pour cela, j'ai suivi la maigre documentation sur la V4.0b et j'ai réussi à ajouter mon action à la liste des actions disponibles (ajout de l'action dans le share-config-custom.xml) et cela avec sa petite icône en supplément ! (Extra-Ordinaire !!!)
Maintenant la phase qui me bloque est l'ajout de l'action en elle-même. J'ai suivi le même processus utilisé par l'action "Déplacer vers" pour dans Share, j'ai également testé de faire un test par rapport aux différents tutos de la v3.4 mais au final le résultat est toujours le même : Lorsque je clique sur mon action rien ne se passe !!! (Firebug reste sans voix également…)  :shock:

Voici le processus que j'utilise actuellement :
1. Mon share-config-custom déclare l'action et l'ajoute aux actionGroup que je souhaite - OK, ça c'est bon !
2. J'ai ajouté par la suite dans le fichier actions.js (sous share/components/documentlibrary) et dans le fichier documentlibrary-actions.js (sous share/js/) ma fonction qui ressemble à ça :

      onActionLier: function dlA_onActionLier(record)
      {
         if (!this.modules.lierFichier)
         {
            this.modules.lierFichier = new Alfresco.module.DoclibLierFichier(this.id + "-lierFichier");
         }
           
         var allowedViewModes = [ Alfresco.module.DoclibGlobalFolder.VIEW_MODE_REPOSITORY ];
         this.modules.lierFichier.setOptions(
               {
                    allowedViewModes: allowedViewModes,
                       siteId: this.options.siteId,
                       containerId: this.options.containerId,
                       path: this.currentPath,
                       files: record,
                       rootNode: this.options.rootNode,
                       parentId: this.getParentNodeRef(record)
                  }).showDialog();
      }

3. J'ai crée ma classe "DoclibLierFichier" (dans un fichier lier-fichier.js) sous share/modules/documentlibrary/ en m'inspirant très fortement du fichier copy-move-to.js situé au même endroit et en lui associant un css (logiquement nommé lier-fichier.css).

4. J'ajoute dans les fichiers "actions-common.get.head.ftl" et "documentlist.get.head.ftl" les liens vers ces fichiers javascript :
Le document documentlist.get.head.ftl ressemble donc à ça :

<#include "../component.head.inc">
<#include "../form/form.get.head.ftl">
<@script type="text/javascript" src="${page.url.context}/res/modules/documentlibrary/lier-fichier.js"></@script>
<!– Document List –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/components/documentlibrary/documentlist.css" />
<@script type="text/javascript" src="${page.url.context}/res/components/documentlibrary/documentlist.js"></@script>

et le document actions-common.get.head.ftl à ça :

<#include "../component.head.inc">
<#– Document Library Actions: Supports concatenated JavaScript files via build scripts –>
<script type="text/javascript" src="${page.url.context}/res/modules/documentlibrary/lier-fichier-min.js"></script>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/modules/documentlibrary/lier-fichier.css" />

<#if DEBUG>
   <script type="text/javascript" src="${page.url.context}/res/components/documentlibrary/actions-min.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/components/documentlibrary/actions.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/modules/simple-dialog.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/modules/documentlibrary/global-folder.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/modules/documentlibrary/copy-move-to.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/components/people-finder/people-finder.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/modules/documentlibrary/permissions.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/modules/documentlibrary/aspects.js"></script>
   <script type="text/javascript" src="${page.url.context}/res/modules/social-publish.js"></script>
<#else>
   <script type="text/javascript" src="${page.url.context}/res/js/documentlibrary-actions-min.js"></script>
</#if>
<#– Common actions styles –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/components/documentlibrary/actions.css" />
<#– Global Folder Picker (req'd by Copy/Move To) –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/modules/documentlibrary/global-folder.css" />
<#– People Finder Assets (req'd by Assign Workflow)  –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/components/people-finder/people-finder.css" />
<#– Manage Permissions –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/modules/documentlibrary/permissions.css" />
<#– Manage Aspects –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/modules/documentlibrary/aspects.css" />
<#– Social Publishing –>
<@link rel="stylesheet" type="text/css" href="${page.url.context}/res/modules/social-publish.css" />

5. J'ai par la suite crée mon webscript lié au module "DoclibLierFichier" sous WEB-INF/classes/alfresco/site-webscripts/org/alfresco/modules/documentlibrary/

Et le résultat est sans équivoque : L'action est présente mais lorsque je clique dessus, rien ne se passe !!! Je pense donc qu'il doit me manquer le lien entre le clic sur l'action et l'action mais pour moi c'était ma fonction "onActionLier" qui était censé faire ce job….

Qu'en pensez-vous ???? Je suis vraiment bloqué et je ne comprends vraiment pas ce qu'il me manque ou qui est mal fait dans mon processus !!!

Merci par avance  :cry:  :cry:  :cry: !!!
4 Replies
cleseach
Active Member II

Re: [Alfresco 4.0b Community] Share et Action personnalisée

Bonjour,

Je n'ai pas pris le temps de lire complétement votre message, mais deux questions quand même !
  • Etes-vous en mode "debug" (<client-debug>true</client-debug> dans share-config-custom.xml) ? Si non, c'est le fichier action-min.js qui va être chargé.

  • Avez-vous vidé le cache de votre navigateur ?
Cordialement,
Charles Le Seac'h
technizo
Member II

Re: [Alfresco 4.0b Community] Share et Action personnalisée

Bonjour,

Je suis effectivement en mode debug et j'ai bien vidé le cash.
Après avoir passé de longues heures dessus j'ai quand même réussi à lancer mon action, enfin juste à ouvrir la dialog utilisée par l'action "Déplacer Vers…".

Je cherche maintenant à modifier cette dialog de manière à ce qu'elle affiche également les fichiers et pas seulement les dossiers. Auriez-vous des tuyaux ou des pistes pour effectuer ce genre d'opérations ?

Je vous remercie encore Smiley Happy
cleseach
Active Member II

Re: [Alfresco 4.0b Community] Share et Action personnalisée

Bonjour,

Je cherche maintenant à modifier cette dialog de manière à ce qu'elle affiche également les fichiers et pas seulement les dossiers. Auriez-vous des tuyaux ou des pistes pour effectuer ce genre d'opérations ?

Comme je ne sais pas précisément ce que vous voulez faire à partir de cet exemple, tout ce que je peux vous inviter à faire, c'est d'aller voir le fichier global-folder.js.
On y trouve notamment la définition des URL qui vont être appelées pour obtenir les flux JSON nécessaire à la construction des arborescences.

Cordialement,
Charles Le Seac'h
technizo
Member II

Re: [Alfresco 4.0b Community] Share et Action personnalisée

C'est effectivement vers ce fichier que je souhaitais m'orienter.
En fait, je souhaiterai que la dialog m'affiche également les fichiers et pas seulement les dossiers comme c'est le cas actuellement pour pouvoir sélectionner un fichier dans l'arborescence et effectuer une action personnalisée dessus… mais je  ne sais pas quel fichier est à modifier  :?: