Patch title: Release 93 bulk changes
Abstract:
File: /protocol/http/style/common.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/admin/md5.pli"
submodule "/pliant/graphic/color/rgb888.pli"
submodule "/pliant/protocol/http/stack.pli"


named_expression button_framework
  body
    
function button_expression e options button_id ctx -> ok
  arg_rw Expression e ; arg Str options ; arg_w Str button_i
  ok := false
  var Link:Function current_function
  var Pointer:Arrow c :> pliant_general_dictionary first "pl
  if c<>null and entry_type:c=Function
    current_function :> c map Function
  else
    current_function :> new Function
  var Int index := options option "index" Int e:size-1
  var Link:Expression body :> expression duplicate button_fr
  var List expressions byaddress ; var List functions ; var 
  expressions append addressof:body
  byaddress append addressof:(new Ident (cast "page" Ident))
  body freeze expressions byaddress functions type ?
  copy_properties body:0 e:index
  var CBool stay := false
  for (var Int i) 0 body:size-1
    if body:i:is_pure_ident and (body:i:ident="reload_page" 
      stay := true
  if (stay or (options option "stay")) and not (options opti
    type:properties kmap "http stay" Void := void
  ctx :> argument local Str
  e add (instruction (the_function html_reset_context Str) c
  for (var Int i) 0 type:nb_fields-1
    var Pointer:TypeField tf :> type field i
    if tf:name<>"page"
      var Link:Expression id :> expression ident tf:name nea
      id compile ?
      var CBool data := database and id:is_data
      if database and data
        e suckup id
        e add (instruction (the_function data_add_to_context
      eif ((current_function:properties kmap "pliant editabl
        var Pointer:Type t :> id:result:type real_data_type
        if not (id cast t)
          error error_id_compile "Cannot cast '"+tf:name+"' 
          return
        var Pointer:Function fun :> t get_generic_method to_
        if not exists:fun or fun=(the_function '. to string'
          error error_id_compile "Cannot convert '"+tf:name+
          return
        e suckup id
        e add (instruction (the_function html_add_to_context
  button_id := new_button_id e
  var Link:Function sub_function :> functions:first map Func
  # var Pointer:Arrow c :> current_function:properties first
  # while c<>null
  #   if entry_type:c=Str
  #     sub_function:properties insert "style" false c
  #   c :> current_function:properties next "style" c
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/admin/md5.pli"
submodule "/pliant/graphic/color/rgb888.pli"
submodule "/pliant/protocol/http/stack.pli"


named_expression button_framework
  body
    
function button_expression e options button_id ctx -> ok
  arg_rw Expression e ; arg Str options ; arg_w Str button_i
  ok := false
  var Link:Function current_function
  var Pointer:Arrow c :> pliant_general_dictionary first "pl
  if c<>null and entry_type:c=Function
    current_function :> c map Function
  else
    current_function :> new Function
  var Int index := options option "index" Int e:size-1
  var Link:Expression body :> expression duplicate button_fr
  var List expressions byaddress ; var List functions ; var 
  expressions append addressof:body
  byaddress append addressof:(new Ident (cast "page" Ident))
  body freeze expressions byaddress functions type ?
  copy_properties body:0 e:index
  var CBool stay := false
  for (var Int i) 0 body:size-1
    if body:i:is_pure_ident and (body:i:ident="reload_page" 
      stay := true
  if (stay or (options option "stay")) and not (options opti
    type:properties kmap "http stay" Void := void
  ctx :> argument local Str
  e add (instruction (the_function html_reset_context Str) c
  for (var Int i) 0 type:nb_fields-1
    var Pointer:TypeField tf :> type field i
    if tf:name<>"page"
      var Link:Expression id :> expression ident tf:name nea
      id compile ?
      var CBool data := database and id:is_data
      if database and data
        e suckup id
        e add (instruction (the_function data_add_to_context
      eif ((current_function:properties kmap "pliant editabl
        var Pointer:Type t :> id:result:type real_data_type
        if not (id cast t)
          error error_id_compile "Cannot cast '"+tf:name+"' 
          return
        var Pointer:Function fun :> t get_generic_method to_
        if not exists:fun or fun=(the_function '. to string'
          error error_id_compile "Cannot convert '"+tf:name+
          return
        e suckup id
        e add (instruction (the_function html_add_to_context
  button_id := new_button_id e
  var Link:Function sub_function :> functions:first map Func
  # var Pointer:Arrow c :> current_function:properties first
  # while c<>null
  #   if entry_type:c=Str
  #     sub_function:properties insert "style" false c
  #   c :> current_function:properties next "style" c
  http_record_dynamic_page button_id e:position sub_function
  http_record_dynamic_page button_id sub_function type
  notify_button_type type
  ok := true


meta body e
  notify_button_type type
  ok := true


meta body e
  var Link:TagPrototype t :> the_tag:e
  var Link:TagPrototype t :> the_tag e
  if exists:t and e:size=0
    t body := true
    e set_void_result

meta newline e
  if exists:t and e:size=0
    t body := true
    e set_void_result

meta newline e
  var Link:TagPrototype t :> the_tag:e
  var Link:TagPrototype t :> the_tag e
  if exists:t and e:size=0
    t newline := true
    e set_void_result

meta hidden e
  if exists:t and e:size=0
    t newline := true
    e set_void_result

meta hidden e
  var Link:TagPrototype t :> the_tag:e
  var Link:TagPrototype t :> the_tag e
  if exists:t and e:size=0
    t hidden := true
    e set_void_result


  if exists:t and e:size=0
    t hidden := true
    e set_void_result