OpenERP – nuovo client web (6.1) – javascript hooks

Stavo cercando di eseguire una mia funzione al momento del logout, però Il mio codice non veniva mai eseguito e non riuscivo a capire perchè. Finalmente grazie a Xavier Morel ho trovato la risposta (ecco la mia domanda su stackoverflow).

Ecco come fare: potete “facilmente” inserire il vostro handler per un determinato evento (un evento specifico di OpenERP, tipo on_logout) in questo modo:


openerp.yourmodule = function(openerp) {
    openerp.webclient.on_logout.add_first(
        function () {
            alert('thatsme!');
        }
    );
}


Dovete fare attenzione a due cose in particolare:

  1. dovete usare “openerp.webclient” e non “openerp.web.WebClient” (in realtà sono alias ma il secondo non è disponibile)
  2. dovete usare il nome reale del vostro modulo in modo che il vostro JS venga caricato

A dire il vero l’ultimo punto è tra le poche informazioni che trovate nella non-tanto-ufficiale documentazione del modulo web (leggi il mio ultimo post per sapere come ottenerla).

Usando “add_first” ho aggiunto un handler per l’evento “on_logout” che verrà eseguito prima di ogni altro handler esistente.

Guardando il codice originale del modulo troverete altri “hook” come ad esempio “add_last” che a sua volta inserisce il vostro handler alla fine della coda di esecuzione.

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Tumblr Posterous Email Snailmail

Written by on mercoledì, gennaio 11th, 2012

  • Onetown

    well, it’s helpful. thanks dude. 

  • Anonimo

    Great help 😉

  • http://twitter.com/TimothySolomon Timothy Solomon

    nifty, where do you put this code tho? As a js file in your module? Is there a naming convention or do you include it in the __openerp__.py?

    Thanks for sharing!

  • dda

    How can you tell that this is being loaded once you install the module? I tried this example in OpenERP 6.1 with your code above. My file structure is the openerp days link you gave. Thanks.

    • http://www.domsense.com/ Simone Orsi

      because you’ll get an alert on logout…. be sure you invalidate your browser cache once you installed it.

  • me

    how to make this js function only work in this module.?I mean not A globle function.

  • Cool

    That worked thaks !!

  • Shrikant

    Hello,Can you plz tell me how can i inherit point_of_sale java script in my module?

    openerp.pos_new = function(db) {

    db.point_of_sale = {};

    var module = db.point_of_sale ;

    db.point_of_sale = db.point_of_sale.include({

    get_app_data: function() {

    alert(“Shrikant”);

    }

    })

    };

    this is my code but it gives error like ” function not found include for undefined”

  • DASADIYA CHAITANYA

    Below code define the website_mail trunk module in openerp

    path for that

    website_mail >static >src >js
    website_mail_editor.js file
    please explain me for following selected source code