Commit 5065c94d authored by Ivan Tyagov's avatar Ivan Tyagov

Use ERP5Form rather than more generic Form as it represents an ERP5 form gadget renderer.

parent 17604a77
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_EtagSupport__etag</string> </key> <key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts37251959.68</string> </value> <value> <string>ts37256095.54</string> </value>
</item> </item>
<item> <item>
<key> <string>__name__</string> </key> <key> <string>__name__</string> </key>
...@@ -26,23 +26,26 @@ ...@@ -26,23 +26,26 @@
Form field renderer.\n Form field renderer.\n
Note: This is an ERP5 form implementation for the moment.\n Note: This is an ERP5 form implementation for the moment.\n
*/\n */\n
var Form = {\n
\n \n
// elements marked with this class can be serizlized to server\n var ERP5Form = function () {\n
SERIALIZE_ABLE_CLASS_NAME: "serialize-able",\n \n
var CURRENT_FORM_ID = "";\n
\n
return {\n
\n \n
CURRENT_FORM_ID: "",\n // elements marked with this class can be serialized to server\n
SERIALIZE_ABLE_CLASS_NAME: "serialize-able",\n
\n \n
getCurrentFormId: function () {\n getCurrentFormId: function () {\n
/* Get current form ID (return hard coded one for now) */\n /* Get current form ID (return hard coded one for now) */\n
return this.CURRENT_FORM_ID;\n return CURRENT_FORM_ID;\n
},\n },\n
\n \n
setCurrentFormId: function (form_id) {\n setCurrentFormId: function (form_id) {\n
/* Set current form ID (return hard coded one for now) */\n /* Set current form ID (return hard coded one for now) */\n
this.CURRENT_FORM_ID = form_id;\n CURRENT_FORM_ID = form_id;\n
},\n },\n
\n \n
getFieldId: function(field_id) {\n getFieldId: function(field_id) {\n
/* Generate local form field id */\n /* Generate local form field id */\n
return "field_" + field_id;\n return "field_" + field_id;\n
...@@ -73,7 +76,7 @@ var Form = {\n ...@@ -73,7 +76,7 @@ var Form = {\n
}\n }\n
});\n });\n
},\n },\n
\n \n
BaseInputField: function (field_id, field_dict) {\n BaseInputField: function (field_id, field_dict) {\n
/* HTML based input field */\n /* HTML based input field */\n
var dom, display_width;\n var dom, display_width;\n
...@@ -84,7 +87,7 @@ var Form = {\n ...@@ -84,7 +87,7 @@ var Form = {\n
dom.attr("size", display_width);}\n dom.attr("size", display_width);}\n
return dom;\n return dom;\n
},\n },\n
\n \n
EditorField: function (field_id, field_dict) {\n EditorField: function (field_id, field_dict) {\n
/* HTML based input field */\n /* HTML based input field */\n
var dom;\n var dom;\n
...@@ -92,26 +95,26 @@ var Form = {\n ...@@ -92,26 +95,26 @@ var Form = {\n
this.updateField(dom, field_dict);\n this.updateField(dom, field_dict);\n
return dom;\n return dom;\n
},\n },\n
\n \n
ListField: function (field_id, field_dict) {\n ListField: function (field_id, field_dict) {\n
/* Select field */\n /* Select field */\n
var field_value, select_dom;\n var field_value, select_dom;\n
field_value = field_dict.value;\n field_value = field_dict.value;\n
select_dom = $("select[name=" + this.getFieldId(field_id) + "]");\n select_dom = $("select[name=" + this.getFieldId(field_id) + "]");\n
this.addOptionTagList(select_dom, field_dict.items, field_value);\n this.addOptionTagList(select_dom, field_dict.items, field_value);\n
return select_dom; \n return select_dom;\n
},\n },\n
\n \n
ParallelListField: function (field_id, field_dict) {\n ParallelListField: function (field_id, field_dict) {\n
/* mutiple select fields */\n /* mutiple select fields */\n
var field_value, select_dom; \n var field_value, select_dom;\n
// XXX: we render only first value but it can be many how to get them ?\n // XXX: we render only first value but it can be many how to get them ?\n
field_value = field_dict.value[0];\n field_value = field_dict.value[0];\n
select_dom = $("select[name=subfield_field_" + field_id + "]");\n select_dom = $("select[name=subfield_field_" + field_id + "]");\n
this.addOptionTagList(select_dom, field_dict.items, field_value);\n this.addOptionTagList(select_dom, field_dict.items, field_value);\n
return select_dom;\n return select_dom;\n
},\n },\n
\n \n
CheckBoxField: function (field_id, field_dict) {\n CheckBoxField: function (field_id, field_dict) {\n
/* CheckBoxField field */\n /* CheckBoxField field */\n
var checked, checkbox_dom;\n var checked, checkbox_dom;\n
...@@ -127,17 +130,17 @@ var Form = {\n ...@@ -127,17 +130,17 @@ var Form = {\n
/* TextArea field */\n /* TextArea field */\n
return this.BaseInputField(field_id, field_dict);\n return this.BaseInputField(field_id, field_dict);\n
},\n },\n
\n \n
StringField: function (field_id, field_dict) {\n StringField: function (field_id, field_dict) {\n
/* String field */\n /* String field */\n
return this.BaseInputField(field_id, field_dict);\n return this.BaseInputField(field_id, field_dict);\n
},\n },\n
\n \n
IntegerField: function (field_id, field_dict) {\n IntegerField: function (field_id, field_dict) {\n
/* Int field */\n /* Int field */\n
return this.BaseInputField(field_id, field_dict);\n return this.BaseInputField(field_id, field_dict);\n
},\n },\n
\n \n
PasswordField: function (field_id, field_dict) {\n PasswordField: function (field_id, field_dict) {\n
/* PasswordField field */\n /* PasswordField field */\n
return this.BaseInputField(field_id, field_dict);\n return this.BaseInputField(field_id, field_dict);\n
...@@ -153,12 +156,12 @@ var Form = {\n ...@@ -153,12 +156,12 @@ var Form = {\n
dom.datepicker(\'setDate\', date);\n dom.datepicker(\'setDate\', date);\n
return dom;\n return dom;\n
},\n },\n
\n \n
EmailField: function (field_id, field_dict) {\n EmailField: function (field_id, field_dict) {\n
/* Email field */\n /* Email field */\n
return this.BaseInputField(field_id, field_dict);\n return this.BaseInputField(field_id, field_dict);\n
},\n },\n
\n \n
FormBox: function (field_id, field_dict) {\n FormBox: function (field_id, field_dict) {\n
/* Email field */\n /* Email field */\n
return this.BaseInputField(field_id, field_dict);\n return this.BaseInputField(field_id, field_dict);\n
...@@ -176,15 +179,15 @@ var Form = {\n ...@@ -176,15 +179,15 @@ var Form = {\n
// XXX: image field should return details like quality, etc ...\n // XXX: image field should return details like quality, etc ...\n
dom.attr("src", field_dict.value + "?quality=75.0&display=thumbnail&format=png");\n dom.attr("src", field_dict.value + "?quality=75.0&display=thumbnail&format=png");\n
},\n },\n
\n \n
ListBox: function (field_id, field_dict) {\n ListBox: function (field_id, field_dict) {\n
/* Listbox field */\n /* Listbox field */\n
var listbox_id, navigation_id, listbox_table, current_form_id, listbox_dict, listbox_data_url, colModel, column_title_list;\n var listbox_id, navigation_id, listbox_table, current_form_id, listbox_dict, listbox_data_url, colModel, column_title_list;\n
listbox_id = "field_" + field_id;\n listbox_id = "field_" + field_id;\n
navigation_id = listbox_id + "_pager"; \n navigation_id = listbox_id + "_pager";\n
listbox_table = $("#"+listbox_id);\n listbox_table = $("#"+listbox_id);\n
current_form_id = this.getCurrentFormId();\n current_form_id = this.getCurrentFormId();\n
\n \n
listbox_dict = field_dict.listbox;\n listbox_dict = field_dict.listbox;\n
listbox_data_url = listbox_dict.listbox_data_url;\n listbox_data_url = listbox_dict.listbox_data_url;\n
colModel = [];\n colModel = [];\n
...@@ -219,13 +222,7 @@ var Form = {\n ...@@ -219,13 +222,7 @@ var Form = {\n
caption: field_dict.title});\n caption: field_dict.title});\n
listbox_table.jqGrid(\'navGrid\', \'#\'+navigation_id, {edit:false,add:false,del:false});\n listbox_table.jqGrid(\'navGrid\', \'#\'+navigation_id, {edit:false,add:false,del:false});\n
return listbox_table;\n return listbox_table;\n
}\n },\n
\n
};\n
\n
/* Generic form updater */\n
var FormUpdater = {\n
\n
\n \n
update: function(data) {\n update: function(data) {\n
/* Update form values */\n /* Update form values */\n
...@@ -234,20 +231,20 @@ var FormUpdater = {\n ...@@ -234,20 +231,20 @@ var FormUpdater = {\n
var type, dom;\n var type, dom;\n
type = field_dict.type;\n type = field_dict.type;\n
dom = undefined;\n dom = undefined;\n
if(Form.hasOwnProperty(type)){\n if(ERP5Form.hasOwnProperty(type)){\n
dom = Form[type](field_id, field_dict);\n dom = ERP5Form[type](field_id, field_dict);\n
}\n }\n
\n \n
// add a class that these fields are editable so asJSON\n // add a class that these fields are editable so asJSON\n
// can serialize for for sending to server\n // can serialize for for sending to server\n
if (dom!==undefined && dom!==null && field_dict.editable){\n if (dom!==undefined && dom!==null && field_dict.editable){\n
dom.addClass(Form.SERIALIZE_ABLE_CLASS_NAME);\n dom.addClass(ERP5Form.SERIALIZE_ABLE_CLASS_NAME);\n
}\n }\n
\n \n
// mark required fields visually\n // mark required fields visually\n
if (field_dict.required){\n if (field_dict.required){\n
dom.parent().parent().children("label").css("font-weight", "bold");}\n dom.parent().parent().children("label").css("font-weight", "bold");}\n
\n \n
});\n });\n
},\n },\n
\n \n
...@@ -255,10 +252,10 @@ var FormUpdater = {\n ...@@ -255,10 +252,10 @@ var FormUpdater = {\n
/* save form to server*/\n /* save form to server*/\n
var form_value_dict, converted_value;\n var form_value_dict, converted_value;\n
form_value_dict = {};\n form_value_dict = {};\n
$("." + Form.SERIALIZE_ABLE_CLASS_NAME).each(function(index){\n $("." + ERP5Form.SERIALIZE_ABLE_CLASS_NAME).each(function(index){\n
// DOM can change values, i.e. alter checkbox (on / off)\n // DOM can change values, i.e. alter checkbox (on / off)\n
var element,name, value, type; \n var element,name, value, type;\n
element = $(this); \n element = $(this);\n
name = element.attr("name");\n name = element.attr("name");\n
value = element.val();\n value = element.val();\n
type = element.attr("type");\n type = element.attr("type");\n
...@@ -270,16 +267,16 @@ var FormUpdater = {\n ...@@ -270,16 +267,16 @@ var FormUpdater = {\n
if(value===false) {\n if(value===false) {\n
converted_value=0;\n converted_value=0;\n
}\n }\n
value = converted_value; \n value = converted_value;\n
}\n }\n
// XXX: how to handle file uploads ?\n // XXX: how to handle file uploads ?\n
form_value_dict[name] = value;\n form_value_dict[name] = value;\n
});\n });\n
//console.log(form_value_dict);\n //console.log(form_value_dict);\n
\n \n
// add form_id as we need to know structure we\'re saving at server side\n // add form_id as we need to know structure we\'re saving at server side\n
form_value_dict.form_id = Form.getCurrentFormId();\n form_value_dict.form_id = ERP5Form.getCurrentFormId();\n
\n \n
// validation happens at server side\n // validation happens at server side\n
$.ajax({url:\'Form_save\',\n $.ajax({url:\'Form_save\',\n
data: form_value_dict,\n data: form_value_dict,\n
...@@ -291,7 +288,7 @@ var FormUpdater = {\n ...@@ -291,7 +288,7 @@ var FormUpdater = {\n
//console.log(field_errors);\n //console.log(field_errors);\n
$.each(field_errors, function(index, value){\n $.each(field_errors, function(index, value){\n
var dom, field;\n var dom, field;\n
dom = $("[name=" + Form.getFieldId(index) + "]");\n dom = $("[name=" + ERP5Form.getFieldId(index) + "]");\n
dom.css("border", "1px solid red"); // XXX: use class / css\n dom.css("border", "1px solid red"); // XXX: use class / css\n
field = dom.parent().parent();\n field = dom.parent().parent();\n
if (field.children("span.error").length > 0){\n if (field.children("span.error").length > 0){\n
...@@ -308,7 +305,7 @@ var FormUpdater = {\n ...@@ -308,7 +305,7 @@ var FormUpdater = {\n
// delete validation messages\n // delete validation messages\n
var element;\n var element;\n
element = $(this);\n element = $(this);\n
element.parent().children("div.input").children("." +Form.SERIALIZE_ABLE_CLASS_NAME).css("border", "none");\n element.parent().children("div.input").children("." +ERP5Form.SERIALIZE_ABLE_CLASS_NAME).css("border", "none");\n
element.remove();\n element.remove();\n
});\n });\n
// show a fading portal_status_message\n // show a fading portal_status_message\n
...@@ -318,7 +315,8 @@ var FormUpdater = {\n ...@@ -318,7 +315,8 @@ var FormUpdater = {\n
}\n }\n
}});\n }});\n
}\n }\n
};\n \n
}} ();\n
]]></string> </value> ]]></string> </value>
...@@ -329,7 +327,7 @@ var FormUpdater = {\n ...@@ -329,7 +327,7 @@ var FormUpdater = {\n
</item> </item>
<item> <item>
<key> <string>size</string> </key> <key> <string>size</string> </key>
<value> <int>12313</int> </value> <value> <int>14114</int> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
......
...@@ -56,14 +56,14 @@ ...@@ -56,14 +56,14 @@
<div class="document">\n <div class="document">\n
\n \n
<div class="actions">\n <div class="actions">\n
<button onclick="javascript:FormUpdater.save(); return false;"\n <button onclick="javascript:ERP5Form.save(); return false;"\n
title="Save" class="save" type="submit">\n title="Save" class="save" type="submit">\n
<span class="image"></span>\n <span class="image"></span>\n
<span class="description">Save</span>\n <span class="description">Save</span>\n
</button>\n </button>\n
\n \n
<script type="text/javascript"\n <script type="text/javascript"\n
tal:content="python: \'\'\'Form.setCurrentFormId(\'%s\');;\'\'\' %current_form_id">\n tal:content="python: \'\'\'ERP5Form.setCurrentFormId(\'%s\');;\'\'\' %current_form_id">\n
</script>\n </script>\n
\n \n
<!-- get all tabs from server -->\n <!-- get all tabs from server -->\n
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
tal:attributes="id action_form;\n tal:attributes="id action_form;\n
class python: action == current_action and \'selected\' or \'not_selected\'">\n class python: action == current_action and \'selected\' or \'not_selected\'">\n
\n \n
<a tal:attributes="onclick python: \'\'\'javascript: TabbularGadget.addNewTabGadget(\'form_gadget\', \'%s/Form_asRenderJSGadget\', \'FormUpdater.update\', \'Form_asJSON?form_id=%s\');; TabbularGadget.toggleVisibility($(\'#%s\'));; Form.setCurrentFormId(\'%s\');;return false ;;\'\'\' %(action_form, action_form, action_form, action_form)">\n <a tal:attributes="onclick python: \'\'\'javascript: TabbularGadget.addNewTabGadget(\'form_gadget\', \'%s/Form_asRenderJSGadget\', \'ERP5Form.update\', \'Form_asJSON?form_id=%s\');; TabbularGadget.toggleVisibility($(\'#%s\'));; ERP5Form.setCurrentFormId(\'%s\');;return false ;;\'\'\' %(action_form, action_form, action_form, action_form)">\n
<span i18n:translate=""\n <span i18n:translate=""\n
i18n:domain="ui"\n i18n:domain="ui"\n
tal:content="action/name">action_name</span>\n tal:content="action/name">action_name</span>\n
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<div id="form_gadget"\n <div id="form_gadget"\n
tal:attributes="gadget string:${current_form_id}/Form_asRenderJSGadget;\n tal:attributes="gadget string:${current_form_id}/Form_asRenderJSGadget;\n
gadget:data-source string:Form_asJSON?form_id=${current_form_id};\n gadget:data-source string:Form_asJSON?form_id=${current_form_id};\n
gadget:data-handler string:FormUpdater.update;\n gadget:data-handler string:ERP5Form.update;\n
gadget:property string: {&quot;cacheable&quot;: &quot;1&quot;, &quot;cache_id&quot;: &quot;${current_form_id}&quot;}">\n gadget:property string: {&quot;cacheable&quot;: &quot;1&quot;, &quot;cache_id&quot;: &quot;${current_form_id}&quot;}">\n
</div>\n </div>\n
\n \n
......
5 6
\ No newline at end of file \ No newline at end of file
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