cancel
Showing results for 
Search instead for 
Did you mean: 

Conseil pour le développeement d'une action

flash31186_8291
Champ in-the-making
Champ in-the-making
Bonjour à tous,

En fait voilà, j'aurais besoin de développer une action permettant à un utilisateur A d'assigner une permission spéciale à un utilisateur B sur un espace C.
Alors donc voici comment j'avais pensé faire :
L'utilisateur A se connecte et parcours les espaces jusqu'à l'espace où il veut assigner la permission spéciale à l'utilisateur B. Lorsqu'il arrive sur celui-ci, dans les boutons d'action en dessous du nom, il y aurait un bouton permettant d'accéder à un wizard affichant les différents utilisateur d'alfresco. Il sélectionne l'utilisateur B voulu, il valide et un script se lance permettant ainsi d'attribuer à l'utilisateur B cette permission.
J'imagine bien que vous vous dites qu'il suffirait d'utiliser l'invitation. Cependant, étant confronté à des utilisateurs "de bas niveau", je préfère leur donner accès au moins de possibilité possible (qu'ils ne se perdent pas 😉 ). En plus j'aurais quelques autres modifications à faire sur l'espace ayant été modifié.

Alors ce que j'ai commencé à faire jusque maintenant, j'ai créé une action dans le fichier web-client-config-custom.xml.

   <config>
      <wizards>
         <!– Definition of the realocation role wizard–>
         <wizard name="realocationRole" managed-bean="InviteSpaceUsersWizard"
            title-id="realocation_role" description-id="realocation_role"
            icon="/images/icons/realocate_role.gif">
            <step name="realocate" title-id="realocate" description-id="realocate_step1_desc">
          <page path="/jsp/extension/realocate-role.jsp"
                  title-id="realocate_step1_desc_title" description-id="realocate_step1_desc_desc"
                  instruction-id="default_instruction"/>
            </step>
         </wizard>
      </wizards>

      <actions>
         <action id="realocate_role">
            <label-id>realocate_role</label-id>
            <image>/images/icons/realocate_role.gif</image>
            <script></script>
            <action>wizard:realocationRole</action>
         </action>
      </actions>
   </config>
   <action-group id="browse_create_menu">
            <action idref="realocate_role"/>
   </action-group>

Alors par rapport à celà, j'obtiens bien l'action que j'ai créée mais dans le menu "Créer" de l'espace. Par quel action-group id, devrais-je remplacer l'existant pour obtenir l'îcone dans les boutons en dessous du nom de l'espace ?

Ensuite, j'ai créé la jsp susmentionnée, avec un morceau de code repris dans la page edit-user-roles.jsp :

               
<td>1. 
</f:verbatim><h:outputText value="#{msg.select_role}" /><f:verbatim>
   </td>
</tr>
<tr>
   <td>
</f:verbatim>
<h:selectOneListbox id="roles" style="width:250px" size="5">
<f:selectItems value="#{InviteSpaceUsersWizard.roles}" />
</h:selectOneListbox>
<f:verbatim>

Cependant, ici quand je lance l'action, j'obtiens l'erreur suivante (alors que j'ai bien spécifié dans mon action d'utiliser le bean "InviteSpaceUsersWizard") :
javax.faces.FacesException: Cannot get value for expression '#{InviteSpaceUsersWizard.roles}'
caused by:
org.apache.jasper.JasperException: Cannot get value for expression '#{InviteSpaceUsersWizard.roles}'
caused by:
javax.faces.el.EvaluationException: Cannot get value for expression '#{InviteSpaceUsersWizard.roles}'
caused by:
javax.faces.el.EvaluationException: Exception getting value of property roles of base of type : org.alfresco.web.bean.spaces.InviteSpaceUsersWizard
caused by:
javax.faces.el.EvaluationException: Bean: org.alfresco.web.bean.spaces.InviteSpaceUsersWizard, property: roles
caused by:
java.lang.reflect.InvocationTargetException
caused by:
java.lang.NullPointerException

Est-ce que j'aurais oublié qqchose, ou est-ce que je m'y prendrais mal dans ma démarche ?

Parce que donc pour la suite, après validation du nom de l'utilisateur B, je compte envoyer le nom de l'utilisateur par paramètre au script pour affecter mes modifications à l'espace. Est-ce que simplement en tappant le nom du script dans le tag <script/> de la config de mon action, cela fonctionnerait-il ?

Si je n'ai pas été assez clair dans mes explications, n'hésitez pas à me demander 😉
Je vous remercie d'avance pour les différentes réponses que vous pourriez me donner.

Michaël
6 REPLIES 6

rivarola
Champ on-the-rise
Champ on-the-rise
Bonjour,

Ca ne va pas t'aider beaucoup mais pour les action-group des menus tu as cette doc : http://wiki.alfresco.com/fr/index.php/Documentation:Configuration_des_menus

flash31186_8291
Champ in-the-making
Champ in-the-making
Oh ben ca peux m'aider quand même un peu (c'était une partie de mes questions 😉 )
Merci bien Rivarola 😉

