updated portal
[unfold.git] / plugins / form / __init__.py
index 5081501..ff569d5 100644 (file)
@@ -9,30 +9,44 @@ class CreateForm (Plugin):
         assert 'page'   in settings, "You should specify page"
         assert 'object' in settings, "You should specify object"
 
-        # 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:
+            self.object = settings['object']
+
+        if 'fields' in settings:
+            self.fields = []
+            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.fields.append(c)
+        else:
+            # Attempt to retrieve object fields from metadata
+            metadata = settings['page'].get_metadata()
+            md_o = metadata.details_by_object(settings['object'])
+            self.fields = md_o['column']
     
     def requirements (self):
-        return { 'js_files'     : ['js/form.js', 'js/jquery.validate.js', ],
+        # Some should be included by default by manifold
+        return { 'js_files'     : ['js/manifold.js', 'js/spin.presets.js', 'js/spin.min.js', 'js/jquery.spin.js',
+                                   '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={}
         env.update(self.__dict__)
-        #env['columns']=self.columns
         return env
 
     def template_file (self):
         return "form.html"
 
-    def json_settings_list (self): return ['plugin_uuid']
-
-    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;"
+    def json_settings_list (self): return ['plugin_uuid', 'object', 'fields']