From bd5c27a30f00f7eba6adabef048d1794b69ca562 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 9 Aug 2018 09:27:37 +0530 Subject: [PATCH] fix(webform): allow link fields in web form (#5950) * fix(webform): allow link fields in web form * fix(webform): don't allow advanced search in links' --- frappe/public/js/frappe/form/controls/link.js | 22 +++++++++++-------- frappe/website/doctype/web_form/web_form.py | 13 +---------- frappe/website/js/web_form.js | 2 +- .../js/{webform.js => web_form_class.js} | 5 ----- 4 files changed, 15 insertions(+), 27 deletions(-) rename frappe/website/js/{webform.js => web_form_class.js} (96%) diff --git a/frappe/public/js/frappe/form/controls/link.js b/frappe/public/js/frappe/form/controls/link.js index 3d3f84c4a3..9ebdaac8c4 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -136,7 +136,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ if (!me.$input.cache[doctype]) { me.$input.cache[doctype] = {}; } - + var term = e.target.value; if (me.$input.cache[doctype][term]!=null) { @@ -176,14 +176,18 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({ }); } // advanced search - r.results.push({ - label: "" - + " " - + __("Advanced Search") - + "", - value: "advanced_search__link_option", - action: me.open_advanced_search - }); + + if (locals && locals['DocType']) { + // not applicable in web forms + r.results.push({ + label: "" + + " " + + __("Advanced Search") + + "", + value: "advanced_search__link_option", + action: me.open_advanced_search + }); + } } me.$input.cache[doctype][term] = r.results; me.awesomplete.list = me.$input.cache[doctype][term]; diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index a1291aa5f6..2b56799f39 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -502,18 +502,7 @@ def get_form_data(doctype, docname, web_form_name): else: frappe.throw(_("Not permitted"), frappe.PermissionError) - webform = frappe.get_doc('Web Form', web_form_name) - - fields = webform.get('web_form_fields') or [] - links = {} - - for f in fields: - if f.fieldtype == "Link": - links[f.fieldname] = [d.name for d in frappe.get_all(f.options, fields=["name"])] - - out.web_form = webform - out.links = links - + out.web_form = frappe.get_doc('Web Form', web_form_name) return out @frappe.whitelist() diff --git a/frappe/website/js/web_form.js b/frappe/website/js/web_form.js index a9118c6b8c..79f8ce9e51 100644 --- a/frappe/website/js/web_form.js +++ b/frappe/website/js/web_form.js @@ -1,4 +1,4 @@ -import WebForm from './webform'; +import WebForm from './web_form_class'; import make_datatable from './grid_list'; frappe.ready(function() { diff --git a/frappe/website/js/webform.js b/frappe/website/js/web_form_class.js similarity index 96% rename from frappe/website/js/webform.js rename to frappe/website/js/web_form_class.js index e0033e5a9c..c285167b63 100644 --- a/frappe/website/js/webform.js +++ b/frappe/website/js/web_form_class.js @@ -24,11 +24,6 @@ export default class WebForm { const query_params = frappe.utils.get_query_params(); web_form.web_form_fields.map(df => { - if (df.fieldtype === 'Link') { - df.fieldtype = 'Select'; - df.options = links[df.fieldname] - } - if (df.fieldtype === 'Table') { df.get_data = () => { let data = []