@@ -332,7 +332,6 @@ frappe.ready(function() { | |||||
var input = $input.get(0); | var input = $input.get(0); | ||||
var reader = new FileReader(); | var reader = new FileReader(); | ||||
input.filedata = null; | |||||
if(input.files.length) { | if(input.files.length) { | ||||
file = input.files[0]; | file = input.files[0]; | ||||
frappe.file_reading = true; | frappe.file_reading = true; | ||||
@@ -396,9 +395,11 @@ frappe.ready(function() { | |||||
// change attach | // change attach | ||||
$form.on("click", ".change-attach", function() { | $form.on("click", ".change-attach", function() { | ||||
$(this).parent().addClass("hide") | |||||
var input_wrapper = $(this).parent().addClass("hide") | |||||
.parent().find(".attach-input-wrap").removeClass("hide"); | .parent().find(".attach-input-wrap").removeClass("hide"); | ||||
input_wrapper.find('input').val(''); | |||||
frappe.form_dirty = true; | frappe.form_dirty = true; | ||||
return false; | return false; | ||||
@@ -513,7 +514,12 @@ frappe.ready(function() { | |||||
var $input = $(this); | var $input = $(this); | ||||
var input_type = $input.attr("type"); | var input_type = $input.attr("type"); | ||||
if(input_type==="file") { | if(input_type==="file") { | ||||
var val = $input.get(0).filedata; | |||||
// save filedata dict as value | |||||
if($input.get(0).filedata) { | |||||
var val = $input.get(0).filedata; | |||||
} else { | |||||
var val = {'__no_attachment': 1} | |||||
} | |||||
} else if(input_type==="checkbox") { | } else if(input_type==="checkbox") { | ||||
var val = $input.prop("checked") ? 1 : 0; | var val = $input.prop("checked") ? 1 : 0; | ||||
} else if($input.attr("data-fieldtype")==="Date") { | } else if($input.attr("data-fieldtype")==="Date") { | ||||
@@ -639,11 +645,11 @@ frappe.ready(function() { | |||||
dateFormat: frappe.datepicker_format, | dateFormat: frappe.datepicker_format, | ||||
}); | }); | ||||
// convert dates from YYYY-MM-DD to user format | |||||
// initialize dates from YYYY-MM-DD to user format | |||||
$dates.each(function() { | $dates.each(function() { | ||||
var val = $(this).val(); | |||||
var val = $(this).attr('value'); | |||||
if(val) { | if(val) { | ||||
$(this).val(moment(val, 'YYYY-MM-DD').format()); | |||||
$(this).val(moment(val, 'YYYY-MM-DD').format()).trigger('change'); | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@@ -259,6 +259,8 @@ def remove_file(fid, attached_to_doctype=None, attached_to_name=None): | |||||
if attached_to_doctype and attached_to_name: | if attached_to_doctype and attached_to_name: | ||||
doc = frappe.get_doc(attached_to_doctype, attached_to_name) | doc = frappe.get_doc(attached_to_doctype, attached_to_name) | ||||
ignore_permissions = doc.has_permission("write") or False | ignore_permissions = doc.has_permission("write") or False | ||||
if frappe.flags.in_web_form: | |||||
ignore_permissions = True | |||||
if not file_name: | if not file_name: | ||||
file_name = frappe.db.get_value("File", fid, "file_name") | file_name = frappe.db.get_value("File", fid, "file_name") | ||||
comment = doc.add_comment("Attachment Removed", _("Removed {0}").format(file_name)) | comment = doc.add_comment("Attachment Removed", _("Removed {0}").format(file_name)) | ||||
@@ -304,6 +304,7 @@ def get_context(context): | |||||
def accept(web_form, data): | def accept(web_form, data): | ||||
data = frappe._dict(json.loads(data)) | data = frappe._dict(json.loads(data)) | ||||
files = [] | files = [] | ||||
files_to_delete = [] | |||||
web_form = frappe.get_doc("Web Form", web_form) | web_form = frappe.get_doc("Web Form", web_form) | ||||
if data.doctype != web_form.doc_type: | if data.doctype != web_form.doc_type: | ||||
@@ -312,6 +313,8 @@ def accept(web_form, data): | |||||
elif data.name and not web_form.allow_edit: | elif data.name and not web_form.allow_edit: | ||||
frappe.throw(_("You are not allowed to update this Web Form Document")) | frappe.throw(_("You are not allowed to update this Web Form Document")) | ||||
frappe.flags.in_web_form = True | |||||
if data.name: | if data.name: | ||||
# update | # update | ||||
doc = frappe.get_doc(data.doctype, data.name) | doc = frappe.get_doc(data.doctype, data.name) | ||||
@@ -326,6 +329,9 @@ def accept(web_form, data): | |||||
if "__file_attachment" in value: | if "__file_attachment" in value: | ||||
files.append((fieldname, value)) | files.append((fieldname, value)) | ||||
continue | continue | ||||
if '__no_attachment' in value: | |||||
files_to_delete.append(doc.get(fieldname)) | |||||
value = '' | |||||
except ValueError: | except ValueError: | ||||
pass | pass | ||||
@@ -351,7 +357,7 @@ def accept(web_form, data): | |||||
for f in files: | for f in files: | ||||
fieldname, filedata = f | fieldname, filedata = f | ||||
# remove earlier attachmed file (if exists) | |||||
# remove earlier attached file (if exists) | |||||
if doc.get(fieldname): | if doc.get(fieldname): | ||||
remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) | remove_file_by_url(doc.get(fieldname), doc.doctype, doc.name) | ||||
@@ -364,6 +370,11 @@ def accept(web_form, data): | |||||
doc.save() | doc.save() | ||||
if files_to_delete: | |||||
for f in files_to_delete: | |||||
if f: | |||||
remove_file_by_url(f, doc.doctype, doc.name) | |||||
return doc.name | return doc.name | ||||
@frappe.whitelist() | @frappe.whitelist() | ||||