/* * Created by PyramIDE. * User: フランスのトトロ * Date: 07/12/2014 * Time: 16:49 * © Calexium */ // ************************************************************************************* // *** Generic form // ************************************************************************************* read tools/basis.anubis read system/string.anubis read calexium_lib/web/CXM_common.anubis read calexium_lib/web/CXM_web_arg_utils.anubis read calexium_lib/web/CXM_making_a_web_site.anubis read calexium_lib/web/CXM_html_tooltip.anubis read calexium_lib/web/CXM_widgets.anubis public type Mandatory: // used to mark fields as mandatory. mandatory, non_mandatory. public type Width: small, //10 char narrow_small, //20 char narrow, //50 char wide, //70 char custom(Int). public type FormFieldWidth: auto, custom(Int). public type CXM_Form_Field: no_field, // empty field //--- title field --------------------------------------------------------------------- title( String text ), //--- message field ------------------------------------------------------------------- message( String text ), //--- text input field ---------------------------------------------------------------- input( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, InitialValue init_value, Width width, Mandatory mandatory ), input_readonly( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, InitialValue init_value, Width width ), //--- text area field ----------------------------------------------------------------- text_area( List(TextAreaOption) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, InitialValue init_value, Width width, Int height, Mandatory mandatory ), //--- password input field ------------------------------------------------------------ password_input( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, InitialValue init_value, Width width, Mandatory mandatory), //--- hidden field ------------------------------------------------------------ hidden( HTML_Id id, WebArgName web_arg_name, WebArgValue init_value ), //--- explanation field --------------------------------------------------------------- explain( String text ), //--- selector field ------------------------------------------------------------------ selector( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, Int size, List(String) items, Maybe(InitialValue) selected, Mandatory mandatory ), selector_c( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, Int size, List((List(CoreAttrs), WebArgValue, String)) items, Maybe(InitialValue) selected, Mandatory mandatory ), selector_hide_show (List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, Int size, List((List(CoreAttrs), WebArgValue, String, HTML_Partial_Content)) items, Maybe(InitialValue) selected, Mandatory mandatory), //--- checkbox field ------------------------------------------------------------------ checkbox (List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, WebArgValue web_arg_value, Bool checked, Mandatory mandatory), // the same one, but with the tag on the right of the checkbox checkboxr( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, WebArgValue web_arg_value, Bool checked, Mandatory mandatory ), //checkbox_hide_show checkbox_hide_show( List(CoreAttrs) options, HTML_Label label, WebArgName web_arg_name, WebArgValue web_arg_value, Bool checked, List(CXM_Form_Field) fields ), //--- radio-button field -------------------------------------------------------------- radio_button( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, WebArgValue web_arg_value, Bool checked, Mandatory mandatory ), //radio_button_hide_show radio_button_hide_show( List(CoreAttrs) options, HTML_Label label, WebArgName web_arg_name, WebArgValue web_arg_value, Bool checked, List(CXM_Form_Field) fields ), // the same one, but with the tag on the right of the radio_button radio_buttonr (List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, WebArgValue web_arg_value, Bool checked, Mandatory mandatory), radio_button_list( List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName web_arg_name, List((WebArgValue, String)) web_arg_value, Maybe(InitialValue) selected, Mandatory mandatory, Bool is_wide), // //--- fields table -------------------------------------------------------------------- // fields_table (String tag, // List(FormField) fields), // // //--- fields line --------------------------------------------------------------------- // fields_line (String tag, // List(FormField) fields), one_line_fields (List(CXM_Form_Field) fields), // // //--- preview field ------------------------------------------------------------------- // preview (String html_text), //--- upload field ------------------------------------------------------------------- upload (List(CoreAttrs) options, HTML_Label label, HTML_Id id, WebArgName name, Width width, Mandatory mandatory), raw_in_form (HTML_In_Form html), label_for ( String label, HTML_Id id, HTML_In_Form input), div (List(CoreAttrs), HTML_In_Form content), partial (HTML_Partial_Content p_content), br, // input_with_help (CXM_Form_Field field, // Maybe(String) help_title, // String help_text, // Int width), fieldset (List(CoreAttrs) options, String legend, List(CXM_Form_Field) fields), blank_space, blank_space (HtmlClass class), //--- submit button ------------------------------------------------------------------- submit (List(CoreAttrs) options, HtmlClass class, WEB_Action_Name action_name, Maybe(String) label, String button_text, List((String,String)) extra_operands), empty. // ////////////////////////////////////////////// // Alternate constructors: public define CXM_Form_Field fieldset ( HTML_Id fieldSetId, List(CXM_Form_Field) fields ) = fieldset([id(fieldSetId.id)], "", fields). public define CXM_Form_Field fieldset ( List(CXM_Form_Field) fields ) = fieldset([], "", fields). public define CXM_Form_Field fieldset ( String legend, List(CXM_Form_Field) fields ) = fieldset([], legend, fields). public define CXM_Form_Field input(WebArgName n, InitialValue init_value, Width width) = input([], no_label, html_Id(n.name), n, init_value, width, non_mandatory). public define CXM_Form_Field input(HTML_Label label, WebArgName n, InitialValue init_value, Width width) = input([], label, html_Id(n.name), n, init_value, width, non_mandatory). public define CXM_Form_Field input(HTML_Label label, WebArgName n, InitialValue init_value, Width width, Mandatory mand) = input([], label, html_Id(n.name), n, init_value, width, mand). public define CXM_Form_Field input_readonly(HTML_Label label, WebArgName n, InitialValue init_value, Width width) = input_readonly([], label, html_Id(n.name), n, init_value, width). public define CXM_Form_Field password_input(HTML_Label label, WebArgName n, InitialValue init_value, Width width, Mandatory mand) = password_input([], label, html_Id(n.name), n, init_value, width, mand). public define CXM_Form_Field checkbox(HTML_Label label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand) = checkbox([], label, html_Id(n.name), n, value, checked, mand). public define CXM_Form_Field checkboxr(HTML_Label label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand) = checkboxr([], label, html_Id(n.name), n, value, checked, mand). public define CXM_Form_Field radio_button(HTML_Label label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand) = radio_button([], label, html_Id(n.name), n, value, checked, mand). public define CXM_Form_Field radio_buttonr(HTML_Label label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand) = radio_buttonr([], label, html_Id(n.name), n, value, checked, mand). public define CXM_Form_Field submit(WEB_Action_Name action_name, HtmlClass class, Maybe(String) label, String button_text, List((String,String)) extra_operands) = submit([], class, action_name, label, button_text, extra_operands). public define CXM_Form_Field submit(WEB_Action_Name action_name, Maybe(String) label, String button_text, List((String,String)) extra_operands) = submit([], htmlClass(""), action_name, label, button_text, extra_operands). public define CXM_Form_Field //Helper for older project wich use only String as Action name submit(String _action_name, Maybe(String) label, String button_text, List((String,String)) extra_operands) = submit([], htmlClass(""), action_name(_action_name), label, button_text, extra_operands). public define CXM_Form_Field upload(HTML_Label label, HTML_Id id, WebArgName name, Width width) = upload([], label, id, name, width, non_mandatory). public define CXM_Form_Field upload(HTML_Label label, HTML_Id id, WebArgName name, Width width, Mandatory mand) = upload([], label, id, name, width, mand). public define CXM_Form_Field input_with_help (CXM_Form_Field field, String help_text) = input_with_help (field, failure, help_text, 250). public define CXM_Form_Field input_with_help (CXM_Form_Field field, String help_text, Int width) = input_with_help (field, failure, help_text, width). public define CXM_Form_Field ip_input ( String label, HTML_Id id, WebArgName wan_prefix, String ip )= label_for( label, id, ip_input(id, wan_prefix, ip) ). public define CXM_Form_Field partial_ip_input ( String label, HTML_Id id, WebArgName wan_prefix, List(String) ip_fixed_part, String ip )= label_for( label, id, partial_ip_input(id, wan_prefix, ip_fixed_part, ip) ). public define CXM_Form_Field hidden ( WebArgName web_arg_name, WebArgValue value )= hidden(html_Id(""), web_arg_name, value). //--- explanation field --------------------- // ////////////////////////////////////////////////////////// define (List((List(CoreAttrs), WebArgValue, String)), List(HTML_Partial_Content)) construct_selector_hide_show ( String div_id, List((List(CoreAttrs), WebArgValue, String, HTML_Partial_Content)) items, List((List(CoreAttrs), WebArgValue, String)) so_far_1, List(HTML_Partial_Content) so_far_2, Int n ) = if items is { [] then (so_far_1, so_far_2), [h . t] then since h is (cores, wav, label, content), with linked_element = div_id + n, construct_selector_hide_show(div_id, t, [([data("linked_element", linked_element) . cores], wav, label) . so_far_1], [ partial_content([], div([id(linked_element), style("display: none")], content)) . so_far_2 ], n + 1) }. define (List((List(CoreAttrs), WebArgValue, String)), List(HTML_Partial_Content)) construct_selector_hide_show ( String div_id, List((List(CoreAttrs), WebArgValue, String, HTML_Partial_Content)) items ) = construct_selector_hide_show(div_id, items, [], [], 0). public define HTML_In_Form format_CXM_Form_Field ( CXM_Form_Field ff, List(Web_arg) lwa ) = with star = (HTML_Label l, Mandatory m) |-> (HTML_Label) if m is { mandatory then if l is { no_label then l, label(str, help) then label(str + "*", help), } non_mandatory then l }, pixels = (Width width) |-> if width is { small then 10, narrow_small then 20, narrow then 50, wide then 70, custom(n) then n }, if ff is { no_field then empty, title(t) then literal("