Plugin.__init__(self, **settings)
print "SETTINGS", settings
assert 'page' in settings, "You should specify page"
- assert 'object' in settings, "You should specify object"
+ assert 'object' in settings or 'fields' in settings, "You should specify object or field list"
- # Retrieve object fields from metadata
- metadata = settings['page'].get_metadata()
- md_o = metadata.details_by_object(settings['object'])
- self.columns = md_o['column']
+ if 'object' in settings:
+ # Retrieve object fields from metadata
+ metadata = settings['page'].get_metadata()
+ md_o = metadata.details_by_object(settings['object'])
+ self.columns = md_o['column']
+
+ elif 'fields' in settings:
+ self.columns = []
+ for field in settings['fields']:
+ c = {
+ 'name' : field.get('name', ''),
+ 'field' : field.get('field', ''),
+ 'type' : field.get('type', 'input'),
+ 'description' : field.get('description', ''),
+ 'validate_rx' : field.get('validate_rx', ''),
+ 'validate_err' : field.get('validate_err', ''),
+ 'old_value' : 'POST',
+ }
+ self.columns.append(c)
def requirements (self):
return { 'js_files' : ['js/form.js', 'js/jquery.validate.js', ],
'css_files' : ['css/form.css']
}
+ def export_json_settings(self):
+ # We need initialization, even though we are not associated with a query
+ return True
def template_env (self, request):
env={}
def template_file (self):
return "form.html"
- def json_settings_list (self): return ['plugin_uuid']
+ def json_settings_list (self): return ['plugin_uuid', 'columns']
def get_validation_js(self):
# XXX We need to avoid sending the same query twice !"
# somehow store something into the dom, to perform an update afterwards
# XXX This should be moved to a template
# XXX We also need some storage into the wizard to be displayed later
- return "alert('validation'); return true;"
+ return """
+ // Useless since this is now a parameter
+ //frm = document.forms['form_%(domid)s'];
+
+ // Loop on the fields and test regexp if present
+ err = false;
+ $.each(options.columns, function(column) {
+ if (!frm.elements[column['field']].match(column['validate_rx'])) {
+ $('err_%(domid)s_' + column['field']).html(column['validation_err']);
+ err = true;
+ }
+ });
+ if (!err) {
+ // Issue json query
+ }
+ """ % self.__dict__