Newbie questions about Pliant

Newbie questions about Pliant

query strings

is there any way we can pass variables from one page to another
or can we capture the text of the link the user clicked on on a page?
Message posted by maybe chhotu on 2002/02/03 21:53:36
i am having problems with capturing which link the user clicked on. i need to emulate 
something like a query string using pliant. this is what i want to do.
provide users a list of options in the form of a link.
when a user clicks on a link, provide the user respective data for that option.
which means i need to pass in the value of the clicked link on the next page. 

i tried using gvar in the .pli file and setting the value. it works of i have buttons,
but i am not able to capture the values for links. any suggestions?
Message posted by maybe Hubert Tonneau on 2002/02/04 09:31:37
I'm not sure to fully understand your problem.

. Using 'gvar' is not a good idea because these are shared amont all users
  accessing the HTTP server, so one will change the value for the other one :-(
  and even worse, if you don't use a semaphore to protect the access to the
  global variable, it will crash the server at some point.

. A link is not submitting the form (this is an HTTP feature, not a Pliant one),
  so no value will be recorded. If you want the link to be something more
  'special' (using JavaScript), try using 'button', an 'icon' or a 'note'.

  var Int i := 5
  note "Clic me"
    text "The value of i was: "+string:i
Message posted by maybe loic on 2002/02/04 10:40:55
I don't know if this will exactly answer your need, but with the 'link' instruction
you can pass some options:


    link "go to paul's page" "friends.html" options "paul"

And in the '', you can get the string you passed from the first page :

    var Str friend := options

    text "Welcome on "+friend+" 's page"
Message posted by maybe ingo.hohmann on 2002/02/04 15:42:57
Or another snippet (taken from a bigger .page):

---- start ------

var Str edit  := options option "edit"  Str                                                                   
var Str view  := options option "view"  Str                                                                   
eif view<>""                                                                                                  
  link view http_request:url_path options "edit " + (string view)                                       

---- end ----

spaces in the options, and the (string view) are needed, another snippet
using several otions at once:

---- start ----

var Int year  := options option "year"  Int                                                                   
var Int month := options option "month" Int                                                                   

  link " > " http_request:url_path options "year " + string:(year+1) + " month " + string:month               

---- end ----
Message posted by maybe Sauron on 2002/02/04 17:34:16
Hi, Ingo.

These last examples of yours went right over my head.

Mainly, because of the initialization

var Str edit  := options option "edit"  Str       

is 'options' a function that returns a string? How does it work?
Message posted by maybe Hubert Tonneau on 2002/02/04 17:39:03
> is 'options' a function that returns a string? How does it work?

No, it's one of the fields of HtmlPage data type.
Verbose writting would be:

  var Str edit := page:options option "edit"  Str

But 'page' is an implicit variable within all .page files, because it makes
things easier to read. Here is another example:

  text "abc" ; eol

is the same as:

  page text "abc" ; page eol
Message posted by maybe Ingo.Hohmann on 2002/02/04 20:21:57
> These last examples of yours went right over my head.

> var Str edit  := options option "edit"  Str       

> is 'options' a function that returns a string? How does it work?

Well, I don't know how far they go over your head, I really only know
how to use it, not how it works.

  options option "edit"  Str

could be translated into plain english somewhat like this:

Find the option named "edit" in the url path, and gimme back the value
associated to it as a string. As you can see in the other example, it is
possible to get it as an Int, too. I guess every type that can be converted
to/from string would be possible.

Well, that's all I can tell about it.