diff --git a/core/doctype/workflow/workflow.py b/core/doctype/workflow/workflow.py index aacbe95cee..098ab15403 100644 --- a/core/doctype/workflow/workflow.py +++ b/core/doctype/workflow/workflow.py @@ -29,6 +29,10 @@ class DocType: def validate(self): self.set_active() self.create_custom_field_for_workflow_state() + self.update_default_workflow_status() + + def on_update(self): + webnotes.clear_cache(doctype=self.doc.document_type) def create_custom_field_for_workflow_state(self): webnotes.clear_cache(doctype=self.doc.document_type) @@ -52,6 +56,17 @@ class DocType: webnotes.msgprint("Created Custom Field '%s' in '%s'" % (self.doc.workflow_state_field, self.doc.document_type)) + def update_default_workflow_status(self): + docstatus_map = {} + states = self.doclist.get({"doctype": "Workflow Document State"}) + states.sort(lambda x, y: x.idx - y.idx) + for d in self.doclist.get({"doctype": "Workflow Document State"}): + if not d.doc_status in docstatus_map: + webnotes.conn.sql("""update `tab%s` set `%s` = %s where \ + ifnull(`%s`, '')='' and docstatus=%s""" % (self.doc.document_type, self.doc.workflow_state_field, + '%s', self.doc.workflow_state_field, "%s"), (d.state, d.doc_status)) + docstatus_map[d.doc_status] = d.state + def set_active(self): if int(self.doc.is_active or 0): # clear all other diff --git a/public/js/legacy/widgets/form/fields.js b/public/js/legacy/widgets/form/fields.js index 1638dcd28f..539f8d12ff 100644 --- a/public/js/legacy/widgets/form/fields.js +++ b/public/js/legacy/widgets/form/fields.js @@ -75,7 +75,14 @@ Field.prototype.set_label = function(label) { } Field.prototype.set_description = function(txt) { - this.$wrapper.find(":input").attr("title", txt).tooltip(); + if(txt) { + if(!this.$wrapper.find(".help-box").length) { + $('

').appendTo(this.input_area); + } + this.$wrapper.find(".help-box").html(txt); + } else { + this.$wrapper.find(".help-box").empty().toggle(false); + } } Field.prototype.get_status = function(explain) { diff --git a/public/js/wn/form/states.js b/public/js/wn/form/states.js index 83008b6502..773843b70d 100644 --- a/public/js/wn/form/states.js +++ b/public/js/wn/form/states.js @@ -31,9 +31,6 @@ wn.ui.form.States = Class.extend({ this.update_fields = wn.workflow.get_update_fields(this.frm.doctype); - this.make(); - this.bind_action(); - var me = this; $(this.frm.wrapper).bind("render_complete", function() { me.refresh(); @@ -41,23 +38,22 @@ wn.ui.form.States = Class.extend({ }, make: function() { - this.$wrapper = $('
\ -
\ - \ - \ -
\ - \ -
').appendTo(this.frm.body_header); - this.$wrapper.toggle(false); + var parent = this.frm.appframe.$w.find(".title-button-area"); + + this.workflow_button = $('') + .appendTo(parent).dropdown(); + this.dropdown = $('