cancel
Showing results for 
Search instead for 
Did you mean: 

Création d'un espace - Renommer les fichiers automatiquement

laklara
Champ in-the-making
Champ in-the-making
Bonjour,

Je désire créer mes espaces à partir d'un modèle existant (constitués d'espaces et de fichiers). Or je désire que chacun de mes fichiers de cet espace soient renommés automatiquement en fonction du nom de l'espace créé.

Par exemple je crée un espace "HelloWorld", j'aimerais que mon fichier "_STB.doc" prenne le nom "HelloWorld_STB.doc". Et ce automatiquement, juste après la création de mon espace.

Je regarde du côté des Web script, script java (il semblerait que cela ne gère pas le renommage de fichiers), mais j'ai du mal encore à cibler ce que je dois utiliser.

Qu'en pensez vous ?

Merci d'avance !
10 REPLIES 10

rguinot
Confirmed Champ
Confirmed Champ
Vous pouvez créer un script JavaScript (coté serveur) qui sera éxécuté via une règle à chaque ajout de contenu.

L'API JavaScript permet tout à fait d'éditer des métadonnées (donc le nom), et vous pourrez facilement avoir accès au nom de l'espace parent étant donné que le nouveau contenu sera probablement passé en contexte d'éxécution du script.

toutes les infos nécessaires sont ici : http://wiki.alfresco.com/wiki/JavaScript_API#Modifying_and_Creating_API

laklara
Champ in-the-making
Champ in-the-making
Merci beaucoup pour cette réponse rapide!
Je m'y met de suite !

laklara
Champ in-the-making
Champ in-the-making
Par contre il faut que je retrouve le noeud de l'espace venant juste d'être créé. J'ai trouvé une méthode pour récupérer un noeud :
var testingFolder = userhome.childByNamePath("QA/Performance/Testing");

mais je ne connais pas le nom du dossier venant d'être créé…

laklara
Champ in-the-making
Champ in-the-making
J'ai réalisé mon script.

Le voici, a titre indicatif pour d'éventuels intéressés :

//Récupération du répertoire des documents livrables
var versionSpace = space.parent.childByNamePath("Documents livrables");

if (versionSpace != null)
{
   //On récupère la liste des enfants de l'espace
    var childList = versionSpace.children;
   
   //On copie la liste des fichiers dans un dossier de sauvegarde
   var saveSpace = space.childByNamePath("Anciens livrables");
   var date = new Date();
   var name = "Livrable"+date.getDay()+"-"+date.getMonth()+"-"+date.getYear();
   var livrableSpace = saveSpace.createFolder(name);
   
   /*On déplace chaque fils*/
   for (var i=0; i<childList.length; i++) {
      childList[i].move(livrableSpace);
   }
}

Mais est ce possible de rajouter un bouton au menu (tel les workflow) pour ne pas avoir à refaire la configuration de "Lancer une action" à chaque fois ?

rguinot
Confirmed Champ
Confirmed Champ
Je croyais que vous vouliez éxecuter ce script automatiquement à l'ajout de contenu ?

Dans ces cas là il vous faudra l'executer via une règle sur l'espace (ou à la racine).
Condition : tout contenu, Action : executer votre script

n'est ce pas ce que vous souhaitiez

laklara
Champ in-the-making
Champ in-the-making
Oui j'ai vu pour les règles mais je désire que ce script soit lancé ponctuellement, sur le bon vouloir du responsable.
Pour vider un dossier et mettre son contenu en archive.

rguinot
Confirmed Champ
Confirmed Champ
j'imagine que cela doit être possible.

http://wiki.alfresco.com/wiki/Custom_Action_UI

Il faut également regarder du coté des "Action Groups" dans la conf du web-client si je ne m'abuse

christophes
Champ in-the-making
Champ in-the-making
Pour créer une action il faut aller dans le web-client-config-custom.xml et ajouter par exemple :
   <config>
      <actions>
         <action id="nom_action">
            <permissions>
               <permission allow="true">Write</permission>
            </permissions>
            <label-id>label_action</label-id>
            <image>/images/extension/nom_image</image>
            <script>/Company Home/Data Dictionnary/Scripts/nom_script</script>
            <params>
               <param name="id">#{actionContext.id}</param>
            </params>
         </action>
         
         <!– Action group for each space in browse screen  –>
         <action-group id="space_browse">
            <action idref="nom_action" />
         </action-group>

      </actions>
   </config>
Voilà normalement ça doit suffire à créer une action avec une icône qui apparaitra pour chaque espace au même niveau que visualiser les métadonnées.

Si tu as besoin de précisions, n'hésite pas.

Christophe

laklara
Champ in-the-making
Champ in-the-making
Merci pour cette réponse.

J'ai donc essayé de créer cette action, mais je n'ai pas de réaction (pas d'action qui s'affiche).

J'ai remplacé comme ça :
 <config>
     <actions>
       <action id="ViderLivrablesDocuments">
         <permissions>
            <permission allow="true">Write</permission>
         </permissions>
         <label-id>ViderLivrablesDocuments</label-id>
         <!–image>/images/extension/nom_image</image–>
         <script>/Company Home/Data Dictionnary/Scripts/ViderVersionFigee.js</script>
         <params>
            <param name="id">#{actionContext.id}</param>
         </params>
       </action>
      
       <!– Action group for each space in browse screen  –>
       <action-group id="GCA3">
         <action idref="ViderLivrablesDocuments" />
       </action-group>

     </actions>
   </config>


Pour "<action-group id="GCA3">" GCA3 est le répertoire où je désire établir cette action.
Peut être ai-je grillé une étape …

Merci d'avance!