| 1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| 2 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> |
| 3 |
<!-- * X_LZ_COPYRIGHT_BEGIN *************************************************** |
| 4 |
* Copyright 2001-2005 Laszlo Systems, Inc. All Rights Reserved. * |
| 5 |
* Use is subject to license terms. * |
| 6 |
* X_LZ_COPYRIGHT_END ****************************************************** --><title>OpenLaszlo 3.1 Release Notes</title> |
| 7 |
|
| 8 |
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
| 9 |
<link rel="stylesheet" href="../lps/includes/explore.css" type="text/css" /> |
| 10 |
<link rel="SHORTCUT ICON" href="http://www.laszlosystems.com/images/laszlo.ico" /> |
| 11 |
</head> |
| 12 |
|
| 13 |
|
| 14 |
<body class="release-notes"> |
| 15 |
<h1><b>Release Notes for OpenLaszlo 3.1 </b> </h1> |
| 16 |
|
| 17 |
<p class="bodytext"> |
| 18 |
|
| 19 |
<p> |
| 20 |
OpenLaszlo 3.1 is a fully qualified release of the OpenLaszlo Platform. The previous qualified release was 3.0.2 (July, 2005). </p> |
| 21 |
<p> |
| 22 |
There have been many significant new features added to OpenLaszlo since Release 3.0.2, and more than 100 bugs have been fixed. There have also been significant improvements to the documentation. |
| 23 |
</p> |
| 24 |
<p> |
| 25 |
Also please note that the documentation is virtually always under development. For the most up-to-date version, you may want to consult <a href="http://www.openlaszlo.org/docs/nightly/">the nightly build</a> hosted on OpenLaszlo.org. (The latest documentation may include information pertinent to the upcoming release and therefore will not necessarily be accurate for 3.1; however, it will also include general improvements.) |
| 26 |
</p> |
| 27 |
<p> |
| 28 |
The OpenLaszlo development team depends on you, the users of the platform, to help us ensure its quality and determine its future direction. We encourage you to report any problems, and to make suggestions for enhancements, through our <a href="http://www.openlaszlo.org/jira/browse/LPP">bug tracking system.</a> |
| 29 |
</p> |
| 30 |
<p> |
| 31 |
Here is a summary of what you will find in these notes: |
| 32 |
</p> |
| 33 |
<ul> |
| 34 |
<li><a href="#target-runtimes">Target Runtimes</a> |
| 35 |
<li><a href="#nomenclature">A Note on Nomenclature</a> |
| 36 |
<li><a href="#key-features">New Features</a></li> |
| 37 |
<li><a href="#backwards">Backwards-incompatible Changes</a></li> |
| 38 |
<li><a href="#fixed-bugs">Significant Bugs Fixed Since 3.0.2</a></li> |
| 39 |
<li><a href="#Known">Known Problems and Workarounds</a></li> |
| 40 |
</ul> |
| 41 |
|
| 42 |
<h1><a name="target-runtimes">Target Runtimes</a></h1> |
| 43 |
<p>OpenLaszlo 3.1 supports compilation to <code>swf6, swf7</code> and <code>swf8</code> formats. For OpenLaszlo 3.1, Flash 7 is the default runtime. You can specify the target runtime by selecting the corresponding button on the Developer's Console or by explicitly using the <code>lzr=</code> request type.</p> |
| 44 |
<p> |
| 45 |
If you have a choice, we strongly encourage you to target Flash 7 or higher. All of the applications and demos bundled with the SDK are compiled using <code>swf7 </code>as the target.</p> |
| 46 |
<p> |
| 47 |
The OpenLaszlo SDK still supports development and deployment using Flash 6.0.65. However, note that the demos and examples in the SDK have been compiled against Flash 7 and due to a limitation in our wrapper implementation they do not completely function even if you force the compiler to use swf6 by setting <code>lzr=swf6</code>. The default runtime can be set at server startup time by changing <code>"compiler.runtime.default=swf7"</code> to <code>"compiler.runtime.default=swf6"</code> in <code>WEB-INF/lps/config/lps.properties</code>, but the demos and examples will need to be recompiled after you do this. |
| 48 |
</p> |
| 49 |
<h1><a name="nomenclature">A Note on Nomenclature</a></h1> |
| 50 |
<p> |
| 51 |
In the documentation, most instances of "Laszlo Presentation Server" (or "LPS") have been changed to say "OpenLaszlo Server". (You may discover instances of the old terms that we have missed, but be aware that those terms have been deprecated.) However, the string "LPS" still appears in the code base and in path names. Over time the term "LPS" may be expunged from the code, but there is no plan to do so now.</p> |
| 52 |
<p> |
| 53 |
Similarly, the terms "Laszlo Foundation Classes" and "LFC" have been deprecated in favor of "OpenLaszlo Runtime Library" and "ORL". As in the case of LPS, the older terms will persist longer in the code than in the documentation. </p> |
| 54 |
<h1><a name="key-features">New Features since OpenLaszlo 3.0.2</a></h1> |
| 55 |
<p> |
| 56 |
Since release 3.0.2, the following features have been added to OpenLaszlo: |
| 57 |
</p> |
| 58 |
<ul> |
| 59 |
<li>Rich Text Class</li> |
| 60 |
<li>New components: hbox, vbox, and image</li> |
| 61 |
<li>Flash 8 file generation</li> |
| 62 |
<li>Local datasets</li> |
| 63 |
<li>Browser history integration: the default HTML wrappers now include support for browser history and setcanvasAttribute()</li> |
| 64 |
<li>XMLHttpRequest ("AJAX") API</li> |
| 65 |
<li>setcanvasAttribute() Javascript function can optionally add browser history events</li> |
| 66 |
<li>Applications default to window size</li> |
| 67 |
<li>"View source" menu item</li> |
| 68 |
<li>Charting and Graphing Components (Beta)</li> |
| 69 |
<li>Tutorial introduction to Drawview</li> |
| 70 |
<li>Version detection</li> |
| 71 |
<li>Developer console enhancements</li> |
| 72 |
<li>Global "hand cursor" parameter</li> |
| 73 |
<li>Backtrace facility in the debugger</li> |
| 74 |
<li>Other debugger improvements</li> |
| 75 |
<li>Splash screen takes percentages</li> |
| 76 |
<li>New goodies in the incubator</li> |
| 77 |
</ul> |
| 78 |
<h2>Rich Text Class</h2> |
| 79 |
|
| 80 |
<p>The new component, <richinputtext> |
| 81 |
provides methods for adding rich text capabilities to your |
| 82 |
applications.</p> |
| 83 |
<p> |
| 84 |
To use it, include the line: |
| 85 |
</p> |
| 86 |
<pre> |
| 87 |
<include href="/extensions/views/richinputtext.lzx" /> |
| 88 |
</pre> |
| 89 |
<p> |
| 90 |
The <code>richinputtext</code> component deals with html-formatted text. You can specify the html formatting directly in the <code>richinputtext</code> tag, if you escape it with CDATA, like this:</p> |
| 91 |
<pre> |
| 92 |
|
| 93 |
<canvas bgcolor="#EAEAEA" height="400" width="400"> |
| 94 |
<include href="/extensions/views/richinputtext.lzx" /> |
| 95 |
<simplelayout axis="y" spacing="4" /> |
| 96 |
<richinputtext name="myRichText" width="300" height="100"> |
| 97 |
<![CDATA[ |
| 98 |
foo <b>bar</b> baz lum |
| 99 |
]]> |
| 100 |
</richinputtext> |
| 101 |
</canvas> |
| 102 |
</pre> |
| 103 |
<p> |
| 104 |
The class includes an object to specify the format of a |
| 105 |
text object (in Javascript, |
| 106 |
<code>richinputtext.setTextFormat</code>).</p> |
| 107 |
<p> |
| 108 |
Formatting capabilities include: </p> |
| 109 |
<ul> |
| 110 |
<li>Text style of bold, underline, or italics</li> |
| 111 |
<li>Font type and size</li> |
| 112 |
<li>Text color</li> |
| 113 |
<li>Hyperlink creation, specifying a URL, and choosing a target type</li> |
| 114 |
<li>Paragraph alignment: left, right, center</li> |
| 115 |
<li>Block indent/outdent</li> |
| 116 |
</ul> |
| 117 |
|
| 118 |
<p>The test file |
| 119 |
<code>test/extensions/test/test-richinputtext.lzx</code> |
| 120 |
demonstrates several ways that the <code>richinputtext</code> class |
| 121 |
can be used to apply rich formatted text. </p> |
| 122 |
<h2>New components: hbox, vbox, and image</h2> |
| 123 |
<p> |
| 124 |
Three new components support horizontal boxes, vertical boxes and images. Sources are in lps/components/base. See the LZX Reference and the Developer's Guide chapter on Layout and Design for examples. |
| 125 |
</p> |
| 126 |
|
| 127 |
<h2>Compilation for Flash 8 player</h2> |
| 128 |
<p> |
| 129 |
The OpenLaszlo compiler now has an option to generate Flash 8 format files. Use the developers' console or the query parameter <code>?lzr=swf8</code>. |
| 130 |
</p> |
| 131 |
<h2>Local datasets</h2> |
| 132 |
<p> |
| 133 |
Datasets no longer have to be specified on the canvas; they can be local to a class. |
| 134 |
</p> |
| 135 |
<ul> |
| 136 |
<li>Datasets will automatically name themselves 'localdata' if a name is not specified </li> |
| 137 |
<li>Local datapath syntax is <br/> |
| 138 |
datapath="local:<i>reference.to.dataset.relative.to.parent</i>:/path" <br/> |
| 139 |
</li> |
| 140 |
<li> The name of the dataset can be omitted from the datapath if the dataset name is the default 'localdata', e.g. 'local:classroot:/' can be used instead of 'local:classroot.localdata:/' for a dataset named localdata in the classroot</li> |
| 141 |
</ul> |
| 142 |
<p> |
| 143 |
See the Databinding chapter of the Developer's Guide for an explanation and example code. |
| 144 |
</p> |
| 145 |
<h2>Browser Integration</h2> |
| 146 |
<p> |
| 147 |
The scheme of "wrappers" that is generated has been simplified. There's no <code>lzt=version</code> or <code>lzt=history</code> anymore —they've both been folded into the main wrappers. The default HTML wrappers now include support for browser history and <code>setcanvasAttribute()</code>. |
| 148 |
</p> |
| 149 |
<h2>XMLHttpRequest() API</h2> |
| 150 |
<p> |
| 151 |
For AJAX style applications, there now is an XMLHttpRequest class. |
| 152 |
This class implements XMLHttpRequest as <a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html"> specified</a> by the <a href="http://www.whatwg.org/specs/web-apps/current-work/#scripted-http">WHATWG |
| 153 |
</a> consortium. |
| 154 |
</p> |
| 155 |
<p> |
| 156 |
<code>XMLHttpRequest()</code> implements the functionality of the <dataset> tag in a syntax that is more familiar to people with AJAX programming experience. If you are comfortable using datasets there is no reason to use this class. |
| 157 |
</p> |
| 158 |
<p> |
| 159 |
In SOLO deployed applications, this class departs from the specification in these ways:</p> |
| 160 |
<ul> |
| 161 |
<li>Cannot set HTTP headers </li> |
| 162 |
<li>Cannot access response headers</li> |
| 163 |
<li>Cannot send raw POST data</li> |
| 164 |
<li>Cannot send repeated query args in a POST using LoadVars</li> |
| 165 |
<li>Username/password HTTP Auth args to send() not supported.</li> |
| 166 |
</ul> |
| 167 |
|
| 168 |
<p> |
| 169 |
See the Databinding chapter of the Developer's Guide, and the XMLHttpRequest page in the LZX Reference Manual for more details. There is a test case in test/AJAX/request.lzx. |
| 170 |
</p> |
| 171 |
|
| 172 |
|
| 173 |
<h2>Applications default to window size</h2> |
| 174 |
<p>The canvas size now defaults to <code>height="100%" width="100%"</code>. This means that the OpenLaszlo application will size itself to completely fill the HTML page or frame in which it is placed. |
| 175 |
</p> |
| 176 |
|
| 177 |
<h2>"View Source" right click menu item </h2> |
| 178 |
<p> |
| 179 |
The default canvas context (right click) menu now has a "view source" |
| 180 |
item to allow you to share your LZX code if you would like to do so. |
| 181 |
</p> |
| 182 |
<p>See the Input Devices and Gestures chapter of the Developer's Guide for details.</p> |
| 183 |
<h2>Charting and Graphing Components</h2> |
| 184 |
<p> |
| 185 |
A new suite of data-driven components for charting and graphing, written in LZX, is included in this release. These are some of the components:</p> |
| 186 |
<ul> |
| 187 |
<li>linechart.lzx</li> |
| 188 |
<li>barchart.lzx</li> |
| 189 |
<li>piechart.lzx</li> |
| 190 |
<li>columnchart.lzx</li> |
| 191 |
</ul> |
| 192 |
<p> |
| 193 |
There are many ancillary components, such as horizontal and vertical axes, and data labels and markers. |
| 194 |
Sources are in the subdirectory <code>lps/components/charts</code> of the directory in which the OpenLaszlo SDK is located. |
| 195 |
</p> |
| 196 |
<p> |
| 197 |
The charting and graphing components included in this release are still undergoing development and are included in this release at Beta quality only. Preliminary documentation is included in the LZX Reference. |
| 198 |
</p> |
| 199 |
<h2>Flash Player version detection</h2> |
| 200 |
<p> |
| 201 |
Version detection now forces an upgrade to the Flash Player version specified in <code>lzr=</code>. For example, <code>lzr=swf8</code> will require version 8 or higher. People browsing to your url who do not have the appropriate version of the Flash Player will be prompted to upgrade. |
| 202 |
</p> |
| 203 |
<h2><code>setcanvasAttribute()</code> Javascript function can optionally add browser history events</h2> |
| 204 |
<p> |
| 205 |
Calling the browser javascript function <code>setcanvasAttribute(name, value, true)</code> will cause a browser history event to be added. This will cause the canvas attribute to be reset as the browser's forward and back buttons are used. |
| 206 |
</p> |
| 207 |
<h2>Tutorial Introduction to <drawview></h2> |
| 208 |
<p> |
| 209 |
The Developer's Guide now contains an introduction to the drawing API. |
| 210 |
</p> |
| 211 |
<h2>Global Hand Cursor Parameter</h2> |
| 212 |
<p>A new method, <code>LzCursor.showHandCursor(true)</code>, has |
| 213 |
been added which allows you to control whether or not the cursor is changed to a hand-shaped cursor when moved over clickable views.</p> |
| 214 |
<p>There's also a property on <view> that shows/hides the hand cursor: |
| 215 |
|
| 216 |
<code>LzView.showhandcursor</code> |
| 217 |
</p> |
| 218 |
<p>See the Input Devices and Gestures chapter of the Developer's Guide (the section on ("Cursor Management") for details.</p> |
| 219 |
<h2>Developers' console enhancements</h2> |
| 220 |
<p> |
| 221 |
The "Developers' Console" application, otherwise known as "that HTML thingy at the bottom of my compiled LPS apps" has been implemented as an LZX application. As part of its implementation:</p> |
| 222 |
<ul> |
| 223 |
<li>You can switch between swf6, swf7 and swf8 targets by pushing a button.</li> |
| 224 |
<li>You can enable or disable debugging.</li> |
| 225 |
<li>SOLO deployment is simplified by the SOLO deployment "wizard", which packages all necessary files, such as <code>embed.js</code> and the "build" subdirectory, into a zip file for uploading to a server (Apache, etc). The zip file is placed in the same directory as the canvas source file. |
| 226 |
</li> |
| 227 |
</ul> |
| 228 |
<p> |
| 229 |
|
| 230 |
<h2>New debugger capabilities</h2> |
| 231 |
<p> |
| 232 |
The OpenLaszlo debugger has been upgraded with several powerful features: |
| 233 |
</p> |
| 234 |
<ul> |
| 235 |
<li> |
| 236 |
Backtracing. When enabled, the compiler will |
| 237 |
instrument functions to maintain a call stack.</li> |
| 238 |
<li>Detection of corrupted objects.</li> |
| 239 |
|
| 240 |
<li>Substantially enhanced control of string formatting</li> |
| 241 |
|
| 242 |
<li>Inspectable warnings and errors. If you click on them, you will inspect the warning or error object.</li> |
| 243 |
|
| 244 |
<li>Ability to monitor and report when any property of an object has changed. |
| 245 |
</li> |
| 246 |
</ul> |
| 247 |
<p>See the Developer's Guide for explanations and examples of these new features.</p> |
| 248 |
<h2>The Incubator</h2> |
| 249 |
<p> |
| 250 |
The Incubator directory, <tt>lps/components/incubator/</tt>, contains components and other code that have been contributed to the OpenLaszlo project, but have not yet been fully integrated into the product. It is intended as an easy way to contribute code that doesn't have the level of documentation, testing, or API review that is required in other directories, or that is simply contributed too late in the release cycle to place elsewhere. |
| 251 |
</p><p> |
| 252 |
Recent contributions to the incubator include user contributions for:</p> |
| 253 |
<ul> |
| 254 |
<li>base64 encoding</li> |
| 255 |
<li>dragging</li> |
| 256 |
<li>floating lists</li> |
| 257 |
<li>gradient views</li> |
| 258 |
<li>stepper component</li> |
| 259 |
<li>code inspector</li> |
| 260 |
</ul> |
| 261 |
|
| 262 |
<h2>Splash ratio</h2> |
| 263 |
<p>The splash ratio can be expressed as a floating point or percentage. |
| 264 |
</p> |
| 265 |
<h1><a name="backwards">Backwards-incompatible changes</a></h1> |
| 266 |
<p> |
| 267 |
As noted above, the canvas size now defaults to <code>height="100%" width="100%"</code>. This means that the OpenLaszlo application will size itself to completely fill the HTML page or frame in which it is placed. In earlier releases, OpenLaszlo applications had a fixed default height and width. Applications that depended on that default size will not work correctly. The solution is to explicitly set the canvas height and width. |
| 268 |
</p> |
| 269 |
|
| 270 |
<h1><a name="fixed-bugs">Significant Bugs Fixed</a></h1> |
| 271 |
<p> |
| 272 |
More than a hundred bugs have been fixed since the 3.0.2 release. Consult <a href="http://www.openlaszlo.org/jira/ ">JIRA</a> for complete information. Among the more significant fixes are the following: |
| 273 |
</p> |
| 274 |
<ul> |
| 275 |
<li>mp3 files now work in SOLO mode. <a href="http://www.openlaszlo.org/jira/browse/LPP-487">LPP-487</a></li> |
| 276 |
|
| 277 |
<li>The font in the LZX reference is now embedded—looks good in all browsers. <a href="http://www.openlaszlo.org/jira/browse/LPP-335">LPP-335</a></li> |
| 278 |
<li>Increased memory consumption reported in some nightly builds has been fixed. <a href="http://www.openlaszlo.org/jira/browse/LPP-714">LPP-714</a></li> |
| 279 |
<li>Debugger issues with swf6 have been cleaned up. <a href="http://www.openlaszlo.org/jira/browse/LPP-753">LPP-753</a></li> |
| 280 |
<li>Javascript issues with Internet Explorer have been cleaned up. <a href="http://www.openlaszlo.org/jira/browse/LPP-657">LPP-657</a></li> |
| 281 |
<li>All international character sets work correctly with XML-RPC. <a href="http://www.openlaszlo.org/jira/browse/LPP-716">LPP-716</a></li> |
| 282 |
<li>Various errors in Laszlo Explorer have been fixed. <a href="http://www.openlaszlo.org/jira/browse/LPP-513">LPP-513</a></li> |
| 283 |
<li>"onlastframe" events now work correctly in mac browsers. <a href="http://www.openlaszlo.org/jira/browse/LPP-715">LPP-715</a></li> |
| 284 |
<li>Setting <code>appendChild()</code> directly on a dataset no longer breaks replication. <a href="http://www.openlaszlo.org/jira/browse/LPP-692">LPP-692</a></li> |
| 285 |
</ul> |
| 286 |
|
| 287 |
|
| 288 |
<h1><a name="Known">Known Defects</a></h1> |
| 289 |
|
| 290 |
|
| 291 |
|
| 292 |
|
| 293 |
<p> |
| 294 |
This section of the notes summarizes significant bugs and is included here for your convenience. For the most current and complete information, consult the <a href="http://www.openlaszlo.org/jira/secure/IssueNavigator.jspa?reset=true&pid=10020&fixfor=10085">JIRA</a> bug database. |
| 295 |
</p> |
| 296 |
<ul> |
| 297 |
|
| 298 |
<li>Compilation Manager<ul> |
| 299 |
|
| 300 |
<li>If you compile a file that includes a font, resource, or library in the |
| 301 |
components directory, and you then create a file with the same name as the |
| 302 |
included file in your application directory, the OpenLaszlo Server will not recompile the application. You will need to make a gratuitous edit to the application source to force it to recompile.</li> |
| 303 |
|
| 304 |
|
| 305 |
</ul></li></ul> |
| 306 |
|
| 307 |
<ul><li>Compiler<ul> |
| 308 |
|
| 309 |
<li> |
| 310 |
<a href="http://www.openlaszlo.org/jira/browse/LPP-808">LPP-808</a></p> |
| 311 |
<p> |
| 312 |
When you have an app which uses the OpenLaszlo server transcoder to include a PNG file, and you compile the app as a Flash 8 app (lzr=swf8), the image appears "fuzzy", as if it is scaling it by a small extra fraction so it no longer has integer pixel boundaries. </p> |
| 313 |
<p> |
| 314 |
Note that if the resource is included as a runtime SOLO PNG, this doesn't happen, so it is an interaction of the OpenLaszlo Server PNG transcoder.</p> |
| 315 |
</li> |
| 316 |
<li>A resource whose origin is not (0,0) may appear to have the wrong width and height.</li> |
| 317 |
|
| 318 |
<li>Default clickable interacts poorly with classes. |
| 319 |
<pre><class name="myclass" clickable="false"/> |
| 320 |
<myclass id="bob" onclick="f()"/> |
| 321 |
</pre> |
| 322 |
Creates a bob that is clickable. That is, setting the onclick="f()" value |
| 323 |
overrides the setting in the class definition. If this isn't what you want, the |
| 324 |
workaround is to write an explicit clickable on the subclass or instance: |
| 325 |
<pre> <class name="myclass" clickable="false"/> |
| 326 |
<myclass id="bob" onclick="f()" clickable="false"/> |
| 327 |
</pre></li> |
| 328 |
|
| 329 |
|
| 330 |
<li>When specifying a resource with a constraint expression, you must use either a |
| 331 |
resource name (instead of a literal path) or an http URL. The following two |
| 332 |
examples work: |
| 333 |
<pre><node id="globals"> |
| 334 |
<attribute name="BRAND" |
| 335 |
value="http:logo.swf" |
| 336 |
type="string"/> |
| 337 |
</node> |
| 338 |
<view id="a" x="0" y="0" resource="${globals.BRAND}"/> |
| 339 |
</pre> |
| 340 |
or |
| 341 |
<pre><resource name="logo" value="logo.swf"/> |
| 342 |
|
| 343 |
<node id="globals"> |
| 344 |
<attribute name="BRAND" |
| 345 |
value="logo" |
| 346 |
type="string"/> |
| 347 |
</node> |
| 348 |
<view id="a" x="0" y="0" resource="${globals.BRAND}"/> |
| 349 |
</pre></li> |
| 350 |
<li>All canvas attributes that CAN be defined as XML attributes MUST be defined as XML attributes. For example, <canvas><attribute name="width" value="100"/> does not have the same effect as <canvas width="100">, and similarly for the other attributes such as bgcolor, font, and fontsize. |
| 351 |
</li> |
| 352 |
|
| 353 |
<li>The OpenLaszlo compiler expects .lzx files should be authored using the UTF-8 character set encoding (per the XML document standard), unless you specify another encoding explicitly in the XML declaration at the start of the file, e.g., |
| 354 |
<pre><?xml version="1.0" encoding="ISO-8859-1" ?> |
| 355 |
</pre> |
| 356 |
</li> |
| 357 |
<li>The OpenLaszlo Server supports tomcat 5.0 as a development environment. It has not yet been fully |
| 358 |
tested for deployment. If you use the Tomcat as provided by Laszlo, the memory |
| 359 |
parameters will be configured correctly. If you use your own version of Tomcat 5, |
| 360 |
however, it may fail (due to insufficient memory) after about 35 compilations.</li> |
| 361 |
<li>Kranking an application with a request parameter (e.g., ?foo=bar) will cause that parameter (e.g., foo) |
| 362 |
to be serialized and reconstituted. If you try to supply a different request parameter to the kranked |
| 363 |
app, Flash's 'security mechanism' will ignore the new parameter (because there is already a variable of |
| 364 |
that name (e.g., foo)). |
| 365 |
<p> |
| 366 |
There are two suggested workarounds: |
| 367 |
</p> |
| 368 |
<ol> |
| 369 |
<li>Do not supply the request parameters when kranking your application. This implies your application |
| 370 |
must be able to initialize with the request parameters not set.</li> |
| 371 |
|
| 372 |
<li>Use LzBrowser.getLoadUrlAsLzUrl().query to parse the request parameters and set them in your |
| 373 |
application at initialization time.</li></ol></li> |
| 374 |
|
| 375 |
|
| 376 |
</ul></li></ul> |
| 377 |
|
| 378 |
<ul><li>Compiler - JavaScript<ul> |
| 379 |
|
| 380 |
<li>The shortcut form for specifying unicode characters (e.g., \xAB) does not |
| 381 |
compile correctly. As a workaround, specify unicode characters in full form |
| 382 |
(e.g., \u00AB).</li> |
| 383 |
<li>An expression of the form (fn)(a1, a2, ...) evaluates the expressions |
| 384 |
a1, a2, ... before evaluating the expression fn, which is not the strict |
| 385 |
left-to-right evaluation order required by the ECMAScript standard. As a |
| 386 |
workaround use the following equivalent: |
| 387 |
<pre>var temp = (fn); temp(a1, a2, ...) |
| 388 |
</pre> |
| 389 |
This should only be necessary if the expression fn has side-effects that affect |
| 390 |
the values of the expressions a1, a2, ...</li> |
| 391 |
|
| 392 |
|
| 393 |
</ul></li></ul> |
| 394 |
|
| 395 |
<ul><li>Compiler - Schema<ul> |
| 396 |
|
| 397 |
<li>The "from" and "to" attributes of an animator must be numeric literals |
| 398 |
such as "1000" or "25.8", or live expressions such as "${parent.x}". If the |
| 399 |
animated |
| 400 |
attribute has a boolean type, use the live expression syntax: |
| 401 |
|
| 402 |
|
| 403 |
<pre><animator attribute="visible" to="${false}"/> |
| 404 |
</pre> |
| 405 |
(or, for greater efficiency, |
| 406 |
<pre><animator attribute="visible" to="$immediately{false}"/>) |
| 407 |
</pre></li> |
| 408 |
<li>Declaring an "onload" event as an attribute of the tag generates a compiler error: |
| 409 |
<pre><class name="resourceloader"> |
| 410 |
<view name="media" onload="parent.gotLoad(this);" visible="false"/> |
| 411 |
</pre> |
| 412 |
|
| 413 |
As a workaround, use |
| 414 |
<pre> <method event="onload" . . .> |
| 415 |
</pre></li> |
| 416 |
<li>The id attribute is typed wrong for datapath. A workaround is to declare the |
| 417 |
attribute with a type: |
| 418 |
<pre> <datapath> |
| 419 |
<attribute name="id" value="dp" type="string"/> |
| 420 |
</datapath> |
| 421 |
|
| 422 |
</pre></li> |
| 423 |
<li>Combining the attribute properties when="once" and type="number" will cause a |
| 424 |
compilation error |
| 425 |
for non-constant values. Use value="$once{...}" to avoid this error.</li> |
| 426 |
|
| 427 |
|
| 428 |
</ul></li></ul> |
| 429 |
|
| 430 |
|
| 431 |
<ul><li>Compiler - Warnings<ul> |
| 432 |
|
| 433 |
<li>Creating an attribute named "options" or "id" on a class or view will cause |
| 434 |
conflicts with internal methods. Giving a view a "name" or "id" with the same |
| 435 |
name as a user-defined class will also cause conflicts. No warning is currently |
| 436 |
issued in this case, so it can be hard to identify this situation.</li> |
| 437 |
<li>Forward references to classes are not permitted. The class definition must occur |
| 438 |
lexically before the first instance of that class is created. The compiler will |
| 439 |
not warn about this situation. For example, the following will not work: |
| 440 |
<pre><canvas> |
| 441 |
<foo/> |
| 442 |
<class name="foo"> |
| 443 |
<text>Hello!</text> |
| 444 |
|
| 445 |
</class> |
| 446 |
</canvas> |
| 447 |
</pre> |
| 448 |
However no warning is issued by the compiler in this case.</li> |
| 449 |
<li>The following unmatched cases can cause compiler errors with misleading |
| 450 |
line numbers: |
| 451 |
<pre> <view x="${/*}"/> |
| 452 |
<view x="$immediate{/*}"/> |
| 453 |
<view oninit="/*"/> |
| 454 |
|
| 455 |
<method name="f" args="/*"/> |
| 456 |
<method name="f">/*</method> |
| 457 |
<script>/*</script> |
| 458 |
</pre></li> |
| 459 |
<li>Text that follows <method> or <attribute> in a component class (any tag |
| 460 |
defined using the <class> tag) will cause a compilation warning, even if the |
| 461 |
component is declared to accept text or html. For example: |
| 462 |
|
| 463 |
<pre> <inputtextbox> |
| 464 |
<method name="foo"> |
| 465 |
Debug.write('xxx'); |
| 466 |
</method> |
| 467 |
mytext |
| 468 |
</inputtextbox> |
| 469 |
</pre> |
| 470 |
The correct syntax is to place the text before any <method> or <attribute> children: |
| 471 |
|
| 472 |
<pre> <inputtextbox>mytext |
| 473 |
<method name="foo"> |
| 474 |
Debug.write('xxx'); |
| 475 |
</method> |
| 476 |
</inputtextbox> |
| 477 |
</pre></li> |
| 478 |
<li>You cannot reliably use constraints to set the fontsize or font name |
| 479 |
of an inputtext field. |
| 480 |
|
| 481 |
For example, this will probably not display properly, but will not signal an |
| 482 |
error at compile time. |
| 483 |
<pre><canvas> |
| 484 |
|
| 485 |
<class name="tester"> |
| 486 |
<inputtext fontsize="${canvas.height}">hello </inputtext> |
| 487 |
</class> |
| 488 |
<tester /> |
| 489 |
</canvas> |
| 490 |
</pre></li> |
| 491 |
|
| 492 |
<li>If a resource referenced in a <splash> view is not present, an odd error message -- |
| 493 |
the single word "undefined" -- with half of the "u" chopped off-- appears. |
| 494 |
<pre><canvas> |
| 495 |
<splash> |
| 496 |
<view resource="images/logo.png"/> |
| 497 |
</splash> |
| 498 |
</canvas> |
| 499 |
|
| 500 |
</pre></li> |
| 501 |
|
| 502 |
|
| 503 |
</ul></li></ul> |
| 504 |
|
| 505 |
<ul><li>Components - all<ul> |
| 506 |
|
| 507 |
<li>Some XML escape characters cannot be used in the initial text content of input text |
| 508 |
components. A workaround is to use the "text" attribute. For example, to specify |
| 509 |
the string "dog & cat" |
| 510 |
<pre>Right: |
| 511 |
<simpleinputtext text="dog &amp; cat"/> |
| 512 |
|
| 513 |
Wrong: |
| 514 |
<simpleinputtext>dog &amp; cat</simpleinputtext> |
| 515 |
</pre></li> |
| 516 |
<li>Fonts do not cascade through components, and cannot be set with the <style> tag. |
| 517 |
However, you can redefine the font named "default", which is used by components.</li> |
| 518 |
<li>Adding |
| 519 |
<pre><datapath replication="lazy"> |
| 520 |
</pre> |
| 521 |
|
| 522 |
inside the leaf basetree |
| 523 |
causes the titles of many of the intermediate-level trees (one above the leaves) |
| 524 |
never to appear. |
| 525 |
|
| 526 |
This means lazy replication can't be used to optimize the start speed of tree |
| 527 |
controls.</li> |
| 528 |
|
| 529 |
|
| 530 |
</ul></li></ul> |
| 531 |
|
| 532 |
<ul><li>Components - base<ul> |
| 533 |
<li> |
| 534 |
<a href="http://www.openlaszlo.org/jira/browse/LPP-115">LPP-115</a> |
| 535 |
<p> |
| 536 |
Mouse wheel event listeners are available only in Windows versions of Flash Player. |
| 537 |
</p> |
| 538 |
|
| 539 |
</li> |
| 540 |
|
| 541 |
<li>Tabs will not display a tabpane after datamapping changes until a tab is selected.</li> |
| 542 |
<li><basebutton> can't be used when canvas version=="1.0". A workaround is to remove |
| 543 |
version="1.0" from the canvas for this application, |
| 544 |
or to define a font named "default" in the application.</li> |
| 545 |
<li> |
| 546 |
|
| 547 |
</ul></li></ul> |
| 548 |
|
| 549 |
<ul><li>Components - LZ<ul> |
| 550 |
|
| 551 |
<li><tabview> doesn't respect view "visible" property.</li> |
| 552 |
<li>You must explicitly set a menu's width. It does not automatically calculate the |
| 553 |
max menuitem and use that as a reference. |
| 554 |
|
| 555 |
The height of a menu, however, does grow if menu items are added and deleted.</li> |
| 556 |
<li> |
| 557 |
For a yummy autumn soup, cook acorn and winter squash with cauliflower, onions, vegetable bullion and one ripe pear. Mix in the blender, add some light cream. Serve hot! |
| 558 |
</li> |
| 559 |
<li><edittext> does not automatically size to the size of the font; it is always 22 |
| 560 |
pixels high.</li> |
| 561 |
|
| 562 |
<li>If you set a datapath as a child of tabpane for replication, you need to set its |
| 563 |
datacontrolsvisibility attribute to false or the wrong tabpane will be |
| 564 |
displayed. For example: |
| 565 |
<pre><tabs> |
| 566 |
<tabpane> |
| 567 |
<datapath xpath="[mydatapath]"> |
| 568 |
<attribute name="datacontrolsvisibility" value="false"/> |
| 569 |
</datapath> |
| 570 |
</tabpane> |
| 571 |
|
| 572 |
</tabs> |
| 573 |
</pre></li> |
| 574 |
<li><button> face stretches when its parent view has a resource that stretches.</li> |
| 575 |
<li>In some cases, the "onselect" element for a combobox is sent when the combobox |
| 576 |
is initialized -- not when it is selected by the user. A workaround is to |
| 577 |
include this in the combobox tag: |
| 578 |
<pre> <attribute name="isFirstOnselectFired" value="false" /> |
| 579 |
|
| 580 |
<method event="onselect" args="d"> |
| 581 |
if ( !isFirstOnselectFired ) { |
| 582 |
this.setAttribute( 'isFirstOnselectFired', true ); |
| 583 |
return false; |
| 584 |
} |
| 585 |
// Do whatever you were going to do onselect here. |
| 586 |
</method> |
| 587 |
|
| 588 |
</pre></li> |
| 589 |
<li>Replicated trees with open attributes will not display correctly.</li> |
| 590 |
<li>Menubar has wrong placement in windows by default. |
| 591 |
A <menubar/> is not placed in the 'menubar area' of a <window/> by default, so |
| 592 |
the workaround is the following: |
| 593 |
<pre><window |
| 594 |
<menubar ... placement="menubar" /> |
| 595 |
</window> |
| 596 |
</pre></li> |
| 597 |
|
| 598 |
<li>Because the gridcolumn is a basecomponent (and is styleable), fonts set on a grid |
| 599 |
will not cascade to its contents. Set the font on each individual column to |
| 600 |
control fonts within a grid.</li> |
| 601 |
<li>The user can't tab out of the grid from the last record or shift-tab out from |
| 602 |
the first record.</li> |
| 603 |
<li>At this release, <tree> does not support changes to the underlying |
| 604 |
dataset. So if you have a dataset, and make a change to it, the tree won't update.</li> |
| 605 |
<li><combobox> doesn't send keycode with key events as expected.</li> |
| 606 |
<li>Using 'onvalue' event on a combobox will not allow making something modal. For |
| 607 |
example, the following code will not work as expected: |
| 608 |
<pre><canvas> |
| 609 |
|
| 610 |
<combobox defaulttext="Default"> |
| 611 |
<method event="onvalue"> |
| 612 |
if ( this.value == null ) return; |
| 613 |
gAlert.open(); |
| 614 |
</method> |
| 615 |
<textlistitem>A</textlistitem> |
| 616 |
<textlistitem>B</textlistitem> |
| 617 |
|
| 618 |
<textlistitem>C</textlistitem> |
| 619 |
</combobox> |
| 620 |
|
| 621 |
<alert id="gAlert">Hi</alert> |
| 622 |
</canvas> |
| 623 |
</pre> |
| 624 |
|
| 625 |
Workaround: If you use 'onselect' the mode will be released appropriately.</li> |
| 626 |
<li>The z order of basewindows is not well defined.</li> |
| 627 |
|
| 628 |
|
| 629 |
</ul></li></ul> |
| 630 |
|
| 631 |
|
| 632 |
<ul><li>Debugger<ul> |
| 633 |
|
| 634 |
<li>Declaring an attribute does not assign it a value. Use of an attribute with no |
| 635 |
value will throw a debugger warning.</li> |
| 636 |
|
| 637 |
|
| 638 |
</ul></li></ul> |
| 639 |
|
| 640 |
|
| 641 |
|
| 642 |
|
| 643 |
<ul> |
| 644 |
<li>Fonts |
| 645 |
<ul> |
| 646 |
|
| 647 |
<li>The Verity font has a slightly different baseline than other fonts. Be sure to |
| 648 |
visually inspect your application carefully when switching from or to the Verity |
| 649 |
font. </li> |
| 650 |
<li> |
| 651 |
Disappearing fonts— |
| 652 |
Client fonts (such as the default font) disappear when rotated, and (mostly) ignore the opacity parameter. |
| 653 |
This is a limitation of the Flash player. Use an embedded font if rotation or opacity is required. |
| 654 |
</li> |
| 655 |
|
| 656 |
</ul> |
| 657 |
</li> |
| 658 |
</ul> |
| 659 |
<ul><li>Installer<ul> |
| 660 |
|
| 661 |
<li>The installer and OpenLaszlo Server may fail to function properly in Windows if Java is moved |
| 662 |
from the location where it was originally installed.</li> |
| 663 |
<li>In order to change the port number that OpenLaszlo Server runs on, you need to edit |
| 664 |
both $TOMCAT_HOME/conf/server.xml and $LPS_WEBAPP_HOMElz-utils/startup.var, |
| 665 |
and change any instance of 8080 to something else. |
| 666 |
|
| 667 |
Also, if you have another instance of Tomcat up and running, you may |
| 668 |
want to change the shutdown port in server.xml to something other than default |
| 669 |
of 8009.</li> |
| 670 |
|
| 671 |
</ul></li></ul> |
| 672 |
|
| 673 |
<ul><li>JGenerator<ul> |
| 674 |
|
| 675 |
<li>The OpenLaszlo compiler uses routines from AWT. This sometimes requires that the target |
| 676 |
deployment server installs X Windows.</li> |
| 677 |
<li>Using a swf asset as a resource in the splash tag can cause strange problems if |
| 678 |
the asset has an embedded font and the font name collides with the name used |
| 679 |
for an embedded font in the LZX app.</li> |
| 680 |
|
| 681 |
|
| 682 |
</ul></li></ul> |
| 683 |
|
| 684 |
<ul><li>Krank<ul> |
| 685 |
<li> |
| 686 |
There is a bug in the KRANK feature in OpenLaszlo 3.0 that is a |
| 687 |
regression from LPS 2.2. It was probably present in LPS 3.0b2. |
| 688 |
<p>For some applications, if the application is KRANKed using an |
| 689 |
OpenLaszlo development server and a browser that are running on the |
| 690 |
same machine (this is the typical configuration), it may only work when |
| 691 |
deployed to a browser on the same machine as the server. |
| 692 |
Conversely, an application that is KRANKed from a separate client will |
| 693 |
only work when deployed to a browser that is not running on the server |
| 694 |
machine. |
| 695 |
</p> |
| 696 |
<p> |
| 697 |
There are two implications: |
| 698 |
</p><ol> |
| 699 |
<li>The KRANK feature when used in the standard configuration will not |
| 700 |
produce a deployable application. The workaround is to use a second |
| 701 |
machine to KRANK from.</li> |
| 702 |
<li>Some of the demos that are distributed in the SDK (portions of |
| 703 |
dashboard, chat, calendar) will not work when viewed from a second |
| 704 |
machine. |
| 705 |
This is a rare use case (especially since the demos are present on the |
| 706 |
web site, and since firewalls disallow access by default anyway), so |
| 707 |
this is less serious.</li> |
| 708 |
</ol> |
| 709 |
</li> |
| 710 |
|
| 711 |
<li>When running the optimizer, the source directory of the application being |
| 712 |
optimized must be writable by the web server. If the server cannot write to the |
| 713 |
directory, an error message will be written to the lps log.</li> |
| 714 |
|
| 715 |
|
| 716 |
|
| 717 |
</ul></li></ul> |
| 718 |
|
| 719 |
<ul><li>OpenLaszlo Runtime Library (formerly known as Laszlo Foundation Classes)<ul> |
| 720 |
<li> |
| 721 |
<p><a href="http://www.openlaszlo.org/jira/browse/LPP-823">LPP-823</a>:</p> |
| 722 |
<p> |
| 723 |
The word "filters" appears to be reserved under Flash 8. |
| 724 |
This program doesn't work as expected: |
| 725 |
<pre> |
| 726 |
<canvas> |
| 727 |
<class name="filters"/> |
| 728 |
<filters oninit="Debug.write( 'hi there' )"/> |
| 729 |
<canvas> |
| 730 |
</pre> |
| 731 |
<p> |
| 732 |
If you change the name of the class and instance to just, say, "filter" it works fine.</p> |
| 733 |
</li> |
| 734 |
<li>The contents of a view with clip=true may not display properly when the size of |
| 735 |
the view is changed. The contents may be stretched by one pixel. All text is |
| 736 |
clip=true, and small clipped resized text may be drawn slightly blurry.</li> |
| 737 |
<li>When operating under heavy processing loads, OpenLaszlo applications may send spurious |
| 738 |
global mouseup and mousedown events. When this happens, the warning |
| 739 |
<pre> WARNING: Sent extra global mouse event |
| 740 |
|
| 741 |
</pre> |
| 742 |
will print in the debugger.</li> |
| 743 |
<li>A constraint that depends on a.b.c is only updated if the value of a.b.c |
| 744 |
changes, not if a.b changes. |
| 745 |
|
| 746 |
For example: |
| 747 |
<pre> <attribute name="dec" type="number" value="0"/> |
| 748 |
<attribute name="hexString" type="string" value="${'0x'+dec.toString(16)}"/> |
| 749 |
</pre> |
| 750 |
hexString will not be updated when setAttribute() is called on dec. As a |
| 751 |
workaround, create your own event handler for the base value: |
| 752 |
<pre> <attribute name="dec" type="number" value="0"/> |
| 753 |
|
| 754 |
<attribute name="hexString" type="string" /> |
| 755 |
<method event="ondec"> |
| 756 |
hexString = '0x'+dec.toString(16); |
| 757 |
</method> |
| 758 |
</pre></li> |
| 759 |
<li> |
| 760 |
Views become invisible when opacity=0 |
| 761 |
This produces odd effects in programs that use automatic layout; e.g.<pre> |
| 762 |
<canvas layout="axis: x"/> |
| 763 |
<view width="20" height="20" bgcolor="red"/> |
| 764 |
<view width="20" height="20" bgcolor="blue" onclick="animate('opacity', 0, 1000)"/> |
| 765 |
<view width="20" height="20" bgcolor="gree"/> |
| 766 |
</canvas> |
| 767 |
|
| 768 |
</pre> |
| 769 |
|
| 770 |
</li> |
| 771 |
<li>Align and valign cannot be modified once they are set initially. To work around |
| 772 |
this issue use a state with an explicit constraint (rather than align or valign)</li> |
| 773 |
|
| 774 |
<li><animatorgroup> attributes not settable after init. To work around, set the |
| 775 |
individual attributes of the individual animators in the group.</li> |
| 776 |
<li>A view which uses align or valign may affect its parent's size before the |
| 777 |
alignment is applied. This means that using alignment in a view which is sized |
| 778 |
to its content will not work reliably.</li> |
| 779 |
|
| 780 |
<li>LzView.getMouse() doesn't work properly when stretches is enabled. To |
| 781 |
work around, getMouse relative to an unstretched view.</li> |
| 782 |
<li>Undocumented/unreserved globals may exist. This causes a collision with the id |
| 783 |
of some nodes and views. Views and nodes with an id of o, or s will |
| 784 |
eventually get overwritten.</li> |
| 785 |
<li>Using LzView.bringToFront() and LzView.sendToBack() will not work properly on |
| 786 |
views which whose parent is the canvas in an application which has a <splash>.</li> |
| 787 |
|
| 788 |
|
| 789 |
<li>A multiframe swf resource that has no sound will be played at 30 fps, regardless of its specified framerate.</li> |
| 790 |
<li>Most private LFC attributes begin with __LZ. However, some of them do not. In |
| 791 |
general, if an attribute does not appear in the documentation, it should be |
| 792 |
considered private, regardless of its name.</li> |
| 793 |
<li>LzView.getAttributeRelative() hangs Flash Player when called with null second |
| 794 |
argument.</li> |
| 795 |
<li>The canvas does not send an onconstruct event.</li> |
| 796 |
|
| 797 |
|
| 798 |
</ul></li></ul> |
| 799 |
|
| 800 |
<ul><li>OpenLaszlo Runtime Library (formerly known as Laszlo Foundation Classes) - Data<ul> |
| 801 |
|
| 802 |
<li>Datasets which have their request or autorequest attribute set to true will make |
| 803 |
a request even if they don't have a src attribute when they init.</li> |
| 804 |
<li>Using a state to create a view which is data-replicated may appear to work, but |
| 805 |
the state will not be removed properly. To work around, wrap the replicated view |
| 806 |
inside an extra view. |
| 807 |
For example: |
| 808 |
change this: |
| 809 |
<pre><state><view datapath="manyNodes"/> |
| 810 |
</pre> |
| 811 |
to: |
| 812 |
<pre><state><view><view datapath="manyNodes"/> |
| 813 |
</pre></li> |
| 814 |
<li>Datapointer's serialize() method is slow and can hang the Flash player.</li> |
| 815 |
|
| 816 |
<li>The dataselectionmanager only works with a lazy replicated list. Attempting to |
| 817 |
use it with a node that has not replicated will not work.</li> |
| 818 |
<li>Runtime HTTP requests for very long urls (> 1024 chars) made from a Laszlo |
| 819 |
application running in Internet Explorer can cause the all subsequent HTTP |
| 820 |
requests to fail. To work around, this use the setQueryType('POST') so that |
| 821 |
query string parameters are passed in the post body.</li> |
| 822 |
<li>Although a LzReplicationManager and its subclass (LzLazyReplicationManager) descend from |
| 823 |
LzDatapointer, they do not actually point to an LzDataNode. For this reason, they do not support |
| 824 |
relative xpathQuery() or setPointer() calls.</li> |
| 825 |
<li>A node's datapath attribute is null unless a datapath is given for |
| 826 |
it, either as a datapath= attribute, or as a declared child. To force a |
| 827 |
view to create a datapath, set its datapath to ".".</li> |
| 828 |
<li>Using the $path constraint syntax will force a node to create a |
| 829 |
datapath with an xpath of "." if it does not already have one. This can |
| 830 |
cause unexpected results due to the fact that a datapath which does not |
| 831 |
match any node will hide its view. See the datacontrolsvisibility |
| 832 |
attribute of datapath.</li> |
| 833 |
<li>Because the canvas can't have a datapath, $path bindings for attributes on the |
| 834 |
canvas don't work.</li> |
| 835 |
|
| 836 |
<li>$path syntax for value of attribute declared as number creates string value. As |
| 837 |
a workaround, you can use the parseint() function to cast the string back to a number.</li> |
| 838 |
|
| 839 |
<li>When setting a replication manager from a pointer, the replication manager is |
| 840 |
not dynamically bound to its data since it has no xpath query to rerun when the |
| 841 |
data changes. This means that, for instance, it will not re-sort when the data |
| 842 |
changes. To get a dynamic binding, set an xpath for the replication manager -- |
| 843 |
don't set its pointer directly. Alternatively, you can reset the pointer when |
| 844 |
sort values have changed.</li> |
| 845 |
|
| 846 |
|
| 847 |
</ul></li></ul> |
| 848 |
|
| 849 |
<ul><li>OpenLaszlo Runtime Library (formerly known as Laszlo Foundation Classes) - Text<ul> |
| 850 |
|
| 851 |
<li>The dash at the end of a word does not force a wrap if the width is less than |
| 852 |
the width at the dash but greater than the width at the last character before |
| 853 |
the dash.</li> |
| 854 |
<li>Single words in an input text field that are too long for the line will be clipped.</li> |
| 855 |
<li>Input text fields do not wrap on dashes -- only on spaces.</li> |
| 856 |
<li>Using the fgcolor property of the inputtext element changes the selection color |
| 857 |
to the same color as the text color.</li> |
| 858 |
|
| 859 |
<li>There is currently no way to center or right-align multiline text in Laszlo. If |
| 860 |
this is absolutely necessary, use a series of single line text fields and right |
| 861 |
align them.</li> |
| 862 |
<li>A Laszlo text field may not display correctly if it is given an extremely long |
| 863 |
line and it is multiline=false</li> |
| 864 |
<li><p>text</p> does not display unless multiline=true.</li> |
| 865 |
<li>The fontsize attribute doesn't cascade to children when reset at runtime. |
| 866 |
Although font information set on a parent will cascade to its children at |
| 867 |
construct-time, the binding is not active. Changing the parent's font after |
| 868 |
construction (say, at constraint resolution time) will not change the child's font.</li> |
| 869 |
<li>very long strings in singleline inputtext cause display problems</li> |
| 870 |
<li><text> and <inputtext> views are not designed to have subviews.</li> |
| 871 |
|
| 872 |
<li>A <text> which uses the <font...> tag will not automatically size its height |
| 873 |
properly.</li> |
| 874 |
<li>fgcolor attribute has no effect on inputtext</li> |
| 875 |
<li>Mouse events are not reported by <edittext>. They are reported by <inputtext>.</li> |
| 876 |
<li>This doesn't work when something else has been focused: |
| 877 |
this.editbox.setSelection(0); |
| 878 |
|
| 879 |
This did work: |
| 880 |
LzFocus.setFocus(this.editbox); |
| 881 |
this.editbox.setSelection(0);</li> |
| 882 |
|
| 883 |
<li>setfontstyle('bold') or setattribute('fontstyle','bold') require that you also |
| 884 |
update the text. </li> |
| 885 |
|
| 886 |
|
| 887 |
</ul></li></ul> |
| 888 |
|
| 889 |
<ul><li>LFC Object System<ul> |
| 890 |
|
| 891 |
<li>super.<member> is not supported and will produce a compilation error</li> |
| 892 |
<li>"meth" is a reserved word previously undocumented. Creating nodes with this name |
| 893 |
or id causes unpredictable behavior in lzbrowser.loadurl() and other calls.</li> |
| 894 |
|
| 895 |
</ul></li></ul> |
| 896 |
|
| 897 |
|
| 898 |
|
| 899 |
|
| 900 |
|
| 901 |
<ul><li>RPC - SOAP<ul> |
| 902 |
|
| 903 |
<li>If you get a NullPointerException reported when writing SOAP-based apps, look in |
| 904 |
the lps.log to find debugging information. Type mismatches in document style |
| 905 |
messages can throw NullPointerExceptions.</li> |
| 906 |
|
| 907 |
|
| 908 |
</ul></li></ul> |
| 909 |
|
| 910 |
|
| 911 |
|
| 912 |
<ul><li>Server data transport<ul> |
| 913 |
|
| 914 |
<li>LPS may maintain stale DNS mappings between hosts and IP addresses. |
| 915 |
Restarting LPS will cause it to drop any such stale mappings.</li> |
| 916 |
<li>When redirects are disallowed, backend 302 is reported as timeout instead of |
| 917 |
datasource error.</li> |
| 918 |
<li>The Persistent Connection manager can, in some cases, hold open sockets when the |
| 919 |
window is closed. As stated in the documentation, the persistent connection |
| 920 |
feature is provisional and should not be used in production software.</li> |
| 921 |
|
| 922 |
|
| 923 |
</ul></li></ul> |
| 924 |
|
| 925 |
<ul><li>Server globals<ul> |
| 926 |
|
| 927 |
|
| 928 |
<li>LPS does not gracefully handle syntax errors in the lps.properties file. A |
| 929 |
file with unexpected values for certain properties can cause the server to fail |
| 930 |
its initialization.</li> |
| 931 |
|
| 932 |
|
| 933 |
</ul></li></ul> |
| 934 |
|
| 935 |
<ul><li>Server media<ul> |
| 936 |
|
| 937 |
<li>An audio resource which is included at compile time will not play. For example, |
| 938 |
this: <view resource="myaudio.mpg"/> won't work. To work around, load the media |
| 939 |
at runtime (like this: <view resource="http:myaudio.mpg"/>) or use the LzAudio APIs.</li> |
| 940 |
<li>LPS may fail to proxy images and data from remote web sites that block |
| 941 |
proxies. Such requests will come back from the remote web sites marked as |
| 942 |
Forbidden.</li> |
| 943 |
|
| 944 |
</ul></li></ul> |
| 945 |
|
| 946 |
<ul><li>Server misc.<ul> |
| 947 |
|
| 948 |
<li>LPS does not work in the Turkish locale. The workaround is to add a |
| 949 |
-Duser.language=en to the JAVA_OPTS in your servlet container startup.</li> |
| 950 |
<li>The LZX source viewer does not display component resources</li> |
| 951 |
|
| 952 |
|
| 953 |
</ul></li></ul> |
| 954 |
|
| 955 |
|
| 956 |
<ul><li>Server XML<ul> |
| 957 |
|
| 958 |
<li>The data system requires well formed XML input. However, |
| 959 |
passing in XML with no root element will |
| 960 |
be sent to the client (which will get undefined results when it tries to |
| 961 |
process it) with no error. For example: |
| 962 |
|
| 963 |
<pre><foo> |
| 964 |
<........> |
| 965 |
</foo> |
| 966 |
<bar> |
| 967 |
<........> |
| 968 |
</bar> |
| 969 |
</pre></li> |
| 970 |
|
| 971 |
</ul></li></ul> |
| 972 |
|
| 973 |
<p class="bodytext">©Copyright 2002-2005 <a href="http://www.laszlosystems.com/">Laszlo Systems, Inc.</a> All rights reserved. Unauthorized use, duplication or distribution is strictly prohibited.</p> |
| 974 |
</body></html> |