Pliant UI HTTP proxyWhat's that for ?The Pliant UI HTTP proxy is bridge that will translate Pliant UI protocol to HTTP/HTML/Javascript in order to enable the application to be accessed from a standard web browser. Configuration- to be written - HTML CSSThere are huge differences between the way Pliant UI styling works, and the way HTML CSS works. If you do nothing special in your application, Pliant will try to map UI styling attributes to HTML, with more or less (more often less) success. Let's start with very simple example: style_copy "" "mystyle" The result will be incorrect when using a standard web browser because Pliant HTTP proxy in release 101 does not properly translate the text size attribute of the 'title' widget. The current result would just be: <h1>Sample title</h1> It will improve over next releases, but you'd better not expect miracles. Anyway, in order to get better control on HTML styling, you can explicitly assign an HTML CSS class to each Pliant widget, and provide the corresponding CSS rules: Here is the tiny example extended with two more instructions to define how to translate Pliant UI styling rule to HTML CSS: style_copy "" "mystyle" The result is now an extra line in the HTML header styling section (as a result of the new 'css' instruction): h1.mytitle { font-size: 50pt } and the code is now be translated to (as a result of the extra 'style_set' instruction): <h1 class="mytitle">Sample title</h1>" Please notice that Pliant 'css' instruction can be used to overwrite any of the default CSS rules generated by the HTTP proxy. As a summary, for one UI style (here 'mystyle') and for each widget, it is possible to decide if it will be handled automatically by Pliant HTTP proxy styling attributes translation mechanism, or will be translated using a single 'class' HTML attribute referring to explicitly provided HTML CSS rules. Another possibility is to apply CSS at Pliant 'style' instruction level instead of at individual widget level ('title' in the tiny example). Let's twist again: style_copy "" "mystyle" The new result in the HTML header is: h1.mycss { font-size: 50pt } and the new result in the HTML body is: <span class="mycss"><h1>Sample title</h1></span> where <span> HTML tag is the translation of 'style use' UI instruction that was previously not translated. It is even possible (starting from Pliant release 103) to force Pliant 'style use' instruction to be translated as a <div> HTML tag instead of a <span> HTML tag: style_copy "" "mystyle" The result in the HTML header is still: h1.mycss { font-size: 50pt } but the result in the HTML body is now: <div class="mycss"><h1>Sample title</h1></div Inline HTMLIt is sometime necessary to put inline HTML in the middle of your UI content, because the special tag or attribute you want to use has no UI equivalent. You can do that using 'html' instruction: html "<a href=[dq]http://hc.fullpliant.org/>Pliant hard core documentation</a>" HTTPThe 'http' instruction can be used to force the content of the HTML <head> section. http "title" "This is the title of my document" will translate to: <title>This is the title of my document</title>" Please notice that if you don't provide a title, but your document uses UI 'title' instruction, then the HTTP proxy will silently translate it to a <title> tag in the <head> section of the HTML document. http "keywords" "Fullpliant, Pliant, HTTP, proxy, documentation" will be translated to: <meta name="keywords" content="Fullpliant, Pliant, computer, language"> http "description" "Core documentation about the Pliant HTTP proxy" will be translated to: <meta name="description" content="Core documentation about the Pliant HTTP proxy"> http "robots" "noindex, nofollow" will be translated to: <meta name="robots" content="noindex, nofollow"> Then, 'http' instruction can also be used to force the way Pliant HTTP proxy will convert UI protocol to HTTP/HTML/Javascript: http "frame" "false" Switches from using frames to using a table to separate the various Pliant UI windows. http "javascript" "false" The page will be static. It will contain no Javascript code, client side caching will be allowed and no cookie will be used, so several Pliant UI instructions such as 'input', 'button', 'link' and 'hook' will just not work. The Pliant HTTP proxy will not provide session notion. http "javascript" "embedded" The Javascript code will be provided with the HTML content instead of as an external document. The default is to provide Javascript as an external document. http "css" "false" Prevents the HTTP proxy to use a CSS style sheet and CSS inline 'style' attributes. You'd better not do that. http "css" "external" The CSS code will be provided as an external document, unless some content has been forced using 'css' instruction. The default is to provide CSS with the HTML content. http "compress" "false" This can be useful to prevent Zlib compression when you use 'clipboard_file_upload' and 'clipboard_trigger' to provide the content of a file to download and you know that such a file cannot be efficiently compressed. If you look at the HTTP proxy code in /pliant/graphic/console/http_proxy.pli, you will see that some of these options can be set through the 'Style options' field in the site declaration database. As an example, you could enter: frame "false" This is a bit ugly, and might be removed in future releases. On the other hand, you can use the 'ui_site' instruction introduced with Pliant release 101: ui_site "hc.fullpliant.org" 'ui_site' is some standard site wide UI code that is executed before executing the code defined in any 'ui_path' instruction. Files upload and downloadThe following (untested) code maps /myorg/myapp/download/xxx urls to downloading some files in file:/download/ directory: ui_path "/myorg/myapp/download/" For more informations on how to enable files upload and download with the HTTP proxy, see the clipboard section in 'High interactivity applications using Pliant UI' article. |