diff --git a/.gitignore b/.gitignore index 29bb624115..0b3fef8349 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,15 @@ *.pyc *.comp.js .DS_Store -files patch.log lib conf.py version.num -user_files -*.sql* +public/*.html +!public/blank.html +!public/unsupported.html +!public/app.html +public/js/lib +public/images/lib +public/files +public/backups diff --git a/build.json b/build.json index 79813e30ee..df917165f1 100644 --- a/build.json +++ b/build.json @@ -1,19 +1,20 @@ { - "css/all-web.css": [ + "public/css/all-web.css": [ "erpnext/startup/startup.css", "erpnext/website/css/website.css" ], - "css/all-app.css": [ + "public/css/all-app.css": [ "erpnext/startup/startup.css" ], - "js/all-web.js": [ + "public/js/all-web.js": [ "erpnext/startup/startup.js", - "erpnext/website/js/topbar.js" + "conf.js" ], - "js/all-app.js": [ + "public/js/all-app.js": [ "erpnext/startup/startup.js", "erpnext/startup/js/modules.js", "erpnext/startup/js/toolbar.js", - "erpnext/startup/js/feature_setup.js" + "erpnext/startup/js/feature_setup.js", + "conf.js" ] } \ No newline at end of file diff --git a/cgi-bin/README.md b/cgi-bin/README.md deleted file mode 100644 index 0ea0779468..0000000000 --- a/cgi-bin/README.md +++ /dev/null @@ -1 +0,0 @@ -## Deprecated \ No newline at end of file diff --git a/cgi-bin/getfile.cgi b/cgi-bin/getfile.cgi deleted file mode 100755 index 6b113057dc..0000000000 --- a/cgi-bin/getfile.cgi +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/python - -try: - - import sys, os - - sys.path.append('../lib/py') - sys.path.append('../erpnext') - - def getTraceback(): - import sys, traceback, string - type, value, tb = sys.exc_info() - body = "Traceback (innermost last):\n" - list = traceback.format_tb(tb, None) \ - + traceback.format_exception_only(type, value) - body = body + "%-20s %s" % (string.join(list[:-1], ""), list[-1]) - return body - - import cgi - import webnotes - import webnotes.auth - import webnotes.utils - import webnotes.utils.file_manager - import webnotes.db - import webnotes.defs - - sys.path.append(webnotes.defs.modules_path) - - form = cgi.FieldStorage() - webnotes.form_dict = {} - - for each in form.keys(): - webnotes.form_dict[each] = form.getvalue(each) - - n = form.getvalue('name') - - # authenticate - webnotes.auth.HTTPRequest() - - # get file - res = webnotes.utils.file_manager.get_file(n) - - fname = res[0] - if hasattr(res[1], 'tostring'): - fcontent = res[1].tostring() - else: - fcontent = res[1] - - if form.getvalue('thumbnail'): - tn = webnotes.utils.cint(form.getvalue('thumbnail')) - try: - from PIL import Image - import cStringIO - - fobj = cStringIO.StringIO(fcontent) - image = Image.open(fobj) - image.thumbnail((tn,tn*2), Image.ANTIALIAS) - outfile = cStringIO.StringIO() - - if image.mode != "RGB": - image = image.convert("RGB") - - image.save(outfile, 'JPEG') - outfile.seek(0) - fcontent = outfile.read() - except: - pass - - import mimetypes - print "Content-Type: %s" % (mimetypes.guess_type(fname)[0] or 'application/unknown') - print "Content-Disposition: filename="+fname.replace(' ', '_') - print "Cache-Control: max-age=3600" - print - print fcontent - -except Exception, e: - print "Content-Type: text/html" - try: - out = {'message':'', 'exc':getTraceback().replace('\n','
')} - except: - out = {'exc': e} - print - print str(out) diff --git a/js/app.js b/conf.js similarity index 97% rename from js/app.js rename to conf.js index 80efaf6a38..8dd4cb9cb4 100644 --- a/js/app.js +++ b/conf.js @@ -13,6 +13,7 @@ erpnext.set_about = function() { wn.modules_path = 'erpnext'; +// add toolbar icon $(document).bind('toolbar_setup', function() { $('.brand').html((wn.boot.website_settings.brand_html || 'erpnext') + ' ') diff --git a/erpnext/accounts/doctype/journal_voucher/listview.js b/erpnext/accounts/doctype/journal_voucher/listview.js index 5d7f85a7d9..a4965b1ce4 100644 --- a/erpnext/accounts/doctype/journal_voucher/listview.js +++ b/erpnext/accounts/doctype/journal_voucher/listview.js @@ -21,7 +21,7 @@ wn.doclistviews['Journal Voucher'] = wn.views.ListView.extend({ {width: '3%', content:'docstatus'}, {width: '12%', content:'name'}, {width: '15%', content:'voucher_type'}, - {width: '38%', content:'tags+remark', css: {'color':'#aaa'}}, + {width: '38%', content:'tags+remark', css: {'color':'#222'}}, { width: '18%', content: function(parent, data) { diff --git a/erpnext/accounts/doctype/purchase_invoice/listview.js b/erpnext/accounts/doctype/purchase_invoice/listview.js index da8d2ac341..f431e0356c 100644 --- a/erpnext/accounts/doctype/purchase_invoice/listview.js +++ b/erpnext/accounts/doctype/purchase_invoice/listview.js @@ -23,7 +23,7 @@ wn.doclistviews['Purchase Invoice'] = wn.views.ListView.extend({ {width: '5%', content: 'avatar'}, {width: '3%', content: 'docstatus'}, {width: '15%', content: 'name'}, - {width: '37%', content: 'tags+supplier_name', css: {color: '#aaa'}}, + {width: '37%', content: 'tags+supplier_name', css: {color: '#222'}}, { width: '18%', content: function(parent, data) { diff --git a/erpnext/accounts/doctype/sales_invoice/listview.js b/erpnext/accounts/doctype/sales_invoice/listview.js index b9f4686212..b792cafee5 100644 --- a/erpnext/accounts/doctype/sales_invoice/listview.js +++ b/erpnext/accounts/doctype/sales_invoice/listview.js @@ -18,7 +18,7 @@ wn.doclistviews['Sales Invoice'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '37%', content:'tags+customer_name', css: {color:'#aaa'}}, + {width: '37%', content:'tags+customer_name', css: {color:'#222'}}, { width: '18%', content: function(parent, data) { diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js index 0561bd73a4..580fd336a9 100644 --- a/erpnext/accounts/page/accounts_browser/accounts_browser.js +++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js @@ -21,7 +21,6 @@ // see ledger pscript['onload_Accounts Browser'] = function(wrapper){ - wn.require('lib/js/wn/ui/tree.js'); wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area')); wrapper.appframe.add_button('New Company', function() { newdoc('Company'); }, 'icon-plus'); wrapper.appframe.add_button('Refresh', function() { @@ -340,7 +339,7 @@ pscript.make_ac_tree = function() { var imgsrc=null; var has_children = true; if(cl[i].group_or_ledger=='Ledger') { - var imgsrc = 'lib/images/icons/page.png'; + var imgsrc = 'images/lib/icons/page.png'; has_children = false; } var t = tree.addNode(n, cl[i].account_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null); @@ -353,7 +352,7 @@ pscript.make_ac_tree = function() { var imgsrc=null; var has_children = true; if(cl[i].group_or_ledger=='Ledger') { - var imgsrc = 'lib/images/icons/page.png'; + var imgsrc = 'images/lib/icons/page.png'; has_children = false; } var t = tree.addNode(n, cl[i].cost_center_name, imgsrc,tree.std_onclick, has_children ? tree.std_onexp : null); @@ -470,7 +469,7 @@ pscript.make_group_area = function(type) { // refresh ref_btn = $a(pscript.group_area, 'div', '', {fontSize: '14px',marginBottom: '8px', marginTop: '24px', fontWeight: 'bold'}); - ref_btn.innerHTML = 'Refresh Tree'; + ref_btn.innerHTML = 'Refresh Tree'; ref_btn.onclick= function() { pscript.cur_node.clear_child_nodes(); pscript.cur_node.expand(); @@ -528,7 +527,7 @@ pscript.make_ledger_area = function() { //General ledger report link pscript.gl_rep = $a(pscript.ledger_area, 'div','', {fontSize: '14px',marginBottom: '8px', fontWeight: 'bold'}); - pscript.gl_rep.innerHTML = 'Open Ledger'; + pscript.gl_rep.innerHTML = 'Open Ledger'; pscript.gl_rep.onclick = function(){ pscript.make_report('gl'); } } diff --git a/erpnext/buying/doctype/purchase_order/listview.js b/erpnext/buying/doctype/purchase_order/listview.js index 528fe60c9d..c2ae4e22a7 100644 --- a/erpnext/buying/doctype/purchase_order/listview.js +++ b/erpnext/buying/doctype/purchase_order/listview.js @@ -16,7 +16,7 @@ wn.doclistviews['Purchase Order'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '35%', content:'tags+supplier_name', css: {color:'#aaa'}}, + {width: '35%', content:'tags+supplier_name', css: {color:'#222'}}, { width: '18%', content: function(parent, data) { diff --git a/erpnext/buying/doctype/purchase_request/listview.js b/erpnext/buying/doctype/purchase_request/listview.js index 5e35bf103c..e45fc4c340 100644 --- a/erpnext/buying/doctype/purchase_request/listview.js +++ b/erpnext/buying/doctype/purchase_request/listview.js @@ -25,7 +25,7 @@ wn.doclistviews['Purchase Request'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '17%', content:'name'}, - {width: '53%', content:'status_html+tags+remark', css: {'color': '#aaa'}}, + {width: '53%', content:'status_html+tags+remark', css: {'color': '#222'}}, {width: '10%', content: 'per_ordered', type:'bar-graph', label:'Ordered'}, {width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js index 615ffc7849..498dbb42e8 100644 --- a/erpnext/buying/doctype/supplier/supplier.js +++ b/erpnext/buying/doctype/supplier/supplier.js @@ -107,7 +107,7 @@ cur_frm.cscript.make_contact = function() { // make purchase order list cur_frm.cscript.make_po_list = function(parent, doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','25%','20%','25%','25%']; lst.colnames = ['Sr.','Id','Status','PO Date','Grand Total']; @@ -122,7 +122,7 @@ cur_frm.cscript.make_po_list = function(parent, doc){ // make purchase receipt list cur_frm.cscript.make_pr_list = function(parent,doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','20%','20%','20%','15%','20%']; lst.colnames = ['Sr.','Id','Status','Receipt Date','% Billed','Grand Total']; @@ -137,7 +137,7 @@ cur_frm.cscript.make_pr_list = function(parent,doc){ // make purchase invoice list cur_frm.cscript.make_pi_list = function(parent,doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','20%','20%','20%','15%','20%']; lst.colnames = ['Sr.','Id','Posting Date','Credit To','Bill Date','Grand Total']; diff --git a/erpnext/home/page/dashboard/dashboard.js b/erpnext/home/page/dashboard/dashboard.js index 072af25465..496c7386a4 100644 --- a/erpnext/home/page/dashboard/dashboard.js +++ b/erpnext/home/page/dashboard/dashboard.js @@ -17,11 +17,11 @@ pscript.onload_dashboard = function() { // load jqplot wn.require('lib/css/lib/jqplot.css'); - wn.require('lib/js/lib/jqplot/jquery.jqplot.min.js'); - wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.barRenderer.js'); - wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.canvasAxisTickRenderer.min.js'); - wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.canvasTextRenderer.min.js'); - wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.categoryAxisRenderer.min.js'); + wn.require('js/lib/jqplot/jquery.jqplot.min.js'); + wn.require('js/lib/jqplot/jqplot-plugins/jqplot.barRenderer.js'); + wn.require('js/lib/jqplot/jqplot-plugins/jqplot.canvasAxisTickRenderer.min.js'); + wn.require('js/lib/jqplot/jqplot-plugins/jqplot.canvasTextRenderer.min.js'); + wn.require('js/lib/jqplot/jqplot-plugins/jqplot.categoryAxisRenderer.min.js'); pscript.dashboard_settings = { diff --git a/erpnext/patches/may_2012/cms.py b/erpnext/patches/may_2012/cms.py new file mode 100644 index 0000000000..7b08754c95 --- /dev/null +++ b/erpnext/patches/may_2012/cms.py @@ -0,0 +1,11 @@ +import webnotes + +def execute(): + from webnotes.model.code import get_obj + + # rewrite pages + get_obj('Website Settings').rewrite_pages() + + ss = get_obj('Style Settings') + ss.validate() + ss.on_update() \ No newline at end of file diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py index 01f4a0efdd..b4d882bf88 100644 --- a/erpnext/patches/patch_list.py +++ b/erpnext/patches/patch_list.py @@ -332,5 +332,10 @@ patch_list = [ 'patch_file': 'renamedt_in_custom_search_criteria', 'description': 'raname dt in custom search criteria' }, + { + 'patch_module': 'patches.may_2012', + 'patch_file': 'cms', + 'description': 'generate html pages' + }, ] diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js index 78743e78da..791c4448f9 100644 --- a/erpnext/selling/doctype/customer/customer.js +++ b/erpnext/selling/doctype/customer/customer.js @@ -154,7 +154,7 @@ cur_frm.fields_dict['lead_name'].get_query = function(doc,dt,dn){ // make quotation list // -------------------- cur_frm.cscript.make_qtn_list = function(parent,doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','20%','20%','20%','20%','15%']; @@ -172,7 +172,7 @@ cur_frm.cscript.make_qtn_list = function(parent,doc){ // make so list // ------------- cur_frm.cscript.make_so_list = function(parent,doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','20%','20%','30%','25%']; @@ -190,7 +190,7 @@ cur_frm.cscript.make_so_list = function(parent,doc){ // make dn list // ------------- cur_frm.cscript.make_dn_list = function(parent,doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','20%','20%','20%','20%','15%']; @@ -208,7 +208,7 @@ cur_frm.cscript.make_dn_list = function(parent,doc){ // make si list // ------------- cur_frm.cscript.make_si_list = function(parent,doc){ - wn.require('lib/js/legacy/widgets/listing.js'); + wn.require('js/listing.js'); var lst = new Listing(); lst.colwidths = ['5%','20%','20%','20%','20%','15%']; diff --git a/erpnext/selling/doctype/lead/listview.js b/erpnext/selling/doctype/lead/listview.js index 4751c64e23..c3efc1e3b4 100644 --- a/erpnext/selling/doctype/lead/listview.js +++ b/erpnext/selling/doctype/lead/listview.js @@ -26,7 +26,7 @@ wn.doclistviews['Lead'] = wn.views.ListView.extend({ columns: [ {width: '20%', content:'name'}, {width: '12%', content:'status_html'}, - {width: '55%', content:'tags+lead_name', css: {color:'#aaa'}}, + {width: '55%', content:'tags+lead_name', css: {color:'#222'}}, {width: '13%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] }) diff --git a/erpnext/selling/doctype/opportunity/listview.js b/erpnext/selling/doctype/opportunity/listview.js index db7f67c46c..3d2ab205b8 100644 --- a/erpnext/selling/doctype/opportunity/listview.js +++ b/erpnext/selling/doctype/opportunity/listview.js @@ -31,7 +31,7 @@ wn.doclistviews['Opportunity'] = wn.views.ListView.extend({ columns: [ {width: '15%', content:'name'}, {width: '18%', content:'status_html'}, - {width: '55%', content:'tags+enquiry_name', css: {color:'#aaa'}}, + {width: '55%', content:'tags+enquiry_name', css: {color:'#222'}}, {width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] }) diff --git a/erpnext/selling/doctype/quotation/listview.js b/erpnext/selling/doctype/quotation/listview.js index 1489df3479..cb8acb6e58 100644 --- a/erpnext/selling/doctype/quotation/listview.js +++ b/erpnext/selling/doctype/quotation/listview.js @@ -25,7 +25,7 @@ wn.doclistviews['Quotation'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '47%', content:'tags+quotation_name', css: {color:'#aaa'}}, + {width: '47%', content:'tags+quotation_name', css: {color:'#222'}}, { width: '18%', content: function(parent, data) { diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js index 32c5d9e6a8..431ac03766 100644 --- a/erpnext/selling/doctype/sales_common/sales_common.js +++ b/erpnext/selling/doctype/sales_common/sales_common.js @@ -169,27 +169,6 @@ cur_frm.cscript.hide_price_list_currency = function(doc, cdt, cdn, callback1) { } } - -//====================opens territory tree page ================== -cur_frm.cscript.TerritoryHelp = function(doc,dt,dn){ - var call_back = function(){ - - var sb_obj = new SalesBrowser(); - sb_obj.set_val('Territory'); - } - loadpage('Sales Browser',call_back); -} - -//====================opens customer group tree page ================== -cur_frm.cscript.CGHelp = function(doc,dt,dn){ - var call_back = function(){ - var sb_obj = new SalesBrowser(); - sb_obj.set_val('Customer Group'); - } - loadpage('Sales Browser',call_back); -} - - // TRIGGERS FOR CALCULATIONS // ===================================================================================================== diff --git a/erpnext/selling/doctype/sales_order/listview.js b/erpnext/selling/doctype/sales_order/listview.js index 3b764d191a..3a910a0900 100644 --- a/erpnext/selling/doctype/sales_order/listview.js +++ b/erpnext/selling/doctype/sales_order/listview.js @@ -16,7 +16,7 @@ wn.doclistviews['Sales Order'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '35%', content:'tags+customer_name', css: {color:'#aaa'}}, + {width: '35%', content:'tags+customer_name', css: {color:'#222'}}, { width: '18%', content: function(parent, data) { diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/erpnext/selling/page/sales_browser/sales_browser.js index 4d5a3dcfa1..66e1d52bc0 100644 --- a/erpnext/selling/page/sales_browser/sales_browser.js +++ b/erpnext/selling/page/sales_browser/sales_browser.js @@ -15,7 +15,6 @@ // along with this program. If not, see . pscript['onload_Sales Browser'] = function(wrapper){ - wn.require('lib/js/wn/ui/tree.js'); wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area')); wrapper.appframe.add_button('Refresh', function() { wrapper.make_tree(); @@ -128,437 +127,4 @@ erpnext.SalesChart = Class.extend({ selected_node: function() { return this.tree.$w.find('.tree-link.selected'); } -}); - -/* -pscript['onshow_Sales Browser'] = function(){ - wn.require('lib/js/legacy/widgets/tree.js'); - - var route = decodeURIComponent(location.hash); - if(route.indexOf('/')!=-1) { - var chart_type = route.split('/')[1]; - new SalesBrowser().set_val(chart_type) - return; - } - - var parent = $i('tr_body'); - parent.innerHTML = 'Please select your chart: ' - var sel = $a(parent,'select'); - add_sel_options(sel, ['Territory', 'Customer Group', 'Item Group', 'Sales Person'], 'Territory'); - var btn = $btn(parent, 'Go', function() { new SalesBrowser().set_val(sel_val(sel)) }, {marginTop:'8px'}); -} - -//================================= SalesBrowser Class ====================================== -SalesBrowser = function(){ - - this.make_body = function(){ - - $i('tr_header').innerHTML = ''; - $i('tr_body').innerHTML = ''; - //make header - var desc = this.sel; - var me = this; - var h = new PageHeader($i('tr_header'),desc); - h.add_button('New '+this.sel, function() { me.set_dialog(1); }, 0, 'ui-icon-plus', 1); - h.add_button('Refresh', function() { me.refresh_tree(); }, 0, 'ui-icon-refresh'); - - var div_body = $a($i('tr_body'),'div'); - var tr_main_grid = make_table(div_body,1,2,'100%',['60%','40%'],{width: "100%", tableLayout: "fixed", borderCollapse: "collapse", border:"0px", padding:"4px 4px 4px 4px"}); - - $y($td(tr_main_grid,0,0),{border: "1px solid #dddddd", padding: "8px", width: "60%"}); - this.tree_area = $a($td(tr_main_grid,0,0),'div','',{minHeight:'400px'}); - - $y($td(tr_main_grid,0,1),{border: "1px solid #DDD"}); - this.detail_area = $a($td(tr_main_grid,0,1),'div'); - - this.make_tree_body(this.tree_area); - this.refresh_tree(); - } - - this.set_val = function(b){ - var me = this; - me.sel = b; - me.make_body(); - } -} - -//================================================================================================================================= -SalesBrowser.prototype.make_tree_body = function(parent){ - - //this.tab2 =make_table(this.wrapper,1,2,'100%',['60%','40%']); - this.make_tree(); - this.make_rgt_sect(); - -} - -//================================================================================================================================= -SalesBrowser.prototype.make_rgt_sect=function(){ - //var d = $a($td(this.tab2,0,1),'div','',{border:'1px solid #000'}); - - this.rgt_tab =make_table(this.detail_area,4,1,'','',{padding:"4px",spacing:"4px"}); - this.dtl = $a($td(this.rgt_tab,0,0),'div'); - this.btn = $a($td(this.rgt_tab,1,0),'div','span'); - this.help = $a($td(this.rgt_tab,2,0),'div'); - this.help.innerHTML = "Note: Explore and click on the tree node to see details." - - this.set_btn(); -} -//================================================================================================================================= -SalesBrowser.prototype.set_btn = function(){ - var me = this; - this.edit_btn = $btn(this.btn,'Edit',function(){ me.set_dialog(2); }); - - this.trash_btn = $btn(this.btn,'Trash',null); - this.trash_btn.onclick = function(){ - var check = confirm("Are you sure you want to trash "+me.cur_node.rec.name+" node?"); - - if(check){ - var arg = [me.cur_node.rec.name, me.sel]; - $c_obj('Sales Browser Control','trash_record',arg.join(','),function(r,rt){ me.refresh_tree();}); - - } - } -} - -//===================================================== -SalesBrowser.prototype.set_dialog = function(f){ - - - if(this.sel == 'Territory') - new MakeDialog('Territory','territory',f,this); //Territory Dialog - if(this.sel == 'Customer Group') - new MakeDialog('Customer Group','customer_group',f,this); //Customer Group Dialog - if(this.sel == 'Item Group') - new MakeDialog('Item Group','item_group',f,this); //Item Group Dialog - if(this.sel == 'Sales Person') - new MakeDialog('Sales Person','sales_person',f,this);//Sales Person Dialog - -} -//=====================================================Make Tree============================================================================ -SalesBrowser.prototype.make_tree = function() { - var me = this; - - this.tree = new Tree(this.tree_area, '100%'); - - //--------------------------------------------------------------------------------------------------------------------------------- - // on click - this.tree.std_onclick = function(node) { - - me.cur_node = node; - if(node.rec.name =='All Customer Groups' || node.rec.name =='All Sales Persons' || node.rec.name =='All Item Groups' || node.rec.name =='All Territories'){ - //$di(me.add_btn); - - $dh(me.edit_btn); - $dh(me.trash_btn); - } - else{ - //$di(me.add_btn); - //if(node.has_children == false) - //$dh(me.add_btn); - - $di(me.edit_btn); - $di(me.trash_btn); - - } - me.make_details(); - - } - //--------------------------------------------------------------------------------------------------------------------------------- - // on expand - this.tree.std_onexp = function(node) { - - if(node.expanded_once)return; - $di(node.loading_div); - - var callback = function(r,rt) { - - $dh(node.loading_div); - var n = me.tree.allnodes[r.message.parent]; - var cl = r.message.cl; - - for(var i=0;i', { expiry_string: expiry_string })); } } - + erpnext.set_about(); + if(wn.control_panel.custom_startup_code) + eval(wn.control_panel.custom_startup_code); } - erpnext.set_about(); - if(wn.control_panel.custom_startup_code) - eval(wn.control_panel.custom_startup_code); - $('body').append('') + $('body').append('') } diff --git a/erpnext/stock/doctype/delivery_note/listview.js b/erpnext/stock/doctype/delivery_note/listview.js index 0cce341fcf..5b960be135 100644 --- a/erpnext/stock/doctype/delivery_note/listview.js +++ b/erpnext/stock/doctype/delivery_note/listview.js @@ -11,7 +11,7 @@ wn.doclistviews['Delivery Note'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '50%', content:'tags+customer_name', css: {color:'#aaa'}}, + {width: '50%', content:'tags+customer_name', css: {color:'#222'}}, {width: '15%', content:'sales_order_no', type:'link', doctype:'Sales Order'}, {width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] diff --git a/erpnext/stock/doctype/item/listview.js b/erpnext/stock/doctype/item/listview.js index 7f0dbc8ae9..d7096f4df3 100644 --- a/erpnext/stock/doctype/item/listview.js +++ b/erpnext/stock/doctype/item/listview.js @@ -17,7 +17,7 @@ wn.doclistviews['Item'] = wn.views.ListView.extend({ columns: [ {width: '5%', content:'avatar'}, {width: '20%', content:'name'}, - {width: '63%', content:'tags+description', css: {'color': '#aaa'}}, + {width: '63%', content:'tags+description', css: {'color': '#222'}}, {width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] }); diff --git a/erpnext/stock/doctype/purchase_receipt/listview.js b/erpnext/stock/doctype/purchase_receipt/listview.js index 4275b54884..ba2d0e3aff 100644 --- a/erpnext/stock/doctype/purchase_receipt/listview.js +++ b/erpnext/stock/doctype/purchase_receipt/listview.js @@ -11,7 +11,7 @@ wn.doclistviews['Purchase Receipt'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '50%', content:'tags+supplier_name', css: {color:'#aaa'}}, + {width: '50%', content:'tags+supplier_name', css: {color:'#222'}}, {width: '15%', content:'purchase_order_no', type:'link', doctype:'Purchase Order Order'}, {width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] diff --git a/erpnext/stock/doctype/stock_entry/listview.js b/erpnext/stock/doctype/stock_entry/listview.js index 4c52e9e7bb..fb79fb99aa 100644 --- a/erpnext/stock/doctype/stock_entry/listview.js +++ b/erpnext/stock/doctype/stock_entry/listview.js @@ -12,7 +12,7 @@ wn.doclistviews['Stock Entry'] = wn.views.ListView.extend({ {width: '5%', content:'avatar'}, {width: '3%', content:'docstatus'}, {width: '15%', content:'name'}, - {width: '18%', content:'tags+purpose', css: {color:'#aaa'}}, + {width: '18%', content:'tags+purpose', css: {color:'#222'}}, {width: '18%', content:'from_warehouse', template: 'From %(from_warehouse)s'}, {width: '18%', content:'to_warehouse', template: 'To %(to_warehouse)s'}, {width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} diff --git a/erpnext/support/doctype/support_ticket/listview.js b/erpnext/support/doctype/support_ticket/listview.js index 944c08fb4f..32f825dccf 100644 --- a/erpnext/support/doctype/support_ticket/listview.js +++ b/erpnext/support/doctype/support_ticket/listview.js @@ -47,7 +47,7 @@ wn.doclistviews['Support Ticket'] = wn.views.ListView.extend({ {width: '3%', content:'check'}, {width: '20%', content:'name'}, {width: '10%', content:'status_html'}, - {width: '53%', content:'tags+description', css: {color:'#aaa'}}, + {width: '53%', content:'tags+description', css: {color:'#222'}}, {width: '14%', content:'modified', css: {'text-align': 'right', 'color':'#777'}} ] diff --git a/erpnext/utilities/page/users/users.js b/erpnext/utilities/page/users/users.js index 757b1a3bda..517c3cf0ce 100644 --- a/erpnext/utilities/page/users/users.js +++ b/erpnext/utilities/page/users/users.js @@ -84,7 +84,7 @@ $.extend(wn.pages.users, { if(data.file_list) { data.imgsrc = 'files/' + data.file_list.split('\n')[0].split(',')[1]; } else { - data.imgsrc = 'lib/images/ui/no_img_' + (data.gender=='Female' ? 'f' : 'm') + '.gif'; + data.imgsrc = 'images/lib/ui/no_img_' + (data.gender=='Female' ? 'f' : 'm') + '.gif'; } data.fullname = wn.user_info(data.name).fullname; data.delete_html = ''; diff --git a/erpnext/website/doctype/blog/blog.py b/erpnext/website/doctype/blog/blog.py index 37f77a5c95..919b830399 100644 --- a/erpnext/website/doctype/blog/blog.py +++ b/erpnext/website/doctype/blog/blog.py @@ -46,8 +46,9 @@ class DocType(): import markdown2 import os from webnotes.utils import global_date_format, get_fullname + from webnotes.model.code import get_obj - self.doc.content_html = markdown2.markdown(self.doc.content or '') + self.doc.content_html = unicode(markdown2.markdown(self.doc.content or '')) self.doc.full_name = get_fullname(self.doc.owner) self.doc.updated = global_date_format(self.doc.modified) @@ -56,14 +57,16 @@ class DocType(): with open(os.path.join(os.path.dirname(__file__), 'blog_page.js'), 'r') as f: p.script = Template(f.read()).render(doc=self.doc) - + + p.web_page = 'Yes' p.save() + get_obj(doc=p).write_cms_page() website.utils.add_guest_access_to_page(p.name) self.doc.page_name = p.name # cleanup - for f in ['content_html', 'full_name', 'updated']: + for f in ['full_name', 'updated', 'content_html']: if f in self.doc.fields: del self.doc.fields[f] diff --git a/erpnext/website/doctype/blog/blog_page.js b/erpnext/website/doctype/blog/blog_page.js index dddc6e04f8..2dba743c0d 100644 --- a/erpnext/website/doctype/blog/blog_page.js +++ b/erpnext/website/doctype/blog/blog_page.js @@ -27,7 +27,7 @@ pscript['onload_{{ doc.name }}'] = function(wrapper) { render_row: function(parent, data) { console.log(data); if(data.content && data.content.length==100) data.content += '...'; - parent.innerHTML = repl('%(title)s\ + parent.innerHTML = repl('%(title)s\
%(content)s

', data); }, page_length: 5, diff --git a/erpnext/website/doctype/style_settings/custom_template.css b/erpnext/website/doctype/style_settings/custom_template.css index 6fe8ce5872..0398325818 100644 --- a/erpnext/website/doctype/style_settings/custom_template.css +++ b/erpnext/website/doctype/style_settings/custom_template.css @@ -1,6 +1,6 @@ #body_div { {% if doc.background_image %} - background: url("files/{{ doc.background_image }}") repeat; + background: url("../files/{{ doc.background_image }}") repeat; {% elif doc.background_color %} background-color: #{{ doc.background_color }}; background-image: none; diff --git a/erpnext/website/doctype/style_settings/style_settings.js b/erpnext/website/doctype/style_settings/style_settings.js index 0d0bf9e6ec..64fa49655f 100644 --- a/erpnext/website/doctype/style_settings/style_settings.js +++ b/erpnext/website/doctype/style_settings/style_settings.js @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -wn.require('lib/js/lib/jscolor/jscolor.js'); +wn.require('js/lib/jscolor/jscolor.js'); cur_frm.cscript.onload_post_render = function() { cur_frm.fields_dict.background_color.input.className = 'color'; diff --git a/erpnext/website/doctype/style_settings/style_settings.py b/erpnext/website/doctype/style_settings/style_settings.py index f47a427bae..8bae403781 100644 --- a/erpnext/website/doctype/style_settings/style_settings.py +++ b/erpnext/website/doctype/style_settings/style_settings.py @@ -21,8 +21,9 @@ class DocType: def validate(self): """make custom css""" from jinja2 import Template + import os - with open('erpnext/website/doctype/style_settings/custom_template.css', 'r') as f: + with open(os.path.join(os.path.dirname(__file__), 'custom_template.css'), 'r') as f: temp = Template(f.read()) if not self.doc.font_size: @@ -38,5 +39,9 @@ class DocType: clear_cache('Guest') del self.doc.fields['small_font_size'] - + + def on_update(self): + """rebuild pages""" + from webnotes.cms.make import make_web_core + make_web_core() \ No newline at end of file diff --git a/erpnext/website/doctype/top_bar_item/top_bar_item.txt b/erpnext/website/doctype/top_bar_item/top_bar_item.txt index 632425eb19..bd74d84630 100644 --- a/erpnext/website/doctype/top_bar_item/top_bar_item.txt +++ b/erpnext/website/doctype/top_bar_item/top_bar_item.txt @@ -3,9 +3,9 @@ # These values are common in all dictionaries { - 'creation': '2012-03-27 14:36:48', + 'creation': '2012-04-02 16:02:43', 'docstatus': 0, - 'modified': '2012-03-27 14:36:48', + 'modified': '2012-05-07 15:21:00', 'modified_by': u'Administrator', 'owner': u'Administrator' }, @@ -19,7 +19,7 @@ 'name': '__common__', 'section_style': u'Simple', 'show_in_menu': 0, - 'version': 4 + 'version': 1 }, # These values are common for all DocField @@ -43,16 +43,8 @@ 'doctype': u'DocField', 'fieldname': u'label', 'fieldtype': u'Data', - 'label': u'Label' - }, - - # DocField - { - 'doctype': u'DocField', - 'fieldname': u'custom_page', - 'fieldtype': u'Link', - 'label': u'Page', - 'options': u'Page' + 'label': u'Label', + 'width': u'120px' }, # DocField @@ -60,7 +52,17 @@ 'doctype': u'DocField', 'fieldname': u'url', 'fieldtype': u'Data', - 'label': u'URL' + 'label': u'URL', + 'width': u'200px' + }, + + # DocField + { + 'doctype': u'DocField', + 'fieldname': u'target', + 'fieldtype': u'Select', + 'label': u'Target', + 'options': u'\ntarget = "_blank"' }, # DocField diff --git a/erpnext/website/doctype/web_page/template.html b/erpnext/website/doctype/web_page/template.html index b66aded5f3..c6d4b407f0 100644 --- a/erpnext/website/doctype/web_page/template.html +++ b/erpnext/website/doctype/web_page/template.html @@ -2,7 +2,7 @@
- {% if doc.layout.startswith('Two column') %} + {% if doc.layout and doc.layout.startswith('Two column') %}
{% else %}
@@ -14,7 +14,7 @@
- {% if doc.layout.startswith('Two column') %} + {% if doc.layout and doc.layout.startswith('Two column') %}
{{ doc.side_section_html }} {% if doc.see_also %} diff --git a/erpnext/website/doctype/web_page/web_page.py b/erpnext/website/doctype/web_page/web_page.py index 7f50d53d1c..a56f7e451e 100644 --- a/erpnext/website/doctype/web_page/web_page.py +++ b/erpnext/website/doctype/web_page/web_page.py @@ -27,6 +27,10 @@ class DocType: def validate(self): """make page for this product""" + from jinja2 import Template + from webnotes.utils import global_date_format + from webnotes.model.code import get_obj + import os # we need the name for the templates if not self.doc.name: @@ -36,11 +40,8 @@ class DocType: webnotes.conn.sql("""delete from tabPage where name=%s""", self.doc.page_name) p = website.utils.add_page(self.doc.name) + self.doc.page_name = p.name - from jinja2 import Template - from webnotes.utils import global_date_format - import os - self.doc.updated = global_date_format(self.doc.modified) website.utils.markdown(self.doc, ['head_section','main_section', 'side_section']) @@ -48,6 +49,7 @@ class DocType: p.content = Template(f.read()).render(doc=self.doc) p.title = self.doc.title + p.web_page = 'Yes' if self.doc.insert_code: p.script = self.doc.javascript @@ -56,6 +58,7 @@ class DocType: p.style = self.doc.css p.save() + get_obj(doc=p).write_cms_page() website.utils.add_guest_access_to_page(p.name) self.cleanup_temp() diff --git a/erpnext/website/doctype/website_settings/website_settings.py b/erpnext/website/doctype/website_settings/website_settings.py index 53bf6c862f..76c4307e9e 100644 --- a/erpnext/website/doctype/website_settings/website_settings.py +++ b/erpnext/website/doctype/website_settings/website_settings.py @@ -25,13 +25,39 @@ class DocType: * clear cache """ self.set_home_page() - self.validate_domain_list() + + + def on_update(self): + self.rewrite_pages() from webnotes.session_cache import clear_cache clear_cache('Guest') + + def rewrite_pages(self): + """rewrite all web pages""" + import webnotes + from webnotes.model.doclist import DocList + from webnotes.model.code import get_obj + + # rewrite all web pages + for name in webnotes.conn.sql("""select name from `tabWeb Page` where docstatus=0"""): + DocList('Web Page', name[0]).save() - + # rewrite all blog pages + for name in webnotes.conn.sql("""select name from `tabBlog` where docstatus=0 + and ifnull(published,0)=1"""): + DocList('Blog', name[0]).save() + + from webnotes.cms.make import make_web_core + make_web_core() + + get_obj('Page', 'blog').write_cms_page(force=True) + get_obj('Page', 'Login Page').write_cms_page(force=True) + + webnotes.msgprint('Rebuilt all blogs and pages') + + def set_home_page(self): import webnotes diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js index 24af3e95c7..88cbe8b035 100644 --- a/erpnext/website/js/topbar.js +++ b/erpnext/website/js/topbar.js @@ -38,7 +38,7 @@ erpnext.navbar.Navbar = Class.extend({ [brand]\ \ - \ + \ \ @@ -75,7 +75,7 @@ erpnext.navbar.Navbar = Class.extend({ .click(function() { return false; }); - $parent_li.append(''); + $parent_li.append(''); } erpnext.header_link_settings(item); $parent_li.find('.dropdown-menu').append(repl('
  • \ @@ -126,5 +126,5 @@ erpnext.header_link_settings = function(item) { $(document).bind('startup', function() { erpnext.footer = new erpnext.Footer(); - erpnext.navbar.navbar = new erpnext.navbar.Navbar(); + //erpnext.navbar.navbar = new erpnext.navbar.Navbar(); }) diff --git a/erpnext/website/page/blog/blog.js b/erpnext/website/page/blog/blog.js index 184424b203..356529f096 100644 --- a/erpnext/website/page/blog/blog.js +++ b/erpnext/website/page/blog/blog.js @@ -33,7 +33,7 @@ pscript.onload_blog = function(wrapper) { parent.innerHTML = repl('

    %(title)s

    \

    By %(first_name)s%(last_name)s, %(date)s

    \

    %(content)s

    \ - Read Full Text
    ', data); + Read Full Text
    ', data); }, page_length: 10 }); diff --git a/erpnext/website/utils.py b/erpnext/website/utils.py index 971b0bcf17..ae6bff4f7e 100644 --- a/erpnext/website/utils.py +++ b/erpnext/website/utils.py @@ -40,10 +40,8 @@ def markdown(doc, fields): def page_name(title): """make page name from title, and check that there is no duplicate""" - import re - name = title.lower() - name = re.sub('[~!@#$%^&*()<>,."\']', '', name) - return '-'.join(name.split()[:4]) + import webnotes.cms + return webnotes.cms.page_name(title) def add_page(title): """add a custom page with title""" @@ -59,7 +57,7 @@ def add_page(title): p.standard = 'No' return p - + def add_guest_access_to_page(page): """add Guest in Page Role""" if not webnotes.conn.sql("""select parent from `tabPage Role` @@ -68,3 +66,81 @@ def add_guest_access_to_page(page): d.parent = page d.role = 'Guest' d.save() + +def get_header(page_name): + """get page header""" + + from webnotes.model.doc import Document + from jinja2 import Template + + def get_item(l, label): + for i in l: + if i['label']==label: + return i + + top_bar_items = webnotes.conn.sql("""select * from `tabTop Bar Item` + where parent='Website Settings' and parentfield='top_bar_items' + order by idx asc""", as_dict=1) + + # build child items + for t in top_bar_items: + if t.get('parent_label'): + pi = get_item(t['parent_label']) + if not pi['child_items']: + pi['child_items'] = [] + pi['child_items'].append(t) + + website_settings = Document('Website Settings', 'Website Settings') + + return Template("""""").render(top_bar_items = top_bar_items, + brand=website_settings.brand_html or webnotes.get_default('company') or 'ERPNext') + +def get_footer(page_name): + """get page footer""" + + from webnotes.model.doc import Document + from jinja2 import Template + + website_settings = Document('Website Settings', 'Website Settings') + + website_settings.footer_items = webnotes.conn.sql("""select * from `tabTop Bar Item` + where parent='Website Settings' and parentfield='footer_items' + order by idx asc""", as_dict=1) + + return Template("""
    \ \ @@ -316,7 +317,7 @@ if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_list:funct /* * lib/js/wn/ui/filters.js */ -wn.ui.FilterList=Class.extend({init:function(opts){wn.require('lib/js/legacy/widgets/form/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},show_filters:function(){this.$w.find('.show_filters').toggle();if(!this.filters.length) +wn.ui.FilterList=Class.extend({init:function(opts){wn.require('js/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},show_filters:function(){this.$w.find('.show_filters').toggle();if(!this.filters.length) this.add_filter();},add_filter:function(fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,fieldname:fieldname,condition:condition,value:value}));if(fieldname){this.$w.find('.show_filters').toggle(true);}},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.field) values.push(f.get_value());}) return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.field)fl.push(f);}) @@ -366,88 +367,13 @@ wn.views.add_list_btn=function(parent,doctype){$(parent).append(repl('\ %(doctype)s List\ ',{doctype:doctype}));} -/* - * lib/js/wn/views/doclistview.js - */ -wn.provide('wn.views.doclistview');wn.provide('wn.doclistviews');wn.views.doclistview.show=function(doctype){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){wn.model.with_doctype(route[1],function(r){if(r&&r['403']){return;} -new wn.views.DocListView(route[1]);});}}} -wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=doctype;this.label=get_doctype_label(doctype);this.label=(this.label.toLowerCase().substr(-4)=='list')?this.label:(this.label+' List');this.make_page();this.setup();},make_page:function(){var me=this;var page_name=wn.get_route_str();var page=wn.container.add_page(page_name);wn.container.change_to(page_name);this.$page=$(page);this.$page.html(repl('
    \ -
    \ -
    \ -

    %(label)s

    \ -
    \ -
    Loading...
    \ -
    \ -
    \ -
    \ -

    Show

    \ -
    Drafts
    \ -
    Submitted
    \ -
    Cancelled
    \ -
    \ -
    \ -
    \ -
    ',{label:this.label}));this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1 -else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);} -this.listview.parent=this;},init_list:function(){this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.$page.find('.wnlist-area'),start:0,page_length:20,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:true,no_result_message:this.make_no_result(),columns:this.listview.fields});this.run();},make_no_result:function(){return repl('

    No %(doctype_label)s found

    \ - %(description)s\ -
    \ -

    \ -

    ',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype,description:wn.markdown(locals.DocType[this.doctype].description||'')});},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[]}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove')}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length) -return;if(!confirm('This is PERMANENT action and you cannot undo. Continue?')){return;} -me.set_working(true);wn.call({method:'webnotes.widgets.doclistview.delete_items',args:{items:dl,doctype:me.doctype},callback:function(){me.set_working(false);me.refresh();}})},init_stats:function(){var me=this -wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('

    Tags

    \ -
    No records tagged.

    \ - To add a tag, open the document and click on \ - "Add Tag" on the sidebar
    ');} -return;} -var label=wn.meta.docfield_map[this.doctype][field]?wn.meta.docfield_map[this.doctype][field].label:field;if(label=='_user_tags')label='Tags';var $w=$('
    \ -

    '+label+'

    \ -
    \ -
    \ -
    ');stat=stat.sort(function(a,b){return b[1]-a[1]});var sum=0;$.each(stat,function(i,v){sum=sum+v[1];}) -$.each(stat,function(i,v){me.render_stat_item(i,v,sum,field).appendTo($w.find('.stat-grid'));});$w.appendTo(this.$page.find('.layout-side-section'));},render_stat_item:function(i,v,max,field){var me=this;var args={} -args.label=v[0];args.width=flt(v[1])/max*100;args.count=v[1];args.field=field;$item=$(repl('
    \ -
    \ -
    \ - \ - %(label)s \ - (%(count)s)
    \ -
    ',args));this.setup_stat_item_click($item);return $item;},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{filter.set_values(fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{this.filter_list.add_filter(fieldname,'=',label);}} -this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags'];this.show_hide_check_column();},columns:[{width:'3%',content:'check'},{width:'4%',content:'avatar'},{width:'3%',content:'docstatus',css:{"text-align":"center"}},{width:'35%',content:'name'},{width:'40%',content:'tags',css:{'color':'#aaa'}},{width:'15%',content:'modified',css:{'text-align':'right','color':'#777'}}],render_column:function(data,parent,opts){var me=this;if(opts.css){$.each(opts.css,function(k,v){$(parent).css(k,v)});} -if(opts.content.indexOf&&opts.content.indexOf('+')!=-1){$.map(opts.content.split('+'),function(v){me.render_column(data,parent,{content:v});});return;} -if(typeof opts.content=='function'){opts.content(parent,data);} -else if(opts.content=='name'){$(parent).append(repl('%(name)s',data));} -else if(opts.content=='avatar'){$(parent).append(repl('',data));} -else if(opts.content=='check'){$(parent).append('');$(parent).find('input').data('name',data.name);} -else if(opts.content=='docstatus'){$(parent).append(repl('',data));} -else if(opts.content=='tags'){this.add_user_tags(parent,data);} -else if(opts.content=='modified'){$(parent).append(data.when);} -else if(opts.type=='bar-graph'){args={percent:data[opts.content],fully_delivered:(data[opts.content]>99?'bar-complete':''),label:opts.label} -$(parent).append(repl('\ - \ - ',args));} -else if(opts.type=='link'&&opts.doctype){$(parent).append(repl(''+data[opts.content]+'',data));} -else if(opts.template){$(parent).append(repl(opts.template,data));} -else if(data[opts.content]){$(parent).append(' '+data[opts.content]);}},render:function(row,data){var me=this;this.prepare_data(data);rowhtml='';$.each(this.columns,function(i,v){rowhtml+=repl('',v);});var tr=$(row).html(''+rowhtml+'
    ').find('tr').get(0);$.each(this.columns,function(i,v){me.render_column(data,tr.cells[i],v);});},prepare_data:function(data){data.fullname=wn.user_info(data.owner).fullname;data.avatar=wn.user_info(data.owner).image;data.when=dateutil.str_to_user(data.modified).split(' ')[0];var diff=dateutil.get_diff(dateutil.get_today(),data.modified.split(' ')[0]);if(diff==0){data.when='Today'} -if(diff==1){data.when='Yesterday'} -if(diff==2){data.when='2 days ago'} -if(data.docstatus==0||data.docstatus==null){data.docstatus_icon='icon-pencil';data.docstatus_title='Editable';}else if(data.docstatus==1){data.docstatus_icon='icon-lock';data.docstatus_title='Submitted';}else if(data.docstatus==2){data.docstatus_icon='icon-remove';data.docstatus_title='Cancelled';} -for(key in data){if(data[key]==null){data[key]='';}}},add_user_tags:function(parent,data){var me=this;if(data._user_tags){$.each(data._user_tags.split(','),function(i,t){if(t){$('' -+strip(t)+'').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo(parent);}});}},show_hide_check_column:function(){if(!this.doclistview.can_delete){this.columns=$.map(this.columns,function(v,i){if(v.content!='check')return v});}}}) /* * lib/js/wn/views/pageview.js */ -wn.provide('wn.views.pageview');wn.views.pageview={pages:{},with_page:function(name,callback){if(!locals.Page[name]){wn.call({method:'webnotes.widgets.page.getpage',args:{'name':name},callback:callback});}else{callback();}},show:function(name){if(!name)name=wn.boot.home_page;wn.views.pageview.with_page(name,function(r){if(r&&r.exc){if(!r['403'])wn.container.change_to('404');}else if(!wn.pages[name]){wn.views.pageview.pages[name]=new wn.views.Page(name);} +wn.provide('wn.views.pageview');wn.views.pageview={with_page:function(name,callback){if((locals.Page&&locals.Page[name])||name==window.page_name){callback();}else{wn.call({method:'webnotes.widgets.page.getpage',args:{'name':name},callback:callback});}},show:function(name){if(!name)name=(wn.boot?wn.boot.home_page:window.page_name);wn.views.pageview.with_page(name,function(r){if(r&&r.exc){if(!r['403'])wn.container.change_to('404');}else if(!wn.pages[name]){new wn.views.Page(name);} wn.container.change_to(name);});}} -wn.views.Page=Class.extend({init:function(name){this.name=name;var me=this;this.pagedoc=locals.Page[this.name];this.wrapper=wn.container.add_page(this.name);this.wrapper.label=this.pagedoc.title||this.pagedoc.name;this.wrapper.page_name=this.pagedoc.name;this.wrapper.innerHTML=this.pagedoc.content;wn.dom.eval(this.pagedoc.__script||this.pagedoc.script||'');wn.dom.set_style(this.pagedoc.style||'');this.trigger('onload');$(this.wrapper).bind('show',function(){cur_frm=null;me.trigger('onshow');me.trigger('refresh');});},trigger:function(eventname){var me=this;try{if(pscript[eventname+'_'+this.name]){pscript[eventname+'_'+this.name](me.wrapper);}else if(me.wrapper[eventname]){me.wrapper[eventname](me.wrapper);}}catch(e){console.log(e);}}}) +wn.views.Page=Class.extend({init:function(name,wrapper){this.name=name;var me=this;if(name==window.page_name){this.wrapper=document.getElementById('page-'+name);this.wrapper.label=document.title||window.page_name;this.wrapper.page_name=window.page_name;wn.pages[window.page_name]=this.wrapper;}else{this.pagedoc=locals.Page[this.name];this.wrapper=wn.container.add_page(this.name);this.wrapper.label=this.pagedoc.title||this.pagedoc.name;this.wrapper.page_name=this.pagedoc.name;this.wrapper.innerHTML=this.pagedoc.content;wn.dom.eval(this.pagedoc.__script||this.pagedoc.script||'');wn.dom.set_style(this.pagedoc.style||'');} +this.trigger('onload');$(this.wrapper).bind('show',function(){cur_frm=null;me.trigger('onshow');me.trigger('refresh');});},trigger:function(eventname){var me=this;try{if(pscript[eventname+'_'+this.name]){pscript[eventname+'_'+this.name](me.wrapper);}else if(me.wrapper[eventname]){me.wrapper[eventname](me.wrapper);}}catch(e){console.log(e);}}}) wn.views.make_404=function(){var page=wn.container.add_page('404');$(page).html('
    \

    Not Found


    \

    Sorry we were unable to find what you were looking for.

    \ @@ -457,57 +383,13 @@ wn.views.make_404=function(){var page=wn.container.add_page('404');$(page).html(

    Sorry you are not permitted to view this page.

    \

    Go back to home

    \
    ').toggle(false);}; -/* - * lib/js/wn/views/formview.js - */ -wn.provide('wn.views.formview');wn.views.formview={show:function(dt,dn){if(wn.model.new_names[dn]) -dn=wn.model.new_names[dn];wn.model.with_doctype(dt,function(){wn.model.with_doc(dt,dn,function(dn,r){if(r&&r['403'])return;if(!(locals[dt]&&locals[dt][dn])){wn.container.change_to('404');return;} -if(!wn.views.formview[dt]){wn.views.formview[dt]=wn.container.add_page('Form - '+dt);wn.views.formview[dt].frm=new _f.Frm(dt,wn.views.formview[dt]);} -wn.container.change_to('Form - '+dt);wn.views.formview[dt].frm.refresh(dn);});})},create:function(dt){var new_name=LocalDB.create(dt);wn.set_route('Form',dt,new_name);}} -/* - * lib/js/wn/views/reportview.js - */ -wn.views.reportview={show:function(dt,rep_name){wn.require('lib/js/legacy/report.compressed.js');dt=get_label_doctype(dt);if(!_r.rb_con){_r.rb_con=new _r.ReportContainer();} -_r.rb_con.set_dt(dt,function(rb){if(rep_name){var t=rb.current_loaded;rb.load_criteria(rep_name);if((rb.dt)&&(!rb.dt.has_data()||rb.current_loaded!=t)){rb.dt.run();}} -if(!rb.forbidden){wn.container.change_to('Report Builder');}});}} -wn.views.reportview2={show:function(dt){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){new wn.views.ReportView(route[1],route[2]);}else{new wn.views.ReportHome();}}}} -wn.views.ReportView=wn.ui.Listing.extend({init:function(doctype,docname){var me=this;this.page_name=wn.get_route_str();this.import_slickgrid();this.doctype=doctype;this.docname=docname;this.tab_name='`tab'+doctype+'`';this.make_page();wn.model.with_doctype(doctype,function(){me.setup();if(docname){wn.model.with_doc('Report',docname,function(r){me.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.run();});}else{me.run();}});},import_slickgrid:function(){wn.require('lib/js/lib/slickgrid/slick.grid.css');wn.require('lib/js/lib/slickgrid/slick-default-theme.css');wn.require('lib/js/lib/slickgrid/jquery.event.drag.min.js');wn.require('lib/js/lib/slickgrid/slick.core.js');wn.require('lib/js/lib/slickgrid/slick.grid.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},set_init_columns:function(){var columns=[['name'],['owner']];$.each(wn.meta.docfield_list[this.doctype],function(i,df){if(df.in_filter&&df.fieldname!='naming_series'){columns.push([df.fieldname]);}});this.columns=columns;},setup:function(){var me=this;wn.views.breadcrumbs($('').appendTo(this.page.appframe.$titlebar),locals.DocType[this.doctype].module);this.make({title:'Report: '+(this.docname?(this.doctype+' - '+this.docname):this.doctype),appframe:this.page.appframe,method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:$(this.page).find('.layout-main'),start:0,page_length:20,show_filters:true,new_doctype:this.doctype,allow_delete:true,});this.make_column_picker();this.make_sorter();this.make_export();this.set_init_columns();this.make_save();},set_columns_and_filters:function(opts){var me=this;if(opts.columns)this.columns=opts.columns;if(opts.filters)$.each(opts.filters,function(i,f){me.filter_list.add_filter(f[1],f[2],f[3]);});if(opts.sort_by)this.sort_by_select.val(opts.sort_by);if(opts.sort_order)this.sort_order_select.val(opts.sort_order);if(opts.sort_by_next)this.sort_by_next_select.val(opts.sort_by_next);if(opts.sort_order_next)this.sort_order_next_select.val(opts.sort_order_next);},get_args:function(){var me=this;return{doctype:this.doctype,fields:$.map(this.columns,function(v){return me.get_full_column_name(v)}),order_by:this.get_order_by(),filters:this.filter_list.get_filters(),docstatus:['0','1','2']}},get_order_by:function(){var order_by=this.get_full_column_name([this.sort_by_select.val()]) -+' '+this.sort_order_select.val() -if(this.sort_by_next_select.val()){order_by+=', '+this.get_full_column_name([this.sort_by_next_select.val()]) -+' '+this.sort_order_next_select.val()} -return order_by;},get_full_column_name:function(v){return(v[1]?('`tab'+v[1]+'`'):this.tab_name)+'.'+v[0];},build_columns:function(){var me=this;return $.map(this.columns,function(c){return{id:c[0],field:c[0],name:(wn.meta.docfield_map[c[1]||me.doctype][c[0]]?wn.meta.docfield_map[c[1]||me.doctype][c[0]].label:toTitle(c[0])),width:120}});},render_list:function(){var columns=[{id:'_idx',field:'_idx',name:'Sr.',width:40}].concat(this.build_columns());$.each(this.data,function(i,v){v._idx=i+1;});var options={enableCellNavigation:true,enableColumnReorder:false};var grid=new Slick.Grid(this.$w.find('.result-list').css('border','1px solid grey').css('height','500px').get(0),this.data,columns,options);},make_column_picker:function(){var me=this;this.column_picker=new wn.ui.ColumnPicker(this);this.page.appframe.add_button('Pick Columns',function(){me.column_picker.show(me.columns);},'icon-th-list');},make_sorter:function(){var me=this;this.sort_dialog=new wn.ui.Dialog({title:'Sorting Preferences'});$(this.sort_dialog.body).html('

    Sort By

    \ -
    \ -
    \ -

    Then By (optional)

    \ -
    \ -

    \ -
    ');this.sort_by_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column'),this.doctype).$select;this.sort_by_select.css('width','60%');this.sort_order_select=$(this.sort_dialog.body).find('.sort-order');this.sort_by_next_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column-1'),this.doctype,null,true).$select;this.sort_by_next_select.css('width','60%');this.sort_order_next_select=$(this.sort_dialog.body).find('.sort-order-1');this.sort_by_select.val('modified');this.sort_order_select.val('desc');this.sort_by_next_select.val('');this.sort_order_next_select.val('desc');this.page.appframe.add_button('Sort By',function(){me.sort_dialog.show();},'icon-arrow-down');$(this.sort_dialog.body).find('.btn-info').click(function(){me.sort_dialog.hide();me.run();});},make_export:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Export',function(){var args=me.get_args();args.cmd='webnotes.widgets.doclistview.export_query' -open_url_post(wn.request.url,args);},'icon-download-alt');}},make_save:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Save',function(){if(me.docname){var name=me.docname}else{var name=prompt('Select Report Name');if(!name){return;}} -wn.call({method:'webnotes.widgets.doclistview.save_report',args:{name:name,doctype:me.doctype,json:JSON.stringify({filters:me.filter_list.get_filters(),columns:me.columns,sort_by:me.sort_by_select.val(),sort_order:me.sort_order_select.val(),sort_by_next:me.sort_by_next_select.val(),sort_order_next:me.sort_order_next_select.val()})},callback:function(r){if(r.exc)return;if(r.message!=me.docname) -wn.set_route('Report2',me.doctype,r.message);}});},'icon-upload');}}});wn.ui.ColumnPicker=Class.extend({init:function(list){this.list=list;this.doctype=list.doctype;this.selects={};},show:function(columns){wn.require('lib/js/lib/jquery/jquery.ui.sortable.js');var me=this;if(!this.dialog){this.dialog=new wn.ui.Dialog({title:'Pick Columns',width:'400'});} -$(this.dialog.body).html('
    Drag to sort columns
    \ -
    \ -
    \ -
    \ -
    ');$.each(columns,function(i,c){me.add_column(c);});$(this.dialog.body).find('.column-list').sortable();$(this.dialog.body).find('.btn-add').click(function(){me.add_column('name');});$(this.dialog.body).find('.btn-info').click(function(){me.dialog.hide();me.list.columns=[];$(me.dialog.body).find('select').each(function(){me.list.columns.push([$(this).val(),$(this).find('option:selected').attr('table')]);}) -me.list.run();});this.dialog.show();},add_column:function(c){var w=$('
    \ - ×\ -
    ').appendTo($(this.dialog.body).find('.column-list'));var fieldselect=new wn.ui.FieldSelect(w,this.doctype);fieldselect.$select.css('width','90%').val(c);w.find('.close').click(function(){$(this).parent().remove();});}}); /* * lib/js/wn/request.js */ wn.provide('wn.request');wn.request.url='index.cgi';wn.request.prepare=function(opts){if(opts.btn)$(opts.btn).set_working();if(opts.show_spinner)set_loading();if(opts.freeze)freeze();if(!opts.args.cmd){console.log(opts) throw"Incomplete Request";}} -wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){msgprint('Session Expired. Logging you out');if(!wn.app.logged_out) -wn.app.logout();return;} +wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot&&wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){if(!wn.app.logged_out){msgprint('Session Expired. Logging you out');wn.app.logout();} +return;} if(r.server_messages)msgprint(r.server_messages) if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');} if(r.docs)LocalDB.sync(r.docs);} @@ -521,7 +403,7 @@ wn.request.call({args:args,success:opts.callback,error:opts.error,btn:opts.btn,f * lib/js/core.js */ if(!console){var console={log:function(txt){}}} -wn.versions.check();$(document).bind('ready',function(){wn.provide('wn.app');$.extend(wn.app,new wn.Application());}); +$(document).ready(function(){wn.versions.check();wn.provide('wn.app');$.extend(wn.app,new wn.Application());}); /* * lib/js/legacy/globals.js @@ -548,7 +430,7 @@ function is_null(v){if(v==null){return 1}else if(v==0){if((v+'').length>=1)retur function $s(ele,v,ftype,fopt){if(v==null)v='';if(ftype=='Text'||ftype=='Small Text'){ele.innerHTML=v?v.replace(/\n/g,'
    '):'';}else if(ftype=='Date'){v=dateutil.str_to_user(v);if(v==null)v='' ele.innerHTML=v;}else if(ftype=='Link'&&fopt){ele.innerHTML='';doc_link(ele,fopt,v);}else if(ftype=='Currency'){ele.style.textAlign='right';if(is_null(v)) ele.innerHTML='';else -ele.innerHTML=fmt_money(v);}else if(ftype=='Int'){ele.style.textAlign='right';ele.innerHTML=v;}else if(ftype=='Check'){if(v)ele.innerHTML='';else ele.innerHTML='';}else{ele.innerHTML=v;}} +ele.innerHTML=fmt_money(v);}else if(ftype=='Int'){ele.style.textAlign='right';ele.innerHTML=v;}else if(ftype=='Check'){if(v)ele.innerHTML='';else ele.innerHTML='';}else{ele.innerHTML=v;}} function clean_smart_quotes(s){if(s){s=s.replace(/\u2018/g,"'");s=s.replace(/\u2019/g,"'");s=s.replace(/\u201c/g,'"');s=s.replace(/\u201d/g,'"');s=s.replace(/\u2013/g,'-');s=s.replace(/\u2014/g,'--');} return s;} function copy_dict(d){var n={};for(var k in d)n[k]=d[k];return n;} @@ -629,8 +511,8 @@ var time_to_ampm=wn.datetime.time_to_ampm;var time_to_hhmm=wn.datetime.time_to_h * lib/js/legacy/utils/dom.js */ wn.tinymce={add_simple:function(ele,height){if(ele.myid){tinyMCE.execCommand('mceAddControl',true,ele.myid);return;} -ele.myid=wn.dom.set_unique_id(ele);$(ele).tinymce({script_url:'lib/js/lib/tiny_mce_33/tiny_mce.js',height:height?height:'200px',theme:"advanced",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,outdent,indent,link,unlink,forecolor,backcolor,code,",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_path:false,theme_advanced_resizing:false});},remove:function(ele){tinyMCE.execCommand('mceRemoveControl',true,ele.myid);},get_value:function(ele){return tinymce.get(ele.myid).getContent();}} -wn.ele={link:function(args){var span=$a(args.parent,'span','link_type',args.style);span.loading_img=$a(args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});span.loading_img.src='lib/images/ui/button-load.gif';span.innerHTML=args.label;span.user_onclick=args.onclick;span.onclick=function(){if(!this.disabled)this.user_onclick(this);} +ele.myid=wn.dom.set_unique_id(ele);$(ele).tinymce({script_url:'js/lib/tiny_mce_33/tiny_mce.js',height:height?height:'200px',theme:"advanced",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,outdent,indent,link,unlink,forecolor,backcolor,code,",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_path:false,theme_advanced_resizing:false});},remove:function(ele){tinyMCE.execCommand('mceRemoveControl',true,ele.myid);},get_value:function(ele){return tinymce.get(ele.myid).getContent();}} +wn.ele={link:function(args){var span=$a(args.parent,'span','link_type',args.style);span.loading_img=$a(args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});span.loading_img.src='images/lib/ui/button-load.gif';span.innerHTML=args.label;span.user_onclick=args.onclick;span.onclick=function(){if(!this.disabled)this.user_onclick(this);} span.set_working=function(){this.disabled=1;$di(this.loading_img);} span.done_working=function(){this.disabled=0;$dh(this.loading_img);} return span;}} @@ -735,7 +617,7 @@ if(!msg_dialog){msg_dialog=new Dialog(500,200,"Message");msg_dialog.make_body([[ msg_dialog.onhide=function(){msg_dialog.msg_area.innerHTML='';$dh(msg_dialog.msg_icon);if(msg_dialog.custom_onhide)msg_dialog.custom_onhide();} $y(msg_dialog.rows['Msg'],{fontSize:'14px',lineHeight:'1.5em',padding:'16px'}) var t=make_table(msg_dialog.rows['Msg'],1,2,'100%',['20px','250px'],{padding:'2px',verticalAlign:'Top'});msg_dialog.msg_area=$td(t,0,1);msg_dialog.msg_icon=$a($td(t,0,0),'img');} -if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='lib/images/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='lib/images/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='lib/images/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);} +if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='images/lib/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='images/lib/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='images/lib/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);} m.innerHTML=replace_newlines(msg);if(m.offsetHeight>200){$y(m,{height:'200px',width:'400px',overflow:'auto'})} msg_dialog.custom_onhide=callback;} var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('
    ').appendTo('body');} @@ -767,7 +649,7 @@ Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0); this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});} if(this.with_label){this.label_span=$a(this.label_area,'span','small') -this.label_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 4px'});$dh(this.label_icon);this.label_icon.src='lib/images/icons/error.gif';this.label_icon.title='Mandatory value needs to be entered';this.suggest_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 0px'});$dh(this.suggest_icon);this.suggest_icon.src='lib/images/icons/bullet_arrow_down.png';this.suggest_icon.title='With suggestions';}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'}) +this.label_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 4px'});$dh(this.label_icon);this.label_icon.src='images/lib/icons/error.gif';this.label_icon.title='Mandatory value needs to be entered';this.suggest_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 0px'});$dh(this.suggest_icon);this.suggest_icon.src='images/lib/icons/bullet_arrow_down.png';this.suggest_icon.title='With suggestions';}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'}) $dh(this.label_area);} if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));} if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();} @@ -890,7 +772,7 @@ CurrencyField.prototype.validate=function(v){if(v==null||v=='') return 0;return flt(v,2);} CurrencyField.prototype.set_disp=function(val){var v=fmt_money(val);this.set_disp_html(v);} CurrencyField.prototype.onmake_input=function(){if(!this.input)return;this.input.onfocus=function(){if(flt(this.value)==0)this.select();}} -function CheckField(){}CheckField.prototype=new Field();CheckField.prototype.validate=function(v){var v=parseInt(v);if(isNaN(v))return 0;return v;};CheckField.prototype.onmake=function(){this.checkimg=$a(this.disp_area,'div');var img=$a(this.checkimg,'img');img.src='lib/images/ui/tick.gif';$dh(this.checkimg);} +function CheckField(){}CheckField.prototype=new Field();CheckField.prototype.validate=function(v){var v=parseInt(v);if(isNaN(v))return 0;return v;};CheckField.prototype.onmake=function(){this.checkimg=$a(this.disp_area,'div');var img=$a(this.checkimg,'img');img.src='images/lib/ui/tick.gif';$dh(this.checkimg);} CheckField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,'checkbox');$y(this.input,{width:"16px",border:'0px',margin:'2px'});$(this.input).click(function(){me.set(this.checked?1:0);me.run_trigger();}) this.input.set_input=function(v){v=parseInt(v);if(isNaN(v))v=0;if(v)me.input.checked=true;else me.input.checked=false;} this.get_value=function(){return this.input.checked?1:0;}} @@ -992,7 +874,7 @@ opts.parent.appframe=new wn.ui.AppFrame($(opts.parent).find('.layout-appframe')) /* * lib/js/wn/ui/dialog.js */ -wn.widgets.FieldGroup=function(){this.first_button=false;this.make_fields=function(body,fl){if(!window.make_field){wn.require('lib/css/legacy/fields.css');wn.require('lib/js/legacy/widgets/form/fields.js');wn.require('lib/js/wn/ui/button.js');} +wn.widgets.FieldGroup=function(){this.first_button=false;this.make_fields=function(body,fl){if(!window.make_field){wn.require('css/fields.css');wn.require('js/fields.js');} $y(this.body,{padding:'11px'});this.fields_dict={};for(var i=0;i').appendTo(parent).click(function(){var val=$(this).attr('data-name');me.dialog.hide();if(me.callback) me.callback(val);else wn.set_route('Form',me.doctype,val);});}});this.list.filter_list.add_filter('name','like');this.list.run();}}) +/* + * lib/js/wn/ui/tree.js + */ +wn.ui.Tree=Class.extend({init:function(args){$.extend(this,args);this.nodes={};this.$w=$('
    ').appendTo(this.parent);this.rootnode=new wn.ui.TreeNode({tree:this,parent:this.$w,label:this.label,expandable:true});this.set_style();},set_style:function(){wn.dom.set_style("\ + .tree li { list-style: none; }\ + .tree ul { margin-top: 2px; }\ + .tree-link { cursor: pointer; }\ + ")}}) +wn.ui.TreeNode=Class.extend({init:function(args){var me=this;$.extend(this,args);this.loaded=false;this.expanded=false;this.tree.nodes[this.label]=this;this.$a=$('').click(function(){if(me.expandable&&me.tree.method&&!me.loaded){me.load()}else{me.selectnode();} +if(me.tree.click)me.tree.click(this);}).bind('reload',function(){me.reload();}).data('label',this.label).appendTo(this.parent);if(this.expandable){this.$a.append(' '+this.label);}else{this.$a.append(' '+this.label);}},selectnode:function(){if(this.$ul){this.$ul.toggle();this.$a.find('i').removeClass();if(this.$ul.css('display').toLowerCase()=='block'){this.$a.find('i').addClass('icon-folder-open');}else{this.$a.find('i').addClass('icon-folder-close');}} +this.tree.$w.find('a.selected').removeClass('selected');this.$a.toggleClass('selected');this.expanded=!this.expanded;},reload:function(){if(this.expanded){this.$a.click();} +if(this.$ul){this.$ul.empty();} +this.load();},addnode:function(label,expandable){if(!this.$ul){this.$ul=$('
      ').toggle(false).appendTo(this.parent);} +return new wn.ui.TreeNode({tree:this.tree,parent:$('
    • ').appendTo(this.$ul),label:label,expandable:expandable});},load:function(){var me=this;args=$.extend(this.tree.args,{parent:this.label});$(me.$a).set_working();wn.call({method:this.tree.method,args:args,callback:function(r){$(me.$a).done_working();$.each(r.message,function(i,v){node=me.addnode(v.value||v,v.expandable);node.$a.data('node-data',v);});me.loaded=true;me.selectnode();}})}}) +/* + * lib/js/wn/misc/about.js + */ +wn.provide('wn.ui.misc');wn.ui.misc.about=function(){if(!wn.ui.misc.about_dialog){var d=new wn.widgets.Dialog({title:'About wnframework'}) +$(d.body).html(repl("
      Application Name: %(name)s

      \ +

      Version: %(version)s

      \ +

      License: %(license)s

      \ +

      Source Code: %(source)s

      \ +

      Publisher: %(publisher)s

      \ +

      Copyright: %(copyright)s

      ",wn.app));wn.ui.misc.about_dialog=d;} +wn.ui.misc.about_dialog.show();} +/* + * lib/js/wn/views/doclistview.js + */ +wn.provide('wn.views.doclistview');wn.provide('wn.doclistviews');wn.views.doclistview.show=function(doctype){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){wn.model.with_doctype(route[1],function(r){if(r&&r['403']){return;} +new wn.views.DocListView(route[1]);});}}} +wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=doctype;this.label=get_doctype_label(doctype);this.label=(this.label.toLowerCase().substr(-4)=='list')?this.label:(this.label+' List');this.make_page();this.setup();},make_page:function(){var me=this;var page_name=wn.get_route_str();var page=wn.container.add_page(page_name);wn.container.change_to(page_name);this.$page=$(page);this.$page.html(repl('
      \ +
      \ +
      \ +

      %(label)s

      \ +
      \ +
      Loading...
      \ +
      \ +
      \ +
      \ +

      Show

      \ +
      Drafts
      \ +
      Submitted
      \ +
      Cancelled
      \ +
      \ +
      \ +
      \ +
      ',{label:this.label}));this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1 +else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);} +this.listview.parent=this;},init_list:function(){this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.$page.find('.wnlist-area'),start:0,page_length:20,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:true,no_result_message:this.make_no_result(),columns:this.listview.fields});this.run();},make_no_result:function(){return repl('

      No %(doctype_label)s found

      \ + %(description)s\ +
      \ +

      \ +

      ',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype,description:wn.markdown(locals.DocType[this.doctype].description||'')});},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[]}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove')}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length) +return;if(!confirm('This is PERMANENT action and you cannot undo. Continue?')){return;} +me.set_working(true);wn.call({method:'webnotes.widgets.doclistview.delete_items',args:{items:dl,doctype:me.doctype},callback:function(){me.set_working(false);me.refresh();}})},init_stats:function(){var me=this +wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('

      Tags

      \ +
      No records tagged.

      \ + To add a tag, open the document and click on \ + "Add Tag" on the sidebar
      ');} +return;} +var label=wn.meta.docfield_map[this.doctype][field]?wn.meta.docfield_map[this.doctype][field].label:field;if(label=='_user_tags')label='Tags';var $w=$('
      \ +

      '+label+'

      \ +
      \ +
      \ +
      ');stat=stat.sort(function(a,b){return b[1]-a[1]});var sum=0;$.each(stat,function(i,v){sum=sum+v[1];}) +$.each(stat,function(i,v){me.render_stat_item(i,v,sum,field).appendTo($w.find('.stat-grid'));});$w.appendTo(this.$page.find('.layout-side-section'));},render_stat_item:function(i,v,max,field){var me=this;var args={} +args.label=v[0];args.width=flt(v[1])/max*100;args.count=v[1];args.field=field;$item=$(repl('
      \ +
      \ +
      \ + \ + %(label)s \ + (%(count)s)
      \ +
      ',args));this.setup_stat_item_click($item);return $item;},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{filter.set_values(fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{this.filter_list.add_filter(fieldname,'=',label);}} +this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags'];this.show_hide_check_column();},columns:[{width:'3%',content:'check'},{width:'4%',content:'avatar'},{width:'3%',content:'docstatus',css:{"text-align":"center"}},{width:'35%',content:'name'},{width:'40%',content:'tags',css:{'color':'#aaa'}},{width:'15%',content:'modified',css:{'text-align':'right','color':'#222'}}],render_column:function(data,parent,opts){var me=this;if(opts.css){$.each(opts.css,function(k,v){$(parent).css(k,v)});} +if(opts.content.indexOf&&opts.content.indexOf('+')!=-1){$.map(opts.content.split('+'),function(v){me.render_column(data,parent,{content:v});});return;} +if(typeof opts.content=='function'){opts.content(parent,data);} +else if(opts.content=='name'){$(parent).append(repl('%(name)s',data));} +else if(opts.content=='avatar'){$(parent).append(repl('',data));} +else if(opts.content=='check'){$(parent).append('');$(parent).find('input').data('name',data.name);} +else if(opts.content=='docstatus'){$(parent).append(repl('',data));} +else if(opts.content=='tags'){this.add_user_tags(parent,data);} +else if(opts.content=='modified'){$(parent).append(data.when);} +else if(opts.type=='bar-graph'){args={percent:data[opts.content],fully_delivered:(data[opts.content]>99?'bar-complete':''),label:opts.label} +$(parent).append(repl('\ + \ + ',args));} +else if(opts.type=='link'&&opts.doctype){$(parent).append(repl(''+data[opts.content]+'',data));} +else if(opts.template){$(parent).append(repl(opts.template,data));} +else if(data[opts.content]){$(parent).append(' '+data[opts.content]);}},render:function(row,data){var me=this;this.prepare_data(data);rowhtml='';$.each(this.columns,function(i,v){rowhtml+=repl('',v);});var tr=$(row).html(''+rowhtml+'
      ').find('tr').get(0);$.each(this.columns,function(i,v){me.render_column(data,tr.cells[i],v);});},prepare_data:function(data){data.fullname=wn.user_info(data.owner).fullname;data.avatar=wn.user_info(data.owner).image;data.when=dateutil.str_to_user(data.modified).split(' ')[0];var diff=dateutil.get_diff(dateutil.get_today(),data.modified.split(' ')[0]);if(diff==0){data.when=dateutil.comment_when(data.modified);} +if(diff==1){data.when='Yesterday'} +if(diff==2){data.when='2 days ago'} +if(data.docstatus==0||data.docstatus==null){data.docstatus_icon='icon-pencil';data.docstatus_title='Editable';}else if(data.docstatus==1){data.docstatus_icon='icon-lock';data.docstatus_title='Submitted';}else if(data.docstatus==2){data.docstatus_icon='icon-remove';data.docstatus_title='Cancelled';} +for(key in data){if(data[key]==null){data[key]='';}}},add_user_tags:function(parent,data){var me=this;if(data._user_tags){$.each(data._user_tags.split(','),function(i,t){if(t){$('' ++strip(t)+'').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo(parent);}});}},show_hide_check_column:function(){if(!this.doclistview.can_delete){this.columns=$.map(this.columns,function(v,i){if(v.content!='check')return v});}}}) +/* + * lib/js/wn/views/formview.js + */ +wn.provide('wn.views.formview');wn.views.formview={show:function(dt,dn){if(wn.model.new_names[dn]) +dn=wn.model.new_names[dn];wn.model.with_doctype(dt,function(){wn.model.with_doc(dt,dn,function(dn,r){if(r&&r['403'])return;if(!(locals[dt]&&locals[dt][dn])){wn.container.change_to('404');return;} +if(!wn.views.formview[dt]){wn.views.formview[dt]=wn.container.add_page('Form - '+dt);wn.views.formview[dt].frm=new _f.Frm(dt,wn.views.formview[dt]);} +wn.container.change_to('Form - '+dt);wn.views.formview[dt].frm.refresh(dn);});})},create:function(dt){var new_name=LocalDB.create(dt);wn.set_route('Form',dt,new_name);}} +/* + * lib/js/wn/views/reportview.js + */ +wn.views.reportview={show:function(dt,rep_name){wn.require('js/report-legacy.js');dt=get_label_doctype(dt);if(!_r.rb_con){_r.rb_con=new _r.ReportContainer();} +_r.rb_con.set_dt(dt,function(rb){if(rep_name){var t=rb.current_loaded;rb.load_criteria(rep_name);if((rb.dt)&&(!rb.dt.has_data()||rb.current_loaded!=t)){rb.dt.run();}} +if(!rb.forbidden){wn.container.change_to('Report Builder');}});}} +wn.views.reportview2={show:function(dt){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){new wn.views.ReportView(route[1],route[2]);}else{new wn.views.ReportHome();}}}} +wn.views.ReportView=wn.ui.Listing.extend({init:function(doctype,docname){var me=this;this.page_name=wn.get_route_str();this.import_slickgrid();this.doctype=doctype;this.docname=docname;this.tab_name='`tab'+doctype+'`';this.make_page();wn.model.with_doctype(doctype,function(){me.setup();if(docname){wn.model.with_doc('Report',docname,function(r){me.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.run();});}else{me.run();}});},import_slickgrid:function(){wn.require('js/lib/slickgrid/slick.grid.css');wn.require('js/lib/slickgrid/slick-default-theme.css');wn.require('js/lib/slickgrid/jquery.event.drag.min.js');wn.require('js/lib/slickgrid/slick.core.js');wn.require('js/lib/slickgrid/slick.grid.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},set_init_columns:function(){var columns=[['name'],['owner']];$.each(wn.meta.docfield_list[this.doctype],function(i,df){if(df.in_filter&&df.fieldname!='naming_series'){columns.push([df.fieldname]);}});this.columns=columns;},setup:function(){var me=this;wn.views.breadcrumbs($('').appendTo(this.page.appframe.$titlebar),locals.DocType[this.doctype].module);this.make({title:'Report: '+(this.docname?(this.doctype+' - '+this.docname):this.doctype),appframe:this.page.appframe,method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:$(this.page).find('.layout-main'),start:0,page_length:20,show_filters:true,new_doctype:this.doctype,allow_delete:true,});this.make_column_picker();this.make_sorter();this.make_export();this.set_init_columns();this.make_save();},set_columns_and_filters:function(opts){var me=this;if(opts.columns)this.columns=opts.columns;if(opts.filters)$.each(opts.filters,function(i,f){me.filter_list.add_filter(f[1],f[2],f[3]);});if(opts.sort_by)this.sort_by_select.val(opts.sort_by);if(opts.sort_order)this.sort_order_select.val(opts.sort_order);if(opts.sort_by_next)this.sort_by_next_select.val(opts.sort_by_next);if(opts.sort_order_next)this.sort_order_next_select.val(opts.sort_order_next);},get_args:function(){var me=this;return{doctype:this.doctype,fields:$.map(this.columns,function(v){return me.get_full_column_name(v)}),order_by:this.get_order_by(),filters:this.filter_list.get_filters(),docstatus:['0','1','2']}},get_order_by:function(){var order_by=this.get_full_column_name([this.sort_by_select.val()]) ++' '+this.sort_order_select.val() +if(this.sort_by_next_select.val()){order_by+=', '+this.get_full_column_name([this.sort_by_next_select.val()]) ++' '+this.sort_order_next_select.val()} +return order_by;},get_full_column_name:function(v){return(v[1]?('`tab'+v[1]+'`'):this.tab_name)+'.'+v[0];},build_columns:function(){var me=this;return $.map(this.columns,function(c){var docfield=wn.meta.docfield_map[c[1]||me.doctype][c[0]];coldef={id:c[0],field:c[0],docfield:docfield,name:(docfield?docfield.label:toTitle(c[0])),width:(docfield?cint(docfield.width):120)||120} +console.log(docfield&&docfield.width);if(c[0]=='name'){coldef.formatter=function(row,cell,value,columnDef,dataContext){return repl("%(name)s",{doctype:me.doctype,name:value});}}else if(docfield&&docfield.fieldtype=='Link'){coldef.formatter=function(row,cell,value,columnDef,dataContext){if(value){return repl("%(name)s",{doctype:columnDef.docfield.options,name:value});}else{return'';}}} +return coldef;});},render_list:function(){var me=this;var columns=[{id:'_idx',field:'_idx',name:'Sr.',width:40}].concat(this.build_columns());$.each(this.data,function(i,v){v._idx=i+1;});var options={enableCellNavigation:true,enableColumnReorder:false};var grid=new Slick.Grid(this.$w.find('.result-list').css('border','1px solid grey').css('height','500px').get(0),this.data,columns,options);},make_column_picker:function(){var me=this;this.column_picker=new wn.ui.ColumnPicker(this);this.page.appframe.add_button('Pick Columns',function(){me.column_picker.show(me.columns);},'icon-th-list');},make_sorter:function(){var me=this;this.sort_dialog=new wn.ui.Dialog({title:'Sorting Preferences'});$(this.sort_dialog.body).html('

      Sort By

      \ +
      \ +
      \ +

      Then By (optional)

      \ +
      \ +

      \ +
      ');this.sort_by_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column'),this.doctype).$select;this.sort_by_select.css('width','60%');this.sort_order_select=$(this.sort_dialog.body).find('.sort-order');this.sort_by_next_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column-1'),this.doctype,null,true).$select;this.sort_by_next_select.css('width','60%');this.sort_order_next_select=$(this.sort_dialog.body).find('.sort-order-1');this.sort_by_select.val('modified');this.sort_order_select.val('desc');this.sort_by_next_select.val('');this.sort_order_next_select.val('desc');this.page.appframe.add_button('Sort By',function(){me.sort_dialog.show();},'icon-arrow-down');$(this.sort_dialog.body).find('.btn-info').click(function(){me.sort_dialog.hide();me.run();});},make_export:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Export',function(){var args=me.get_args();args.cmd='webnotes.widgets.doclistview.export_query' +open_url_post(wn.request.url,args);},'icon-download-alt');}},make_save:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Save',function(){if(me.docname){var name=me.docname}else{var name=prompt('Select Report Name');if(!name){return;}} +wn.call({method:'webnotes.widgets.doclistview.save_report',args:{name:name,doctype:me.doctype,json:JSON.stringify({filters:me.filter_list.get_filters(),columns:me.columns,sort_by:me.sort_by_select.val(),sort_order:me.sort_order_select.val(),sort_by_next:me.sort_by_next_select.val(),sort_order_next:me.sort_order_next_select.val()})},callback:function(r){if(r.exc)return;if(r.message!=me.docname) +wn.set_route('Report2',me.doctype,r.message);}});},'icon-upload');}}});wn.ui.ColumnPicker=Class.extend({init:function(list){this.list=list;this.doctype=list.doctype;this.selects={};},show:function(columns){wn.require('js/lib/jquery/jquery.ui.sortable.js');var me=this;if(!this.dialog){this.dialog=new wn.ui.Dialog({title:'Pick Columns',width:'400'});} +$(this.dialog.body).html('
      Drag to sort columns
      \ +
      \ +
      \ +
      \ +
      ');$.each(columns,function(i,c){me.add_column(c);});$(this.dialog.body).find('.column-list').sortable();$(this.dialog.body).find('.btn-add').click(function(){me.add_column('name');});$(this.dialog.body).find('.btn-info').click(function(){me.dialog.hide();me.list.columns=[];$(me.dialog.body).find('select').each(function(){me.list.columns.push([$(this).val(),$(this).find('option:selected').attr('table')]);}) +me.list.run();});this.dialog.show();},add_column:function(c){var w=$('
      \ + ×\ +
      ').appendTo($(this.dialog.body).find('.column-list'));var fieldselect=new wn.ui.FieldSelect(w,this.doctype);fieldselect.$select.css('width','90%').val(c);w.find('.close').click(function(){$(this).parent().remove();});}}); /* * lib/js/legacy/widgets/dialog.js */ @@ -1405,7 +1434,7 @@ wn.ui.toolbar.Toolbar=Class.extend({init:function(){this.make();this.make_home() \ \ - \ + \
    ',{expiry_string:expiry_string}));}} erpnext.set_about();if(wn.control_panel.custom_startup_code) -eval(wn.control_panel.custom_startup_code);$('body').append('')} +eval(wn.control_panel.custom_startup_code);} +$('body').append('')} erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;} if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}} show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);}else{clearInterval(wn.updates.id);}} @@ -2306,4 +2333,9 @@ hide_field(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort]);else if(cu {for(grid_field in pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort]) cur_frm.fields_dict[fort].grid.set_column_disp(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort][grid_field],false);} else -msgprint('Grid "'+fort+'" does not exists');}}}}}) \ No newline at end of file +msgprint('Grid "'+fort+'" does not exists');}}}}}) +/* + * conf.js + */ +wn.provide('erpnext');erpnext.set_about=function(){wn.provide('wn.app');$.extend(wn.app,{name:'ERPNext',license:'GNU/GPL - Usage Condition: All "erpnext" branding must be kept as it is',source:'https://github.com/webnotes/erpnext',publisher:'Web Notes Technologies Pvt Ltd, Mumbai',copyright:'© Web Notes Technologies Pvt Ltd',version:'2'});} +wn.modules_path='erpnext';$(document).bind('toolbar_setup',function(){$('.brand').html((wn.boot.website_settings.brand_html||'erpnext')+' ').css('max-width','200px').css('overflow','hidden').hover(function(){$(this).find('.icon-home').addClass('navbar-icon-home-hover');},function(){$(this).find('.icon-home').removeClass('navbar-icon-home-hover');});}); \ No newline at end of file diff --git a/js/all-web.js b/public/js/all-web.js similarity index 76% rename from js/all-web.js rename to public/js/all-web.js index 41a208d97f..cfc2f5548d 100644 --- a/js/all-web.js +++ b/public/js/all-web.js @@ -24,9 +24,7 @@ wn.provide('wn.settings');wn.provide('wn.ui'); /* * lib/js/wn/versions.js */ -wn.versions={check:function(){if(window.localStorage){if(window._version_number==-1||parseInt(localStorage._version_number)!=parseInt(window._version_number)){var localversion=localStorage._version_number;localStorage.clear();console.log("Cache cleared - version: "+localversion -+' to '+_version_number)} -localStorage.setItem('_version_number',window._version_number);}}} +wn.versions={check:function(){if(window.localStorage){var localversion=localStorage._version_number;localStorage.clear();}}} /* * lib/js/wn/assets.js */ @@ -66,12 +64,13 @@ return repl('
    %(letter)s
    ',args);}} -wn.get_cookie=function(c){var t=""+document.cookie;var ind=t.indexOf(c);if(ind==-1||c=="")return"";var ind1=t.indexOf(';',ind);if(ind1==-1)ind1=t.length;return unescape(t.substring(ind+c.length+1,ind1));} +wn.get_cookie=function(c){var clist=(document.cookie+'').split(';');var cookies={};for(var i=0;i').html(label).attr('value',value).appendTo(this);} $(this).val(options_list[0].value||options_list[0]);} -$.fn.set_working=function(){var ele=this.get(0);if(ele.loading_img){$(ele.loading_img).toggle(true);}else{ele.disabled=1;ele.loading_img=$('').insertAfter(ele);}} $.fn.done_working=function(){var ele=this.get(0);ele.disabled=0;if(ele.loading_img){$(ele.loading_img).toggle(false);};}})(jQuery); /* @@ -88,18 +87,19 @@ wn.meta.docfield_list[df.parent].push(df);}}); /* * lib/js/wn/misc/tools.js */ -wn.markdown=function(txt){if(!wn.md2html){wn.require('lib/js/lib/showdown.js');wn.md2html=new Showdown.converter();} +wn.markdown=function(txt){if(!wn.md2html){wn.require('js/lib/showdown.js');wn.md2html=new Showdown.converter();} return wn.md2html.makeHtml(txt);} /* * lib/js/wn/misc/user.js */ -wn.user_info=function(uid){var def={'fullname':uid,'image':'lib/images/ui/no_img_m.gif'} +wn.user_info=function(uid){var def={'fullname':uid,'image':'images/lib/ui/no_img_m.gif'} if(!wn.boot.user_info)return def if(!wn.boot.user_info[uid])return def if(!wn.boot.user_info[uid].fullname) wn.boot.user_info[uid].fullname=uid;if(!wn.boot.user_info[uid].image) wn.boot.user_info[uid].image=def.image;return wn.boot.user_info[uid];} -wn.provide('wn.user');$.extend(wn.user,{name:wn.boot.profile.name,has_role:function(rl){if(typeof rl=='string')rl=[rl];for(var i in rl){if(wn.boot.profile.roles.indexOf(rl[i])!=-1) +wn.provide('wn.user');$.extend(wn.user,{name:(wn.boot?wn.boot.profile.name:'Guest'),has_role:function(rl){if(typeof rl=='string') +rl=[rl];for(var i in rl){if((wn.boot?wn.boot.profile.roles:['Guest']).indexOf(rl[i])!=-1) return true;}},is_report_manager:function(){return wn.user.has_role(['Administrator','System Manager','Report Manager']);}}) wn.session_alive=true;$(document).bind('mousemove',function(){wn.session_alive=true;if(wn.session_alive_timeout) clearTimeout(wn.session_alive_timeout);wn.session_alive_timeout=setTimeout('wn.session_alive=false;',30000);}) @@ -138,7 +138,8 @@ wn.re_route={} wn.route=function(){if(wn.re_route[window.location.hash]){window.location.hash=wn.re_route[window.location.hash];} wn._cur_route=window.location.hash;route=wn.get_route();switch(route[0]){case"List":wn.views.doclistview.show(route[1]);break;case"Form":if(route.length>3){route[2]=route.splice(2).join('/');} wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;case"Report2":wn.views.reportview2.show();break;default:wn.views.pageview.show(route[0]);}} -wn.get_route=function(route){return $.map(wn.get_route_str(route).split('/'),function(r){return decodeURIComponent(r);});} +wn.get_route=function(route){if(!wn.boot){return[window.page_name];} +return $.map(wn.get_route_str(route).split('/'),function(r){return decodeURIComponent(r);});} wn.get_route_str=function(route){if(!route) route=window.location.hash;if(route.substr(0,1)=='#')route=route.substr(1);if(route.substr(0,1)=='!')route=route.substr(1);return route;} wn.set_route=function(){route=$.map(arguments,function(a){return encodeURIComponent(a)}).join('/');window.location.hash=route;wn.app.set_favicon();} @@ -167,7 +168,7 @@ this.prepare_opts();$.extend(this,this.opts);$(this.parent).html(repl('\
    \
    \
    \ -
    \
    \ \ @@ -203,7 +204,7 @@ if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_list:funct /* * lib/js/wn/ui/filters.js */ -wn.ui.FilterList=Class.extend({init:function(opts){wn.require('lib/js/legacy/widgets/form/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},show_filters:function(){this.$w.find('.show_filters').toggle();if(!this.filters.length) +wn.ui.FilterList=Class.extend({init:function(opts){wn.require('js/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});},show_filters:function(){this.$w.find('.show_filters').toggle();if(!this.filters.length) this.add_filter();},add_filter:function(fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,fieldname:fieldname,condition:condition,value:value}));if(fieldname){this.$w.find('.show_filters').toggle(true);}},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.field) values.push(f.get_value());}) return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.field)fl.push(f);}) @@ -253,88 +254,13 @@ wn.views.add_list_btn=function(parent,doctype){$(parent).append(repl('\ %(doctype)s List\ ',{doctype:doctype}));} -/* - * lib/js/wn/views/doclistview.js - */ -wn.provide('wn.views.doclistview');wn.provide('wn.doclistviews');wn.views.doclistview.show=function(doctype){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){wn.model.with_doctype(route[1],function(r){if(r&&r['403']){return;} -new wn.views.DocListView(route[1]);});}}} -wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=doctype;this.label=get_doctype_label(doctype);this.label=(this.label.toLowerCase().substr(-4)=='list')?this.label:(this.label+' List');this.make_page();this.setup();},make_page:function(){var me=this;var page_name=wn.get_route_str();var page=wn.container.add_page(page_name);wn.container.change_to(page_name);this.$page=$(page);this.$page.html(repl('
    \ -
    \ -
    \ -

    %(label)s

    \ -
    \ -
    Loading...
    \ -
    \ -
    \ -
    \ -

    Show

    \ -
    Drafts
    \ -
    Submitted
    \ -
    Cancelled
    \ -
    \ -
    \ -
    \ -
    ',{label:this.label}));this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs($('').appendTo(this.appframe.$titlebar),locals.DocType[this.doctype].module);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1 -else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);} -this.listview.parent=this;},init_list:function(){this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.$page.find('.wnlist-area'),start:0,page_length:20,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:true,no_result_message:this.make_no_result(),columns:this.listview.fields});this.run();},make_no_result:function(){return repl('

    No %(doctype_label)s found

    \ - %(description)s\ -
    \ -

    \ -

    ',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype,description:wn.markdown(locals.DocType[this.doctype].description||'')});},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[]}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove')}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length) -return;if(!confirm('This is PERMANENT action and you cannot undo. Continue?')){return;} -me.set_working(true);wn.call({method:'webnotes.widgets.doclistview.delete_items',args:{items:dl,doctype:me.doctype},callback:function(){me.set_working(false);me.refresh();}})},init_stats:function(){var me=this -wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('

    Tags

    \ -
    No records tagged.

    \ - To add a tag, open the document and click on \ - "Add Tag" on the sidebar
    ');} -return;} -var label=wn.meta.docfield_map[this.doctype][field]?wn.meta.docfield_map[this.doctype][field].label:field;if(label=='_user_tags')label='Tags';var $w=$('
    \ -

    '+label+'

    \ -
    \ -
    \ -
    ');stat=stat.sort(function(a,b){return b[1]-a[1]});var sum=0;$.each(stat,function(i,v){sum=sum+v[1];}) -$.each(stat,function(i,v){me.render_stat_item(i,v,sum,field).appendTo($w.find('.stat-grid'));});$w.appendTo(this.$page.find('.layout-side-section'));},render_stat_item:function(i,v,max,field){var me=this;var args={} -args.label=v[0];args.width=flt(v[1])/max*100;args.count=v[1];args.field=field;$item=$(repl('
    \ -
    \ -
    \ - \ - %(label)s \ - (%(count)s)
    \ -
    ',args));this.setup_stat_item_click($item);return $item;},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{filter.set_values(fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{this.filter_list.add_filter(fieldname,'=',label);}} -this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags'];this.show_hide_check_column();},columns:[{width:'3%',content:'check'},{width:'4%',content:'avatar'},{width:'3%',content:'docstatus',css:{"text-align":"center"}},{width:'35%',content:'name'},{width:'40%',content:'tags',css:{'color':'#aaa'}},{width:'15%',content:'modified',css:{'text-align':'right','color':'#777'}}],render_column:function(data,parent,opts){var me=this;if(opts.css){$.each(opts.css,function(k,v){$(parent).css(k,v)});} -if(opts.content.indexOf&&opts.content.indexOf('+')!=-1){$.map(opts.content.split('+'),function(v){me.render_column(data,parent,{content:v});});return;} -if(typeof opts.content=='function'){opts.content(parent,data);} -else if(opts.content=='name'){$(parent).append(repl('%(name)s',data));} -else if(opts.content=='avatar'){$(parent).append(repl('',data));} -else if(opts.content=='check'){$(parent).append('');$(parent).find('input').data('name',data.name);} -else if(opts.content=='docstatus'){$(parent).append(repl('',data));} -else if(opts.content=='tags'){this.add_user_tags(parent,data);} -else if(opts.content=='modified'){$(parent).append(data.when);} -else if(opts.type=='bar-graph'){args={percent:data[opts.content],fully_delivered:(data[opts.content]>99?'bar-complete':''),label:opts.label} -$(parent).append(repl('\ - \ - ',args));} -else if(opts.type=='link'&&opts.doctype){$(parent).append(repl(''+data[opts.content]+'',data));} -else if(opts.template){$(parent).append(repl(opts.template,data));} -else if(data[opts.content]){$(parent).append(' '+data[opts.content]);}},render:function(row,data){var me=this;this.prepare_data(data);rowhtml='';$.each(this.columns,function(i,v){rowhtml+=repl('',v);});var tr=$(row).html(''+rowhtml+'
    ').find('tr').get(0);$.each(this.columns,function(i,v){me.render_column(data,tr.cells[i],v);});},prepare_data:function(data){data.fullname=wn.user_info(data.owner).fullname;data.avatar=wn.user_info(data.owner).image;data.when=dateutil.str_to_user(data.modified).split(' ')[0];var diff=dateutil.get_diff(dateutil.get_today(),data.modified.split(' ')[0]);if(diff==0){data.when='Today'} -if(diff==1){data.when='Yesterday'} -if(diff==2){data.when='2 days ago'} -if(data.docstatus==0||data.docstatus==null){data.docstatus_icon='icon-pencil';data.docstatus_title='Editable';}else if(data.docstatus==1){data.docstatus_icon='icon-lock';data.docstatus_title='Submitted';}else if(data.docstatus==2){data.docstatus_icon='icon-remove';data.docstatus_title='Cancelled';} -for(key in data){if(data[key]==null){data[key]='';}}},add_user_tags:function(parent,data){var me=this;if(data._user_tags){$.each(data._user_tags.split(','),function(i,t){if(t){$('' -+strip(t)+'').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo(parent);}});}},show_hide_check_column:function(){if(!this.doclistview.can_delete){this.columns=$.map(this.columns,function(v,i){if(v.content!='check')return v});}}}) /* * lib/js/wn/views/pageview.js */ -wn.provide('wn.views.pageview');wn.views.pageview={pages:{},with_page:function(name,callback){if(!locals.Page[name]){wn.call({method:'webnotes.widgets.page.getpage',args:{'name':name},callback:callback});}else{callback();}},show:function(name){if(!name)name=wn.boot.home_page;wn.views.pageview.with_page(name,function(r){if(r&&r.exc){if(!r['403'])wn.container.change_to('404');}else if(!wn.pages[name]){wn.views.pageview.pages[name]=new wn.views.Page(name);} +wn.provide('wn.views.pageview');wn.views.pageview={with_page:function(name,callback){if((locals.Page&&locals.Page[name])||name==window.page_name){callback();}else{wn.call({method:'webnotes.widgets.page.getpage',args:{'name':name},callback:callback});}},show:function(name){if(!name)name=(wn.boot?wn.boot.home_page:window.page_name);wn.views.pageview.with_page(name,function(r){if(r&&r.exc){if(!r['403'])wn.container.change_to('404');}else if(!wn.pages[name]){new wn.views.Page(name);} wn.container.change_to(name);});}} -wn.views.Page=Class.extend({init:function(name){this.name=name;var me=this;this.pagedoc=locals.Page[this.name];this.wrapper=wn.container.add_page(this.name);this.wrapper.label=this.pagedoc.title||this.pagedoc.name;this.wrapper.page_name=this.pagedoc.name;this.wrapper.innerHTML=this.pagedoc.content;wn.dom.eval(this.pagedoc.__script||this.pagedoc.script||'');wn.dom.set_style(this.pagedoc.style||'');this.trigger('onload');$(this.wrapper).bind('show',function(){cur_frm=null;me.trigger('onshow');me.trigger('refresh');});},trigger:function(eventname){var me=this;try{if(pscript[eventname+'_'+this.name]){pscript[eventname+'_'+this.name](me.wrapper);}else if(me.wrapper[eventname]){me.wrapper[eventname](me.wrapper);}}catch(e){console.log(e);}}}) +wn.views.Page=Class.extend({init:function(name,wrapper){this.name=name;var me=this;if(name==window.page_name){this.wrapper=document.getElementById('page-'+name);this.wrapper.label=document.title||window.page_name;this.wrapper.page_name=window.page_name;wn.pages[window.page_name]=this.wrapper;}else{this.pagedoc=locals.Page[this.name];this.wrapper=wn.container.add_page(this.name);this.wrapper.label=this.pagedoc.title||this.pagedoc.name;this.wrapper.page_name=this.pagedoc.name;this.wrapper.innerHTML=this.pagedoc.content;wn.dom.eval(this.pagedoc.__script||this.pagedoc.script||'');wn.dom.set_style(this.pagedoc.style||'');} +this.trigger('onload');$(this.wrapper).bind('show',function(){cur_frm=null;me.trigger('onshow');me.trigger('refresh');});},trigger:function(eventname){var me=this;try{if(pscript[eventname+'_'+this.name]){pscript[eventname+'_'+this.name](me.wrapper);}else if(me.wrapper[eventname]){me.wrapper[eventname](me.wrapper);}}catch(e){console.log(e);}}}) wn.views.make_404=function(){var page=wn.container.add_page('404');$(page).html('
    \

    Not Found


    \

    Sorry we were unable to find what you were looking for.

    \ @@ -344,57 +270,13 @@ wn.views.make_404=function(){var page=wn.container.add_page('404');$(page).html(

    Sorry you are not permitted to view this page.

    \

    Go back to home

    \
    ').toggle(false);}; -/* - * lib/js/wn/views/formview.js - */ -wn.provide('wn.views.formview');wn.views.formview={show:function(dt,dn){if(wn.model.new_names[dn]) -dn=wn.model.new_names[dn];wn.model.with_doctype(dt,function(){wn.model.with_doc(dt,dn,function(dn,r){if(r&&r['403'])return;if(!(locals[dt]&&locals[dt][dn])){wn.container.change_to('404');return;} -if(!wn.views.formview[dt]){wn.views.formview[dt]=wn.container.add_page('Form - '+dt);wn.views.formview[dt].frm=new _f.Frm(dt,wn.views.formview[dt]);} -wn.container.change_to('Form - '+dt);wn.views.formview[dt].frm.refresh(dn);});})},create:function(dt){var new_name=LocalDB.create(dt);wn.set_route('Form',dt,new_name);}} -/* - * lib/js/wn/views/reportview.js - */ -wn.views.reportview={show:function(dt,rep_name){wn.require('lib/js/legacy/report.compressed.js');dt=get_label_doctype(dt);if(!_r.rb_con){_r.rb_con=new _r.ReportContainer();} -_r.rb_con.set_dt(dt,function(rb){if(rep_name){var t=rb.current_loaded;rb.load_criteria(rep_name);if((rb.dt)&&(!rb.dt.has_data()||rb.current_loaded!=t)){rb.dt.run();}} -if(!rb.forbidden){wn.container.change_to('Report Builder');}});}} -wn.views.reportview2={show:function(dt){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){new wn.views.ReportView(route[1],route[2]);}else{new wn.views.ReportHome();}}}} -wn.views.ReportView=wn.ui.Listing.extend({init:function(doctype,docname){var me=this;this.page_name=wn.get_route_str();this.import_slickgrid();this.doctype=doctype;this.docname=docname;this.tab_name='`tab'+doctype+'`';this.make_page();wn.model.with_doctype(doctype,function(){me.setup();if(docname){wn.model.with_doc('Report',docname,function(r){me.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.run();});}else{me.run();}});},import_slickgrid:function(){wn.require('lib/js/lib/slickgrid/slick.grid.css');wn.require('lib/js/lib/slickgrid/slick-default-theme.css');wn.require('lib/js/lib/slickgrid/jquery.event.drag.min.js');wn.require('lib/js/lib/slickgrid/slick.core.js');wn.require('lib/js/lib/slickgrid/slick.grid.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},set_init_columns:function(){var columns=[['name'],['owner']];$.each(wn.meta.docfield_list[this.doctype],function(i,df){if(df.in_filter&&df.fieldname!='naming_series'){columns.push([df.fieldname]);}});this.columns=columns;},setup:function(){var me=this;wn.views.breadcrumbs($('').appendTo(this.page.appframe.$titlebar),locals.DocType[this.doctype].module);this.make({title:'Report: '+(this.docname?(this.doctype+' - '+this.docname):this.doctype),appframe:this.page.appframe,method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:$(this.page).find('.layout-main'),start:0,page_length:20,show_filters:true,new_doctype:this.doctype,allow_delete:true,});this.make_column_picker();this.make_sorter();this.make_export();this.set_init_columns();this.make_save();},set_columns_and_filters:function(opts){var me=this;if(opts.columns)this.columns=opts.columns;if(opts.filters)$.each(opts.filters,function(i,f){me.filter_list.add_filter(f[1],f[2],f[3]);});if(opts.sort_by)this.sort_by_select.val(opts.sort_by);if(opts.sort_order)this.sort_order_select.val(opts.sort_order);if(opts.sort_by_next)this.sort_by_next_select.val(opts.sort_by_next);if(opts.sort_order_next)this.sort_order_next_select.val(opts.sort_order_next);},get_args:function(){var me=this;return{doctype:this.doctype,fields:$.map(this.columns,function(v){return me.get_full_column_name(v)}),order_by:this.get_order_by(),filters:this.filter_list.get_filters(),docstatus:['0','1','2']}},get_order_by:function(){var order_by=this.get_full_column_name([this.sort_by_select.val()]) -+' '+this.sort_order_select.val() -if(this.sort_by_next_select.val()){order_by+=', '+this.get_full_column_name([this.sort_by_next_select.val()]) -+' '+this.sort_order_next_select.val()} -return order_by;},get_full_column_name:function(v){return(v[1]?('`tab'+v[1]+'`'):this.tab_name)+'.'+v[0];},build_columns:function(){var me=this;return $.map(this.columns,function(c){return{id:c[0],field:c[0],name:(wn.meta.docfield_map[c[1]||me.doctype][c[0]]?wn.meta.docfield_map[c[1]||me.doctype][c[0]].label:toTitle(c[0])),width:120}});},render_list:function(){var columns=[{id:'_idx',field:'_idx',name:'Sr.',width:40}].concat(this.build_columns());$.each(this.data,function(i,v){v._idx=i+1;});var options={enableCellNavigation:true,enableColumnReorder:false};var grid=new Slick.Grid(this.$w.find('.result-list').css('border','1px solid grey').css('height','500px').get(0),this.data,columns,options);},make_column_picker:function(){var me=this;this.column_picker=new wn.ui.ColumnPicker(this);this.page.appframe.add_button('Pick Columns',function(){me.column_picker.show(me.columns);},'icon-th-list');},make_sorter:function(){var me=this;this.sort_dialog=new wn.ui.Dialog({title:'Sorting Preferences'});$(this.sort_dialog.body).html('

    Sort By

    \ -
    \ -
    \ -

    Then By (optional)

    \ -
    \ -

    \ -
    ');this.sort_by_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column'),this.doctype).$select;this.sort_by_select.css('width','60%');this.sort_order_select=$(this.sort_dialog.body).find('.sort-order');this.sort_by_next_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column-1'),this.doctype,null,true).$select;this.sort_by_next_select.css('width','60%');this.sort_order_next_select=$(this.sort_dialog.body).find('.sort-order-1');this.sort_by_select.val('modified');this.sort_order_select.val('desc');this.sort_by_next_select.val('');this.sort_order_next_select.val('desc');this.page.appframe.add_button('Sort By',function(){me.sort_dialog.show();},'icon-arrow-down');$(this.sort_dialog.body).find('.btn-info').click(function(){me.sort_dialog.hide();me.run();});},make_export:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Export',function(){var args=me.get_args();args.cmd='webnotes.widgets.doclistview.export_query' -open_url_post(wn.request.url,args);},'icon-download-alt');}},make_save:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Save',function(){if(me.docname){var name=me.docname}else{var name=prompt('Select Report Name');if(!name){return;}} -wn.call({method:'webnotes.widgets.doclistview.save_report',args:{name:name,doctype:me.doctype,json:JSON.stringify({filters:me.filter_list.get_filters(),columns:me.columns,sort_by:me.sort_by_select.val(),sort_order:me.sort_order_select.val(),sort_by_next:me.sort_by_next_select.val(),sort_order_next:me.sort_order_next_select.val()})},callback:function(r){if(r.exc)return;if(r.message!=me.docname) -wn.set_route('Report2',me.doctype,r.message);}});},'icon-upload');}}});wn.ui.ColumnPicker=Class.extend({init:function(list){this.list=list;this.doctype=list.doctype;this.selects={};},show:function(columns){wn.require('lib/js/lib/jquery/jquery.ui.sortable.js');var me=this;if(!this.dialog){this.dialog=new wn.ui.Dialog({title:'Pick Columns',width:'400'});} -$(this.dialog.body).html('
    Drag to sort columns
    \ -
    \ -
    \ -
    \ -
    ');$.each(columns,function(i,c){me.add_column(c);});$(this.dialog.body).find('.column-list').sortable();$(this.dialog.body).find('.btn-add').click(function(){me.add_column('name');});$(this.dialog.body).find('.btn-info').click(function(){me.dialog.hide();me.list.columns=[];$(me.dialog.body).find('select').each(function(){me.list.columns.push([$(this).val(),$(this).find('option:selected').attr('table')]);}) -me.list.run();});this.dialog.show();},add_column:function(c){var w=$('
    \ - ×\ -
    ').appendTo($(this.dialog.body).find('.column-list'));var fieldselect=new wn.ui.FieldSelect(w,this.doctype);fieldselect.$select.css('width','90%').val(c);w.find('.close').click(function(){$(this).parent().remove();});}}); /* * lib/js/wn/request.js */ wn.provide('wn.request');wn.request.url='index.cgi';wn.request.prepare=function(opts){if(opts.btn)$(opts.btn).set_working();if(opts.show_spinner)set_loading();if(opts.freeze)freeze();if(!opts.args.cmd){console.log(opts) throw"Incomplete Request";}} -wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){msgprint('Session Expired. Logging you out');if(!wn.app.logged_out) -wn.app.logout();return;} +wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot&&wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){if(!wn.app.logged_out){msgprint('Session Expired. Logging you out');wn.app.logout();} +return;} if(r.server_messages)msgprint(r.server_messages) if(r.exc){console.log(r.exc);};if(r['403']){wn.container.change_to('403');} if(r.docs)LocalDB.sync(r.docs);} @@ -408,7 +290,7 @@ wn.request.call({args:args,success:opts.callback,error:opts.error,btn:opts.btn,f * lib/js/core.js */ if(!console){var console={log:function(txt){}}} -wn.versions.check();$(document).bind('ready',function(){wn.provide('wn.app');$.extend(wn.app,new wn.Application());}); +$(document).ready(function(){wn.versions.check();wn.provide('wn.app');$.extend(wn.app,new wn.Application());}); /* * lib/js/legacy/globals.js @@ -435,7 +317,7 @@ function is_null(v){if(v==null){return 1}else if(v==0){if((v+'').length>=1)retur function $s(ele,v,ftype,fopt){if(v==null)v='';if(ftype=='Text'||ftype=='Small Text'){ele.innerHTML=v?v.replace(/\n/g,'
    '):'';}else if(ftype=='Date'){v=dateutil.str_to_user(v);if(v==null)v='' ele.innerHTML=v;}else if(ftype=='Link'&&fopt){ele.innerHTML='';doc_link(ele,fopt,v);}else if(ftype=='Currency'){ele.style.textAlign='right';if(is_null(v)) ele.innerHTML='';else -ele.innerHTML=fmt_money(v);}else if(ftype=='Int'){ele.style.textAlign='right';ele.innerHTML=v;}else if(ftype=='Check'){if(v)ele.innerHTML='';else ele.innerHTML='';}else{ele.innerHTML=v;}} +ele.innerHTML=fmt_money(v);}else if(ftype=='Int'){ele.style.textAlign='right';ele.innerHTML=v;}else if(ftype=='Check'){if(v)ele.innerHTML='';else ele.innerHTML='';}else{ele.innerHTML=v;}} function clean_smart_quotes(s){if(s){s=s.replace(/\u2018/g,"'");s=s.replace(/\u2019/g,"'");s=s.replace(/\u201c/g,'"');s=s.replace(/\u201d/g,'"');s=s.replace(/\u2013/g,'-');s=s.replace(/\u2014/g,'--');} return s;} function copy_dict(d){var n={};for(var k in d)n[k]=d[k];return n;} @@ -516,8 +398,8 @@ var time_to_ampm=wn.datetime.time_to_ampm;var time_to_hhmm=wn.datetime.time_to_h * lib/js/legacy/utils/dom.js */ wn.tinymce={add_simple:function(ele,height){if(ele.myid){tinyMCE.execCommand('mceAddControl',true,ele.myid);return;} -ele.myid=wn.dom.set_unique_id(ele);$(ele).tinymce({script_url:'lib/js/lib/tiny_mce_33/tiny_mce.js',height:height?height:'200px',theme:"advanced",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,outdent,indent,link,unlink,forecolor,backcolor,code,",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_path:false,theme_advanced_resizing:false});},remove:function(ele){tinyMCE.execCommand('mceRemoveControl',true,ele.myid);},get_value:function(ele){return tinymce.get(ele.myid).getContent();}} -wn.ele={link:function(args){var span=$a(args.parent,'span','link_type',args.style);span.loading_img=$a(args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});span.loading_img.src='lib/images/ui/button-load.gif';span.innerHTML=args.label;span.user_onclick=args.onclick;span.onclick=function(){if(!this.disabled)this.user_onclick(this);} +ele.myid=wn.dom.set_unique_id(ele);$(ele).tinymce({script_url:'js/lib/tiny_mce_33/tiny_mce.js',height:height?height:'200px',theme:"advanced",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,outdent,indent,link,unlink,forecolor,backcolor,code,",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_path:false,theme_advanced_resizing:false});},remove:function(ele){tinyMCE.execCommand('mceRemoveControl',true,ele.myid);},get_value:function(ele){return tinymce.get(ele.myid).getContent();}} +wn.ele={link:function(args){var span=$a(args.parent,'span','link_type',args.style);span.loading_img=$a(args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});span.loading_img.src='images/lib/ui/button-load.gif';span.innerHTML=args.label;span.user_onclick=args.onclick;span.onclick=function(){if(!this.disabled)this.user_onclick(this);} span.set_working=function(){this.disabled=1;$di(this.loading_img);} span.done_working=function(){this.disabled=0;$dh(this.loading_img);} return span;}} @@ -622,7 +504,7 @@ if(!msg_dialog){msg_dialog=new Dialog(500,200,"Message");msg_dialog.make_body([[ msg_dialog.onhide=function(){msg_dialog.msg_area.innerHTML='';$dh(msg_dialog.msg_icon);if(msg_dialog.custom_onhide)msg_dialog.custom_onhide();} $y(msg_dialog.rows['Msg'],{fontSize:'14px',lineHeight:'1.5em',padding:'16px'}) var t=make_table(msg_dialog.rows['Msg'],1,2,'100%',['20px','250px'],{padding:'2px',verticalAlign:'Top'});msg_dialog.msg_area=$td(t,0,1);msg_dialog.msg_icon=$a($td(t,0,0),'img');} -if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='lib/images/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='lib/images/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='lib/images/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);} +if(!msg_dialog.display)msg_dialog.show();var has_msg=msg_dialog.msg_area.innerHTML?1:0;var m=$a(msg_dialog.msg_area,'div','');if(has_msg)$y(m,{marginTop:'4px'});$dh(msg_dialog.msg_icon);if(msg.substr(0,6).toLowerCase()=='error:'){msg_dialog.msg_icon.src='images/lib/icons/error.gif';$di(msg_dialog.msg_icon);msg=msg.substr(6);}else if(msg.substr(0,8).toLowerCase()=='message:'){msg_dialog.msg_icon.src='images/lib/icons/application.gif';$di(msg_dialog.msg_icon);msg=msg.substr(8);}else if(msg.substr(0,3).toLowerCase()=='ok:'){msg_dialog.msg_icon.src='images/lib/icons/accept.gif';$di(msg_dialog.msg_icon);msg=msg.substr(3);} m.innerHTML=replace_newlines(msg);if(m.offsetHeight>200){$y(m,{height:'200px',width:'400px',overflow:'auto'})} msg_dialog.custom_onhide=callback;} var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('
    ').appendTo('body');} @@ -652,7 +534,7 @@ opts.parent.appframe=new wn.ui.AppFrame($(opts.parent).find('.layout-appframe')) /* * lib/js/wn/ui/dialog.js */ -wn.widgets.FieldGroup=function(){this.first_button=false;this.make_fields=function(body,fl){if(!window.make_field){wn.require('lib/css/legacy/fields.css');wn.require('lib/js/legacy/widgets/form/fields.js');wn.require('lib/js/wn/ui/button.js');} +wn.widgets.FieldGroup=function(){this.first_button=false;this.make_fields=function(body,fl){if(!window.make_field){wn.require('css/fields.css');wn.require('js/fields.js');} $y(this.body,{padding:'11px'});this.fields_dict={};for(var i=0;iMandatory fields required in '+ /* * lib/js/wn/app.js */ -wn.Application=Class.extend({init:function(){this.load_bootinfo();this.make_page_container();this.make_nav_bar();this.set_favicon();$(document).trigger('startup');wn.route();},load_bootinfo:function(){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;if(wn.boot.error_messages) +wn.Application=Class.extend({init:function(){var me=this;if(window.app){wn.call({method:'startup',callback:function(r,rt){wn.provide('wn.boot');wn.boot=r;if(wn.boot.profile.name=='Guest'){window.location='index.html';return;} +me.startup();}})}else{document.cookie="sid=Guest;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/" +this.startup();}},startup:function(){this.load_bootinfo();this.make_page_container();this.make_nav_bar();this.set_favicon();$(document).trigger('startup');if(wn.boot){wn.route();} +$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;if(wn.boot.error_messages) console.log(wn.boot.error_messages) if(wn.boot.server_messages) -msgprint(wn.boot.server_messages);this.set_globals();},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.user.name!='Guest'){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);} -me.redirect_to_login();}})},redirect_to_login:function(){window.location.hash='';window.location.reload();},set_favicon:function(){var link=$('link[type="image/x-icon"]').remove().attr("href");var favicon='\ +msgprint(wn.boot.server_messages);this.set_globals();}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);} +me.redirect_to_login();}})},redirect_to_login:function(){window.location.href='index.html';},set_favicon:function(){var link=$('link[type="image/x-icon"]').remove().attr("href");var favicon='\ \ ' $(favicon).appendTo('head');}}) -/* - * js/app.js - */ -wn.provide('erpnext');erpnext.set_about=function(){wn.provide('wn.app');$.extend(wn.app,{name:'ERPNext',license:'GNU/GPL - Usage Condition: All "erpnext" branding must be kept as it is',source:'https://github.com/webnotes/erpnext',publisher:'Web Notes Technologies Pvt Ltd, Mumbai',copyright:'© Web Notes Technologies Pvt Ltd',version:'2'});} -wn.modules_path='erpnext';$(document).bind('toolbar_setup',function(){$('.brand').html((wn.boot.website_settings.brand_html||'erpnext')+' ').css('max-width','200px').css('overflow','hidden').hover(function(){$(this).find('.icon-home').addClass('navbar-icon-home-hover');},function(){$(this).find('.icon-home').removeClass('navbar-icon-home-hover');});}); /* * erpnext/startup/startup.js */ var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'} wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;} -erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);} -if(user=='Guest'){if(wn.boot.custom_css){set_style(wn.boot.custom_css);} -if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;} -if(wn.boot.startup_code){eval(wn.boot.startup_code);}}else{wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages']) +erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(user!='Guest'){if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);} +wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages']) erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();$('footer').html('');if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("erpnext/startup/js/complete_setup.js");erpnext.complete_setup.show();} if(wn.boot.expires_on&&in_list(user_roles,'System Manager')){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('
    \ @@ -839,9 +717,11 @@ if(wn.boot.expires_on&&in_list(user_roles,'System Manager')){var today=dateutil. (and remove this annoying banner). \
    ',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('
    \ This ERPNext subscription has expired. \ -
    ',{expiry_string:expiry_string}));}}} +
    ',{expiry_string:expiry_string}));}} erpnext.set_about();if(wn.control_panel.custom_startup_code) -eval(wn.control_panel.custom_startup_code);$('body').append('')} +eval(wn.control_panel.custom_startup_code);} +$('body').append('')} erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;} if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}} show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);}else{clearInterval(wn.updates.id);}} @@ -854,30 +734,7 @@ wn.call({method:'website.send_message',args:opts,callback:function(r){if(opts.bt if(opts.callback)opts.callback(r)}});} erpnext.hide_naming_series=function(){if(cur_frm.fields_dict.naming_series){hide_field('naming_series');if(cur_frm.doc.__islocal){unhide_field('naming_series');}}} /* - * erpnext/website/js/topbar.js + * conf.js */ -wn.provide('erpnext.navbar');erpnext.navbar.Navbar=Class.extend({init:function(){this.make();$('.brand').html(wn.boot.website_settings.brand_html||sys_defaults.company);this.make_items();$('.dropdown-toggle').dropdown();},make:function(){$('header').append('');$('.brand').attr('href','#!'+(wn.boot.website_settings.home_page||'Login Page'))},make_items:function(){var items=wn.boot.website_menus;for(var i=0;i\ - %(label)s
  • ',item));}} -for(var i=0;i').click(function(){return false;});$parent_li.append('');} -erpnext.header_link_settings(item);$parent_li.find('.dropdown-menu').append(repl('
  • \ - %(label)s
  • ',item))}}}});erpnext.Footer=Class.extend({init:function(){if(!wn.boot.website_settings.copyright){wn.boot.website_settings.copyright=sys_defaults.company;} -if(!wn.boot.website_settings.address){wn.boot.website_settings.address='';} -$('footer').html(repl('',wn.boot.website_settings));this.make_items();},make_items:function(){var items=wn.boot.website_menus -for(var i=0;i%(label)s',item))}}}});erpnext.header_link_settings=function(item){item.route=item.url||item.custom_page;if(item.route&&item.route.substr(0,4)=='http'){item.target='target="_blank"';}else{item.target='';item.route='#!'+item.route;}} -$(document).bind('startup',function(){erpnext.footer=new erpnext.Footer();erpnext.navbar.navbar=new erpnext.navbar.Navbar();}) \ No newline at end of file +wn.provide('erpnext');erpnext.set_about=function(){wn.provide('wn.app');$.extend(wn.app,{name:'ERPNext',license:'GNU/GPL - Usage Condition: All "erpnext" branding must be kept as it is',source:'https://github.com/webnotes/erpnext',publisher:'Web Notes Technologies Pvt Ltd, Mumbai',copyright:'© Web Notes Technologies Pvt Ltd',version:'2'});} +wn.modules_path='erpnext';$(document).bind('toolbar_setup',function(){$('.brand').html((wn.boot.website_settings.brand_html||'erpnext')+' ').css('max-width','200px').css('overflow','hidden').hover(function(){$(this).find('.icon-home').addClass('navbar-icon-home-hover');},function(){$(this).find('.icon-home').removeClass('navbar-icon-home-hover');});}); \ No newline at end of file diff --git a/public/js/fields.js b/public/js/fields.js new file mode 100644 index 0000000000..eed453e65c --- /dev/null +++ b/public/js/fields.js @@ -0,0 +1,211 @@ + +/* + * lib/js/legacy/widgets/form/fields.js + */ +var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;} +Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent) +this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else +this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});} +if(this.with_label){this.label_span=$a(this.label_area,'span','small') +this.label_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 4px'});$dh(this.label_icon);this.label_icon.src='images/lib/icons/error.gif';this.label_icon.title='Mandatory value needs to be entered';this.suggest_icon=$a(this.label_area,'img','',{margin:'-3px 4px -3px 0px'});$dh(this.suggest_icon);this.suggest_icon.src='images/lib/icons/bullet_arrow_down.png';this.suggest_icon.title='With suggestions';}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'}) +$dh(this.label_area);} +if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));} +if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();} +if(this.onmake)this.onmake();} +Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML'] +if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}} +Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}} +Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description) +if(in_list(['Text Editor','Code'],this.df.fieldtype)) +$(this.desc_area).addClass('help small');}} +Field.prototype.get_status=function(){if(this.in_filter)this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';} +if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE])ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary') +ret='None';if(cint(this.df.hidden)) +ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}} +if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE])ret='Write';} +return ret;} +Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}} +Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);} +this.refresh_label_icon() +this.set_reqd=this.df.reqd;} +Field.prototype.refresh_display=function(){if(!this.current_status||this.current_status!=this.disp_status){if(this.disp_status=='Write'){if(this.make_input&&(!this.input)){this.make_input();if(this.onmake_input)this.onmake_input();} +if(this.show)this.show() +else{$ds(this.wrapper);} +if(this.input){$ds(this.input_area);$dh(this.disp_area);if(this.input.refresh)this.input.refresh();}else{$dh(this.input_area);$ds(this.disp_area);}}else if(this.disp_status=='Read'){if(this.show)this.show() +else{$ds(this.wrapper);} +$dh(this.input_area);$ds(this.disp_area);}else{if(this.hide)this.hide();else $dh(this.wrapper);} +this.current_status=this.disp_status;}} +Field.prototype.refresh=function(){this.disp_status=this.get_status();if(this.in_grid&&this.table_refresh&&this.disp_status=='Write') +{this.table_refresh();return;} +this.set_label();this.refresh_display();if(this.onrefresh) +this.onrefresh();if(this.input){if(this.input.refresh)this.input.refresh(this.df);} +if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');} +if(!this.not_in_form) +this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();} +Field.prototype.refresh_label_icon=function(){if(this.df.reqd){if(this.get_value&&is_null(this.get_value())){if(this.label_icon)$ds(this.label_icon);$(this.txt?this.txt:this.input).addClass('field-to-update')}else{if(this.label_icon)$dh(this.label_icon);$(this.txt?this.txt:this.input).removeClass('field-to-update')}}} +Field.prototype.set=function(val){if(this.not_in_form) +return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();} +var set_val=val;if(this.validate)set_val=this.validate(val);_f.set_value(this.doctype,this.docname,this.df.fieldname,set_val);this.value=val;} +Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);} +var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);} +Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.df.reqd&&this.get_value&&!is_null(this.get_value())&&this.set_as_error) +this.set_as_error(0);if(this.not_in_form){return;} +if(cur_frm.cscript[this.df.fieldname]) +cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();} +Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}} +Field.prototype.set_disp=function(val){this.set_disp_html(val);} +Field.prototype.set_as_error=function(set){if(this.in_grid||this.in_filter)return;var w=this.txt?this.txt:this.input;if(set){$y(w,{border:'2px solid RED'});}else{$y(w,{border:'1px solid #888'});}} +Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate) +this.input.set_value(this.validate(v));else +this.input.set_value((v==null)?'':v);if(this.format_input) +this.format_input();} +if(this.input.focus){try{this.input.focus();}catch(e){}}} +if(this.txt){try{this.txt.focus();}catch(e){} +this.txt.field_object=this;}} +function DataField(){}DataField.prototype=new Field();DataField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,this.df.fieldtype=='Password'?'password':'text');this.get_value=function(){var v=this.input.value;if(this.validate) +v=this.validate(v);return v;} +this.input.name=this.df.fieldname;$(this.input).change(function(){me.set_value(me.get_value&&me.get_value()||$(this.input).val());});this.set_value=function(val){if(!me.last_value)me.last_value='';if(me.validate){val=me.validate(val);me.input.value=val==undefined?'':val;} +me.set(val);if(me.format_input) +me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}} +me.last_value=val;me.run_trigger();} +this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();} +if(this.df.options=='Suggest'){if(this.suggest_icon)$di(this.suggest_icon);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \ + `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});}});}} +DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1='' +v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);} +if(v&&v.substr(0,2)=='00'){v1+='00';v=v.substr(2);} +if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);} +v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else +return v;}else{return v;}} +DataField.prototype.onrefresh=function(){if(this.input&&this.df.colour){var col='#'+this.df.colour.split(':')[1];$bg(this.input,col);}} +function ReadOnlyField(){} +ReadOnlyField.prototype=new Field();function HTMLField(){} +HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){this.disp_area.innerHTML=val;} +HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);} +HTMLField.prototype.onrefresh=function(){this.set_disp(this.df.options?this.df.options:'');} +var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=wn.control_panel.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell) +_f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form) +me.set(dateutil.user_to_str(me.input.value));me.run_trigger();} +me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;} +me.get_value=function(){if(me.input.value) +return dateutil.user_to_str(me.input.value);}} +DateField.prototype.set_disp=function(val){var v=dateutil.str_to_user(val);if(v==null)v='';this.set_disp_html(v);} +DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=function(){msgprint("Date must be in format "+this.user_fmt);me.input.set_input('');return'';} +var t=v.split('-');if(t.length!=3){return this.clear();} +else if(cint(t[1])>12||cint(t[1])<1){return this.clear();} +else if(cint(t[2])>31||cint(t[2])<1){return this.clear();} +return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create&&cur_frm.doc.docstatus==0) +$(me.btn2).css('display','inline-block');else $dh(me.btn2);}} +me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;} +me.get_value=function(){return me.txt.value;} +$(me.txt).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':me.get_custom_query()},callback:function(r){response(r.results);},});},select:function(event,ui){me.set_input_value(ui.item.value);}}).data('autocomplete')._renderItem=function(ul,item){return $('
  • ').data('item.autocomplete',item).append(repl('%(label)s
    %(info)s
    ',item)).appendTo(ul);};$(this.txt).change(function(){if(!$(this).val()){if(selector&&selector.display) +return;me.set_input_value('');}})} +LinkField.prototype.get_custom_query=function(){this.set_get_query();if(this.get_query){if(cur_frm) +var doc=locals[cur_frm.doctype][cur_frm.docname];return this.get_query(doc,this.doctype,this.docname);}} +LinkField.prototype.setup_buttons=function(){var me=this;me.btn.onclick=function(){selector.set(me,me.df.options,me.df.label);selector.show(me.txt);} +if(me.btn1)me.btn1.onclick=function(){if(me.txt.value&&me.df.options){loaddoc(me.df.options,me.txt.value);}} +me.can_create=0;if((!me.not_in_form)&&in_list(profile.can_create,me.df.options)){me.can_create=1;me.btn2.onclick=function(){var on_save_callback=function(new_rec){if(new_rec){var d=_f.calling_doc_stack.pop();locals[d[0]][d[1]][me.df.fieldname]=new_rec;me.refresh();if(me.grid)me.grid.refresh();me.run_trigger();}} +_f.calling_doc_stack.push([me.doctype,me.docname]);new_doc(me.df.options,me.on_new,1,on_save_callback,me.doctype,me.docname,me.frm.not_in_container);}}else{$dh(me.btn2);$y($td(me.tab,0,2),{width:'0px'});}} +LinkField.prototype.set_input_value=function(val){var me=this;var from_selector=false;if(selector&&selector.display)from_selector=true;me.refresh_label_icon();if(me.not_in_form){$(this.txt).val(val);return;} +if(cur_frm){if(val==locals[me.doctype][me.docname][me.df.fieldname]){me.run_trigger();return;}} +me.set(val);if(_f.cur_grid_cell) +_f.cur_grid_cell.grid.cell_deselect();if(locals[me.doctype][me.docname][me.df.fieldname]&&!val){me.run_trigger();return;} +var fetch='';if(cur_frm.fetch_dict[me.df.fieldname]) +fetch=cur_frm.fetch_dict[me.df.fieldname].columns.join(', ');$c('webnotes.widgets.form.utils.validate_link',{'value':val,'options':me.df.options,'fetch':fetch},function(r,rt){if(r.message=='Ok'){if($(me.txt).val()!=val){if((me.grid&&!from_selector)||(!me.grid)){$(me.txt).val(val);}} +if(r.fetch_values) +me.set_fetch_values(r.fetch_values);me.run_trigger();}else{var astr='';if(in_list(profile.can_create,me.df.options))astr=repl('

    Click here to create a new %(dtl)s',{dt:me.df.options,dtl:get_doctype_label(me.df.options)}) +msgprint(repl('error:%(val)s is not a valid %(dt)s.

    You must first create a new %(dt)s %(val)s and then select its value. To find an existing %(dt)s, click on the magnifying glass next to the field.%(add)s',{val:me.txt.value,dt:get_doctype_label(me.df.options),add:astr}));me.txt.value='';me.set('');}});} +LinkField.prototype.set_fetch_values=function(fetch_values){var fl=cur_frm.fetch_dict[this.df.fieldname].fields;var changed_fields=[];for(var i=0;i"+val+"";this.set_disp_html(t);} +function IntField(){}IntField.prototype=new DataField();IntField.prototype.validate=function(v){if(isNaN(parseInt(v)))return null;return cint(v);};IntField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';} +function FloatField(){}FloatField.prototype=new DataField();FloatField.prototype.validate=function(v){var v=parseFloat(v);if(isNaN(v)) +return null;return v;};FloatField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';} +function CurrencyField(){}CurrencyField.prototype=new DataField();CurrencyField.prototype.format_input=function(){var v=fmt_money(this.input.value);if(this.not_in_form){if(!flt(this.input.value))v='';} +this.input.value=v;} +CurrencyField.prototype.validate=function(v){if(v==null||v=='') +return 0;return flt(v,2);} +CurrencyField.prototype.set_disp=function(val){var v=fmt_money(val);this.set_disp_html(v);} +CurrencyField.prototype.onmake_input=function(){if(!this.input)return;this.input.onfocus=function(){if(flt(this.value)==0)this.select();}} +function CheckField(){}CheckField.prototype=new Field();CheckField.prototype.validate=function(v){var v=parseInt(v);if(isNaN(v))return 0;return v;};CheckField.prototype.onmake=function(){this.checkimg=$a(this.disp_area,'div');var img=$a(this.checkimg,'img');img.src='images/lib/ui/tick.gif';$dh(this.checkimg);} +CheckField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,'checkbox');$y(this.input,{width:"16px",border:'0px',margin:'2px'});$(this.input).click(function(){me.set(this.checked?1:0);me.run_trigger();}) +this.input.set_input=function(v){v=parseInt(v);if(isNaN(v))v=0;if(v)me.input.checked=true;else me.input.checked=false;} +this.get_value=function(){return this.input.checked?1:0;}} +CheckField.prototype.set_disp=function(val){if(val){$ds(this.checkimg);} +else{$dh(this.checkimg);}} +function TextField(){}TextField.prototype=new Field();TextField.prototype.set_disp=function(val){this.disp_area.innerHTML=replace_newlines(val);} +TextField.prototype.make_input=function(){var me=this;if(this.in_grid) +return;this.input=$a(this.input_area,'textarea');if(this.df.fieldtype=='Small Text') +this.input.style.height="80px";this.input.set_input=function(v){me.input.value=v;} +this.input.onchange=function(){me.set(me.input.value);me.run_trigger();} +this.get_value=function(){return this.input.value;}} +var text_dialog;function make_text_dialog(){var d=new Dialog(520,410,'Edit Text');d.make_body([['Text','Enter Text'],['HTML','Description'],['Button','Update']]);d.widgets['Update'].onclick=function(){var t=this.dialog;t.field.set(t.widgets['Enter Text'].value);t.hide();} +d.onshow=function(){this.widgets['Enter Text'].style.height='300px';var v=_f.get_value(this.field.doctype,this.field.docname,this.field.df.fieldname);this.widgets['Enter Text'].value=v==null?'':v;this.widgets['Enter Text'].focus();this.widgets['Description'].innerHTML='' +if(this.field.df.description) +$a(this.widgets['Description'],'div','help small','',this.field.df.description);} +d.onhide=function(){if(_f.cur_grid_cell) +_f.cur_grid_cell.grid.cell_deselect();} +text_dialog=d;} +TextField.prototype.table_refresh=function(){if(!this.text_dialog) +make_text_dialog();text_dialog.set_title('Enter text for "'+this.df.label+'"');text_dialog.field=this;text_dialog.show();} +function SelectField(){}SelectField.prototype=new Field();SelectField.prototype.make_input=function(){var me=this;var opt=[];if(this.in_filter&&(!this.df.single_select)){this.input=$a(this.input_area,'select');this.input.multiple=true;this.input.style.height='4em';this.input.lab=$a(this.input_area,'div',{fontSize:'9px',color:'#999'});this.input.lab.innerHTML='(Use Ctrl+Click to select multiple or de-select)'}else{this.input=$a(this.input_area,'select');this.input.onchange=function(){if(me.validate) +me.validate();me.set(sel_val(this));me.run_trigger();} +if(this.df.options=='attach_files:'){this.file_attach=true;}} +this.set_as_single=function(){var i=this.input;i.multiple=false;i.style.height=null;if(i.lab)$dh(i.lab)} +this.refresh_options=function(options){if(options) +me.df.options=options;if(this.file_attach) +this.set_attach_options();me.options_list=me.df.options?me.df.options.split('\n'):[''];empty_select(this.input);if(me.in_filter&&me.options_list[0]!=''){me.options_list=add_lists([''],me.options_list);} +add_sel_options(this.input,me.options_list);} +this.onrefresh=function(){this.refresh_options();if(this.not_in_form){this.input.value='';return;} +if(_f.get_value) +var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);else{if(this.options_list&&this.options_list.length) +var v=this.options_list[0];else +var v=null;} +this.input.set_input(v);} +this.input.set_input=function(v){if(!v){if(!me.input.multiple){if(me.docname){if(me.options_list&&me.options_list.length){me.set(me.options_list[0]);me.input.value=me.options_list[0];}else{me.input.value='';}}}}else{if(me.options_list){if(me.input.multiple){for(var i=0;i';var d2=$a(c,'div');if(in_list(['Text','Small Text','Code','Text Editor','Read Only'],ftype)) +ftype='Data';if(ftype=='Select'&&!in_list(options.split('\n'),''))options='\n'+options +var inp=make_field({fieldtype:ftype,'label':label,'options':options,no_buttons:1},'',d2,this,0,1);inp.not_in_form=1;inp.report=this;inp.df.single_select=1;inp.parent_cell=c;inp.parent_tab=this.input_tab;$y(inp.wrapper,{width:'95%'});inp.refresh();inp.tn=tname;inp.fn=fname;inp.condition=ftype=='Data'?'like':cond;var me=this;inp.onchange=function(){me.start=0;} +this.filters[label]=inp;this.filter_set=1;} +Listing.prototype.remove_filter=function(label){var inp=this.filters[label];inp.parent_tab.rows[0].deleteCell(inp.parent_cell.cellIndex);delete this.filters[label];} +Listing.prototype.remove_all_filters=function(){for(var k in this.filters)this.remove_filter(k);$dh(this.filter_wrapper);} +Listing.prototype.add_sort=function(ci,fname){this.sort_list[ci]=fname;} +Listing.prototype.has_data=function(){return this.n_records;} +Listing.prototype.set_default_sort=function(fname,sort_order){this.sort_order=sort_order;this.sort_order_dict[fname]=sort_order;this.sort_by=fname;if(this.sort_heads[fname]) +this.sort_heads[fname].set_sorting_as(sort_order);} +Listing.prototype.set_sort=function(cell,ci,fname){var me=this;$y(cell.sort_cell,{width:'18px'});cell.sort_img=$a(cell.sort_cell,'img');cell.fname=fname;$dh(cell.sort_img);cell.set_sort_img=function(order){var t='images/icons/sort_desc.gif';if(order=='ASC'){t='images/icons/sort_asc.gif';} +this.sort_img.src=t;} +cell.set_sorting_as=function(order){me.sort_order=order;me.sort_by=this.fname +me.sort_order_dict[this.fname]=order;this.set_sort_img(order) +if(me.cur_sort){$y(me.cur_sort,{backgroundColor:"#FFF"});$dh(me.cur_sort.sort_img);} +me.cur_sort=this;$y(this,{backgroundColor:"#DDF"});$di(this.sort_img);} +$y(cell.label_cell,{color:'#44A',cursor:'pointer'});cell.set_sort_img(me.sort_order_dict[fname]?me.sort_order_dict[fname]:'ASC');cell.onmouseover=function(){$di(this.sort_img);} +cell.onmouseout=function(){if(this!=me.cur_sort) +$dh(this.sort_img);} +cell.onclick=function(){this.set_sorting_as((me.sort_order_dict[fname]=='ASC')?'DESC':'ASC');me.run();} +this.sort_heads[fname]=cell;} +Listing.prototype.do_export=function(){this.build_query();var me=this;me.cn=[];if(this.no_index) +me.cn=this.colnames;else{for(var i=1;i0) +this.rec_label.innerHTML=repl('Total %(total)s %(keyword)s. Showing %(start)s to %(end)s',{total:total,start:cint(this.start)+1,end:cint(this.start)+cint(cur_page_len),keyword:this.keyword});else if(total==null) +this.rec_label.innerHTML='' +else if(total==0) +this.rec_label.innerHTML=this.no_rec_message;} +Listing.prototype.run=function(run_callback){this.build_query();var q=this.query;var me=this;if(this.max_len&&this.start>=this.max_len)this.start-=this.page_len;q+=' LIMIT '+this.start+','+this.page_len;var call_back=function(r,rt){$dh(me.loading_img);me.max_len=r.n_values;if(r.values&&r.values.length){me.n_records=r.values.length;var nc=r.values[0].length;if(me.colwidths)nc=me.colwidths.length-(me.no_index?0:1);if(me.opts.append_records&&me.start!=0){me.append_rows(r.values.length);}else{me.clear_tab();if(!me.show_empty_tab){me.remove_result_tab();me.make_result_tab(r.values.length);}} +me.refresh(r.values.length,nc,r.values,r.n_values);me.total_records=r.n_values;me.set_rec_label(r.n_values,r.values.length);}else{me.n_records=0;me.set_rec_label(0);me.clear_tab();if(!me.opts.append_records){if(me.show_empty_tab){me.clear_tab();}else{me.remove_result_tab();me.make_result_tab(0);if(me.opts.show_no_records_label){$ds(me.show_no_records);}}}} +$ds(me.results);if(run_callback)run_callback();if(me.onrun)me.onrun();} +$dh(me.show_no_records);this.set_rec_label(-1);$di(this.loading_img);if(this.server_call){this.server_call(this,call_back);}else{args={query_max:(this.query_max?this.query_max:'')} +if(this.is_std_query)args.query=q;else args.simple_query=q;if(this.opts.formatted)args.formatted=1;$c('webnotes.widgets.query_builder.runquery',args,call_back,null,this.no_loading);}} +Listing.prototype.remove_result_tab=function(){if(!this.result_tab)return;this.result_tab.parentNode.removeChild(this.result_tab);delete this.result_tab;} +Listing.prototype.reset_tab=function(){this.remove_result_tab();this.make_result_tab();} +Listing.prototype.make_result_tab=function(nr){if(this.result_tab)return;if(!this.colwidths)alert("Listing: Must specify column widths");var has_headrow=this.colnames?1:0;if(nr==null)nr=this.page_len;nr+=has_headrow;var nc=this.colwidths.length;var t=make_table(this.results,nr,nc,(this.opts.table_width?this.opts.table_width:'100%'),this.colwidths,{padding:'0px'});t.className='srs_result_tab';this.result_tab=t;$y(t,{borderCollapse:'collapse'});if(this.opts.table_width){$y(this.results,{overflowX:'auto'});$y(t,{tableLayout:'fixed'});} +if(has_headrow){this.make_headings(t,nr,nc);if(this.sort_by&&this.sort_heads[this.sort_by]){this.sort_heads[this.sort_by].set_sorting_as(this.sort_order);}} +this.set_table_style();if(this.opts.no_border==1){$y(t,{border:'0px'});} +this.result_tab=t;} +Listing.prototype.set_table_style=function(){var t=this.result_tab;for(var ri=(this.colnames?1:0);ri' ++''+args.title+'' ++'' ++'' ++(r.header_html?r.header_html:'') ++tl.join('\n
    \n') ++(r.footer_html?r.footer_html:'') ++'';_p.preview(html);} +var out_args=copy_dict(args);if(args.is_simple){out_args.simple_query=args.query;delete out_args.query;} +if(args.filter_values) +out_args.filter_values=args.filter_values;$c('webnotes.widgets.query_builder.runquery',out_args,callback);} +_p.PrintQuery.prototype.build_table=function(r,start,page_len,has_heading,rb){var div=document.createElement('div');if(!r.page_template){var head=$a(div,'div',null,{fontSize:'20px',fontWeight:'bold',margin:'16px 0px',borderBottom:'1px solid #CCC',paddingBottom:'8px'});head.innerHTML=args.title;} +var m=start+page_len;if(m>r.values.length)m=r.values.length +var t=make_table(div,m+has_heading-start,r.values[0].length+args.has_index,'100%',null);t.className='simpletable';if(args.colwidths) +$y(t,{tableLayout:'fixed'});if(has_heading){for(var i=0;i');this.rb_area=$a(this.wrapper,'div','',{padding:'15px'});var me=this;this.rb_dict={};var run_fn=function(){if(me.cur_rb){me.cur_rb.dt.start_rec=1;me.cur_rb.dt.run();}} +var runbtn=this.appframe.add_button('Run',run_fn,'icon-refresh');this.appframe.add_button('Export',function(){me.cur_rb&&me.cur_rb.dt.do_export();},'icon-download-alt');this.appframe.add_button('Print',function(){me.cur_rb&&me.cur_rb.dt.do_print();},'icon-print');this.appframe.add_button('Calc',function(){me.cur_rb&&me.cur_rb.dt.do_calc();},'icon-plus');if(has_common(['Administrator','System Manager'],user_roles)){var savebtn=this.appframe.add_button('Save',function(){if(me.cur_rb)me.cur_rb.save_criteria();});var fn=function(){if(me.cur_rb){if(!me.cur_rb.current_loaded){msgprint("error:You must save the report before you can set Advanced features");return;} +loaddoc('Search Criteria',me.cur_rb.sc_dict[me.cur_rb.current_loaded]);}};var advancedbtn=this.appframe.add_button('Advanced Settings',fn,'icon-cog');} +this.set_dt=function(dt,onload){my_onload=function(f){if(!f.forbidden){me.cur_rb=f;me.cur_rb.mytabs.items['Result'].expand();if(onload)onload(f);}} +if(me.cur_rb) +me.cur_rb.hide();if(me.rb_dict[dt]){me.rb_dict[dt].show(my_onload);}else{me.rb_dict[dt]=new _r.ReportBuilder(me.rb_area,dt,my_onload);}}} +_r.ReportBuilder=function(parent,doctype,onload){this.menuitems={};this.has_primary_filters=false;this.doctype=doctype;this.forbidden=0;this.filter_fields=[];this.filter_fields_dict={};var me=this;this.fn_list=['beforetableprint','beforerowprint','afterrowprint','aftertableprint','customize_filters','get_query'];this.wrapper=$a(parent,'div','finder_wrapper');this.make_tabs();this.current_loaded=null;this.setup_doctype(onload);this.hide=function(){$dh(me.wrapper);} +this.show=function(my_onload){$ds(me.wrapper);this.set_main_title('Report: '+get_doctype_label(me.doctype));if(my_onload)my_onload(me);}} +_r.ReportBuilder.prototype.make_tabs=function(){this.tab_wrapper=$a(this.wrapper,'div','finder_tab_area');this.mytabs=new TabbedPage(this.tab_wrapper);this.mytabs.add_item('Result',null,null,1);this.mytabs.add_item('More Filters',null,null,1);this.mytabs.add_item('Select Columns',null,null,1);this.mytabs.tabs=this.mytabs.items;} +_r.ReportBuilder.prototype.make_body=function(){this.set_main_title('Report: '+get_doctype_label(this.doctype));var me=this;this.make_save_criteria();this.column_picker=new _r.ReportColumnPicker(this);this.report_filters=new _r.ReportFilters(this);} +_r.ReportBuilder.prototype.make_save_criteria=function(){var me=this;this.sc_list=[];this.sc_dict={};for(var n in locals['Search Criteria']){var d=locals['Search Criteria'][n];if(d.doc_type==this.doctype){this.sc_list[this.sc_list.length]=d.criteria_name;this.sc_dict[d.criteria_name]=n;}}} +_r.ReportBuilder.prototype.save_criteria=function(save_as){var overwrite=0;if(this.current_loaded&&(!save_as)){var overwrite=confirm('Do you want to overwrite the saved criteria "'+this.current_loaded+'"');if(overwrite){var doc=locals['Search Criteria'][this.sc_dict[this.current_loaded]];var criteria_name=this.current_loaded;}} +if(!overwrite){var criteria_name=prompt('Select a name for the criteria:','');if(!criteria_name) +return;var dn=createLocal('Search Criteria');var doc=locals['Search Criteria'][dn];doc.criteria_name=criteria_name;doc.doc_type=this.doctype;} +var cl=[];var fl={};var t=this.column_picker.get_selected();for(var i=0;i3){for(var i=3;iShow Query: ';this.show_query=$a_input(d,'checkbox');this.show_query.checked=false;this.dt=new _r.DataTable(this.dt_area,'');this.dt.finder=this;this.dt.make_query=function(){var report=me;if(me.current_loaded&&me.sc_dict[me.current_loaded]){var sc=get_local('Search Criteria',me.sc_dict[me.current_loaded]);} +if(sc)me.dt.search_criteria=sc;else me.dt.search_criteria=null;if(sc&&sc.server_script)me.dt.server_script=sc.server_script;else me.dt.server_script=null;for(var i=0;i=';tmp1.bound='lower';var f2=copy_dict(f);f2.label='To '+f2.label;var tmp2=this.make_field_obj(f2,dt,my_div,is_custom);tmp2.sql_condition='<=';tmp2.bound='upper';} +_r.ReportFilters.prototype.add_numeric_field=function(cell,f,dt,is_custom){var my_div=$a(cell,'div','',{});var f1=copy_dict(f);f1.label=f1.label+' >=';var tmp1=this.make_field_obj(f1,dt,my_div,is_custom);tmp1.sql_condition='>=';tmp1.bound='lower';var f2=copy_dict(f);f2.label=f2.label+' <=';var tmp2=this.make_field_obj(f2,dt,my_div,is_custom);tmp2.sql_condition='<=';tmp2.bound='upper';} +_r.ReportFilters.prototype.make_field_obj=function(f,dt,parent,is_custom){var tmp=make_field(f,dt,parent,this.rb,false);tmp.not_in_form=1;tmp.in_filter=1;tmp.refresh();this.rb.filter_fields[this.rb.filter_fields.length]=tmp;this.rb.filter_fields_dict[f.parent+'\1'+f.label]=tmp;if(is_custom)tmp.is_custom=1;return tmp;} +_r.ReportFilters.prototype.add_field=function(f,dt,in_primary,is_custom){var me=this;if(f.in_first_page)in_primary=true;var fparent=this.filter_fields_area;if(in_primary){fparent=this.first_page_filter;this.rb.has_primary_filters=1;} +if(f.on_top){var cell=document.createElement('div');fparent.insertBefore(cell,fparent.firstChild);$y(cell,{width:'70%'});}else if(f.insert_before){var cell=document.createElement('div');fparent.insertBefore(cell,fparent[f.df.insert_before].filter_cell);$y(cell,{width:'70%'});} +else +var cell=$a(fparent,'div','',{width:'70%'});f.filter_cell=cell;if(f.fieldtype=='Date'){this.add_date_field(cell,f,dt);}else if(in_list(['Currency','Int','Float'],f.fieldtype)){this.add_numeric_field(cell,f,dt);}else if(!in_list(['Section Break','Column Break','Read Only','HTML','Table','Image','Button'],f.fieldtype)){var tmp=this.make_field_obj(f,dt,cell,is_custom);} +if(f.fieldname!='docstatus') +me.rb.orig_sort_list.push([f.label,'`tab'+f.parent+'`.`'+f.fieldname+'`']);if(f.def_filter) +tmp.input.checked=true;} +_r.ReportColumnPicker=function(rb){this.rb=rb;this.picker_area=$a(this.rb.mytabs.items['Select Columns'].body,'div','finder_picker_area');this.all_fields=[];this.sel_idx=0;this.make_body();} +_r.ReportColumnPicker.prototype.make_body=function(){var t=make_table(this.picker_area,1,3,'100%',['35%','30%','35%'],{verticalAlign:'middle',textAlign:'center'});$a($td(t,0,0),'h3','',{marginBottom:'8px'}).innerHTML='Columns';this.unsel_fields=$a($td(t,0,0),'select','',{height:'200px',width:'100%',border:'1px solid #AAA'});this.unsel_fields.multiple=true;this.unsel_fields.onchange=function(){for(var i=0;iAdd >';this.add_btn.onclick=function(){me.move(me.unsel_fields,'add');} +this.remove_btn=$a($a($td(t,0,1),'div'),'button','',{width:'110px'});this.remove_btn.innerHTML='< Remove';this.remove_btn.onclick=function(){me.move(me.sel_fields,'remove');} +this.remove_all=$a($a($td(t,0,1),'div'),'button','',{width:'40px'});this.remove_all.innerHTML='<<';this.remove_all.onclick=function(){me.move(me.sel_fields,'remove',1);} +this.dn_btn=$a($a($td(t,0,1),'div'),'button','',{width:'70px'});this.dn_btn.innerHTML='Down ↓';this.dn_btn.onclick=function(){me.move_down();} +$a($td(t,0,2),'h3','',{marginBottom:'8px'}).innerHTML='Selected Columns';this.sel_fields=$a($td(t,0,2),'select','',{height:'200px',width:'100%',border:'1px solid #AAA'});this.sel_fields.multiple=true;this.sel_fields.onchange=function(){for(var i=0;i=0;i--){if(s.options[i].selected){this.get_by_sel_idx(s,i+1).sel_idx--;s.options[i].field.sel_idx++;}} +this.refresh();} +_r.ReportColumnPicker.prototype.move=function(s,type,all){for(var i=0;i
    Please click on 'Export' to open in a spreadsheet");return;} +_r.rb_con.cur_rb.mytabs.items['Result'].expand();} +var me=this;this._get_query();if(this.set_data){this.show_result(this.set_data);this.set_data=null;return;} +$ds(this.fetching_tag);if($.browser.mozilla)this.clear_all();var args={'query':me.query,'report_name':'_r.DataTable','show_deleted':1,'sc_id':me.search_criteria?me.search_criteria.name:'','filter_values':me.filter_vals?docstring(me.filter_vals):'','roles':'["'+user_roles.join('","')+'"]'} +if(this.is_simple)args.is_simple=1;$c('webnotes.widgets.query_builder.runquery',args,function(r,rt){$dh(me.fetching_tag);me.show_result(r,rt);});} +_r.DataTable.prototype.clear_all=function(){if(this.htab&&this.htab.parentNode){this.htab.parentNode.removeChild(this.htab);delete this.htab;} +if(this.tab&&this.tab.parentNode){this.tab.parentNode.removeChild(this.tab);delete this.tab;} +$dh(this.no_data_tag);} +_r.DataTable.prototype.has_data=function(){if(this.htab&&this.htab.rows.length)return 1;else return 0;} +_r.DataTable.prototype.show_result=function(r,rt){var me=this;this.clear_all();this.rset=eval(r.values);if(this.rset&&this.rset.length){if(this.has_headings){this.htab=$a(this.hwrapper,'table');$y(this.twrapper,{top:'25px',borderTop:'0px'});} +this.tab=$a(this.twrapper,'table');this.colwidths=eval(r.colwidths);this.coltypes=eval(r.coltypes);this.coloptions=eval(r.coloptions);this.colnames=eval(r.colnames);$y(this.tab,{tableLayout:'fixed'});if(this.beforetableprint)this.beforetableprint(this);if(this.has_headings)this.make_head_tab(this.colnames);var start=this.start_rec;var rset_len=this.rset.length;if(rset_len>1000){msgprint("Showing only 1000 records out of "+rset_len+". Use 'Export' to see all records");rset_len=1000;} +for(var vi=0;vi=this.page_len)this.has_next=true;if(r.style){for(var i=0;imaxv)maxv=v;if(v\ +

    Try before you buy. \ +Request a 30-day Free Trial.


    \ +\ + \ + \ + \ + \ +\ +\ +

    Note: Free trials usually take one business day to setup. \ +Please fill out your genuine information because we verify \ +your name and company before setting up a demo to \ +ensure that spammers don\'t crash our servers. \ +If you would like to see something right now, \ +jump to the demo.

    \ +\ +

    \ + ERPNext Goodies: ' + ++ goodies[parseInt(Math.random() * goodies.length)]+ + +'

    \ +'); + + // bind the events + + $('#page-'+page_name+' .btn-request').click(function() { + + var page = $('#page-' + wn.container.page.page_name); + var args = { + sender_name: page.find('[name="sender_name"]').val(), + company_name: page.find('[name="company_name"]').val(), + email: page.find('[name="email"]').val(), + password: page.find('[name="password"]').val() + } + + if(!(args.sender_name && args.company_name && args.email && args.password)) { + msgprint("All fields are necessary. Please try again."); + return; + } + + + erpnext.send_message({ + subject:'New Trial Request', + sender: page.find('[name="sender_name"]').val(), + message: args, + callback: function() { + page.find(':input').val(''); + } + }); + }); +} \ No newline at end of file diff --git a/rss.xml b/public/rss.xml similarity index 78% rename from rss.xml rename to public/rss.xml index 2aa7eadc07..3045069470 100755 --- a/rss.xml +++ b/public/rss.xml @@ -21,7 +21,8 @@ import cgi, cgitb, os, sys cgitb.enable() # import libs -sys.path.append('lib/py') +sys.path.append('..') +sys.path.append('../lib/py') import webnotes import webnotes.auth @@ -29,7 +30,13 @@ import webnotes.auth if __name__=='__main__': webnotes.http_request = webnotes.auth.HTTPRequest() from webnotes.cms import feed - xml = feed.generate() - print 'Content-Type: text/xml' - print - print xml \ No newline at end of file + try: + print 'Content-Type: text/xml' + print + xml = feed.generate() + print xml + except Exception, e: + print 'Content-Type: text/html' + print + import webnotes.utils + print webnotes.utils.getTraceback() \ No newline at end of file diff --git a/sitemap.xml b/public/sitemap.xml similarity index 95% rename from sitemap.xml rename to public/sitemap.xml index d3e09fd879..09ce39a8b9 100755 --- a/sitemap.xml +++ b/public/sitemap.xml @@ -20,7 +20,8 @@ import cgi, cgitb, os, sys cgitb.enable() # import libs -sys.path.append('lib/py') +sys.path.append('..') +sys.path.append('../lib/py') import webnotes import webnotes.auth diff --git a/unsupported.html b/public/unsupported.html similarity index 100% rename from unsupported.html rename to public/unsupported.html diff --git a/temp.py b/temp.py deleted file mode 100644 index b6080f013f..0000000000 --- a/temp.py +++ /dev/null @@ -1,57 +0,0 @@ -license = """ERPNext - web based ERP (http://erpnext.com) -Copyright (C) 2012 Web Notes Technologies Pvt Ltd - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see .""" - -license2 = """Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com) - -MIT License (MIT) - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -""" - - -if __name__=='__main__': - import os - #clicense = '\n'.join([('# ' + l) for l in license2.split('\n')]) - cnt = 0 - for wt in os.walk('.'): - for fname in wt[2]: - if fname.endswith('.js'): - cnt += 1 - #path = os.path.join(wt[0], fname) - #with open(path, 'r') as codefile: - # codetxt = codefile.read() - - #if codetxt.strip(): - # with open(path, 'w') as codefile: - # codefile.write(clicense + '\n\n' + codetxt) - - # print 'updated in ' + path - print cnt diff --git a/todo.md b/todo.md deleted file mode 100644 index 9e2c9065e6..0000000000 --- a/todo.md +++ /dev/null @@ -1,18 +0,0 @@ -x icons - msgprint / toolbar -x history integration -x loading bar -x blank.html issues -x double (init) loading issue -x redirect (sid) issue -x new buttons -x tinymce issues -x breakup - form -x breakup - report - -- menus & integration with feature settings - -- release - -- use wn.require to load forms, reports -- use wn.xmlhttp -- try and breakup wnframework \ No newline at end of file