website_visitor_views.xml 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <odoo><data>
  3. <record id="website_visitor_livechat_session_action" model="ir.actions.act_window">
  4. <field name="name">Visitor's Sessions</field>
  5. <field name="res_model">mail.channel</field>
  6. <field name="view_mode">tree,form</field>
  7. <field name="view_id" ref="im_livechat.mail_channel_view_tree"/>
  8. <field name="domain">[('livechat_visitor_id', '=', active_id), ('has_message', '=', True)]</field>
  9. <field name="context">{
  10. 'search_default_livechat_visitor_id': [active_id],
  11. 'default_livechat_visitor_id': active_id,
  12. }</field>
  13. </record>
  14. <record id="website_visitor_livechat_session_action_tree" model="ir.actions.act_window.view">
  15. <field name="sequence">1</field>
  16. <field name="view_mode">tree</field>
  17. <field name="view_id" ref="im_livechat.mail_channel_view_tree"/>
  18. <field name="act_window_id" ref="website_livechat.website_visitor_livechat_session_action"/>
  19. </record>
  20. <record id="website_visitor_livechat_session_action_form" model="ir.actions.act_window.view">
  21. <field name="sequence">2</field>
  22. <field name="view_mode">form</field>
  23. <field name="view_id" ref="im_livechat.mail_channel_view_form"/>
  24. <field name="act_window_id" ref="website_livechat.website_visitor_livechat_session_action"/>
  25. </record>
  26. <!-- website visitor views -->
  27. <record id="website_visitor_view_kanban" model="ir.ui.view">
  28. <field name="name">website.visitor.view.kanban.inherit.website.livechat</field>
  29. <field name="model">website.visitor</field>
  30. <field name="inherit_id" ref="website.website_visitor_view_kanban"/>
  31. <field name="arch" type="xml">
  32. <field name="page_ids" position="after">
  33. <field name="livechat_operator_id"/>
  34. <field name="session_count"/>
  35. </field>
  36. <xpath expr="//div[hasclass('w_visitor_kanban_actions')]" position="before">
  37. <div t-if="record.session_count.raw_value">Chats<span class="float-end fw-bold"><field name="session_count"/></span></div>
  38. <div t-if="record.livechat_operator_id.raw_value">
  39. Speaking With
  40. <div name="livechat_operator_id"
  41. class="fw-bold float-end d-inline-block">
  42. <img class="oe_avatar rounded-circle" width="19" height="19"
  43. t-attf-src="/web/image/res.partner/#{record.livechat_operator_id.raw_value}/avatar_128"
  44. alt="Operator Avatar"/>
  45. <field name="livechat_operator_name"/>
  46. </div>
  47. </div>
  48. <t t-else="">
  49. <br attrs="{'invisible': ['|', ('livechat_operator_id', '!=', False), ('is_connected', '=', False)]}"/>
  50. </t>
  51. </xpath>
  52. <xpath expr="//div[hasclass('w_visitor_kanban_actions_ungrouped')]" position="before">
  53. <div class="col-lg col-sm-4 col-6 py-0 my-2">
  54. <span t-att-class="record.session_count.raw_value ? 'fw-bold' : 'text-muted'">
  55. <field name="session_count"/>
  56. </span>
  57. <div t-att-class="record.session_count.raw_value ? '' : 'text-muted'">Chats</div>
  58. </div>
  59. <div t-if="record.livechat_operator_id.raw_value" class="col-lg col-sm-4 col-6 py-0 my-2">
  60. <div>
  61. <img name="livechat_operator_id"
  62. class="oe_avatar rounded-circle" width="19" height="19"
  63. t-attf-src="/web/image/res.partner/#{record.livechat_operator_id.raw_value}/avatar_128"
  64. alt="Operator Avatar"/>
  65. <b><field name="livechat_operator_name"/></b>
  66. </div>
  67. <div>Speaking With</div>
  68. </div>
  69. <div t-else="" class="col-lg d-none d-lg-block"/>
  70. </xpath>
  71. <xpath expr="//div[hasclass('w_visitor_kanban_actions')]" position="inside">
  72. <button name="action_send_chat_request" type="object"
  73. class="btn btn-secondary"
  74. attrs="{'invisible': ['|', ('livechat_operator_id', '!=', False), ('is_connected', '=', False)]}">
  75. Chat
  76. </button>
  77. </xpath>
  78. <xpath expr="//div[hasclass('w_visitor_kanban_actions_ungrouped')]" position="inside">
  79. <button name="action_send_chat_request" type="object"
  80. class="btn btn-secondary border"
  81. attrs="{'invisible': ['|', ('livechat_operator_id', '!=', False), ('is_connected', '=', False)]}">
  82. Chat
  83. </button>
  84. </xpath>
  85. </field>
  86. </record>
  87. <record id="website_visitor_view_form" model="ir.ui.view">
  88. <field name="name">website.visitor.view.form.inherit.website.livechat</field>
  89. <field name="model">website.visitor</field>
  90. <field name="inherit_id" ref="website.website_visitor_view_form"/>
  91. <field name="arch" type="xml">
  92. <xpath expr="//header" position="inside">
  93. <button name="action_send_chat_request" string="Send chat request" type="object" class="oe_highlight"
  94. attrs="{'invisible': ['|', ('livechat_operator_id', '!=', False), ('is_connected', '=', False)]}"/>
  95. </xpath>
  96. <xpath expr="//group[@id='general_info']" position="before">
  97. <group id="livechat_info" attrs="{'invisible': [('livechat_operator_id', '=', False)]}">
  98. <field name="livechat_operator_id" widget="many2one_avatar"/>
  99. </group>
  100. </xpath>
  101. <xpath expr="//div[hasclass('oe_button_box')]" position="inside">
  102. <button name="%(website_visitor_livechat_session_action)d" type="action" class="oe_stat_button" icon="fa-comment"
  103. attrs="{'invisible': [('session_count', '=', 0)]}">
  104. <field name="session_count" widget="statinfo" string="Chats"/>
  105. </button>
  106. </xpath>
  107. </field>
  108. </record>
  109. <record id="website_visitor_view_tree" model="ir.ui.view">
  110. <field name="name">website.visitor.view.tree.inherit.website.livechat</field>
  111. <field name="model">website.visitor</field>
  112. <field name="inherit_id" ref="website.website_visitor_view_tree"/>
  113. <field name="arch" type="xml">
  114. <xpath expr="//field[@name='email']" position="after">
  115. <field name="livechat_operator_id" optional="hide"/>
  116. <button name="action_send_chat_request" string="Chat" type="object" icon="fa-comments"
  117. attrs="{'invisible': ['|', ('livechat_operator_id', '!=', False), ('is_connected', '=', False)]}"/>
  118. </xpath>
  119. </field>
  120. </record>
  121. <record id="website_visitor_view_search" model="ir.ui.view">
  122. <field name="name">website.visitor.view.search.website.livechat</field>
  123. <field name="model">website.visitor</field>
  124. <field name="inherit_id" ref="website.website_visitor_view_search"/>
  125. <field name="arch" type="xml">
  126. <xpath expr="//filter[@name='filter_is_connected']" position="after">
  127. <separator/>
  128. <filter string="Available" name="filter_not_in_conversation" domain="[('livechat_operator_id', '=', False)]"/>
  129. <filter string="In Conversation" name="filter_in_conversation" domain="[('livechat_operator_id', '!=', False)]"/>
  130. </xpath>
  131. </field>
  132. </record>
  133. <record id="website_livechat_send_chat_request_action_server" model="ir.actions.server">
  134. <field name="name">Send Chat Requests</field>
  135. <field name="type">ir.actions.server</field>
  136. <field name="model_id" ref="model_website_visitor"/>
  137. <field name="binding_model_id" ref="model_website_visitor"/>
  138. <field name="binding_view_types">list</field>
  139. <field name="state">code</field>
  140. <field name="code">
  141. if records:
  142. action = records.action_send_chat_request()
  143. </field>
  144. </record>
  145. <menuitem
  146. id="website_livechat_visitor_menu"
  147. name="Visitors"
  148. parent="im_livechat.menu_livechat_root"
  149. action="website.website_visitors_action"
  150. groups="im_livechat.im_livechat_group_user"
  151. sequence="15"/>
  152. </data></odoo>