Pliant talk forum

Pliant talk forum

Feature request: Content preserving buttons

When a button is pressed, only a section is redrawn.
Message posted by maybe Boris Reitman on 2007/05/16 07:28:11
I want to have some of the ideas from the new pliant server design ported 
back to the old design.

example:
--------------------
method page draw_screen
  arg_rw HtmlPage page
  text "header" ; eol
  section "xxx"
    text "hi"
  eol
  button "modify"
    modify_section "xxx"
      text "bye"
    reload_page
  text "footer"

draw_screen
-----------------

When page loads, it will look like this:
------
header
hi
[modify]
footer
------

When the button "modify" is pressed, the page will reload and look like this:
-----
header
bye
[modify]
footer
-----

The key, is that I don't have to redraw the full page manually. 
Whatever appeared before and after section "xxx" stays the same.
This is very usefull especially for form validation. 
In these cases I want to draw a message
near fields that were filled in improperly.

Boris



Message posted by maybe Hubert Tonneau on 2007/05/16 09:57:46
Sections is just the basic of the new Pliant UI.

I would suggest you to download pliant-98pre3 and study
/pliant/graphic/console/http_proxy.pli
to see if we can make it just a little bit more modular so that it be possible
to plug in advanced HTML styling.

On the down side, the new HTTP proxy has to store the all page content.
On the up side, it provides session notion and AJAX (partial update of the page)
right out of the box.

The HTTP proxy code in pliant-98pre3 is much closer to production quality than
the previous releases.
Message posted by maybe Hubert Tonneau on 2007/05/16 11:42:06
Maybe I should have added:
the latest version of the Pliant UI and HTTP proxy contains an 'html' instruction
that enables to provide raw HTML that the HTTP proxy will feed to the client
browser unmodified.
So, if you use the 'section' feature of the UI and the 'html' instruction,
you are close to what you expect.

Once again, nothing prevents to implement some plugin notion in the HTTP proxy
so that the page overall layout be customisable. The trouble might be that
the HTML frame notion makes many things fairly tricky.
Message posted by maybe Boris Reitman on 2007/05/16 16:24:39
Before I can use the new UI design for a website, several things need to 
happen to make it search engine friendly.
  
- Navigation around the site should be done with links, not buttons,
  and most links need to have no cgi parameters on them, but be clean.
- Remove the frameset and just keep the main window.
- A template notion the kind I just made for HtmlPage should be integrated,
  so that I can modify the look of the site without touching the code.
- Ability to have several websites with different looks but same codebase:
  - get proxy information from proxying apache server (Via headers), and pick
    templates based on domain of the site.

Plus, I have to rewrite all my website code.  Wouldn't it be faster, as the first 
step, to backport the "section" to the old design ?

I am having trouble logging in to the ui server from remote ui client, 
but I am able to connect as an anonymous user. What could be the problem ?
Also, when I use ui http proxy, how can I login as some user ? 
There is no button for it.

Thanks,
Boris
Message posted by maybe Boris Reitman on 2007/05/16 19:22:12
where is the "Recompile" button ?
Message posted by maybe Boris Reitman on 2007/05/16 20:22:57
a patch for resizing text input fields upon paste is missing.
Message posted by maybe Boris Reitman on 2007/05/17 03:03:24
Also, for website use, an abstraction over an <img src=""> tag will be needed.
In HTML proxy, images are viewed with <img alt="" src=""> tag, potentially, 
refering to URLs on other 3rd party servers.  On ui client, images can be sent raw, 
the way they are done now. So, in .ui code, something like

(image "http://www.google.ca/intl/en_ca/images/logo.gif" alt "Google Logo")

will render properly in both ui client and proxy.
Message posted by maybe Hubert Tonneau on 2007/05/29 09:27:12
It is very easy to write an extension to the server API that will render
differently for the native UI client and through the HTTP proxy.
The gerenal idea is:

method c my_tag
  arg_rw UIServerContext c
  implicit c
    if client_software="http_proxy"
      html "raw html content"
    else
      ...