Index: waeup_product/trunk/Extensions/install.py
===================================================================
--- waeup_product/trunk/Extensions/install.py	(revision 34)
+++ waeup_product/trunk/Extensions/install.py	(revision 45)
@@ -29,5 +29,5 @@
         if CPSSubscriptions:
             ptypes = "('Portal', 'CPSMailAccess Message', 'CPSMailAccess Box', 'CPSMailAccess Folder',"\
-                     +  "'StudentFolder', 'Student', 'Jamb')"
+                     +  "'University', 'StudentsFolder', 'Student', 'Jamb')"
             condition = "object.portal_type not in %s" % ptypes
     
@@ -42,5 +42,5 @@
             self.verifyAction('portal_subscriptions', **action)
         if CPSForum:
-            ptypes = "('StudentFolder', 'Student', 'Jamb')"
+            ptypes = "('University', 'StudentsFolder', 'Student', 'Jamb')"
             condition = "object.portal_type not in %s" % ptypes
     
@@ -70,7 +70,7 @@
                         'id'        : 'new_student',
                         'name'      : 'Add Student',
-                        'action'    : 'string:${object/absolute_url}/create_student',
+                        'action'    : 'string:${object/absolute_url}/create_student_form',
                         'permission': (View),
-                        'condition' : 'python: member and here.portal_type == "StudentFolder"',
+                        'condition' : 'python: member and here.portal_type == "StudentsFolder"',
                         'category'  : 'student',
                         'visible'   : 1,
@@ -88,5 +88,5 @@
                         'id'        : 'add_jamb',
                         'name'      : 'Add Jamb Data',
-                        'action'    : 'string:${object/absolute_url}/create_jamb',
+                        'action'    : 'string:${object/absolute_url}/create_jamb_form',
                         'permission': (),
                         'condition' : 'python:here.portal_type != "Jamb" and len(object.contentItems()) == 0',
@@ -119,19 +119,24 @@
         dtypes = portal.getWAeUPTypes()
         self.verifyFlexibleTypes(dtypes)
-        self.allowContentTypes('StudentFolder', ('Workspace','Section',))
+        self.allowContentTypes('University', ('Workspace','Section',))
         #self.allowContentTypes('Student', ('Workspace', 'Section'))
-        ptypes = {
-                  'StudentFolder' : {
-                  'allowed_content_types': ('Student',),
-                  'typeinfo_name': 'WAeUP: StudentFolder',
-                  'add_meta_type': 'Factory-based Type Information',
-                  },
-                  'Student' : {
-                  'allowed_content_types': ('Jamb',),
-                  'typeinfo_name': 'WAeUP: Student',
-                  'add_meta_type': 'Factory-based Type Information',
-                  },
-                 }
-        self.verifyContentTypes(ptypes)
+##        ptypes = {
+##                  'University' : {
+##                  'allowed_content_types': ('StudentsFolder',),
+##                  'typeinfo_name': 'University',
+##                  'add_meta_type': 'Factory-based Type Information',
+##                  },
+##                  'StudentsFolder' : {
+##                  'allowed_content_types': ('Student',),
+##                  'typeinfo_name': 'StudentFolder',
+##                  'add_meta_type': 'Factory-based Type Information',
+##                  },
+##                  'Student' : {
+##                  'allowed_content_types': ('Jamb',),
+##                  'typeinfo_name': 'Student',
+##                  'add_meta_type': 'Factory-based Type Information',
+##                  },
+##                 }
+##        self.verifyContentTypes(ptypes)
         ##########################################
         # Schemas
@@ -179,5 +184,6 @@
                       }
 
