Skip to Content
Menu
This question has been flagged
6 Replies
2923 Views

Hi I am experiencing difficulty in extending the JavaScript model responsible for handling click events(that contains the different functions of buttons in the chatter topbar like the send message button)of the Chatter topbar buttons.i did add a button to the chatter topbar and i want to make it able to open a wizard that i have created, but i couldn't do that and i don't know even why? 

odoo.define('attach_photo_mobile.WizRequest', function (require) {  
'use strict';
const Chatter = require('mail.chatter'); 
const Registries = require('mail.registerNewModel'); 
Chatter.include({ init() { 
 this._super(...arguments); 
 // Bind your custom function 
this.onClickSendRequest = this.onClickSendRequest.bind(this); },
// Add your custom function to handle the button click 
onClickSendRequest(ev) { 
 ev.preventDefault();
// Define your wizard model name 
const wizardModel = 'attach_photo_mobile.attach_request_wiz';
this.do_action({ 
name: 'Send a request', 
type: 'ir.actions.act_window', 
res_model: wizardModel, 
view_mode: 'form', 
views: [[false, 'form']], 
target: 'new', }); }, });
Registries.Component.add(Chatter);
return Chatter;});

Avatar
Discard
Author

I have successfully added a new button to the Chatter top bar using XML. This button should be able to open a popup window.However, I am encountering challenges when attempting to extend the JavaScript model and also i am unsure if I am extending the correct one.

Best Answer

  you need your xml file like this :

js file like this :

/** @odoo-module **/

import { registerPatch } from '@mail/model/model_core';
import core from 'web.core';
import utils from 'web.utils';
registerPatch({
    name: 'Chatter',
    recordMethods: {
        async onClickbutton(event) {
            
            this.env.services['action'].doAction('modual.action_xml_id')
        },
    },
});



Avatar
Discard
Best Answer

Hey Reda,


I hope you are doing well.


I'd like to provide you with some reference screenshots:

Feel free to contact us for further assistance

Hope this answer helps you.

Thanks & Regards,
Email: odoo@aktivsoftware.com     

Skype: kalpeshmaheshwari

Avatar
Discard
Best Answer

Hi,

In this case, we can inherit the ChatterTopbar ie 

<templates xml:space="preserve">
    <t t-name="chatter_camera.camera" t-inherit="mail.ChatterTopbar" t-inherit-mode="extension" owl="1">
        <xpath expr="//div[hasclass('o_ChatterTopbar_controllers')]" position="inside">
             <button id="camera_button" type="button" t-on-click="chatterTopbar.chatter.onClickButton"  style="color:white;background-color:white;border:none;">
                 <i class="fa fa-camera-retro"/>
             </button>
            // you can add your own id and details
        </xpath>
    </t>
</templates>


Based on this method you can add the button in the Chatter sider under the js function you need to create on the click function -  the name denoted as onClickButton.

onClickButton: function(){
     
        //  Try to add your wizard action
    },


For more reference, you can use the reference app used for the Chatter Camera in the ChatterTop

https://apps.odoo.com/apps/modules/16.0/chatter_camera/


Hope it helps



Avatar
Discard
Best Answer

I didn't quite get your question.

You want add new functionality in the chatter where it specify but did you try to locate & understanding of "Send Message".
Ref->  https://www.odoo.com/forum/help-1/how-can-i-add-a-button-in-chatter-in-odoo-13-166874
for js you extend the class "Chatter" from mail module & by following send message procedure can create your own event onclick function and use rpc for triggering python function
Ref-> https://stackoverflow.com/questions/65195438/trying-to-send-data-from-javascript-to-python-pos-odoo-using-rpc-query

Avatar
Discard
Best Answer

I am also looking for the similar solution.

Avatar
Discard
Author Best Answer

i hope someone can help with this bec i really need it


Avatar
Discard