From b3ef2ee644ba8746a7a2b5ddba4a6c509f121b0e Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sat, 2 Jul 2011 21:46:15 +0530 Subject: [PATCH] fixed getjsfile --- cgi-bin/get_module_js.cgi | 98 +++++++++++++++++++++++++++++++++++++++ cgi-bin/getjsfile.cgi | 38 +++------------ js/wn/widgets/dialog.js | 2 +- js/wnf.compressed.js | 2 +- 4 files changed, 106 insertions(+), 34 deletions(-) create mode 100755 cgi-bin/get_module_js.cgi mode change 100755 => 100644 cgi-bin/getjsfile.cgi diff --git a/cgi-bin/get_module_js.cgi b/cgi-bin/get_module_js.cgi new file mode 100755 index 0000000000..2845026485 --- /dev/null +++ b/cgi-bin/get_module_js.cgi @@ -0,0 +1,98 @@ +#!/usr/bin/python + +import cgi +import datetime +import os + +try: + + form = cgi.FieldStorage() + out = '' + out_buf, str_out = '', '' + jsdir='../js' + jsonout= {} + + # Traceback + # --------- + 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 + + def load_js_from_file(module_name): + global out + global jsonout + import webnotes.utils.jsnamespace as jsn + filename = jsn.jsNamespace.modname_to_filename(module_name,jsdir) + import os + try: + f = open(os.path.join(filename)) + try: + out = f.read() + finally: + f.close() + except IOError,e: + out = "Not Found: %s" % filename + jsonout[module_name]=out + + def load_js_module(module_name): + global jsonout + from webnotes import defs + devmode = getattr(defs,'developer_mode') + if devmode: + import compilejs + compilejs.wnJSCompiler.compilejs(jsdir) + if module_name not in jsonout: + dependent_mods = get_dependencies(module_name) + for module in dependent_mods: + load_js_from_file(module) + load_js_from_file(module_name) + + def get_dependencies(module_name): + import webnotes.utils.jsdependency as jsd + ret = jsd.jsDependencyBuilder.build_dependency(jsdir,module_name) + return ret + + + def compress_string(buf): + import gzip, cStringIO + zbuf = cStringIO.StringIO() + zfile = gzip.GzipFile(mode = 'wb', fileobj = zbuf, compresslevel = 5) + zfile.write(buf) + zfile.close() + return zbuf.getvalue() + + compress = 0 + try: + if string.find(os.environ["HTTP_ACCEPT_ENCODING"], "gzip") != -1: + compress = 1 + except: + pass + + load_js_module(form.getvalue('module')) + #load_js_module('wn.modules') + + if compress and len(out)>512: + out_buf = compress_string(str_out) + print "Content-Encoding: gzip" + print "Content-Length: %d" % (len(out_buf)) + + print "Content-Type: text/javascript" + + # Headers end + print + + if out_buf: + sys.stdout.write(out_buf) + elif out: + import json + print json.dumps(jsonout) + +except Exception, e: + print "Content-Type: text/javascript" + print + print getTraceback()#.replace('\n','
') diff --git a/cgi-bin/getjsfile.cgi b/cgi-bin/getjsfile.cgi old mode 100755 new mode 100644 index 2845026485..0e1594fc04 --- a/cgi-bin/getjsfile.cgi +++ b/cgi-bin/getjsfile.cgi @@ -9,8 +9,6 @@ try: form = cgi.FieldStorage() out = '' out_buf, str_out = '', '' - jsdir='../js' - jsonout= {} # Traceback # --------- @@ -23,40 +21,18 @@ try: body = body + "%-20s %s" % (string.join(list[:-1], ""), list[-1]) return body - def load_js_from_file(module_name): + def load_js_file(): global out - global jsonout - import webnotes.utils.jsnamespace as jsn - filename = jsn.jsNamespace.modname_to_filename(module_name,jsdir) + filename = form.getvalue('filename') import os try: - f = open(os.path.join(filename)) + f = open(os.path.join('../js/', filename)) try: out = f.read() finally: f.close() except IOError,e: out = "Not Found: %s" % filename - jsonout[module_name]=out - - def load_js_module(module_name): - global jsonout - from webnotes import defs - devmode = getattr(defs,'developer_mode') - if devmode: - import compilejs - compilejs.wnJSCompiler.compilejs(jsdir) - if module_name not in jsonout: - dependent_mods = get_dependencies(module_name) - for module in dependent_mods: - load_js_from_file(module) - load_js_from_file(module_name) - - def get_dependencies(module_name): - import webnotes.utils.jsdependency as jsd - ret = jsd.jsDependencyBuilder.build_dependency(jsdir,module_name) - return ret - def compress_string(buf): import gzip, cStringIO @@ -73,8 +49,7 @@ try: except: pass - load_js_module(form.getvalue('module')) - #load_js_module('wn.modules') + load_js_file() if compress and len(out)>512: out_buf = compress_string(str_out) @@ -89,10 +64,9 @@ try: if out_buf: sys.stdout.write(out_buf) elif out: - import json - print json.dumps(jsonout) + print out except Exception, e: print "Content-Type: text/javascript" print - print getTraceback()#.replace('\n','
') + print getTraceback().replace('\n','
') diff --git a/js/wn/widgets/dialog.js b/js/wn/widgets/dialog.js index e2c69b6ed1..955e6a4ff4 100644 --- a/js/wn/widgets/dialog.js +++ b/js/wn/widgets/dialog.js @@ -64,7 +64,7 @@ wn.widgets.Dialog = function(opts) { this.wrapper = $a(popup_cont, 'div', 'dialog_wrapper'); if(this.opts.width) - $w(this.wrapper, this.opts.width + 'px'); + this.wrapper.style.width = this.opts.width + 'px'; this.make_head(); this.body = $a(this.wrapper, 'div', 'dialog_body'); diff --git a/js/wnf.compressed.js b/js/wnf.compressed.js index b9eb6294ba..94ee3dc2d0 100644 --- a/js/wnf.compressed.js +++ b/js/wnf.compressed.js @@ -350,7 +350,7 @@ return ret;} this.set_value=function(key,val){var f=this.fields_dict[key];if(f){f.set_input(val);f.refresh_mandatory();}} this.set_values=function(dict){for(var key in dict){if(this.fields_dict[key]){this.set_value(key,dict[key]);}}}} wn.widgets.Dialog=function(opts){this.opts=opts;this.display=false;this.make=function(opts){if(opts)this.opts=opts;this.wrapper=$a(popup_cont,'div','dialog_wrapper');if(this.opts.width) -$w(this.wrapper,this.opts.width+'px');this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields) +this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields) this.make_fields(this.body,this.opts.fields);} this.make_head=function(){var me=this;this.head=$a(this.wrapper,'div','dialog_head');var t=make_table(this.head,1,2,'100%',['100%','16px'],{padding:'2px'});$y($td(t,0,0),{paddingLeft:'16px',fontWeight:'bold',fontSize:'14px',textAlign:'center'});$y($td(t,0,1),{textAlign:'right'});var img=$a($td(t,0,01),'img','',{cursor:'pointer'});img.src='images/icons/close.gif';this.title_text=$td(t,0,0);this.set_title(this.opts.title);img.onclick=function(){if(me.oncancel)me.oncancel();me.hide();} this.cancel_img=img;}