[minor] minor fixes, feedback request url template
This commit is contained in:
parent
923561d106
commit
ebadc3f073
8 changed files with 144 additions and 38 deletions
|
|
@ -27,7 +27,7 @@ def is_valid_feedback_request(key=None):
|
|||
if not key:
|
||||
return False
|
||||
|
||||
is_feedback_submitted = frappe.db.get_value("Feedback Request", {"key": key}, "is_feedback_submitted")
|
||||
is_feedback_submitted = frappe.db.get_value("Feedback Request", { "key": key }, "is_feedback_submitted")
|
||||
if is_feedback_submitted:
|
||||
return False
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Enabled",
|
||||
|
|
@ -49,6 +51,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -75,6 +79,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Document Type",
|
||||
|
|
@ -104,6 +110,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Email Field",
|
||||
|
|
@ -131,6 +139,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Email Fieldname",
|
||||
|
|
@ -158,6 +168,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -185,6 +197,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Subject",
|
||||
|
|
@ -212,6 +226,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -228,6 +244,37 @@
|
|||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"default": "1",
|
||||
"description": "Send Feedback Request only if there is at least one communication is available for the document.",
|
||||
"fieldname": "check_communication",
|
||||
"fieldtype": "Check",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Check Communication",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
|
|
@ -239,6 +286,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Condition",
|
||||
|
|
@ -266,6 +315,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -292,6 +343,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -319,6 +372,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Message",
|
||||
|
|
@ -346,6 +401,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Message",
|
||||
|
|
@ -373,6 +430,8 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Example",
|
||||
|
|
@ -402,7 +461,7 @@
|
|||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2017-02-10 11:25:41.643832",
|
||||
"modified": "2017-02-17 05:19:08.819230",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Feedback Trigger",
|
||||
|
|
@ -433,6 +492,7 @@
|
|||
"quick_entry": 0,
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"show_name_in_global_search": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"title_field": "document_type",
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ def send_feedback_request(reference_doctype, reference_name, trigger=None, detai
|
|||
feedback_request, url = get_feedback_request_url(reference_doctype,
|
||||
reference_name, details.get("recipients"), trigger)
|
||||
|
||||
feedback_url = "Please click <a href='{url}'>here</a> to submit your feedback.".format(url=url)
|
||||
feedback_url = frappe.render_template("templates/emails/feedback_request_url.html", { "url": url })
|
||||
|
||||
# appending feedback url to message body
|
||||
details.update({ "message": "{message}<br>{feedback_url}".format(
|
||||
|
|
@ -80,13 +80,17 @@ def get_feedback_request_details(reference_doctype, reference_name, trigger=None
|
|||
context = get_context(doc)
|
||||
|
||||
recipients = doc.get(feedback_trigger.email_fieldname, None)
|
||||
communications = frappe.get_all("Communication", filters={
|
||||
"reference_doctype": reference_doctype,
|
||||
"reference_name": reference_name,
|
||||
"communication_type": "Communication"
|
||||
}, fields=["name"])
|
||||
if feedback_trigger.check_communication:
|
||||
communications = frappe.get_all("Communication", filters={
|
||||
"reference_doctype": reference_doctype,
|
||||
"reference_name": reference_name,
|
||||
"communication_type": "Communication"
|
||||
}, fields=["name"])
|
||||
|
||||
if recipients and eval(feedback_trigger.condition, context) and len(communications) >= 1:
|
||||
if len(communications) < 1:
|
||||
frappe.throw(_("No communication found for the document"))
|
||||
|
||||
if recipients and eval(feedback_trigger.condition, context):
|
||||
subject = feedback_trigger.subject
|
||||
context.update({ "feedback_trigger": feedback_trigger })
|
||||
|
||||
|
|
@ -118,7 +122,7 @@ def get_feedback_request_url(reference_doctype, reference_name, recipients, trig
|
|||
doctype=reference_doctype,
|
||||
docname=reference_name,
|
||||
email_id=recipients,
|
||||
nonce=feedback_request.name
|
||||
nonce=feedback_request.key
|
||||
)
|
||||
|
||||
return [ feedback_request.name, feedback_url ]
|
||||
|
|
|
|||
BIN
frappe/public/images/star.png
Normal file
BIN
frappe/public/images/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 462 B |
|
|
@ -16,7 +16,7 @@
|
|||
<li class="divider"></li>
|
||||
<li style="position: relative;">
|
||||
<a class="strong badge-hover">
|
||||
<span>{%= __("Feedback Rating") %}</span>
|
||||
<span>{%= __("Feedback") %}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="rating-icons"></li>
|
||||
|
|
|
|||
25
frappe/templates/emails/feedback_request_url.html
Normal file
25
frappe/templates/emails/feedback_request_url.html
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<html>
|
||||
<body>
|
||||
<div align="center">
|
||||
Please take a few minute to leave a feedback - we would really appreciate it!<br>
|
||||
Rating (select a star)
|
||||
<div class="user-ratings">
|
||||
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=1">
|
||||
<img src="/assets/frappe/images/star.png">
|
||||
</a>
|
||||
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=2">
|
||||
<img src="/assets/frappe/images/star.png">
|
||||
</a>
|
||||
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=3">
|
||||
<img src="/assets/frappe/images/star.png">
|
||||
</a>
|
||||
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=4">
|
||||
<img src="/assets/frappe/images/star.png">
|
||||
</a>
|
||||
<a class="rating" style="text-decoration: none; color: black" href="{{url}}&rating=5">
|
||||
<img src="/assets/frappe/images/star.png">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -49,22 +49,31 @@
|
|||
this.key = get_url_arg("key");
|
||||
this.reference_name = get_url_arg("reference_name");
|
||||
this.reference_doctype = get_url_arg("reference_doctype");
|
||||
this.sender = get_url_arg("email")
|
||||
this.sender = get_url_arg("email");
|
||||
this.rating = get_url_arg("rating") || 0;
|
||||
|
||||
me.bind_events();
|
||||
// set ratings
|
||||
console.log(this.rating)
|
||||
this.set_ratings_icon(this.rating)
|
||||
|
||||
this.bind_events();
|
||||
$("#feedback-msg").empty().html(__("Please share your feedback for {0}", [me.reference_name]));
|
||||
},
|
||||
|
||||
set_ratings_icon: function(idx) {
|
||||
$('.star-icon.fa-star').removeClass('fa-star').addClass('fa-star-o');
|
||||
for(var i=0; i<parseInt(idx); i++) {
|
||||
$($('.star-icon').get(i)).removeClass('fa-star-o').addClass('fa-star');
|
||||
}
|
||||
},
|
||||
|
||||
bind_events: function() {
|
||||
// bind ratings on hover
|
||||
var me = this;
|
||||
|
||||
$('.star-icon').hover(function() {
|
||||
var idx = $(this).attr('data-idx');
|
||||
$('.star-icon.fa-star').removeClass('fa-star').addClass('fa-star-o');
|
||||
for(var i=0; i<parseInt(idx); i++) {
|
||||
$($('.star-icon').get(i)).removeClass('fa-star-o').addClass('fa-star');
|
||||
}
|
||||
me.set_ratings_icon(idx);
|
||||
});
|
||||
|
||||
// bind submit button
|
||||
|
|
@ -72,6 +81,9 @@
|
|||
if(!$('.star-icon.fa-star').length) {
|
||||
frappe.msgprint(__("Please give a rating."));
|
||||
return;
|
||||
} else if(!$('.feedback-text').val().length){
|
||||
frappe.msgprint(__("Please give a detailed feebdack."));
|
||||
return;
|
||||
}
|
||||
|
||||
frappe.call({
|
||||
|
|
|
|||
|
|
@ -25,29 +25,34 @@ def accept(key, sender, reference_doctype, reference_name, feedback, rating):
|
|||
if not reference_doctype and not reference_name:
|
||||
frappe.throw("Invalid Reference Doctype, Reference Name")
|
||||
|
||||
if not rating or not feedback:
|
||||
frappe.throw("Please give both Rating and Detailed Feedback")
|
||||
|
||||
if not is_valid_feedback_request(key):
|
||||
frappe.throw("Link is expired")
|
||||
|
||||
feedback_request = frappe.db.get_value("Feedback Request", {"key": key})
|
||||
try:
|
||||
feedback_request = frappe.db.get_value("Feedback Request", {"key": key})
|
||||
|
||||
communication = frappe.get_doc({
|
||||
"rating": rating,
|
||||
"sender": sender,
|
||||
"status": "Closed",
|
||||
"feedback": feedback,
|
||||
"doctype": "Communication",
|
||||
"sent_or_received": "Received",
|
||||
"communication_type": "Feedback",
|
||||
"reference_name": reference_name,
|
||||
"feedback_request": feedback_request,
|
||||
"reference_doctype": reference_doctype,
|
||||
"subject": "Feedback for {0} {1}".format(reference_doctype, reference_name),
|
||||
}).insert(ignore_permissions=True)
|
||||
communication = frappe.get_doc({
|
||||
"rating": rating,
|
||||
"sender": sender,
|
||||
"status": "Closed",
|
||||
"feedback": feedback,
|
||||
"doctype": "Communication",
|
||||
"sent_or_received": "Received",
|
||||
"communication_type": "Feedback",
|
||||
"reference_name": reference_name,
|
||||
"feedback_request": feedback_request,
|
||||
"reference_doctype": reference_doctype,
|
||||
"subject": "Feedback for {0} {1}".format(reference_doctype, reference_name),
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
doc = frappe.get_doc("Feedback Request", feedback_request)
|
||||
doc.is_feedback_submitted = 1
|
||||
doc.rating = rating
|
||||
doc.reference_communication = communication.name
|
||||
doc.save(ignore_permissions=True)
|
||||
|
||||
return True
|
||||
doc = frappe.get_doc("Feedback Request", feedback_request)
|
||||
doc.is_feedback_submitted = 1
|
||||
doc.rating = rating
|
||||
doc.reference_communication = communication.name
|
||||
doc.save(ignore_permissions=True)
|
||||
return True
|
||||
except Exception as e:
|
||||
frappe.throw("Can not submit feedback, Please try again later")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue