AnsweredAssumed Answered

Conseil pour le développeement d'une action

Question asked by flash31186_8291 on Apr 20, 2009
Latest reply on Sep 20, 2010 by lamba
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

Outcomes