cancel
Showing results for 
Search instead for 
Did you mean: 

Nuevo botón que ejecuta un script

lvasa
Champ in-the-making
Champ in-the-making
Hola,

He definido un botón que ejecuta un script, en el fichero web-client-config-custom.xml, de la siguiente manera:

   <config>
      <actions>
         <action id="crear_expediente_btn">
            <label>Crear Expediente</label>
            <image>/images/icons/add.gif</image>
            <script>/Company Home/Data Dictionary/Scripts/crear_exp.js</script>
            <params>
               <param name="noderef">#{actionContext.nodeRef}</param>
               <param name="id">#{actionContext.id}</param>
            </params>
         </action>

         <action-group id="space_browse_menu">
            <action idref="crear_expediente_btn" />
         </action-group>

         <action-group id="space_details_actions">
            <action idref="crear_expediente_btn" />
         </action-group>
         
         <action-group id="browse_actions_menu">
            <action idref="crear_expediente_btn" />
         </action-group>
      </actions>
   </config>   

El botón funciona perfectamente si me valido con el usuario admin, pero si lo hago con cualquier otro usuario me saca a la página de login.

He probado a crear un usuario con rol Coordinador en todos los espacios existentes, por si fuera problema de permisos, pero sigue ocurriendo lo mismo. ¿Es que sólo el usuario admin puede ejecutar scripts de esta forma? ¿O es que tengo algo mal definido?

Gracias
14 REPLIES 14

cybermakoki
Champ in-the-making
Champ in-the-making
Que es lo que hace tu script?? no te pinta nada en trazas??

lvasa
Champ in-the-making
Champ in-the-making
No creo que el problema esté en el script. De hecho he probado a sustituirlo por otros más sencillos por si fuera culpa de éste, pero sigue ocurriendo lo mismo.
Parece que ni siquiera se llega a hacer la llamada.

Si activo la consola de depuración de scripts (http://SERVIDOR_ALFRESCOSmiley TongueUERTO/alfresco/service/api/javascript/debugger), y desde la vista de detalles de un espacio voy a "Ejecutar Acción" y selecciono mi script, aparece cargado en la consola.

Pero si pulso en el botón que he definido, el script no se carga en la consola. Y me saca a la página de login directamente. Es como si no se llegara a llamar.

¿Tengo bien definido el botón o me falta algo? ¿Tengo que indicar de alguna manera los usuarios que puedan ejecutarlo?

Gracias

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Una cosa,

No tendra que ver con el tema de permisos? Creo recordar que habia un tag para definir la "visibilidad" de la accion:

           <permissions>
               <!– each permission can be an Allow or Deny check –>
               <permission allow="true">Write</permission>
               <permission allow="false">AddChildren</permission>
            </permissions>

Saludos

lvasa
Champ in-the-making
Champ in-the-making
Sí, creo que tiene que ver con los permisos, porque si añado a mi usuario al grupo ALFRESCO_ADMINISTRATORS, entonces puede ejecutar el script al pulsar el botón. Es como si ese grupo tuviera algún permiso necesario para hacer lo que yo quiero, y que el rol Coordinador no tiene.

He probado a definir el botón de la manera que dices:

 <config>
  <actions>
   <action id="crear_expediente_btn">
      <permissions>               
         <permission allow="true">Coordinator</permission>
      </permissions>        
      <label>Crear Expediente</label>           
      <image>/images/icons/add.gif</image>
      <script>/Company Home/Data Dictionary/Scripts/crear_exp.js</script>
      <params>
         <param name="noderef">#{actionContext.nodeRef}</param>
         <param name="id">#{actionContext.id}</param>
      </params>
   </action>

   <action-group id="space_browse_menu">
            <action idref="crear_expediente_btn" />
   </action-group>

   <action-group id="space_details_actions">
            <action idref="crear_expediente_btn" />
   </action-group>
        
   <action-group id="browse_actions_menu">
            <action idref="crear_expediente_btn" />
   </action-group>
  </actions>
</config>

Con esto estoy haciendo que sea visible para todos los usuarios con permiso Coordinator, ¿no? Ese es el permiso que tiene mi usuario. Pero sigue sin funcionar…

¿Tendré que definir un nuevo rol, que tenga algún permiso que me permita hacer lo que necesito, para después asignárselo a mi usuario? Lo estuve intentando (modificando el archivo permissionDefinition.xml), pero no me llegó a funcionar. Aunque tampoco estoy segura de que eso tenga que ver con mi problema… Estoy bastante perdida…

Muchas gracias

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Has probado tal cual viene en el ejemplo?

<permission allow="true">Write</permission>

Creo que si lo que quieres es que solo los coordinadores ejecuten dicha opcion, tendras que hacer uso de la clausula
<evaluator> </evaluator>


Saludos

lvasa
Champ in-the-making
Champ in-the-making
Gracias Pedro.

No quiero que sólo los coordinadores puedan ejecutar esa opción, a lo mejor me expliqué mal. Lo que quiero es que mi usuario, que tiene rol Coordinador, lo pueda hacer.

También había probado a poner lo que me dices, es decir:
   <permissions>               
      <permission allow="true">Write</permission>
   </permissions>

Pero tampoco funciona…

Un saludo

yakon_8894
Champ in-the-making
Champ in-the-making
Hola lvs,

has probado a meter el código javascript directamente en el webclient-config. A lo mejor el problema está en que tu usuario no tiene permisos sobre el script del diccionario de datos y por eso te envía a la pantalla de login.

Para ello puedes hacer uso de la tag <onclick></onclick> en la definición de tu action. Más info aquí

Saludos

cristinamr
World-Class Innovator
World-Class Innovator
Buenas.

Por si sirve: He hecho la misma prueba en una 3.4 y no va ni para atrás. Quizás lo suyo sea abrir un ticket a alfresco por si es un bug. Pero vamos que he estado mirando en el JIRA y no he encontrado nada similar.

Si encuentras una solución que no sea inyectar el código directamente por favor postealo.

Un saludo.

PD: Nos tienes a todos en vilo :lol:
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

lvasa
Champ in-the-making
Champ in-the-making
Hola,

muchas gracias por vuestras respuestas.

La versión de Alfresco con la que estoy trabajando es la 3.3g Community. Pero he instalado la 3.2, he hecho la misma prueba y comprobé que con esa versión sí que funciona, por lo que supongo que se tratará de un bug de la 3.3 y 3.4…

El caso es que quería seguir trabajando con la 3.3g. ¿Cómo puedo meter el código del script directamente en el web-client-config-custom.xml? Lo intenté y no me funciona y no encuentro ningún ejemplo en el que se use el tag <onclick> en la definición de un action.

Saludos