mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-23 06:32:01 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="rating_rating_view_tree" model="ir.ui.view">
|
||||
<field name="name">rating.rating.tree</field>
|
||||
<field name="name">rating.rating.list</field>
|
||||
<field name="model">rating.rating</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Ratings" create="false" edit="false" sample="1">
|
||||
<list string="Ratings" create="false" edit="false" sample="1">
|
||||
<field name="create_date"/>
|
||||
<field name="rated_partner_id" optional="show"/>
|
||||
<field name="partner_id" optional="show"/>
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<field name="res_name" optional="show"/>
|
||||
<field name="feedback" optional="hide"/>
|
||||
<field name="rating_text" decoration-danger="rating_text == 'ko'" decoration-warning="rating_text == 'ok'" decoration-success="rating_text == 'top'" class="fw-bold" widget="badge"/>
|
||||
</tree>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
@ -31,19 +31,22 @@
|
|||
<field name="rated_partner_id" widget="many2one_avatar"/>
|
||||
<field name="rating" invisible="1"/>
|
||||
<field name="is_internal"/>
|
||||
<field name="consumed" groups="base.group_no_one"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="partner_id"/>
|
||||
<div colspan="2" class="text-center" name="rating_image_container">
|
||||
<field name="rating_image" widget='image'/>
|
||||
<field name="rating_image" widget='image' options='{"img_class": "bg-transparent"}'/>
|
||||
<div class="mt4">
|
||||
<strong><field name="rating_text"/></strong>
|
||||
</div>
|
||||
</div>
|
||||
<field name="create_date"/>
|
||||
<field name="feedback" attrs="{'invisible': [('feedback','=',False)]}"/>
|
||||
<field name="rated_on"/>
|
||||
</group>
|
||||
</group>
|
||||
<group class="mw-100" invisible="not feedback">
|
||||
<field name="feedback"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
|
@ -66,66 +69,37 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="rating_rating_view_form_complete" model="ir.ui.view">
|
||||
<field name="name">rating.rating.view.form.complete</field>
|
||||
<field name="model">rating.rating</field>
|
||||
<field name="inherit_id" ref="rating.rating_rating_view_form"/>
|
||||
<field name="priority">48</field>
|
||||
<field name="mode">primary</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='is_internal']" position="after">
|
||||
<field name="consumed" groups="base.group_no_one"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="rating_rating_view_kanban" model="ir.ui.view">
|
||||
<field name="name">rating.rating.kanban</field>
|
||||
<field name="model">rating.rating</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban create="false" sample="1">
|
||||
<field name="rating"/>
|
||||
<field name="res_name"/>
|
||||
<field name="feedback"/>
|
||||
<field name="partner_id"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click d-flex align-items-center justify-content-center">
|
||||
<div class="row oe_kanban_details">
|
||||
<div class="col-4 my-auto">
|
||||
<field name="rating_image" widget="image" class="bg-view" />
|
||||
</div>
|
||||
<div class="col-8 ps-1">
|
||||
<strong>
|
||||
<field name="rated_partner_name"/>
|
||||
</strong>
|
||||
<ul>
|
||||
<li t-if="record.partner_id.value">
|
||||
<span class="o_text_overflow">
|
||||
by
|
||||
<span t-att-title="record.partner_id.value">
|
||||
<field name="partner_id" />
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="o_text_overflow">
|
||||
for
|
||||
<a type="object" name="action_open_rated_object" t-att-title="record.res_name.raw_value">
|
||||
<field name="res_name" />
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
on <field name="create_date" />
|
||||
</li>
|
||||
<li t-if="record.feedback.raw_value" class="o_text_overflow" t-att-title="record.feedback.raw_value">
|
||||
<field name="feedback"/>
|
||||
</li>
|
||||
</ul>
|
||||
<t t-name="card" class="row g-0">
|
||||
<aside class="col-4 my-auto align-self-center">
|
||||
<field name="rating_image" widget="image" options='{"img_class": "bg-transparent"}' class="bg-view ms-3" />
|
||||
</aside>
|
||||
<main class="col ps-2">
|
||||
<field name="rated_partner_name" class="fw-bolder"/>
|
||||
<div t-if="record.partner_id.value" class="text-truncate">
|
||||
by
|
||||
<span t-att-title="record.partner_id.value">
|
||||
<field name="partner_id" />
|
||||
</span>
|
||||
</div>
|
||||
<span class="text-truncate">
|
||||
for
|
||||
<a type="object" name="action_open_rated_object" t-att-title="record.res_name.raw_value">
|
||||
<field name="res_name" />
|
||||
</a>
|
||||
</span>
|
||||
<div>
|
||||
on <field name="rated_on" />
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-truncate" t-att-title="record.feedback.raw_value">
|
||||
<field name="feedback"/>
|
||||
</span>
|
||||
</main>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
|
|
@ -139,53 +113,38 @@
|
|||
<field name="arch" type="xml">
|
||||
<kanban create="false" class="o_rating_rating_kanban">
|
||||
<field name="rating"/>
|
||||
<field name="res_name"/>
|
||||
<field name="feedback"/>
|
||||
<field name="partner_id"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<t t-name="card" class="row g-0">
|
||||
<t t-set="val_stars" t-value="Math.round(record.rating.raw_value * 10) / 10"/>
|
||||
<t t-set="val_integer" t-value="Math.floor(val_stars)"/>
|
||||
<t t-set="val_decimal" t-value="val_stars - val_integer"/>
|
||||
<t t-set="empty_star" t-value="5 - (val_integer + Math.ceil(val_decimal))"/>
|
||||
<div class="oe_kanban_card oe_kanban_global_click">
|
||||
<div class="d-flex flex-row">
|
||||
<div class="o_rating_kanban_left me-3">
|
||||
<h1 class="o_rating_value text-center text-primary" t-esc="val_stars"/>
|
||||
<i t-foreach="[...Array(val_integer).keys()]" t-as="num" t-key="num"
|
||||
class="fa fa-star"
|
||||
aria-label="A star"
|
||||
role="img"/>
|
||||
<i t-if="val_decimal"
|
||||
class="fa fa-star-half-o"
|
||||
aria-label="Half a star"
|
||||
role="img"/>
|
||||
<i t-foreach="[...Array(empty_star).keys()]" t-as="num" t-key="num"
|
||||
class="fa fa-star text-black-25"
|
||||
aria-label="A star"
|
||||
role="img"/>
|
||||
</div>
|
||||
<div>
|
||||
<div class="o_kanban_card_header">
|
||||
<div class="o_kanban_card_header_title">
|
||||
<span class="fw-bold"><field name="partner_id"/></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_card_content mt0 d-flex flex-column">
|
||||
<span>
|
||||
<i class="fa fa-folder me-2" aria-label="Open folder"></i>
|
||||
<a type="object" name="action_open_rated_object" t-att-title="record.res_name.raw_value">
|
||||
<field name="res_name" />
|
||||
</a>
|
||||
</span>
|
||||
<span><i class="fa fa-clock-o me-2" aria-label="Create date"/> <field name="create_date" /></span>
|
||||
<div class="d-flex mt-2">
|
||||
<span t-esc="record.feedback.raw_value"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="col-3 me-2">
|
||||
<div class="display-3 fw-bold text-center text-primary mb-2" t-esc="val_stars"/>
|
||||
<i t-foreach="[...Array(val_integer).keys()]" t-as="num" t-key="num"
|
||||
class="fa fa-star"
|
||||
aria-label="A star"
|
||||
role="img"/>
|
||||
<i t-if="val_decimal"
|
||||
class="fa fa-star-half-o"
|
||||
aria-label="Half a star"
|
||||
role="img"/>
|
||||
<i t-foreach="[...Array(empty_star).keys()]" t-as="num" t-key="num"
|
||||
class="fa fa-star text-black-25"
|
||||
aria-label="A star"
|
||||
role="img"/>
|
||||
</aside>
|
||||
<main class="col">
|
||||
<field name="partner_id" class="fw-bold fs-5"/>
|
||||
<div class="mt0">
|
||||
<i class="fa fa-folder me-2" aria-label="Open folder"></i>
|
||||
<a type="object" name="action_open_rated_object" t-att-title="record.res_name.raw_value">
|
||||
<field name="res_name" />
|
||||
</a>
|
||||
<div><i class="fa fa-clock-o me-2" aria-label="Create date"/> <field name="rated_on" /></div>
|
||||
<field name="feedback" class="mt-2"/>
|
||||
</div>
|
||||
</main>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
|
|
@ -198,8 +157,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<pivot string="Ratings" display_quantity="1" sample="1">
|
||||
<field name="rated_partner_id" type="row"/>
|
||||
<field name="create_date" type="col"/>
|
||||
<field name="rating" type="measure" string="Rating Value (/5)"/>
|
||||
<field name="rated_on" type="col"/>
|
||||
<field name="rating" type="measure" string="Rating (/5)"/>
|
||||
<field name="parent_res_id" invisible="1"/>
|
||||
<field name="res_id" invisible="1"/>
|
||||
</pivot>
|
||||
|
|
@ -211,8 +170,8 @@
|
|||
<field name="model">rating.rating</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Ratings" sample="1">
|
||||
<field name="create_date"/>
|
||||
<field name="rating" type="measure" string="Rating Value (/5)"/>
|
||||
<field name="rated_on"/>
|
||||
<field name="rating" type="measure" string="Rating (/5)"/>
|
||||
<field name="parent_res_id" invisible="1"/>
|
||||
<field name="res_id" invisible="1"/>
|
||||
</graph>
|
||||
|
|
@ -232,21 +191,21 @@
|
|||
<field name="parent_res_name" filter_domain="[('parent_res_name','ilike',self)]"/>
|
||||
<filter string="My Ratings" name="my_ratings" domain="[('rated_partner_id.user_ids', 'in', [uid])]"/>
|
||||
<separator/>
|
||||
<filter string="Satisfied" name="rating_happy" domain="[('rating_text', '=', 'top')]"/>
|
||||
<filter string="Okay" name="rating_okay" domain="[('rating_text', '=', 'ok')]"/>
|
||||
<filter string="Dissatisfied" name="rating_unhappy" domain="[('rating_text', '=', 'ko')]"/>
|
||||
<filter string="Happy" name="rating_happy" domain="[('rating_text', '=', 'top')]"/>
|
||||
<filter string="Neutral" name="rating_okay" domain="[('rating_text', '=', 'ok')]"/>
|
||||
<filter string="Unhappy" name="rating_unhappy" domain="[('rating_text', '=', 'ko')]"/>
|
||||
<separator/>
|
||||
<filter string="Today" name="today" domain="[('create_date', '>', (context_today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d'))]"/>
|
||||
<filter string="Last 7 days" name="last_7days" domain="[('create_date','>', (context_today() - datetime.timedelta(days=7)).strftime('%Y-%m-%d'))]"/>
|
||||
<filter string="Last 30 days" name="last_month" domain="[('create_date','>', (context_today() - datetime.timedelta(days=30)).strftime('%Y-%m-%d'))]"/>
|
||||
<separator/>
|
||||
<filter name="filter_create_date" date="create_date"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter name="filter_rated_on" string="Rated On" date="rated_on">
|
||||
<filter name="rated_on_last_7_days" string="Last 7 Days" domain="[('rated_on', '>', 'today -7d +1d')]"/>
|
||||
<filter name="rated_on_last_30_days" string="Last 30 Days" domain="[('rated_on', '>', 'today -30d +1d')]"/>
|
||||
<filter name="rated_on_last_365_days" string="Last 365 Days" domain="[('rated_on', '>', 'today -365d +1d')]"/>
|
||||
</filter>
|
||||
<group>
|
||||
<filter string="Rated Operator" name="responsible" context="{'group_by':'rated_partner_id'}"/>
|
||||
<filter string="Customer" name="customer" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="Rating" name="rating_text" context="{'group_by':'rating_text'}"/>
|
||||
<filter string="Resource" name="resource" context="{'group_by':'res_name'}"/>
|
||||
<filter string="Date" name="month" context="{'group_by':'create_date:month'}"/>
|
||||
<filter string="Submitted on" name="month" context="{'group_by': 'rated_on:month'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
|
|
@ -255,7 +214,7 @@
|
|||
<record id="rating_rating_action" model="ir.actions.act_window">
|
||||
<field name="name">Ratings</field>
|
||||
<field name="res_model">rating.rating</field>
|
||||
<field name="view_mode">kanban,tree,graph,pivot,form</field>
|
||||
<field name="view_mode">kanban,list,graph,pivot,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_empty_folder">
|
||||
No rating yet
|
||||
|
|
@ -274,7 +233,7 @@
|
|||
<field name="act_window_id" ref="rating_rating_action"/>
|
||||
<field name="sequence">5</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="rating_rating_view_form_complete"/>
|
||||
<field name="view_id" ref="rating_rating_view_form"/>
|
||||
</record>
|
||||
|
||||
<!-- Add menu entry in Technical/Discuss -->
|
||||
|
|
|
|||
|
|
@ -1,25 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<!-- External page : thanks message -->
|
||||
<template id="rating_external_page_view" name="Rating Page Done">
|
||||
<template id="rating_external_page_view" name="Thanks for your Feedback">
|
||||
<t t-call="web.frontend_layout">
|
||||
<div class="container pt-5">
|
||||
<div class="oe_structure" id="oe_structure_rating_header_thanks_you"/>
|
||||
<div class="text-center mt-5 pt-5">
|
||||
<h3 class="d-inline">Thank you, we appreciate your feedback!</h3>
|
||||
<div class="o_rating_page_thank_you d-flex flex-column justify-content-center">
|
||||
<div class="container py-5">
|
||||
<div class="oe_structure" id="oe_structure_rating_header_thanks_you"/>
|
||||
<h3 class="text-center mt-4 pb-2">Thank you for your feedback!</h3>
|
||||
<a t-att-href="web_base_url" class="d-block text-decoration-none text-center mb-4">
|
||||
<i class="fa fa-arrow-left me-1"/> Back to the Homepage
|
||||
</a>
|
||||
<div class="oe_structure" id="oe_structure_rating_footer_thanks_you"/>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<a role="button" t-att-href="web_base_url" class="btn btn-primary my-5">Go back to the Homepage</a>
|
||||
</div>
|
||||
<div class="oe_structure" id="oe_structure_rating_footer_thanks_you"/>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<!-- External page: Invalid partner rating -->
|
||||
<template id="rating_external_page_invalid_partner" name="Not allows to rating">
|
||||
<t t-call="web.frontend_layout">
|
||||
<section class="mt128">
|
||||
<div class="container">
|
||||
<div class="row" >
|
||||
<div class="col-lg-4">
|
||||
<img class="img img-fluid mx-auto" src="/rating/static/src/img/503.svg" alt=""/>
|
||||
</div>
|
||||
<div class="col-lg-8 text-lg-start">
|
||||
<h1>You cannot rate this <t t-out="model_name"/></h1>
|
||||
<p>
|
||||
Only the customer of "<t t-out="name"/>" or someone from the same company can give it a rating.
|
||||
</p>
|
||||
</div>
|
||||
<hr class="my-5 opacity-100"/>
|
||||
<div class="mb128 col-lg-12">
|
||||
<ul class="list-inline text-center">
|
||||
<li>
|
||||
<a t-att-href="web_base_url" class="btn btn-primary">Home</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<!-- External page: rate and submit feedback -->
|
||||
<template id="rating_external_page_submit" name="Rate our Services">
|
||||
<t t-call="web.frontend_layout">
|
||||
<div class="container mb-5 mt-4 o_rating_page_submit">
|
||||
<div class="oe_structure" id="oe_structure_rate_submit_header"/>
|
||||
<div class="row text-center justify-content-center">
|
||||
<h1 class="col-12 mt-5">Thank you for rating our services!</h1>
|
||||
<form class="col-md-6" t-attf-action="/rate/#{token}/submit_feedback" method="post">
|
||||
|
|
@ -42,7 +72,7 @@
|
|||
</t>
|
||||
</div>
|
||||
<p class="mt-5">
|
||||
Feel free to write a feedback on your experience:
|
||||
Feel free to share feedback on your experience:
|
||||
</p>
|
||||
<input type="hidden" name="csrf_token"
|
||||
t-att-value="request.csrf_token()"/>
|
||||
|
|
@ -51,6 +81,7 @@
|
|||
<button type="submit" class="btn btn-primary mt-4"
|
||||
style="margin-top:8px;">Send Feedback</button>
|
||||
</form>
|
||||
<div class="oe_structure" id="oe_structure_rate_submit_footer"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue