Commit ac9c83c1 authored by Sven Franck's avatar Sven Franck

migrated fieldlist gadget form bin to factory

parent ec30972e
......@@ -420,234 +420,13 @@ var priv = {};
return {"error":"foo"}
};
/* ********************************************************************** */
/* JQM Form Field */
/* ********************************************************************** */
/* Generate a form field (input, select, checkbox...)
* @method generateFormField
* @param {object} config Default parameters usable for this form field
* @param {object} overrides Overrides for this instance
* @param {object} data Object with data to fill
* @param {boolean} nowrap Flag whether to wrap in a fieldcontain(er)
* @param {boolean} nolabel Flag whether to hide the label
* @return {object} HTML document fragment
*/
// TODO: MAKE THIS A ERP5 MAPPER!
priv.generateFormField = function (config, overrides, data, nowrap, nolabel) {
var wrap,
container,
element_wrap,
validate,
value = data || undefined,
element = document.createDocumentFragment();
if (config !== undefined || (overrides.enabled || config.validator.enabled) !== true) {
// validation string
// TODO: check all for all elements = worst-case
if (overrides.external || config.validator.external) {
validate = overrides.external_validator || config.validator.external_validator;
}
if (overrides.maximum_length || config.validator.maximum_length) {
validate += "|" + "max_length:"+(overrides.maximum_length || config.validator.maximum_length) + "&truncate" + (overrides.truncate || config.validator.truncate);
}
if (overrides.maximum_lines || config.validator.maximum_lines) {
validate += "|" + "max_lines:" + (overrides.maximum_lines || config.validator.maximum_lines);
}
if (overrides.maximum_lenght_of_line || config.validator.maximum_lenght_of_line) {
validate += "|" + "max_length_lines:" + (overrides.maximum_lenght_of_line || config.validator.maximum_lenght_of_line);
}
if (overrides.preserve_whitespace || config.validator.preserve_whitespace) {
validate += "|preserve_whitespace:true";
}
if (overrides.start || config.validator.start) {
validate += "|start:" + (overrides.start || config.validator.start);
}
if (overrides.end || config.validator.end) {
validate += "|end:" + (overrides.start || config.validator.start);
}
// wrap
if (nowrap) {
wrap = document.createDocumentFragment();
} else {
wrap = priv.generateElement(
"div",
{"className":"ui-fieldcontain translate"},
{"title": (overrides.description || config.widget.description || "" ), "data-i18n": (overrides.description_i18n || config.widget.description_i18n || "")}
);
}
// label
wrap.appendChild(priv.generateElement(
"label",
{"className": "translate" + (nolabel ? " ui-hidden-accesible" : "")},
{"for": overrides.id || config.widget.id, "data-i18n": overrides.title_i18n || config.widget.title_i18n},
{"text": overrides.title || config.widget.title}
));
// relationStringField
// TODO: crap
if (overrides.type === "RelationStringField" ||
config.type === "RelationStringField") {
element_wrap = priv.generateElement("div",
{"className": "ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear ui-input-has-action"}
);
element_wrap.appendChild(priv.generateElement("input",
{
"id": overrides.id || config.widget.id,
"className": ""
}, {
"data-enhanced": "true",
"data-inset":"false",
"data-clear-btn":"true"
}
));
element_wrap.appendChild(priv.generateElement("a",
{
"href":"",
"className": "ui-input-clear ui-input-clear-hidden ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all",
"title": "Clear input element"
}, {
"data-role": "button",
"data-i18n": "[title]generic.buttons.clear;generic.buttons.clear"
}, {
"text":"clear input element"
}
));
element_wrap.appendChild(priv.generateElement("a",
{
"href":"",
"className": "ui-disabled ui-input-action ui-btn ui-icon-plane ui-btn-icon-notext ui-corner-all",
"title": "jump to selected object"
}, {
"data-role": "button",
"data-i18n": "[title]generic.buttons.jump;generic.buttons.jump"
}, {
"text": "jump to selected object"
}
));
wrap.appendChild(element_wrap);
wrap.appendChild(priv.generateElement("ul",
{
"className":""
},{
"data-role":"listview",
"data-inset":"true",
"data-enhanced":"true",
"data-filter":"true",
"data-filter-reveal":"true",
"data-input": "#relation-" + portal_type
}
));
} else {
// element
wrap.appendChild(priv.generateElement(
priv.mapFieldType(overrides.type || config.type),
{
"className": (overrides.css_class || config.widget.css_class || "") + " " + ((overrides.required || config.validator.required) ? "required" : ""),
"id": overrides.id || config.widget.id
},
{},
{
"data-relation": overrides.portal_type || config.widget.portal_type || null,
"size": overrides.display_width || config.widget.display_width || overrides.size || config.widget.size || undefined,
"rows": overrides.width || config.widget.width || undefined,
"cols": overrides.height || config.widget.height || undefined,
"disabled": (overrides.enabled || config.validator.enabled) ? undefined : true,
"name": overrides.alternate_name || config.validator.alternate_name || undefined,
"value": (value || (overrides.default === 0 ? "0" : overrides.default) || config.widget.default || undefined),
"data-vv-validations": validate || null,
"type": (overrides.hidden || config.widget.hidden) === true ? "hidden" : priv.mapInputType(overrides.type || config.type),
"extra": overrides.extra || config.widget.extra || null,
"readonly": (overrides.editable === false || config.validator.editable === false ) ? true : undefined,
"options": (overrides.items || config.widget.items) ? ([overrides.items || config.widget.items || null, overrides.extra_per_item || config.widget.extra_per_item || null, overrides.select_first_item || config.widget.select_first_item || null]) : null
}
));
}
element.appendChild(wrap);
}
return element;
};
/* ====================================================================== */
/* CONSTRUCTORS */
/* ====================================================================== */
// Constructors generate gadgets utilizing generators!
/* ********************************************************************** */
/* FIELD LIST */
/* ********************************************************************** */
/** Construct a simple field menu
* @method constructFieldList
* @param {object} element Base element to enhance
* @returns {object } HTML fragment
*/
priv.constructFieldlist = function (element) {
var i,
k,
j,
field,
config,
overrides,
content,
box,
section,
fragment,
gadget_id = element.getAttribute("data-gadget-id"),
settings = priv.gadget_properties[gadget_id],
portal_type = settings.portal_type_title,
$parent = $(element.parentNode);
if (settings !== undefined) {
if (settings.form !== undefined) {
fragment = priv.generateElement(
"form", settings.form.direct, (settings.form.attributes || undefined), (settings.form.logic || undefined)
);
} else {
fragment = window.document.createDocumentFragment();
}
for (i = 0; i < settings.layout.length; i += 1) {
section = settings.layout[i];
if (section.blocks) {
for (j = 0; j < section.blocks.length; j += 1) {
box = section.blocks[j];
content = priv.generateElement(
"div",
{"className": "content_element " + (box.fullscreen ? "content_element_fullscreen" : "")}
);
// fields
if (box.fields) {
for (k = 0; k < box.fields.length; k += 1) {
field = box.fields[k];
config = priv.field_definitions[portal_type][field];
overrides = box.overrides[field] || {};
// all-in-one...
content.appendChild(priv.generateFormField(config, overrides));
}
fragment.appendChild(content);
}
// actions
if (box.actions) {
for (l = 0; l < box.actions.length; l += 1) {
content.appendChild(priv.generateControlgroup(box.actions[l]));
}
}
}
}
}
}
$parent.empty().append( fragment ).enhanceWithin();
};
/* ********************************************************************** */
/* TAB FIELD LIST */
/* ********************************************************************** */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment