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

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

nosotros tenemos configurado algo así para mostrar el icono de un clip en las acciones cuando un documento tiene asociaciones y que aparezca una ventana emergente similar a la del botón (i) listando los documentos asociados junto con el nombre de la asociación. La acción la tenemos configurada de la siguiente manera:


<action id="clip_assoc">
  <evaluator>com.queres.web.action.evaluator.AssociationEvaluator</evaluator>
  <label-id>actions.clip.label</label-id>
  <tooltip>actions.clip.tooltip</tooltip>
  <image>/images/icons/add_attachment.gif</image>
  <onclick>
    var oLaunchElement = this;
    var callback = {
    success: function (o) {
      var script, head, infoMgr;
      if (document.getElementById('clip_assocs_js' ) === null){
        head = document.getElementsByTagName('head').item(0);
        script = document.createElement('script');
        script.text = o.responseText;
        script.type = 'text/javascript';
        script.id='clip_assocs_js';
        head.appendChild(script);
      }
      infoMgr = new Queres.PanelManager('NodeInfoBean.sendNodeInfo','noderef', 'extension/node_assoc_panel.ftl');
      infoMgr.toggle('#{r.nodeRef}',o.argument.launchElement);
    },
    failure: function(o) {
      alert('FAILURE');
    },
    argument : {
      launchElement : oLaunchElement
    },
      cache : false
    };
    YAHOO.util.Connect.asyncRequest('GET', '/alfresco/scripts/clip.js',callback, null);
  </onclick>
</action>

y luego en la configuración del browse_menu añadimos esa acción:


<action-group id="document_browse" replace="true">
  <action idref="clip_assoc"/>
</action-group>

Espero que te sirva de ayuda. Un saludo

lvasa
Champ in-the-making
Champ in-the-making
Muchas gracias, lo intentaré hacer de esa forma.

Saludos

massanen_2296
Champ in-the-making
Champ in-the-making
alguien lo ha podido resolver??? me parece muy raro que un usuario no pueda ejecutar el script de una acción… lo he provado con la 3.4d, 3.4e i 4 y no funciona. Con la 3.2r sí. No entiendo nada.

lvasa
Champ in-the-making
Champ in-the-making
Hola,
  
No, no lo pude resolver. Parece que se trata de un bug. Abrí esta incidencia en JIRA:

http://issues.alfresco.com/jira/browse/ALF-7536

Al final lo que terminé haciendo fue llamar a un bean de Java desde la acción, en lugar de llamar a un script. Mi fichero web-client-config-custom.xml tiene esta forma:
   
<config>
      <actions>
         <action id="crear_expediente_btn">
            <label>Crear Expediente</label>
            <image>/images/icons/add.gif</image>
            <action-listener>#{CrearExpediente.crearExp}</action-listener>
            <action>[Outcome]</action>
            <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>
donde CrearExpediente es el nombre de la clase y crearExp el nombre del método.

Además, para hacer esto, es necesario declarar el bean en el fichero faces-config-custom.xml.

Un saludo

massanen_2296
Champ in-the-making
Champ in-the-making
Qué raro… me parece algo como muy elemental, no?? lástima…

Muchas gracias Ivs! pues seguiré con la 3.2r…