Author: max
Date: 2007-10-18 11:00:19 -0700 (Thu, 18 Oct 2007)
New Revision: 6904

Modified:
   openlaszlo/branches/wafflecone/
   openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/Library.lzs
   
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
   
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
   openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
   openlaszlo/branches/wafflecone/lps/admin/dev-console.lzx.swf
   openlaszlo/branches/wafflecone/lps/components/extensions/html.lzx
   openlaszlo/branches/wafflecone/lps/components/extensions/test/html-swf.jsp
   openlaszlo/branches/wafflecone/lps/components/extensions/test/html.lzx
   openlaszlo/branches/wafflecone/lps/includes/source/embednew.js
   openlaszlo/branches/wafflecone/lps/includes/source/iframemanager.js
   openlaszlo/branches/wafflecone/lps/includes/source/lzhistory.js
Log:
Change 20071017-maxcarlson-F by [EMAIL PROTECTED] on 2007-10-17 17:03:38 PDT
    in /Users/maxcarlson/openlaszlo/waffleconeclean
    for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone

Summary: Move html tag fixes to wafflecone

New Features:

Bugs Fixed:

Technical Reviewer: promanik
QA Reviewer: jcrowley
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details: plastik:~/openlaszlo/waffleconeclean maxcarlson$ svnmerge.py merge -r 
6531,6683,6715 -S ../trunk
C    WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
C    lps/includes/source/embednew.js
C    lps/includes/source/lzhistory.js

C    WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
C    lps/includes/source/embednew.js
C    lps/includes/source/lzhistory.js

U    WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
U    WEB-INF/lps/lfc/kernel/swf/dojo/Library.lzs
C    WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
U    WEB-INF/lps/lfc/views/LaszloCanvas.lzs
U    lps/components/extensions/test/html.lzx
U    lps/components/extensions/test/html-swf.jsp
C    lps/components/extensions/html.lzx
G    lps/includes/source/embednew.js
C    lps/includes/source/lzhistory.js
U    lps/includes/source/iframemanager.js
U    lps/admin/dev-console.lzx.swf

property 'svnmerge-integrated' set on '.'

Cleaned up conflicts in WEB-INF/lps/lfc/services/platform/swf/LzHistory.as, 
lps/includes/source/embednew.js, lps/includes/source/lzhistory.js and 
lps/components/extensions/html.lzx.  Diffed against trunk to verify all changes 
made it.

Tests: 
http://localhost:8080/trunk-clean/lps/components/extensions/test/html-swf.jsp 
and http://localhost:8080/trunk-clean/lps/components/extensions/test/html.zlx 
run in swf7, swf8 and dhtml.  
http://localhost:8080/trunk-clean/test/history/history.lzx passes in swf7, swf8 
and dhtml.  Tested under IE 6, 7 and Firefox 2 OS X.




Property changes on: openlaszlo/branches/wafflecone
___________________________________________________________________
Name: svnmerge-integrated
   - 
/openlaszlo/branches/legals:1-5746,5748-5756,5758-5770,5772-5819,5821-5860,5862-5890,5892-6065,6068-6177,6179-6228,6230-6236,6241-6266
 
/openlaszlo/trunk:1-3892,3894-3952,3954-4393,4395-4461,4463-4467,4469-4471,4473-5085,5087-5171,5173-5203,5205-5209,5211-5331,5333-5334,6595-6602,6676
   + 
/openlaszlo/branches/legals:1-5746,5748-5756,5758-5770,5772-5819,5821-5860,5862-5890,5892-6065,6068-6177,6179-6228,6230-6236,6241-6266
 
/openlaszlo/trunk:1-3892,3894-3952,3954-4393,4395-4461,4463-4467,4469-4471,4473-5085,5087-5171,5173-5203,5205-5209,5211-5331,5333-5334,6531-6532,6534-6538,6540-6547,6549,6551-6558,6560-6567,6569-6581,6583-6586,6588,6590-6603,6605-6607,6610-6611,6613-6622,6624-6629,6632-6636,6638-6639,6641-6642,6646-6648,6653,6656-6663,6665-6669,6671-6683,6685-6686,6688-6706,6708-6715

Modified: 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/Library.lzs
===================================================================
--- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/Library.lzs  
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/Library.lzs  
2007-10-18 18:00:19 UTC (rev 6904)
@@ -1,5 +1,5 @@
 //* A_LZ_COPYRIGHT_BEGIN ******************************************************
-//* Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.            *
+//* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.            *
 //* Use is subject to license terms.                                          *
 //* A_LZ_COPYRIGHT_END ********************************************************
 
@@ -9,3 +9,7 @@
 } else {
     #include "kernel/swf/dojo/flash6/DojoExternalInterface.as"
 }
+
+// required for GetVariable to not fail in IE/ActiveX
+_root._currenthistory = null;
+_root._callbackID = null;

Modified: 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
===================================================================
--- 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
      2007-10-18 15:37:44 UTC (rev 6903)
+++ 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/kernel/swf/dojo/flash6/DojoExternalInterface.as
      2007-10-18 18:00:19 UTC (rev 6904)
@@ -93,7 +93,7 @@
                
                _root._returnResult = undefined;
                fscommand("call", methodName);
-               //getURL("javascript:alert('FLASH:call " + methodName + "')");
+               //Debug.write("call", methodName, resultsCallback);
                
                // immediately return if the caller is not waiting for return 
results
                if(resultsCallback == undefined || resultsCallback == null){
@@ -101,10 +101,12 @@
                }
                
                // check at regular intervals for return results        
-               var resultsChecker = function(){
+               var resultsChecker = function resultsChecker(){
                        if((typeof _root._returnResult != "undefined")&&
                                (_root._returnResult != "undefined")){
                                clearInterval(_root._callbackID);
+                               _root._callbackID = null;
+                               //Debug.write('resultsChecker clear', 
_root._callbackID);
                                resultsCallback.call(null, _root._returnResult);
                        }
                };      

Modified: 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
===================================================================
--- 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
   2007-10-18 15:37:44 UTC (rev 6903)
+++ 
openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/services/platform/swf/LzHistory.as
   2007-10-18 18:00:19 UTC (rev 6904)
@@ -37,7 +37,8 @@
 LzHistory.__setHistory = function(s) {
     //Debug.write('__setHistory', s);
     LzBrowser._jsreset();
-    LzBrowser.callJS('Lz.history.set', null, s);
+    LzBrowser.callJS('Lz.history.set', false, s);
+    this.__lzloading = true;
 }
 
 /**
@@ -64,6 +65,9 @@
   * @access private
   */
 LzHistory.receiveHistory = function(o){
+    if (this.persist && ! this._persistso) {
+        this.__initPersist();
+    }
     var l = this.__lzhistq.length;
     o *= 1;
     if (! o) {
@@ -82,6 +86,12 @@
     this.offset = o;
     //Debug.write('onhistory ', o, this.__lzhistq);
     if (this.onoffset.ready) this.onoffset.sendEvent(o);
+    if ($swf7) {
+        _root._currenthistory = o + '';
+    } else {
+        LzBrowser.callJS('Lz.history.__receivedhistory', false, o + '');
+    }
+    return true;
 }
 
 /**
@@ -197,7 +207,7 @@
     
     if (this.persist) {
         if (! this._persistso) {
-            this._persistso = this.getPersist('historystate');
+            this.__initPersist();
         }
         //Debug.write('_persistso: ', this._persistso);
         this._persistso.data[this.offset] = this.__lzcurrstate;

Modified: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
===================================================================
--- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs       
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs       
2007-10-18 18:00:19 UTC (rev 6904)
@@ -188,6 +188,7 @@
     LzPlatform.initCanvas(this);
 
 
+    this.id = LzBrowser.getInitArg('id')
 }
 
 /**

Modified: openlaszlo/branches/wafflecone/lps/admin/dev-console.lzx.swf
===================================================================
(Binary files differ)

Modified: openlaszlo/branches/wafflecone/lps/components/extensions/html.lzx
===================================================================
--- openlaszlo/branches/wafflecone/lps/components/extensions/html.lzx   
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/lps/components/extensions/html.lzx   
2007-10-18 18:00:19 UTC (rev 6904)
@@ -17,7 +17,7 @@
         LzBrowser.callJS('Lz.iframemanager.create', function (id) { 
                 Lz.iframemanager.owners[id] = owner;
                 owner.setiframeid(id); 
-            }, "", name, appendto);
+            }, canvas.id, name, appendto);
     }
     ,setPosition: function(id, x, y, width, height, v) {
         LzBrowser.callJS('Lz.iframemanager.setPosition', false, id, x, y, 
width, height, v);
@@ -31,6 +31,9 @@
     ,bringToFront: function(id) {
         LzBrowser.callJS('Lz.iframemanager.bringToFront', null, id);
     }
+    ,sendToBack: function(id) {
+        LzBrowser.callJS('Lz.iframemanager.sendToBack', null, id);
+    }
     ,__gotload: function(id) {
         if (Lz.iframemanager.owners[id]) 
Lz.iframemanager.owners[id].__gotload();
     }
@@ -105,18 +108,16 @@
         var height = this.target.getAttributeRelative("height", canvas) + 
this.heightoffset;
         if (this['iframeid']) {
             Lz.iframemanager.setPosition(this.iframeid, x, y, width, height, 
this.visible);
-        } else {
-            this.cachepos = true;
         }
     </method>
     <!--- @access private -->
     <method name="setiframeid" args="id">
         //Debug.write('setiframeid', id, this)
         this.iframeid = id;
-        if (this.cachepos) {
-            this.__updatepos();
-            if (this['isfront']) this.bringToFront();
-        }
+        this.__updatepos();
+        if (this['isfront']) this.bringToFront();
+        if (this['srcset']) Lz.iframemanager.setSrc(id, this.srcset);
+        this.setAttribute('ready', true);
     </method>
     <method name="__gotload">
         this.setAttribute('loading', false);
@@ -124,8 +125,14 @@
         this.onload.sendEvent();
     </method>
     <method name="bringToFront">
+        if (this['isfront'] == true) return;
         this.isfront = true;
         if (this['iframeid']) Lz.iframemanager.bringToFront(this.iframeid);
     </method>
+    <method name="sendToBack">
+        if (this['isfront'] == false) return;
+        this.isfront = false;
+        if (this['iframeid']) Lz.iframemanager.sendToBack(this.iframeid);
+    </method>
 </class>
 </library>

Modified: 
openlaszlo/branches/wafflecone/lps/components/extensions/test/html-swf.jsp
===================================================================
--- openlaszlo/branches/wafflecone/lps/components/extensions/test/html-swf.jsp  
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/lps/components/extensions/test/html-swf.jsp  
2007-10-18 18:00:19 UTC (rev 6904)
@@ -47,14 +47,10 @@
                        border: 0 none;
                        overflow: hidden;
                }
+               body {
+                background-color: #ffffff;
+            }
                
-               body
-               {
-                       height: 100%;
-                       width: 100%;
-                       background-color: #ffffff;
-               }
-               
                img { border: 0 none; }
         </style></head>
    <body><script type="text/javascript">

Modified: openlaszlo/branches/wafflecone/lps/components/extensions/test/html.lzx
===================================================================
--- openlaszlo/branches/wafflecone/lps/components/extensions/test/html.lzx      
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/lps/components/extensions/test/html.lzx      
2007-10-18 18:00:19 UTC (rev 6904)
@@ -7,7 +7,7 @@
 
     <class name="browser" extends="window" resizable="true" bgcolor="silver">
         <simplelayout axis="x"/>
-        <edittext name="txt" text="http://openlaszlo.org/"; width="300"/> 
+        <edittext name="txt" text="http://w3.org/"; width="300"/> 
         <button>Load
             <method event="onclick">
                 parent.main.setAttribute('src', parent.txt.getText()); 

Modified: openlaszlo/branches/wafflecone/lps/includes/source/embednew.js
===================================================================
--- openlaszlo/branches/wafflecone/lps/includes/source/embednew.js      
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/lps/includes/source/embednew.js      
2007-10-18 18:00:19 UTC (rev 6904)
@@ -87,6 +87,7 @@
         if (properties.accessible == 'true') {
             queryvals.flashvars += '&accessible=true';
         }
+        queryvals.flashvars += '&id=' + properties.id;
 
         var url = queryvals.url + '?' + queryvals.query;
 
@@ -546,10 +547,10 @@
         if (this.loaded) {
             return dojo.flash.comm.callMethod(js);
         } else {
-            this._lastjs = function() {
+            var f = function() {
                 dojo.flash.comm.callMethod(js);
             };
-            dojo.flash.addLoadedListener(this._lastjs);
+            dojo.flash.addLoadedListener(f);
         }
     }
     ,/** @access private */

Modified: openlaszlo/branches/wafflecone/lps/includes/source/iframemanager.js
===================================================================
--- openlaszlo/branches/wafflecone/lps/includes/source/iframemanager.js 
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/lps/includes/source/iframemanager.js 
2007-10-18 18:00:19 UTC (rev 6904)
@@ -13,27 +13,29 @@
 
         var id = '__lz' + Lz.iframemanager.__highestz++;
         Lz.iframemanager.__frames[id] = i;
-        Lz.__setAttr(i, 'id', id);
 
         if (name == null) name = '';
         if (name != "") Lz.__setAttr(i, 'name', name);
 
-        i.__gotload = Lz.iframemanager.__gotload;
-        Lz.__setAttr(i, 'onload', 'Lz.iframemanager.__gotload("' + id + '")');
         if (appendto == null || appendto == "undefined") {
             appendto = document.body;
         }
         appendto.appendChild(i);
+        Lz.__setAttr(i, 'id', id);
 
         var iframe = Lz.iframemanager.getFrame(id);
+        Lz.__setAttr(iframe, 'onload', 'Lz.iframemanager.__gotload("' + id + 
'")');
+        iframe.__gotload = Lz.iframemanager.__gotload;
+        iframe._defaultz = 99900 + Lz.iframemanager.__highestz;
+        iframe.style.zIndex = iframe._defaultz;
         if (document.getElementById && !(document.all) ) {
             iframe.style.border = '0';
         } else if (document.all) {
-            Lz.__setAttr(iframe, 'frameborder', '0');
+            Lz.__setAttr(iframe, 'border', '0');
             Lz.__setAttr(iframe, 'allowtransparency', 'true');
         }
         iframe.style.position = 'absolute';
-        return id;
+        return id + '';
     }
     ,getFrame: function(id) { 
         return Lz.iframemanager.__frames[id];
@@ -83,10 +85,18 @@
         iframe.style.zIndex = 100000 + Lz.iframemanager.__highestz;
         return true;
     }
