Index: waeup_product/trunk/Extensions/install.py
===================================================================
--- waeup_product/trunk/Extensions/install.py	(revision 56)
+++ waeup_product/trunk/Extensions/install.py	(revision 57)
@@ -52,6 +52,43 @@
                       'category' : 'object',
                       }
-            self.deleteActions({'portal_discussion': ['activate_comments',]})
+            self.deleteActions({'portal_subscriptions': ['activate_comments',]})
             self.verifyAction('portal_subscriptions', **action)
+            # now portal_discussion
+            self.deleteActions({'portal_discussion': ['comment',
+                                                      'activate_comments',
+                                                      'deactivate_comments',
+                                                      'manage_comments']})
+            action = {'id' : 'comment',
+                      'name': 'action_comment',
+                      'action': "string:${object/absolute_url}/post_comment",
+                      'condition' : "python:getattr(object.getContent(), 'allow_discussion' , None) and object.hasCommentAction()",
+                      'permission': (View,),
+                      'category' : 'object',
+                      }
+            self.verifyAction('portal_discussion', **action)
+            action = {'id' : 'activate_comments',
+                      'name': 'action_activate_comments',
+                      'action': "string:${object/absolute_url}/set_comment_mode?mode=1",
+                      'condition' : "python:getattr(object.getTypeInfo(),'cps_proxy_type','') in ('document', 'folderishdocument') and getattr(object.getContent(), 'allow_discussion' , None) == 1",
+                      'permission': (ForumManageComments,),
+                      'category' : 'object',
+                      }
+            self.verifyAction('portal_discussion', **action)
+            action = {'id' : 'deactivate_comments',
+                      'name': 'action_deactivate_comments',
+                      'action': "string:${object/absolute_url}/set_comment_mode?mode=0",
+                      'condition' : "python:getattr(object.getTypeInfo(),'cps_proxy_type','') in ('document', 'folderishdocument') and getattr(object.getContent(), 'allow_discussion' , None) == 1",
+                      'permission': (ForumManageComments,),
+                      'category' : 'object',
+                      }
+            self.verifyAction('portal_discussion', **action)
+            action = {'id' : 'manage_comments',
+                      'name': 'action_manage_comments',
+                      'action': "string:${object/absolute_url}/manage_comment",
+                      'condition' : "python:getattr(object.getTypeInfo(),'cps_proxy_type','') in ('document', 'folderishdocument') and getattr(object.getContent(), 'allow_discussion' , None) == 1",
+                      'permission': (ForumManageComments,),
+                      'category' : 'object',
+                      }
+            self.verifyAction('portal_discussion', **action)
         
         ##########################################
@@ -129,23 +166,4 @@
         self.verifyFlexibleTypes(dtypes)
         self.allowContentTypes('University', ('Workspace','Section',))
-        #self.allowContentTypes('Student', ('Workspace', 'Section'))
-##        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
Index: waeup_product/trunk/Students.py
===================================================================
--- waeup_product/trunk/Students.py	(revision 56)
+++ waeup_product/trunk/Students.py	(revision 57)
@@ -1,2 +1,3 @@
+#-*- mode: python; mode: fold -*-
 from Globals import InitializeClass
 from AccessControl import ClassSecurityInfo
@@ -10,8 +11,5 @@
 from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
 