Mais si qqun peut m'aider à résoudre mon autre problème …  :?:

flash31186_8291
Champ in-the-making
Champ in-the-making
Bon j'ai trouvé ce qui clochait … effectivement dans la console d'alfresco, il affichait une nullPointerException … en allant voir dans les sources, j'ai pu constater que ca concernait une méthode du bean  … et c là que j'ai compris qu'il fallait filler un contexte à mon action (ainsi qu'un listener).


<action-listener>#{BrowseBean.setupSpaceAction}</action-listener>
<params>
       <param name="id">#{actionContext.id}</param>
</params>

Enfin ce problème est résolu … mais ce que j'essaye à faire maintenant, c qu'en ayant sélectionné mon utilisateur B, et en cliquant sur "Suivant" par exemple, l'action lance le script défini dans la balise <script/> de ma config. Et j'aimerai surtout qu'il m'envoie l'utilisateur B sélectionné en tant que paramètre pour l'utiliser dans ce script… Alors j'ai été voir dans la doc et j'ai utilisé dans ma jsp un "genericPicker",

<a:genericPicker id="picker" showAddButton="false" filters="#{WizardManager.bean.filters}" queryCallback="#{WizardManager.bean.pickerCallback}" />

qui (si j'ai bien compris) me retourne un queryCallback contenant un tableau d'objet SelectItem contenant le résultat de ce qui a été sélectionné dans le picker.
Alors ma question est : comment puis-je récupérer ce tableau dans mon script ?

Ou alors faudrait-il que je lance une autre action à partir du bouton "add" du picker (caché dans l'exemple plus haut), pour pouvoir envoyer dans un script le tableau retourné par ce picker ?

Merci d'avance pour toutes les réponses que vous pourriez me donner 😉

Michaël

fougnawa
Champ in-the-making
Champ in-the-making
Bonjour Michaël,
Je ne viens pas ici pour te posté une raiponce car j suis loin de pouvoir t'aider  Smiley Surprisedops: , mais par contre je suis un étudiant qui prépare son PFE et ça serais très gentille de ta part si tu m'envoyait quelques documentations à par celui déjà posté en ce qui est développement d'actions.

     Merci d'avance

lamba
Champ on-the-rise
Champ on-the-rise
Bonjour,

En fait j'ai le même problème que vous Michaël mais j'ai pas encore réussi à le résoudre Smiley Sad

Un description détaillé du problème est disponible là http://forums.alfresco.com/fr/viewtopic.php?f=11&t=4398&p=19928#p19928 post daté de "03 Sep 2010, 18:33"



Merci pour votre aide,

lamba
Champ on-the-rise
Champ on-the-rise
Résolu Smiley Happy

Louange à Allah, Seigneur des Univers.