Patch title: Release 84 bulk changes
Abstract:
File: /pliant/protocol/http/style/common.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/util/encoding/neutral.pli"
module "/pliant/admin/md5.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 ?
module "/pliant/language/compiler.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/util/encoding/neutral.pli"
module "/pliant/admin/md5.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 function :> t get_generic_metho
        if not exists:function or function=(the_function '. 
          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
  notify_button_type type
  ok := true


  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 function :> t get_generic_metho
        if not exists:function or function=(the_function '. 
          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
  notify_button_type type
  ok := true