Commit 1999078840a2bd6eb53e5b43448938dd2391e8bd

Authored by totoro
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("&nbsp")), 472 div([class(htmlClass.class)], literal("&nbsp")),
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