Patch title: Release 87 bulk changes
Abstract:
File: /pliant/protocol/http/style/default.style
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


  html_tag common
    attr bgcolor ColorRGB888 (color rgb 255 255 255)
    attr url_icon Str
    attr has_html4 CBool true
    attr head Str
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


  html_tag common
    attr bgcolor ColorRGB888 (color rgb 255 255 255)
    attr url_icon Str
    attr has_html4 CBool true
    attr head Str
    attr css Str
    attr header Str
    attr footer Str
    hidden


  html_tag table
    hidden


  html_tag table
    attr columns Int
    attr columns Int undefined
    attr padding Int 4 -> cellpadding
    attr padding Int 4 -> cellpadding
    attr spacing Int 0 -> cellpadding
    attr spacing Int 0 -> cellspacing
    attr border Int 1
    body
    newline
    attr border Int 1
    body
    newline
    attr cursor Int
    attr cursor Int undefined


method page standard_begin_hook
  arg_rw HtmlPage page
  implicit page
    write "<!DOCTYPE HTML PUBLIC [dq]-//W3C//DTD HTML 4.01 T
    write "<html>[lf]"
    write "<head>[lf]"
    if (attribute common url_icon)<>""
      write "<link rel=[dq]icon[dq] type=[dq]image/png[dq] h
    write "<script src=[dq]/common/pliant.js[dq] language=[d


method page standard_begin_hook
  arg_rw HtmlPage page
  implicit page
    write "<!DOCTYPE HTML PUBLIC [dq]-//W3C//DTD HTML 4.01 T
    write "<html>[lf]"
    write "<head>[lf]"
    if (attribute common url_icon)<>""
      write "<link rel=[dq]icon[dq] type=[dq]image/png[dq] h
    write "<script src=[dq]/common/pliant.js[dq] language=[d
    if (attribute common head)<>""
      write (attribute common head) ; write "[lf]"
    if (attribute common css)<>""
      write "<style type=[dq]text/css[dq]>[lf]"
      write (attribute common css) ; write "[lf]"
      write "</style>[lf]"
    write "</head>[lf]"
    write "<body"
    var ColorRGB888 bg := attribute common bgcolor
    if bg:r<>255 or bg:g<>255 or bg:b<>255
      write " bgcolor=[dq]"+(string bg "html")+"[dq]"
    write " onLoad=[dq]refresh()[dq]"
    write ">[lf]"
    write "</head>[lf]"
    write "<body"
    var ColorRGB888 bg := attribute common bgcolor
    if bg:r<>255 or bg:g<>255 or bg:b<>255
      write " bgcolor=[dq]"+(string bg "html")+"[dq]"
    write " onLoad=[dq]refresh()[dq]"
    write ">[lf]"
    # write "<!-- "+http_request:query_first_line+" -->[lf]"
    var Str enctype := ""
    if browser="konqueror"
      enctype := " enctype [dq]multipart/form-data[dq]"
    write "<form name=[dq]pliant[dq] method=[dq]POST[dq]"+en
    write "<input type=[dq]hidden[dq] name=[dq]_pliant_x[dq]
    write "<input type=[dq]hidden[dq] name=[dq]_pliant_y[dq]
    write "<input type=[dq]hidden[dq] name=[dq]_[dq] value=[
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "<font face=[dq]"+(attribute font face)+"[dq] co
    var Str enctype := ""
    if browser="konqueror"
      enctype := " enctype [dq]multipart/form-data[dq]"
    write "<form name=[dq]pliant[dq] method=[dq]POST[dq]"+en
    write "<input type=[dq]hidden[dq] name=[dq]_pliant_x[dq]
    write "<input type=[dq]hidden[dq] name=[dq]_pliant_y[dq]
    write "<input type=[dq]hidden[dq] name=[dq]_[dq] value=[
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "<font face=[dq]"+(attribute font face)+"[dq] co
    if (attribute common header)<>""
      write (attribute common header) ; write "[lf]"  
    page_header

method page standard_end_hook
  arg_rw HtmlPage page
  implicit page
    page_header

