[Résolu] Scriptnode.save qui semble ne pas fonctionner?

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

[Résolu] Scriptnode.save qui semble ne pas fonctionner?

Bonjour,

j'ai developpé du code qui permet de sauvegarder des préférences de recherche pour share sur alfresco 3.2r_CE. L'utilisateur peut choisir de limiter ses recherches au titre, a la description, aux tags et au full text.
Pour persister ces choix, je crée un répertoire dans le home dir de l'utilisateur qui fait la requete, sur lequel je place un aspect custom qui a des proprietés modifiées selons les valeurs qu'il coche sur un ecran dans share.
Le principe fonctionne bien, mais si je redémarre mon instance alfresco, rien n'est persisté, malgré un scriptnode.save() sur le répertoire en question.

D'apres l'API javascript sur le wiki et du code que j'ai pris en exemple, cela devrait suffire, mais j'ai probablement du oublier qqchose.
Y aurait-il qqun qui pourrait peut etre m'aiguiller sur une piste?

cordialement
4 Replies
bertrandf
Active Member

Re: [Résolu] Scriptnode.save qui semble ne pas fonctionner?

Je pense que si on avait un aperçu de votre code, on serait plus à même de vous aider.
La comme ca c'est difficile de vous aiguiller.
steves
Member II

Re: [Résolu] Scriptnode.save qui semble ne pas fonctionner?

Voici le code qui est appelé pour la sauvegarde (fichier searchprefs-ajax.post.json.js):



var asearchFolder = userhome.childByNamePath("asearch");
if (asearchFolder === null) {
   logger.log("asearch.searchprefs-ajax.post.json.js: Le répertoire asearch n'existe pas - creation");
   asearchFolder = userhome.createFolder("asearch");
   asearchFolder.addAspect("rtbfadvancedsearch:SearchPreferences");
   logger.log("asearch.searchprefs-ajax.post.json.js: Répertoire créé -nodeRef=" + asearchFolder.nodeRef);
}

var savePrefs = {
    init : function() {
   var prefsNode = userhome.childByNamePath("asearch");
   logger.log("asearch.searchprefs-ajax.post.json.js: prefsNode.nodeRef = " + prefsNode.nodeRef);
   logger.log("asearch.searchprefs-ajax.post.json.js: prefsNode.hasAspect = " + prefsNode.hasAspect("rtbfadvancedsearch:SearchPreferences"));
   if (prefsNode == null)
   {
      model.success = false;
      model.errormsg = "Erreur - impossible de sauvegarder les preferences: noeud introuvable";
      logger.log("asearch.searchprefs-ajax.post.json.js: Erreur - impossible de sauvegarder les preferences: noeud introuvable");
      return;
   }
   prefsNode.properties["rtbfadvancedsearch:includeTitle"] = (json.get("incTitle") === null) ? true : json.get("incTitle");
   prefsNode.properties["rtbfadvancedsearch:includeDescription"] = (json.get("incDescr") === null) ? true : json.get("incDescr");
   prefsNode.properties["rtbfadvancedsearch:includeTags"] = (json.get("incTags") === null) ? true : json.get("incTags");
   prefsNode.properties["rtbfadvancedsearch:includeFtx"] = (json.get("incFtx") === null) ? true : json.get("incFtx");
   prefsNode.save();
   logger.log("asearch.searchprefs-ajax.post.json.js: preferences sauvegardées");
   model.prefsNode = prefsNode;
   model.success = true;
   }
}

savePrefs.init();

Et voici la défintion de l'aspect:


<?xml version="1.0" encoding="UTF-8"?>

<!– Custom Model –>

<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>

<model name="rtbfadvancedsearch:rtbfadvancedsearchModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>  
   <description>RTBF Advanced Search Model</description>
   <author>RTBF</author>
   <version>1.0</version>

   <imports>
         <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <!– NOTE: The following namespace custom.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="rtbfadvancedsearch.model" prefix="rtbfadvancedsearch"/>
   </namespaces>

<aspects>
    <aspect name="rtbfadvancedsearch:SearchPreferences">
        <title>Customer Details</title>
        <properties>
            <property name="rtbfadvancedsearch:IncludeTitle">
                <title>Inclure le titre</title>
                <type>d:boolean</type>
                <default>true</default>
            </property>
            <property name="rtbfadvancedsearch:IncludeDescription">
                <title>Inclure la description</title>
                <type>d:boolean</type>
                <default>true</default>
            </property>
            <property name="rtbfadvancedsearch:IncludeTags">
                <title>Inclure les tags</title>
                <type>d:boolean</type>
                <default>true</default>
            </property>
            <property name="rtbfadvancedsearch:IncludeFtx">
                <title>Inclure le full-text</title>
                <type>d:boolean</type>
                <default>true</default>
            </property>
        </properties>
    </aspect>
</aspects>

</model>
bertrandf
Active Member

Re: [Résolu] Scriptnode.save qui semble ne pas fonctionner?

Je n'ai pas trop d'idées.

Vous dites que le principe fonctionne bien, ca veut dire que ca fonctionne tant que vous ne redémarrez pas Alfresco ?
Vous êtes allé dans le Node Browser pour voir si vos propriétés perso étaient bien renseignées après l'exécution de votre webscript ?
steves
Member II

Re: [Résolu] Scriptnode.save qui semble ne pas fonctionner?

j'ai trouvé mon probleme: c'etait tout simplement que j'accedais aux properties avec un mauvais nom. Au lieu de "IncludeTitle" par exemple, j'avais ecris "includeTitle" ("i" minuscule)!

Mais dans les logs, aucune erreur, et comme sans redémarrer le serveur tout fonctionnait bien, je n'avais pas cherché de ce coté la.
Apparemment on peut donc ajouter des properties qui ne correspondent a rien au niveau du modele de données, ca fonctionne bien, sauf qu'on ne peut pas les persister…


Merci d'avoir tenté de m'aider en tout cas!