-        se_chains = { 'StudentFolder': 'waeup_section_wf',
+        se_chains = { 'University': 'waeup_section_wf',
+                      'StudentsFolder': 'waeup_section_wf',
                       'Student': 'waeup_section_wf',
                       'Jamb': 'waeup_section_wf',
Index: waeup_product/trunk/Student.py
===================================================================
--- waeup_product/trunk/Student.py	(revision 34)
+++ 	(revision )
@@ -1,70 +1,0 @@
-from Globals import InitializeClass
-from AccessControl import ClassSecurityInfo
-
-from Products.CMFCore.utils import getToolByName
-from Products.CMFCore.permissions import View
-from Products.CMFCore.permissions import ModifyPortalContent
-from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder 
-from Products.CPSCore.CPSBase import CPSBaseDocument as BaseDocument 
-#from Products.CMFCore.PortalContent import PortalContent
-#from Products.CMFCore.PortalFolder import PortalFolder
-#from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
-
-#from Products.CMFCore.interfaces.Contentish import Contentish as IContentish
-#from Products.CMFCore.interfaces.Dynamic import DynamicType as IDynamicType
-from Products.CPSDocument.CPSDocument import CPSDocument
-
-factory_type_information = (
-    {'id': 'Student',
-     'meta_type': 'Student',
-     'description': 'The WAeUP Student',
-     'title': 'WAeUP Student',
-     'icon': 'student.gif',
-     'product': 'WAeUP',
-     'factory': 'addStudent',
-     'immediate_view': 'student_edit_form',
-     'filter_content_types': 1,
-     'allowed_content_types': ('JAMB'),
-     'allow_discussion': 0,
-     'actions': ({'id': 'view',
-                  'name': 'View',
-                  'action': 'student_view',
-                  'permissions': (View,)},
-                 {'id': 'addJamb',
-                  'name': 'new JAMB',
-                  'action': 'folder_factories',
-                  'permissions': (ModifyPortalContent,)},
-                 {'id': 'edit',
-                  'name': 'Edit',
-                  'action': 'student_edit_form',
-                  'permissions': (ModifyPortalContent,)},
-                 ),
-     # additionnal cps stuff
-      'cps_display_as_document_in_listing' : 1,
-     },
-    )
-
-class Student(BaseDocument):
-    """
-    WAeUP Student container for the various student data 
-    """
-##    meta_type = 'Student'
-##    portal_type = meta_type
-##    security = ClassSecurityInfo()
-
-##    _properties = BaseDocument._properties + (
-##        {'id': 'jamb_is_admitted', 'type': 'boolean'},
-##        {'id': 'jamb_where_admitted', 'type': 'string'},
-##        )
-
-##    allow_discussion = 0
-##    jamb_is_admitted = False
-##    jamb_where_admitted = ''
-    
-    
-InitializeClass(Student)
-
-def addStudent(container, id, REQUEST=None, **kw):
-    """Add a Student."""
-    ob = Student(id, **kw)
-    return CPSBase_adder(container, ob, REQUEST=REQUEST)
Index: waeup_product/trunk/Students.py
===================================================================
--- waeup_product/trunk/Students.py	(revision 45)
+++ waeup_product/trunk/Students.py	(revision 45)
@@ -0,0 +1,46 @@
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.permissions import View
+from Products.CMFCore.permissions import ModifyPortalContent
+from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder 
+from Products.CPSCore.CPSBase import CPSBaseDocument as BaseDocument 
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
+
+#
+# The StudentsFolder
+#
+class StudentsFolder(BaseBTreeFolder):
+    """
+    WAeUP container for the various WAeUP containers data 
+    """
+    meta_type = 'Students Folder'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+InitializeClass(StudentsFolder)
+
+def addStudentsFolder(container, id, REQUEST=None, **kw):
+    """Add a Student."""
+    print id
+    ob = StudentsFolder(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###
+### The Student
+###
+##class Student(BaseDocument):
+##    """
+##    WAeUP Student container for the various student data 
+##    """
+##    meta_type = 'Student'
+##    portal_type = meta_type
+##    security = ClassSecurityInfo()
+##    
+##InitializeClass(Student)
+##
+##def addStudent(container, id, REQUEST=None, **kw):
+##    """Add a Student."""
+##    print id
+##    ob = Student(id, **kw)
+##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
Index: waeup_product/trunk/University.py
===================================================================
--- waeup_product/trunk/University.py	(revision 45)
+++ waeup_product/trunk/University.py	(revision 45)
@@ -0,0 +1,29 @@
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.permissions import View
+from Products.CMFCore.permissions import ModifyPortalContent
+from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder 
+from Products.CPSCore.CPSBase import CPSBaseDocument as BaseDocument 
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
+
+#
+# The WAeUP BaseContainer
+#
+
+class University(BaseBTreeFolder):
+    """
+    Container for the various WAeUP containers 
+    """
+    meta_type = 'University'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+InitializeClass(University)
+
+def addUniversity(container, id, REQUEST=None, **kw):
+    """Add a WAeUP"""
+    ob = University(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
Index: waeup_product/trunk/__init__.py
===================================================================
--- waeup_product/trunk/__init__.py	(revision 34)
+++ waeup_product/trunk/__init__.py	(revision 45)
@@ -5,19 +5,21 @@
 registerDirectory('skins', globals())
 
-import Student
-import Widgets
+import University
+import Students
 
 fti = ()
-fti += Student.factory_type_information 
+contentClasses = (University.University,
+                  Students.StudentsFolder,
+                  #Students.Student,
+                 )
 
-contentClasses = (Student.Student,)
-
-contentConstructors = ()
-contentConstructors += Student.addStudent,
-
+contentConstructors = (University.addUniversity,
+                       Students.addStudentsFolder,
+                       #Students.addStudent,
+                       )
 
 def initialize(registrar):
     cmfutils.ContentInit(
-        'WAeUP Types',
+        'WAeUP',
         content_types=contentClasses,
         permission=AddPortalContent,
Index: waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py	(revision 34)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py	(revision 45)
@@ -4,4 +4,73 @@
 layouts = {}
 
+# common header layout
+common_layout = {
+    'widgets': {
+        'LanguageSelector': {
+            'type': 'Document Language Select Widget',
+            'data': {
+                'fields': ['Language'],
+            },
+        },
+        'Title': {
+            'type': 'Heading Widget',
+            'data': {
+                'fields': ['Title'],
+                'level': 1,
+                'is_i18n': 1,
+                'is_required': 1,
+                'label_edit': 'Name',
+                'display_width': 40,
+                'size_max': 200,
+            },
+        },
+        'Description': {
+            'type': 'Text Widget',
+            'data': {
+                'fields': ['Description'],
+                'is_i18n': 1,
+                'label_edit': 'cpsdoc_description_label_edit',
+                'label': '',
+                'css_class': 'ddescription',
+                'width': 72,
+                'height': 5,
+                'render_format': 'text',
+                'hidden_layout_modes': ('create','edit', 'view'),
+            },
+        },
+        'LanguageSelectorCreation': {
+            'type': 'Select Widget',
+            'data': {
+                'title': 'Language',
+                'fields': ('Language',),
+                'is_required': 0,
+                'label': 'label_language',
+                'label_edit': 'label_language',
+                'description': '',
+                'help': '',
+                'is_i18n': 0,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': ('create','edit', 'view'),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': 0,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'vocabulary': 'language_voc',
+            },
+        },
+    },
+    'layout': {
+        'style_prefix': 'layout_default_',
+        'rows': [
+            [{'widget_id': 'LanguageSelector'}],
+            [{'widget_id': 'Title'},],
+            [{'widget_id': 'Description'},],
+            [{'widget_id': 'LanguageSelectorCreation'}],
+            ],
+        },
+    }
+layouts['waeup_common'] = common_layout
+#
+#
 student_layout = {
     'widgets': {
@@ -108,5 +177,6 @@
 }
 layouts['student'] = student_layout
-
+#
+#
 scratch_card = {
     'widgets': {
Index: waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py	(revision 34)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py	(revision 45)
@@ -1,2 +1,22 @@
+university_schema = {
+   'allow_discussion': {
+        'type': 'CPS Int Field',
+        'data': {
+            'default_expr': 'python:0',
+            'is_searchabletext': 0,
+        },
+    },
+}
+
+students_folder_schema = {
+   'allow_discussion': {
+        'type': 'CPS Int Field',
+        'data': {
+            'default_expr': 'python:0',
+            'is_searchabletext': 0,
+        },
+    },
+}
+
 student_schema = {
    'allow_discussion': {
@@ -300,4 +320,6 @@
 }
 schemas = {}
+schemas['university'] = university_schema
+schemas['students'] = students_folder_schema
 schemas['student'] = student_schema
 schemas['jamb'] = jamb_schema
Index: waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py	(revision 34)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py	(revision 45)
@@ -8,12 +8,59 @@
 ChangePermissions = 'Change permissions'
 
-student_folder_type = {
+university_type = {
+    'title': 'WAeUP Base Folder',
+    'description': 'The WAeUP Container',
+    'content_icon': 'students_folder.gif',
+    'content_meta_type': 'University',
+    'product': 'WAeUP',
+    'factory': 'addUniversity',
+    'immediate_view': 'folder_view',
+    'global_allow': 1,
+    'filter_content_types': 1,
+    'allowed_content_types': ('StudentsFolder'),
+    'allow_discussion': 0,
+    'cps_is_searchable': 1,
+    'cps_display_as_document_in_listing': 1,
+    'cps_proxy_type': 'folder',
+    'schemas': ['metadata', 'common', 'folder'],
+    'layouts': ['waeup_common', 'folder'],
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'actions': ({'id': 'view',
+                 'name': 'action_view',
+                 'action': 'folder_view',
+                 'permissions': (View,)},
+                {'id': 'new_content',
+                 'name': 'action_new_content',
+                 'action': 'folder_factories',
+                 'permissions': (AddPortalContent,)},
+                {'id': 'contents',
+                 'name': 'action_folder_contents',
+                 'action': 'folder_contents',
+                 'permissions': (ModifyPortalContent,)},
+                {'id': 'edit',
+                 'name': 'action_edit',
+                 'action': 'cpsdocument_edit_form',
+                 'permissions': (ModifyPortalContent,)},
+                {'id': 'metadata',
+                 'name': 'action_metadata',
+                 'action': 'cpsdocument_metadata',
+                 'condition': 'not:portal/portal_membership/isAnonymousUser',
+                 'permissions': (View,)},
+                {'id': 'localroles',
+                 'name': 'action_local_roles',
+                 'action': 'folder_localrole_form',
+                 'permissions': (ChangePermissions,)},
+    )
+}
+
+students_folder_type = {
     'title': 'WAeUP Student Folder',
     'description': 'The WAeUP Student Folder',
     'content_icon': 'students_folder.gif',
-    'content_meta_type': 'Folder',
-    'product': 'CPSDefault',
-    'factory': 'addFolder',
-    'immediate_view': 'student_folder_view',
+    'content_meta_type': 'StudentsFolder',
+    'product': 'WAeUP',
+    'factory': 'addStudentsFolder',
+    'immediate_view': 'folder_view',
     'global_allow': 1,
     'filter_content_types': 1,
@@ -25,5 +72,5 @@
     'cps_proxy_type': 'folder',
     'schemas': ['metadata', 'common', 'folder'],
-    'layouts': ['folder'],
+    'layouts': ['waeup_common','folder'],
     'layout_clusters': ['metadata:metadata'],
     'cps_section_wf': 'waeup_section_wf',
@@ -36,8 +83,8 @@
                  'action': 'folder_factories',
                  'permissions': (AddPortalContent,)},
-##                {'id': 'contents',
-##                 'name': 'action_folder_contents',
-##                 'action': 'folder_contents',
-##                 'permissions': (ModifyPortalContent,)},
+                {'id': 'contents',
+                 'name': 'action_folder_contents',
+                 'action': 'folder_contents',
+                 'permissions': (ModifyPortalContent,)},
                 {'id': 'edit',
                  'name': 'action_edit',
@@ -55,12 +102,16 @@
     )
 }
+
 student_type = {
     'title': 'WAeUP Student',
     'description': '',
     'content_icon': 'student.gif',
-    'content_meta_type': 'CPS Document',
+    'content_meta_type': 'Student',
     'product': 'CPSDocument',
     'factory': 'addCPSDocument',
     'immediate_view': 'cpsdocument_view',
+    #'product': 'WAeUP',
+    #'factory': 'addStudent',
+    #'immediate_view': 'student_view',
     'global_allow': True,
     'filter_content_types': True,
@@ -70,6 +121,8 @@
     'cps_proxy_type': 'document',
     'cps_display_as_document_in_listing': True,
-    'schemas': ['student'],
-    'layouts': ['student'],
+    'schemas': ['metadata','common','student'],
+    'layouts': ['waeup_common','student'],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata'],
     'cps_workspace_wf': 'waeup_workspace_wf',
     'cps_section_wf': 'waeup_section_wf',
@@ -77,5 +130,6 @@
          {'id': 'view',
           'name': 'action_view',
-          'action': 'string:${object_url}/student_view',
+          #'action': 'string:${object_url}/student_view',
+          'action': 'string:${object_url}/cpsdocument_view',
           'condition': '',
           'permission': ('View',),
@@ -109,5 +163,5 @@
     'description': '',
     'content_icon': 'student.gif',
-    'content_meta_type': 'CPS Document',
+    'content_meta_type': 'Scratch Card',
     'product': 'CPSDocument',
     'factory': 'addCPSDocument',
@@ -183,5 +237,6 @@
 
 types = {}
-types['StudentFolder'] = student_folder_type
+types['University'] = university_type
+types['StudentsFolder'] = students_folder_type
 types['Student'] = student_type
 types['ScratchCard'] = scratch_card
Index: waeup_product/trunk/skins/waeup_student/create_jamb.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_jamb.pt	(revision 34)
+++ 	(revision )
@@ -1,26 +1,0 @@
-<html metal:use-macro="here/content_lib_master/macros/master">
-
-  <metal:block fill-slot="head_slot">
-    <tal:block tal:define="student here/getContent">
-    </tal:block>
-  </metal:block>
-
-  <metal:block fill-slot="css_slot">
-    <link rel="Stylesheet" type="text/css" href=""
-          tal:attributes="href string:${base_url}student.css" />
-  </metal:block>
-
-  <metal:block fill-slot="main"
-               tal:define="items here/contentValues"
-               >
-    <form action="content_create" tal:attributes="action string:${here_url}/content_create"
-          method="post" class="group">
-      <dt>
-        <input type="hidden" name="type_name" value="Jamb" /> 
-      <p>
-        <input id="objectTitle" type="text" name="title" value="JAMB" class="focus" size="40" />
-        <input type="submit" class="standalone searchButton" value="create" />
-      </p>
-    </form>
-  </metal:block>
-</html>
Index: waeup_product/trunk/skins/waeup_student/create_jamb.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_jamb.py	(revision 45)
+++ waeup_product/trunk/skins/waeup_student/create_jamb.py	(revision 45)
@@ -0,0 +1,70 @@
+##parameters=type_name, REQUEST=None, **kw
+# $Id$
+"""
+Create an object.
+
+FIXME: what are the parameters?
+"""
+
+from urllib import urlencode
+
+if REQUEST is not None:
+    kw.update(REQUEST.form)
+    # Use creation without empty object.
+    # XXX should find better
+    ti = getattr(context.portal_types, type_name)
+    # For cpsdocument
+    if ti.meta_type == 'CPS Flexible Type Information':
+        args = {'type_name': type_name}
+        # XXX pass prefilled title, a bit of a hack...
+        args['widget__Title'] = kw.get('title', '')
+
+        # Look for the create action on the ti
+        create_action_form = ti.getActionById('create', 'cpsdocument_create_form')
+
+        return REQUEST.RESPONSE.redirect('%s/%s?%s'
+                                         % (context.absolute_url(),
+                                            create_action_form,
+                                            urlencode(args)))
+
+if REQUEST and not kw.get('title'):
+    # Need a title before creating folders
+    if type_name in ('Section', 'Workspace'):
+        args = {'type_name': type_name}
+        return REQUEST.RESPONSE.redirect('%s/folder_edit_form?%s' %
+                                (context.absolute_url(), urlencode(args)))
+
+id = kw.get('title', 'my_' + type_name)
+id = context.computeId(compute_from=id)
+
+context.invokeFactory(type_name, id)
+ob = getattr(context, id)
+
+try:
+    doc = ob.getEditableContent()
+except AttributeError:
+    # not a proxy
+    doc = ob
+else:
+    try:
+        doc.edit(proxy=ob, **kw)
+    except:
+        # CMF Compatibility.
+        # type_name not necessarly and edit method
+        # for CMF types is not aware about that.
+        if kw.has_key('type_name'):
+            del kw['type_name']
+        doc.edit(**kw)
+
+context.portal_eventservice.notifyEvent('modify_object', context, {})
+context.portal_eventservice.notifyEvent('modify_object', ob, {})
+
+
+if REQUEST is not None:
+    psm = 'psm_content_created'
+    action_path = doc.getTypeInfo().immediate_view # getActionById('metadata')
+    REQUEST.RESPONSE.redirect('%s/%s?portal_status_message=%s' %
+                              (ob.absolute_url(), action_path,
+                               psm))
+
+return id
Index: waeup_product/trunk/skins/waeup_student/create_jamb_form.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_jamb_form.pt	(revision 45)
+++ waeup_product/trunk/skins/waeup_student/create_jamb_form.pt	(revision 45)
@@ -0,0 +1,26 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+
+  <metal:block fill-slot="head_slot">
+    <tal:block tal:define="student here/getContent">
+    </tal:block>
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+          tal:attributes="href string:${base_url}student.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="items here/contentValues"
+               >
+    <form action="content_create" tal:attributes="action string:${here_url}/content_create"
+          method="post" class="group">
+      <dt>
+        <input type="hidden" name="type_name" value="Jamb" /> 
+      <p>
+        <input id="objectTitle" type="text" name="title" value="JAMB" class="focus" size="40" />
+        <input type="submit" class="standalone searchButton" value="create" />
+      </p>
+    </form>
+  </metal:block>
+</html>
Index: waeup_product/trunk/skins/waeup_student/create_student.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_student.pt	(revision 34)
+++ 	(revision )
@@ -1,30 +1,0 @@
-<html metal:use-macro="here/content_lib_master/macros/master">
-
-  <metal:block fill-slot="head_slot">
-    <tal:block tal:define="student here/getContent">
-    </tal:block>
-  </metal:block>
-
-  <metal:block fill-slot="css_slot">
-    <link rel="Stylesheet" type="text/css" href=""
-          tal:attributes="href string:${base_url}student.css" />
-  </metal:block>
-
-  <metal:block fill-slot="main"
-               tal:define="items here/contentValues"
-               >
-    <form action="content_create" tal:attributes="action string:${here_url}/content_create"
-          method="post" class="group">
-      <dt>
-        <input type="hidden" name="type_name" value="Student" /> 
-      <p>
-        <label for="objectTitle">
-          <strong>Studentname</strong>
-        </label>
-
-        <input id="objectTitle" type="text" name="title" class="focus" size="40" />
-        <input type="submit" class="standalone searchButton" value="create" />
-      </p>
-    </form>
-  </metal:block>
-</html>
Index: waeup_product/trunk/skins/waeup_student/create_student.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_student.py	(revision 45)
+++ waeup_product/trunk/skins/waeup_student/create_student.py	(revision 45)
@@ -0,0 +1,76 @@
+##parameters=type_name, REQUEST=None, **kw
+# $Id$
+"""
+Create an object.
+
+FIXME: what are the parameters?
+"""
+
+from urllib import urlencode
+
+##for k,v in kw.items():
+##    print k,v
+##return printed
+
+if REQUEST is not None:
+    kw.update(REQUEST.form)
+    # Use creation without empty object.
+    # XXX should find better
+    ti = getattr(context.portal_types, type_name)
+    # For cpsdocument
+    if ti.meta_type == 'CPS Flexible Type Information':
+        args = {'type_name': type_name}
+        # XXX pass prefilled title, a bit of a hack...
+        args['widget__Title'] = kw.get('title', '')
+
+        # Look for the create action on the ti
+        create_action_form = ti.getActionById('create', 'cpsdocument_create_form')
+
+        return REQUEST.RESPONSE.redirect('%s/%s?%s'
+                                         % (context.absolute_url(),
+                                            create_action_form,
+                                            urlencode(args)))
+
+
+if REQUEST and not kw.get('title'):
+    # Need a title before creating folders
+    if type_name in ('Section', 'Workspace'):
+        args = {'type_name': type_name}
+        return REQUEST.RESPONSE.redirect('%s/folder_edit_form?%s' %
+                                (context.absolute_url(), urlencode(args)))
+
+
+id = kw.get('title', 'my_sdfsdfdsf' + type_name)
+id = context.computeId(compute_from=id)
+
+context.invokeFactory(type_name, id)
+ob = getattr(context, id)
+
+try:
+    doc = ob.getEditableContent()
+except AttributeError:
+    # not a proxy
+    doc = ob
+else:
+    try:
+        doc.edit(proxy=ob, **kw)
+    except:
+        # CMF Compatibility.
+        # type_name not necessarly and edit method
+        # for CMF types is not aware about that.
+        if kw.has_key('type_name'):
+            del kw['type_name']
+        doc.edit(**kw)
+
+context.portal_eventservice.notifyEvent('modify_object', context, {})
+context.portal_eventservice.notifyEvent('modify_object', ob, {})
+
+
+if REQUEST is not None:
+    psm = 'psm_content_created'
+    action_path = doc.getTypeInfo().immediate_view # getActionById('metadata')
+    REQUEST.RESPONSE.redirect('%s/%s?portal_status_message=%s' %
+                              (ob.absolute_url(), action_path,
+                               psm))
+
+return id
Index: waeup_product/trunk/skins/waeup_student/create_student_form.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_student_form.pt	(revision 45)
+++ waeup_product/trunk/skins/waeup_student/create_student_form.pt	(revision 45)
@@ -0,0 +1,30 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+
+  <metal:block fill-slot="head_slot">
+    <tal:block tal:define="student here/getContent">
+    </tal:block>
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+          tal:attributes="href string:${base_url}student.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="items here/contentValues"
+               >
+    <form action="content_create" tal:attributes="action string:${here_url}/create_student"
+          method="post" class="group">
+      <dt>
+        <input type="hidden" name="type_name" value="Student" /> 
+      <p>
+        <label for="objectTitle">
+          <strong>Studentname</strong>
+        </label>
+
+        <input id="objectTitle" type="text" name="title" class="focus" size="40" />
+        <input type="submit" class="standalone searchButton" value="create" />
+      </p>
+    </form>
+  </metal:block>
+</html>
Index: waeup_product/trunk/skins/waeup_student/student_view_main.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/student_view_main.pt	(revision 34)
+++ waeup_product/trunk/skins/waeup_student/student_view_main.pt	(revision 45)
@@ -13,22 +13,24 @@
 <metal:block fill-slot="main"
              tal:define="student here/getContent;
-             items here/contentValues">
-<span tal:condition="python: 0" tal:content="items" />
-<table cellspacing="0" cellpadding="0">
-    <tal:block condition="python: len(items)">
-      <tr tal:repeat="item items">
-        <td colspan="1"> 
-          <a href="jamb" 
-             tal:attributes="href item/absolute_url"
-             tal:content="item/title_or_id"></a>
-      </td>
+             items here/contentValues"
+             >
+    <span tal:condition="python: 0" tal:content="items" />
+    <tal:block tal:content="structure student/jamb_where_admitted" />
+    <table cellspacing="0" cellpadding="0">
+      <tal:block condition="python: len(items)">
+        <tr tal:repeat="item items">
+          <td colspan="1"> 
+            <a href="jamb" 
+               tal:attributes="href item/absolute_url"
+               tal:content="item/title_or_id"></a>
+          </td>
+        </tr>
+      </tal:block>
+      <tr tal:condition="python:not len(items)">
+        <td>
+          no Items yet !
+        </td>
       </tr>
-    </tal:block>
-    <tr tal:condition="python:not len(items)">
-      <td>
-        no Items yet !
-      </td>
-    </tr>
-  </table>
-</metal:block>
+    </table>
+  </metal:block>
 </html>
