Files
odoo_source/addons/website_project/views/project_rating_templates.xml
T
Benjamin Frantzen (bfr) e4a4ffb974 [IMP] customer ratings flow improvements
- Rename the 'Use Rating on Project' feature into 'Customer Ratings'
- Rename the 'Set Email Template to Stages' link to 'Set a Rating Email Template on Stages'
- Add an optional list view for the Stages menu
- display warning if the rating_template_id field is set and if one of the selected project_ids doesn't have the rating_status field set to true
- Project form view revamp
- rename the '% on tasks' stat button into 'Customer Satisfaction'
- Remove the 'no option' for the rating frequency field because it is required
- project form : Add a 'Go to Website' stat button
- Project dashboard: remove the 'Customer Ratings' menu item in more
- Ratings page: the 'Last 30 days' filter include ratings from today
- remove the Appointment / Helpdesk Customer Satisfaction / Live Support menu items

TASK ID : 1251
2020-05-08 12:17:20 +00:00

213 lines
14 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Page : List of project -->
<template id="rating_index" name="Project Rating List">
<t t-call="portal.frontend_layout">
<t t-set="additional_title">Project Satisfaction</t>
<div id="wrap" class="row mt4">
<div class="oe_structure" id="oe_structure_project_rating_index_1"/>
<div class="container o_portal_project_rating">
<h3>Projects</h3>
<div class="oe_structure" id="oe_structure_project_rating_index_2"/>
<div class="row">
<t t-if="not projects">
<div class="mt64 text-center">
No project rating published for now.
</div>
</t>
<t t-foreach="projects" t-as="project">
<div t-if="project.rating_percentage_satisfaction != -1" class="col-md-6 col-4 col-lg-4 col-xl-4">
<div class="card">
<div class="card-body">
<div class="caption">
<span class="badge badge-secondary float-right"><t t-esc="project.privacy_visibility"/></span>
<h4><t t-esc="project.name"/></h4>
<p t-if="project.date" class="text-muted">
<i class="fa fa-calendar"/> End date : <t t-esc="project.date"/>
</p>
<p t-if="project.alias_name and project.alias_domain" class="text-muted">
<i class="fa fa-envelope"/> Email : <t t-esc="project.alias_name"/>@<t t-esc="project.alias_domain"/>
</p>
<div class="row">
<div class="col-lg-6 text-center">
<h2><t t-esc="len(project.task_ids)"/></h2>
<p><t t-esc="project.label_tasks"/></p>
</div>
</div>
</div>
<div class="caption">
<p>
<a role="button" t-att-href="'/project/rating/%s' % project.id" class="btn btn-primary btn-lg btn-block">
<i class="fa fa-arrow-circle-right "/> See the feedbacks
</a>
</p>
</div>
</div>
</div>
</div>
</t>
</div>
</div>
<div class="oe_structure" id="oe_structure_project_rating_index_3"/>
</div>
</t>
</template>
<!-- Page : Project Rating Page (and widgets) -->
<template id="portal_project_rating_progressbar">
<div class="progress o_rating_progress">
<t t-set="percent_rating_5" t-value="int(round((stats['rating_5'] / float(stats['total'])) * 100)) if stats['total'] else 0.0"/>
<div class="progress-bar bg-success" t-attf-style="width: #{percent_rating_5}%;" title="Happy">
<t t-esc="percent_rating_5"/>%
</div>
<t t-set="percent_rating_3" t-value="int(round((stats['rating_3'] / float(stats['total'])) * 100)) if stats['total'] else 0.0"/>
<div class="progress-bar bg-warning" t-attf-style="width: #{percent_rating_3}%;" title="Average">
<t t-esc="percent_rating_3"/>%
</div>
<t t-set="percent_rating_1" t-value="int(round((stats['rating_1'] / float(stats['total'])) * 100)) if stats['total'] else 0.0"/>
<div class="progress-bar bg-danger" t-attf-style="width: #{percent_rating_1}%;" title="Bad">
<t t-esc="percent_rating_1"/>%
</div>
</div>
</template>
<template id="portal_project_rating_partner_stat">
<t t-foreach="partner_stats.values()" t-as="partner_stat">
<div class="row mt8" t-if="partner_stat['total']" title="Top 5 partner ratings of last 15 days.">
<div class="col-md-1">
<img t-if="partner_stat['rated_partner'].image_1024" class="o_top_partner_image" t-att-src="image_data_uri(partner_stat['rated_partner'].image_1024)" alt="Rated partner"/>
<img t-if="not partner_stat['rated_partner'].image_1024" class="o_top_partner_image" src='/web/static/src/img/placeholder.png' alt="Placeholder"/>
</div>
<div class="col-md-4 o_smiley_no_padding_right">
<span class="ml8" t-esc="partner_stat['rated_partner'].name"/>
</div>
<div class="col-md-4 o_smiley_no_padding_right">
<div class="col-md-4 o_smiley_no_padding_right o_smiley_no_padding_left">
<span t-if="partner_stat['rating_5']">
<img title="happy" alt="Happy face" class="o_top_partner_rating_image" src='/rating/static/src/img/rating_5.png'/>
<span class="o_rating_count" t-esc="partner_stat['rating_5']"/>
</span>
<span t-if="not partner_stat['rating_5']">
<img title="happy" alt="Happy face" class="o_top_partner_rating_image o_lighter_smileys" src='/rating/static/src/img/rating_5.png'/>
<span class="o_rating_count o_lighter_smileys" t-esc="partner_stat['rating_5']"/>
</span>
</div>
<div class="col-md-4 o_smiley_no_padding_right o_smiley_no_padding_left">
<span t-if="partner_stat['rating_3']">
<img title="average" alt="Neutral face" class="o_top_partner_rating_image" src='/rating/static/src/img/rating_3.png'/>
<span class="o_rating_count" t-esc="partner_stat['rating_3']"/>
</span>
<span t-if="not partner_stat['rating_3']">
<img title="average" alt="Neutral face" class="o_top_partner_rating_image o_lighter_smileys" src='/rating/static/src/img/rating_3.png'/>
<span class="o_rating_count o_lighter_smileys" t-esc="partner_stat['rating_3']"/>
</span>
</div>
<div class="col-md-4 o_smiley_no_padding_right o_smiley_no_padding_left">
<span t-if="partner_stat['rating_1']">
<img title="bad" alt="Sad face" class="o_top_partner_rating_image" src='/rating/static/src/img/rating_1.png'/>
<span class="o_rating_count" t-esc="partner_stat['rating_1']"/>
</span>
<span t-if="not partner_stat['rating_1']">
<img title="bad" alt="Sad face" class="o_top_partner_rating_image o_lighter_smileys" src='/rating/static/src/img/rating_1.png'/>
<span class="o_rating_count o_lighter_smileys" t-esc="partner_stat['rating_1']"/>
</span>
</div>
</div>
<div class="col-md-3 o_smiley_no_padding_left">
<strong class="float-right"><t t-esc="int(round(partner_stat['percentage_happy']))"/>%</strong>
</div>
</div>
</t>
</template>
<template id="portal_project_rating_popover">
<div t-attf-id="rating_#{rating.id}" class="container d-none">
<div class="row">
<div class="col-lg-4">
<img t-if="rating.partner_id.image_1024" class="img-fluid" t-att-src="image_data_uri(rating.partner_id.image_1024)" alt="Rated partner"/>
<img t-if="not rating.partner_id.image_1024" class="img-fluid" src='/web/static/src/img/placeholder.png' alt="Placeholder"/>
</div>
<div class="col-lg-8">
<div class="mt4">
<strong><t t-esc="rating.rated_partner_id.name"/></strong> - <span class="rating_timeduration"><t t-esc="rating.create_date"/></span>
</div>
<strong>Rated by: </strong><t t-esc="rating.partner_id.name" />
</div>
</div>
<div class="row o_top_partner_feedback" t-if="rating.feedback">
<div class="col-lg-12">
<t t-esc="rating.feedback" />
</div>
</div>
</div>
</template>
<template id="rating_project_rating_page" name="Project Rating Page">
<t t-call="portal.frontend_layout">
<div id="wrap" class="row mt4">
<div class="oe_structure" id="oe_structure_project_rating_page_1"/>
<div class="container o_project o_portal_project_rating">
<br/>
<h2 t-esc="project.name"/>
<br/>
<div class="row mb32">
<div class="col-lg-12">
<div class="o_page_header">
<div class="justify-content-end" groups="project.group_project_manager">
<t t-call="website.publish_management">
<t t-set="object" t-value="project"/>
<t t-set="publish_edit" t-value="True"/>
</t>
</div>
<h3>Customer Ratings</h3>
</div>
<div class="row">
<div class="col-lg-7">
<t t-foreach="ratings" t-as="rating">
<img t-attf-src='/rating/static/src/img/#{rating._get_rating_image_filename()}'
class="mt4 o_rating_image"
t-att-alt="rating.res_name"
t-att-data-id="rating.id"
t-att-data-rating-date="rating.write_date"/>
<t t-call="website_project.portal_project_rating_popover"/>
</t>
</div>
<div class="col-lg-5 o_vertical_separator">
<div t-if="statistics['period_statistics']['days_06']">
<h5>Last 7 days</h5>
<t t-call="website_project.portal_project_rating_progressbar">
<t t-set="stats" t-value="statistics['period_statistics']['days_06']"/>
</t>
</div>
<div t-if="statistics['period_statistics']['days_30']">
<h5>Last 30 days</h5>
<t t-call="website_project.portal_project_rating_progressbar">
<t t-set="stats" t-value="statistics['period_statistics']['days_30']"/>
</t>
</div>
<div t-if="statistics['period_statistics']['days_90']">
<h5>Last 3 months</h5>
<t t-call="website_project.portal_project_rating_progressbar">
<t t-set="stats" t-value="statistics['period_statistics']['days_90']"/>
</t>
</div>
<div>
<t t-call="website_project.portal_project_rating_partner_stat">
<t t-set="partner_stats" t-value="statistics['partner_statistics']"/>
</t>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="oe_structure" id="oe_structure_project_rating_page_2"/>
</div>
</t>
</template>
</data>
</odoo>