تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
6 الردود
2937 أدوات العرض

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;});

الصورة الرمزية
إهمال
الكاتب

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.

أفضل إجابة

  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')
        },
    },
});



الصورة الرمزية
إهمال
أفضل إجابة

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

الصورة الرمزية
إهمال
أفضل إجابة

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



الصورة الرمزية
إهمال
أفضل إجابة

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

الصورة الرمزية
إهمال
أفضل إجابة

I am also looking for the similar solution.

الصورة الرمزية
إهمال
الكاتب أفضل إجابة

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


الصورة الرمزية
إهمال