+    ,sendToBack: function(id) { 
+        //console.log('sendToBack', id)
+        //Debug.write('bringToFront', id);
+        var iframe = Lz.iframemanager.getFrame(id);
+        if (! iframe) return;
+        iframe.style.zIndex = iframe._defaultz;
+        return true;
+    }
     ,__gotload: function(id) { 
         //Debug.write('__gotload', id);
-        //console.log('__gotload', id);
         var iframe = Lz.iframemanager.getFrame(id);
+        //console.log('__gotload', iframe, iframe.skiponload);
         if (! iframe) return;
         if (iframe.skiponload) {
             iframe.skiponload = false;
@@ -97,7 +107,7 @@
             iframe.owner.__gotload();
         } else {
             //console.log('calling method', 'Lz.iframemanager.__gotload(\'' + 
id + '\')');
-            Lz.callMethod('Lz.iframemanager.__gotload(\'' + id + '\')');
+            Lz[iframe.owner].callMethod('Lz.iframemanager.__gotload(\'' + id + 
'\')');
         }
     }
 }

Modified: openlaszlo/branches/wafflecone/lps/includes/source/lzhistory.js
===================================================================
--- openlaszlo/branches/wafflecone/lps/includes/source/lzhistory.js     
2007-10-18 15:37:44 UTC (rev 6903)
+++ openlaszlo/branches/wafflecone/lps/includes/source/lzhistory.js     
2007-10-18 18:00:19 UTC (rev 6904)
@@ -12,7 +12,7 @@
         var _this = Lz.history;
         _this._title = top.document.title;
         Lz.__BrowserDetect.init();
-        _this._currentstate = _this.get();
+        var currstate = _this.get();
         if (Lz.__BrowserDetect.isSafari) {
             // must track state ourselves...
             _this._historylength = history.length;
@@ -20,7 +20,7 @@
             for (var i = 1; i < _this._historylength; i++) {
                 _this._history.push('');
             }
-            _this._history.push(_this._currentstate);
+            _this._history.push(currstate);
             var form = document.createElement('form');
             form.method = 'get';
             document.body.appendChild(form);
@@ -31,7 +31,12 @@
             if (top.document.location.lzaddr.history) {
                 _this._history = 
top.document.location.lzaddr.history.split(',');
             }
+            if (currstate != '') {
+                _this.set(currstate)
+            }
         } else if (Lz.__BrowserDetect.isIE) {
+            var currstate = top.location.hash;
+            if (currstate) currstate = currstate.substring(1);
             // use an iframe;
             var i = document.createElement('iframe');
             Lz.__setAttr(i, 'id', 'lzHistory');
@@ -48,23 +53,22 @@
             var doc = i.contentDocument || i.contentWindow.document;
             doc.open();
             doc.close();
-            if (_this._currentstate != '') doc.location.hash = '#' + 
_this._currentstate;
+            //alert('currstate ' + currstate);
+            if (currstate != '') {
+                doc.location.hash = '#' + currstate;
+                _this._parse(currstate)
+            }
+        } else {
+            if (currstate != '') {
+                _this._parse(currstate)
+                _this._currentstate = currstate;
+            }
         }
-        if (_this._currentstate != '') _this._parse(_this._currentstate)
-        //alert('init');
+        //alert('init ' + currstate);
         setInterval('Lz.history._checklocationhash()', 100)
     }
 
     ,/** @access private */
