Commit dc3a74bcd8a1ba4b3827cd6f1b30bf94a4366cf8
Merge branch 'release/ANUBIS_1_14' of ssh://gitlab.calexium.com:33022/calexium/c…
…alexium_lib into release/ANUBIS_1_14
Showing
8 changed files
with
542 additions
and
15 deletions
Show diff stats
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 07/02/2017 | ||
| 5 | + * Time: 23:01 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +read tools/basis.anubis | ||
| 11 | +read densaku_lib/ds_generator.anubis | ||
| 12 | +read calexium_lib/ds_files/ds_types.anubis | ||
| 13 | +read calexium_lib/ds_files/ds_messages.anubis | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +global define One | ||
| 17 | + calexium_lib_ds | ||
| 18 | + ( | ||
| 19 | + List(String) args | ||
| 20 | + ) = | ||
| 21 | + if load_ds_generator is | ||
| 22 | + { | ||
| 23 | + failure then println("Densaku generator can't be load"), | ||
| 24 | + success(ds_gen) then forget(ds_gen.generate_type_files(calexium_lib_types_description, calexium_lib_messages_list, "ds_files/")) | ||
| 25 | + }. | ||
| 26 | + | ||
| 27 | +execute anbexec calexium_lib_ds // generate the file |
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 07/02/2017 | ||
| 5 | + * Time: 23:05 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +read densaku_lib/types/densaku.anubis | ||
| 10 | + | ||
| 11 | +public define List(DS_Type) calexium_lib_types_description = | ||
| 12 | + [ | ||
| 13 | +// public type DB_id: | ||
| 14 | +// none, | ||
| 15 | +// db_id(Int value). | ||
| 16 | + ds_type("DB_id", [ | ||
| 17 | + enum("none", comment("no database Primary Key ID")), | ||
| 18 | + alternative("db_id", [ | ||
| 19 | + component( int, "value", comment("Integer value of the Primary Key ID")) | ||
| 20 | + ]) | ||
| 21 | + ]), | ||
| 22 | + | ||
| 23 | +// public type DB_datetime: | ||
| 24 | +// db_datetime(String datetime). //Date and time in ISO8601 format "YYYY-MM-DD hh:mm:ss" | ||
| 25 | + ds_type("DB_datetime", [ | ||
| 26 | + alternative("db_datetime", [ | ||
| 27 | + component(string, "datetime", comment("Date and time in ISO8601 format \"YYYY-MM-DD hh:mm:ss\"")) | ||
| 28 | + ]) | ||
| 29 | + ]), | ||
| 30 | + | ||
| 31 | +// public type DB_date: | ||
| 32 | +// db_date(String date). //Date in ISO8601 format "YYYY-MM-DD" | ||
| 33 | + ds_type("DB_date", [ | ||
| 34 | + alternative("db_date", [ | ||
| 35 | + component(string, "date", comment("Date and time in ISO8601 format \"YYYY-MM-DD\"")) | ||
| 36 | + ]) | ||
| 37 | + ]), | ||
| 38 | + | ||
| 39 | +// public type DB_time: | ||
| 40 | +// db_time(String time). //Time in ISO8601 format "hh:mm:ss" | ||
| 41 | + ds_type("DB_time", [ | ||
| 42 | + alternative("db_time", [ | ||
| 43 | + component(string, "time", comment("Date and time in ISO8601 format \"hh:mm:ss\"")) | ||
| 44 | + ]) | ||
| 45 | + ]), | ||
| 46 | + | ||
| 47 | +// public type DB_integer: | ||
| 48 | +// db_integer(Int value). | ||
| 49 | +// calexium_lib/database/db_types.anubis | ||
| 50 | + ds_type("DB_integer", [ | ||
| 51 | + alternative("db_integer", [ | ||
| 52 | + component(int, "value", comment("Integer from datatase")) | ||
| 53 | + ]) | ||
| 54 | + ]), | ||
| 55 | + | ||
| 56 | +// public type MIME: | ||
| 57 | +// mime(String type, | ||
| 58 | +// String sybtype, | ||
| 59 | +// List(String) file_extensions). | ||
| 60 | +// library/web/mime.anubis | ||
| 61 | + ds_type("MIME", [ | ||
| 62 | + alternative("mime", [ | ||
| 63 | + component(string, "type"), | ||
| 64 | + component(string, "subtype"), | ||
| 65 | + component(list, string, "file_extensions") | ||
| 66 | + ]) | ||
| 67 | + ]), | ||
| 68 | + | ||
| 69 | + ] | ||
| 70 | +. |
| 1 | + | ||
| 2 | + | ||
| 3 | + *Project* The Anubis Project | ||
| 4 | + | ||
| 5 | + *Title* A minimal web site. | ||
| 6 | + | ||
| 7 | + *Copyright* Copyright © Calexium www.calexium.com. | ||
| 8 | + | ||
| 9 | + *Released* | ||
| 10 | + | ||
| 11 | + *Author* David RENÉ | ||
| 12 | + | ||
| 13 | + *Overview* | ||
| 14 | + | ||
| 15 | + This file is just an example which may help to start making a web site with | ||
| 16 | + Anubis Calexium Library | ||
| 17 | + It was based on the example for making a minimal web site made by Alain Prouté and located | ||
| 18 | + in examples/network folder in standard library example | ||
| 19 | + | ||
| 20 | + This example is absolutely minimalist and manage only page. | ||
| 21 | + | ||
| 22 | + | ||
| 23 | +read tools/basis.anubis // required for 'make_directory' and . | ||
| 24 | +read system/convert.anubis | ||
| 25 | +read calexium_lib/web/CXM_common.anubis // required for type 'Web_arg' | ||
| 26 | +read calexium_lib/web/CXM_multihost_http_server.anubis // required for type 'HTTP_Info' | ||
| 27 | +read calexium_lib/web/CXM_controller.anubis | ||
| 28 | +read calexium_lib/web/CXM_making_a_web_site.anubis | ||
| 29 | +read web/mime.anubis // required for list of known MIME types | ||
| 30 | +read calexium_lib/web/CXM_web_arg_utils.anubis | ||
| 31 | +read calexium_lib/web/CXM_form.anubis | ||
| 32 | +read calexium_lib/web/jQuery/CXM_jquery_button.anubis | ||
| 33 | + | ||
| 34 | + *** Server directory. | ||
| 35 | + | ||
| 36 | + A directory for putting files for all web sites. There will be one subdirectory per web | ||
| 37 | + site. | ||
| 38 | + | ||
| 39 | +define String web_sites_directory = my_anubis_directory+"/web_sites". | ||
| 40 | + | ||
| 41 | + | ||
| 42 | +define HTML_Partial_Content | ||
| 43 | + create_login_form | ||
| 44 | + = | ||
| 45 | + | ||
| 46 | + partial_content( | ||
| 47 | + [css(css_file("css/login.css"))], | ||
| 48 | + div([id("login")], | ||
| 49 | + sequence([ | ||
| 50 | + //BODY | ||
| 51 | + div([id("login_body")], | ||
| 52 | + cxm_form( "login_form", [], "do_login", [], [], | ||
| 53 | + [ | ||
| 54 | + input (label(("LOGIN_NAME"), no_help), wan("login_name"), init(""), narrow, non_mandatory), | ||
| 55 | + password_input(label(("PASSWORD"), no_help), wan("password"), init(""), narrow, non_mandatory), | ||
| 56 | + partial(img_submit_button(("CONNECTION"), "login_form" )) | ||
| 57 | + ]) | ||
| 58 | + ), | ||
| 59 | + ]) | ||
| 60 | + )). | ||
| 61 | + | ||
| 62 | +define HTTP_Answer | ||
| 63 | + go_login | ||
| 64 | + ( | ||
| 65 | + One state | ||
| 66 | + )= | ||
| 67 | + html_page | ||
| 68 | + ( | ||
| 69 | + "Example Site 1", // title of web site | ||
| 70 | + [], // list of 'META' tags (empty for this site) | ||
| 71 | + body // body of page | ||
| 72 | + ( | ||
| 73 | + // list of body options | ||
| 74 | + [ | ||
| 75 | + background_color(rgb(255,200,200)) | ||
| 76 | + // add more body options here | ||
| 77 | + ], | ||
| 78 | + | ||
| 79 | + // content of page | ||
| 80 | + partial(create_login_form) | ||
| 81 | + ) | ||
| 82 | + ) | ||
| 83 | +. | ||
| 84 | + | ||
| 85 | +define HTTP_Answer | ||
| 86 | + compute_page_1 | ||
| 87 | + ( | ||
| 88 | + One state | ||
| 89 | + )= | ||
| 90 | + html_page | ||
| 91 | + ( | ||
| 92 | + "Example Site 1", // title of web site | ||
| 93 | + [], // list of 'META' tags (empty for this site) | ||
| 94 | + body // body of page | ||
| 95 | + ( | ||
| 96 | + // list of body options | ||
| 97 | + [ | ||
| 98 | + background_color(rgb(255,200,200)) | ||
| 99 | + // add more body options here | ||
| 100 | + ], | ||
| 101 | + | ||
| 102 | + // content of page | ||
| 103 | + center(text([size(14)],"This is the 'Example 1' web site.")) | ||
| 104 | + ) | ||
| 105 | + ) | ||
| 106 | +. | ||
| 107 | + | ||
| 108 | +define (One, HTTP_Answer) | ||
| 109 | + root_controller | ||
| 110 | + ( | ||
| 111 | + HTTP_Info http_info, | ||
| 112 | + List(Web_arg) lwa, | ||
| 113 | + Bool is_https, | ||
| 114 | + One toto | ||
| 115 | + )= | ||
| 116 | + | ||
| 117 | + with action = get_String(lwa, "action", "go_login"), | ||
| 118 | + if action = "go_login" then | ||
| 119 | + (unique, go_login(unique)) | ||
| 120 | + else | ||
| 121 | + (unique, compute_page_1(unique)). | ||
| 122 | + | ||
| 123 | + | ||
| 124 | +define WEB_Controller(One) | ||
| 125 | + make_root_controller | ||
| 126 | + = | ||
| 127 | + web_controller("root", root_controller) | ||
| 128 | +. | ||
| 129 | + | ||
| 130 | + Making the description of web site 1. In this description, several elements are the | ||
| 131 | + bare minimum. There is no action at all, no data base, almost nothing. See | ||
| 132 | + 'web/making_a_web_site.anubis' for the declaration of the function | ||
| 133 | + 'make_web_site_description'. | ||
| 134 | + | ||
| 135 | +define Web_Site | ||
| 136 | + example_site_1 | ||
| 137 | + = | ||
| 138 | + // make the directory for web site 1 | ||
| 139 | + // (subdirectories of it will be created automatically by the HTTP server) | ||
| 140 | + forget((String)make_directory(web_sites_directory+"/example_site_1")); | ||
| 141 | + | ||
| 142 | + // make a list of all possible 'host names' for web site 1: | ||
| 143 | + with addresses = (List(String)) | ||
| 144 | + [ | ||
| 145 | + "example-site-1", | ||
| 146 | + "127.0.0.1", | ||
| 147 | + "192.168.0.1" | ||
| 148 | + // add more adresses here | ||
| 149 | + ], | ||
| 150 | + | ||
| 151 | + // now make the description of the web site | ||
| 152 | + make_web_site_controller_description( | ||
| 153 | + | ||
| 154 | + //this is the unique ID of the web site. This ID will be use for prepend the cookies | ||
| 155 | + //names belonging to that web site | ||
| 156 | + "example", | ||
| 157 | + | ||
| 158 | + // the list of addresses defined above | ||
| 159 | + addresses, | ||
| 160 | + | ||
| 161 | + // directory for the files of web site 1 | ||
| 162 | + web_sites_directory+"/example_site_1", | ||
| 163 | + | ||
| 164 | + // directory for the states of that web_site | ||
| 165 | + web_sites_directory+"/example_site_1/states", | ||
| 166 | + | ||
| 167 | + // initializing function | ||
| 168 | + (One u) |-> u, // nothing to initialize for web site 1 | ||
| 169 | + | ||
| 170 | + // the function producing the initial state | ||
| 171 | + (HTTP_Info info, | ||
| 172 | + List(Web_arg) lwa, | ||
| 173 | + Bool is_https) |-> unique, // there is ony one possible state for web site 1 | ||
| 174 | + | ||
| 175 | + // the function for handling expired tickets | ||
| 176 | + // (tickets are kept on the server's disk and represent states. They are used for | ||
| 177 | + // passing session informations from pages to pages. See | ||
| 178 | + // 'web/CXM_making_a_web_site.anubis' for detailed explanations.) | ||
| 179 | + (One expired, | ||
| 180 | + Maybe(String) mb_action_name, | ||
| 181 | + HTTP_Info info, | ||
| 182 | + List(Web_arg) lwa, | ||
| 183 | + Bool is_https) |-> unique, // keep the same state | ||
| 184 | + | ||
| 185 | + // the function for handling lost tickets | ||
| 186 | + (Maybe(String) mb_action_name, | ||
| 187 | + HTTP_Info info, | ||
| 188 | + List(Web_arg) lwa, | ||
| 189 | + Bool is_https) |-> unique, // restart with default state | ||
| 190 | + | ||
| 191 | + var([make_root_controller]), | ||
| 192 | + | ||
| 193 | + // the function for producing additional HTTP headers | ||
| 194 | + (One u) |-> [], | ||
| 195 | + | ||
| 196 | + // timeout for tickets (in seconds) | ||
| 197 | + 3600, // does'nt matter since only one state | ||
| 198 | + | ||
| 199 | + // list of redirections (one for each address) | ||
| 200 | + // (see 'web/CXM_common.anubis' for the type 'Redirection') | ||
| 201 | + redirection_list(map((String address) |-> redirect("/",address,"/index.awp"), addresses)), | ||
| 202 | + | ||
| 203 | + // character encoding for web site 1 | ||
| 204 | + "UTF-8", | ||
| 205 | + | ||
| 206 | + // list of URI extensions producing a console/journal message | ||
| 207 | + [ | ||
| 208 | + ".awp", // pages computed by this program | ||
| 209 | + ".jpg", // images, etc... | ||
| 210 | + ".gif", | ||
| 211 | + ".png" | ||
| 212 | + // add more extensions here (they must be known; see 'web/mime.anubis') | ||
| 213 | + ], | ||
| 214 | + | ||
| 215 | + // list of HTTP headers which are traced in the console/journal messages | ||
| 216 | + [ | ||
| 217 | + "host", | ||
| 218 | + "user-agent" | ||
| 219 | + // add more HTTP headers here | ||
| 220 | + ], | ||
| 221 | + | ||
| 222 | + // secret string (used by 'private download') | ||
| 223 | + "HUD76GRD56FD7GFDS4RT", // for a real site, please choose another one | ||
| 224 | + // it must remain secret | ||
| 225 | + | ||
| 226 | + // list of known MIME types (taken from 'web/mime.anubis') | ||
| 227 | + known_mime_types, | ||
| 228 | + | ||
| 229 | + // action to be performed before a file is sent | ||
| 230 | + // (for example, this may be used for counting downloads) | ||
| 231 | + (String action_name, | ||
| 232 | + List(Web_arg) lwa) |-> unique // no action at all | ||
| 233 | + ) | ||
| 234 | +. | ||
| 235 | + | ||
| 236 | + | ||
| 237 | + | ||
| 238 | + | ||
| 239 | + *** Example site 2. | ||
| 240 | + | ||
| 241 | + Imagine another web site here... | ||
| 242 | + | ||
| 243 | + | ||
| 244 | + | ||
| 245 | + | ||
| 246 | + | ||
| 247 | + *** Starting all our web sites together. | ||
| 248 | + | ||
| 249 | +global define One | ||
| 250 | + minimal_web_site_vc | ||
| 251 | + ( | ||
| 252 | + List(String) args | ||
| 253 | + ) = | ||
| 254 | + // make the directory for all web sites (if needed) | ||
| 255 | + forget((String) make_directory(web_sites_directory)); | ||
| 256 | + | ||
| 257 | + with http_port = (Word32)8000, | ||
| 258 | + https_port = (Word32)4430, | ||
| 259 | + // create a variable for handling the shutdown of our web sites | ||
| 260 | + with shutdown_required = var(false), | ||
| 261 | + with is_shutdown = (One u) |-> *shutdown_required, | ||
| 262 | + | ||
| 263 | + // start all web sites | ||
| 264 | + if start_web_sites( | ||
| 265 | + 0, // listen on all IP addresses | ||
| 266 | + http_port, // port for HTTP | ||
| 267 | + https_port, // port for HTTPS | ||
| 268 | + "www.georges.example.com", // common name of SSL certificate | ||
| 269 | + [ | ||
| 270 | + example_site_1 | ||
| 271 | + // add other web sites here | ||
| 272 | + ], | ||
| 273 | + is_shutdown) is | ||
| 274 | + { | ||
| 275 | + cannot_bind_to_port(n) then println("Cannot bind to port: "+n), | ||
| 276 | + cannot_bind_to_port(n,m) then println("Cannot bind to ports: "+n+", "+m), | ||
| 277 | + ok(s1,s2) then println("Servers started on ports "+http_port+" (HTTP) and "+https_port+" (HTTPS).") | ||
| 278 | + } | ||
| 279 | +. | ||
| 280 | + | ||
| 281 | + | ||
| 282 | + |
string/crlf.anubis
| @@ -101,13 +101,26 @@ public define ResultCopy | @@ -101,13 +101,26 @@ public define ResultCopy | ||
| 101 | copy_file_and_convert_to_CRLF | 101 | copy_file_and_convert_to_CRLF |
| 102 | ( | 102 | ( |
| 103 | String file, | 103 | String file, |
| 104 | - ByteArray -> ByteArray converter | 104 | + ByteArray -> ByteArray converter, |
| 105 | + Bool keep_org | ||
| 105 | )= | 106 | )= |
| 106 | if rename(file, file+".tmp") then | 107 | if rename(file, file+".tmp") then |
| 107 | with result = copy_file_and_convert_to_CRLF(file+".tmp", file, converter), | 108 | with result = copy_file_and_convert_to_CRLF(file+".tmp", file, converter), |
| 108 | - forget(remove(file+".tmp")); | 109 | + (if keep_org then |
| 110 | + unique | ||
| 111 | + else | ||
| 112 | + forget(remove(file+".tmp"))); | ||
| 109 | result | 113 | result |
| 110 | else | 114 | else |
| 111 | - cant_create_file. | 115 | + cant_create_file |
| 116 | +. | ||
| 112 | 117 | ||
| 113 | 118 | ||
| 119 | +public define ResultCopy | ||
| 120 | + copy_file_and_convert_to_CRLF | ||
| 121 | + ( | ||
| 122 | + String file, | ||
| 123 | + ByteArray -> ByteArray converter | ||
| 124 | + )= | ||
| 125 | + copy_file_and_convert_to_CRLF(file, converter, false) | ||
| 126 | +. |
web/CXM_form.anubis
| @@ -317,6 +317,11 @@ public define CXM_Form_Field | @@ -317,6 +317,11 @@ public define CXM_Form_Field | ||
| 317 | submit(WEB_Action_Name action_name, Maybe(String) label, String button_text, List((String,String)) extra_operands) | 317 | submit(WEB_Action_Name action_name, Maybe(String) label, String button_text, List((String,String)) extra_operands) |
| 318 | = submit([], htmlClass(""), action_name, label, button_text, extra_operands). | 318 | = submit([], htmlClass(""), action_name, label, button_text, extra_operands). |
| 319 | 319 | ||
| 320 | +public define CXM_Form_Field //Helper for older project wich use only String as Action name | ||
| 321 | + submit(String _action_name, Maybe(String) label, String button_text, List((String,String)) extra_operands) | ||
| 322 | + = submit([], htmlClass(""), action_name(_action_name), label, button_text, extra_operands). | ||
| 323 | + | ||
| 324 | + | ||
| 320 | public define CXM_Form_Field | 325 | public define CXM_Form_Field |
| 321 | upload(HTML_Label label, HTML_Id id, WebArgName name, Width width) | 326 | upload(HTML_Label label, HTML_Id id, WebArgName name, Width width) |
| 322 | = upload([], label, id, name, width, non_mandatory). | 327 | = upload([], label, id, name, width, non_mandatory). |
| @@ -634,6 +639,29 @@ public define HTML_Off_Form | @@ -634,6 +639,29 @@ public define HTML_Off_Form | ||
| 634 | extra_ops, | 639 | extra_ops, |
| 635 | format_CXM_Form_Field(fields, lwa) | 640 | format_CXM_Form_Field(fields, lwa) |
| 636 | ). | 641 | ). |
| 642 | + | ||
| 643 | +public define HTML_Off_Form | ||
| 644 | +/* older manner to call CXM_form with action as String. | ||
| 645 | + * this function only exists for compatibility with older projects. Please consider | ||
| 646 | + * to use the above function with WEB_Action_Name instead of String | ||
| 647 | +*/ | ||
| 648 | + cxm_form | ||
| 649 | + ( | ||
| 650 | + HTML_Id form_Id, | ||
| 651 | + List(CoreAttrs) options, | ||
| 652 | + String action, //older manner to call action with String | ||
| 653 | + List((String,String)) extra_ops, | ||
| 654 | + List(Web_arg) lwa, | ||
| 655 | + List(CXM_Form_Field) fields | ||
| 656 | + ) = | ||
| 657 | + | ||
| 658 | + form( | ||
| 659 | + form_Id, | ||
| 660 | + [class("cxm_form") . options], | ||
| 661 | + action_name(action), | ||
| 662 | + extra_ops, | ||
| 663 | + format_CXM_Form_Field(fields, lwa) | ||
| 664 | + ). | ||
| 637 | 665 | ||
| 638 | public define HTML_Off_Form | 666 | public define HTML_Off_Form |
| 639 | cxm_form | 667 | cxm_form |
| @@ -646,17 +674,19 @@ public define HTML_Off_Form | @@ -646,17 +674,19 @@ public define HTML_Off_Form | ||
| 646 | List(CXM_Form_Field) form_fields | 674 | List(CXM_Form_Field) form_fields |
| 647 | )= | 675 | )= |
| 648 | cxm_form(html_Id(form_name), options, action, extra_ops, lwa, form_fields). | 676 | cxm_form(html_Id(form_name), options, action, extra_ops, lwa, form_fields). |
| 649 | - | ||
| 650 | - public define HTML_In_Form | ||
| 651 | - cxm_fieldset | 677 | + |
| 678 | +public define HTML_Off_Form | ||
| 679 | + cxm_form | ||
| 652 | ( | 680 | ( |
| 653 | - HTML_Id fieldSetId, | 681 | + String form_name, |
| 682 | + List(CoreAttrs) options, | ||
| 683 | + String action, | ||
| 684 | + List((String,String)) extra_ops, | ||
| 654 | List(Web_arg) lwa, | 685 | List(Web_arg) lwa, |
| 655 | - List(CXM_Form_Field) fields | ||
| 656 | - ) = | ||
| 657 | - cxm_fieldset([id(fieldSetId.id), class("aligned")], "", lwa, fields). | ||
| 658 | - | ||
| 659 | - | 686 | + List(CXM_Form_Field) form_fields |
| 687 | + )= | ||
| 688 | + cxm_form(html_Id(form_name), options, action_name(action), extra_ops, lwa, form_fields). | ||
| 689 | + | ||
| 660 | 690 | ||
| 661 | public define HTML_Off_Form | 691 | public define HTML_Off_Form |
| 662 | cxm_form | 692 | cxm_form |
web/CXM_making_a_web_site.anubis
| @@ -1398,6 +1398,23 @@ public define HTML_In_Form | @@ -1398,6 +1398,23 @@ public define HTML_In_Form | ||
| 1398 | String name | 1398 | String name |
| 1399 | ) = | 1399 | ) = |
| 1400 | foreign_link([size(tsize)],url,name). | 1400 | foreign_link([size(tsize)],url,name). |
| 1401 | + | ||
| 1402 | +public define HTML_In_Form | ||
| 1403 | +/* Older call with String as action instead of WEB_Action_Name. | ||
| 1404 | + * This function exists only for compatibility with older project. | ||
| 1405 | + * Please condiser to use above function instead | ||
| 1406 | + */ | ||
| 1407 | + actioner | ||
| 1408 | + ( | ||
| 1409 | + Actioner_Connection conn, | ||
| 1410 | + Actioner_Target targ, | ||
| 1411 | + Actioner_Aspect asp, | ||
| 1412 | + String action, | ||
| 1413 | + List((String,String)) extra_ops, | ||
| 1414 | + List(Actioner_Local_Action) local_actions | ||
| 1415 | + )= | ||
| 1416 | + actioner(conn,targ,asp,action_name(action),extra_ops,local_actions) | ||
| 1417 | +. | ||
| 1401 | 1418 | ||
| 1402 | public define HTML_In_Form | 1419 | public define HTML_In_Form |
| 1403 | actioner | 1420 | actioner |
| @@ -1410,6 +1427,22 @@ public define HTML_In_Form | @@ -1410,6 +1427,22 @@ public define HTML_In_Form | ||
| 1410 | )= | 1427 | )= |
| 1411 | actioner(conn,targ,asp,action,extra_ops,[]) | 1428 | actioner(conn,targ,asp,action,extra_ops,[]) |
| 1412 | . | 1429 | . |
| 1430 | + | ||
| 1431 | +public define HTML_In_Form | ||
| 1432 | +/* Older call with String as action instead of WEB_Action_Name. | ||
| 1433 | + * This function exists only for compatibility with older project. | ||
| 1434 | + * Please condiser to use above function instead | ||
| 1435 | + */ | ||
| 1436 | + actioner | ||
| 1437 | + ( | ||
| 1438 | + Actioner_Connection conn, | ||
| 1439 | + Actioner_Target targ, | ||
| 1440 | + Actioner_Aspect asp, | ||
| 1441 | + String action, | ||
| 1442 | + List((String,String)) extra_ops | ||
| 1443 | + )= | ||
| 1444 | + actioner(conn,targ,asp,action_name(action),extra_ops,[]) | ||
| 1445 | +. | ||
| 1413 | 1446 | ||
| 1414 | public define HTML_In_Form | 1447 | public define HTML_In_Form |
| 1415 | actioner | 1448 | actioner |
| @@ -1621,6 +1654,16 @@ public define HTML_Off_Form | @@ -1621,6 +1654,16 @@ public define HTML_Off_Form | ||
| 1621 | ) = | 1654 | ) = |
| 1622 | form(html_Id(form_name), options, action, extra_ops, content). | 1655 | form(html_Id(form_name), options, action, extra_ops, content). |
| 1623 | 1656 | ||
| 1657 | +public define HTML_Off_Form | ||
| 1658 | + form | ||
| 1659 | + ( | ||
| 1660 | + String form_name, | ||
| 1661 | + List(CoreAttrs) options, | ||
| 1662 | + String action, | ||
| 1663 | + List((String,String)) extra_ops, | ||
| 1664 | + HTML_In_Form content | ||
| 1665 | + ) = | ||
| 1666 | + form(html_Id(form_name), options, action_name(action), extra_ops, content). | ||
| 1624 | 1667 | ||
| 1625 | public define HTML_Off_Form literal(Printable_tree t) = literal_pt(t). | 1668 | public define HTML_Off_Form literal(Printable_tree t) = literal_pt(t). |
| 1626 | public define HTML_Off_Form fixed_size(HTML_Size width, HTML_Size height, String name_of_HTML_file) | 1669 | public define HTML_Off_Form fixed_size(HTML_Size width, HTML_Size height, String name_of_HTML_file) |
| @@ -1647,6 +1690,39 @@ public define HTML_Off_Form | @@ -1647,6 +1690,39 @@ public define HTML_Off_Form | ||
| 1647 | List((String,String)) extra_ops | 1690 | List((String,String)) extra_ops |
| 1648 | ) = | 1691 | ) = |
| 1649 | actioner(conn,targ,asp,action,extra_ops,[]). | 1692 | actioner(conn,targ,asp,action,extra_ops,[]). |
| 1693 | + | ||
| 1694 | +public define HTML_Off_Form | ||
| 1695 | +/* Older call with String as action instead of WEB_Action_Name. | ||
| 1696 | + * This function exists only for compatibility with older project. | ||
| 1697 | + * Please condiser to use above function instead | ||
| 1698 | + */ | ||
| 1699 | + actioner | ||
| 1700 | + ( | ||
| 1701 | + Actioner_Connection conn, | ||
| 1702 | + Actioner_Target targ, | ||
| 1703 | + Actioner_Aspect asp, | ||
| 1704 | + String action, | ||
| 1705 | + List((String,String)) extra_ops, | ||
| 1706 | + List(Actioner_Local_Action) local_actions | ||
| 1707 | + )= | ||
| 1708 | + actioner(conn,targ,asp,action_name(action),extra_ops,local_actions) | ||
| 1709 | +. | ||
| 1710 | + | ||
| 1711 | +public define HTML_Off_Form | ||
| 1712 | +/* Older call with String as action instead of WEB_Action_Name. | ||
| 1713 | + * This function exists only for compatibility with older project. | ||
| 1714 | + * Please condiser to use above function instead | ||
| 1715 | + */ | ||
| 1716 | + actioner | ||
| 1717 | + ( | ||
| 1718 | + Actioner_Connection conn, | ||
| 1719 | + Actioner_Target targ, | ||
| 1720 | + Actioner_Aspect asp, | ||
| 1721 | + String action, | ||
| 1722 | + List((String,String)) extra_ops | ||
| 1723 | + )= | ||
| 1724 | + actioner(conn,targ,asp,action_name(action),extra_ops,[]) | ||
| 1725 | +. | ||
| 1650 | 1726 | ||
| 1651 | public define HTML_Off_Form | 1727 | public define HTML_Off_Form |
| 1652 | table | 1728 | table |
| @@ -1890,7 +1966,19 @@ public type HTML_Meta: | @@ -1890,7 +1966,19 @@ public type HTML_Meta: | ||
| 1890 | literal (String). | 1966 | literal (String). |
| 1891 | 1967 | ||
| 1892 | Meta tags are put in the 'head' of the HTML page. | 1968 | Meta tags are put in the 'head' of the HTML page. |
| 1893 | - | 1969 | + |
| 1970 | +public define HTML_Meta | ||
| 1971 | + refresh | ||
| 1972 | + ( | ||
| 1973 | + Actioner_Connection connection, | ||
| 1974 | + Actioner_Target target, | ||
| 1975 | + String action, | ||
| 1976 | + Int delay | ||
| 1977 | + )= | ||
| 1978 | + refresh(connection, target, action_name(action), delay) | ||
| 1979 | +. | ||
| 1980 | + | ||
| 1981 | + | ||
| 1894 | 1982 | ||
| 1895 | public type Body_Option: | 1983 | public type Body_Option: |
| 1896 | core_attrs(List(CoreAttrs)), | 1984 | core_attrs(List(CoreAttrs)), |
web/CXM_multihost_http_server.anubis
| @@ -684,7 +684,8 @@ type EncodingType: | @@ -684,7 +684,8 @@ type EncodingType: | ||
| 684 | www_url, | 684 | www_url, |
| 685 | multipart_form_data. | 685 | multipart_form_data. |
| 686 | 686 | ||
| 687 | -public type BufferedConnection: | 687 | + |
| 688 | +type BufferedConnection: | ||
| 688 | buffered_connection(Connection conn, | 689 | buffered_connection(Connection conn, |
| 689 | Var(ByteArray) buffer, | 690 | Var(ByteArray) buffer, |
| 690 | Var(Int) read_pos, | 691 | Var(Int) read_pos, |
| @@ -692,13 +693,14 @@ public type BufferedConnection: | @@ -692,13 +693,14 @@ public type BufferedConnection: | ||
| 692 | ). | 693 | ). |
| 693 | 694 | ||
| 694 | 695 | ||
| 695 | -public define BufferedConnection | 696 | +define BufferedConnection |
| 696 | buffered_connection | 697 | buffered_connection |
| 697 | ( | 698 | ( |
| 698 | Connection conn | 699 | Connection conn |
| 699 | )= | 700 | )= |
| 700 | buffered_connection(conn, var(constant_byte_array(0, 0)), var(0), var([])) | 701 | buffered_connection(conn, var(constant_byte_array(0, 0)), var(0), var([])) |
| 701 | . | 702 | . |
| 703 | + | ||
| 702 | 704 | ||
| 703 | *** [2] Tools. | 705 | *** [2] Tools. |
| 704 | 706 |