Pliant talk forum

Pliant talk forum

Feature request: Mutliple select, etc.

A small modification in server.pli would allow to easily implement
multiple selects, checkboxes, aso.
Message posted by pom on 2004/06/07 19:18:10
In server.pli, method request send_dynamic_file filename virtualpath -> status
in context copy part:


    for (var Int i) 0 t:nb_fields-1
      var Pointer:TypeField tf :> t field i
      var Str all := "&"+request:form+"&"
      if tf:name="page"
        (buf translate Byte tf:offset) map Address := addressof page
      eif (tf:properties first "pliant editable")<>null and (all eparse any (pattern "&"+tf:name+"=") any:(var Str value) "&" any:(var Str remain))
        all := "&"+remain
        while (all eparse any (pattern "&"+tf:name+"=") any:(var Str val) "&" any:(var Str remain))
          value += "%0D%0A"+(replace (replace val "+" " ") "%0D%0A" "%0A")
          all := "&"+remain
        pc += "&"+tf:name+"="+value
        from_string (buf translate Byte tf:offset) tf:type http_decode:value "db"
...

Principe: when multiple key=value are gived by a form, they are converted into
a single key=value, where the different values are separated by [cr][lf].
As this sequence cannot happened (it is replaced by a single [lf]), a parsing
will allow to recover the different values.

A possible use is either to define a 'from string' for sets, with values
separated by [cr][lf] (would be the best, I guess), or passing through
a Str (quick but dirty)