483 lines
18 KiB
HTML
483 lines
18 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Helpdesk Rating Five Stars</title>
|
||
<style>
|
||
body {
|
||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||
line-height: 1.6;
|
||
max-width: 900px;
|
||
margin: 0 auto;
|
||
padding: 20px;
|
||
color: #333;
|
||
background-color: #f9f9f9;
|
||
}
|
||
.container {
|
||
background-color: white;
|
||
padding: 40px;
|
||
border-radius: 8px;
|
||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||
}
|
||
h1 {
|
||
color: #875A7B;
|
||
border-bottom: 3px solid #875A7B;
|
||
padding-bottom: 15px;
|
||
margin-bottom: 20px;
|
||
font-size: 2.5em;
|
||
}
|
||
h2 {
|
||
color: #875A7B;
|
||
margin-top: 40px;
|
||
margin-bottom: 15px;
|
||
font-size: 1.8em;
|
||
border-left: 4px solid #875A7B;
|
||
padding-left: 15px;
|
||
}
|
||
h3 {
|
||
color: #666;
|
||
margin-top: 25px;
|
||
margin-bottom: 10px;
|
||
font-size: 1.3em;
|
||
}
|
||
.feature {
|
||
margin: 12px 0;
|
||
padding-left: 30px;
|
||
position: relative;
|
||
}
|
||
.feature:before {
|
||
content: "⭐";
|
||
position: absolute;
|
||
left: 0;
|
||
font-size: 1.2em;
|
||
}
|
||
.warning {
|
||
background-color: #fff3cd;
|
||
border-left: 4px solid #ffc107;
|
||
padding: 15px;
|
||
margin: 20px 0;
|
||
border-radius: 4px;
|
||
}
|
||
.info {
|
||
background-color: #d1ecf1;
|
||
border-left: 4px solid #17a2b8;
|
||
padding: 15px;
|
||
margin: 20px 0;
|
||
border-radius: 4px;
|
||
}
|
||
.success {
|
||
background-color: #d4edda;
|
||
border-left: 4px solid #28a745;
|
||
padding: 15px;
|
||
margin: 20px 0;
|
||
border-radius: 4px;
|
||
}
|
||
ol, ul {
|
||
margin: 15px 0;
|
||
padding-left: 30px;
|
||
}
|
||
li {
|
||
margin: 8px 0;
|
||
}
|
||
code {
|
||
background-color: #f4f4f4;
|
||
padding: 2px 6px;
|
||
border-radius: 3px;
|
||
font-family: 'Courier New', monospace;
|
||
color: #c7254e;
|
||
}
|
||
.code-block {
|
||
background-color: #f4f4f4;
|
||
padding: 15px;
|
||
border-radius: 5px;
|
||
border: 1px solid #ddd;
|
||
overflow-x: auto;
|
||
margin: 15px 0;
|
||
}
|
||
.screenshot {
|
||
max-width: 100%;
|
||
border: 1px solid #ddd;
|
||
border-radius: 5px;
|
||
margin: 15px 0;
|
||
}
|
||
table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 20px 0;
|
||
}
|
||
th, td {
|
||
border: 1px solid #ddd;
|
||
padding: 12px;
|
||
text-align: left;
|
||
}
|
||
th {
|
||
background-color: #875A7B;
|
||
color: white;
|
||
}
|
||
tr:nth-child(even) {
|
||
background-color: #f9f9f9;
|
||
}
|
||
.badge {
|
||
display: inline-block;
|
||
padding: 4px 8px;
|
||
border-radius: 3px;
|
||
font-size: 0.85em;
|
||
font-weight: bold;
|
||
margin-right: 5px;
|
||
}
|
||
.badge-version {
|
||
background-color: #875A7B;
|
||
color: white;
|
||
}
|
||
.badge-category {
|
||
background-color: #17a2b8;
|
||
color: white;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<h1>⭐ Helpdesk Rating Five Stars</h1>
|
||
|
||
<p>
|
||
<span class="badge badge-version">Odoo 18</span>
|
||
<span class="badge badge-category">Helpdesk</span>
|
||
<span class="badge badge-category">Customer Satisfaction</span>
|
||
</p>
|
||
|
||
<p style="font-size: 1.1em; color: #666;">
|
||
Transform your customer feedback experience by replacing Odoo's standard
|
||
3-emoticon rating system with an intuitive 5-star rating system. Gain more
|
||
granular insights into customer satisfaction and improve your helpdesk service quality.
|
||
</p>
|
||
|
||
<h2>✨ Key Features</h2>
|
||
|
||
<div class="feature">5-star rating system (1-5 stars) replacing the standard 0-3 emoticon system</div>
|
||
<div class="feature">Interactive star rating widget with hover effects for web forms</div>
|
||
<div class="feature">Clickable star links in email rating requests for one-click feedback</div>
|
||
<div class="feature">Automatic migration of existing ratings from 0-3 to 0-5 scale</div>
|
||
<div class="feature">Enhanced rating reports and analytics with 0-5 scale calculations</div>
|
||
<div class="feature">Beautiful star display in backend ticket views (form, tree, kanban)</div>
|
||
<div class="feature">Responsive design optimized for mobile and desktop</div>
|
||
<div class="feature">Accessible UI with keyboard navigation and ARIA labels</div>
|
||
<div class="feature">Full compatibility with Odoo's rating API and other modules</div>
|
||
<div class="feature">Duplicate rating prevention with automatic update logic</div>
|
||
|
||
<h2>📋 Requirements</h2>
|
||
|
||
<ul>
|
||
<li><strong>Odoo Version:</strong> 18.0 or higher</li>
|
||
<li><strong>Required Modules:</strong> helpdesk, rating, mail, web</li>
|
||
<li><strong>Python Version:</strong> 3.10 or higher</li>
|
||
<li><strong>Database:</strong> PostgreSQL 12 or higher</li>
|
||
</ul>
|
||
|
||
<h2>🚀 Installation</h2>
|
||
|
||
<div class="warning">
|
||
<strong>⚠️ Important:</strong> Before installing, it's recommended to backup your database,
|
||
especially if you have existing rating data. The module will automatically migrate
|
||
existing ratings from the 0-3 scale to the 0-5 scale.
|
||
</div>
|
||
|
||
<h3>Step 1: Copy Module to Addons Directory</h3>
|
||
<p>Copy the <code>helpdesk_rating_five_stars</code> folder to your Odoo addons directory:</p>
|
||
<div class="code-block">
|
||
<code>cp -r helpdesk_rating_five_stars /path/to/odoo/addons/</code>
|
||
</div>
|
||
<p>Or if using custom addons directory:</p>
|
||
<div class="code-block">
|
||
<code>cp -r helpdesk_rating_five_stars /path/to/custom/addons/</code>
|
||
</div>
|
||
|
||
<h3>Step 2: Update Addons Path (if needed)</h3>
|
||
<p>Ensure your <code>odoo.conf</code> includes the addons directory:</p>
|
||
<div class="code-block">
|
||
<code>addons_path = /path/to/odoo/addons,/path/to/custom/addons</code>
|
||
</div>
|
||
|
||
<h3>Step 3: Restart Odoo Server</h3>
|
||
<p>Restart your Odoo server to load the new module:</p>
|
||
<div class="code-block">
|
||
<code>sudo systemctl restart odoo</code>
|
||
</div>
|
||
<p>Or if running manually:</p>
|
||
<div class="code-block">
|
||
<code>./odoo-bin -c /path/to/odoo.conf</code>
|
||
</div>
|
||
|
||
<h3>Step 4: Update Apps List</h3>
|
||
<ol>
|
||
<li>Log in to Odoo as an administrator</li>
|
||
<li>Go to <strong>Apps</strong> menu</li>
|
||
<li>Click the <strong>Update Apps List</strong> button</li>
|
||
<li>Click <strong>Update</strong> in the confirmation dialog</li>
|
||
</ol>
|
||
|
||
<h3>Step 5: Install the Module</h3>
|
||
<ol>
|
||
<li>In the Apps menu, remove the "Apps" filter to show all modules</li>
|
||
<li>Search for "Helpdesk Rating Five Stars"</li>
|
||
<li>Click the <strong>Install</strong> button</li>
|
||
<li>Wait for installation to complete (migration runs automatically)</li>
|
||
</ol>
|
||
|
||
<div class="success">
|
||
<strong>✅ Installation Complete!</strong> The module is now active and all existing
|
||
ratings have been migrated to the 0-5 scale.
|
||
</div>
|
||
|
||
<h2>⚙️ Configuration</h2>
|
||
|
||
<p>
|
||
The module works out of the box with zero configuration required. However, you can
|
||
customize certain aspects if needed:
|
||
</p>
|
||
|
||
<h3>Email Templates</h3>
|
||
<p>
|
||
To customize the rating request email template:
|
||
</p>
|
||
<ol>
|
||
<li>Go to <strong>Settings → Technical → Email → Templates</strong></li>
|
||
<li>Search for "Helpdesk Rating Request"</li>
|
||
<li>Edit the template to customize the email content and styling</li>
|
||
<li>The star links are automatically generated and should not be removed</li>
|
||
</ol>
|
||
|
||
<h3>Star Icon Customization</h3>
|
||
<p>
|
||
The module uses Unicode star characters (⭐) by default. To use custom icons:
|
||
</p>
|
||
<ol>
|
||
<li>Edit <code>static/src/scss/rating_stars.scss</code></li>
|
||
<li>Modify the star icon styles or replace with custom images</li>
|
||
<li>Restart Odoo and clear browser cache</li>
|
||
</ol>
|
||
|
||
<h3>Rating Migration Mapping</h3>
|
||
<p>
|
||
The default migration mapping converts old ratings as follows:
|
||
</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Old Rating (0-3)</th>
|
||
<th>New Rating (0-5)</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>0</td>
|
||
<td>0</td>
|
||
<td>No rating / Not rated</td>
|
||
</tr>
|
||
<tr>
|
||
<td>1 (😞 Unhappy)</td>
|
||
<td>3 (⭐⭐⭐)</td>
|
||
<td>Neutral / Average</td>
|
||
</tr>
|
||
<tr>
|
||
<td>2 (😐 Okay)</td>
|
||
<td>4 (⭐⭐⭐⭐)</td>
|
||
<td>Good / Satisfied</td>
|
||
</tr>
|
||
<tr>
|
||
<td>3 (😊 Happy)</td>
|
||
<td>5 (⭐⭐⭐⭐⭐)</td>
|
||
<td>Excellent / Very Satisfied</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h2>📖 Usage Examples</h2>
|
||
|
||
<h3>Example 1: Customer Rating via Email</h3>
|
||
<ol>
|
||
<li>Customer receives a rating request email after ticket is closed</li>
|
||
<li>Email contains 5 clickable star links</li>
|
||
<li>Customer clicks on the 4th star to give a 4-star rating</li>
|
||
<li>System records the rating and redirects to a thank you page</li>
|
||
<li>Helpdesk agent sees 4 filled stars in the ticket view</li>
|
||
</ol>
|
||
|
||
<h3>Example 2: Customer Rating via Web Form</h3>
|
||
<ol>
|
||
<li>Customer clicks "Rate this ticket" link in email or portal</li>
|
||
<li>Web form displays 5 interactive stars</li>
|
||
<li>Customer hovers over stars to preview rating</li>
|
||
<li>Customer clicks on desired star to select rating</li>
|
||
<li>Customer submits the form</li>
|
||
<li>Rating is saved and displayed in backend views</li>
|
||
</ol>
|
||
|
||
<h3>Example 3: Viewing Rating Statistics</h3>
|
||
<ol>
|
||
<li>Helpdesk manager navigates to <strong>Helpdesk → Reporting → Ratings</strong></li>
|
||
<li>Dashboard shows average ratings calculated on 0-5 scale</li>
|
||
<li>Manager can filter by rating value (1-5 stars)</li>
|
||
<li>Manager can group ratings by team, agent, or time period</li>
|
||
<li>Export includes rating values in 0-5 range</li>
|
||
</ol>
|
||
|
||
<h3>Example 4: Viewing Ratings in Ticket Views</h3>
|
||
<p><strong>Form View:</strong></p>
|
||
<ul>
|
||
<li>Open any helpdesk ticket</li>
|
||
<li>Rating is displayed as filled stars in the rating section</li>
|
||
<li>Example: 3-star rating shows ⭐⭐⭐☆☆</li>
|
||
</ul>
|
||
|
||
<p><strong>List View:</strong></p>
|
||
<ul>
|
||
<li>Navigate to <strong>Helpdesk → Tickets</strong></li>
|
||
<li>Rating column shows compact star display</li>
|
||
<li>Sort and filter by rating value</li>
|
||
</ul>
|
||
|
||
<p><strong>Kanban View:</strong></p>
|
||
<ul>
|
||
<li>Switch to kanban view in tickets</li>
|
||
<li>Each ticket card shows star rating</li>
|
||
<li>Quick visual feedback on customer satisfaction</li>
|
||
</ul>
|
||
|
||
<h3>Example 5: Handling Duplicate Ratings</h3>
|
||
<ol>
|
||
<li>Customer rates a ticket with 3 stars</li>
|
||
<li>Customer changes their mind and clicks the rating link again</li>
|
||
<li>Customer selects 5 stars</li>
|
||
<li>System updates the existing rating to 5 stars (no duplicate created)</li>
|
||
<li>Confirmation message indicates rating was updated</li>
|
||
</ol>
|
||
|
||
<h2>🔧 Troubleshooting</h2>
|
||
|
||
<h3>Stars Not Displaying in Backend</h3>
|
||
<p><strong>Solution:</strong></p>
|
||
<ul>
|
||
<li>Clear browser cache and reload the page</li>
|
||
<li>Ensure the module is properly installed and activated</li>
|
||
<li>Check browser console for JavaScript errors</li>
|
||
<li>Verify that static files are being served correctly</li>
|
||
</ul>
|
||
|
||
<h3>Email Rating Links Not Working</h3>
|
||
<p><strong>Solution:</strong></p>
|
||
<ul>
|
||
<li>Verify that the rating token is valid and not expired</li>
|
||
<li>Check that the base URL is configured correctly in Odoo settings</li>
|
||
<li>Ensure the rating controller route is accessible</li>
|
||
<li>Check server logs for any errors</li>
|
||
</ul>
|
||
|
||
<h3>Migration Issues</h3>
|
||
<p><strong>Solution:</strong></p>
|
||
<ul>
|
||
<li>Check the Odoo server logs for migration errors</li>
|
||
<li>Verify database permissions for the Odoo user</li>
|
||
<li>If migration fails, uninstall the module, fix issues, and reinstall</li>
|
||
<li>Contact support if data integrity issues occur</li>
|
||
</ul>
|
||
|
||
<h3>Rating Values Outside 1-5 Range</h3>
|
||
<p><strong>Solution:</strong></p>
|
||
<ul>
|
||
<li>The module enforces validation constraints</li>
|
||
<li>Invalid values are rejected with error messages</li>
|
||
<li>Check for custom code that might bypass validation</li>
|
||
<li>Review database constraints are properly applied</li>
|
||
</ul>
|
||
|
||
<h2>🔒 Security & Access Control</h2>
|
||
|
||
<p>The module implements the following security measures:</p>
|
||
<ul>
|
||
<li><strong>Token-based authentication:</strong> Rating submissions require valid tokens</li>
|
||
<li><strong>Public access:</strong> Customers can submit ratings without logging in</li>
|
||
<li><strong>Restricted modification:</strong> Only authorized users can modify ratings in backend</li>
|
||
<li><strong>Audit logging:</strong> All rating changes are logged for accountability</li>
|
||
<li><strong>Input validation:</strong> All rating values are validated server-side</li>
|
||
<li><strong>SQL injection prevention:</strong> Uses Odoo ORM for all database operations</li>
|
||
</ul>
|
||
|
||
<h2>🌐 Accessibility Features</h2>
|
||
|
||
<p>The module is designed with accessibility in mind:</p>
|
||
<ul>
|
||
<li><strong>Keyboard navigation:</strong> Use arrow keys to navigate stars, Enter to select</li>
|
||
<li><strong>ARIA labels:</strong> Screen readers announce star ratings correctly</li>
|
||
<li><strong>Touch-friendly:</strong> Stars are sized appropriately for mobile devices</li>
|
||
<li><strong>High contrast:</strong> Star colors meet WCAG 2.1 AA standards</li>
|
||
<li><strong>Focus indicators:</strong> Clear visual feedback for keyboard users</li>
|
||
</ul>
|
||
|
||
<h2>🔄 Compatibility</h2>
|
||
|
||
<p>This module is compatible with:</p>
|
||
<ul>
|
||
<li>Odoo 18 Community and Enterprise editions</li>
|
||
<li>All standard Odoo modules that use the rating system</li>
|
||
<li>Custom modules that properly inherit from rating.rating</li>
|
||
<li>Multi-company configurations</li>
|
||
<li>Multi-language installations (translatable strings)</li>
|
||
</ul>
|
||
|
||
<div class="info">
|
||
<strong>ℹ️ Note:</strong> The module maintains full API compatibility with Odoo's
|
||
standard rating system, ensuring no breaking changes for other modules.
|
||
</div>
|
||
|
||
<h2>📊 Technical Details</h2>
|
||
|
||
<h3>Module Structure</h3>
|
||
<ul>
|
||
<li><strong>Models:</strong> Extends rating.rating and helpdesk.ticket</li>
|
||
<li><strong>Controllers:</strong> Custom rating submission controller</li>
|
||
<li><strong>Views:</strong> Enhanced backend views with star display</li>
|
||
<li><strong>Templates:</strong> Email and web form templates</li>
|
||
<li><strong>JavaScript:</strong> OWL-based star rating widget</li>
|
||
<li><strong>Styles:</strong> SCSS for star styling and responsive design</li>
|
||
</ul>
|
||
|
||
<h3>Database Changes</h3>
|
||
<ul>
|
||
<li>No new tables created</li>
|
||
<li>Modifies constraints on rating.rating.rating field</li>
|
||
<li>Adds computed fields for star display</li>
|
||
<li>Migration script updates existing rating values</li>
|
||
</ul>
|
||
|
||
<h2>🆘 Support</h2>
|
||
|
||
<p>For support and assistance:</p>
|
||
<ul>
|
||
<li>Contact your Odoo administrator for installation help</li>
|
||
<li>Review the module documentation in the <code>static/description/</code> directory</li>
|
||
<li>Check the Odoo server logs for error messages</li>
|
||
<li>Consult the module source code for technical details</li>
|
||
</ul>
|
||
|
||
<h2>📝 License</h2>
|
||
|
||
<p>
|
||
This module is licensed under LGPL-3. See the LICENSE file for details.
|
||
</p>
|
||
|
||
<h2>👥 Credits</h2>
|
||
|
||
<p>
|
||
Developed for Odoo 18 Helpdesk application enhancement.
|
||
</p>
|
||
|
||
<hr style="margin: 40px 0; border: none; border-top: 2px solid #875A7B;">
|
||
|
||
<p style="text-align: center; color: #666; font-size: 0.9em;">
|
||
<strong>Helpdesk Rating Five Stars</strong> | Version 1.0 | Odoo 18
|
||
</p>
|
||
</div>
|
||
</body>
|
||
</html>
|