Commits

Anonymous committed 967451d

Made form work! Ugly but functional!

  • Participants
  • Parent commits 673db68

Comments (0)

Files changed (1)

conex/src/conex/types/browser/forms.py

 from z3c.form import field
 from zope.component import getUtility
 from conex.types import interfaces
+from zope import schema
 
 class DefaultAddForm(form.AddForm):
     """A simple add form for concave content"""
     @property
     def fields(self):
-        type_name = self.request.get("type")
+        if self.request.get("type") is not None:
+            type_name = self.request.get("type")
+        else:
+            type_name = self.request.form[u'form.widgets.type_name']
         factory = getUtility(interfaces.IConcaveTypesFactory, "conex.TypesFactory")
         content_type = factory.known_classes[type_name]
         #TODO: This should be refactored to return something more meaningful
         #than the first schema the class provides -- schemata anyone?
-        return field.Fields(content_type.schemas[0])
+        fields = field.Fields(content_type.schemas[0])
+        type_field = field.Fields(schema.TextLine(__name__=str("type_name"),
+                                                  title=u"type name",
+                                                  required=False,
+                                                  default=type_name))
+        return fields + type_field
+        
+                                  
+                                 
 
+    def create(self, data):
+        factory = getUtility(interfaces.IConcaveTypesFactory, "conex.TypesFactory")
+        #XXX: There's probably a saner way to get the typename, but it's late
+        new_content = factory.create_object(data.get("type_name"))
+        del data["type_name"]
+        form.applyChanges(self, new_content, data)
+        return new_content
+
+    def add(self, new_content):
+        #Todo: This should actually be a name-chooser adapter, and it should 
+        #probably handle puntuation and multiple spaces
+        #see pp 294 of Web Component Development with Zope 3
+        self._name = new_content.title.lower().replace(' ', '-')
+        self.context[self._name] = new_content
+
+    def nextURL(self):
+        #TODO: When we have a default display, that should be the return value
+        return '/'