Merged with helma/master
This commit is contained in:
		
							parent
							
								
									ff7bba76cf
								
							
						
					
					
						commit
						59d127e089
					
				
					 11 changed files with 75 additions and 241 deletions
				
			
		
							
								
								
									
										5
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,8 +1,3 @@
 | 
				
			||||||
.*
 | 
					 | 
				
			||||||
apps
 | 
					 | 
				
			||||||
db/*
 | 
					 | 
				
			||||||
lib/ext
 | 
					 | 
				
			||||||
modules/
 | 
					 | 
				
			||||||
server.properties
 | 
					server.properties
 | 
				
			||||||
classes/*
 | 
					classes/*
 | 
				
			||||||
launcher.jar
 | 
					launcher.jar
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,9 +0,0 @@
 | 
				
			||||||
[submodule "modules"]
 | 
					 | 
				
			||||||
	path = modules
 | 
					 | 
				
			||||||
	url = ./modules
 | 
					 | 
				
			||||||
[submodule "swarm"]
 | 
					 | 
				
			||||||
	path = swarm
 | 
					 | 
				
			||||||
	url = ./swarm
 | 
					 | 
				
			||||||
[submodule "apps"]
 | 
					 | 
				
			||||||
	path = apps
 | 
					 | 
				
			||||||
	url = ./apps
 | 
					 | 
				
			||||||
							
								
								
									
										17
									
								
								modules/README
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								modules/README
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					<p>HelmaLib is organized into two groups of modules:</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<ul>
 | 
				
			||||||
 | 
					<li>modules/core which contains extensions to core JavaScript types such as
 | 
				
			||||||
 | 
					Object, Array, or Date.</li>
 | 
				
			||||||
 | 
					<li>modules/helma which provides new functionality to JavaScript, usually by
 | 
				
			||||||
 | 
					wrapping a Java library.</li>
 | 
				
			||||||
 | 
					</ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<p>To use a HelmaLib module in your Helma application, you need to add it to the
 | 
				
			||||||
 | 
					app's repositories. The simplest way to do so is by using the app.addRepository()
 | 
				
			||||||
 | 
					function:</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<pre>  app.addRepository("modules/helma/Search.js");</pre>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<p>If you are looking for more Helma libraries, be sure to check out the
 | 
				
			||||||
 | 
					<a href="https://opensvn.csie.org/traccgi/jala/wiki">Jala project</a>!</p>
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,6 @@
 | 
				
			||||||
 * @addon
 | 
					 * @addon
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Check if this array contains a specific value.
 | 
					 * Check if this array contains a specific value.
 | 
				
			||||||
 * @param {Object} val the value to check
 | 
					 * @param {Object} val the value to check
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,7 +118,7 @@ function escapeXml_filter(input) {
 | 
				
			||||||
 * @see http://www.google.com/codesearch?q=escapeHtml
 | 
					 * @see http://www.google.com/codesearch?q=escapeHtml
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function escapeHtml_filter(input) {
 | 
					function escapeHtml_filter(input) {
 | 
				
			||||||
   var replace = Packages.org.mortbay.util.StringUtil.replace;
 | 
					   var replace = Packages.org.eclipse.jetty.util.StringUtil.replace;
 | 
				
			||||||
   var str = (input || "").toString();
 | 
					   var str = (input || "").toString();
 | 
				
			||||||
   return replace(replace(replace(replace(str, '&', '&'), '"', '"'), '>', '>'), '<', '<');
 | 
					   return replace(replace(replace(replace(str, '&', '&'), '"', '"'), '>', '>'), '<', '<');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -145,7 +145,7 @@ function escapeUrl_filter(input, param, charset) {
 | 
				
			||||||
 * definitions.
 | 
					 * definitions.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function escapeJavaScript_filter(input) {
 | 
					function escapeJavaScript_filter(input) {
 | 
				
			||||||
   var replace = Packages.org.mortbay.util.StringUtil.replace;
 | 
					   var replace = Packages.org.eclipse.jetty.util.StringUtil.replace;
 | 
				
			||||||
   var str = (input || "").toString();
 | 
					   var str = (input || "").toString();
 | 
				
			||||||
   return replace(replace(replace(replace(replace(str, '"', '\\"'), "'", "\\'"), '\n', '\\n'), '\r', '\\r'), '\t', '\\t');
 | 
					   return replace(replace(replace(replace(replace(str, '"', '\\"'), "'", "\\'"), '\n', '\\n'), '\r', '\\r'), '\t', '\\t');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -155,7 +155,7 @@ function escapeJavaScript_filter(input) {
 | 
				
			||||||
 * Replaces linebreaks with HTML linebreaks.
 | 
					 * Replaces linebreaks with HTML linebreaks.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function linebreakToHtml_filter(input) {
 | 
					function linebreakToHtml_filter(input) {
 | 
				
			||||||
   var replace = Packages.org.mortbay.util.StringUtil.replace;
 | 
					   var replace = Packages.org.eclipse.jetty.util.StringUtil.replace;
 | 
				
			||||||
   var str = (input || "").toString();
 | 
					   var str = (input || "").toString();
 | 
				
			||||||
   return replace(str, '\n', '<br />');
 | 
					   return replace(str, '\n', '<br />');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -171,7 +171,7 @@ function replace_filter(input, param, oldString, newString) {
 | 
				
			||||||
   var str = (input || "").toString();
 | 
					   var str = (input || "").toString();
 | 
				
			||||||
   var oldString = param["old"] != null ? param["old"] : oldString;
 | 
					   var oldString = param["old"] != null ? param["old"] : oldString;
 | 
				
			||||||
   var newString = param["new"] != null ? param["new"] : newString;
 | 
					   var newString = param["new"] != null ? param["new"] : newString;
 | 
				
			||||||
   var replace = Packages.org.mortbay.util.StringUtil.replace;
 | 
					   var replace = Packages.org.eclipse.jetty.util.StringUtil.replace;
 | 
				
			||||||
   return replace(str, oldString, newString);
 | 
					   return replace(str, oldString, newString);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,179 +1,2 @@
 | 
				
			||||||
/*
 | 
					// This file intentionally left blank to prevent legacy code from 
 | 
				
			||||||
 * Helma License Notice
 | 
					// breaking when trying to include the obsolete JSON module.
 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * The contents of this file are subject to the Helma License
 | 
					 | 
				
			||||||
 * Version 2.0 (the "License"). You may not use this file except in
 | 
					 | 
				
			||||||
 * compliance with the License. A copy of the License is available at
 | 
					 | 
				
			||||||
 * http://adele.helma.org/download/helma/license.txt
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Copyright 1998-2006 Helma Software. All Rights Reserved.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * $RCSfile: JSON.js,v $
 | 
					 | 
				
			||||||
 * $Author$
 | 
					 | 
				
			||||||
 * $Revision$
 | 
					 | 
				
			||||||
 * $Date$
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @fileoverview Adds JSON methods to the Object, Array and String prototypes.
 | 
					 | 
				
			||||||
 * <br /><br />
 | 
					 | 
				
			||||||
 * To use this optional module, its repository needs to be added to the 
 | 
					 | 
				
			||||||
 * application, for example by calling app.addRepository('modules/core/JSON.js')
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
    json.js
 | 
					 | 
				
			||||||
    2006-04-28 [http://www.json.org/json.js]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    This file adds these methods to JavaScript:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        object.toJSON()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            This method produces a JSON text from an object. The
 | 
					 | 
				
			||||||
            object must not contain any cyclical references.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        array.toJSON()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            This method produces a JSON text from an array. The
 | 
					 | 
				
			||||||
            array must not contain any cyclical references.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        string.parseJSON()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            This method parses a JSON text to produce an object or
 | 
					 | 
				
			||||||
            array. It will return false if there is an error.
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(function () {
 | 
					 | 
				
			||||||
    var m = {
 | 
					 | 
				
			||||||
        '\b': '\\b',
 | 
					 | 
				
			||||||
        '\t': '\\t',
 | 
					 | 
				
			||||||
        '\n': '\\n',
 | 
					 | 
				
			||||||
        '\f': '\\f',
 | 
					 | 
				
			||||||
        '\r': '\\r',
 | 
					 | 
				
			||||||
        '"' : '\\"',
 | 
					 | 
				
			||||||
        '\\': '\\\\'
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    s = {
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * @ignore
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        array: function (x) {
 | 
					 | 
				
			||||||
            var a = ['['], b, f, i, l = x.length, v;
 | 
					 | 
				
			||||||
            for (i = 0; i < l; i += 1) {
 | 
					 | 
				
			||||||
                v = x[i];
 | 
					 | 
				
			||||||
                f = s[typeof v];
 | 
					 | 
				
			||||||
                if (f) {
 | 
					 | 
				
			||||||
                    v = f(v);
 | 
					 | 
				
			||||||
                    if (typeof v == 'string') {
 | 
					 | 
				
			||||||
                        if (b) {
 | 
					 | 
				
			||||||
                            a[a.length] = ',';
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        a[a.length] = v;
 | 
					 | 
				
			||||||
                        b = true;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            a[a.length] = ']';
 | 
					 | 
				
			||||||
            return a.join('');
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        'boolean': function (x) {
 | 
					 | 
				
			||||||
            return String(x);
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        'null': function (x) {
 | 
					 | 
				
			||||||
            return "null";
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * @ignore
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        number: function (x) {
 | 
					 | 
				
			||||||
            return isFinite(x) ? String(x) : 'null';
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * @ignore
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        object: function (x) {
 | 
					 | 
				
			||||||
            if (x) {
 | 
					 | 
				
			||||||
                if (x instanceof Array) {
 | 
					 | 
				
			||||||
                    return s.array(x);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                var a = ['{'], b, f, i, v;
 | 
					 | 
				
			||||||
                for (i in x) {
 | 
					 | 
				
			||||||
                    v = x[i];
 | 
					 | 
				
			||||||
                    f = s[typeof v];
 | 
					 | 
				
			||||||
                    if (f) {
 | 
					 | 
				
			||||||
                        v = f(v);
 | 
					 | 
				
			||||||
                        if (typeof v == 'string') {
 | 
					 | 
				
			||||||
                            if (b) {
 | 
					 | 
				
			||||||
                                a[a.length] = ',';
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            a.push(s.string(i), ':', v);
 | 
					 | 
				
			||||||
                            b = true;
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                a[a.length] = '}';
 | 
					 | 
				
			||||||
                return a.join('');
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return 'null';
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        /**
 | 
					 | 
				
			||||||
         * @ignore
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        string: function (x) {
 | 
					 | 
				
			||||||
            if (/["\\\x00-\x1f]/.test(x)) {
 | 
					 | 
				
			||||||
                x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
 | 
					 | 
				
			||||||
                    var c = m[b];
 | 
					 | 
				
			||||||
                    if (c) {
 | 
					 | 
				
			||||||
                        return c;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    c = b.charCodeAt();
 | 
					 | 
				
			||||||
                    return '\\u00' +
 | 
					 | 
				
			||||||
                        Math.floor(c / 16).toString(16) +
 | 
					 | 
				
			||||||
                        (c % 16).toString(16);
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return '"' + x + '"';
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * This method produces a JSON text from an object. 
 | 
					 | 
				
			||||||
     * The object must not contain any cyclical references.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    Object.prototype.toJSON = function () {
 | 
					 | 
				
			||||||
        return s.object(this);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * This method produces a JSON text from an array. 
 | 
					 | 
				
			||||||
     * The array must not contain any cyclical references.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    Array.prototype.toJSON = function () {
 | 
					 | 
				
			||||||
        return s.array(this);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Object.prototype.dontEnum("toJSON");
 | 
					 | 
				
			||||||
    Array.prototype.dontEnum("toJSON");
 | 
					 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
})();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * This method parses a JSON text to produce an object or
 | 
					 | 
				
			||||||
 * array. It will return false if there is an error.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
String.prototype.parseJSON = function () {
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
        return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(this.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + this + ')');
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
        return false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
String.prototype.dontEnum("parseJSON");
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,38 +31,39 @@
 | 
				
			||||||
Object.prototype.clone = function(clone, recursive) {
 | 
					Object.prototype.clone = function(clone, recursive) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var getValue = function(value, recursive) {
 | 
					    var getValue = function(value, recursive) {
 | 
				
			||||||
      if ((value == null || typeof(value) !== "object") || recursive !== true) {
 | 
					        if (recursive !== true || value == null
 | 
				
			||||||
 | 
					                || (typeof (value) !== "object" && typeof (value) !== "function")) {
 | 
				
			||||||
            return value;
 | 
					            return value;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return value.clone(null, recursive);
 | 
					        return value.clone(null, recursive);
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   if (typeof(this) === "object") {
 | 
					    if (typeof (this) === "object") {
 | 
				
			||||||
 | 
					        if (this === null) {
 | 
				
			||||||
 | 
					            return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        switch (this.constructor) {
 | 
					        switch (this.constructor) {
 | 
				
			||||||
 | 
					            case String:
 | 
				
			||||||
 | 
					            case Number:
 | 
				
			||||||
 | 
					            case Boolean:
 | 
				
			||||||
 | 
					            case Date:
 | 
				
			||||||
 | 
					                return new this.constructor(this.valueOf());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            case Array:
 | 
					            case Array:
 | 
				
			||||||
                return this.map(function(value) {
 | 
					                return this.map(function(value) {
 | 
				
			||||||
                    return getValue(value, recursive);
 | 
					                    return getValue(value, recursive);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         case null: // e.g. macro parameter objects
 | 
					            default:
 | 
				
			||||||
            if (clone == null) {
 | 
					 | 
				
			||||||
               clone = {};
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            // continue below
 | 
					 | 
				
			||||||
         case Object:
 | 
					 | 
				
			||||||
         case HopObject:
 | 
					 | 
				
			||||||
                if (clone == null) {
 | 
					                if (clone == null) {
 | 
				
			||||||
                    clone = new this.constructor();
 | 
					                    clone = new this.constructor();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            for (var propName in this) {
 | 
					                for ( var propName in this) {
 | 
				
			||||||
                    clone[propName] = getValue(this[propName], recursive);
 | 
					                    clone[propName] = getValue(this[propName], recursive);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                return clone;
 | 
					                return clone;
 | 
				
			||||||
 | 
					 | 
				
			||||||
         default:
 | 
					 | 
				
			||||||
            return new this.constructor(this.valueOf());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
   } else if (typeof(this) === "function" && this.constructor === RegExp) {
 | 
					    } else if (typeof (this) === "function" && this.constructor === RegExp) {
 | 
				
			||||||
        return new RegExp(this.valueOf());
 | 
					        return new RegExp(this.valueOf());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
| 
						 | 
					@ -78,12 +79,11 @@ Object.prototype.clone = function(clone, recursive) {
 | 
				
			||||||
Object.prototype.reduce = function(recursive) {
 | 
					Object.prototype.reduce = function(recursive) {
 | 
				
			||||||
    var result = {};
 | 
					    var result = {};
 | 
				
			||||||
    for (var i in this) {
 | 
					    for (var i in this) {
 | 
				
			||||||
        if (this[i] instanceof HopObject == false) {
 | 
					        if (this[i] instanceof HopObject == false)
 | 
				
			||||||
            result[i] = this[i];
 | 
					            result[i] = this[i];
 | 
				
			||||||
        } else if (recursive) {
 | 
					        else if (recursive)
 | 
				
			||||||
            result[i] = this.reduce(true);
 | 
					            result[i] = this.reduce(true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return result;
 | 
					    return result;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,5 +24,4 @@ app.addRepository('modules/core/Object.js');
 | 
				
			||||||
app.addRepository('modules/core/String.js');
 | 
					app.addRepository('modules/core/String.js');
 | 
				
			||||||
app.addRepository('modules/core/HopObject.js');
 | 
					app.addRepository('modules/core/HopObject.js');
 | 
				
			||||||
app.addRepository('modules/core/Global.js');
 | 
					app.addRepository('modules/core/Global.js');
 | 
				
			||||||
app.addRepository('modules/core/JSON.js');
 | 
					 | 
				
			||||||
app.addRepository('modules/core/Filters.js');
 | 
					app.addRepository('modules/core/Filters.js');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -477,7 +477,13 @@ helma.Html.prototype.dropDown = function(param, options, selectedValue, firstOpt
 | 
				
			||||||
        this.closeTag("option");
 | 
					        this.closeTag("option");
 | 
				
			||||||
        res.write("\n ");
 | 
					        res.write("\n ");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    var hasOpenGroup = false;
 | 
				
			||||||
    for (var i in options) {
 | 
					    for (var i in options) {
 | 
				
			||||||
 | 
					        if (options[i].group) {
 | 
				
			||||||
 | 
					            hasOpenGroup && html.closeTag("optgroup");
 | 
				
			||||||
 | 
					            html.openTag("optgroup", {label: options[i].group});
 | 
				
			||||||
 | 
					            hasOpenGroup = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        var attr = new Object();
 | 
					        var attr = new Object();
 | 
				
			||||||
        var display = "";
 | 
					        var display = "";
 | 
				
			||||||
        if ((options[i] instanceof Array) && options[i].length > 0) {
 | 
					        if ((options[i] instanceof Array) && options[i].length > 0) {
 | 
				
			||||||
| 
						 | 
					@ -503,6 +509,7 @@ helma.Html.prototype.dropDown = function(param, options, selectedValue, firstOpt
 | 
				
			||||||
        this.closeTag("option");
 | 
					        this.closeTag("option");
 | 
				
			||||||
        res.write("\n ");
 | 
					        res.write("\n ");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    hasOpenGroup && html.closeTag("optgroup");
 | 
				
			||||||
    this.closeTag("select");
 | 
					    this.closeTag("select");
 | 
				
			||||||
    res.write("\n ");
 | 
					    res.write("\n ");
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,7 +61,9 @@ helma.Http = function() {
 | 
				
			||||||
    var responseHandler = function(connection, result) {
 | 
					    var responseHandler = function(connection, result) {
 | 
				
			||||||
       var input;
 | 
					       var input;
 | 
				
			||||||
       try {
 | 
					       try {
 | 
				
			||||||
 | 
					          if (method !== 'DELETE') {
 | 
				
			||||||
             input = new java.io.BufferedInputStream(connection.getInputStream());
 | 
					             input = new java.io.BufferedInputStream(connection.getInputStream());
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
       } catch (error) {
 | 
					       } catch (error) {
 | 
				
			||||||
          input = new java.io.BufferedInputStream(connection.getErrorStream());
 | 
					          input = new java.io.BufferedInputStream(connection.getErrorStream());
 | 
				
			||||||
       }
 | 
					       }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								modules/lib3k
									
										
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								modules/lib3k
									
										
									
									
									
										Symbolic link
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					/Users/tobi/Projects/helma/modules/lib3k
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue