Commit c247833f84f1ae3ca557fbd7489da75f22b860cf

Authored by Cédric RICARD
1 parent f14ca7a6

Not a very nice patch allowing to remove javascript from web forms

Showing 1 changed file with 32 additions and 0 deletions   Show diff stats
calexium_lib/web/CXM_making_a_web_site.anubis
... ... @@ -1032,6 +1032,14 @@ public define HTML_In_Form
1032 1032 ) =
1033 1033 actioner(conn,targ,asp,action_name,extra_ops,[]).
1034 1034  
  1035 +public define HTML_In_Form
  1036 + actioner
  1037 + (
  1038 + Actioner_Connection conn,
  1039 + Actioner_Target targ,
  1040 + Actioner_Aspect asp,
  1041 + ) =
  1042 + actioner(conn, targ, asp, "", [], []).
1035 1043  
1036 1044  
1037 1045 public define HTML_In_Form
... ... @@ -1144,6 +1152,9 @@ public type HTML_Off_Form:
1144 1152 Maybe((String,List((String,String)))) action),
1145 1153 label (String name),
1146 1154 form (String form_name, List(CoreAttrs), HTML_In_Form content),
  1155 + form (String form_name, List(CoreAttrs),
  1156 + String action_name, List((String,String)) extra_ops,
  1157 + HTML_In_Form content),
1147 1158 div (List(CoreAttrs), HTML_Off_Form content),
1148 1159 div_empty (List(CoreAttrs)).
1149 1160  
... ... @@ -3101,6 +3112,10 @@ define Printable_tree
3101 3112 text, "</a>"
3102 3113 ],
3103 3114 javascript(s,h) then
  3115 + if action_name = "" then // special case where URL (so the action_name) is provided by the form itself
  3116 + // so javascript isn't needed. This is the standard HMTL way.
  3117 + ["<input type=\"submit\" value=\"",text,"\"", format_attrs(options), " />"]
  3118 + else
3104 3119 [s,"<input type=\"submit\" value=\"",text,"\"", format_attrs(options), " onclick=\"",h,"\" />"]
3105 3120 }
3106 3121 ],
... ... @@ -3928,6 +3943,23 @@ define Printable_tree
3928 3943 format(cinfo,fn,sn,ic_v,c,is_https),
3929 3944 "</form>"
3930 3945 ]
  3946 + form(fn,attributs, action_name, extra_ops, c) then
  3947 + with url = make_actioner_url(cinfo, same, same,
  3948 + sn, action_name, extra_ops, is_https),
  3949 + [
  3950 + "<form name=\"f",fn,"\"",
  3951 + format(cinfo,sn,ic_v,any_coreattrs(attributs),format_element,is_https),
  3952 + " method=\"post\"",
  3953 + enctype(c),
  3954 + " action=\"" + url + "\">",
  3955 +// " action=\"http",
  3956 +// if is_https then "s" else "",
  3957 +// "://",common_name,":",http_port,"/\">",
  3958 + // action is set dynamically by
  3959 + // the actioner using JavaScript
  3960 + format(cinfo,fn,sn,ic_v,c,is_https),
  3961 + "</form>"
  3962 + ]
3931 3963 div(options, e) then
3932 3964 format(cinfo,sn,ic_v,any_div(options, e),format_element,is_https),
3933 3965 div_empty(options) then
... ...