Modification action 'Transformer'

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

Modification action 'Transformer'

Bonjour,

je souhaite autoriser les usagers à transformer les documents au format PDF.

Dans le fichier share-config-custom.xml, j'ai activé l'action Transformer. La conversion fonctionne parfaitement.

Seulement, j'aimerai modifier l'action de telle sorte à ce que le document généré (PDF) contienne (dans le titre ou une propriété perso) le numéro de version du document source.

Pensez vous que cela soit possible ?

Je pense que par le biais d'un script écrit de toute pièce, cela pourrait faire l'affaire. Mais l'avantage de l'action Transformer native c'est que je n'ai pas besoin de me soucier du formulaire pour sélectionner le dossier de destination qui est déjà inclus. Je veux juste ajouter un bout de code permettant de récupérer la version du document puis de l'injecter dans une propriété du document généré.

Cordialement
Sébastien Brière
2 Replies
sebbri
Member II

Re: Modification action 'Transformer'

J'ai avancé :
J'ai créé une action perso :

Etape 1 : J'ai créé une action custom-action-services-context.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
      <bean id="transform-to-pdf-action" parent="script">
                <property name="scriptLocation">
                        <bean class="org.alfresco.repo.jscript.ClasspathScriptLocation">
                                <constructor-arg>
                                        <value>alfresco/extension/scripts/transformToPdf.js</value>
                                </constructor-arg>
                        </bean>
                </property>
    </bean>
</beans>


Etape 2 : le script à exécuter (transformToPdf.js) :

var name = document.properties["cm:name"];
var version = document.properties["cm:versionLabel"];
newdoc = document.transformDocument("application/pdf");
newdoc.properties["gen:Version"] = name + " ("+ version +")";
newdoc.save();


Etape 3 : déclaration de l'action dans SHARE (share-config-custom.xml) :

<config evaluator="string-compare" condition="DocLibActions">
        <actions>
                <!– Transfor Document To PDF –>
                <action id="transform-to-pdf" type="javascript" label="Transformer en PDF">
                        <param name="function">onActionFormDialog</param>
                        <!– Additional parameters for onFormDialog function  –>
                        <param name="itemKind">action</param>
                        <param name="itemId">transform-to-pdf-action</param>
                        <param name="mode">create</param>
                        <param name="destination">{node.nodeRef}</param>
                        <!–
                        <param name="action">transform-to-pdf-action</param>
                        –>
                        <param name="successMessage">Succcès : le document PDF a été créé</param>
                        <param name="failureMessage">Echec : Le document PDF n'a pas été créé"</param>
                </action>
        </actions>
        <actionGroups>
                 <actionGroup id="document-browse">
                         <action index="460" id="transform-to-pdf"/>
                 </actionGroup>
        </actionGroups>
   </config>


Ca marche sauf que je voudrais ajouter un formulaire pour que l'utilisateur sélectionne le dossier de destination.
Je ne sais pas comment faire !

Merci d'avance
Sébastien Brière
sebbri
Member II

Re: Modification action 'Transformer'

J'ai réussi à ajouter mon formulaire.


<config evaluator="string-compare" condition="transform-to-pdf-action">
      <forms>
         <form>
            <field-visibility>
               <show id="destination-folder" />
            </field-visibility>
            <appearance>
               <field id="destination-folder" label="Choisir la destination">
                        <control template="/org/alfresco/components/form/controls/association.ftl">
                                <control-param name="displayMode">items</control-param>
                                <control-param name="showTargetLink">true</control-param>
                                <control-param name="compactMode">true</control-param>
                        </control>
               </field>
            </appearance>
         </form>
      </forms>
   </config>


——————-
Maintenant, une question :

Il semble que je me sois orienté dans la mauvaise direction. En effet, après de nombreuses recherches, il ne semble pas possible de passer des arguments "saisis" dans un formulaire à un script Javascript.

Dans le cas présent :
- Sur un document, je clique sur mon action "Transformer en PDF".
- Le formulaire apparait et je peux sélectionner un dossier de destination
- Une fois validé, mon Javascript est lancé et fonctionne. Un document PDF est créé dans le même répertoire et j'ai bien ma propriété contenant le nom du document source et sa version.

Le problème c'est que l'étape formulaire ne me sert pour le moment à rien car je ne trouve pas le moyen de passer la valeur "destination-folder" au Javascript !!

Je tourne en rond.

Merci par avance pour votre aide !!
Sébastien Brière