Commit 1999078840a2bd6eb53e5b43448938dd2391e8bd
1 parent
cd578a44
add the Web_arg as argument for cxm_form. This allow to get initial value for pr…
…evious web_arg (with help of the wan "web arg name"). If the value doesn't exist on that lwa (list web arg) the default value given in init(xx) is use instead.
Showing
1 changed file
with
68 additions
and
52 deletions
Show diff stats
web/CXM_form.anubis
| @@ -12,6 +12,7 @@ | @@ -12,6 +12,7 @@ | ||
| 12 | read tools/basis.anubis | 12 | read tools/basis.anubis |
| 13 | read system/string.anubis | 13 | read system/string.anubis |
| 14 | read calexium_lib/web/CXM_common.anubis | 14 | read calexium_lib/web/CXM_common.anubis |
| 15 | +read calexium_lib/web/CXM_web_arg_utils.anubis | ||
| 15 | read calexium_lib/web/CXM_making_a_web_site.anubis | 16 | read calexium_lib/web/CXM_making_a_web_site.anubis |
| 16 | read calexium_lib/web/CXM_html_tooltip.anubis | 17 | read calexium_lib/web/CXM_html_tooltip.anubis |
| 17 | read calexium_lib/web/CXM_widgets.anubis | 18 | read calexium_lib/web/CXM_widgets.anubis |
| @@ -95,6 +96,7 @@ public type CXM_Form_Field: | @@ -95,6 +96,7 @@ public type CXM_Form_Field: | ||
| 95 | List(String) items, | 96 | List(String) items, |
| 96 | Maybe(InitialValue) selected, | 97 | Maybe(InitialValue) selected, |
| 97 | Mandatory mandatory), | 98 | Mandatory mandatory), |
| 99 | + | ||
| 98 | selector_c (List(InputAttrs) options, | 100 | selector_c (List(InputAttrs) options, |
| 99 | String label, | 101 | String label, |
| 100 | HtmlId id, | 102 | HtmlId id, |
| @@ -314,7 +316,8 @@ public define CXM_Form_Field | @@ -314,7 +316,8 @@ public define CXM_Form_Field | ||
| 314 | public define HTML_In_Form | 316 | public define HTML_In_Form |
| 315 | cxm_format_form_field | 317 | cxm_format_form_field |
| 316 | ( | 318 | ( |
| 317 | - CXM_Form_Field ff | 319 | + CXM_Form_Field ff, |
| 320 | + List(Web_arg) lwa | ||
| 318 | ) = | 321 | ) = |
| 319 | with star = (Mandatory m) |-> (String) | 322 | with star = (Mandatory m) |-> (String) |
| 320 | if m is | 323 | if m is |
| @@ -364,14 +367,14 @@ public define HTML_In_Form | @@ -364,14 +367,14 @@ public define HTML_In_Form | ||
| 364 | message(t) then | 367 | message(t) then |
| 365 | literal(t), | 368 | literal(t), |
| 366 | 369 | ||
| 367 | - input(options, label, id, name, init, w, mand) then | ||
| 368 | - text_input([class("in") . options], label + star(mand), id, name, init, pixels(w)), | 370 | + input(options, label, id, wan, default, w, mand) then |
| 371 | + text_input([class("in") . options], label + star(mand), id, wan, init(get_String(lwa, wan.name, default.value)), pixels(w)), | ||
| 369 | 372 | ||
| 370 | input_readonly(options, label, id, name, init, w) then | 373 | input_readonly(options, label, id, name, init, w) then |
| 371 | text_input_ro([class("in") . options], label, id, name, init, pixels(w)), | 374 | text_input_ro([class("in") . options], label, id, name, init, pixels(w)), |
| 372 | 375 | ||
| 373 | - text_area(options, label, id, name, init, w, height, mand) then | ||
| 374 | - text_area([input_attrs([class("in")]) . options], label + star(mand), id, name, init, pixels(w), height), | 376 | + text_area(options, label, id, wan, default, w, height, mand) then |
| 377 | + text_area([input_attrs([class("in")]) . options], label + star(mand), id, wan, init(get_String(lwa, wan.name, default.value)), pixels(w), height), | ||
| 375 | 378 | ||
| 376 | password_input(options, label, id, name, init, w, mand) then | 379 | password_input(options, label, id, name, init, w, mand) then |
| 377 | password_input([class("in") . options], label + star(mand), id, name, init, pixels(w)), | 380 | password_input([class("in") . options], label + star(mand), id, name, init, pixels(w)), |
| @@ -386,36 +389,43 @@ public define HTML_In_Form | @@ -386,36 +389,43 @@ public define HTML_In_Form | ||
| 386 | if selected is | 389 | if selected is |
| 387 | { | 390 | { |
| 388 | failure then selector(options, label + star(mand), id, wan, size, items), | 391 | failure then selector(options, label + star(mand), id, wan, size, items), |
| 389 | - success(init) then selector(options, label + star(mand), id, wan, size, items, init), | 392 | + success(default) then selector(options, label + star(mand), id, wan, size, items, init(get_String(lwa, wan.name, default.value))), |
| 390 | }, | 393 | }, |
| 391 | 394 | ||
| 392 | selector_c(options, label, id, wan, size, items, selected, mand) then | 395 | selector_c(options, label, id, wan, size, items, selected, mand) then |
| 393 | if selected is | 396 | if selected is |
| 394 | { | 397 | { |
| 395 | failure then selector_c(options, label + star(mand), id, wan, size, items), | 398 | failure then selector_c(options, label + star(mand), id, wan, size, items), |
| 396 | - success(init) then selector_c(options, label + star(mand), id, wan, size, items, init), | 399 | + success(default) then selector_c(options, label + star(mand), id, wan, size, items, init(get_String(lwa, wan.name, default.value))), |
| 397 | }, | 400 | }, |
| 398 | 401 | ||
| 399 | - checkbox(options, label, id, name, val, checked, mand) then | ||
| 400 | - check_box(options, label + star(mand), id, name, val, checked), | 402 | + checkbox(options, label, id, wan, val, checked, mand) then |
| 403 | + check_box(options, label + star(mand), id, wan, val, get_Bool(lwa, wan.name, checked)), | ||
| 401 | 404 | ||
| 402 | - checkboxr(options, label, id, name, val, checked, mand) then | ||
| 403 | - check_box_r(options, label + star(mand), id, name, val, checked), | 405 | + checkboxr(options, label, id, wan, val, checked, mand) then |
| 406 | + check_box_r(options, label + star(mand), id, wan, val, get_Bool(lwa, wan.name, checked)), | ||
| 404 | 407 | ||
| 405 | - checkbox_hide_show(options, label, name, val, checked, fields) then | 408 | + checkbox_hide_show(options, label, wan, val, checked, fields) then |
| 406 | with div_id = generate_random_string(15), | 409 | with div_id = generate_random_string(15), |
| 407 | sequence([ | 410 | sequence([ |
| 408 | - check_box([event(onclick, "checkbox_hide_show_element('"+div_id+"', this);")], label, htmlId(""), name, val, checked), | ||
| 409 | - div([id(div_id), style("display:"+if checked then "block" else "none")], sequence(map((CXM_Form_Field ff2) |-> div([class("form_field")], cxm_format_form_field(ff2)),fields))) | 411 | + check_box([event(onclick, "checkbox_hide_show_element('"+div_id+"', this);")], label, htmlId(""), wan, val, get_Bool(lwa, wan.name, checked)), |
| 412 | + div([id(div_id), style("display:"+if checked then "block" else "none")], sequence(map((CXM_Form_Field ff2) |-> div([class("form_field")], cxm_format_form_field(ff2, lwa)),fields))) | ||
| 410 | ]), | 413 | ]), |
| 411 | 414 | ||
| 412 | - radio_button(options, label, id, name, val, checked, mand) then | ||
| 413 | - radio_button(options, label + star(mand), id, name, val, checked), | 415 | + radio_button(options, label, id, wan, val, checked, mand) then |
| 416 | + radio_button(options, label + star(mand), id, wan, val, get_Bool(lwa, wan.name, checked)), | ||
| 414 | 417 | ||
| 415 | - radio_buttonr(options, label, id, name, val, checked, mand) then | ||
| 416 | - radio_button_r(options, label + star(mand), id, name, val, checked), | 418 | + radio_buttonr(options, label, id, wan, val, checked, mand) then |
| 419 | + radio_button_r(options, label + star(mand), id, wan, val, get_Bool(lwa, wan.name, checked)), | ||
| 417 | 420 | ||
| 418 | radio_button_list (options, label, id, wan, items, selected, mand, wide) then | 421 | radio_button_list (options, label, id, wan, items, selected, mand, wide) then |
| 422 | + with new_selected = | ||
| 423 | + if get_String(lwa, wan.name) is | ||
| 424 | + { | ||
| 425 | + failure then selected, | ||
| 426 | + success(value) then success(init(value)) | ||
| 427 | + }, | ||
| 428 | + | ||
| 419 | sequence([ | 429 | sequence([ |
| 420 | literal("<label for=\"" + wan.name + "\">" + label + star(mand) + "</label>"), | 430 | literal("<label for=\"" + wan.name + "\">" + label + star(mand) + "</label>"), |
| 421 | div( [class("radiolist")], sequence( | 431 | div( [class("radiolist")], sequence( |
| @@ -426,13 +436,13 @@ public define HTML_In_Form | @@ -426,13 +436,13 @@ public define HTML_In_Form | ||
| 426 | if item is (wav, item_label) then | 436 | if item is (wav, item_label) then |
| 427 | with id = if id is htmlId(the_id) then htmlId(the_id + "_radio_" + *i), | 437 | with id = if id is htmlId(the_id) then htmlId(the_id + "_radio_" + *i), |
| 428 | div([class(itemclass)], radio_button_r(options, item_label, id, wan, wav, | 438 | div([class(itemclass)], radio_button_r(options, item_label, id, wan, wav, |
| 429 | - if selected is success(v) then wav.value = v.value else false)), | 439 | + if new_selected is success(v) then wav.value = v.value else false)), |
| 430 | items)) | 440 | items)) |
| 431 | ), | 441 | ), |
| 432 | ]), | 442 | ]), |
| 433 | one_line_fields(fields) then | 443 | one_line_fields(fields) then |
| 434 | table([nude],[row([], | 444 | table([nude],[row([], |
| 435 | - map((CXM_Form_Field ff2) |-> cell([],cxm_format_form_field(ff2)),fields))]) | 445 | + map((CXM_Form_Field ff2) |-> cell([],cxm_format_form_field(ff2, lwa)),fields))]) |
| 436 | , | 446 | , |
| 437 | 447 | ||
| 438 | upload(options, label, id, name, w, mand) then | 448 | upload(options, label, id, name, w, mand) then |
| @@ -449,7 +459,7 @@ public define HTML_In_Form | @@ -449,7 +459,7 @@ public define HTML_In_Form | ||
| 449 | partial(p_content) then partial(p_content), | 459 | partial(p_content) then partial(p_content), |
| 450 | input_with_help(input, help_title, help_text, width) then | 460 | input_with_help(input, help_title, help_text, width) then |
| 451 | sequence([ | 461 | sequence([ |
| 452 | - cxm_format_form_field(input), | 462 | + cxm_format_form_field(input, lwa), |
| 453 | html_tooltip(force_String(help_title), help_text, width), | 463 | html_tooltip(force_String(help_title), help_text, width), |
| 454 | ]), | 464 | ]), |
| 455 | 465 | ||
| @@ -462,49 +472,53 @@ public define HTML_In_Form | @@ -462,49 +472,53 @@ public define HTML_In_Form | ||
| 462 | div([class(htmlClass.class)], literal(" ")), | 472 | div([class(htmlClass.class)], literal(" ")), |
| 463 | 473 | ||
| 464 | submit(attrs, htmlClass, action_name, mb_label, button_text, extra_operands) then | 474 | submit(attrs, htmlClass, action_name, mb_label, button_text, extra_operands) then |
| 465 | - actioner( same, // TODO change this to allow external URL | 475 | + actioner( same, // TODO change this to allow external URL |
| 466 | if mb_label is | 476 | if mb_label is |
| 467 | { | 477 | { |
| 468 | - failure then same, | ||
| 469 | - success(n) then same(n) | 478 | + failure then same, |
| 479 | + success(n) then same(n) | ||
| 470 | }, | 480 | }, |
| 471 | submit(attrs + [class(htmlClass.class)], button_text), | 481 | submit(attrs + [class(htmlClass.class)], button_text), |
| 472 | action_name, | 482 | action_name, |
| 473 | extra_operands | 483 | extra_operands |
| 474 | ), | 484 | ), |
| 475 | - empty then literal("") | ||
| 476 | - }. | 485 | + empty then literal("") |
| 486 | + }. | ||
| 477 | 487 | ||
| 478 | public define HTML_In_Form | 488 | public define HTML_In_Form |
| 479 | - cxm_fieldset | 489 | + cxm_fieldset |
| 480 | ( | 490 | ( |
| 481 | - List(CoreAttrs) options, | ||
| 482 | - String legend, | ||
| 483 | - List(CXM_Form_Field)fields | ||
| 484 | - ) = | 491 | + List(CoreAttrs) options, |
| 492 | + String legend, | ||
| 493 | + List(Web_arg) lwa, | ||
| 494 | + List(CXM_Form_Field) fields | ||
| 495 | + )= | ||
| 485 | sequence([ | 496 | sequence([ |
| 486 | literal("<fieldset" + format_attrs(options) + ">"), | 497 | literal("<fieldset" + format_attrs(options) + ">"), |
| 487 | literal(if length(legend) > 0 then "<legend>" + legend + "</legend>" else ""), | 498 | literal(if length(legend) > 0 then "<legend>" + legend + "</legend>" else ""), |
| 488 | - sequence( map((CXM_Form_Field ff) |-> div([class("form_field")], cxm_format_form_field(ff)), fields) ), | ||
| 489 | - literal("</fieldset>")]). | 499 | + sequence( map((CXM_Form_Field ff) |-> div([class("form_field")], cxm_format_form_field(ff, lwa)), fields) ), |
| 500 | + literal("</fieldset>")] | ||
| 501 | + ) | ||
| 502 | + . | ||
| 490 | 503 | ||
| 491 | public define HTML_In_Form | 504 | public define HTML_In_Form |
| 492 | cxm_fieldset | 505 | cxm_fieldset |
| 493 | ( | 506 | ( |
| 494 | - HtmlId fieldSetId, | ||
| 495 | - List(CXM_Form_Field)fields | 507 | + HtmlId fieldSetId, |
| 508 | + List(Web_arg) lwa, | ||
| 509 | + List(CXM_Form_Field) fields | ||
| 496 | ) = | 510 | ) = |
| 497 | - cxm_fieldset([id(fieldSetId.id), class("aligned")], "", fields). | 511 | + cxm_fieldset([id(fieldSetId.id), class("aligned")], "", lwa, fields). |
| 498 | 512 | ||
| 499 | public define HTML_Off_Form | 513 | public define HTML_Off_Form |
| 500 | cxm_form | 514 | cxm_form |
| 501 | ( | 515 | ( |
| 502 | - String form_name, | ||
| 503 | - List(CoreAttrs) options, | ||
| 504 | - String action_name, | 516 | + String form_name, |
| 517 | + List(CoreAttrs) options, | ||
| 518 | + String action_name, | ||
| 505 | List((String,String)) extra_ops, | 519 | List((String,String)) extra_ops, |
| 506 | - List(HTML_In_Form) fieldSets | ||
| 507 | - ) = | 520 | + List(HTML_In_Form) fieldSets |
| 521 | + )= | ||
| 508 | //div([class("formulaire")], | 522 | //div([class("formulaire")], |
| 509 | form( form_name, | 523 | form( form_name, |
| 510 | [class("formulaire") . options], | 524 | [class("formulaire") . options], |
| @@ -534,27 +548,28 @@ public define HTML_Off_Form | @@ -534,27 +548,28 @@ public define HTML_Off_Form | ||
| 534 | String form_name, | 548 | String form_name, |
| 535 | List(CoreAttrs) options, | 549 | List(CoreAttrs) options, |
| 536 | HtmlId fieldSetId, | 550 | HtmlId fieldSetId, |
| 537 | - String action_name, | 551 | + String action_name, |
| 538 | List((String,String)) extra_ops, | 552 | List((String,String)) extra_ops, |
| 539 | - | 553 | + List(Web_arg) lwa, |
| 540 | List(CXM_Form_Field) fields | 554 | List(CXM_Form_Field) fields |
| 541 | ) = | 555 | ) = |
| 542 | cxm_form(form_name, options, action_name, extra_ops, | 556 | cxm_form(form_name, options, action_name, extra_ops, |
| 543 | [ | 557 | [ |
| 544 | - cxm_fieldset([id(fieldSetId.id), class("aligned")], "", fields) | 558 | + cxm_fieldset([id(fieldSetId.id), class("aligned")], "", lwa, fields) |
| 545 | ]). | 559 | ]). |
| 546 | 560 | ||
| 547 | public define HTML_Off_Form | 561 | public define HTML_Off_Form |
| 548 | cxm_form | 562 | cxm_form |
| 549 | ( | 563 | ( |
| 550 | - String form_name, | ||
| 551 | - List(CoreAttrs) options, | ||
| 552 | - HtmlId fieldSetId, | ||
| 553 | - List(CXM_Form_Field) fields | 564 | + String form_name, |
| 565 | + List(CoreAttrs) options, | ||
| 566 | + HtmlId fieldSetId, | ||
| 567 | + List(Web_arg) lwa, | ||
| 568 | + List(CXM_Form_Field) fields | ||
| 554 | ) = | 569 | ) = |
| 555 | cxm_form(form_name, options, | 570 | cxm_form(form_name, options, |
| 556 | [ | 571 | [ |
| 557 | - cxm_fieldset([id(fieldSetId.id), class("aligned")], "", fields) | 572 | + cxm_fieldset([id(fieldSetId.id), class("aligned")], "", lwa, fields) |
| 558 | ]). | 573 | ]). |
| 559 | 574 | ||
| 560 | public define HTML_Off_Form | 575 | public define HTML_Off_Form |
| @@ -568,9 +583,10 @@ public define HTML_Off_Form | @@ -568,9 +583,10 @@ public define HTML_Off_Form | ||
| 568 | public define HTML_Off_Form | 583 | public define HTML_Off_Form |
| 569 | cxm_form | 584 | cxm_form |
| 570 | ( | 585 | ( |
| 571 | - String form_name, | ||
| 572 | - HtmlId fieldSetId, | 586 | + String form_name, |
| 587 | + HtmlId fieldSetId, | ||
| 588 | + List(Web_arg) lwa, | ||
| 573 | List(CXM_Form_Field) fields | 589 | List(CXM_Form_Field) fields |
| 574 | ) = | 590 | ) = |
| 575 | - cxm_form(form_name, [], fieldSetId, fields). | 591 | + cxm_form(form_name, [], fieldSetId, lwa, fields). |
| 576 | 592 |