-#
-# The StudentsFolder
-#
-class StudentsFolder(BaseBTreeFolder):
+class StudentsFolder(BaseBTreeFolder): ###(
     """
     WAeUP container for the various WAeUP containers data 
@@ -58,23 +56,72 @@
     return CPSBase_adder(container, ob, REQUEST=REQUEST)
 ###
-### The Student
-###
-##class Student(CPSDocument):
-##    """
-##    WAeUP Student container for the various student data 
-##    """
-####    meta_type = 'Student'
-####    portal_type = meta_type
-##    security = ClassSecurityInfo()
-##    
-##    security.declarePublic("test")
-##    def test(self):
-##        """test"""
-##        return self.REQUEST
-##    
-##InitializeClass(Student)
-#
-##def addStudent(container, id, REQUEST=None, **kw):
-##    """Add a Student."""
-##    ob = Student(id, **kw)
-##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+
+student_fti = { ###(
+    'title': 'WAeUP Student',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'Student',
+    'factory': 'addStudent',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Jamb','StudentPersonal'),
+    'allow_discussion': False,
+    'actions': (
+         {'id': 'view',
+          'name': 'action_view',
+          'action': 'string:${object_url}/student_index_html',
+          #'action': 'string:${object_url}/cpsdocument_view',
+          'condition': '',
+          'permission': ('View',),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'new_content',
+          'name': 'Add Data',
+          'action': 'string:${object_url}/folder_factories',
+          'condition': "python:1 or len(object.contentItems()) == 0 ",
+          'permission': ('Modify portal content',),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'contents',
+          'name': 'action_folder_contents',
+          'action': 'string:${object_url}/folder_contents',
+          'condition': "python:1 or object.getTypeInfo().cps_proxy_type != 'document'",
+          'permission': ('Modify portal content',),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/cpsdocument_edit_form',
+          'condition': '',
+          'permission': ('Modify portal content',),
+          'category': 'object',
+          'visible': True,},
+    )
+}
+
+###)
+
+class Student(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data 
+    """
+    meta_type = 'Student'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+    security.declarePublic("test")
+    def test(self):
+        """test"""
+        return self.REQUEST
+    
+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/Widgets.py
===================================================================
--- waeup_product/trunk/Widgets.py	(revision 56)
+++ waeup_product/trunk/Widgets.py	(revision 57)
@@ -15,4 +15,8 @@
     """ StudentId Widget"""
     meta_type = "StudentId Widget"
+    digits = 8
+    digits_str = "N"*digits
+    letters = 2
+    letters_str = "L"*letters
     
     def validate(self, datastructure, **kw):
@@ -20,5 +24,4 @@
         
         valid = CPSStringWidget.validate(self, datastructure, **kw)
-        print "studentw",valid
         if not valid:
             return 0
@@ -27,7 +30,6 @@
             value = datastructure[widget_id]
             err = 0
-            if not (len(value) == 8 and value[:6].isdigit() and value[6:].isalpha()):
-                err = 'invalid Student Id'
-
+            if not (len(value) == self.digits + self.letters and value[:self.digits].isdigit() and value[self.digits:].isalpha()):
+                err = 'invalid Student Id in the format: %s%s with N = Number, L = Letter' % (self.digits_str,self.letters_str) 
             if err:
                 datastructure.setError(widget_id, err)
@@ -60,5 +62,4 @@
         
         valid = CPSStringWidget.validate(self, datastructure, **kw)
-        print "sc_pinw",valid
         if not valid:
             return 0
@@ -67,6 +68,5 @@
             value = datastructure[widget_id]
             err = 0
-            print value
-            if not value in valid_pins: 
+            if not value in self.valid_pins: 
                 err = 'invalid Pin'
             if err:
Index: waeup_product/trunk/__init__.py
===================================================================
--- waeup_product/trunk/__init__.py	(revision 56)
+++ waeup_product/trunk/__init__.py	(revision 57)
@@ -8,13 +8,14 @@
 import Students
 
-fti = ()
+fti = (Students.student_fti,
+)
 contentClasses = (University.University,
                   Students.StudentsFolder,
-                  #Students.Student,
+                  Students.Student,
                  )
 
 contentConstructors = (University.addUniversity,
                        Students.addStudentsFolder,
-                       #Students.addStudent,
+                       Students.addStudent,
                        )
 
Index: waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPLayouts.py	(revision 57)
@@ -419,5 +419,5 @@
         },
         'sc_pin': {
-            'type': 'String Widget',
+            'type': 'Scratchcard Pin Widget',
             'data': {
                 'title': 'SC Pin',
@@ -477,6 +477,5 @@
 ###)
 
-jamb_layoutcreate = { ###(
-    'widgets': {
+jamb_widgets = { ###(
         'reg_nr': {
             'type': 'StudentId Widget',
@@ -490,25 +489,54 @@
                 'help': 'The Student ID from JAMB',
                 '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': 8,
-                'size_max': 8,
-            },
-        },
-        'name': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('name',),
-                'is_required': False,
-                'label': 'Name',
-                'label_edit': 'Name',
-                'description': '',
-                'help': 'Please enter your full name.',
+                'display_width': 10,
+                'size_max': 10,
+            },
+        },
+        'firstname': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'First Name',
+                'fields': ('firstname',),
+                'is_required': False,
+                'label': 'First Name',
+                'label_edit': 'First Name',
+                'description': 'First Name',
+                'help': 'First name',
+                'is_i18n': False,
+                'display_width': 40,
+            },
+        },
+        'middlename': {
+            'type': 'String Widget',
+            'data': {
+                'title': '',
+                'fields': ('middlename',),
+                'is_required': False,
+                'label': 'Middle Name',
+                'label_edit': 'Middle Name',
+                'description': '',
+                'help': 'Middle name',
+                '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': 40,
+                'size_max': 0,
+            },
+        },
+        'lastname': {
+            'type': 'String Widget',
+            'data': {
+                'title': '',
+                'fields': ('lastname',),
+                'is_required': False,
+                'label': 'Surname',
+                'label_edit': 'Surname',
+                'description': '',
+                'help': 'Surname',
                 'is_i18n': False,
                 'readonly_layout_modes': (),
@@ -570,8 +598,8 @@
         },
         'state': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('state_of_origin',),
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('state',),
                 'is_required': False,
                 'label': 'State',
@@ -580,13 +608,5 @@
                 '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': 20,
-                'size_max': 0,
+                'vocabulary': 'nigerian_states',
             },
         },
@@ -614,11 +634,38 @@
         },
         'aggregate': {
-            'type': 'String Widget',
+            'type': 'Int Widget',
             'data': {
                 'title': 'Agregate',
                 'fields': ('aggregate',),
                 'is_required': False,
-                'label': 'Aggregate',
-                'label_edit': 'Aggregate',
+                'label': 'Score',
+                'label_edit': 'Score',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+            },
+        },
+        'faculty': {
+            'type': 'Select Widget',
+            'data': {
+                'title': 'Faculty',
+                'fields': ('faculty',),
+                'is_required': False,
+                'label': 'Faculty',
+                'label_edit': 'Faculty',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'faculties',
+            },
+        },
+        'listing_date': {
+            'type': 'Date Widget',
+            'data': {
+                'title': 'Listing Date',
+                'fields': ('listing_date',),
+                'is_required': False,
+                'label': 'Listing Date',
+                'label_edit': 'Listing Date',
                 'description': '',
                 'help': '',
@@ -635,48 +682,51 @@
             },
         },
-        '2nd_choice': {
-            'type': 'String Widget',
-            'data': {
-                'title': 'Second choice',
-                'fields': ('2nd_choice',),
-                'is_required': False,
-                'label': 'Second choice',
-                'label_edit': 'Second choice',
-                'description': '',
-                'help': 'second_choice',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        '3rd_choice': {
-            'type': 'String Widget',
-            'data': {
-                'title': 'Third_choice',
-                'fields': ('3rd_choice',),
-                'is_required': False,
-                'label': 'Third choice',
-                'label_edit': 'Third choice',
-                'description': 'third_choice',
-                'help': 'third_choice',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
+##        '2nd_choice': { ###(
+##            'type': 'String Widget',
+##            'data': {
+##                'title': 'Second choice',
+##                'fields': ('2nd_choice',),
+##                'is_required': False,
+##                'label': 'Second choice',
+##                'label_edit': 'Second choice',
+##                'description': '',
+##                'help': 'second_choice',
+##                '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': 20,
+##                'size_max': 0,
+##            },
+##        },
+##        
+##        '3rd_choice': {
+##            'type': 'String Widget',
+##            'data': {
+##                'title': 'Third_choice',
+##                'fields': ('3rd_choice',),
+##                'is_required': False,
+##                'label': 'Third choice',
+##                'label_edit': 'Third choice',
+##                'description': 'third_choice',
+##                'help': 'third_choice',
+##                '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': 20,
+##                'size_max': 0,
+##            },
+##        },
+###)
+
         'sc_id': {
             'type': 'String Widget',
@@ -723,5 +773,9 @@
             },
         },
-    },
+    }
+###)
+
+jamb_layoutcreate = { ###(
+    'widgets': jamb_widgets,
     'layout': {
         'style_prefix': 'layout_jambcreate_',
@@ -730,5 +784,7 @@
         'rows': [
             [{'widget_id': 'reg_nr', 'ncols': 1},],
-            [{'widget_id': 'name', 'ncols': 1},],
+            [{'widget_id': 'firstname', 'ncols': 1},],
+            [{'widget_id': 'middlename', 'ncols': 1},],
+            [{'widget_id': 'lastname', 'ncols': 1},],
             #[{'widget_id': 'sc_id', 'ncols': 1},],
             #[{'widget_id': 'sc_pin', 'ncols': 1},],
@@ -736,8 +792,10 @@
             [{'widget_id': 'sex', 'ncols': 1},],
             [{'widget_id': 'state', 'ncols': 1},],
-            [{'widget_id': 'exam_results', 'ncols': 1},],
+            #[{'widget_id': 'exam_results', 'ncols': 1},],
             [{'widget_id': 'aggregate', 'ncols': 1},],
-            [{'widget_id': '2nd_choice', 'ncols': 1},],
-            [{'widget_id': '3rd_choice', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'listing_date', 'ncols': 1},],
+            #[{'widget_id': '2nd_choice', 'ncols': 1},],
+            #[{'widget_id': '3rd_choice', 'ncols': 1},],
         ]
     },
@@ -746,250 +804,5 @@
 
 jamb_layout = { ###(
-    'widgets': {
-        'reg_nr': {
-            'type': 'StudentId Widget',
-            'data': {
-                'title': 'Student ID',
-                'fields': ('reg_nr',),
-                'is_required': True,
-                'label': 'Student ID',
-                'label_edit': 'Student ID',
-                'description': 'The Student ID from JAMB',
-                'help': 'The Student ID from JAMB',
-                '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': 8,
-                'size_max': 8,
-            },
-        },
-        'name': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('name',),
-                'is_required': False,
-                'label': 'Name',
-                'label_edit': 'Name',
-                'description': '',
-                'help': 'Please enter your full name.',
-                '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': 40,
-                'size_max': 0,
-            },
-        },
-        'age': {
-            'type': 'Int Widget',
-            'data': {
-                'title': '',
-                'fields': ('age',),
-                'is_required': False,
-                'label': 'Age',
-                'label_edit': 'Age',
-                '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': 2,
-            },
-        },
-        'sex': {
-            'type': 'Boolean Widget',
-            'data': {
-                'title': '',
-                'fields': ('sex',),
-                'is_required': False,
-                'label': 'sex',
-                'label_edit': 'sex',
-                'label_false': 'male',
-                'label_true': 'female',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        'state': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('state_of_origin',),
-                'is_required': False,
-                'label': 'State',
-                'label_edit': 'State',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        'exam_results': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('exam_results',),
-                'is_required': False,
-                'label': 'Jamb Results',
-                'label_edit': 'Jamb Results',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        'aggregate': {
-            'type': 'String Widget',
-            'data': {
-                'title': 'Agregate',
-                'fields': ('aggregate',),
-                'is_required': False,
-                'label': 'Aggregate',
-                'label_edit': 'Aggregate',
-                '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': 0,
-            },
-        },
-        '2nd_choice': {
-            'type': 'String Widget',
-            'data': {
-                'title': 'Second choice',
-                'fields': ('2nd_choice',),
-                'is_required': False,
-                'label': 'Second choice',
-                'label_edit': 'Second choice',
-                'description': '',
-                'help': 'second_choice',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        '3rd_choice': {
-            'type': 'String Widget',
-            'data': {
-                'title': 'Third_choice',
-                'fields': ('3rd_choice',),
-                'is_required': False,
-                'label': 'Third choice',
-                'label_edit': 'Third choice',
-                'description': 'third_choice',
-                'help': 'third_choice',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        'sc_id': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('admission_sc_id',),
-                'is_required': False,
-                'label': 'Scratch card ID used',
-                'label_edit': 'Scratch card ID used',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-        'sc_pin': {
-            'type': 'String Widget',
-            'data': {
-                'title': '',
-                'fields': ('admission_sc_pin',),
-                'is_required': False,
-                'label': 'Scratch card PIN used',
-                'label_edit': 'Scratch card PIN used',
-                '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': 20,
-                'size_max': 0,
-            },
-        },
-    },
+    'widgets': jamb_widgets,
     'layout': {
         'style_prefix': 'layout_default_',
@@ -998,14 +811,18 @@
         'rows': [
             [{'widget_id': 'reg_nr', 'ncols': 1},],
-            [{'widget_id': 'name', 'ncols': 1},],
-            [{'widget_id': 'sc_id', 'ncols': 1},],
-            [{'widget_id': 'sc_pin', 'ncols': 1},],
+            [{'widget_id': 'firstname', 'ncols': 1},],
+            [{'widget_id': 'middlename', 'ncols': 1},],
+            [{'widget_id': 'lastname', 'ncols': 1},],
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            #[{'widget_id': 'sc_pin', 'ncols': 1},],
             [{'widget_id': 'age', 'ncols': 1},],
             [{'widget_id': 'sex', 'ncols': 1},],
             [{'widget_id': 'state', 'ncols': 1},],
-            [{'widget_id': 'exam_results', 'ncols': 1},],
+            #[{'widget_id': 'exam_results', 'ncols': 1},],
             [{'widget_id': 'aggregate', 'ncols': 1},],
-            [{'widget_id': '2nd_choice', 'ncols': 1},],
-            [{'widget_id': '3rd_choice', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'listing_date', 'ncols': 1},],
+            #[{'widget_id': '2nd_choice', 'ncols': 1},],
+            #[{'widget_id': '3rd_choice', 'ncols': 1},],
         ]
     },
Index: waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPSchemas.py	(revision 57)
@@ -3,11 +3,11 @@
 
 university_schema = { ###(
-   'allow_discussion': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': 0,
-        },
-    },
+##   'allow_discussion': {
+##        'type': 'CPS Int Field',
+##        'data': {
+##            'default_expr': 'python:0',
+##            'is_searchabletext': 0,
+##        },
+##    },
 }
 
@@ -15,11 +15,11 @@
 
 students_folder_schema = { ###(
-   'allow_discussion': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': 0,
-        },
-    },
+##   'allow_discussion': {
+##        'type': 'CPS Int Field',
+##        'data': {
+##            'default_expr': 'python:0',
+##            'is_searchabletext': 0,
+##        },
+##    },
 }
 
@@ -27,11 +27,11 @@
 
 student_schema = { ###(
-   'allow_discussion': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': 0,
-            },
-        },
+##   'allow_discussion': {
+##        'type': 'CPS Int Field',
+##        'data': {
+##            'default_expr': 'python:0',
+##            'is_searchabletext': 0,
+##            },
+##        },
      'jamb_is_admitted': {
         'type': 'CPS Boolean Field',
@@ -52,8 +52,200 @@
         },
     },
-##    'jamb_where_admitted': {
+    'faculty': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+            'acl_read_permissions': '',
+            'acl_read_roles': '',
+            'acl_read_expr': '',
+            'acl_write_permissions': '',
+            'acl_write_roles': '',
+            'acl_write_expr': '',
+            'read_ignore_storage': False,
+            'read_process_expr': '',
+            'read_process_dependent_fields': (),
+            'write_ignore_storage': False,
+            'write_process_expr': '',
+        },
+    },
+}
+#
+###)
+
+student_personal_schema = { ###(
+##   'allow_discussion': {
+##        'type': 'CPS Int Field',
+##        'data': {
+##            'default_expr': 'python:0',
+##            'is_searchabletext': 0,
+##            },
+##        },
+     'firstname': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+    'middlename': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'lastname': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'sex': {
+        'type': 'CPS Boolean Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'birthday': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'age': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'state': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+}
+###)
+
+jamb_schema = { ###(
+   'allow_discussion': {
+        'type': 'CPS Int Field',
+        'data': {
+            'default_expr': 'python:0',
+            'is_searchabletext': 0,
+            },
+        },
+    'reg_nr': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+        },
+    },
+    'admission_sc_id': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'admission_sc_pin': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'admission_sc_pin_usage': {
+        'type': 'CPS Int Field',
+        'data': {
+            'default_expr': 'python:0',
+            'is_searchabletext': False,
+            },
+    },
+     'firstname': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+    'middlename': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'lastname': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+    'age': {
+        'type': 'CPS Int Field',
+        'data': {
+            'default_expr': 'python:20',
+            'is_searchabletext': False,
+        },
+    },
+    'sex': {
+        'type': 'CPS Boolean Field',
+        'data': {
+            'default_expr': 'python:0',
+            'is_searchabletext': False,
+        },
+    },
+    'state': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': False,
+        },
+    },
+    'exam_results': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+        },
+    },
+    'aggregate': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': False,
+        },
+    },
+    'faculty': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': False,
+        },
+    },
+    'listing_date': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+##    '2nd_choice': { ###(
 ##        'type': 'CPS String Field',
 ##        'data': {
-##            'default_expr': 'string:Lagos',
+##            'default_expr': 'string:',
+##            'is_searchabletext': False,
+##            'acl_read_permissions': '',
+##            'acl_read_roles': '',
+##            'acl_read_expr': '',
+##            'acl_write_permissions': '',
+##            'acl_write_roles': '',
+##            'acl_write_expr': '',
+##            'read_ignore_storage': False,
+##            'read_process_expr': '',
+##            'read_process_dependent_fields': (),
+##            'write_ignore_storage': False,
+##            'write_process_expr': '',
+##        },
+##    },
+##    '3rd_choice': {
+##        'type': 'CPS String Field',
+##        'data': {
+##            'default_expr': 'string:',
 ##            'is_searchabletext': True,
 ##            'acl_read_permissions': '',
@@ -70,291 +262,7 @@
 ##        },
 ##    },
-    'faculty': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-}
-#
-###)
-
-student_personal_schema = { ###(
-   'allow_discussion': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': 0,
-            },
-        },
-     'firstname': {
-        'type': 'CPS String Field',
-        'data': {
-            'is_searchabletext': 1,
-        },
-    },
-    'middlename': {
-        'type': 'CPS String Field',
-        'data': {
-            'is_searchabletext': 1,
-        },
-    },
-     'lastname': {
-        'type': 'CPS String Field',
-        'data': {
-            'is_searchabletext': 1,
-        },
-    },
-     'sex': {
-        'type': 'CPS Boolean Field',
-        'data': {
-            'is_searchabletext': 1,
-        },
-    },
-     'birthday': {
-        'type': 'CPS DateTime Field',
-        'data': {
-            'is_searchabletext': 1,
-        },
-    },
-}
-#
-###)
-
-jamb_schema = { ###(
-   'allow_discussion': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': 0,
-            },
-        },
-    'reg_nr': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'admission_sc_id': {
-        'type': 'CPS String Field',
-        'data': {
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'admission_sc_pin': {
-        'type': 'CPS String Field',
-        'data': {
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'admission_sc_pin_usage': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': False,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'name': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'age': {
-        'type': 'CPS Int Field',
-        'data': {
-            'default_expr': 'python:20',
-            'is_searchabletext': False,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'sex': {
-        'type': 'CPS Boolean Field',
-        'data': {
-            'default_expr': 'python:0',
-            'is_searchabletext': False,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'state_of_origin': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'exam_results': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    'aggregate': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': False,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    '2nd_choice': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': False,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-    '3rd_choice': {
-        'type': 'CPS String Field',
-        'data': {
-            'default_expr': 'string:',
-            'is_searchabletext': True,
-            'acl_read_permissions': '',
-            'acl_read_roles': '',
-            'acl_read_expr': '',
-            'acl_write_permissions': '',
-            'acl_write_roles': '',
-            'acl_write_expr': '',
-            'read_ignore_storage': False,
-            'read_process_expr': '',
-            'read_process_dependent_fields': (),
-            'write_ignore_storage': False,
-            'write_process_expr': '',
-        },
-    },
-}
+###)
+}
+
 
 ###)
Index: waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPTypes.py	(revision 57)
@@ -53,7 +53,6 @@
                  'action': 'folder_localrole_form',
                  'permissions': (ChangePermissions,)},
-    )
-}
-
+                 )
+        }
 ###)
 
@@ -63,6 +62,6 @@
     'content_icon': 'students_folder.gif',
     'content_meta_type': 'StudentsFolder',
-    'product': 'WAeUP',
-    'factory': 'addStudentsFolder',
+    'product': 'CPSDefault',
+    'factory': 'addFolder',
     'immediate_view': 'folder_view',
     'global_allow': 1,
@@ -79,11 +78,19 @@
     'cps_section_wf': 'waeup_section_wf',
     'actions': ({'id': 'view',
-                 'name': 'action_view',
-                 'action': 'student_folder_view',
-                 'permissions': (View,)},
-                {'id': 'new_content',
-                 'name': 'action_new_content',
-                 'action': 'folder_factories',
-                 'permissions': (AddPortalContent,)},
+                 'name': 'Students',
+                 'action': 'students_folder_view',
+                 'permissions': (View,)},
+                {
+                'id'        : 'add_content',
+                'name'      : 'Add Content',
+                'action'    : 'string:${object/absolute_url}/folder_factories',
+                'condition' : 'python: member and "Manager" in member.getRoles()',
+                'permissions': (AddPortalContent,)},
+                {
+                'id'        : 'add_jamb',
+                'name'      : 'Add Student JAMB',
+                'action'    : 'string:${object/absolute_url}/create_jamb',
+                'condition' : 'python: member and "StudentManager" in member.getGroups()',
+                'permissions': (AddPortalContent,)},
                 {'id': 'contents',
                  'name': 'action_folder_contents',
@@ -97,6 +104,5 @@
                  'name': 'action_metadata',
                  'action': 'cpsdocument_metadata',
-                 'condition': 'not:portal/portal_membership/isAnonymousUser',
-                 'permissions': (View,)},
+                 'permissions': (ModifyPortalContent,)},
                 {'id': 'localroles',
                  'name': 'action_local_roles',
@@ -113,10 +119,7 @@
     'content_icon': 'student.gif',
     'content_meta_type': 'Student',
-    'product': 'CPSDocument',
-    'factory': 'addCPSDocument',
+    'product': 'WAeUP',
+    'factory': 'addStudent',
     'immediate_view': 'cpsdocument_view',
-    #'product': 'WAeUP',
-    #'factory': 'addStudent',
-    #'immediate_view': 'student_view',
     'global_allow': True,
     'filter_content_types': True,
@@ -130,7 +133,7 @@
     'flexible_layouts': (),
     'layout_clusters': ['metadata:metadata'],
-    'cps_workspace_wf': 'waeup_workspace_wf',
-    'cps_section_wf': 'waeup_section_wf',
-    'actions': (
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions_add': (
          {'id': 'view',
           'name': 'action_view',
@@ -141,26 +144,5 @@
           'category': 'object',
           'visible': True,},
-         {'id': 'new_content',
-          'name': 'Add Data',
-          'action': 'string:${object_url}/folder_factories',
-          'condition': "python:1 or len(object.contentItems()) == 0 ",
-          'permission': ('Modify portal content',),
-          'category': 'object',
-          'visible': True,},
-         {'id': 'contents',
-          'name': 'action_folder_contents',
-          'action': 'string:${object_url}/folder_contents',
-          'condition': "python:1 or object.getTypeInfo().cps_proxy_type != 'document'",
-          'permission': ('Modify portal content',),
-          'category': 'object',
-          'visible': True,},
-         {'id': 'edit',
-          'name': 'action_edit',
-          'action': 'string:${object_url}/cpsdocument_edit_form',
-          'condition': '',
-          'permission': ('Modify portal content',),
-          'category': 'object',
-          'visible': True,},
-    )
+          )
 }
 
@@ -273,4 +255,52 @@
 ###)
 
+faculty_folder_type = { ###(
+    'title': 'WAeUP Folder for faculties',
+    'description': 'The WAeUP Faculties Folder',
+    'content_icon': '',
+    'content_meta_type': 'FacultiesFolder',
+    'product': 'CPSDefault',
+    'factory': 'addFolder',
+    'immediate_view': 'folder_view',
+    'global_allow': 1,
+    'filter_content_types': 1,
+    'allowed_content_types': ('Faculty'),
+    '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,)},
+                 )
+}
+###)
+
 types = {}
 types['University'] = university_type
Index: waeup_product/trunk/skins/waeup_default/getWAeUPVocabularies.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPVocabularies.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPVocabularies.py	(revision 57)
@@ -2,6 +2,76 @@
 # $Id$
 """Return custom vocabularies."""
+##'xxx_voc': {
+##        'type': 'CPS Vocabulary',
+##        'data': {'tuples': (
+##            ('', "", ''),
+##            )},
+##        },
+##vocabluaries['xxx'] = xxx_voc
 
 vocabularies = {}
 
+nigerian_states_voc = {
+        'type': 'CPS Vocabulary',
+        'data': {'tuples': (
+            ('abia', "Abia", ''),
+            ('adam', "Adamawa", ''),
+            ('akwa', "Akwa Ibom", ''),
+            ('anam', "Anambra", ''),
+            ('bauchi', "Bauchi", ''),
+            ('baye', "Bayelsa", ''),
+            ('benu', "Benue", ''),
+            ('born', "Borno", ''),
+            ('cro', "Cross River", ''),
+            ('delt', "Delta", ''),
+            ('ebon', "Ebonyi", ''),
+            ('edo', "edo", ''),
+            ('ekit', "Ekiti", ''),
+            ('enug', "Enugu", ''),
+            ('gomb', "Gombe", ''),
+            ('imo', "Imo", ''),
+            ('jiga', "Jigawa", ''),
+            ('kad', "Kaduna", ''),
+            ('kano', "Kano", ''),
+            ('kats', "Katsina", ''),
+            ('keb', "Kebbi", ''),
+            ('kogi', "Kogi", ''),
+            ('kwar', "Kwara", ''),
+            ('lag', "Lagos", ''),
+            ('nasa', "Nasawara", ''),
+            ('nige', "Niger", ''),
+            ('ogun', "Ogun", ''),
+            ('ondo', "Ondo", ''),
+            ('osun', "Osun", ''),
+            ('oyo', "oyo", ''),
+            ('plat', "Plateau", ''),
+            ('riv', "Rivers", ''),
+            ('sok', "Sokoto", ''),
+            ('tar', "Taraba", ''),
+            ('yobe', "Yobe", ''),
+            ('zam', "Zamfara", ''),
+            ('fct', "FCT", ''),
+            )},
+        }
+vocabularies['nigerian_states'] = nigerian_states_voc
+
+faculties_voc = {
+        'type': 'CPS Vocabulary',
+        'data': {'tuples': (
+            ('agri', "Agriculture", ''),
+            ('arts', "Arts", ''),
+            ('bmed', "Basic Med Sciences", ''),
+            ('edu', "Education", ''),
+            ('eng', "Engeneering", ''),
+            ('law', "Law", ''),
+            ('phar', "Pharmacy", ''),
+            ('sod', "School of Denistry", ''),
+            ('som', "School of Medicine", ''),
+            ('sci', "Science", ''),
+            ('soc', "Social Science", ''),
+            )},
+        }
+
+vocabularies['faculties'] = faculties_voc
+
 return vocabularies
Index: waeup_product/trunk/skins/waeup_default/getWAeUPWidgets.py
===================================================================
--- waeup_product/trunk/skins/waeup_default/getWAeUPWidgets.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_default/getWAeUPWidgets.py	(revision 57)
@@ -5,5 +5,5 @@
             },
         'Scratchcard Pin Widget': {
-            'type': 'StudentId Widget Type',
+            'type': 'Scratchcard Pin Widget Type',
             'data': {},
             },
Index: waeup_product/trunk/skins/waeup_student/create_jamb.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/create_jamb.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_student/create_jamb.py	(revision 57)
@@ -50,5 +50,11 @@
     context.notifyCPSDocumentCreation(ob=jamb)
     psm = 'Student created'
-    pr.addMember(s_id, 'UnSeT',roles=('Member','CPSMember'))
+    noCPSMember = False
+    try:
+        pr.addMember(s_id, 'UnSeT',roles=('Member','CPSMember'))
+    except:
+        noCPSMember = True
+    if noCPSMember:
+        pr.addMember(s_id, 'UnSeT',roles=('Member',))
     groups = context.portal_directories.groups
     gm = list(groups.getEntry('Students')['members'])
@@ -56,5 +62,5 @@
     groups.editEntry({'group': 'Students', 
                       'members': gm})  
-    return context.student_folder_view(psm=psm)
+    return context.students_folder_view_manager(psm=psm)
 ##    return context.create_jamb_form(rendered = res,
 ##                                 psm = psm,
Index: waeup_product/trunk/skins/waeup_student/process_waeup_login.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/process_waeup_login.py	(revision 56)
+++ waeup_product/trunk/skins/waeup_student/process_waeup_login.py	(revision 57)
@@ -27,5 +27,12 @@
 pkw = {}
 pkw['sex'] = getattr(jamb,'sex')
-pkw['lastname'] = getattr(jamb,'name')
+pkw['firstname'] = getattr(jamb,'firstname')
+pkw['middlename'] = getattr(jamb,'middlename')
+pkw['lastname'] = getattr(jamb,'lastname')
+pkw['aggregate'] = getattr(jamb,'aggregate')
+pkw['faculty'] = getattr(jamb,'faculty')
+pkw['age'] = getattr(jamb,'age')
+pkw['state'] = getattr(jamb,'state')
+
 pd.edit(mapping=pkw)
 context.notifyCPSDocumentCreation(ob=pd)
Index: waeup_product/trunk/skins/waeup_student/student_folder_view.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/student_folder_view.py	(revision 56)
+++ 	(revision )
@@ -1,10 +1,0 @@
-##parameters=REQUEST=None,psm=None,groups=None
-
-# $Id$
-
-"""Default view for the forum. If post_id is not None, post with id = <post_id>
-will be displayed, otherwise first post will be displayed."""
-
-admin = "SectionManager" in context.portal_membership.getAuthenticatedMember().getRolesInContext(context)
-
-return context.student_folder_view_main(admin = admin,psm=psm,groups=groups)
Index: waeup_product/trunk/skins/waeup_student/students_folder_view.py
===================================================================
--- waeup_product/trunk/skins/waeup_student/students_folder_view.py	(revision 57)
+++ waeup_product/trunk/skins/waeup_student/students_folder_view.py	(revision 57)
@@ -0,0 +1,15 @@
+##parameters=REQUEST=None,psm=None,groups=None
+
+# $Id$
+
+"""Default view for the forum. If post_id is not None, post with id = <post_id>
+will be displayed, otherwise first post will be displayed."""
+
+
+member = context.portal_membership.getAuthenticatedMember()
+if member:
+    if 'Student' in member.getGroups():
+        return context.students_folder_view_students(psm=psm,groups=groups)
+    if 'StudentsManager' in member.getGroups():
+        return context.students_folder_view_manager(psm=psm,groups=groups)
+return context.students_folder_view_anon(psm=psm,groups=groups)
Index: waeup_product/trunk/skins/waeup_student/students_folder_view_anon.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/students_folder_view_anon.pt	(revision 57)
+++ waeup_product/trunk/skins/waeup_student/students_folder_view_anon.pt	(revision 57)
@@ -0,0 +1,41 @@
+<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="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="student_folder here/getContent;
+               items here/contentValues"
+               >
+    <span tal:condition="python: mtool.isAnonymousUser()"> 
+      Please login or <a href="" tal:attributes="href string:${context/absolute_url}/check_admission">check you Jambadmission</a>.
+    </span>
+    <span tal:condition="python: member and 'StudentManager' in member.getGroups()"> 
+      <table cellspacing="0" cellpadding="0">
+        <tal:block condition="python: len(items)">
+          <tr tal:repeat="item items">
+            <td colspan="1">
+              <a href="student" 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 Students yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: waeup_product/trunk/skins/waeup_student/students_folder_view_manager.pt
===================================================================
--- waeup_product/trunk/skins/waeup_student/students_folder_view_manager.pt	(revision 57)
+++ waeup_product/trunk/skins/waeup_student/students_folder_view_manager.pt	(revision 57)
@@ -0,0 +1,41 @@
+<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="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="student_folder here/getContent;
+               items here/contentValues"
+               >
+    <span tal:condition="python: mtool.isAnonymousUser()"> 
+      Please login or <a href="" tal:attributes="href string:${context/absolute_url}/check_admission">check you Jambadmission</a>.
+    </span>
+    <span tal:condition="python: member and 'StudentManager' in member.getGroups()"> 
+      <table cellspacing="0" cellpadding="0">
+        <tal:block condition="python: len(items)">
+          <tr tal:repeat="item items">
+            <td colspan="1">
+              <a href="student" 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 Students yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
