Index: waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py	(revision 138)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py	(revision 139)
@@ -178,26 +178,4 @@
 ##            },
 ##        },
-##        'jamb_pin_usage': {
-##            'type': 'Int Widget',
-##            'data': {
-##                'title': 'Jamb Pin usage',
-##                'fields': ('jamb_pin_usage',),
-##                'is_required': False,
-##                'label': 'Nr of Cardusage',
-##                'label_edit': 'Nr of Cardusage',
-##                'description': '',
-##                'help': 'How many times has the scratchcard been used',
-##                'is_i18n': False,
-##                'readonly_layout_modes': (),
-##                'hidden_layout_modes': (),
-##                'hidden_readonly_layout_modes': (),
-##                'hidden_empty': False,
-##                'hidden_if_expr': '',
-##                'css_class': '',
-##                'widget_mode_expr': '',
-##                'display_width': 2,
-##                'size_max': 2,
-##            },
-##        },
         'faculty': {
             'type': 'String Widget',
@@ -228,8 +206,8 @@
         'ncols': 1,
         'rows': [
-            [{'widget_id': 'jamb_is_admitted', 'ncols': 1},],
+            #[{'widget_id': 'jamb_is_admitted', 'ncols': 1},],
             #[{'widget_id': 'jamb_where_admitted', 'ncols': 1},],
             #[{'widget_id': 'jamb_pin_usage', 'ncols': 1},],
-            [{'widget_id': 'faculty', 'ncols': 1},],
+            #[{'widget_id': 'faculty', 'ncols': 1},],
         ]
     },
@@ -508,63 +486,4 @@
             [{'widget_id': 'sc_pin', 'ncols': 1},],
             [{'widget_id': 'jamb_id', 'ncols': 1},],
-        ]
-    },
-}
-###)
-
-accobook = { ###(
-    'widgets': {
-        'sc_id': {
-            'type': 'String Widget',
-            'data': {
-                'title': 'SC ID',
-                'fields': ('accommodation_sc_id',),
-                'is_required': False,
-                'label': 'Card Serial Number ',
-                'label_edit': 'Card Serial Number',
-                'description': 'Card Serial Number ',
-                'help': 'This can be found on the bottom right of the reverse side of your Scratch Card',
-                'is_i18n': False,
-                'readonly_layout_modes': (),
-                'hidden_layout_modes': (),
-                'hidden_readonly_layout_modes': (),
-                'hidden_empty': False,
-                'hidden_if_expr': 'python:1',
-                'css_class': '',
-                'widget_mode_expr': '',
-                'display_width': 10,
-                'size_max': 0,
-            },
-        },
-        'sc_pin': {
-            'type': 'Scratchcard Pin Widget',
-            'data': {
-                'title': 'SC Pin',
-                'fields': ('accommodation_sc_pin'),
-                'is_required': True,
-                'label': 'enter an Accommodation PIN',
-                'label_edit': 'enter an Accommodation PIN',
-                'description': '',
-                'help': 'Please enter a PIN valid for Accomodation booking',
-                'is_i18n': False,
-                'readonly_layout_modes': (),
-                'hidden_layout_modes': (),
-                'hidden_readonly_layout_modes': (),
-                'hidden_empty': False,
-                'hidden_if_expr': '',
-                'css_class': '',
-                'widget_mode_expr': '',
-                'display_width': 10,
-                'size_max': 10,
-            },
-        },
-    },
-   'layout': {
-        'style_prefix': 'layout_accobook_',
-        'flexible_widgets': (),
-        'ncols': 1,
-        'rows': [
-            #[{'widget_id': 'sc_id', 'ncols': 1},],
-            [{'widget_id': 'sc_pin', 'ncols': 1},],
         ]
     },
@@ -905,7 +824,8 @@
          'data': {
                 'fields': ['heading'],
-                'level': 1,
+                'level': 2,
                 'is_i18n': 0,
                 'is_required': 1,
+                'label': 'Title',
                 'label_edit': 'Title',
                 'help': 'Course Title',
@@ -914,4 +834,5 @@
             },
         },
