Package: rer.customersatisfaction
Add a form (viewlet) for the customer satisfaction on site contents.Users can add a vote (positive or negative) and a comment to every page on the site.Bot protectionThis product usecollective.honeypotto prevent bot submissions.You just need to set two environment variables:EXTRA_PROTECTED_ACTIONS customer-satisfaction-addHONEYPOT_FIELD xxxxxx should be a field name that bot should compile.If you get hacked, you could simply change that variable.PermissionsThere are two new specific permission:rer.customersatisfaction.AddCustomerSatisfactionVote (rer.customersatisfaction: Add Customer Satisfaction Vote) Allows users to vote (by default Anonymous).rer.customersatisfaction.ManageCustomerSatisfaction (rer.customersatisfaction: Manage Customer Satisfaction) Allows to reset data (by default Manager and Site Administrator).rer.customersatisfaction.ShowDeletedFeedbacks (rer.customersatisfaction: Show Deleted Feedbacks) Allow list also feedbacks from deleted contents (by default Manager and Site Administrator)rer.customersatisfaction.AccessCustomerSatisfaction (rer.customersatisfaction: Access Customer Satisfaction) Allows users to list feedbacks on contents where they have that permission (by default Editor, Manager and Site Administrator)Feedbacks catalogReviews are stored inside an internal catalog (based onsouper.plone).You can access/edit data through restapi routes (see below) or through a Plone utility:from zope.component import getUtility
from rer.customersatisfaction.interfaces import ICustomerSatisfactionStore

tool = getUtility(ICustomerSatisfactionStore)Add a voteMethodaddParameters:data(dictionary with parameters)Response: unique-id of new recorddatashould be a dictionary with the following parameters:uid [required]: the uid of the Plone contentvote [required]: the vote (should be1or-1)title: the title of the Plone contentcomment: an optional commentOthere parameters will be ignored.Search reviewsMethodsearchParameters:query(dictionary with parameters),sort_index(default=date),reverse(default=False)Response: a list of resultsqueryis a dictionary of indexes where perform the search.Right now data is not indexed so search filters does not work. You only need to call search method to get all data.restapi routesAdd a vote@customer-satisfaction-addPOSTendpoint that need to be called on a site content.Only users with “rer.customersatisfaction.AddCustomerSatisfactionVote” can post it:> curl -i -X POST http://localhost:8080/Plone/front-page/@customer-satisfaction-add -H 'Accept: application/json' -H 'Content-Type: application/json' --data-raw '{"vote": "1", "xxx": ""}' --user admin:adminIf vote is successful, the response is a204.Sites listLists all sites in the current installationsites-listGETOnly users with “zope2.ViewManagementScreens” can get it:> curl -i -X POST http://localhost:8080/sites-list -H 'Accept: application/json' -H 'Content-Type: application/json' --user admin:adminresult: [{“id”: “Plone”, “url”: “http://localhost:8080/Plone”, “title”: “Site”}]Feedbacks listingThere is a view (a link is also available on user menu in sidebar) that shows all infos about feedbacks: @@customer-satisfactionThe list of feedbacks is filtered based on some permissions.Comments listingUsers withrer.customersatisfaction.AccessCustomerSatisfactioncan call@@show-feedbacksview on a content, to see a detailed list of feedbacks and comments.Customer satisfaction globalUsers withzope2.ViewManagementScreenscan call@@customer-satisfaction-globalview on the application root(/) to see customer satisfaction report for all the sitesInstallationAdd rer.customersatisfaction to buildout:[buildout]

...

eggs =
    rer.customersatisfactionIf you need collective.recaptcha support, add the egg like this:...

eggs =
    rer.customersatisfaction[collective_recaptcha]and runbin/buildoutcommand.ContributeIssue Tracker:https://github.com/RegioneER/rer.customersatisfaction/issuesSource Code:https://github.com/RegioneER/rer.customersatisfactionCompatibilityThis product has been tested on Plone 5.1 and 5.2CreditsDeveloped with the support ofRegione Emilia Romagna;Regione Emilia Romagna supports thePloneGov initiative.AuthorsThis product was developed by RedTurtle Technology team.ContributorsRedTurtle Technology,sviluppo@redturtle.itRohberg, Katja Süss, @ksuessLeonardo J. Caballero G., @macaguaChangelog2.2.6 (2024-01-12)Add customized date format to the exported csv
[folix-01]Extend the exported csv report compatibility with ms. Excel.
[folix-01]2.2.4 (2023-07-07)add escape chars for csv in the customer-satisfaction-gloabal view.
[folix-01]2.2.3 (2023-05-25)Add export to customer-satisfaction-global view
[folix-01]Add Spanish translations.
[macagua]Fix english translations.
[cekk]Fix bundle (there was a missing resource).
[cekk]2.2.2 (2023-05-11)Fix uninstall profile (remove action and bundles).
[cekk]2.2.1 (2023-03-24)Add customer-satisfaction-global view
[folix-01]Fix english label.
[cekk]2.2.0 (2023-03-06)Fire content rules event on new vote.
[ksuess]2.1.1 (2022-12-30)Fix permissions to access feedbacks view.
[cekk]2.1.0 (2022-12-15)Handle comments view (aka do not break) when a content is deleted but has some comments.
[cekk]Some fixes in accessibility and styles.
[cekk]2.0.0 (2022-11-07)Fix translations.
[cekk]Fix python3.8 compatibility (https://github.com/repoze/repoze.catalog/issues/13) using python operators instead CQE.
[cekk]Some fixes in layout.
[cekk]Do not use recaptcha, but honeypot to prevent bots.
[cekk]Remove role=”radio” from labels to improve accessibility.
[cekk]1.2.0 (2022-07-06)Add a flag to disable captcha validation.
[cekk]1.1.2 (2021-12-27)Do not break viewlet if collective.recaptcha is not installed.
[cekk]1.1.1 (2021-12-02)Fix python requirement.
[cekk]1.1.0 (2021-10-22)A11y fixes [nzambello]Conditional use of collective.recaptcha.
[cekk]1.0.0 (2021-08-19)Initial release.
[cekk]