method page standard_end_hook
  arg_rw HtmlPage page
  implicit page
    if request:answered
    if not request:answer_header_sent or request:answer_footer_sent
      return
    page_footer
      return
    page_footer
    if (attribute common footer)<>""
      write (attribute common footer) ; write "[lf]"   
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "</font>[lf]"
    write "</form>[lf]"
    write "</body>[lf]"
    write "</html>[lf]"

function full_url target has_section section has_options opt
  arg Str target section options ; arg CBool has_section has
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "</font>[lf]"
    write "</form>[lf]"
    write "</body>[lf]"
    write "</html>[lf]"

function full_url target has_section section has_options opt
  arg Str target section options ; arg CBool has_section has
  url := target
  url := http_encode target
  var Str without_path := url (url search_last "/" -1)+1 url
  if not no_extension and without_path:len<>0 and (without_p
    url += ".html"
  if has_section
    url += "#"+http_encode:section
  if has_options
    url += "?"+http_encode:options


  style_tag note
  var Str without_path := url (url search_last "/" -1)+1 url
  if not no_extension and without_path:len<>0 and (without_p
    url += ".html"
  if has_section
    url += "#"+http_encode:section
  if has_options
    url += "?"+http_encode:options


  style_tag note
    write "<a href=[dq]"+request:url_path+"?"+http_encode:ta
    write "<a href=[dq]"+request:encoded_path+"?"+target+"[dq]>"+label+"</a>[lf]"


  style_tag title
    head "<title>"+label+"</title>[lf]"


  style_tag title
    head "<title>"+label+"</title>[lf]"
    if has:logo
      write "<table width=[dq]100%[dq]><tr><td width=[dq]100%[dq]>"
    if button<>"" or round>0
      box button button bsize bsize_x bsize_y margin margin_
        center
          font font face size ssr color color linebreak fals
            text html_decode:label
    else
    if button<>"" or round>0
      box button button bsize bsize_x bsize_y margin margin_
        center
          font font face size ssr color color linebreak fals
            text html_decode:label
    else
      if has:logo
        write "<table width=[dq]100%[dq]><tr><td width=[dq]1
      if ssr
        var Str url := "text "+(string html_decode:label)+" 
        write "<center><img src=[dq]/common/"+http_encode:ur
      else
        write "<h1><center>"+label+"</center></h1>"
      if ssr
        var Str url := "text "+(string html_decode:label)+" 
        write "<center><img src=[dq]/common/"+http_encode:ur
      else
        write "<h1><center>"+label+"</center></h1>"
      if has:logo
        write "</td><td>"
        if has:link
          write "<a href=[dq]"+link+"[dq]>"
        write "<img src=[dq]"+logo+"[dq]"+(shunt has:link " 
        if has:link
          write "</a>"
        write "</td></tr></table>"
    if has:logo
      write "</td><td>"
      if has:link
        write "<a href=[dq]"+link+"[dq]>"
      write "<img src=[dq]"+logo+"[dq]"+(shunt has:link " border=[dq]0[dq]" "")+">"
      if has:link
        write "</a>"
      write "</td></tr></table>"
    write "<br>[lf]"


  style_open box
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    var CBool colored := not has:transparent and (button<>""
    write "<table cellspacing=[dq]0[dq] cellpadding=[dq]"+st
    if has:width
      write " width=[dq]"+width+"[dq]"
    if has:left
      write " align=[dq]left[dq]"
    if has:right
      write " align=[dq]right[dq]"
    # write_attributes
    write "><tr>[lf]"
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
    write "<br>[lf]"


  style_open box
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    var CBool colored := not has:transparent and (button<>""
    write "<table cellspacing=[dq]0[dq] cellpadding=[dq]"+st
    if has:width
      write " width=[dq]"+width+"[dq]"
    if has:left
      write " align=[dq]left[dq]"
    if has:right
      write " align=[dq]right[dq]"
    # write_attributes
    write "><tr>[lf]"
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "<td><img src=[dq]/common/border+0"+http_encode:
      write "<td background=[dq]/common/border+1"+http_encod
      write "<td><img src=[dq]/common/border+2"+http_encode:
      write "<td><img src=[dq]/common/border%200"+http_encode:opt+"[dq]></td>[lf]"
      write "<td background=[dq]/common/border%201"+http_encode:opt+"[dq]></td>[lf]"
      write "<td><img src=[dq]/common/border%202"+http_encode:opt+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      if has:header
      write "</tr><tr>[lf]"
      if has:header
        write "<td background=[dq]/common/border+3"+http_enc
        write "<td background=[dq]/common/border%203"+http_encode:opt+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]/common/"+http_encode:url+"[dq
        else
          write header
        write "</center></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]/common/"+http_encode:url+"[dq
        else
          write header
        write "</center></td>[lf]"
        write "<td background=[dq]/common/border+5"+http_enc
        write "<td background=[dq]/common/border%205"+http_encode:opt+"[dq]></td>[lf]"
        write "</tr><tr>[lf]"
        write "</tr><tr>[lf]"
        write "<td><img src=[dq]/common/border+3"+http_encod
        write "<td><img src=[dq]/common/border%203"+http_encode:opt+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td><img src=[dq]/common/border+5"+http_encod
        write "<td><img src=[dq]/common/border%205"+http_encode:opt+"[dq]></td>[lf]"
        write "</tr><tr>[lf]"
        var Str opt := " button [dq]"+button+"[dq]"+(shunt b
        write "</tr><tr>[lf]"
        var Str opt := " button [dq]"+button+"[dq]"+(shunt b
        write "<td><img src=[dq]/common/border+3"+http_encod
        write "<td><img src=[dq]/common/border%203"+http_encode:opt+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
        write "<td><img src=[dq]/common/border+5"+http_encod
        write "<td><img src=[dq]/common/border%205"+http_encode:opt+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      write "</tr><tr>[lf]"
      write "<td background=[dq]/common/border+3"+http_encod
      write "<td background=[dq]/common/border%203"+http_encode:opt+"[dq]></td>[lf]"
    eif round>0
      var Str opt := " size "+string:round+" "+string:round+
    eif round>0
      var Str opt := " size "+string:round+" "+string:round+
      write "<td><img src=[dq]/common/corner+0"+http_encode:
      write "<td><img src=[dq]/common/corner%200"+http_encode:opt+"[dq]></td>[lf]"
      write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
      write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
      write "<td><img src=[dq]/common/corner+1"+http_encode:
      write "<td><img src=[dq]/common/corner%201"+http_encode:opt+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      if has:header
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]/common/"+http_encode:url+"[dq
        else
          write header
        write "</center></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
    else
      if has:header
        write "<td"+(shunt colored " bgcolor=[dq]#"+string:c
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]/common/"+http_encode:url+"[dq
        else
          write header
        write "</center></td>[lf]"
        write "</tr><tr>[lf]"
    write "<td width=[dq]100%[dq] height=[dq]100%[dq]"
    if colored
      write " bgcolor=[dq]#"+string:c2+"[dq]"
    write ">"
    html_stack mark
    if colored
      push common bgcolor c2
  style_close box
    html_stack rewind
    write "</td>[lf]"
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "</tr><tr>[lf]"
      if has:header
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]/common/"+http_encode:url+"[dq
        else
          write header
        write "</center></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
    else
      if has:header
        write "<td"+(shunt colored " bgcolor=[dq]#"+string:c
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]/common/"+http_encode:url+"[dq
        else
          write header
        write "</center></td>[lf]"
        write "</tr><tr>[lf]"
    write "<td width=[dq]100%[dq] height=[dq]100%[dq]"
    if colored
      write " bgcolor=[dq]#"+string:c2+"[dq]"
    write ">"
    html_stack mark
    if colored
      push common bgcolor c2
  style_close box
    html_stack rewind
    write "</td>[lf]"
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "<td background=[dq]/common/border+5"+http_encod
      write "<td background=[dq]/common/border%205"+http_encode:opt+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      write "</tr><tr>[lf]"
      write "<td><img src=[dq]/common/border+6"+http_encode:
      write "<td background=[dq]/common/border+7"+http_encod
      write "<td><img src=[dq]/common/border+8"+http_encode:
      write "<td><img src=[dq]/common/border%206"+http_encode:opt+"[dq]></td>[lf]"
      write "<td background=[dq]/common/border%207"+http_encode:opt+"[dq]></td>[lf]"
      write "<td><img src=[dq]/common/border%208"+http_encode:opt+"[dq]></td>[lf]"
    eif round>0
      var Str opt := " size "+string:round+" color [dq]"+str
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
    eif round>0
      var Str opt := " size "+string:round+" color [dq]"+str
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      write "<td><img src=[dq]/common/corner+2"+http_encode:
      write "<td><img src=[dq]/common/corner%202"+http_encode:opt+"[dq]></td>[lf]"
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "<td><img src=[dq]/common/corner+3"+http_encode:
      write "<td><img src=[dq]/common/corner%203"+http_encode:opt+"[dq]></td>[lf]"
    write "</tr></table>[lf]"


  style_tag option
    if (attribute select_begin is_active)
      write "<option"
      if value=(attribute select_begin value)
        write " selected"
      write " value=[dq]"+value+"[dq]"
      write ">"
      write label
      write "</option>[lf]"
    else
      if value=(attribute select_begin value)
        attribute select_begin selected_label := label
     
  style_tag pdata
    if has:rows
    write "</tr></table>[lf]"


  style_tag option
    if (attribute select_begin is_active)
      write "<option"
      if value=(attribute select_begin value)
        write " selected"
      write " value=[dq]"+value+"[dq]"
      write ">"
      write label
      write "</option>[lf]"
    else
      if value=(attribute select_begin value)
        attribute select_begin selected_label := label
     
  style_tag pdata
    if has:rows
      write "<table><tr><td><tt>"
    write label+"<tt>[lf]"
      write label+"[lf]"
      write "<table><tr><td><pre>[lf]"
    else
      write label+"<tt>[lf]"
    write "<pdata path=[dq]"+path+"[dq]>"+value+"</pdata>[lf
    write "<pdata path=[dq]"+path+"[dq]>"+value+"</pdata>[lf
    write "</tt>[lf]"
    if has:rows
    if has:rows
      write "</tt></td></tr></table>"
      write "</pre></td></tr></table>[lf]"
    else
      write "</tt>[lf]"



  style_tag button
    if button=""
      write "<input type=[dq]submit[dq] name=[dq]"+target+"[
    else
      var Str action := "[dq]button_pressed('"+target+"')[dq
      var Str event := shunt browser="netscape" "onMouseUp" 
      var Str url := "/common/button"+(http_encode " [dq]"+h
      write "<img src=[dq]"+url+"[dq] align=[dq]middle[dq] "
    if not has:noeol
      write "<br>[lf]"


  method p data_input d label length flags
    arg_rw HtmlPage p ; arg Data_ d ; arg Str label ; arg In
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    if (p attribute input is_read_only)
      p pdata label label path d:path value value
    else
      var Str dpath := replace (replace d:path "&#" "(") ";"
  style_tag button
    if button=""
      write "<input type=[dq]submit[dq] name=[dq]"+target+"[
    else
      var Str action := "[dq]button_pressed('"+target+"')[dq
      var Str event := shunt browser="netscape" "onMouseUp" 
      var Str url := "/common/button"+(http_encode " [dq]"+h
      write "<img src=[dq]"+url+"[dq] align=[dq]middle[dq] "
    if not has:noeol
      write "<br>[lf]"


  method p data_input d label length flags
    arg_rw HtmlPage p ; arg Data_ d ; arg Str label ; arg In
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    if (p attribute input is_read_only)
      p pdata label label path d:path value value
    else
      var Str dpath := replace (replace d:path "&#" "(") ";"
      p input label label type (shunt (flags .and. 2)=0 "tex
      p input label label type (shunt (flags .and. 2)=0 "text" "password") name "/"+(p:request generate_signature d:path)+dpath value value length length database
    if (flags .and. 1)<>0
      p eol


  method p data_text_input label d nx ny
    arg_rw HtmlPage p ; arg Str label ; arg Data_ d ; arg In
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    if (p attribute input is_read_only)
      p pdata label label path d:path value value columns nx
    else
      var Str dpath := replace (replace d:path "&#" "(") ";"
    if (flags .and. 1)<>0
      p eol


  method p data_text_input label d nx ny
    arg_rw HtmlPage p ; arg Str label ; arg Data_ d ; arg In
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    if (p attribute input is_read_only)
      p pdata label label path d:path value value columns nx
    else
      var Str dpath := replace (replace d:path "&#" "(") ";"
      p textarea label label name "|"+dpath+"|"+(p:request g
      p textarea label label name "/"+(p:request generate_signature d:path)+dpath value value columns nx rows ny database


  method p data_select_begin label d
    arg_rw HtmlPage p ; arg Str label ; arg Data_ d
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    p:html_stack mark
    p push select_begin value html_encode:value
    if (p attribute input is_read_only)
      p push select_begin is_active false
      p push select_begin label html_encode:label
      p push pdata path d:path
      p push select_begin selected_label ""
    else
      p push select_begin is_active true
      var Str dpath := replace (replace d:path "&#" "(") ";"


  method p data_select_begin label d
    arg_rw HtmlPage p ; arg Str label ; arg Data_ d
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    p:html_stack mark
    p push select_begin value html_encode:value
    if (p attribute input is_read_only)
      p push select_begin is_active false
      p push select_begin label html_encode:label
      p push pdata path d:path
      p push select_begin selected_label ""
    else
      p push select_begin is_active true
      var Str dpath := replace (replace d:path "&#" "(") ";"
      p select_begin label label name "|"+dpath+"|"+(p:reque
      p select_begin label label name "/"+(p:request generate_signature d:path)+dpath value value database
  
  method p data_select_end
    arg_rw HtmlPage p
    if (p attribute input is_read_only)
      p pdata label html_decode:(p attribute select_begin la
    else
      p select_end database
    p:html_stack rewind
   
meta '. select' e
  if e:size<4 or not (e:0 cast HtmlPage) or not (e:1 cast St
    return
  e:2:compile ?
  var CBool data := database and e:2:is_data
  if not data
    var Str name := shunt e:2:size=0 e:2:ident e:2:(e:2:size
    if name=""
      return
    var Link:Type type :> e:2:result:type:real_data_type
    if not (e:2 cast type)
      return
    var Pointer:Function function :> type get_generic_method
    if addressof:function=null or addressof:function=address
      return
    notify_editable_variable e:2
  var Bool eol := true
  var Int i := 3
  while i<e:size-1
    if e:i:ident="noeol"
      eol := false
      i += 1
    else
      return
  (e e:size-1) compile ?
  e suckup e:0 ; e suckup e:1 ; e suckup e:2
  if database and data
    e add (instruction (the_function '. data_select_begin' H
  else
    e add (instruction (the_function '. html_select_begin' H
  e suckup (e e:size-1)
  if database and data
    e add (instruction (the_function '. data_select_end' Htm
  else
    e add (instruction (the_function '. html_select_end' Htm
  if eol
    e add (instruction (the_function '. text' HtmlPage Str) 
  e set_void_result



  
  method p data_select_end
    arg_rw HtmlPage p
    if (p attribute input is_read_only)
      p pdata label html_decode:(p attribute select_begin la
    else
      p select_end database
    p:html_stack rewind
   
meta '. select' e
  if e:size<4 or not (e:0 cast HtmlPage) or not (e:1 cast St
    return
  e:2:compile ?
  var CBool data := database and e:2:is_data
  if not data
    var Str name := shunt e:2:size=0 e:2:ident e:2:(e:2:size
    if name=""
      return
    var Link:Type type :> e:2:result:type:real_data_type
    if not (e:2 cast type)
      return
    var Pointer:Function function :> type get_generic_method
    if addressof:function=null or addressof:function=address
      return
    notify_editable_variable e:2
  var Bool eol := true
  var Int i := 3
  while i<e:size-1
    if e:i:ident="noeol"
      eol := false
      i += 1
    else
      return
  (e e:size-1) compile ?
  e suckup e:0 ; e suckup e:1 ; e suckup e:2
  if database and data
    e add (instruction (the_function '. data_select_begin' H
  else
    e add (instruction (the_function '. html_select_begin' H
  e suckup (e e:size-1)
  if database and data
    e add (instruction (the_function '. data_select_end' Htm
  else
    e add (instruction (the_function '. html_select_end' Htm
  if eol
    e add (instruction (the_function '. text' HtmlPage Str) 
  e set_void_result