Parcourir la source

[fix] attach document and docfields to layout fields list before triggering refresh event via script manager. Fixes #1158

version-14
Anand Doshi il y a 10 ans
Parent
révision
68c3b10350
2 fichiers modifiés avec 22 ajouts et 13 suppressions
  1. +19
    -13
      frappe/public/js/frappe/form/layout.js
  2. +3
    -0
      frappe/public/js/legacy/form.js

+ 19
- 13
frappe/public/js/frappe/form/layout.js Voir le fichier

@@ -37,19 +37,8 @@ frappe.ui.form.Layout = Class.extend({
this.wrapper.find(".empty-form-alert").remove();
}

for(var i=0, l=this.fields_list.length; i<l; i++) {
var fieldobj = this.fields_list[i];
if(me.doc) {
fieldobj.doc = me.doc;
fieldobj.doctype = me.doc.doctype;
fieldobj.docname = me.doc.name;
fieldobj.df = frappe.meta.get_docfield(me.doc.doctype,
fieldobj.df.fieldname, me.frm.doc.name);
// on form change, permissions can change
fieldobj.perm = me.frm.perm;
};
fieldobj.refresh && fieldobj.refresh();
}
// NOTE this might seem redundant at first, but it needs to be executed when frm.refresh_fields is called
me.attach_doc_and_docfields(true);

if(this.frm && this.frm.wrapper) {
$(this.frm.wrapper).trigger("refresh-fields");
@@ -72,6 +61,23 @@ frappe.ui.form.Layout = Class.extend({
// refresh sections
this.refresh_sections();
},
attach_doc_and_docfields: function(refresh) {
var me = this;
for(var i=0, l=this.fields_list.length; i<l; i++) {
var fieldobj = this.fields_list[i];
if(me.doc) {
fieldobj.doc = me.doc;
fieldobj.doctype = me.doc.doctype;
fieldobj.docname = me.doc.name;
fieldobj.df = frappe.meta.get_docfield(me.doc.doctype,
fieldobj.df.fieldname, me.frm.doc.name);

// on form change, permissions can change
fieldobj.perm = me.frm.perm;
};
refresh && fieldobj.refresh && fieldobj.refresh();
}
},
render: function() {
var me = this;



+ 3
- 0
frappe/public/js/legacy/form.js Voir le fichier

@@ -400,6 +400,9 @@ _f.Frm.prototype.refresh = function(docname) {

_f.Frm.prototype.render_form = function() {
if(!this.meta.istable) {
this.layout.doc = this.doc;
this.layout.attach_doc_and_docfields()

this.sidebar = new frappe.ui.form.Sidebar({
frm: this,
page: this.page


Chargement…
Annuler
Enregistrer