diff --git a/frappe/public/js/frappe/file_uploader/FileUploader.vue b/frappe/public/js/frappe/file_uploader/FileUploader.vue index 9d53d9f776..af92f96a5f 100644 --- a/frappe/public/js/frappe/file_uploader/FileUploader.vue +++ b/frappe/public/js/frappe/file_uploader/FileUploader.vue @@ -521,14 +521,37 @@ function upload_via_file_browser() { library_file_name: selected_file.value, }); } -function upload_via_web_link() { + +async function validate_html_url(url) { + try { + let response = await fetch(url, { method: "HEAD" }); + let contentType = response.headers.get("Content-Type"); + + if (contentType && contentType.includes("text/html")) { + return false; + } + } catch (error) { + console.log("Error fetching URL:", error); + } + return true; +} + +async function upload_via_web_link() { let file_url = web_link.value.url; if (!file_url) { frappe.msgprint(__("Invalid URL")); close_dialog.value = true; return Promise.reject(); } + file_url = decodeURI(file_url); + const is_valid = await validate_html_url(file_url); + + if (!is_valid) { + frappe.msgprint(__("Invalid or unsupported URL")); + return Promise.reject(); + } + close_dialog.value = true; return upload_file({ file_url, diff --git a/frappe/www/printview.py b/frappe/www/printview.py index cb973d785e..a1d97d30f4 100644 --- a/frappe/www/printview.py +++ b/frappe/www/printview.py @@ -78,7 +78,8 @@ def get_context(context) -> PrintContext: body = get_html( doctype=frappe.form_dict.doctype, name=frappe.form_dict.name, print_format=print_format.name ) - body += trigger_print_script + if cint(frappe.form_dict.trigger_print): + body += trigger_print_script else: body = get_rendered_template( doc,