-    _historyEvent: function (value) {
-        if (Lz.loaded && dojo.flash.comm) {
-            //alert(value);
-            dojo.flash.comm.receiveHistory(value + '');
-            return true;
-        }
-    }
-
-    ,/** @access private */
     _checklocationhash: function() {
         if (dojo.flash && dojo.flash.info && dojo.flash.info.installing) 
return;
         if (Lz.__BrowserDetect.isSafari) {
@@ -88,7 +92,7 @@
 
             if (Lz.__BrowserDetect.isIE) {
                 if (h != this._currentstate) {
-                    top.location.hash = '#' + h;
+                    top.location.hash = h == '0' ? '' : '#' + h;
                     this._currentstate = h;
                     this._parse(h);
                 }
@@ -100,34 +104,46 @@
                 this._parse(h);
             }
         }
+        if (dojo.flash.obj && Lz.loaded) {
+            var p = dojo.flash.obj.get();
+            if (p) {
+                var cid = p.GetVariable("_callbackID");
+                if (cid != 'null') return;
+                var val = p.GetVariable("_currenthistory");
+                if (val && val != 'null' && val != Lz.history._lasthash) {
+                    //alert('val ' + val);
+                    Lz.history._lasthash = val;
+                }
+            }
+        }
     }
     ,/** */
     set: function(s) {
         if (s == null) s = '';
-        if (this._currentstate == s) return;
-        this._currentstate = s;
+        if (Lz.history._currentstate == s) return;
+        Lz.history._currentstate = s;
 
         var hash = '#' + s;
 
         if (Lz.__BrowserDetect.isIE) {
-            top.location.hash = hash;
-            var doc = Lz.history._iframe.contentWindow.document;
+            top.location.hash = hash == '#0' ? '' : hash;
+            var doc = Lz.history._iframe.contentDocument || 
Lz.history._iframe.contentWindow.document;
             doc.open();
             doc.close();
             doc.location.hash = hash;
-            this._parse(s + '');
+            Lz.history._parse(s + '');
         } else if (Lz.__BrowserDetect.isSafari) {
             // can't preserve query strings :(
-            this._form.action = hash;
-            top.document.location.lzaddr.history = this._history.toString();
-            this._skip = true;
-            this._history[history.length] = hash;
-            this._historylength = history.length + 1;
-            this._form.submit()
-            this._skip = false;
+            Lz.history._form.action = hash;
+            top.document.location.lzaddr.history = 
Lz.history._history.toString();
+            Lz.history._skip = true;
+            Lz.history._history[history.length] = hash;
+            Lz.history._historylength = history.length + 1;
+            Lz.history._form.submit()
+            Lz.history._skip = false;
         } else {
             top.location.hash = hash;
-            this._parse(s + '');
+            Lz.history._parse(s + '');
         }
         return true;
     }
@@ -168,14 +184,13 @@
                 if (window['canvas']) canvas.setAttribute(name, val);
             }
         } else {
+            //alert('_parse test' + h + ', ' + _this._lasthash);
             //history id
-            if (_this._historyEvent(h)) {
-                // if successful, don't send again 
-                _this._lasthash = h;
-                //alert('_parse '+ h + ', ' + _this._lasthash);
+            if (Lz.loaded && Lz.callMethod && h != Lz.history._lasthash) {
+                _this.__setFlash(h);
             }
             if (Lz.__dhtmlhistoryready && LzHistory && 
LzHistory['receiveHistory']) {
-                //alert(h);
+                //alert('dhtml ' + h);
                 LzHistory.receiveHistory(h);
                 _this._lasthash = h;
             }
@@ -195,5 +210,23 @@
         this.set('_lz' + o);
         //window.frames['_lzhist'].location = newurl;
     }
+    ,/** @access private called from flash */
+    __receivedhistory: function(h) {
+        Lz.history._lasthash = h + '';
+        //alert('__receivedhistory '+ Lz.history._lasthash);
+    }
+    ,/** @access private called from flash */
+    __setFlash: function(h) {
+        var p = dojo.flash.obj.get();
+        if (p) {
+            var cid = p.GetVariable("_callbackID") + '';
+            if (cid == 'null') {
+                Lz.callMethod("LzHistory.receiveHistory(" + h + ")");
+            } else {
+                setTimeout('Lz.history.__setFlash(' + h + ')', 10);
+                //alert('busy');
+            }
+        }
+    }
 };
 window.onload = Lz.history.init;


_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins

Reply via email to