diff --git a/frappe/core/doctype/feedback_request/feedback_request.py b/frappe/core/doctype/feedback_request/feedback_request.py index dd590a97ea..6dcf84caae 100644 --- a/frappe/core/doctype/feedback_request/feedback_request.py +++ b/frappe/core/doctype/feedback_request/feedback_request.py @@ -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: diff --git a/frappe/core/doctype/feedback_trigger/feedback_trigger.json b/frappe/core/doctype/feedback_trigger/feedback_trigger.json index ef9075844c..ca6a81e359 100644 --- a/frappe/core/doctype/feedback_trigger/feedback_trigger.json +++ b/frappe/core/doctype/feedback_trigger/feedback_trigger.json @@ -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", diff --git a/frappe/core/doctype/feedback_trigger/feedback_trigger.py b/frappe/core/doctype/feedback_trigger/feedback_trigger.py index fd8cbb87ec..55ed2f801b 100644 --- a/frappe/core/doctype/feedback_trigger/feedback_trigger.py +++ b/frappe/core/doctype/feedback_trigger/feedback_trigger.py @@ -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 here 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}
{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 ] diff --git a/frappe/public/images/star.png b/frappe/public/images/star.png new file mode 100644 index 0000000000..3f2c6a5365 Binary files /dev/null and b/frappe/public/images/star.png differ diff --git a/frappe/public/js/frappe/form/templates/form_sidebar.html b/frappe/public/js/frappe/form/templates/form_sidebar.html index b546bba820..08c297af8a 100644 --- a/frappe/public/js/frappe/form/templates/form_sidebar.html +++ b/frappe/public/js/frappe/form/templates/form_sidebar.html @@ -16,7 +16,7 @@
  • - {%= __("Feedback Rating") %} + {%= __("Feedback") %}
  • diff --git a/frappe/templates/emails/feedback_request_url.html b/frappe/templates/emails/feedback_request_url.html new file mode 100644 index 0000000000..87988171e1 --- /dev/null +++ b/frappe/templates/emails/feedback_request_url.html @@ -0,0 +1,25 @@ + + +
    + Please take a few minute to leave a feedback - we would really appreciate it!
    + Rating (select a star) +
    + + + + + + + + + + + + + + + +
    +
    + + \ No newline at end of file diff --git a/frappe/www/feedback.html b/frappe/www/feedback.html index e96a33a8d4..01a37dbd63 100644 --- a/frappe/www/feedback.html +++ b/frappe/www/feedback.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