From 1e2279887473ab75382addfd8828a7d2366b0fb5 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 25 Jan 2012 11:48:28 +0530 Subject: [PATCH 1/3] In print formats, hide columsn without any content --- js/legacy/form.compressed.js | 4 +++- js/legacy/widgets/form/print_format.js | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/js/legacy/form.compressed.js b/js/legacy/form.compressed.js index e64c2fc66f..99eeaa1af0 100644 --- a/js/legacy/form.compressed.js +++ b/js/legacy/form.compressed.js @@ -409,7 +409,9 @@ return layout;},print_std_add_table:function(t,layout,pf_list,dt,no_letterhead){ layout.cur_cell.appendChild(t[t.length-1]);} return layout;},print_std_add_field:function(dt,dn,f,layout){var val=_f.get_value(dt,dn,f.fieldname);if(f.fieldtype!='Button'){if(val||in_list(['Float','Int','Currency'],f.fieldtype)){row=_p.field_tab(layout.cur_cell);row.cells[0].innerHTML=f.label?f.label:f.fieldname;$s(row.cells[1],val,f.fieldtype);if(f.fieldtype=='Currency'){$y(row.cells[1],{textAlign:'left'});}}}},field_tab:function(layout_cell){var tab=$a(layout_cell,'table','',{width:'100%'});var row=tab.insertRow(0);_p.row=row;row.insertCell(0);row.insertCell(1);row.cells[0].className='datalabelcell';row.cells[1].className='datainputcell';return row;}});print_table=function(dt,dn,fieldname,tabletype,cols,head_labels,widths,condition,cssClass,modifier){var me=this;$.extend(this,{flist:fields_list[tabletype],data:function(){var children=getchildren(tabletype,dn,fieldname,dt);var data=[] for(var i=0;iSR';$y(cell,{width:'30px'});$y(cell,me.head_cell_style);col_start++;} for(var c=col_start;c Date: Wed, 25 Jan 2012 17:15:25 +0530 Subject: [PATCH 2/3] Show DocType Labels instead of DocType names in Customize Form View --- py/core/doctype/doclayer/doclayer.js | 21 ++++++++++++++++ py/core/doctype/doclayer/doclayer.py | 36 ++++++++++++++++++++++----- py/core/doctype/doclayer/doclayer.txt | 8 +++--- py/webnotes/utils/__init__.py | 27 ++++++++++++++++++++ 4 files changed, 82 insertions(+), 10 deletions(-) diff --git a/py/core/doctype/doclayer/doclayer.js b/py/core/doctype/doclayer/doclayer.js index 9afe4a8623..9cf83d8bc7 100644 --- a/py/core/doctype/doclayer/doclayer.js +++ b/py/core/doctype/doclayer/doclayer.js @@ -8,6 +8,7 @@ cur_frm.cscript.onload = function(doc, dt, dn) { cur_frm.grids[0].grid.tbar_div.style.width = "30%"; cur_frm.tip_wrapper.id = 'tip_wrapper'; cur_frm.add_fields_help(); + cur_frm.load_doclabel_options(doc, dt, dn); } cur_frm.cscript.refresh = function(doc, dt, dn) { @@ -51,6 +52,26 @@ cur_frm.cscript.refresh = function(doc, dt, dn) { page_head.buttons['Refresh Form'].disabled = true; page_head.buttons['Reset to defaults'].disabled = true; } + + cur_frm.refresh_doctype_select(doc, dt, dn); +} + +cur_frm.load_doclabel_options = function(doc, dt, dn) { + $c_obj('DocLayer','get_doctype_list','', function(r,rt) { + cur_frm.doctype_list = add_lists([""], r.message.doctype_list).join("\n"); + doc = locals[doc.doctype][doc.name] + cur_frm.refresh_doctype_select(doc, dt, dn); + }); +} + +cur_frm.refresh_doctype_select = function(doc, dt, dn) { + var doc_type = cur_frm.fields_dict['doc_type']; + doc_type.refresh_options(cur_frm.doctype_list); + if(doc.doc_type) { + doc_type.set_input(doc.doc_type); + } else { + doc_type.set_input(''); + } } diff --git a/py/core/doctype/doclayer/doclayer.py b/py/core/doctype/doclayer/doclayer.py index 1069bf55c8..a41391ae06 100644 --- a/py/core/doctype/doclayer/doclayer.py +++ b/py/core/doctype/doclayer/doclayer.py @@ -39,6 +39,10 @@ class DocType: 'name' ] + if self.doc.doc_type: + from webnotes.utils import get_label_doctype + self.true_doctype = get_label_doctype(self.doc.doc_type) + def get(self): """ @@ -72,8 +76,8 @@ class DocType: from webnotes.model.doctype import _DocType from webnotes.model.doc import get - ref_doclist = get('DocType', self.doc.doc_type) - _DocType(self.doc.doc_type)._override_field_properties(ref_doclist) + ref_doclist = get('DocType', self.true_doctype) + _DocType(self.true_doctype)._override_field_properties(ref_doclist) return ref_doclist @@ -122,7 +126,7 @@ class DocType: this_doclist = [self.doc] + self.doclist ref_doclist = self.get_ref_doclist() - dt_doclist = doc.get('DocType', self.doc.doc_type) + dt_doclist = doc.get('DocType', self.true_doctype) # get a list of property setter docs diff_list = self.diff(this_doclist, ref_doclist, dt_doclist) @@ -234,13 +238,13 @@ class DocType: from webnotes.model.doc import Document d = Document('Property Setter') d.doctype_or_field = ref_d.doctype=='DocField' and 'DocField' or 'DocType' - d.doc_type = self.doc.doc_type + d.doc_type = self.true_doctype d.doc_name = ref_d.name d.property = prop d.value = value d.property_type = self.defaults[prop]['fieldtype'] d.default_value = self.defaults[prop]['default'] - d.select_doctype = self.doc.doc_type + d.select_doctype = self.doc.doc_type d.select_item = ref_d.label and str(ref_d.idx) \ + " - " + str(ref_d.label) \ + " (" + str(ref_d.fieldtype) + ")" \ @@ -292,7 +296,7 @@ class DocType: if self.doc.doc_type: webnotes.conn.sql(""" DELETE FROM `tabProperty Setter` - WHERE doc_type = %s""", self.doc.doc_type) + WHERE doc_type = %s""", self.true_doctype) self.get() def remove_forbidden(self, string): @@ -302,4 +306,24 @@ class DocType: forbidden = ['%', "'", '"', '#', '*', '?', '`'] for f in forbidden: string.replace(f, ' ') + + + def get_doctype_list(self): + """ + Returns a list of doctypes allowed to be customized + """ + res = webnotes.conn.sql("""\ + SELECT name FROM `tabDocType` + WHERE (module IN + ("Accounts", "Buying", "HR", "Knowledge Base", "Production", "Projects", + "Selling", "Stock", "Support") OR name IN ("Contact", "Address")) + AND IFNULL(issingle, 0)=0 AND IFNULL(in_create, 0)=0 + """) + + from webnotes.utils import get_doctype_label + dt_label_dict = get_doctype_label() + doctype_list = res and [dt_label_dict.get(r[0], r[0]) for r in res] or [] + doctype_list.sort() + + return {'doctype_list': doctype_list} diff --git a/py/core/doctype/doclayer/doclayer.txt b/py/core/doctype/doclayer/doclayer.txt index b0932994c7..4694a71fc5 100644 --- a/py/core/doctype/doclayer/doclayer.txt +++ b/py/core/doctype/doclayer/doclayer.txt @@ -5,14 +5,14 @@ { 'creation': '2011-12-21 11:07:56', 'docstatus': 0, - 'modified': '2012-01-09 11:56:53', + 'modified': '2012-01-25 17:14:46', 'modified_by': 'Administrator', 'owner': 'Administrator' }, # These values are common for all DocType { - '_last_update': '1325570719', + '_last_update': '1326273643', 'autoname': 'DL.####', 'colour': 'White:FFF', 'doctype': 'DocType', @@ -23,7 +23,7 @@ 'search_fields': 'doc_type', 'section_style': 'Simple', 'show_in_menu': 0, - 'version': 96 + 'version': 106 }, # These values are common for all DocField @@ -79,8 +79,8 @@ 'doctype': 'DocField', 'fieldname': 'doc_type', 'fieldtype': 'Select', + 'hidden': 0, 'label': 'Select Form Type', - 'options': 'Link:DocType\nmodule IN ("Accounts", "Buying", "HR", "Knowledge Base", "Production", "Projects", "Selling", "Stock", "Support")\nIFNULL(issingle, 0)=0\nIFNULL(in_create, 0)=0', 'permlevel': 0 }, diff --git a/py/webnotes/utils/__init__.py b/py/webnotes/utils/__init__.py index 291659e5e1..8c98586f68 100644 --- a/py/webnotes/utils/__init__.py +++ b/py/webnotes/utils/__init__.py @@ -643,3 +643,30 @@ def make_esc(esc_chars): return lambda s: ''.join(['\\' + c if c in esc_chars else c for c in s]) +def get_doctype_label(dt=None): + """ + Gets label of a doctype + """ + if dt: + res = webnotes.conn.sql("""\ + SELECT name, dt_label FROM `tabDocType Label` + WHERE name=%s""", dt) + return res and res[0][0] or dt + else: + res = webnotes.conn.sql("SELECT name, dt_label FROM `tabDocType Label`") + dt_label_dict = {} + for r in res: + dt_label_dict[r[0]] = r[1] + + return dt_label_dict + + +def get_label_doctype(label): + """ + Gets doctype from its label + """ + res = webnotes.conn.sql("""\ + SELECT name FROM `tabDocType Label` + WHERE dt_label=%s""", label) + + return res and res[0][0] or label From 0d083627f0ed2803dedcaeb9179860725fef6c25 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 25 Jan 2012 17:41:34 +0530 Subject: [PATCH 3/3] Fix in doclayer button css --- py/core/doctype/doclayer/doclayer.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/py/core/doctype/doclayer/doclayer.js b/py/core/doctype/doclayer/doclayer.js index 9cf83d8bc7..2f9616089c 100644 --- a/py/core/doctype/doclayer/doclayer.js +++ b/py/core/doctype/doclayer/doclayer.js @@ -13,9 +13,9 @@ cur_frm.cscript.onload = function(doc, dt, dn) { cur_frm.cscript.refresh = function(doc, dt, dn) { //console.log(p) - cur_frm.frm_head.timestamp_area.hidden = true; - cur_frm.frm_head.page_head.buttons.Save.hidden = true; - cur_frm.page_layout.footer.hidden = true; + $(cur_frm.frm_head.timestamp_area).toggle(false); + $(cur_frm.frm_head.page_head.buttons.Save).toggle(false); + $(cur_frm.page_layout.footer).toggle(false); if(doc.doc_type) { $('#tip_wrapper').slideUp('slow'); } //cur_frm.grids[0].grid.tab.rows[cur_frm.grids[0].grid.tab.rows.length-1].hidden = true; @@ -33,7 +33,8 @@ cur_frm.cscript.refresh = function(doc, dt, dn) { }); } },1); - cur_frm.frm_head.page_head.buttons.Update.className = "cupid-green"; + $(cur_frm.frm_head.page_head.buttons.Update).addClass('primary'); + $(cur_frm.frm_head.page_head.buttons.Update).addClass('cupid-green'); cur_frm.add_custom_button('Refresh Form', function() { cur_frm.cscript.doc_type(doc, dt, dn);