+        'title': Title,
         'text': Text,
         'level': {
@@ -1000,4 +921,5 @@
         'rows': [
             [{'widget_id': 'heading', 'ncols': 1},],
+            [{'widget_id': 'title', 'ncols': 1},],
             [{'widget_id': 'text', 'ncols': 1},],
             [{'widget_id': 'level', 'ncols': 1},],
@@ -1011,4 +933,63 @@
 ###)
 
+course_results = { ###(
+    'widgets': {
+        'points': {
+            'type': 'Int Widget',
+            'data': {
+                'title': '',
+                'fields': ('points',),
+                'is_required': False,
+                'label': 'Points',
+                'label_edit': 'Points',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 3,
+                'size_max': 3,
+            },
+        },
+        'grade': {
+            'type': 'String Widget',
+            'data': {
+                'title': '',
+                'fields': ('grade'),
+                'is_required': False,
+                'label': 'Grade',
+                'label_edit': 'Grade',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 2,
+                'size_max': 1,
+            },
+        },
+    },
+   'layout': {
+        'style_prefix': 'layout_default_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'points', 'ncols': 1},],
+            [{'widget_id': 'grade', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
 accommodation = { ###(
     'widgets': {
@@ -1017,7 +998,8 @@
          'data': {
                 'fields': ['heading'],
-                'level': 1,
+                'level': 2,
                 'is_i18n': 0,
                 'is_required': 1,
+                'label': 'Hall Name',
                 'label_edit': 'Hall Name',
                 'help': '',
@@ -1026,4 +1008,5 @@
             },
         },
+        'title': Title,
         'text': Text,
         'which_sex': {
@@ -1118,4 +1101,5 @@
         'rows': [
             [{'widget_id': 'heading', 'ncols': 1},],
+            [{'widget_id': 'title', 'ncols': 1},],
             [{'widget_id': 'text', 'ncols': 1},],
             [{'widget_id': 'which_sex', 'ncols': 1},],
@@ -1125,4 +1109,63 @@
             [{'widget_id': 'beds_per_room', 'ncols': 1},],
             [{'widget_id': 'beds_assigned', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+accobook = { ###(
+    'widgets': {
+        'sc_id': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'SC ID',
+                'fields': ('accommodation_sc_id',),
+                'is_required': False,
+                'label': 'Card Serial Number ',
+                'label_edit': 'Card Serial Number',
+                'description': 'Card Serial Number ',
+                'help': 'This can be found on the bottom right of the reverse side of your Scratch Card',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': 'python:1',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 10,
+                'size_max': 0,
+            },
+        },
+        'sc_pin': {
+            'type': 'Scratchcard Pin Widget',
+            'data': {
+                'title': 'SC Pin',
+                'fields': ('accommodation_sc_pin'),
+                'is_required': True,
+                'label': 'enter an Accommodation PIN',
+                'label_edit': 'enter an Accommodation PIN',
+                'description': '',
+                'help': 'Please enter a PIN valid for Accomodation booking',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 10,
+                'size_max': 10,
+            },
+        },
+    },
+   'layout': {
+        'style_prefix': 'layout_accobook_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
         ]
     },
Index: waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py	(revision 138)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py	(revision 139)
@@ -295,4 +295,21 @@
 
 
+###)
+
+course_results_schema = { ###(
+     'points': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'grade': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+}
+#
 ###)
 
@@ -464,4 +481,5 @@
 schemas['students'] = students_folder_schema
 schemas['student'] = student_schema
+schemas['course_results'] = course_results_schema
 schemas['student_personal'] = student_personal_schema
 schemas['accommodation'] = accommodation
Index: waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py	(revision 138)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py	(revision 139)
@@ -26,5 +26,5 @@
     'cps_proxy_type': 'folder',
     'schemas': ['metadata', 'common', 'folder'],
-    'layouts': ['common', 'university'],
+    'layouts': ['waeup_common'],
     'layout_clusters': ['metadata:metadata'],
     'cps_section_wf': 'waeup_section_wf',
@@ -90,5 +90,5 @@
     'cps_proxy_type': 'folder',
     'schemas': ['metadata', 'common', 'folder'],
-    'layouts': ['waeup_common','folder'],
+    'layouts': ['waeup_common',],
     'layout_clusters': ['metadata:metadata'],
     'cps_section_wf': 'waeup_section_wf',
@@ -122,4 +122,9 @@
                 'condition':  'object/portal_membership/isAnonymousUser',
                 'permission': (View,)},
+                {'id': 'edit',
+                 'name': 'action_edit',
+                 'action': 'cpsdocument_edit_form',
+                 'condition': "python:member and 'Manager' in member.getRoles()",
+                 'permissions': (ModifyPortalContent,UniversityManage,)},
                 {
                 'id': 'localroles',
@@ -196,11 +201,11 @@
     'product': 'WAeUP',
     'factory': 'addStudent',
-    'immediate_view': 'cpsdocument_view',
-    'global_allow': True,
-    'filter_content_types': True,
-    'allowed_content_types': ('Jamb','StudentPersonal'),
-    'allow_discussion': False,
-    'cps_is_searchable': True,
-    'cps_proxy_type': 'document',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Jamb','StudentPersonal','StudyLevel'),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'folder',
     'cps_display_as_document_in_listing': True,
     'schemas': ['metadata','common','student'],
@@ -239,4 +244,10 @@
           'name'      : 'Personal Data',
           'action'    : 'string:${object/absolute_url}/PERSONAL',
+          'condition':  '',
+          'permission': (ModifyPortalContent,)},
+          {
+          'id'        : 'study_level',
+          'name'      : 'Register for next Level',
+          'action'    : 'string:${object/absolute_url}/register_level',
           'condition':  '',
           'permission': (ModifyPortalContent,)},
@@ -409,4 +420,153 @@
 ###)
 
+study_level_folder = { ###(
+    'title': 'WAeUP Study Level Folder',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Level',
+    'product': 'WAeUP',
+    'factory': 'addLevelFolder',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Semester',),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'folder',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ['metadata','common',],
+    'layouts': ['waeup_common',],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'accommodation_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': (View,),
+          'category': 'object',
+          'visible': True,},
+          {'id': 'add_level',
+          'name': 'Register for next year',
+          'condition': "python:member and 'Student'in member.getRoles()",
+          'action'    : 'register_level',
+          #'action': 'folder_factories',
+          'permissions': (StudentManage,)},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (UniversityManage,),
+          'visible': 0,
+          },
+          )
+}
+###)
+
+semester_folder = { ###(
+    'title': 'WAeUP Semester Folder',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Semester',
+    'product': 'WAeUP',
+    'factory': 'addLevelFolder',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('CourseTicket',),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'folder',
+    'cps_display_as_document_in_listing': True,
+    #'schemas': ['metadata','common','course','course_results'],
+    #'layouts': ['waeup_common','course','course_results'],
+    'schemas': ['metadata','common',],
+    'layouts': ['waeup_common',],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'accommodation_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': (View,),
+          'category': 'object',
+          'visible': True,},
+          {'id': 'add_course_ticket',
+          'name': 'Add Course Ticket',
+          'condition': "python:member and 'Student'in member.getRoles()",
+          'action'    : 'add_course_ticket',
+          #'action': 'folder_factories',
+          'permissions': (StudentManage,)},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (UniversityManage,),
+          'visible': 0,
+          },
+          )
+}
+###)
+
+course_ticket = { ###(
+    'title': 'WAeUP Course Ticket',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'CourseTicket',
+    'product': 'WAeUP',
+    'factory': 'addCourseTicket',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'cpsdocument',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ['metadata','common','course','course_results'],
+    'layouts': ['waeup_common','course','course_results'],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'accommodation_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': (View,),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (UniversityManage,),
+          'visible': 0,
+          },
+          )
+}
+###)
+
 faculty_type = { ###(
     'title': 'WAeUP Faculty',
@@ -612,5 +772,5 @@
     'allow_discussion': False,
     'cps_is_searchable': True,
-    'cps_proxy_type': 'cpsdocument',
+    'cps_proxy_type': 'folder',
     'cps_display_as_document_in_listing': True,
     'schemas': ['metadata','common',],
@@ -640,4 +800,9 @@
           'condition': "python:member and 'Manager' in member.getRoles()",
           'permissions': (UniversityManage,)},
+          {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'cpsdocument_edit_form',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,UniversityManage,)},
           {'id': 'localroles',
           'name': 'delegate',
@@ -663,5 +828,5 @@
     'allow_discussion': False,
     'cps_is_searchable': True,
-    'cps_proxy_type': 'document',
+    'cps_proxy_type': 'cpsdocument',
     'cps_display_as_document_in_listing': True,
     'schemas': ['metadata','common','accommodation'],
@@ -707,4 +872,7 @@
 types['Student'] = student_type
 types['StudentPersonal'] = student_personal_type
+types['StudyLevel'] = study_level_folder
+types['Semester'] = semester_folder 
+types['CourseTicket'] = course_ticket 
 types['AccoFolder'] = acco_folder
 types['Accommodation'] = accommodation
Index: waeup_product/trunk/skins/waeup_student/add_accommodation.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/add_accommodation.py	(revision 138)
+++ waeup_product/trunk/skins/waeup_student/add_accommodation.py	(revision 139)
@@ -37,5 +37,5 @@
                                  )
 elif psm == 'valid':
-    oid = "%s" % ds.get('heading').replace(' ','')
+    oid = "%s" % ds.get('Title').replace(' ','')
     context.invokeFactory(type_name,oid)
     object = getattr(context,oid)
