diff --git a/web/CXM_form.anubis b/web/CXM_form.anubis
new file mode 100644
index 0000000..2bc70af
--- /dev/null
+++ b/web/CXM_form.anubis
@@ -0,0 +1,561 @@
+/*
+ * 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_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,
+ narrow,
+ wide,
+ custom(Int).
+
+public type FormFieldWidth:
+ auto,
+ custom(Int).
+
+public type CXM_FormTooltip:
+ tooltip(String title, String content, Int width).
+
+public type CXM_FormField:
+ no_field, // empty field
+
+ //--- title field ---------------------------------------------------------------------
+ title (String text),
+// title (Int text_size,
+// String text),
+// title_f (List(Text_Option) -> HTML_In_Form),
+
+ //--- message field -------------------------------------------------------------------
+ message (String text),
+
+ //--- text input field ----------------------------------------------------------------
+ input (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ InitialValue init_value,
+ Width width,
+ Mandatory mandatory),
+ input_readonly (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ InitialValue init_value,
+ Width width),
+
+ //--- text area field -----------------------------------------------------------------
+ text_area (List(TextAreaOption) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ InitialValue init_value,
+ Width width,
+ Int height,
+ Mandatory mandatory),
+
+ //--- password input field ------------------------------------------------------------
+ password_input (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ InitialValue init_value,
+ Width width,
+ Mandatory mandatory),
+
+ //--- hidden field ------------------------------------------------------------
+ hidden (HtmlId id,
+ WebArgName web_arg_name,
+ InitialValue init_value),
+ //--- explanation field ---------------------------------------------------------------
+ explain (String text),
+
+ //--- selector field ------------------------------------------------------------------
+ selector (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ Int size,
+ List(String) items,
+ Maybe(InitialValue) selected,
+ Mandatory mandatory),
+ selector_c (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ Int size,
+ List((List(CoreAttrs),WebArgValue,String)) items,
+ Maybe(InitialValue) selected,
+ Mandatory mandatory),
+
+
+
+ //--- checkbox field ------------------------------------------------------------------
+ checkbox (List(InputAttrs) options,
+ String label,
+ HtmlId 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(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ WebArgValue web_arg_value,
+ Bool checked,
+ Mandatory mandatory),
+
+ //--- radio-button field --------------------------------------------------------------
+ radio_button (List(InputAttrs) options,
+ String label,
+ HtmlId 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 radio_button
+ radio_buttonr (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName web_arg_name,
+ WebArgValue web_arg_value,
+ Bool checked,
+ Mandatory mandatory),
+
+ radio_button_list (List(InputAttrs) options,
+ String label,
+ HtmlId 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_FormField) fields),
+
+//
+// //--- preview field -------------------------------------------------------------------
+// preview (String html_text),
+
+ //--- upload field -------------------------------------------------------------------
+ upload (List(InputAttrs) options,
+ String label,
+ HtmlId id,
+ WebArgName name,
+ Width width,
+ Mandatory mandatory),
+
+ raw_in_form (HTML_In_Form html),
+ raw_in_form (String label,
+ HtmlId id,
+ HTML_In_Form input),
+ partial (HTML_Partial_Content p_content),
+ input_with_help (CXM_FormField field,
+ Maybe(String) help_title,
+ String help_text,
+ Int width),
+
+ sub_fieldset (HTML_In_Form fieldset),
+
+ blank_space,
+ blank_space (HtmlClass class),
+
+ //--- submit button -------------------------------------------------------------------
+ submit (List(CoreAttrs) options,
+ HtmlClass class,
+ String action_name,
+ Maybe(String) label,
+ String button_text,
+ List((String,String)) extra_operands),
+ empty.
+
+// //////////////////////////////////////////////
+// Alternative constructors:
+
+public define CXM_FormField
+ input(WebArgName n, InitialValue init_value, Width width)
+ = input([], "", htmlId(n.name), n, init_value, width, non_mandatory).
+
+public define CXM_FormField
+ input(String label, WebArgName n, InitialValue init_value, Width width)
+ = input([], label, htmlId(n.name), n, init_value, width, non_mandatory).
+
+public define CXM_FormField
+ input(String label, WebArgName n, InitialValue init_value, Width width, Mandatory mand)
+ = input([], label, htmlId(n.name), n, init_value, width, mand).
+
+public define CXM_FormField
+ input_readonly(String label, WebArgName n, InitialValue init_value, Width width)
+ = input_readonly([], label, htmlId(n.name), n, init_value, width).
+
+public define CXM_FormField
+ password_input(String label, WebArgName n, InitialValue init_value, Width width, Mandatory mand)
+ = password_input([], label, htmlId(n.name), n, init_value, width, mand).
+
+public define CXM_FormField
+ checkbox(String label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand)
+ = checkbox([], label, htmlId(n.name), n, value, checked, mand).
+
+public define CXM_FormField
+ checkboxr(String label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand)
+ = checkboxr([], label, htmlId(n.name), n, value, checked, mand).
+
+public define CXM_FormField
+ radio_button(String label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand)
+ = radio_button([], label, htmlId(n.name), n, value, checked, mand).
+
+public define CXM_FormField
+ radio_buttonr(String label, WebArgName n, WebArgValue value, Bool checked, Mandatory mand)
+ = radio_buttonr([], label, htmlId(n.name), n, value, checked, mand).
+
+public define CXM_FormField
+ submit(String 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_FormField
+ submit(String 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_FormField
+ upload(String label, HtmlId id, WebArgName name, Width width)
+ = upload([], label, id, name, width, non_mandatory).
+
+public define CXM_FormField
+ upload(String label, HtmlId id, WebArgName name, Width width, Mandatory mand)
+ = upload([], label, id, name, width, mand).
+
+public define CXM_FormField
+ input_with_help (CXM_FormField field, String help_text)
+ = input_with_help (field, failure, help_text, 250).
+
+public define CXM_FormField
+ input_with_help (CXM_FormField field, String help_text, Int width)
+ = input_with_help (field, failure, help_text, width).
+
+public define CXM_FormField
+ ip_input
+ (
+ String label,
+ HtmlId id,
+ WebArgName wan_prefix,
+ String ip
+ )=
+ raw_in_form(
+ label,
+ id,
+ ip_input(id, wan_prefix, ip)
+ ).
+
+
+public define CXM_FormField
+ partial_ip_input
+ (
+ String label,
+ HtmlId id,
+ WebArgName wan_prefix,
+ List(String) ip_fixed_part,
+ String ip
+ )=
+ raw_in_form(
+ label,
+ id,
+ partial_ip_input(id, wan_prefix, ip_fixed_part, ip)
+ ).
+
+public define CXM_FormField
+ hidden
+ (
+ WebArgName web_arg_name,
+ InitialValue init_value
+ )=
+ if web_arg_name is wan(name) then
+ hidden(htmlId(name), web_arg_name, init_value).
+
+
+ //--- explanation field ---------------------
+
+// //////////////////////////////////////////////////////////
+
+public define HTML_In_Form
+ cxm_format_form_field
+ (
+ CXM_FormField ff
+ ) =
+ with star = (Mandatory m) |-> (String)
+ if m is
+ {
+ mandatory then "*",
+ non_mandatory then ""
+ },
+ pixels = (Width width) |->
+ if width is
+ {
+ small then 10,
+ narrow then 50,
+ wide then 70,
+ custom(n) then n
+ },
+ // special case out of the div("inputable") tag.
+// if ff is submit(attrs, action_name, mb_label, button_text, extra_operands) then
+// mf_format_form_field_inside_inputable(ff, star, pixels)
+// else if ff is hidden(name, init) then
+// mf_format_form_field_inside_inputable(ff, star, pixels)
+// else if ff is sub_fieldset(fieldset) then
+// mf_format_form_field_inside_inputable(ff, star, pixels)
+// else
+// div([class("inputable")],
+// mf_format_form_field_inside_inputable(ff, star, pixels))
+
+// sequence([
+// literal("
\n"),
+// mf_format_form_field_inside_inputable(ff, star, pixels, failure),
+// literal("
\n"),
+// ])
+
+ if ff is
+ {
+ no_field then
+ literal(""),
+
+ title(t) then
+ literal("" + t + "
"),
+
+// title(s,t) then
+// text([h_center, size(s),bold,color(rgb(0,0,0))], t),
+//
+// title_f(t) then
+// t([h_center, size(16),bold,color(rgb(0,0,0))]),
+
+ message(t) then
+ literal(t),
+
+ input(options, label, id, name, init, w, mand) then
+ text_input([class("in") . options], label + star(mand), id, name, init, pixels(w)),
+
+ input_readonly(options, label, id, name, init, w) then
+ text_input_ro([class("in") . options], label, id, name, init, pixels(w)),
+
+ text_area(options, label, id, name, init, w, height, mand) then
+ text_area([input_attrs([class("in")]) . options], label + star(mand), id, name, init, pixels(w), height),
+
+ password_input(options, label, id, name, init, w, mand) then
+ password_input([class("in") . options], label + star(mand), id, name, init, pixels(w)),
+
+ hidden(id, name, init) then
+ hidden(id, name, init),
+
+ explain(t) then
+ div([class("sub")], literal(t)),
+
+ selector(options, label, id, wan, size, items, selected, mand) then
+ if selected is
+ {
+ failure then selector(options, label + star(mand), id, wan, size, items),
+ success(init) then selector(options, label + star(mand), id, wan, size, items, init),
+ },
+
+ selector_c(options, label, id, wan, size, items, selected, mand) then
+ if selected is
+ {
+ failure then selector_c(options, label + star(mand), id, wan, size, items),
+ success(init) then selector_c(options, label + star(mand), id, wan, size, items, init),
+ },
+
+ checkbox(options, label, id, name, val, checked, mand) then
+ check_box(options, label + star(mand), id, name, val, checked),
+
+ checkboxr(options, label, id, name, val, checked, mand) then
+ check_box_r(options, label + star(mand), id, name, val, checked),
+
+ radio_button(options, label, id, name, val, checked, mand) then
+ radio_button(options, label + star(mand), id, name, val, checked),
+
+ radio_buttonr(options, label, id, name, val, checked, mand) then
+ radio_button_r(options, label + star(mand), id, name, val, checked),
+
+ radio_button_list (options, label, id, wan, items, selected, mand, wide) then
+ sequence([
+ literal(""),
+ div( [class("radiolist")], sequence(
+ with i = var((Int)-1),
+ itemclass = if wide then "radiolistitem_wide" else "radiolistitem",
+ map( ((WebArgValue, String) item) |->
+ i <- *i + 1;
+ if item is (wav, item_label) then
+ with id = if id is htmlId(the_id) then htmlId(the_id + "_radio_" + *i),
+ div([class(itemclass)], radio_button_r(options, item_label, id, wan, wav,
+ if selected is success(v) then wav.value = v.value else false)),
+ items))
+ ),
+ ]),
+ one_line_fields(fields) then
+ table([nude],[row([],
+ map((CXM_FormField ff2) |-> cell([],cxm_format_form_field(ff2)),fields))])
+ ,
+
+
+ upload(options, label, id, name, w, mand) then
+ file_upload(options, label + star(mand), id, name, pixels(w)),
+
+ raw_in_form(html) then
+ html,
+// div([class("in")], html),
+ raw_in_form(label, id, input) then
+ sequence([
+ if id is htmlId(id) then
+ literal(""),
+ input]),
+ partial(p_content) then
+ partial(p_content),
+ input_with_help(input, help_title, help_text, width) then
+ sequence([
+ cxm_format_form_field(input),
+ html_tooltip(force_String(help_title), help_text, width),
+ ]),
+
+ sub_fieldset(fieldset) then
+ fieldset,
+
+ blank_space then
+ div([class("blank_space")], literal(" ")),
+
+ blank_space(htmlClass) then
+ div([class(htmlClass.class)], literal(" ")),
+
+ submit(attrs, htmlClass, action_name, mb_label, button_text, extra_operands) then
+ actioner( same, // TODO change this to allow external URL
+ if mb_label is
+ {
+ failure then same,
+ success(n) then same(n)
+ },
+ submit(attrs + [class(htmlClass.class)], button_text),
+ action_name,
+ extra_operands
+ ),
+ empty then literal("")
+ }.
+
+public define HTML_In_Form
+ cxm_fieldset
+ (
+ List(CoreAttrs) options,
+ String legend,
+ List(CXM_FormField) fields
+ ) =
+ sequence([
+ literal("")]).
+
+public define HTML_In_Form
+ cxm_fieldset
+ (
+ HtmlId fieldSetId,
+ List(CXM_FormField) fields
+ ) =
+ cxm_fieldset([id(fieldSetId.id), class("aligned")], "", fields).
+
+public define HTML_Off_Form
+ cxm_form
+ (
+ String form_name,
+ List(CoreAttrs) options,
+ String action_name,
+ List((String,String)) extra_ops,
+ List(HTML_In_Form) fieldSets
+ ) =
+ //div([class("formulaire")],
+ form( form_name,
+ [class("formulaire") . options],
+ action_name,
+ extra_ops,
+ sequence( fieldSets )
+ // )
+ ).
+
+public define HTML_Off_Form
+ cxm_form
+ (
+ String form_name,
+ List(CoreAttrs) options,
+ List(HTML_In_Form) fieldSets
+ ) =
+ //div([class("formulaire")],
+ form( form_name,
+ [class("formulaire") . options],
+ sequence( fieldSets )
+ // )
+ ).
+
+public define HTML_Off_Form
+ cxm_form
+ (
+ String form_name,
+ List(CoreAttrs) options,
+ String action_name,
+ List((String,String)) extra_ops,
+ HtmlId fieldSetId,
+ List(CXM_FormField) fields
+ ) =
+ cxm_form(form_name, options, action_name, extra_ops,
+ [
+ cxm_fieldset([id(fieldSetId.id), class("aligned")], "", fields)
+ ]).
+
+public define HTML_Off_Form
+ cxm_form
+ (
+ String form_name,
+ List(CoreAttrs) options,
+ HtmlId fieldSetId,
+ List(CXM_FormField) fields
+ ) =
+ cxm_form(form_name, options,
+ [
+ cxm_fieldset([id(fieldSetId.id), class("aligned")], "", fields)
+ ]).
+
+public define HTML_Off_Form
+ cxm_form
+ (
+ String form_name,
+ List(HTML_In_Form) fieldSets
+ ) =
+ cxm_form(form_name, [], fieldSets).
+
+public define HTML_Off_Form
+ cxm_form
+ (
+ String form_name,
+ HtmlId fieldSetId,
+ List(CXM_FormField) fields
+ ) =
+ cxm_form(form_name, [], fieldSetId, fields).
+
diff --git a/web/CXM_html_tooltip.anubis b/web/CXM_html_tooltip.anubis
new file mode 100644
index 0000000..0b46044
--- /dev/null
+++ b/web/CXM_html_tooltip.anubis
@@ -0,0 +1,101 @@
+/*
+ * Created by PyramIDE.
+ * User: フランスのトトロ
+ * Date: 07/12/2014
+ * Time: 17:12
+ * © Calexium
+ */
+
+read tools/basis.anubis
+
+read calexium_lib/web/CXM_common.anubis
+read calexium_lib/web/CXM_making_a_web_site.anubis
+
+public define HTML_Off_Form
+ html_tooltip
+ (
+ String title,
+ String keyword,
+ ) =
+ literal("").
+
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_help"), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_id", keyword)], []).
+
+public define HTML_Off_Form
+ html_tooltip
+ (
+ String title,
+ String keyword,
+ Int width,
+ ) =
+ literal("").
+
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_help"), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_id", keyword), ("width", to_decimal(width))], []).
+
+public define HTML_In_Form
+ html_tooltip
+ (
+ String title,
+ String keyword,
+ ) =
+ literal("").
+
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_help"), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_id", keyword)], []).
+
+public define HTML_In_Form
+ html_tooltip
+ (
+ String title,
+ String keyword,
+ Int width,
+ ) =
+ literal("").
+
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_help"), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_id", keyword), ("width", to_decimal(width))], []).
+
+ public define HTML_Off_Form
+ html_tooltip_ext
+ (
+ String title,
+ String keyword,
+ String class_suffix
+ ) =
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_"+class_suffix), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_ext", keyword)], []).
+
+public define HTML_Off_Form
+ html_tooltip_ext
+ (
+ String title,
+ String keyword,
+ String class_suffix,
+ List((String, String)) ext_args
+ ) =
+ with extra_args = format_extra_operands(ext_args),
+ literal("").
+
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_"+class_suffix), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_ext", keyword)] + ext_args, []).
+
+ public define HTML_In_Form
+ html_tooltip_ext
+ (
+ String title,
+ String keyword,
+ String class_suffix
+ ) =
+ actioner(same,same, link([id("help_" + keyword), class("jTipu jTip_"+class_suffix), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_ext", keyword)], []).
+
+public define HTML_In_Form
+ html_tooltip_ext
+ (
+ String title,
+ String keyword,
+ String class_suffix,
+ List((String, String)) ext_args
+ ) =
+ with extra_args = format_extra_operands(ext_args),
+ literal("").
+
+
+ href=\"/?a=ajax_show_tooltip&tooltip_id="+keyword+"\" id=\"help_"+keyword+HELP_HMS_MODE" class="jTip jTip_help" target="_blank" name="Aide sur la fonctionnalité 'No Limit'"> ").
+
+ actioner(same,same, link([id("help_" + keyword), class("jTip jTip_"+class_suffix), attr("target", "_blank")], " ", success(title)), "ajax_show_tooltip", [("tooltip_ext", keyword)] + ext_args, []).
diff --git a/web/CXM_widgets.anubis b/web/CXM_widgets.anubis
new file mode 100644
index 0000000..e9d553c
--- /dev/null
+++ b/web/CXM_widgets.anubis
@@ -0,0 +1,71 @@
+/*
+ * Created by PyramIDE.
+ * User: フランスのトトロ
+ * Date: 07/12/2014
+ * Time: 18:10
+ * © Calexium
+ */
+
+read system/string.anubis
+read tools/basis.anubis
+
+read calexium_lib/web/CXM_making_a_web_site.anubis
+
+public define HTML_In_Form
+ ip_input
+ (
+ HtmlId the_id,
+ WebArgName wan_prefix,
+ String ip
+ )=
+ with ip_fields = split(ip, '.'),
+ if the_id is htmlId(id_str) then
+ if wan_prefix is wan(field_prefix) then
+ div([id(id_str)],
+ sequence(
+ [
+ text_input([class("ip_input")], "", htmlId(""), wan(field_prefix+"_0"), init(force_nth(0,ip_fields,"")), 3),
+ text("."),
+ text_input([class("ip_input")], "", htmlId(""), wan(field_prefix+"_1"), init(force_nth(1,ip_fields,"")), 3),
+ text("."),
+ text_input([class("ip_input")], "", htmlId(""), wan(field_prefix+"_2"), init(force_nth(2,ip_fields,"")), 3),
+ text("."),
+ text_input([class("ip_input")], "", htmlId(""), wan(field_prefix+"_3"), init(force_nth(3,ip_fields,"")), 3),
+ ]))
+ .
+
+// ---------------------------------------------------------------------------
+
+public define HTML_In_Form
+ partial_ip_input
+ (
+ HtmlId the_id,
+ WebArgName wan_prefix,
+ List(String) ip_fixed_part,
+ String ip
+ )=
+ with ip_fields = split(ip, '.'),
+ if the_id is htmlId(id_str) then
+ if wan_prefix is wan(field_prefix) then
+ with make_field = (Int index)
+ |-> if index < length(ip_fixed_part) then
+ text([], force_nth(index, ip_fixed_part, ""))
+ else
+ text_input([class("ip_input")],
+ "",
+ htmlId(""),
+ wan(field_prefix + "_" + index),
+ init(force_nth(index, ip_fields, "")),
+ 3),
+ div([id(id_str)],
+ sequence(
+ [
+ make_field(0),
+ text("."),
+ make_field(1),
+ text("."),
+ make_field(2),
+ text("."),
+ make_field(3),
+ ]))
+ .
--
libgit2 0.21.4