Index: /WAeUP_SRP/branches/srpp_branch/Accommodation.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Accommodation.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Accommodation.py	(revision 276)
@@ -0,0 +1,81 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+
+from Products.CMFCore.utils import UniqueObject, 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.CPSDocument.CPSDocument import CPSDocument 
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
+
+accofolder_fti = { ###(
+    'title': 'WAeUP AccoFolder',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'AccoFolder',
+    'factory': 'addAccoFolder',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Accommodation',),
+    'allow_discussion': False,
+}
+###)
+
+class AccoFolder(CPSDocument): ###(
+    """
+    WAeUP AccoFolder containing Accommodation halls 
+    """
+    meta_type = 'AccoFolder'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+
+InitializeClass(AccoFolder)
+
+def addAccoFolder(container, id, REQUEST=None, **kw):
+    """Add a AccoFolder."""
+    ob = AccoFolder(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+accommodation_fti = { ###(
+    'title': 'WAeUP Accommodation',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Accommodation',
+    'factory': 'addAccommodation',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+}
+###)
+
+class Accommodation(CPSDocument): ###(
+    """
+    WAeUP Accommodation containing Departments 
+    """
+    meta_type = 'Accommodation'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        heading = getattr(content,'heading',None)
+        if heading is None:
+            return self.title
+        return heading
+    
+InitializeClass(Accommodation)
+
+def addAccommodation(container, id, REQUEST=None, **kw):
+    """Add a Accommodation."""
+    ob = Accommodation(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
Index: /WAeUP_SRP/branches/srpp_branch/CHANGES
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/CHANGES	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/CHANGES	(revision 276)
@@ -0,0 +1,12 @@
+Requires:
+~~~~~~~~~
+-
+New features:
+~~~~~~~~~~~~~
+-
+Bug fixes:
+~~~~~~~~~~
+-
+New internal features:
+~~~~~~~~~~~~~~~~~~~~~~
+-
Index: /WAeUP_SRP/branches/srpp_branch/Extensions/install.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Extensions/install.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Extensions/install.py	(revision 276)
@@ -0,0 +1,671 @@
+#-*- mode: python; mode: fold -*-
+# $Id$
+from Products.ExternalMethod.ExternalMethod import ExternalMethod
+from Products.CPSInstaller.CPSInstaller import CPSInstaller
+from Products.CMFCore.CMFCorePermissions import View, ModifyPortalContent,AccessContentsInformation
+from Products.WAeUP.WAeUPPermissions import UniversityManage, StudentManage,FacultyManage,\
+                                            DepartmentManage,CourseManage
+try:
+  from Products.CPSSubscriptions.permissions import CanNotifyContent
+  CPSSubscriptions = True
+except ImportError:
+  CPSSubscriptions = False
+try:
+  from Products.CPSForum.CPSForumPermissions import ForumManageComments
+  CPSForum = True
+except ImportError:
+  CPSForum = False
+
+from Products.WAeUP.Students import addStudentsFolder
+
+SRPP_ID = "demouni"
+SRPP_TITLE = "Demo University"
+
+class WAeUPInstaller(CPSInstaller):
+    """
+    WAeUP Installer
+    """
+    product_name = "WAeUP"
+
+    def install(self,portal):
+        "install"
+        log = []
+        prlog = log.append
+
+        def pr(msg, prlog=prlog):
+            prlog('%s<br>' % msg)
+
+        product_name = self.product_name
+        pr("Starting %(product_name)s install" % vars() )
+
+        # Roles and Permissions ###(
+        #
+        self.verifyRoles((
+            # A role that can manage the University.
+            'UniversityManager',
+            # A role that can manage the StudentsRecords.
+            'StudentManager',
+            # A role that can manage a Faculty.
+            'FacultyManager',
+            # A role that can manage a department.
+            'DepartmentManager',
+            # A role that can manage a Course.
+            'CourseManager',
+            # The Student Role
+            'Student',
+        ))
+        waeup_perms = {
+            UniversityManage:
+                ('Manager', 'SectionManager','UniversityManager',
+                 ),
+            StudentManage:
+                ('Manager', 'SectionManager','UniversityManager', 'StudentManager'
+                 ),
+            FacultyManage:
+                ('Manager', 'SectionManager','UniversityManager', 'FacultyManager'
+                 ),
+            DepartmentManage:
+                ('Manager', 'SectionManager','UniversityManager', 'DepartmentManager'
+                 ),
+            CourseManage:
+                ('Manager', 'SectionManager','UniversityManager', 'CourseManager'
+                 ),
+        }
+        self.setupPortalPermissions(waeup_perms)
+        ###)
+
+        # external methods ###(
+        #
+        ext_methods = ( { 'id': 'waeup_migrate',
+                          'title': 'WAeUP (migrate from an earlier version)',
+                          'script': 'WAeUP.install',
+                          'method': 'migrate',
+                          'protected': 1,
+                        },
+                      )
+        portal_objectIds = portal.objectIds()
+        for meth in ext_methods:
+            method = meth['id']
+            if method in portal_objectIds:
+                portal._delObject(method)
+            pr('Creating %s External Method' % method)
+            ext_method = ExternalMethod(method,
+                                        meth['title'],
+                                        meth['script'],
+                                        meth['method'])
+            portal._setObject(method, ext_method)
+            if method in portal_objectIds:
+                manage_perms = portal[method].manage_permission
+                if meth['protected']:
+                    pr("Protecting %s" % method)
+                    manage_perms(View, roles=['Manager'], acquire=0)
+                    manage_perms(AccessContentsInformation, roles=['Manager'], acquire=0)
+                else:
+                    manage_perms(View, roles=['Manager'], acquire=1)
+        ###)
+
+        ##########################################
+        # Actions
+        ##########################################
+        waeup_ptypes = "'University','StudentsFolder','Student','Jamb','Faculty','Department','Course'"
+        waeup_ptypes += ",'AccoFolder','Accommodation','StudentPersonal','AcademicsFolder'"
+        waeup_ptypes += ",'StudyLevel','Semester','CourseTicket','StudentDocuments','StudentEligibility'"
+        if CPSSubscriptions: ###(
+
+            ptypes = "('Portal', 'CPSMailAccess Message', 'CPSMailAccess Box', 'CPSMailAccess Folder',"\
+                     + waeup_ptypes + ")"
+            condition = "object.portal_type not in %s" % ptypes
+
+            action = {'id' : 'notify_content',
+                      'name' : 'action_notify_content',
+                      'action' : 'string:${object_url}/content_notify_email_form',
+                      'condition' : 'python:%s' % condition,
+                      'permission' :  (CanNotifyContent,),
+                      'category' : 'object',
+                      }
+            self.deleteActions({'portal_subscriptions': ['notify_content',]})
+            self.verifyAction('portal_subscriptions', **action)
+        if CPSForum:
+            condition = "object.portal_type not in (%s)" % waeup_ptypes
+
+            action = {'id' : 'activate_comments',
+                      'name': 'action_activate_comments',
+                      'action': 'string:${object/absolute_url}/set_comment_mode?mode=1',
+                      'condition' : 'python:%s' % condition,
+                      'permission': (ForumManageComments,),
+                      'category' : 'object',
+                      }
+            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)
+
+###)
+
+        ##########################################
+        # main_tab actions ###(
+        ##########################################
+        path = "/sections/%(SRPP_ID)s" % globals()
+        actions = ( { 'tool'      : 'portal_actions',
+                        'id'        : 'student_administration',
+                        'name'      : 'Students',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/students')",
+                        #'action'    : 'string:$portal_url%(path)s/students' % vars(),
+                        'permission': (View, ),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+                      { 'tool'      : 'portal_actions',
+                        'id'        : 'academics',
+                        'name'      : 'Academics',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/academics')",
+                        #'action'    : 'string:${portal_url}/academics',
+                        'permission': (UniversityManage),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+                      { 'tool'      : 'portal_actions',
+                        'id'        : 'accomodation',
+                        'name'      : 'Accommodation',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/accommodation')",
+                        #'action'    : 'string:${portal_url}/accommodation',
+                        'permissions': (UniversityManage),
+                        #'permissions': (ModifyPortalContent,UniversityManage,StudentManage),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+                      { 'tool'      : 'portal_actions',
+                        'id'        : 'chat',
+                        'name'      : 'Chat',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/chat')",
+                        #'action'    : 'string:${portal_url}/accommodation',
+                        'permissions': (View),
+                        #'permissions': (ModifyPortalContent,UniversityManage,StudentManage),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+##                      { 'tool'      : 'portal_actions', ###(
+##                        'id'        : 'add_jamb',
+##                        'name'      : 'Add Student JAMB',
+##                        'action'    : 'string:${object/absolute_url}/create_jamb',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("StudentsFolder",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_faculty',
+##                        'name'      : 'Add New Faculty',
+##                        'action'    : 'string:${object/absolute_url}/addFaculty',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("University",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_department',
+##                        'name'      : 'Add New Department',
+##                        'action'    : 'string:${object/absolute_url}/addDepartment',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("Faculty",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_course',
+##                        'name'      : 'Add New Course',
+##                        'action'    : 'string:${object/absolute_url}/addCourse',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("Department",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_personal',
+##                        'name'      : 'Add personal Data',
+##                        'action'    : 'string:${object/absolute_url}/create_personal_form',
+##                        'permission': (),
+##                        'condition' : 'python: 0 and member and not here.portal_type in ("Jamb","StudentsFolder") and not "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'edit_jamb',
+##                        'name'      : 'Edit Jamb Data',
+##                        'action'    : 'cpsdocument_edit_form',
+##                        'permission': ( ),
+##                        'condition' : 'python: member and here.portal_type in ("Student",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+###)
+
+                    )
+        self.deleteActions({'portal_actions': [action['id'] for action in actions]})
+        self.verifyActions(actions)
+        ##########################################
+###)
+
+        # skins
+        ##########################################
+        pr("Verifying %(product_name)s skinss" % vars())
+        wskins = { 'waeup_default' : 'Products/WAeUP/skins/waeup_default',
+                   'waeup_faculty' : 'Products/WAeUP/skins/waeup_faculty',
+                   'waeup_student' : 'Products/WAeUP/skins/waeup_student',
+                 }
+        self.verifySkins(wskins)
+        self.resetSkinCache()
+
+        # Themes ###(
+        #
+        # Importing portal themes
+##        theme_container = getattr(portal, 'portal_themes')
+##            # the first theme in each category is the default theme.
+##        themes_list = {'WAeUP':    ({'id': 'waeup_plain_theme',
+##                                  'file': 'waeup_plain_theme.zexp',
+##                                  },
+##                                  {'id': 'waeup_management_theme',
+##                                   'file': 'waeup_management_theme.zexp',
+##                                  },
+##                                 ),
+##                      }
+##
+##
+##        theme_ids = theme_container.objectIds()
+##        theme_container.manage_delObjects(theme_ids)
+##        target_themes = themes_list[Target]
+##        for theme in target_themes:
+##            pr(" Importing %s theme" % theme['id'])
+##            zexppath = os.path.join(zexpdir, theme['file'])
+##            try:
+##                theme_container._importObjectFromFile(zexppath)
+##            except:
+##                pr("    Could not import theme  %s" % theme['id'])
+##
+##        # set the first theme in the list as the default one.
+##        theme_container.setDefaultTheme(target_themes[0]['id'])
+###)
+
+
+        ##########################################
+        # portal types
+        ##########################################
+        dtypes = portal.getWAeUPTypes()
+        self.verifyFlexibleTypes(dtypes)
+        self.allowContentTypes('University', ('Workspace','Section',))
+        ##########################################
+        # Schemas
+        ##########################################
+        pr("Verifying %(product_name)s schemas" % vars())
+        self.verifySchemas(portal.getWAeUPSchemas())
+        ##########################################
+        # widgets
+        ##########################################
+        pr("Verifying %(product_name)s widgets" % vars())
+        self.verifyWidgets(portal.getWAeUPWidgets())
+        ##########################################
+        # layouts
+        ##########################################
+        pr("Verifying %(product_name)s layouts" % vars())
+        self.verifyLayouts(portal.getWAeUPLayouts())
+        ##########################################
+        # Vocabularies
+        ##########################################
+        pr("Verifying %(product_name)s vocabularies" % vars())
+        self.verifyVocabularies(portal.getWAeUPVocabularies())
+        ##########################################
+        # Groups
+        ##########################################
+
+        self.installCustomWorkflows()
+        self.verifyWorkflowAssociation()
+
+        pr("End of specific %(product_name)s install" % vars())
+        #return '\n'.join(log)
+        self.finalize()
+
+
+    def verifyPortlets(self, portlets=(), object=None): ###(
+        """Verify the existence of given portet in the object's portlet
+        container. If not found, a portlet is instantiated.
+        Existing portlets are not affected.
+
+        'portlets' is a tuple with the dictionaries given by the export tab
+        as entries.
+        The default object is the portal itself.
+
+        return the list a new portlet ids.
+        """
+
+        if object is None:
+            object = self.portal
+
+        self.log('Verifying portlets on %s' % object.absolute_url(relative=1))
+
+        portlet_container = self.getPortletContainer(object, create=1)
+
+        ttool = self.getTool('portal_types')
+
+        returned = []
+        for new_portlet in portlets:
+            existing_portlets = portlet_container.listPortlets()
+            updated = 0
+
+            # Check if the portlet needs an update
+            identifier = new_portlet.get('identifier')
+            if identifier:
+                for portlet in existing_portlets:
+                    if identifier == portlet.identifier:
+                        self.log(" Update of portlet: %s" % portlet)
+                        portlet.edit(**new_portlet)
+                        portlet_id = portlet.getId()
+                        updated = 1
+                        continue
+            slot = new_portlet.get('slot')
+            if slot:
+                for portlet in existing_portlets:
+                    if slot == portlet.slot:
+                        self.log(" Update of portlet: %s" % portlet)
+                        portlet.edit(**new_portlet)
+                        portlet_id = portlet.getId()
+                        updated = 1
+                        continue
+
+            if not updated:
+                self.log("   Creation of portlet: %s" % new_portlet)
+                portlet_id = self.portal.portal_cpsportlets.createPortlet(
+                    ptype_id=new_portlet['type'],
+                    context=object,
+                    **new_portlet)
+            if portlet_id not in returned:
+                returned.append(portlet_id)
+        return returned
+    ###)
+
+    def installCustomWorkflows(self): ###(
+        """Installs custom workflows
+        """
+        from Products.WAeUP.Workflows.WAeUPWorkflow import \
+             waeupWorkflowsInstall
+
+        waeupWorkflowsInstall(self.context)
+
+###)
+
+    def verifyWorkflowAssociation(self): ###(
+        """Verify workflow association
+        """
+        ws_chains = {
+                      'Student': 'waeup_workspace_wf',
+                      'Jamb': 'waeup_workspace_wf',
+                      }
+
+        se_chains = { 'University': 'waeup_section_wf',
+                      'AcademicsFolder': 'waeup_section_wf',
+                      'StudentsFolder': 'waeup_student_wf',
+                      'Student': 'waeup_student_wf',
+                      'StudentPersonal': 'waeup_student_wf',
+                      'StudentEligibility': 'waeup_student_wf',
+                      'StudentDocuments': 'waeup_student_wf',
+                      'Jamb': 'waeup_section_wf',
+                      'ScratchCard': 'waeup_section_wf',
+                      'Faculty': 'waeup_section_wf',
+                      'Department': 'waeup_section_wf',
+                      'Course': 'waeup_section_wf',
+                      'StudyLevel': 'waeup_student_wf',
+                      'Semester': 'waeup_student_wf',
+                      'CourseTicket': 'waeup_student_wf',
+                      'AccoFolder': 'waeup_section_wf',
+                      'Accommodation': 'waeup_section_wf',
+                      }
+
+        self.verifyLocalWorkflowChains(self.portal['workspaces'],
+                                       ws_chains,
+                                       destructive=1)
+        self.verifyLocalWorkflowChains(self.portal['sections'],
+                                       se_chains,
+                                       destructive=1)
+    ###)
+
+    def verifyFaculties(self, academics): ###(
+        """install Universityspecific Faculies with Departments"""
+        faculties = [
+##                     {'id': 'agri', ###(
+##                      'Title': 'Agriculture',
+##                      'departments': [
+##                                     { 'id': 'dep1', ###(
+##                                       'Title': 'One',
+##                                     },
+##                                     ],
+##                      },###)
+                      { 'id': 'science',
+                      'Title': 'Science',
+                      'departments': [
+                                     { 'id': 'bio', ###(
+                                       'Title': 'Biochemistry',
+                                     },
+                                     { 'id': 'bot',
+                                       'Title': 'Botany',
+                                     },
+                                     { 'id': 'che',
+                                       'Title': 'Chemistry',
+                                     },
+                                     { 'id': 'com',
+                                       'Title': 'Computer Science',
+                                     },
+                                     { 'id': 'geo',
+                                       'Title': 'Geologie',
+                                     },
+                                     { 'id': 'mat',
+                                       'Title': 'Mathematics',
+                                     },
+                                     { 'id': 'mic',
+                                       'Title': 'Microbiology',
+                                     },
+                                     { 'id': 'opt',
+                                       'Title': 'Optometry',
+                                     },
+                                     { 'id': 'phy',
+                                       'Title': 'Physics',
+                                     },
+                                     { 'id': 'zoo',
+                                       'Title': 'Zoology',
+                                     },
+                                     ],
+                      },###)
+                     ]###)
+        self.log('Verifying Faculties in %s' % academics.absolute_url(relative=1))
+        for faculty in faculties:
+            fid = faculty['id']
+            f = getattr(academics,fid,None)
+            self.log('Checking Faculty %(id)s = %(Title)s' % faculty)
+            if f is None:
+                self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
+                academics.invokeFactory('Faculty', fid)
+                f = getattr(academics,fid)
+                f.getContent().edit(mapping=faculty)
+            for department in faculty['departments']:
+                self.log('Checking Department %(id)s = %(Title)s' % department)
+                did = department['id']
+                d = getattr(f,did,None)
+                if d is None:
+                    self.log('Creating Department %(id)s = %(Title)s' % department)
+                    f.invokeFactory('Department', did)
+                    d = getattr(f,did)
+                    d.getContent().edit(mapping=department)
+    ###)
+
+
+
+def install(self): ###(
+    installer = WAeUPInstaller(self)
+    installer.install(self)
+    dirtool = getattr(self,'portal_directories')
+    groups = dirtool.groups
+    for delEntry in ('StudentManager',):
+        if delEntry in groups.listEntryIds():
+            groups.deleteEntry(delEntry)
+    for newEntry in ('Students',):
+        if newEntry not in groups.listEntryIds():
+            groups.createEntry({'group': newEntry,
+                                'members': []})
+    #groups.manage_setLocalGroupRoles(groupid = 'StudentManager',roles=('Manager',))
+    #groups.manage_setLocalGroupRoles(groupid = 'Students',roles=('Contributor',))
+    sections = getattr(self,'sections')
+    waeup = getattr(sections,SRPP_ID,None)
+    if not waeup:
+        sections.invokeFactory('University',SRPP_ID)
+        waeup = getattr(sections,SRPP_ID)
+        waeup.getContent().edit(mapping={'Title':SRPP_TITLE})
+        waeup.folder_localrole_add(member_ids=('group:Students',),
+                                            member_role='SectionReviewer',
+                                            )
+        waeup.invokeFactory('StudentsFolder','students')
+        students = getattr(waeup,'students').getContent()
+        students.edit(mapping={'Title':'Students'})
+        waeup.folder_localrole_add(member_ids=('group:Students',),
+                                            member_role='SectionReviewer',
+                                            )
+##        waeup.content_create(type_name='AcademicsFolder',title='academics')
+##        sections.waeup.folder_localrole_add(member_ids=('group:StudentManager',),
+##                                            member_role='SectionManager',
+##                                            )
+        waeup.students.manage_setLocalGroupRoles(groupid = 'Students',roles=('Contributor',))
+        waeup.invokeFactory('AcademicsFolder','academics', title='Academics')
+        academics = getattr(waeup,'academics').getContent()
+        academics.edit(mapping={'Title':'Academics'})
+        waeup.invokeFactory('AccoFolder','accommodation', title='Accommodation')
+        accommodation = getattr(waeup,'accommodation').getContent()
+        accommodation.edit(mapping={'Title':'Accommodation'})
+    academics = getattr(waeup,'academics',None)
+    if academics is None:
+        waeup.invokeFactory('AcademicsFolder','academics')
+        academics = getattr(waeup,'academics')
+        academics.getContent().edit(mapping={'Title':'Academics'})
+    installer.verifyFaculties(academics)
+    if not hasattr(waeup,'accommodation'):
+        waeup.invokeFactory('AccoFolder','accommodation')
+        accommodation = getattr(waeup,'accommodation').getContent()
+        accommodation.edit(mapping={'Title':'Accommodation'})
+    waeup.manage_setLocalGroupRoles(groupid = 'role:Anonymous',roles=('SectionReader',))
+    # portlets ###(
+    #
+    portlets = (
+##              {'identifier': 'waeup_main_tabs',
+##              'type': 'Custom Portlet',
+##              'slot': 'main_tabs',
+##              'order': 0,
+##              'render_method': 'portlet_main_navigation',
+##              'Title': 'main tabs',
+##              },
+              {#'identifier': 'waeup_breadcrumbs',
+              'type': 'Breadcrumbs Portlet',
+              'slot': 'waeup_breadcrumbs',
+              'first_item': 0,
+              'display_site_root': 0,
+              'Title': 'waeup_breadcrumbs',
+              'display': 'horizontal_trail',
+              'display_hidden_folders': 0,
+              'order': 0,
+              },
+              {#'identifier': 'waeup_main_tab_actions',
+              'type': 'Actions Portlet',
+              'slot': 'main_tabs',
+              'order': 0,
+              'categories': ['main_tabs',],
+              'Title': 'waep_main_tab_actions',
+              },
+              {#'identifier': 'waeup_object_actions',
+              'type': 'Actions Portlet',
+              'slot': 'waeup_object_actions',
+              'order': 0,
+              'categories': ['object',],
+              'Title': 'waep_manager_actions',
+              },
+              {#'identifier': 'waeup_left_top',
+              'type': 'Custom Portlet',
+              'slot': 'left_top',
+              'order': 0,
+              'render_method': 'portlet_session_info',
+              'Title': 'Session Info',
+              },
+            )
+    installer.verifyPortletContainer(waeup)
+    installer.verifyPortlets(portlets,waeup)
+
+###)
+    return installer.logResult()
+    ###)
+
+def migrate(self): ###(
+    "update data"
+    log = []
+    prlog = log.append
+
+    def pr(msg, prlog=prlog):
+        prlog('%s' % msg)
+
+    sections = getattr(self,'sections')
+    waeup = getattr(sections,SRPP_ID,None)
+    pr( "Start migrate")
+    pr("migrating Students")
+    students = getattr(waeup,'students')
+    pr("migrating courses")
+    academics = getattr(waeup,'academics')
+    for fac in [getattr(academics,f.id) for f in academics.contentValues(filter={'portal_type': ('Faculty',)})]:
+        pr("Faculty: %s" % fac.title_or_id())
+        for dep in [getattr(fac,d.id) for d in fac.contentValues(filter={'portal_type': ('Department',)})]:
+            pr("Department: %s" % dep.title_or_id())
+            for course in [getattr(dep,c.id) for c in dep.contentValues(filter={'portal_type': ('Course',)})]:
+                pr("Course: %s" % course.title_or_id())
+                content = course.getContent()
+                heading = getattr(content,'heading',course.id)
+                pr("heading = %(heading)s" % vars())
+                content.edit(mapping={'Title': heading})
+    pr("migrating halls")
+    for ac in [getattr(waeup,a.id) for a in waeup.contentValues(filter={'portal_type': ('AccoFolder',)})]:
+        for hall in [getattr(ac,h.id) for h in ac.contentValues(filter={'portal_type': ('Accommodation',)})]:
+            pr("Hall: %s" % hall.title_or_id())
+            content = hall.getContent()
+            heading = getattr(content,'heading',hall.id)
+            pr("heading = %(heading)s" % vars())
+            content.edit(mapping={'Title': heading})
+    return '\n'.join(log)
+
+###)
+
Index: /WAeUP_SRP/branches/srpp_branch/Extensions/install.py.260905
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Extensions/install.py.260905	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Extensions/install.py.260905	(revision 276)
@@ -0,0 +1,54 @@
+from Products.CPSInstaller.CPSInstaller import CPSInstaller
+from Products.CMFCore.CMFCorePermissions import View
+
+
+WAEUP_SKINS = { 'waeup_student' : 'Products/WAeUP/skins/waeup_student',
+                  }
+
+WAEUP_TYPES = { 'Student':
+                    { 'typeinfo_name': 'WAeUP: Student (Student)',
+                      'add_meta_type': 'Factory-based Type Information',
+                    },
+                  }
+
+WAEUP_ACTIONS = ( { 'tool'      : 'portal_actions',
+                        'id'        : 'jambadmission',
+                        'name'      : 'action_jambadmission',
+                        'action'    : 'string:${portal_url}/jambadmission_input_form',
+                        'permission': (View, ),
+                        'condition' : '',
+                        'category'  : 'global',
+                        'visible'   : 1,
+                      },
+                    )
+
+
+def install(self):
+    product_name = "WAeUP"
+    installer = CPSInstaller(self, product_name)
+    installer.log("Starting %(product_name)s install" % vars() )
+
+    installer.log("Verifying %(product_name)s permissions" % vars())
+    installer.verifySkins(WAEUP_SKINS)
+    installer.resetSkinCache()
+
+    installer.log("Verifying %(product_name)s schemas" % vars())
+    installer.verifySchemas(self.WAeUPSchemas())
+
+    installer.log("Verifying %(product_name)s layouts" % vars())
+    installer.verifyLayouts(self.WAeUPLayouts())
+    installer.verifyPortalTypes(WAEUP_TYPES)
+
+##    installer.log("Verifying %(product_name)s types" % vars())
+##    installer.verifyContentTypes(WAEUP_TYPES)
+
+    installer.log("Verifying %(product_name)s actions" % vars())
+    installer.verifyActions(WAEUP_ACTIONS) 
+    
+    # This installs the *.po files in the i18n directory of the WAeUPStudent
+    # product.
+    installer.log("Installing translations")
+    
+    installer.finalize()
+    installer.log("End of specific %(product_name)s install" % vars())
+    return installer.logResult()
Index: /WAeUP_SRP/branches/srpp_branch/Extensions/updateDirectories.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Extensions/updateDirectories.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Extensions/updateDirectories.py	(revision 276)
@@ -0,0 +1,95 @@
+from zLOG import LOG, DEBUG, INFO
+import re
+
+def update(self):
+
+    _log = []
+    def pr(bla, _log=_log):
+        if bla == 'flush':
+            return '\n'.join(_log)
+        _log.append(bla)
+        if (bla):
+            LOG('csvupdate:', INFO, bla)
+
+    pr("Directories update - started")
+    pr("")
+
+    portal = self.portal_url.getPortalObject()
+
+    csv_dir_name = 'csv'
+    csv_dir = getattr(portal,csv_dir_name)
+
+    members_file = 'Utilisateurs.csv'
+
+    try:
+        members_data = str(portal.restrictedTraverse("%s/%s" % (csv_dir_name, members_file)))
+    except KeyError:
+        members_data = ""
+        pr(" Warning: file %s not found. Directory members was not updated." % members_file)
+
+    if members_data:
+        members = []
+        pr("Updating Members directory")
+        member_schema_fields = ['id', 'password', 'givenName', 'sn', 'email', 'groups', 'roles']
+        lines = members_data.splitlines()
+       
+        CSV_SEPARATOR = ';'
+
+        for line in lines:
+            # Some items might contain the csv separator...
+            # Try to handle this gracefully, detecting separator
+            # followed by a space.
+           
+            member_items = line.split(CSV_SEPARATOR)
+
+            if member_items and not (len(member_items) == 1):
+                member_data = {}
+                for field in member_schema_fields:
+                    try:
+                        raw_field = member_items.pop(0).strip()
+                    except IndexError:
+                        raw_field = ''
+                        member_data['bad_entry'] = 1
+                    # Many fields are enclosed in double quotes 
+                    if raw_field and raw_field[0] == '"' and raw_field[-1] == '"':
+                        raw_field = raw_field[1:-1]
+                    member_data[field] = raw_field
+
+                member_data['confirm'] = member_data['password']
+                member_data['roles'] = member_data['roles'].capitalize()
+                if member_data['roles'] == 'Manager':
+                    member_data['roles'] = ('Manager', 'Member')
+                else:
+                    member_data['roles'] = ('Member',)
+                member_data['groups'] = tuple(member_data['groups'].split(','))
+
+                if not member_data.has_key('bad_entry'):
+                    # declare user as member of the portal
+                    members.append(member_data)
+                else:
+                    pr("** Bad entry detected **")
+                    pr("A data field might contain the csv separator not followed by a space.")
+                    pr("The id of this entry was %s."%member_data['id'])
+                    pr("The entry will NOT be added to the members directory.")
+
+
+        # create members in member directory
+        directory = portal.portal_directories.members
+        for member in members:
+            m_id = member.get('id')
+            pr('Directories update: checking entry '+m_id)
+            if not directory.hasEntry(m_id):
+                # member login does not exist, create
+                pr('Directories update:  creating entry '+m_id)
+                for gr in member['groups']:
+                    if not portal.portal_directories.groups.hasEntry(gr):
+                         portal.portal_directories.groups.createEntry({'group':gr})
+                directory.createEntry(member)
+            else:
+                # member login already exists
+                pr('Directories update:  entry '+m_id+' exists')
+    
+    pr("")
+    pr("Directories update - end")
+
+    return pr("flush")
Index: /WAeUP_SRP/branches/srpp_branch/Faculty.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Faculty.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Faculty.py	(revision 276)
@@ -0,0 +1,201 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+
+from Products.CMFCore.utils import UniqueObject, 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.CPSDocument.CPSDocument import CPSDocument 
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
+
+##class FacultyFolder(BaseBTreeFolder): ###(
+##    """
+##    WAeUP container for the various WAeUP containers data 
+##    """
+##    meta_type = 'Faculty Folder'
+##    portal_type = meta_type
+##    security = ClassSecurityInfo()
+##    
+##        
+##InitializeClass(FacultyFolder)
+##
+##def addFacultyFolder(container, id, REQUEST=None, **kw):
+##    """Add a Student."""
+##    ob = StudentsFolder(id, **kw)
+##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+#####
+#####)
+
+faculty_fti = { ###(
+    'title': 'WAeUP Faculty',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Faculty',
+    'factory': 'addFaculty',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Department',),
+    'allow_discussion': False,
+##    'actions': (
+##         {'id': 'view',
+##          'name': 'action_view',
+##          'action': 'string:${object_url}/faculty_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 Faculty(CPSDocument): ###(
+    """
+    WAeUP Faculty containing Departments 
+    """
+    meta_type = 'Faculty'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+##    security.declareProtected(View,"Title")
+##    def Title(self):
+##        """compose title"""
+##        reg_nr = self.getId()[1:]
+##        return "Faculty of %s" % (self.title)
+
+InitializeClass(Faculty)
+
+def addFaculty(container, id, REQUEST=None, **kw):
+    """Add a Faculty."""
+    ob = Faculty(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+department_fti = { ###(
+    'title': 'WAeUP Department',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Department',
+    'factory': 'addDepartment',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Course',),
+    'allow_discussion': False,
+}
+###)
+
+class Department(CPSDocument): ###(
+    """
+    WAeUP Department containing the courses and students
+    """
+    meta_type = 'Department'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+##    security.declareProtected(View,"Title")
+##    def Title(self):
+##        """compose title"""
+##        reg_nr = self.getId()[1:]
+##        return "Department of %s" % (self.title)
+
+InitializeClass(Department)
+
+def addDepartment(container, id, REQUEST=None, **kw):
+    """Add a Department."""
+    ob = Department(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+course_fti = { ###(
+    'title': 'WAeUP Course',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Course',
+    'factory': 'addCourse',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+}
+###)
+
+class Course(CPSDocument): ###(
+    """
+    WAeUP Course  
+    """
+    meta_type = 'Course'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        heading = getattr(content,'heading',None)
+        if heading is None:
+            return self.title
+        return heading
+    
+InitializeClass(Course)
+
+def addCourse(container, id, REQUEST=None, **kw):
+    """Add a Course."""
+    ob = Course(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+course_ticket_fti = { ###(
+    'title': 'WAeUP CourseTicket',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'CourseTicket',
+    'factory': 'addCourseTicket',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+}
+###)
+
+class CourseTicket(CPSDocument): ###(
+    """
+    WAeUP CourseTicket  
+    """
+    meta_type = 'CourseTicket'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+InitializeClass(CourseTicket)
+
+def addCourseTicket(container, id, REQUEST=None, **kw):
+    """Add a CourseTicket."""
+    ob = CourseTicket(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
Index: /WAeUP_SRP/branches/srpp_branch/LICENSE.GPL
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/LICENSE.GPL	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/LICENSE.GPL	(revision 276)
@@ -0,0 +1,225 @@
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /WAeUP_SRP/branches/srpp_branch/LICENSE.txt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/LICENSE.txt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/LICENSE.txt	(revision 276)
@@ -0,0 +1,17 @@
+ 
+  SACustom
+  Copyright 2005 WAeUP Group
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Index: /WAeUP_SRP/branches/srpp_branch/README.txt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/README.txt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/README.txt	(revision 276)
@@ -0,0 +1,1 @@
+This is the Student Product for the WAeUP.
Index: /WAeUP_SRP/branches/srpp_branch/Students.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Students.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Students.py	(revision 276)
@@ -0,0 +1,353 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+from AccessControl.SecurityManagement import newSecurityManager
+
+from Products.CMFCore.utils import UniqueObject, 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.CPSDocument.CPSDocument import CPSDocument
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder
+from Products.CPSCore.CPSMembershipTool import CPSUnrestrictedUser
+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."""
+    ob = StudentsFolder(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,
+}
+
+###)
+
+class Student(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'Student'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        reg_nr = self.getId()[1:]
+        data = getattr(self,'PERSONAL',None)
+        if data is None:
+            data = getattr(self,'JAMB',None)
+        if data:
+            content = data.getContent()
+            return "%s %s" % (content.firstname,content.lastname)
+        return self.title
+
+    def Description(self):
+        """compose description"""
+        data = getattr(self,'PERSONAL',None)
+        if data is None:
+            return "none"
+        if data:
+            content = data.getContent()
+            return "%s" % (content.description)
+        return self.description
+
+    security.declareProtected(View,"setScratchCardData")
+    def setScratchCardData(self,ident,ds):
+        """set this data """
+        dict = {'%s_sc_pin' % ident : ds.get('sc_pin'),
+                '%s_sc_id' % ident : ds.get('sc_id'),
+                '%s_sc_value' % ident : ds.get('sc_value'),
+                '%s_date' % ident : ds.get('sc_date'),
+                }
+
+        old_user = self.portal_membership.getAuthenticatedMember()
+        if self.portal_membership.isAnonymousUser():
+            tmp_user = CPSUnrestrictedUser('s%(jamb_id)s' % ds, '',
+                                       ['StudentManager'], '')
+            tmp_user = tmp_user.__of__(self.acl_users)
+            newSecurityManager(None, tmp_user)
+        #print str(dict)
+        self.edit(mapping=dict)
+        newSecurityManager(None, old_user)
+
+    security.declareProtected(View,"memberIsOwner")
+    def memberIsOwner(self):
+        """is the current user the owner"""
+        member = self.portal_membership.getAuthenticatedMember()
+        #print member, self.getId(),self.aq_parent.getId()
+        if self.aq_parent.getId() == str(member):
+            return True
+        return False
+
+    security.declareProtected(View,"accommodationIsBooked")
+    def accommodationIsBooked(self):
+        """is the accommodation booked"""
+        if self.accommodation_sc_pin != '':
+            return True
+        return False
+
+    security.declareProtected(View,"accommodationIsPayed")
+    def accommodationIsPayed(self):
+        """is the accommodation payed"""
+        if self.hostel_fee_sc_pin != '':
+            return True
+        return False
+
+    security.declareProtected(View,"isRegisteredForCurrentLevel")
+    def isRegisteredForCurrentLevel(self):
+        """is the student registered for the current level"""
+        for l in  self.aq_parent.objectValues():
+            if l.portal_type == 'StudyLevel':
+                return True
+        return False
+
+InitializeClass(Student)
+
+def addStudent(container, id, REQUEST=None, **kw):
+    """Add a Student."""
+    ob = Student(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+studentpersonal_fti = { ###(
+    'title': 'WAeUP StudentPersonal',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'StudentPersonal',
+    'factory': 'addStudent',
+    'immediate_view': 'student_personal_index_html',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+}
+
+###)
+
+class StudentPersonal(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'StudentPersonal'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        return "Personal Data for %s %s" % (content.firstname,content.lastname)
+
+
+InitializeClass(StudentPersonal)
+
+def addStudentPersonal(container, id, REQUEST=None, **kw):
+    """Add a Students personal data."""
+    ob = StudentPersonal(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+studenteligibility_fti = { ###(
+    'title': 'WAeUP StudentEligibility',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'StudentEligibility',
+    'factory': 'addStudent',
+    'immediate_view': 'student_eligibility_index_html',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+}
+
+###)
+
+class StudentEligibility(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'StudentEligibility'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        return "Eligibility Data"
+
+
+InitializeClass(StudentEligibility)
+
+def addStudentEligibility(container, id, REQUEST=None, **kw):
+    """Add a Students eligibility data."""
+    ob = StudentEligibility(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+studentdocuments_fti = { ###(
+    'title': 'WAeUP StudentDocuments',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'StudentDocuments',
+    'factory': 'addStudent',
+    'immediate_view': 'temporary_view_all',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+}
+
+###)
+
+class StudentDocuments(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'StudentDocuments'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        return "Scanned Documents"
+
+
+InitializeClass(StudentDocuments)
+
+def addStudentDocuments(container, id, REQUEST=None, **kw):
+    """Add a Students documents"""
+    ob = StudentDocuments(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+jamb_fti = { ###(
+    'title': 'WAeUP Jamb',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Jamb',
+    'factory': 'addJamb',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Course',),
+    'allow_discussion': False,
+}
+###)
+
+class Jamb(CPSDocument): ###(
+    """
+    WAeUP Jamb containing the courses and students
+    """
+    meta_type = 'Jamb'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        return "JAMB Data for %s %s" % (content.firstname,content.lastname)
+
+    security.declareProtected(View,"setOwnership")
+    def setOwnership(self,member_id):
+        """set ownership"""
+        pm = getattr(self,'portal_membership')
+        member = pm.getMemberById(member_id)
+        self.changeOwnership(member)
+
+InitializeClass(Jamb)
+
+def addJamb(container, id, REQUEST=None, **kw):
+    """Add a Jamb."""
+    ob = Jamb(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+study_level_fti = { ###(
+    'title': 'WAeUP StudyLevel',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'StudyLevel',
+    'factory': 'addStudyLevel',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Course',),
+    'allow_discussion': False,
+}
+###)
+
+class StudyLevel(CPSDocument): ###(
+    """
+    WAeUP StudyLevel containing the courses and students
+    """
+    meta_type = 'StudyLevel'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+InitializeClass(StudyLevel)
+
+def addStudyLevel(container, id, REQUEST=None, **kw):
+    """Add a StudyLevel."""
+    ob = StudyLevel(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+semester_fti = { ###(
+    'title': 'WAeUP Semester',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Semester',
+    'factory': 'addSemester',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Course',),
+    'allow_discussion': False,
+}
+###)
+
+class Semester(CPSDocument): ###(
+    """
+    WAeUP Semester containing the courses and students
+    """
+    meta_type = 'Semester'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+InitializeClass(Semester)
+
+def addSemester(container, id, REQUEST=None, **kw):
+    """Add a Semester."""
+    ob = Semester(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
Index: /WAeUP_SRP/branches/srpp_branch/University.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/University.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/University.py	(revision 276)
@@ -0,0 +1,59 @@
+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 
+from Products.CPSDocument.CPSDocument import CPSDocument 
+
+#
+# The WAeUP BaseContainer
+#
+
+class University(CPSDocument):
+    """
+    Container for the various WAeUP containers 
+    """
+    meta_type = 'University'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+        
+    security.declarePublic('waeup_url')
+    def waeup_url(self):
+        """ return the base_url"""
+        return "%s/sections/waeup" % self.portal_url
+        return self.REQUEST
+    
+    
+##    security.declarePublic('backEnd')
+##    def backEnd(self):
+##        """ are we in back-end mode"""
+##        mtool = self.portal_membership
+##        member = mtool.getAuthenticatedMember()
+##        roles = member.getRoles()
+##        if 'UniversityManager' in roles or 'StudentManager' in roles:
+##            return True
+##        return False
+##
+##    security.declarePublic('frontEnd')
+##    def frontEnd(self):
+##        """ are we in front-end mode"""
+##        mtool = self.portal_membership
+##        member = mtool.getAuthenticatedMember()
+##        roles = member.getRoles()
+##        if 'Student' in roles:
+##            return True
+##        return False
+    
+        
+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_SRP/branches/srpp_branch/VERSION
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/VERSION	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/VERSION	(revision 276)
@@ -0,0 +1,1 @@
+0.3-devel (SVN/Unreleased)
Index: /WAeUP_SRP/branches/srpp_branch/WAeUPPermissions.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/WAeUPPermissions.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/WAeUPPermissions.py	(revision 276)
@@ -0,0 +1,71 @@
+# (C) Copyright 2005 AixtraWare <http://aixtraware.de>
+# Author: Joachim Schmitz <js@aixtraware.de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+# $Id$
+
+__author__ = "Joachim Schmitz <js@aixtraware.de>"
+
+"""WAeUP Student Permissions
+"""
+
+from AccessControl import ModuleSecurityInfo
+from Products.CMFCore.permissions import setDefaultRoles
+security = ModuleSecurityInfo('Products.WAeUP.WAeUPPermissions')
+
+#  - 'University Manage' : Permission you need to manage a University
+#
+security.declarePublic('UniversityManage')
+UniversityManage = "University Manage"
+setDefaultRoles(UniversityManage, ('Manager', 
+                                   ))
+#  - 'Student Manage' : Permission you need to manage Students
+#
+security.declarePublic('StudentManage')
+StudentManage = "Student Manage"
+setDefaultRoles(StudentManage, ('Manager', 
+                                'UniversityManager', 
+                                'StudentManager', 
+                                'FacultyManager', 
+                                'Owner',))
+#  - 'Faculty Manage' : Permission you need to manage a Faculty
+#
+security.declarePublic('FacultyManage')
+FacultyManage = "Faculty Manage"
+setDefaultRoles(FacultyManage, ('Manager', 
+                                'UniversityManager', 
+                                'FacultyManager', 
+                                ))
+#  - 'Department Manage' : Permission you need to manage a Department
+#
+security.declarePublic('DepartmentManage')
+DepartmentManage = "Department Manage"
+setDefaultRoles(DepartmentManage, ('Manager', 
+                                   'UniversityManager', 
+                                   'FacultyManager', 
+                                   'DepartmentManager', 
+                                   ))
+#  - 'Course Manage' : Permission you need to manage a Department
+#
+security.declarePublic('CourseManage')
+CourseManage = "Course Manage"
+setDefaultRoles(CourseManage, ('Manager', 
+                               'UniversityManager', 
+                               'FacultyManager', 
+                               'DepartmentManager', 
+                               'CourseManager', 
+                               ))
+
Index: /WAeUP_SRP/branches/srpp_branch/WAeUPStudentWidgets.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/WAeUPStudentWidgets.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/WAeUPStudentWidgets.py	(revision 276)
@@ -0,0 +1,156 @@
+from Globals import InitializeClass
+from Products.CPSSchemas.Widget import CPSWidgetType
+from Products.CPSSchemas.BasicWidgets import CPSStringWidget, CPSEmailWidget
+from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
+from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry
+from AccessControl import getSecurityManager
+
+from re import compile
+
+from zLOG import LOG, DEBUG
+
+class MyProjectWeekDateTimeWidget(CPSDateTimeWidget):
+    """ """
+    meta_type = "MyProject Week Date Time Widget"
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSDateTimeWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            if value.dow() in (6, 0):
+                err = 'Cette date ne correspond pas à un jour de semaine'
+
+            if err:
+                datastructure.setError(widget_id, err)
+
+            return not err
+
+InitializeClass(MyProjectWeekDateTimeWidget)
+
+class MyProjectWeekDateTimeWidgetType(CPSWidgetType):
+    """MyProject Week DateTime widget type."""
+    meta_type = "MyProject Week Date Time Widget Type"
+    cls = MyProjectWeekDateTimeWidget
+
+InitializeClass(MyProjectWeekDateTimeWidgetType)
+
+class MyProjectRestrictedStringWidget(CPSStringWidget):
+    """ """
+    meta_type = "MyProject Restricted String Widget"
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSStringWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            if not (len(value) == 5 and value.isupper() and value.isalpha()):
+                err = 'Cette chaîne ne correspond pas au format imposé'
+
+            if err:
+                datastructure.setError(widget_id, err)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = value
+            
+            return not err
+
+InitializeClass(MyProjectRestrictedStringWidget)
+
+class MyProjectRestrictedStringWidgetType(CPSWidgetType):
+    """MyProject Restricted String widget type."""
+    meta_type = "MyProject Restricted String Widget Type"
+    cls = MyProjectRestrictedStringWidget
+
+InitializeClass(MyProjectRestrictedStringWidgetType)
+
+
+class MyProjectRestrictedEmailWidget(CPSEmailWidget):
+    """ """
+    meta_type = "MyProject Restricted Email Widget"
+
+    email_myproject_pat = compile(r"^([-\w_+])+\.([-\w_+])+@myproject\.fr$")
+
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSEmailWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            err, v = self._extractValue(datastructure[widget_id])
+            LOG('MyProject: MyProjectWidgets.py', DEBUG, "Valeur de v : %s" % v)
+            if not err and kw.get('layout_mode') != 'search' and \
+              v and not self.email_myproject_pat.match(v):
+                err = 'cpsschemas_err_email'
+
+            if err:
+                datastructure.setError(widget_id, err)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = v
+            
+            return not err
+
+    def render(self, mode, datastructure, **kw):
+        """Render in mode from datastructure."""
+        return CPSStringWidget.render(self, mode, datastructure, **kw)
+
+InitializeClass(MyProjectRestrictedEmailWidget)
+
+class MyProjectRestrictedEmailWidgetType(CPSWidgetType):
+    """MyProject Restricted String widget type."""
+    meta_type = "MyProject Restricted Email Widget Type"
+    cls = MyProjectRestrictedEmailWidget
+
+InitializeClass(MyProjectRestrictedEmailWidgetType)
+
+class MyProjectVisitTitleWidget(CPSStringWidget):
+    """ """
+    meta_type = "MyProject Visit Title Widget"
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        widget_id = self.getWidgetId()
+        err = 0
+        curr_date = DateTime()
+        date = "%d.%d.%d" % (curr_date.day(), curr_date.month(), curr_date.year())
+        user = getSecurityManager().getUser()
+        value = 'Demande de visite du %s par %s' % (date, 
+             self.portal_directories.members.getEntry(user.getId()).get('fullname'))
+        datamodel = datastructure.getDataModel()
+        datamodel[self.fields[0]] = value
+            
+        return not err
+
+    def render(self, mode, datastructure, **kw):
+        return ''
+
+InitializeClass(MyProjectVisitTitleWidget)
+
+class MyProjectVisitTitleWidgetType(CPSWidgetType):
+    """MyProject Visit Title widget type."""
+    meta_type = "MyProject Visit Title Widget Type"
+    cls = MyProjectVisitTitleWidget
+
+InitializeClass(MyProjectVisitTitleWidgetType)
+
+#####################################################################################
+
+WidgetTypeRegistry.register(MyProjectWeekDateTimeWidgetType)
+WidgetTypeRegistry.register(MyProjectRestrictedStringWidgetType)
+WidgetTypeRegistry.register(MyProjectRestrictedEmailWidgetType)
+WidgetTypeRegistry.register(MyProjectVisitTitleWidgetType)
+
Index: /WAeUP_SRP/branches/srpp_branch/Widgets.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Widgets.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Widgets.py	(revision 276)
@@ -0,0 +1,238 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+from Products.CPSSchemas.Widget import CPSWidgetType
+from Products.CPSSchemas.BasicWidgets import CPSStringWidget, CPSEmailWidget
+from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
+from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry
+from DateTime.DateTime import DateTime
+from AccessControl import getSecurityManager
+
+from re import compile
+
+from zLOG import LOG, DEBUG
+
+class StudentIdWidget(CPSStringWidget): ###(
+    """ StudentId Widget"""
+    meta_type = "StudentId Widget"
+    digits = 8
+    digits_str = "N"*digits
+    letters = 2
+    letters_str = "L"*letters
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSStringWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            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)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = value
+            
+            return not err
+
+InitializeClass(StudentIdWidget)
+
+class StudentIdWidgetType(CPSWidgetType):
+    """Student Id String widget type."""
+    meta_type = "StudentId  Widget Type"
+    cls = StudentIdWidget
+
+###)
+
+class ScratchcardPinWidget(CPSStringWidget): ###(
+    """ ScratchcardPin Widget"""
+    meta_type = "ScratchcardPin Widget"
+    valid_pins = ['123456',
+                  '234567',
+                  '345678',
+                  '456789',
+                  ]
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSStringWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            if not value in self.valid_pins: 
+                err = 'invalid Pin'
+            if err:
+                datastructure.setError(widget_id, err)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = value
+            return not err
+
+InitializeClass(ScratchcardPinWidget)
+
+class ScratchcardPinWidgetType(CPSWidgetType):
+    """Scratchcard Pin widget type."""
+    meta_type = "Scratchcard Pin Widget Type"
+    cls = ScratchcardPinWidget
+
+###)
+
+###########
+
+WidgetTypeRegistry.register(StudentIdWidgetType)
+WidgetTypeRegistry.register(ScratchcardPinWidgetType)
+
+##class MyProjectWeekDateTimeWidget(CPSDateTimeWidget): ###(
+##    """ """
+##    meta_type = "MyProject Week Date Time Widget"
+##    
+##    def validate(self, datastructure, **kw):
+##        """Validate datastructure and update datamodel."""
+##        
+##        valid = CPSDateTimeWidget.validate(self, datastructure, **kw)
+##        if not valid:
+##            return 0
+##        else:
+##            widget_id = self.getWidgetId()
+##            value = datastructure[widget_id]
+##            err = 0
+##            if value.dow() in (6, 0):
+##                err = 'Cette date ne correspond pas à un jour de semaine'
+##
+##            if err:
+##                datastructure.setError(widget_id, err)
+##
+##            return not err
+##
+##InitializeClass(MyProjectWeekDateTimeWidget)
+
+##class MyProjectWeekDateTimeWidgetType(CPSWidgetType):
+##    """MyProject Week DateTime widget type."""
+##    meta_type = "MyProject Week Date Time Widget Type"
+##    cls = MyProjectWeekDateTimeWidget
+##
+##InitializeClass(MyProjectWeekDateTimeWidgetType)
+##class MyProjectRestrictedStringWidget(CPSStringWidget):
+##    """ """
+##    meta_type = "MyProject Restricted String Widget"
+##    
+##    def validate(self, datastructure, **kw):
+##        """Validate datastructure and update datamodel."""
+##        
+##        valid = CPSStringWidget.validate(self, datastructure, **kw)
+##        if not valid:
+##            return 0
+##        else:
+##            widget_id = self.getWidgetId()
+##            value = datastructure[widget_id]
+##            err = 0
+##            if not (len(value) == 5 and value.isupper() and value.isalpha()):
+##                err = 'Cette chaîne ne correspond pas au format imposé'
+##
+##            if err:
+##                datastructure.setError(widget_id, err)
+##            else:
+##                datamodel = datastructure.getDataModel()
+##                datamodel[self.fields[0]] = value
+##            
+##            return not err
+##
+##InitializeClass(MyProjectRestrictedStringWidget)
+##
+##class MyProjectRestrictedStringWidgetType(CPSWidgetType):
+##    """MyProject Restricted String widget type."""
+##    meta_type = "MyProject Restricted String Widget Type"
+##    cls = MyProjectRestrictedStringWidget
+##
+##InitializeClass(MyProjectRestrictedStringWidgetType)
+##
+##
+##class MyProjectRestrictedEmailWidget(CPSEmailWidget):
+##    """ """
+##    meta_type = "MyProject Restricted Email Widget"
+##
+##    email_myproject_pat = compile(r"^([-\w_+])+\.([-\w_+])+@myproject\.fr$")
+##
+##    def validate(self, datastructure, **kw):
+##        """Validate datastructure and update datamodel."""
+##        
+##        valid = CPSEmailWidget.validate(self, datastructure, **kw)
+##        if not valid:
+##            return 0
+##        else:
+##            widget_id = self.getWidgetId()
+##            err, v = self._extractValue(datastructure[widget_id])
+##            LOG('MyProject: MyProjectWidgets.py', DEBUG, "Valeur de v : %s" % v)
+##            if not err and kw.get('layout_mode') != 'search' and \
+##              v and not self.email_myproject_pat.match(v):
+##                err = 'cpsschemas_err_email'
+##
+##            if err:
+##                datastructure.setError(widget_id, err)
+##            else:
+##                datamodel = datastructure.getDataModel()
+##                datamodel[self.fields[0]] = v
+##            
+##            return not err
+##
+##    def render(self, mode, datastructure, **kw):
+##        """Render in mode from datastructure."""
+##        return CPSStringWidget.render(self, mode, datastructure, **kw)
+##
+##InitializeClass(MyProjectRestrictedEmailWidget)
+##
+##class MyProjectRestrictedEmailWidgetType(CPSWidgetType):
+##    """MyProject Restricted String widget type."""
+##    meta_type = "MyProject Restricted Email Widget Type"
+##    cls = MyProjectRestrictedEmailWidget
+##
+##InitializeClass(MyProjectRestrictedEmailWidgetType)
+##
+##class MyProjectVisitTitleWidget(CPSStringWidget):
+##    """ """
+##    meta_type = "MyProject Visit Title Widget"
+##    
+##    def validate(self, datastructure, **kw):
+##        """Validate datastructure and update datamodel."""
+##        
+##        widget_id = self.getWidgetId()
+##        err = 0
+##        curr_date = DateTime()
+##        date = "%d.%d.%d" % (curr_date.day(), curr_date.month(), curr_date.year())
+##        user = getSecurityManager().getUser()
+##        value = 'Demande de visite du %s par %s' % (date, 
+##             self.portal_directories.members.getEntry(user.getId()).get('fullname'))
+##        datamodel = datastructure.getDataModel()
+##        datamodel[self.fields[0]] = value
+##            
+##        return not err
+##
+##    def render(self, mode, datastructure, **kw):
+##        return ''
+##
+##InitializeClass(MyProjectVisitTitleWidget)
+##
+##class MyProjectVisitTitleWidgetType(CPSWidgetType):
+##    """MyProject Visit Title widget type."""
+##    meta_type = "MyProject Visit Title Widget Type"
+##    cls = MyProjectVisitTitleWidget
+##
+##InitializeClass(MyProjectVisitTitleWidgetType)
+
+#####################################################################################
+
+##WidgetTypeRegistry.register(MyProjectWeekDateTimeWidgetType)
+##WidgetTypeRegistry.register(MyProjectRestrictedStringWidgetType)
+##WidgetTypeRegistry.register(MyProjectRestrictedEmailWidgetType)
+##WidgetTypeRegistry.register(MyProjectVisitTitleWidgetType)
+##
+
+###)
Index: /WAeUP_SRP/branches/srpp_branch/Workflows/WAeUPWorkflow.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Workflows/WAeUPWorkflow.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Workflows/WAeUPWorkflow.py	(revision 276)
@@ -0,0 +1,684 @@
+#-*- mode: python; mode: fold -*-
+""" WAeUP Workflfow
+"""
+
+__author__ = "Joachim Schmitz <js@aixtraware.de>"
+
+import os, sys
+from zLOG import LOG, INFO, DEBUG
+
+from Products.CMFCore.permissions import View, ModifyPortalContent
+#from Products.WAeUP.permissions import 
+
+from Products.CPSWorkflow.transitions import \
+     TRANSITION_INITIAL_CREATE, \
+     TRANSITION_ALLOWSUB_CHECKOUT, \
+     TRANSITION_ALLOWSUB_CREATE, \
+     TRANSITION_ALLOWSUB_DELETE, \
+     TRANSITION_ALLOWSUB_MOVE, \
+     TRANSITION_ALLOWSUB_COPY
+
+from Products.DCWorkflow.Transitions import \
+     TRIGGER_USER_ACTION
+
+def waeupWorkflowsInstall(self):
+    """Install the workflow for the WAeUP Types
+    """
+
+    portal = self.portal_url.getPortalObject()
+    wftool = portal.portal_workflow
+
+    wfids = wftool.objectIds()
+    wfid = 'waeup_section_wf' ###(
+
+    if wfid in wfids:
+        wftool.manage_delObjects([wfid])
+
+    wftool.manage_addWorkflow(id=wfid,
+                              workflow_type='cps_workflow (Web-configurable workflow for CPS)')
+
+    wf = wftool[wfid]
+
+    for p in (View,
+              ModifyPortalContent,
+             ):
+        wf.addManagedPermission(p)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                                  STATES
+
+    ###########################################################################
+    ###########################################################################
+
+    for s in ('work',
+             ):
+        wf.states.addState(s)
+
+    ##########################################################################
+    #                                  WORK
+    ##########################################################################
+
+    s = wf.states.get('work')
+
+    s.setPermission(View, 1, ('Student',))
+    s.setPermission(ModifyPortalContent, 1, ('StudentManager','UniversityManager',))
+
+    s.setInitialState('work')
+    s.setProperties(title='Work',
+                    description='',
+                    transitions=('create_content',
+                                 'cut_copy_paste',
+                                 'close',),)
+
+    ##########################################################################
+    #                                  CLOSED ###(
+    ##########################################################################
+
+##    s = wf.states.get('closed')
+##
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator',))
+##    s.setPermission(chatPost, 1, ('ChatModerator',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+##    s.setProperties(title='Closed',
+##                    description='',
+##                    transitions=('unclose',
+##                                 'cut_copy_paste',),)
+##
+    ###########################################################################
+    ###########################################################################
+###)
+
+    #                               TRANSITIONS
+
+    ###########################################################################
+    ###########################################################################
+
+    for t in ('create',
+              'create_content',
+              'cut_copy_paste',
+              ):
+        wf.transitions.addTransition(t)
+
+
+    ###########################################################################
+    #                                 CREATE
+    ###########################################################################
+
+    t = wf.transitions.get('create')
+    t.setProperties(title='Initial creation',
+                    description='Intial transition like',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_INITIAL_CREATE, ),
+                    clone_allowed_transitions=None,
+                    actbox_name='', actbox_category='workflow', actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager; UniversityManager',
+                           'guard_expr':''},)
+
+    ###########################################################################
+    #                                  CREATE CONTENT
+    ###########################################################################
+
+    t = wf.transitions.get('create_content')
+    t.setProperties(title='Create content',
+                    description='Allow sub Object Create',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_CREATE,
+                                         TRANSITION_ALLOWSUB_CHECKOUT,),
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CUT/COPY/PASTE
+    ##########################################################################
+
+    t = wf.transitions.get('cut_copy_paste')
+    t.setProperties(title='Cut/Copy/Paste',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_DELETE,
+                                         TRANSITION_ALLOWSUB_MOVE,
+                                         TRANSITION_ALLOWSUB_COPY),
+                    clone_allowed_transitions=None,
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CLOSE ###(
+    ##########################################################################
+
+##    t = wf.transitions.get('close')
+##    t.setProperties(title='close',
+##                    new_state_id='closed',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_close',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_close',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+##
+##    ##########################################################################
+##    #                                  UNCLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('unclose')
+##    t.setProperties(title='unclose',
+##                    new_state_id='work',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_unclose',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_unclose',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+
+###)
+
+    ################################################################
+    #                 VARIABLES
+    ################################################################
+
+    for v in ('action',
+              'actor',
+              'comments',
+              'review_history',
+              'time',
+              'dest_container',
+              ):
+        wf.variables.addVariable(v)
+
+
+    wf.variables.setStateVar('review_state')
+
+    vdef = wf.variables['action']
+    vdef.setProperties(description='The last transition',
+                       default_expr='transition/getId|nothing',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description='The ID of the user who performed '
+                       'the last transition',
+                       default_expr='user/getId',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description='Comments about the last transition',
+                       default_expr="python:state_change.kwargs.get('comment', '')",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description='Provides access to workflow history',
+                       default_expr="state_change/getHistory",
+                       props={'guard_permissions':'',
+                              'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader; Member',
+                              'guard_expr':''})
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description='Time of the last transition',
+                       default_expr="state_change/getDateTime",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['dest_container']
+    vdef.setProperties(description='Destination container for the last paste/publish',
+                       default_expr="python:state_change.kwargs.get('dest_container', '')",
+                       for_status=1, update_always=1)
+
+
+    ######################################################################################
+    ######################################################################################
+###)
+
+    wfid = 'waeup_student_wf' ###(
+
+    if wfid in wfids:
+        wftool.manage_delObjects([wfid])
+
+    wftool.manage_addWorkflow(id=wfid,
+                              workflow_type='cps_workflow (Web-configurable workflow for CPS)')
+
+    wf = wftool[wfid]
+
+    for p in (View,
+              ModifyPortalContent,
+             ):
+        wf.addManagedPermission(p)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                                  STATES
+
+    ###########################################################################
+    ###########################################################################
+
+    for s in ('work',
+             ):
+        wf.states.addState(s)
+
+    ##########################################################################
+    #                                  WORK
+    ##########################################################################
+
+    s = wf.states.get('work')
+
+    s.setPermission(View, 1, ('Student',))
+    s.setPermission(ModifyPortalContent, 1, ('StudentManager','UniversityManager','Student'))
+
+    s.setInitialState('work')
+    s.setProperties(title='Work',
+                    description='',
+                    transitions=('create_content',
+                                 'cut_copy_paste',
+                                 'close',),)
+
+    ##########################################################################
+    #                                  CLOSED ###(
+    ##########################################################################
+
+##    s = wf.states.get('closed')
+##
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator',))
+##    s.setPermission(chatPost, 1, ('ChatModerator',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+##    s.setProperties(title='Closed',
+##                    description='',
+##                    transitions=('unclose',
+##                                 'cut_copy_paste',),)
+##
+    ###########################################################################
+    ###########################################################################
+###)
+
+
+    #                               TRANSITIONS
+
+    ###########################################################################
+    ###########################################################################
+
+    for t in ('create',
+              'create_content',
+              'cut_copy_paste',
+              ):
+        wf.transitions.addTransition(t)
+
+
+    ###########################################################################
+    #                                 CREATE
+    ###########################################################################
+
+    t = wf.transitions.get('create')
+    t.setProperties(title='Initial creation',
+                    description='Intial transition like',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_INITIAL_CREATE, ),
+                    clone_allowed_transitions=None,
+                    actbox_name='', actbox_category='workflow', actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager; UniversityManager; Student',
+                           'guard_expr':''},)
+
+    ###########################################################################
+    #                                  CREATE CONTENT
+    ###########################################################################
+
+    t = wf.transitions.get('create_content')
+    t.setProperties(title='Create content',
+                    description='Allow sub Object Create',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_CREATE,
+                                         TRANSITION_ALLOWSUB_CHECKOUT,),
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager; Student',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CUT/COPY/PASTE
+    ##########################################################################
+
+    t = wf.transitions.get('cut_copy_paste')
+    t.setProperties(title='Cut/Copy/Paste',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_DELETE,
+                                         TRANSITION_ALLOWSUB_MOVE,
+                                         TRANSITION_ALLOWSUB_COPY),
+                    clone_allowed_transitions=None,
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CLOSE ###(
+    ##########################################################################
+
+##    t = wf.transitions.get('close')
+##    t.setProperties(title='close',
+##                    new_state_id='closed',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_close',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_close',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+##
+##    ##########################################################################
+##    #                                  UNCLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('unclose')
+##    t.setProperties(title='unclose',
+##                    new_state_id='work',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_unclose',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_unclose',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+
+###)
+
+    ################################################################
+    #                 VARIABLES
+    ################################################################
+
+    for v in ('action',
+              'actor',
+              'comments',
+              'review_history',
+              'time',
+              'dest_container',
+              ):
+        wf.variables.addVariable(v)
+
+
+    wf.variables.setStateVar('review_state')
+
+    vdef = wf.variables['action']
+    vdef.setProperties(description='The last transition',
+                       default_expr='transition/getId|nothing',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description='The ID of the user who performed '
+                       'the last transition',
+                       default_expr='user/getId',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description='Comments about the last transition',
+                       default_expr="python:state_change.kwargs.get('comment', '')",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description='Provides access to workflow history',
+                       default_expr="state_change/getHistory",
+                       props={'guard_permissions':'',
+                              'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader; Member',
+                              'guard_expr':''})
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description='Time of the last transition',
+                       default_expr="state_change/getDateTime",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['dest_container']
+    vdef.setProperties(description='Destination container for the last paste/publish',
+                       default_expr="python:state_change.kwargs.get('dest_container', '')",
+                       for_status=1, update_always=1)
+
+
+    ######################################################################################
+    ######################################################################################
+###)
+
+    wfid = 'waeup_workspace_wf' ###(
+
+    if wfid in wfids:
+        wftool.manage_delObjects([wfid])
+
+    wftool.manage_addWorkflow(id=wfid,
+                              workflow_type='cps_workflow (Web-configurable workflow for CPS)')
+
+    wf = wftool[wfid]
+
+    for p in (View,
+              ModifyPortalContent,
+              ):
+        wf.addManagedPermission(p)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                                  STATES
+
+    ###########################################################################
+    ###########################################################################
+
+    for s in ('work',
+              'closed'):
+        wf.states.addState(s)
+
+    ##########################################################################
+    #                                  WORK
+    ##########################################################################
+
+    s = wf.states.get('work')
+
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator', 'ChatGuest',))
+##    s.setPermission(chatPost, 1, ('ChatModerator', 'ChatPoster', 'ChatGuest',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+    s.setInitialState('work')
+    s.setProperties(title='Work',
+                    description='',
+                    transitions=('create_content',
+                                 'cut_copy_paste',
+                                 'close',),)
+
+
+    ##########################################################################
+    #                                  CLOSED
+    ##########################################################################
+
+    s = wf.states.get('closed')
+
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator',))
+##    s.setPermission(chatPost, 1, ('ChatModerator',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+    s.setProperties(title='Closed',
+                    description='',
+                    transitions=('unclose',
+                                 'cut_copy_paste',),)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                               TRANSITIONS
+
+    ###########################################################################
+    ###########################################################################
+
+    for t in ('create',
+              'create_content',
+              'cut_copy_paste',
+              'close',
+              'unclose',):
+        wf.transitions.addTransition(t)
+
+
+    ###########################################################################
+    #                                 CREATE
+    ###########################################################################
+
+    t = wf.transitions.get('create')
+    t.setProperties(title='Initial creation',
+                    description='Intial transition like',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_INITIAL_CREATE, ),
+                    clone_allowed_transitions=None,
+                    actbox_name='', actbox_category='workflow', actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; WorkspaceManager',
+                           'guard_expr':''},)
+
+    ###########################################################################
+    #                                  CREATE CONTENT
+    ###########################################################################
+
+    t = wf.transitions.get('create_content')
+    t.setProperties(title='Create content',
+                    description='Allow sub Object Create',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_CREATE,
+                                         TRANSITION_ALLOWSUB_CHECKOUT,),
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CUT/COPY/PASTE
+    ##########################################################################
+
+    t = wf.transitions.get('cut_copy_paste')
+    t.setProperties(title='Cut/Copy/Paste',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_DELETE,
+                                         TRANSITION_ALLOWSUB_MOVE,
+                                         TRANSITION_ALLOWSUB_COPY),
+                    clone_allowed_transitions=None,
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; WorkspaceManager; WorkspaceMember',
+                           'guard_expr':''},)
+
+##    ##########################################################################
+##    #                                  CLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('close')
+##    t.setProperties(title='close',
+##                    new_state_id='closed',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_close',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_close',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; WorkspaceManager',
+##                           'guard_expr':''},)
+##
+##    ##########################################################################
+##    #                                  UNCLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('unclose')
+##    t.setProperties(title='unclose',
+##                    new_state_id='work',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_unclose',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_unclose',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; WorkspaceManager; ChatModerator',
+##                           'guard_expr':''},)
+
+    ################################################################
+    #                 VARIABLES
+    ################################################################
+
+    for v in ('action',
+              'actor',
+              'comments',
+              'review_history',
+              'time',
+              'dest_container',
+              ):
+        wf.variables.addVariable(v)
+
+
+    wf.variables.setStateVar('review_state')
+
+    vdef = wf.variables['action']
+    vdef.setProperties(description='The last transition',
+                       default_expr='transition/getId|nothing',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description='The ID of the user who performed '
+                       'the last transition',
+                       default_expr='user/getId',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description='Comments about the last transition',
+                       default_expr="python:state_change.kwargs.get('comment', '')",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description='Provides access to workflow history',
+                       default_expr="state_change/getHistory",
+                       props={'guard_permissions':'',
+                              'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader; Member',
+                              'guard_expr':''})
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description='Time of the last transition',
+                       default_expr="state_change/getDateTime",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['dest_container']
+    vdef.setProperties(description='Destination container for the last paste/publish',
+                       default_expr="python:state_change.kwargs.get('dest_container', '')",
+                       for_status=1, update_always=1)
+
+###)
Index: /WAeUP_SRP/branches/srpp_branch/Workflows/__init__.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/Workflows/__init__.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/Workflows/__init__.py	(revision 276)
@@ -0,0 +1,1 @@
+# Make this a module
Index: /WAeUP_SRP/branches/srpp_branch/__init__.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/__init__.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/__init__.py	(revision 276)
@@ -0,0 +1,71 @@
+from Products.CMFCore.DirectoryView import registerDirectory
+from Products.CMFCore import utils as cmfutils
+from Products.CMFCore.CMFCorePermissions import AddPortalContent
+
+registerDirectory('skins', globals())
+
+import University
+import Students
+import Accommodation
+import Faculty
+import Widgets
+import WAeUPPermissions
+
+fti = (Students.student_fti,
+       Students.studentdocuments_fti,
+       Students.studentpersonal_fti,
+       Students.studenteligibility_fti,
+       Students.jamb_fti,
+       Students.study_level_fti,
+       Students.semester_fti,
+       Accommodation.accofolder_fti,
+       Accommodation.accommodation_fti,
+       Faculty.faculty_fti,
+       Faculty.department_fti,
+       Faculty.course_fti,
+       Faculty.course_ticket_fti,
+      )
+
+contentClasses = (University.University,
+                  Students.StudentsFolder,
+                  Students.Student,
+                  Students.StudentDocuments,
+                  Students.StudentPersonal,
+                  Students.StudentEligibility,
+                  Students.Jamb,
+                  Students.StudyLevel,
+                  Students.Semester,
+                  Accommodation.AccoFolder,
+                  Accommodation.Accommodation,
+                  Faculty.Faculty,
+                  Faculty.Department,
+                  Faculty.Course,
+                  Faculty.CourseTicket,
+                 )
+
+contentConstructors = (University.addUniversity,
+                       Students.addStudentsFolder,
+                       Students.addStudent,
+                       Students.addStudentDocuments,
+                       Students.addStudentPersonal,
+                       Students.addStudentEligibility,
+                       Students.addJamb,
+                       Students.addStudyLevel,
+                       Students.addSemester,
+                       Accommodation.addAccommodation,
+                       Accommodation.addAccoFolder,
+                       Faculty.addFaculty,
+                       Faculty.addDepartment,
+                       Faculty.addCourse,
+                       Faculty.addCourseTicket,
+                       )
+
+def initialize(registrar):
+    cmfutils.ContentInit(
+        'WAeUP',
+        content_types=contentClasses,
+        permission=AddPortalContent,
+        extra_constructors=contentConstructors,
+        fti=fti,
+        
+    ).initialize(registrar)
Index: /WAeUP_SRP/branches/srpp_branch/i18n/.config.pot
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/i18n/.config.pot	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/i18n/.config.pot	(revision 276)
@@ -0,0 +1,1 @@
+/var/lib/zope2.7/instance/test_madarche_HEAD/Products/MyProject/i18n/myproject.pot
Index: /WAeUP_SRP/branches/srpp_branch/i18n/custom.pot
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/i18n/custom.pot	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/i18n/custom.pot	(revision 276)
@@ -0,0 +1,18 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: LL\n"
+"Language-Name: Language\n"
+"Preferred-encodings: utf-8 latin1\n"
+"Domain: default\n"
+
Index: /WAeUP_SRP/branches/srpp_branch/i18n/en.po
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/i18n/en.po	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/i18n/en.po	(revision 276)
@@ -0,0 +1,106 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-encodings: latin9 utf-8\n"
+"Domain: default\n"
+
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <option value="." content="widget/title_or_id" attributes="value widget/getWidgetId" condition="widget/is_i18n">Type</option>
+msgid "Type"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="addwidget_button" type="submit" class="context" value="button_add" />
+msgid "button_add"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input onclick="history.back()" type="button" class="context" value="button_cancel" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_cancel"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_edit_button" type="submit" class="standalone" value="button_change" condition="not:creation" />
+msgid "button_change"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_create_button" type="submit" class="standalone" value="button_create" condition="creation" />
+msgid "button_create"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="destructive" value="button_delete" attributes="name string:deleterow_${repeat/row/index};
+#.                                 onclick python:'return window.confirm(\'%s\')' %
+#.                                   (cpsmcat('description_confirm_delete'), )" />
+msgid "button_delete"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveDown" value="button_move_down" attributes="name string:downrow_${repeat/row/index}" condition="not:repeat/row/end" />
+msgid "button_move_down"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveUp" value="button_move_up" attributes="name string:uprow_${repeat/row/index}" condition="not:repeat/row/start" />
+msgid "button_move_up"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input type="submit" class="standalone" value="button_publish" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_publish"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <block>at</block>
+msgid "cpsschema_at"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_hour_id">h</label>
+msgid "cpsschema_hour"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_minute_id">mn</label>
+msgid "cpsschema_minute"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <title fill-slot="title">
+#.     heading_accept_publication_of
+#.     ${item_id (tal replace="here/title_or_id")}
+#.   </title>
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "heading_accept_publication_of ${item_id}"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <block content="widget/help" condition="widget/is_i18n">i18_key-help_for_this_field</block>
+msgid "i18_key-help_for_this_field"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span class="dlabel" content="widget/label" condition="widget/is_i18n">label</span>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <b content="widget/label" condition="widget/is_i18n">label</b>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span content="widget/label_edit" condition="widget/is_i18n">label</span>
+msgid "label"
+msgstr ""
Index: /WAeUP_SRP/branches/srpp_branch/i18n/fr.po
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/i18n/fr.po	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/i18n/fr.po	(revision 276)
@@ -0,0 +1,106 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: fr\n"
+"Language-Name: French\n"
+"Preferred-encodings: latin9 utf-8\n"
+"Domain: default\n"
+
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <option value="." content="widget/title_or_id" attributes="value widget/getWidgetId" condition="widget/is_i18n">Type</option>
+msgid "Type"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="addwidget_button" type="submit" class="context" value="button_add" />
+msgid "button_add"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input onclick="history.back()" type="button" class="context" value="button_cancel" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_cancel"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_edit_button" type="submit" class="standalone" value="button_change" condition="not:creation" />
+msgid "button_change"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_create_button" type="submit" class="standalone" value="button_create" condition="creation" />
+msgid "button_create"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="destructive" value="button_delete" attributes="name string:deleterow_${repeat/row/index};
+#.                                 onclick python:'return window.confirm(\'%s\')' %
+#.                                   (cpsmcat('description_confirm_delete'), )" />
+msgid "button_delete"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveDown" value="button_move_down" attributes="name string:downrow_${repeat/row/index}" condition="not:repeat/row/end" />
+msgid "button_move_down"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveUp" value="button_move_up" attributes="name string:uprow_${repeat/row/index}" condition="not:repeat/row/start" />
+msgid "button_move_up"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input type="submit" class="standalone" value="button_publish" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_publish"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <block>at</block>
+msgid "cpsschema_at"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_hour_id">h</label>
+msgid "cpsschema_hour"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_minute_id">mn</label>
+msgid "cpsschema_minute"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <title fill-slot="title">
+#.     heading_accept_publication_of
+#.     ${item_id (tal replace="here/title_or_id")}
+#.   </title>
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "heading_accept_publication_of ${item_id}"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <block content="widget/help" condition="widget/is_i18n">i18_key-help_for_this_field</block>
+msgid "i18_key-help_for_this_field"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span class="dlabel" content="widget/label" condition="widget/is_i18n">label</span>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <b content="widget/label" condition="widget/is_i18n">label</b>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span content="widget/label_edit" condition="widget/is_i18n">label</span>
+msgid "label"
+msgstr ""
Index: /WAeUP_SRP/branches/srpp_branch/i18n/myproject.pot
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/i18n/myproject.pot	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/i18n/myproject.pot	(revision 276)
@@ -0,0 +1,106 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: LL\n"
+"Language-Name: Language\n"
+"Preferred-encodings: utf-8 latin1\n"
+"Domain: default\n"
+
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <option value="." content="widget/title_or_id" attributes="value widget/getWidgetId" condition="widget/is_i18n">Type</option>
+msgid "Type"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="addwidget_button" type="submit" class="context" value="button_add" />
+msgid "button_add"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input onclick="history.back()" type="button" class="context" value="button_cancel" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_cancel"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_edit_button" type="submit" class="standalone" value="button_change" condition="not:creation" />
+msgid "button_change"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_create_button" type="submit" class="standalone" value="button_create" condition="creation" />
+msgid "button_create"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="destructive" value="button_delete" attributes="name string:deleterow_${repeat/row/index};
+#.                                 onclick python:'return window.confirm(\'%s\')' %
+#.                                   (cpsmcat('description_confirm_delete'), )" />
+msgid "button_delete"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveDown" value="button_move_down" attributes="name string:downrow_${repeat/row/index}" condition="not:repeat/row/end" />
+msgid "button_move_down"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveUp" value="button_move_up" attributes="name string:uprow_${repeat/row/index}" condition="not:repeat/row/start" />
+msgid "button_move_up"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input type="submit" class="standalone" value="button_publish" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_publish"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <block>at</block>
+msgid "cpsschema_at"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_hour_id">h</label>
+msgid "cpsschema_hour"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_minute_id">mn</label>
+msgid "cpsschema_minute"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <title fill-slot="title">
+#.     heading_accept_publication_of
+#.     ${item_id (tal replace="here/title_or_id")}
+#.   </title>
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "heading_accept_publication_of ${item_id}"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <block content="widget/help" condition="widget/is_i18n">i18_key-help_for_this_field</block>
+msgid "i18_key-help_for_this_field"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span class="dlabel" content="widget/label" condition="widget/is_i18n">label</span>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <b content="widget/label" condition="widget/is_i18n">label</b>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span content="widget/label_edit" condition="widget/is_i18n">label</span>
+msgid "label"
+msgstr ""
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/common_edit_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/common_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/common_edit_form.pt	(revision 276)
@@ -0,0 +1,23 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition python:1;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+      <h1 tal:condition="options/create|nothing"> Create a <span tal:content="options/type_name" />  </h1>
+      <h1 tal:condition="options/edition|nothing"> Edit a <span tal:content="options/type_name" /> </h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/cpsdocument_edit_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/cpsdocument_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/cpsdocument_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="not:creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/create_common.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/create_common.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/create_common.py	(revision 276)
@@ -0,0 +1,47 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Create a Faculty
+
+"""
+type_name = REQUEST.get('type_name')
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= type_name.lower(),
+                      schema_id= 'metadata',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      )
+if psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+    
+elif psm == 'valid':
+    oid = "%s" % ds.get('Title').replace(' ','')
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)    
+    object.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/create_common_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/create_common_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/create_common_form.pt	(revision 276)
@@ -0,0 +1,22 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition python:1;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+      <h1>Enter the Data for a <span tal:content="options/type_name" /> </h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/faculties.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/faculties.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/faculties.pt	(revision 276)
@@ -0,0 +1,36 @@
+<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="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="items context/contentValues"
+               >
+    <span> 
+      <h2>The Faculties</h2>
+      <table cellspacing="0" cellpadding="0">
+        <tal:block condition="python: len(items)">
+          <span tal:repeat="item items">
+            <tr tal:condition="python:item.portal_type == 'Faculty'">
+              <td colspan="1">
+                <a href="faculty" tal:attributes="href item/absolute_url" tal:content="item/title_or_id"></a>
+              </td>
+            </tr>
+          </span>
+        </tal:block>
+        <tr tal:condition="python:not len(items)">
+          <td>
+            nothing yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPLayouts.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPLayouts.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPLayouts.py	(revision 276)
@@ -0,0 +1,2430 @@
+#-*- mode: python; mode: fold -*-
+##parameters=
+# $Id$
+"""Return custom layouts types."""
+
+##def widget(type = 'String Widget',
+##            'data': {
+##                'title': '',
+##                'fields': ('nr_of_floors',),
+##                'is_required': True,
+##                'label': 'Nr of Floors ',
+##                'label_edit': 'Nr of Floors',
+##                'description': '',
+##                'help': 'Number of floors per block',
+##                'is_i18n': False,
+##                'readonly_layout_modes': [],
+##                'hidden_layout_modes': [],
+##                'hidden_readonly_layout_modes': [],
+##                'hidden_empty': 0,
+##                'hidden_if_expr': '',
+##                'widget_mode_expr': '',
+##                'css_class': '',
+##                'css_class_expr': '',
+##                'javascript_expr': '',
+##                'vocabulary': 'range5',
+##                'translated': False,
+##            },
+##        },
+
+Heading = { ###(
+         'type': 'Heading Widget',
+         'data': {
+                'fields': ['heading'],
+                'level': 1,
+                'is_i18n': 0,
+                'is_required': 1,
+                'label_edit': 'Headline',
+                'help': 'Short Headline',
+                'display_width': 40,
+                'size_max': 200,
+            },
+        }###)
+
+Text = { ###(
+            'type': 'Text Widget',
+            'data': {
+                'fields': ['text'],
+                'is_i18n': 1,
+                'label_edit': 'Text',
+                'label': 'Text',
+                'help': 'Short Description',
+                'css_class': 'description',
+                'width': 72,
+                'height': 5,
+                'render_format': 'text',
+                'hidden_layout_modes': (),
+            },
+        }###)
+
+Title = { ###(
+         'type': 'String Widget',
+         'data': {
+                'fields': ['Title'],
+                'is_i18n': 0,
+                'is_required': 1,
+                'label': 'Title',
+                'label_edit': 'Title',
+                'display_width': 40,
+                'size_max': 200,
+            },
+        }###)
+
+sc_id = { ###(
+        'type': 'String Widget',
+        'data': {
+                'title': 'SC ID',
+                'fields': ('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': ('sc_pin'),
+                'is_required': True,
+                'label': 'enter  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,
+            },
+        }
+###)
+
+sc_value = { ###(
+         'type': 'Float Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('sc_value',),
+                'is_required': True,
+                'label': 'SC Value',
+                'label_edit': 'Scratcard Value',
+                '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': 10,
+                'size_max': 10,
+            },
+        }
+###)
+
+Description = { ###(
+            'type': 'Text Widget',
+            'data': {
+                'fields': ['Description'],
+                'is_i18n': 1,
+                'label_edit': 'Description',
+                'label': 'Description',
+                'css_class': 'description',
+                'width': 72,
+                'height': 5,
+                'render_format': 'text',
+                'hidden_layout_modes': (),
+            },
+        }###)
+
+common_layout = {###(
+    'widgets': {
+        'LanguageSelector': {
+            'type': 'Document Language Select Widget',
+            'data': {
+                'fields': ['Language'],
+            },
+        },
+        'Title': Title,
+        'Description': Description,
+        '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_waeup_',
+        'rows': [
+            #[{'widget_id': 'LanguageSelector'}],
+            [{'widget_id': 'Title'},],
+            [{'widget_id': 'Description'},],
+            #[{'widget_id': 'LanguageSelectorCreation'}],
+            ],
+        },
+    }
+#
+###)
+
+firstname = { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'First Name',
+                'fields': ('firstname',),
+                'is_required': False,
+                'label': 'First Name',
+                'label_edit': 'First Name',
+                'description': 'First Name',
+                'help': '',
+                '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': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': True,
+                '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': '',
+                '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,
+            },
+        }
+
+###)
+
+email = { ###(
+            'type': 'Email Widget',
+            'data': {
+                'title': 'Email',
+                'fields': ('email',),
+                'is_required': True,
+                'label': 'Email',
+                'label_edit': 'Email',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'display_width': 40,
+                },
+            }
+###)
+
+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,
+            }
+        }
+
+###)
+
+pw = { ###(
+            'type': 'Password Widget',
+            'data': {
+                'title': 'Password',
+                'fields': ('pw',),
+                'is_required': False,
+                'label': 'New Password',
+                'label_edit': 'New Password',
+                'description': '',
+                'help': 'Enter a New Password',
+                'is_i18n': 0,
+                'readonly_layout_modes': [],
+                'hidden_layout_modes': [],
+                'hidden_readonly_layout_modes': [],
+                'hidden_empty': 0,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'display_width': 12,
+                'size_max': 8,
+                'password_widget': '',
+                'check_lower': 0,
+                'check_upper': 0,
+                'check_digit': 0,
+                'check_extra': 0,
+                'size_min': 5,
+            },
+        }###)
+
+rpw = { ###(
+            'type': 'Password Widget',
+            'data': {
+                'title': 'confirm Password',
+                'fields': ('rpw',),
+                'is_required': False,
+                'label': 'Confirm Password',
+                'label_edit': 'Confirm Password',
+                'description': '',
+                'help': 'Confirm the New Password',
+                'is_i18n': False,
+                'display_width': 12,
+                'size_max': 8,
+                'password_widget': 'pw',
+                'check_lower': 0,
+                'check_upper': 0,
+                'check_digit': 0,
+                'check_extra': 0,
+                'size_min': 5,
+                },
+            }###)
+
+username_hidden = { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'Username',
+                'fields': ('username',),
+                'hidden_layout_modes': ['create',],
+                },
+            }
+
+###)
+
+student_layout = { ###(
+    'widgets': {
+        'jamb_is_admitted': {
+            'type': 'Boolean Widget',
+            'data': {
+                'title': 'JAMB Admission',
+                'fields': ('jamb_is_admitted',),
+                'is_required': False,
+                'label': 'JAMB Admission',
+                'label_edit': 'JAMB Admission',
+                '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': 10,
+                'size_max': 0,
+            },
+        },
+
+        'faculty': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'Faculty',
+                'fields': ('faculty',),
+                'is_required': False,
+                'label': 'Faculty',
+                'label_edit': 'Faculty',
+                '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': 10,
+                'size_max': 0,
+            },
+        },
+        'accommodation': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'Accommodation',
+                'fields': ('accommodation',),
+                'is_required': False,
+                'label': 'Accommodation',
+                'label_edit': 'Accommodation',
+                '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': 10,
+                'size_max': 0,
+            },
+        },
+        'accommodation_sc_id': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'Accommodation SC ID',
+                'fields': ('accommodation_sc_id',),
+                'is_required': False,
+                'label': 'Accommodation SC ID',
+                'label_edit': 'Accommodation SC ID',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'accommodation_sc_pin': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'Accommodation SC PIN',
+                'fields': ('accommodation_sc_pin',),
+                'is_required': False,
+                'label': 'Accommodation SC PIN',
+                'label_edit': 'Accommodation SC PIN',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'accommodation_sc_value': { ###(
+            'type': 'Float Widget',
+            'data': {
+                'title': 'Accommodation SC Value',
+                'fields': ('accommodation_sc_value',),
+                'is_required': False,
+                'label': 'Accommodation SC Value',
+                'label_edit': 'Accommodation SC Value',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'accommodation_date': { ###(
+            'type': 'DateTime Widget',
+            'data': {
+                'title': 'Accommodation SC PIN',
+                'fields': ('accommodation_date',),
+                'is_required': False,
+                'label': 'Accommodation SC Date',
+                'label_edit': 'Accommodation SC Date',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'hostel_fee_sc_id': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'hostel_fee SC ID',
+                'fields': ('hostel_fee_sc_id',),
+                'is_required': False,
+                'label': 'Hostel Fee SC ID',
+                'label_edit': 'Hostel Fee SC ID',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'hostel_fee_sc_pin': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'hostel_fee SC PIN',
+                'fields': ('hostel_fee_sc_pin',),
+                'is_required': False,
+                'label': 'Hostel Fee SC PIN',
+                'label_edit': 'Hostel Fee SC PIN',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'hostel_fee_sc_value': { ###(
+            'type': 'Float Widget',
+            'data': {
+                'title': 'hostel_fee SC Value',
+                'fields': ('hostel_fee_sc_value',),
+                'is_required': False,
+                'label': 'Hostel Fee SC Value',
+                'label_edit': 'Hostel Fee SC Value',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'hostel_fee_date': { ###(
+            'type': 'DateTime Widget',
+            'data': {
+                'title': 'hostel_fee SC PIN',
+                'fields': ('hostel_fee_date',),
+                'is_required': False,
+                'label': 'Hostel Fee SC Date',
+                'label_edit': 'Hostel Fee SC Date',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'adm_check_sc_id': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'Admission check SC ID',
+                'fields': ('adm_check_sc_id',),
+                'is_required': False,
+                'label': 'Admission check SC ID',
+                'label_edit': 'Admission check SC ID',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'adm_check_sc_pin': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'Admission check SC PIN',
+                'fields': ('adm_check_sc_pin',),
+                'is_required': False,
+                'label': 'Admission check SC PIN',
+                'label_edit': 'Admission check SC PIN',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'adm_check_sc_value': { ###(
+            'type': 'Float Widget',
+            'data': {
+                'title': 'Admission check SC Value',
+                'fields': ('adm_check_sc_value',),
+                'is_required': False,
+                'label': 'Admission check SC Value',
+                'label_edit': 'Admission check SC Value',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'adm_check_date': { ###(
+            'type': 'DateTime Widget',
+            'data': {
+                'title': 'Admission check SC PIN',
+                'fields': ('adm_check_date',),
+                'is_required': False,
+                'label': 'Admission check SC Date',
+                'label_edit': 'Admission check SC Date',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'clearance_sc_id': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'Clearance SC ID',
+                'fields': ('clearance_sc_id',),
+                'is_required': False,
+                'label': 'Clearance SC ID',
+                'label_edit': 'Clearance SC ID',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'clearance_sc_pin': { ###(
+            'type': 'String Widget',
+            'data': {
+                'title': 'clearance SC PIN',
+                'fields': ('clearance_sc_pin',),
+                'is_required': False,
+                'label': 'Clearance SC PIN',
+                'label_edit': 'Clearance SC PIN',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'clearance_sc_value': { ###(
+            'type': 'Float Widget',
+            'data': {
+                'title': 'clearance SC Value',
+                'fields': ('clearance_sc_value',),
+                'is_required': False,
+                'label': 'Clearance SC Value',
+                'label_edit': 'Clearance SC Value',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+        'clearance_date': { ###(
+            'type': 'DateTime Widget',
+            'data': {
+                'title': 'clearance SC PIN',
+                'fields': ('clearance_date',),
+                'is_required': False,
+                'label': 'Clearance SC Date',
+                'label_edit': 'Clearance SC Date',
+                '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': 10,
+                'size_max': 0,
+            },
+        },###)
+    },
+    'layout': {
+        'style_prefix': 'layout_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'adm_check_sc_id', 'ncols': 1},],
+            [{'widget_id': 'adm_check_sc_pin', 'ncols': 1},],
+            [{'widget_id': 'adm_check_sc_value', 'ncols': 1},],
+            [{'widget_id': 'adm_check_date', 'ncols': 1},],
+            [{'widget_id': 'clearance_sc_id', 'ncols': 1},],
+            [{'widget_id': 'clearance_sc_pin', 'ncols': 1},],
+            [{'widget_id': 'clearance_sc_value', 'ncols': 1},],
+            [{'widget_id': 'clearance_date', 'ncols': 1},],
+            [{'widget_id': 'accommodation', 'ncols': 1},],
+            [{'widget_id': 'accommodation_sc_id', 'ncols': 1},],
+            [{'widget_id': 'accommodation_sc_pin', 'ncols': 1},],
+            [{'widget_id': 'accommodation_sc_value', 'ncols': 1},],
+            [{'widget_id': 'accommodation_date', 'ncols': 1},],
+            [{'widget_id': 'hostel_fee_sc_id', 'ncols': 1},],
+            [{'widget_id': 'hostel_fee_sc_pin', 'ncols': 1},],
+            [{'widget_id': 'hostel_fee_sc_value', 'ncols': 1},],
+            [{'widget_id': 'hostel_fee_date', 'ncols': 1},],
+        ]
+    },
+}###)
+
+student_personal_layout = { ###(
+    'widgets': {
+        'firstname': firstname,
+        'middlename': middlename,
+        'lastname': lastname,
+        'email': email,
+        'sex': sex,
+        'birthday': {
+            'type': 'Date Widget',
+            'data': {
+                'title': '',
+                'fields': ('birthday',),
+                'is_required': False,
+                'label': 'Day of birth',
+                'label_edit': 'Day of birth',
+                'description': 'Day of birth',
+                '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': 10,
+                'size_max': 0,
+            },
+        },
+    },
+    'layout': {
+        'style_prefix': 'layout_personal_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'firstname', 'ncols': 1},],
+            [{'widget_id': 'middlename', 'ncols': 1},],
+            [{'widget_id': 'lastname', 'ncols': 1},],
+            [{'widget_id': 'email', 'ncols': 1},],
+            [{'widget_id': 'sex', 'ncols': 1},],
+            [{'widget_id': 'birthday', 'ncols': 1},],
+        ]
+    },
+}###)
+
+student_personal_addon = { ###(
+    'widgets': {
+        'firstname': middlename,
+        'middlename': middlename,
+        'lastname': lastname,
+        'sex': sex,
+        'email': email,
+        'username': username_hidden,
+        'pw': pw,
+        'rpw': rpw,
+    },
+    'layout': {
+        'style_prefix': 'layout_eligibility_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'firstname', 'ncols': 1},],
+            #[{'widget_id': 'middlename', 'ncols': 1},],
+            #[{'widget_id': 'lastname', 'ncols': 1},],
+            #[{'widget_id': 'username', 'ncols': 1},],
+            [{'widget_id': 'email', 'ncols': 1},],
+            #[{'widget_id': 'pw', 'ncols': 1},],
+            #[{'widget_id': 'rpw', 'ncols': 1},],
+        ]
+    },
+}###)
+
+schoolresults = { ###(
+            'type': 'Ordered List Widget',
+            'data': {
+                'title': '',
+                'fields': ['schoolresults'],
+                'is_required': 0,
+                'label': 'School Results',
+                'label_edit': 'School Results',
+                'description': '',
+                'help': '',
+                'is_i18n': 0,
+                'readonly_layout_modes': [],
+                'hidden_layout_modes': ['create','edit'],
+                'hidden_readonly_layout_modes': [],
+                'hidden_empty': 0,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'width': 40,
+                'height': 5,
+                'format_empty': '',
+            },
+        }###)
+
+eli_widgets = { ###(
+        'jamb_results': {
+            'type': 'String Widget',
+            'data': {
+                'title': '',
+                'fields': ('jamb_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,
+            },
+        },
+        'jamb_aggregate': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'Aggregate',
+                'fields': ('jamb_aggregate',),
+                'is_required': False,
+                'label': 'JAMB Score',
+                'label_edit': 'JAMB Score',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+            },
+        },
+        'jamb_listing_date': {
+            'type': 'Date Widget',
+            'data': {
+                'title': 'Listing Date',
+                'fields': ('jamb_listing_date',),
+                'is_required': False,
+                'label': 'Listing Date',
+                'label_edit': 'Listing Date',
+                '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,
+            },
+        },
+        'faculty': {
+            'type': 'Select Widget',
+            'data': {
+                'title': 'Faculty',
+                'fields': ('faculty',),
+                'is_required': True,
+                'label': 'Faculty',
+                'label_edit': 'Faculty',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'get_faculties_voc',
+            },
+        },
+        'course': {
+            'type': 'Select Widget',
+            'data': {
+                'title': 'Study Course',
+                'fields': ('course',),
+                'is_required': True,
+                'label': 'Study Course',
+                'label_edit': 'Study Course',
+                'description': '',
+                'help': 'The course to study',
+                'vocabulary': 'get_departments_voc',
+                'is_i18n': False,
+            },
+        },
+        'schoolresults': schoolresults,
+    }###)
+
+student_eligibility = { ###(
+    'widgets': eli_widgets,
+    'layout': {
+        'style_prefix': 'layout_waeup_',
+        'layout_edit_method': 'layout_eligibility_create',
+        'layout_create_method': 'layout_eligibility_create',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'jamb_results', 'ncols': 1},],
+            [{'widget_id': 'jamb_aggregate', 'ncols': 1},],
+            #[{'widget_id': 'jamb_listing_date', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'course', 'ncols': 1},],
+            [{'widget_id': 'schoolresults', 'ncols': 1},],
+        ]
+    },
+}###)
+
+student_eligibility_edit = { ###(
+    'widgets': eli_widgets,
+    'layout': {
+        'style_prefix': 'layout_eligibility_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'jamb_results', 'ncols': 1},],
+            [{'widget_id': 'jamb_aggregate', 'ncols': 1},],
+            #[{'widget_id': 'jamb_listing_date', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'course', 'ncols': 1},],
+            [{'widget_id': 'schoolresults', 'ncols': 1},],
+        ]
+    },
+}###)
+
+student_schoolresults = { ###(
+    'widgets': {
+        'schoolresults': schoolresults,
+    },
+    'layout': {
+        'style_prefix': 'layout_results_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'jamb_results', 'ncols': 1},],
+            #[{'widget_id': 'jamb_aggregate', 'ncols': 1},],
+            #[{'widget_id': 'jamb_listing_date', 'ncols': 1},],
+            #[{'widget_id': 'faculty', 'ncols': 1},],
+            #[{'widget_id': 'course', 'ncols': 1},],
+            [{'widget_id': 'schoolresults', 'ncols': 1},],
+        ]
+    },
+}###)
+
+student_documents = { ###(
+    'widgets': {
+        'photo': { ###(
+            'type': 'Photo Widget',
+            'data': {
+                'title': '',
+                'fields': ('photo',),
+                'is_required': False,
+                'label': 'Personal Picture',
+                'label_edit': 'Personal Picture',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'deletable': True,
+                'size_max': 204800,
+                'display_width': 90,
+                'display_height': 180,
+                'allow_resize': True,
+                'render_position': 'left',
+                'configurable': 'nothing',
+                'keep_original': 1,
+            },
+        },###)
+        'birth_certificate': { ###(
+            'type': 'Image Widget',
+            'data': {
+                'title': '',
+                'fields': ('birth_certificate',),
+                'is_required': False,
+                'label': 'Birth Certificate',
+                'label_edit': 'Birth Certificate',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'deletable': True,
+                'size_max': 204800,
+                'display_width': 300,
+                'display_height':600,
+                'allow_resize': True,
+            },
+        },###)
+        'passport': { ###(
+            'type': 'Image Widget',
+            'data': {
+                'title': '',
+                'fields': ('passport',),
+                'is_required': False,
+                'label': 'Scanned Passport',
+                'label_edit': 'Scanned Passport',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'deletable': True,
+                'size_max': 204800,
+                'display_width': 300,
+                'display_height':600,
+                'allow_resize': True,
+            },
+        },###)
+        'results_first': { ###(
+            'type': 'Image Widget',
+            'data': {
+                'title': '',
+                'fields': ('results_first',),
+                'is_required': False,
+                'label': '1st Sitting Results',
+                'label_edit': '1st Sitting Results',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'deletable': True,
+                'size_max': 204800,
+                'display_width': 300,
+                'display_height':600,
+                'allow_resize': True,
+            },
+        },###)
+        'results_second': { ###(
+            'type': 'Image Widget',
+            'data': {
+                'title': '',
+                'fields': ('results_second',),
+                'is_required': False,
+                'label': '2nd Sitting Results',
+                'label_edit': '2nd Sitting Results',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'widget_mode_expr': '',
+                'css_class': '',
+                'css_class_expr': '',
+                'javascript_expr': '',
+                'deletable': True,
+                'size_max': 40960,
+                'display_width': 300,
+                'display_height':600,
+                'allow_resize': True,
+            },
+        },###)
+    },
+    'layout': {
+        'style_prefix': 'layout_personal_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'photo', 'ncols': 1},],
+            [{'widget_id': 'birth_certificate', 'ncols': 1},],
+            [{'widget_id': 'passport', 'ncols': 1},],
+            [{'widget_id': 'results_first', 'ncols': 1},],
+            [{'widget_id': 'results_second', 'ncols': 1},],
+        ]
+    },
+}
+
+###)
+
+scratch_card = { ###(
+    'widgets': {
+        'sc_id': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'SC ID',
+                'fields': ('sc_id',),
+                'is_required': True,
+                'label': 'Scratch card ID',
+                'label_edit': 'Scratch card ID',
+                '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': 10,
+                'size_max': 0,
+            },
+        },
+        'sc_pin': {
+            'type': 'Scratchcard Pin Widget',
+            'data': {
+                'title': 'SC PIN',
+                'fields': ('sc_pin'),
+                'is_required': True,
+                'label': 'Scratchcard Pin',
+                'label_edit': 'Scratchcard Pin',
+                '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': 10,
+                'size_max': 10,
+            },
+        },
+    },
+   'layout': {
+        'style_prefix': 'layout_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'reg_nr', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+jamb_id = { ###(
+           'type': 'StudentId Widget',
+           'data': {
+                'title': 'Registration Number',
+                'fields': ('reg_nr'),
+                'is_required': True,
+                'label': 'Registration Number',
+                'label_edit': 'Registration Number',
+                'description': '',
+                'help': 'This is the combination of 8 digits and 2 letters you are assigned when you purchase an examination form.',
+                '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,
+                 },
+           }
+
+###)
+
+admission = { ###(
+    'widgets': {
+        'sc_id': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'SC ID',
+                'fields': ('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': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 10,
+                'size_max': 0,
+            },
+        },
+        'sc_value': { ###(
+         'type': 'Float Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('sc_value',),
+                'is_required': False,
+                'label': 'SC Value',
+                'label_edit': 'Scratcard Value',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': ('create'),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 10,
+                'size_max': 10,
+            },
+        },###)
+        'sc_pin': {
+            'type': 'Scratchcard Pin Widget',
+            'data': {
+                'title': 'SC PIN',
+                'fields': ('sc_pin'),
+                'is_required': True,
+                'label': 'PIN',
+                'label_edit': 'PIN',
+                'description': '',
+                'help': 'PIN-(Personal Identification Number) is an 8 or 12 digit number on the reverse side of the scratch card which you can purchase from many Banks',
+                '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,
+            },
+        },
+        'jamb_id' : jamb_id,
+    },
+   'layout': {
+        'style_prefix': 'layout_sc_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            [{'widget_id': 'sc_value', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
+            [{'widget_id': 'jamb_id', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+clearance = { ###(
+    'widgets': {
+        'sc_id': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'SC ID',
+                'fields': ('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': ('sc_pin'),
+                'is_required': True,
+                'label': 'PIN',
+                'label_edit': 'PIN',
+                'description': '',
+                'help': 'PIN-(Personal Identification Number) is an 8 or 12 digit number on the reverse side of the scratch card which you can purchase from many Banks',
+                '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,
+            },
+        },
+        'sc_value': { ###(
+         'type': 'Float Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('sc_value',),
+                'is_required': False,
+                'label': 'SC Value',
+                'label_edit': 'Scratcard Value',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': ('create'),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 10,
+                'size_max': 10,
+            },
+        },###)
+        'lastname': { ###(
+         'type': 'String Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('lastname',),
+                'is_required': False,
+                'label': 'Surname',
+                'label_edit': 'Surname',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': ('create'),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': '',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 10,
+                'size_max': 10,
+            },
+        },###)
+        'jamb_id' : jamb_id,
+    },
+   'layout': {
+        'style_prefix': 'layout_sc_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            [{'widget_id': 'sc_value', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
+            [{'widget_id': 'jamb_id', 'ncols': 1},],
+            #[{'widget_id': 'lastname', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+admission_status = { ###(
+    'widgets': {
+       'quick_search': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'A search string',
+                'fields': ('admission_sc_id',),
+                'is_required': False,
+                'label': 'Quick Search',
+                'label_edit': 'Quick Search',
+                'description': 'Search',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': (),
+                'hidden_layout_modes': (),
+                'hidden_readonly_layout_modes': (),
+                'hidden_empty': False,
+                'hidden_if_expr': 'python:0',
+                'css_class': '',
+                'widget_mode_expr': '',
+                'display_width': 20,
+                'size_max': 0,
+            },
+        },
+
+    },
+   'layout': {
+        'style_prefix': 'layout_admission_status_',
+        'flexible_widgets': (),
+        'ncols': 2,
+        'rows': [
+            [{'widget_id': 'quick_search', 'ncols': 2},],
+        ]
+    },
+}
+###)
+
+jamb_widgets = { ###(
+        'reg_nr': {
+            'type': 'StudentId Widget',
+            'data': {
+                'title': 'registration nr',
+                'fields': ('reg_nr',),
+                'is_required': True,
+                'label': 'Registration Nr',
+                'label_edit': 'Registration Nr',
+                'description': 'The student id from JAMB',
+                'help': 'The Student ID from JAMB',
+                'is_i18n': False,
+                'display_width': 10,
+                'size_max': 10,
+            },
+        },
+        'firstname': firstname,
+        'middlename': middlename,
+        'lastname': lastname,
+        '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': sex,
+        'state': {
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('state',),
+                'is_required': False,
+                'label': 'State of Origin',
+                'label_edit': 'State of Origin',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'nigerian_states',
+            },
+        },
+        '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': 'JAMB Score',
+                'label_edit': 'JAMB Score',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+            },
+        },
+        'faculty': {
+            'type': 'Select Widget',
+            'data': {
+                'title': 'Faculty',
+                'fields': ('faculty',),
+                'is_required': True,
+                'label': 'Faculty',
+                'label_edit': 'Faculty',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'get_faculties_voc',
+            },
+        },
+        'course': {
+            'type': 'Select Widget',
+            'data': {
+                'title': 'Study Course',
+                'fields': ('course',),
+                'is_required': True,
+                'label': 'Study Course',
+                'label_edit': 'Study Course',
+                'description': '',
+                'help': '',
+                'vocabulary': 'get_departments_voc',
+                'is_i18n': False,
+            },
+        },
+        'listing_date': {
+            'type': 'Date Widget',
+            'data': {
+                'title': 'Listing Date',
+                'fields': ('listing_date',),
+                'is_required': False,
+                'label': 'Listing Date',
+                'label_edit': 'Listing Date',
+                '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',
+                'label_edit': 'Scratch Card PIN',
+                '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,
+            },
+        },
+    }
+###)
+
+jamb_layoutcreate = { ###(
+    'widgets': jamb_widgets,
+    'layout': {
+        'style_prefix': 'layout_jambcreate_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'reg_nr', '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': 'aggregate', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'course', 'ncols': 1},],
+            [{'widget_id': 'listing_date', 'ncols': 1},],
+            #[{'widget_id': '2nd_choice', 'ncols': 1},],
+            #[{'widget_id': '3rd_choice', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+jamb_layout = { ###(
+    'widgets': jamb_widgets,
+    'layout': {
+        'style_prefix': 'layout_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'reg_nr', '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': 'aggregate', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'course', 'ncols': 1},],
+            [{'widget_id': 'listing_date', 'ncols': 1},],
+            #[{'widget_id': '2nd_choice', 'ncols': 1},],
+            #[{'widget_id': '3rd_choice', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+admission_slip = { ###(
+    'widgets': jamb_widgets,
+    'layout': {
+        'style_prefix': 'layout_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'reg_nr', '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': 'aggregate', 'ncols': 1},],
+            [{'widget_id': 'faculty', 'ncols': 1},],
+            [{'widget_id': 'course', 'ncols': 1},],
+            [{'widget_id': 'listing_date', 'ncols': 1},],
+            #[{'widget_id': '2nd_choice', 'ncols': 1},],
+            #[{'widget_id': '3rd_choice', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+course = { ###(
+    'widgets': {
+        'heading': {
+         'type': 'String Widget',
+         'data': {
+                'fields': ['heading'],
+                'is_i18n': 0,
+                'is_required': 1,
+                'label': 'Title',
+                'label_edit': 'Title',
+                'help': 'Course Title',
+                'display_width': 40,
+                'size_max': 40,
+            },
+        },
+        'text': Text,
+        'level': {
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('level',),
+                'is_required': True,
+                'label': 'Level',
+                'label_edit': 'Level',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'courselevel',
+            },
+        },
+        'code': {
+            'type': 'String Widget',
+            'data': {
+                'title': 'Code',
+                'fields': ('code',),
+                'is_required': True,
+                'label': 'Code',
+                'label_edit': 'Code',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'display_width': 10,
+                'size_max': 0,
+            },
+        },
+        'semester': {
+            'type': 'Boolean Widget',
+            'data': {
+                'title': '',
+                'fields': ('semester',),
+                'is_required': True,
+                'label': 'Semester',
+                'label_edit': 'Semester',
+                'label_false': 'Second Semester',
+                'label_true': 'First Semester',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'display_width': 10,
+                'size_max': 0,
+            },
+        },
+        'credit': {
+            'type': 'Int Widget',
+            'data': {
+                'title': '',
+                'fields': ('credit',),
+                'is_required': True,
+                'label': 'Credit',
+                'label_edit': 'Credit',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'display_width': 2,
+                'size_max': 0,
+            },
+        },
+        'core_elective': {
+            'type': 'Boolean Widget',
+            'data': {
+                'title': '',
+                'fields': ('core_elective',),
+                'is_required': True,
+                'label': 'Core or elective',
+                'label_edit': 'Core or elective',
+                'label_true': 'Core Course',
+                'label_false': 'Elective Course',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'display_width': 10,
+                'size_max': 0,
+            },
+        },
+    },
+   'layout': {
+        'style_prefix': 'layout_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'heading', 'ncols': 1},],
+            #[{'widget_id': 'Title', 'ncols': 1},],
+            [{'widget_id': 'text', 'ncols': 1},],
+            [{'widget_id': 'level', 'ncols': 1},],
+            [{'widget_id': 'code', 'ncols': 1},],
+            [{'widget_id': 'semester', 'ncols': 1},],
+            [{'widget_id': 'credit', 'ncols': 1},],
+            [{'widget_id': 'core_elective', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+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_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'points', 'ncols': 1},],
+            [{'widget_id': 'grade', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+accommodation = { ###(
+    'widgets': {
+        'heading': {
+         'type': 'String Widget',
+         'data': {
+                'fields': ['heading'],
+                'level': 2,
+                'is_i18n': 0,
+                'is_required': 1,
+                'label': 'Hall Name',
+                'label_edit': 'Hall Name',
+                'help': '',
+                'display_width': 40,
+                'size_max': 40,
+            },
+        },
+        'text': Text,
+        'which_sex': {
+            'type': 'Boolean Widget',
+            'data': {
+                'title': '',
+                'fields': ('which_sex',),
+                'is_required': False,
+                'label': 'Sex',
+                'label_edit': 'Sex',
+                'label_false': 'male',
+                'label_true': 'female',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+            },
+        },
+        'nr_of_blocks': {
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('nr_of_blocks',),
+                'is_required': True,
+                'label': 'Nr of Blocks',
+                'label_edit': 'Nr of Blocks',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'range10',
+            },
+        },
+        'nr_of_floors': {
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('nr_of_floors',),
+                'is_required': True,
+                'label': 'Nr of Floors ',
+                'label_edit': 'Nr of Floors',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'range5',
+            },
+        },
+        'rooms_per_floor': {
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('rooms_per_floor',),
+                'is_required': True,
+                'label': 'Rooms per Floor',
+                'label_edit': 'Rooms per Floor',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'range50',
+            },
+        },
+        'beds_per_room': {
+            'type': 'Select Widget',
+            'data': {
+                'title': '',
+                'fields': ('beds_per_room',),
+                'is_required': True,
+                'label': 'Beds per Room',
+                'label_edit': 'Beds per Room',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'vocabulary': 'range10',
+            },
+        },
+        'beds_assigned': {
+            'type': 'Int Widget',
+            'data': {
+                'title': '',
+                'fields': ('beds_assigned',),
+                'is_required': True,
+                'label': 'Nr. of Assigned Beds',
+                'label_edit': 'Nr. of Assigned Beds',
+                'description': '',
+                'help': 'Number of beds already assigned to students',
+                'is_i18n': False,
+            },
+        },
+        'beds_assigned_list': {
+            'type': 'Ordered List Widget',
+            'data': {
+                'title': '',
+                'fields': ('beds_assigned_list',),
+                'label': 'Assigned Beds',
+                'label_edit': 'Assigned Beds',
+                'description': '',
+                'help': 'List of beds already assigned to students',
+                'is_i18n': False,
+            },
+        },
+    },
+   'layout': {
+        'style_prefix': 'layout_waeup_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            [{'widget_id': 'heading', 'ncols': 1},],
+            #[{'widget_id': 'Title', 'ncols': 1},],
+            [{'widget_id': 'text', 'ncols': 1},],
+            [{'widget_id': 'which_sex', 'ncols': 1},],
+            [{'widget_id': 'nr_of_blocks', 'ncols': 1},],
+            [{'widget_id': 'nr_of_floors', 'ncols': 1},],
+            [{'widget_id': 'rooms_per_floor', 'ncols': 1},],
+            [{'widget_id': 'beds_per_room', 'ncols': 1},],
+            [{'widget_id': 'beds_assigned', 'ncols': 1},],
+            [{'widget_id': 'beds_assigned_list', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+study_level = { ###(
+    'widgets': {
+      'sc_id': { ###(
+        'type': 'String Widget',
+        'data': {
+                'title': 'SC ID',
+                'fields': ('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': ('sc_pin'),
+                'is_required': True,
+                'label': 'Enter  PIN',
+                'label_edit': 'Enter Scratchcard Pin with the value above',
+                'description': '',
+                'help': 'Please enter a Scratchcard Pin valid for Registration of Next Level',
+                '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,
+            },
+        },###)
+      'sc_value': { ###(
+         'type': 'Float Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('sc_value',),
+                'is_required': False,
+                'label': 'Scratcard Value',
+                'label_edit': 'Scratcard Value',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': ('create'),
+                '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_slregister_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            [{'widget_id': 'sc_value', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
+        ]
+    },
+}###)
+
+accobook = { ###(
+    'widgets': {
+     'sc_id': { ###(
+        'type': 'String Widget',
+        'data': {
+                'title': 'SC ID',
+                'fields': ('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': ('sc_pin'),
+                'is_required': True,
+                'label': 'enter  PIN',
+                'label_edit': 'Enter an Accommodation PIN',
+                'description': '',
+                'help': '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,
+            },
+        },###)
+    'sc_value': { ###(
+         'type': 'Float Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('sc_value',),
+                'is_required': False,
+                'label': 'SC Value',
+                'label_edit': 'Scratcard Value',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': ('create'),
+                '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_sc_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            [{'widget_id': 'sc_value', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
+        ]
+    },
+}
+###)
+
+accopay = { ###(
+    'widgets': {
+     'sc_id': { ###(
+        'type': 'String Widget',
+        'data': {
+                'title': 'SC ID',
+                'fields': ('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': ('sc_pin'),
+                'is_required': True,
+                'label': 'enter  PIN',
+                'label_edit': 'Enter Hostel Payment PIN',
+                'description': '',
+                'help': 'Enter PIN valid for Paying Hostel Fee',
+                '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,
+            },
+        },###)
+    'sc_value': { ###(
+         'type': 'Float Widget',
+         'data': {
+                'title': 'Scratch card value',
+                'fields': ('sc_value',),
+                'is_required': False,
+                'label': 'SC Value',
+                'label_edit': 'Scratcard Value',
+                'description': '',
+                'help': '',
+                'is_i18n': False,
+                'readonly_layout_modes': ('create'),
+                '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_sc_',
+        'flexible_widgets': (),
+        'ncols': 1,
+        'rows': [
+            #[{'widget_id': 'sc_id', 'ncols': 1},],
+            [{'widget_id': 'sc_value', 'ncols': 1},],
+            [{'widget_id': 'sc_pin', 'ncols': 1},],
+        ]
+    },
+}###)
+
+layouts = {}
+layouts['university'] = common_layout
+layouts['waeup_common'] = common_layout
+layouts['student'] = student_layout
+layouts['study_level'] = study_level
+layouts['student_documents'] = student_documents
+layouts['student_personal'] = student_personal_layout
+layouts['student_personal_addon'] = student_personal_addon
+layouts['student_eligibility'] = student_eligibility
+layouts['student_eligibility_edit'] = student_eligibility_edit
+layouts['student_schoolresults'] = student_schoolresults
+layouts['accommodation'] = accommodation
+layouts['accobook'] = accobook
+layouts['accopay'] = accopay
+layouts['scratch_card'] = scratch_card
+layouts['admission'] = admission
+layouts['clearance'] = clearance
+layouts['admission_slip'] = admission_slip
+layouts['jambcreate'] = jamb_layoutcreate
+layouts['jamb'] = jamb_layout
+layouts['faculty'] = common_layout
+layouts['department'] = common_layout
+layouts['course'] = course
+layouts['admission_status'] = admission_status
+return layouts
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPSchemas.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPSchemas.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPSchemas.py	(revision 276)
@@ -0,0 +1,884 @@
+#-*- mode: python; mode: fold -*-
+# $Id$
+
+sc_id = { ###(
+        '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': 'SectionReader',
+            'acl_write_expr': '',
+            'read_ignore_storage': False,
+            'read_process_expr': '',
+            'read_process_dependent_fields': (),
+            'write_ignore_storage': False,
+            'write_process_expr': '',
+            },
+        }
+###)
+
+sc_pin = { ###(
+        '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': 'SectionReader',
+            'acl_write_expr': '',
+            'read_ignore_storage': False,
+            'read_process_expr': '',
+            'read_process_dependent_fields': (),
+            'write_ignore_storage': False,
+            'write_process_expr': '',
+            },
+        }
+        
+###)
+
+sc_value = { ###(
+        'type': 'CPS Float Field',
+        'data': {
+            'default_expr': 'python:0.',
+            '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': '',
+            },
+        }
+###)
+sc_date = { ###(
+        'type': 'CPS DateTime Field',
+        'data': {
+            'default_expr': 'python:500.',
+            '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': '',
+            },
+        }
+###)
+
+university_schema = { ###(
+}
+###)
+
+students_folder_schema = { ###(
+}
+###)
+
+academics_folder_schema = { ###(
+}
+###)
+
+student_schema = { ###(
+     'jamb_is_admitted': {
+        'type': 'CPS Boolean Field',
+        'data': {
+            'default_expr': 'python:False',
+            'is_searchabletext': 0,
+            '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': '',
+        },
+    },
+    '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': '',
+        },
+    },
+    'course': {
+        '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': '',
+             },
+        },
+    'adm_check_sc_id' : sc_id, 
+    'adm_check_sc_pin' : sc_pin, 
+    'adm_check_sc_value' : sc_value, 
+    'adm_check_date' : {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    }, 
+    'clearance_sc_id' : sc_id, 
+    'clearance_sc_pin' : sc_pin, 
+    'clearance_sc_value' : sc_value, 
+    'clearance_date' : {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 0,
+            'acl_write_roles': 'SectionReader',
+        },
+    }, 
+    'accommodation' : { ###(
+        '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': '',
+             },
+        }, ###)
+    'accommodation_sc_id' : sc_id, 
+    'accommodation_sc_pin' : sc_pin, 
+    'accommodation_sc_value' : sc_value, 
+    'accommodation_date' : {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 0,
+            'acl_write_roles': 'SectionReader',
+        },
+    }, 
+    'hostel_fee_sc_id' : sc_id, 
+    'hostel_fee_sc_pin' : sc_pin, 
+    'hostel_fee_sc_value' : sc_value, 
+    'hostel_fee_date' : {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 0,
+            'acl_write_roles': 'SectionReader',
+        },
+    }, 
+}
+###)
+
+student_accommodation = { ###(
+    'sc_id': sc_id,
+    'sc_pin': sc_pin,
+    'sc_value': { ###(
+        'type': 'CPS Float Field',
+        'data': {
+            'default_expr': 'python:500.',
+            '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': '',
+            },
+        },###)
+    'accommodation': {
+        '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_hostel_fee = { ###(
+    'sc_id': sc_id,
+    'sc_pin': sc_pin,
+    'sc_value': { ###(
+        'type': 'CPS Float Field',
+        'data': {
+            'default_expr': 'python:2500.',
+            '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': '',
+            },
+        },###)
+    'accommodation': {
+        '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_admission = { ###(
+    'sc_id': sc_id,
+    'sc_pin': sc_pin,
+    'sc_value': { ###(
+        'type': 'CPS Float Field',
+        'data': {
+            'default_expr': 'python:300.',
+            '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': '',
+            },
+        },###)
+    'reg_nr': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+        },
+    },
+}
+###)
+
+student_clearance = { ###(
+    'sc_id': sc_id,
+    'sc_pin': sc_pin,
+    'sc_value': { ###(
+        'type': 'CPS Float Field',
+        'data': {
+            'default_expr': 'python:800.',
+            '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': '',
+            },
+        },###)
+    'reg_nr': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+        },
+    },
+    'lastname': {
+        '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': '',
+             },
+        },
+}###)
+
+study_level = { ###(
+    'sc_id': sc_id,
+    'sc_pin': sc_pin,
+    'sc_value': { ###(
+        'type': 'CPS Float Field',
+        'data': {
+            'default_expr': 'python:1000.',
+            '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 = { ###(
+     '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,
+        },
+    },
+     'username': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'email': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 1,
+        },
+    },
+     'sex': {
+        'type': 'CPS Boolean Field',
+        'default_expr': 'python:True',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'birthday': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'age': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+}
+###)
+
+student_eligibility = { ###(
+}###)
+
+student_documents = { ###(
+     'photo': {
+        'type': 'CPS Image Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'birth_certificate': {
+        'type': 'CPS Image Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'passport': {
+        'type': 'CPS Image Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'results_first': {
+        'type': 'CPS Image Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'results_second': {
+        'type': 'CPS Image Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+}
+###)
+
+student_eligibility = { ###(
+    'reg_nr': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+        },
+    },
+    'jamb_results': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+        },
+    },
+    'jamb_aggregate': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'faculty': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': False,
+        },
+    },
+    'course': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': False,
+        },
+    },
+    'jamb_listing_date': {
+        'type': 'CPS DateTime Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'schoolresults': { ###(
+        'type': 'CPS List List Field',
+        'data': {
+            'is_searchabletext': False,
+            },
+        },###)
+}
+###)
+
+jamb_schema = { ###(
+    '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,
+        },
+    },
+    'course': {
+        '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:',
+##            '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': '',
+##        },
+##    },
+###)
+}
+
+
+###)
+
+course_results_schema = { ###(
+     'points': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+     'grade': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': 0,
+        },
+    },
+}
+#
+###)
+
+faculty_schema = { ###(
+}###)
+
+department_schema = { ###(
+}###)
+
+course_schema = { ###(
+##    'Title': {
+##        'type': 'CPS String Field',
+##        'data': {
+##            'default_expr': '',
+##            'is_searchabletext': True,
+##        },
+##    },
+    'heading': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'text': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'level': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+        },
+    },
+    'code': {
+        'type': 'CPS String Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': True,
+        },
+    },
+    'semester': {
+        'type': 'CPS Boolean Field',
+        'data': {
+            'default_expr': 'python:True',
+            'is_searchabletext': False,
+        },
+    },
+    'credit': {
+        'type': 'CPS Int Field',
+        'data': {
+            'default_expr': 'string:',
+            'is_searchabletext': False,
+        },
+    },
+    'core_elective': {
+        'type': 'CPS Boolean Field',
+        'data': {
+            'default_expr': 'python:True',
+            'is_searchabletext': False,
+        },
+    },
+}###)
+
+accommodation = { ###(
+    'heading': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'text': {
+        'type': 'CPS String Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'which_sex': {
+        'type': 'CPS Boolean Field',
+        'data': {
+            'is_searchabletext': True,
+        },
+    },
+    'nr_of_blocks': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'nr_of_floors': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'rooms_per_floor': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'beds_per_room': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'beds_assigned': {
+        'type': 'CPS Int Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+    'beds_assigned_list': {
+        'type': 'CPS String List Field',
+        'data': {
+            'is_searchabletext': False,
+        },
+    },
+}###)
+
+##scratch_card = { ###(
+####   'allow_discussion': {
+####        'type': 'CPS Int Field',
+####        'data': {
+####            'default_expr': 'python:0',
+####            'is_searchabletext': 0,
+####            },
+####        },
+##     'sc_id': {
+##        'type': 'CPS String Field',
+##        'data': {
+##            'default_expr': '',
+##            'is_searchabletext': 0,
+##            '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': '',
+##        },
+##    },
+##     'sc_pin': {
+##        'type': 'CPS String Field',
+##        'data': {
+##            'default_expr': '',
+##            'is_searchabletext': 0,
+##            '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': '',
+##        },
+##    },
+##}
+###)
+
+schemas = {}
+
+schemas['university'] = university_schema
+schemas['academics'] = academics_folder_schema
+schemas['students'] = students_folder_schema
+schemas['student'] = student_schema
+schemas['student_admission'] = student_admission
+schemas['student_clearance'] = student_clearance
+schemas['student_eligibility'] = student_eligibility
+schemas['student_documents'] = student_documents
+schemas['student_accommodation'] = student_accommodation
+schemas['student_hostel_fee'] = student_hostel_fee
+schemas['study_level'] = study_level
+schemas['course_results'] = course_results_schema
+schemas['student_personal'] = student_personal_schema
+schemas['accommodation'] = accommodation
+schemas['jamb'] = jamb_schema
+#schemas['scratch_card'] = scratch_card
+schemas['faculty'] = faculty_schema
+schemas['department'] = department_schema
+schemas['course'] = course_schema
+
+return schemas
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPTypes.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPTypes.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPTypes.py	(revision 276)
@@ -0,0 +1,1018 @@
+#-*- mode: python; mode: fold -*-
+# $Id$
+"""Return custom document types."""
+# permissions
+from Products.CMFCore.permissions import View
+from Products.CMFCore.permissions import ModifyPortalContent
+from Products.CMFCore.permissions import AddPortalContent
+from Products.WAeUP.WAeUPPermissions import UniversityManage, StudentManage,FacultyManage,\
+                                            DepartmentManage,CourseManage
+ChangePermissions = 'Change permissions'
+
+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': 'university_view',
+    'global_allow': 1,
+    'filter_content_types': 1,
+    'allowed_content_types': ('Chat','FAQ','CPSCalendar','Forum','StudentsFolder','Faculty','AccoFolder','Section','CPSProxyDocument'),
+    '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'],
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'actions': ({'id': 'view',
+                 'name': 'Standard View',
+                 #'action': 'university_view',
+                 'action': 'temporary_view_all',
+                 #'condition': "python:member and 'Manager' in member.getRoles()",
+                 'permissions': (View,)},
+##                {'id': 'add_accommodation',
+##                 'name': 'Add an Accommodation Hall',
+##                 'condition': "python:member and not 'Student'in member.getRoles()",
+##                 'action'    : 'string:${object/absolute_url}/add_accommodation',
+##                 #'action': 'folder_factories',
+##                 'permissions': (UniversityManage,)},
+                 {'id': 'new_content',
+                 'name': 'New content',
+                 'condition': "python:member and  'Manager' in member.getRoles()",
+                 'action': 'string:${object_url}/folder_factories',
+                 'permission': (ModifyPortalContent,),
+                 'category': 'object',
+                 'visible': True,},
+                {'id': 'contents',
+                 'name': 'action_folder_contents',
+                 'action': 'folder_contents',
+                 'condition': "python:member and  'Manager' in member.getRoles()",
+                 'permissions': (ModifyPortalContent,)},
+                {'id': 'edit',
+                 'name': 'action_edit',
+                 'action': 'cpsdocument_edit_form',
+                 'condition': "python:member and 'Manager' in member.getRoles()",
+                 'permissions': (ModifyPortalContent,UniversityManage,)},
+                {'id': 'metadata',
+                 'name': 'action_metadata',
+                 'action': 'cpsdocument_metadata',
+                 'condition': "python:member and 'Manager' in member.getRoles()",
+                 'permissions': (ModifyPortalContent,)},
+                 {'id': 'localroles',
+                 'name': 'delegate',
+                 'action': 'folder_localrole_form',
+                 'permissions': (ModifyPortalContent),
+                 'visible' : 0,
+                 },
+                 )
+        }
+###)
+
+academics_folder_type = { ###(
+    'title': 'WAeUP Academics Folder',
+    'description': 'The WAeUP Academics Folder',
+    'content_icon': '',
+    'content_meta_type': 'AcademicsFolder',
+    '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': 'Standard View',
+                 #'action': 'academics_view',
+                 'action': 'temporary_view_all',
+                 'condition': "",
+                 'permissions': (View,)},
+                {'id': 'add_faculty',
+                 'name': 'Add Faculty',
+                 'condition': "python:member and 'UniversityManager'in member.getRoles()",
+                 'action'    : 'string:${object/absolute_url}/create_common?type_name=Faculty',
+                 'permissions': (UniversityManage,)},
+                {'id': 'contents',
+                 'name': 'action_folder_contents',
+                 'action': 'string:${object/absolute_url}/folder_contents',
+                 'permissions': (UniversityManage,),
+                 'visible' : 1,
+                 },
+                 {'id': 'localroles',
+                 'name': 'delegate',
+                 'action': 'folder_localrole_form',
+                 'permissions': (UniversityManage,),
+                 'visible': False,
+                 },
+                )
+      }
+###)
+
+scratch_card = { ###(
+    'title': 'WAeUP Scratchcard',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'Scratch Card',
+    'product': 'CPSDocument',
+    'factory': 'addCPSDocument',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'document',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ('scratch_card'),
+    'layouts': ('scratch_card'),
+    'cps_workspace_wf': 'waeup_workspace_wf',
+    'cps_section_wf': 'waeup_section_wf',
+##    'actions': (
+##         {'id': 'view',
+##          'name': 'Standard View',
+##          'action': 'string:${object_url}/document_view',
+##          'condition': '',
+##          'permission': ('View',),
+##          'category': 'object',
+##          'visible': True,},
+##         {'id': 'new_content',
+##          'name': 'Add a scratch card',
+##          'action': 'string:${object_url}/folder_factories',
+##          'condition': "python: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: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,},
+##    )
+}
+#
+###)
+
+students_folder_type = { ###(
+    'title': 'WAeUP Student Folder',
+    'description': 'The WAeUP Student Folder',
+    'content_icon': 'students_folder.gif',
+    'content_meta_type': 'StudentsFolder',
+    'product': 'CPSDefault',
+    'factory': 'addFolder',
+    'immediate_view': 'folder_view',
+    'global_allow': 1,
+    'filter_content_types': 1,
+    'allowed_content_types': ('Student'),
+    #'allowed_content_types': ('Student','ScratchCard'),
+    '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',],
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'actions': ({'id': 'view',
+                 'name': 'Standard View',
+                 'action': 'temporary_view_all',
+                 'permissions': (View,)},
+##                {
+##                'id'        : 'add_content',
+##                'name'      : 'Add Content',
+##                'action'    : 'string:${object/absolute_url}/folder_factories',
+##                'condition': "python:member and 'Manager' in member.getRoles()",
+##                'permissions': (StudentManage,)},
+                {
+                'id'        : 'add_jamb',
+                'name'      : 'Add JAMB Data',
+                'action'    : 'string:${object/absolute_url}/create_jamb',
+                'permissions': (UniversityManage,StudentManage)},
+                {
+                'id'        : 'check_admission',
+                'name'      : 'Check Admission Status',
+                'action'    : 'string:${object/absolute_url}/check_admission',
+                'condition':  'object/portal_membership/isAnonymousUser',
+                'permission': (View,)},
+                {
+                'id'        : 'admission_list',
+                'name'      : 'Clearance Eligibility Process',
+                'action'    : 'string:${object/absolute_url}/clearance',
+                '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',
+                 'name': 'delegate',
+                 'action': 'folder_localrole_form',
+                 'permissions': (ModifyPortalContent,UniversityManage),
+                 'visible' : 0,
+                },
+                {'id': 'contents',
+                 'name': 'action_folder_contents',
+                 'action': 'string:${object/absolute_url}/folder_contents',
+                 'permissions': (UniversityManage,),
+                 'visible' : 0,
+                 },
+##                {'id': 'edit',
+##                 'name': 'action_edit',
+##                 'action': 'cpsdocument_edit_form',
+##                 'permissions': (UniversityManage,)},
+##                {'id': 'metadata',
+##                 'name': 'action_metadata',
+##                 'action': 'cpsdocument_metadata',
+##                 'permissions': (UniversityManage,)},
+##                {'id': 'localroles',
+##                 'name': 'action_local_roles',
+##                 'action': 'folder_localrole_form',
+##                 'permissions': (UniversityManage,)},
+    )
+}
+###)
+
+student_type = { ###(
+    'title': 'WAeUP Student',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'Student',
+    'product': 'WAeUP',
+    'factory': 'addStudent',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Jamb','StudentDocuments','StudentPersonal','StudyLevel'),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'folder',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ['metadata','common','student'],
+    'layouts': ['waeup_common','student'],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata'],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'string:${object_url}/student_index_html',
+          'action': 'string:${object_url}/temporary_view_all',
+          'condition':  "python:object.getContent().memberIsOwner() or (member and 'UniversityManager'in member.getRoles())",
+          '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': (ModifyPortalContent),
+          'visible' : 0,
+          },
+          {'id': 'contents',
+          'name': 'action_folder_contents',
+          'action': 'string:${object/absolute_url}/folder_contents',
+          'permissions': (UniversityManage,),
+          'visible' : 0,
+          },
+          {
+          'id'        : 'PERSONAL',
+          'name'      : 'Personal Data',
+          'action'    : 'string:${object/absolute_url}/PERSONAL',
+          'condition':  "python: object.getContent().memberIsOwner() and getattr(object,'PERSONAL',None)",
+          'permission': (ModifyPortalContent,)
+          },
+          {
+          'id'        : 'eligibility',
+          'name'      : 'Eligibility Data',
+          'action'    : 'ELIGIBILITY',
+          'condition':  'object/memberIsOwner',
+          'permission': (ModifyPortalContent,),
+          'visible': True,
+          },
+          {
+          'id'        : 'DOCUMENTS',
+          'name'      : 'Scanned Documents',
+          'action'    : 'string:${object/absolute_url}/DOCUMENTS',
+          'condition':  "python: object.getContent().memberIsOwner() and getattr(object,'PERSONAL',None)",
+          'permission': (ModifyPortalContent,)
+          },
+          {
+          'id'        : 'register_study_level',
+          'name'      : 'Register for Next Level',
+          'action'    : 'string:${object/absolute_url}/register_level',
+          'condition':  'python: object.getContent().memberIsOwner() and not object.getContent().isRegisteredForCurrentLevel()',
+          'permission': (ModifyPortalContent,)
+          },
+          {
+          'id'        : 'book_accomodation',
+          'name'      : 'Book Accomodation',
+          'action'    : 'string:${object/absolute_url}/book_accommodation',
+          'condition':  'python: object.getContent().memberIsOwner() and not object.getContent().accommodationIsBooked()',
+          'permission': (ModifyPortalContent,)
+          },
+          {
+          'id'        : 'pay_hostel_fee',
+          'name'      : 'Pay Hostel Fee',
+          'action'    : 'string:${object/absolute_url}/pay_hostel_fee',
+          'condition':  'python: object.getContent().memberIsOwner() and not object.getContent().accommodationIsPayed()',
+          'permission': (ModifyPortalContent,)
+          },
+          {
+          'id'        : 'JAMB',
+          'name'      : '(JAMB Data)',
+          'action'    : 'string:${object/absolute_url}/JAMB',
+          'condition':  'python:object.getContent().memberIsOwner()',
+          'permission': (ModifyPortalContent,),
+          'visible': True,
+          },
+          )
+}###)
+
+jamb_type = { ###(
+    'title': "JAMB data",
+    'description': 'The data from JAMB',
+    'content_icon': '',
+    'content_meta_type': 'Jamb',
+    'product': 'WAeUP',
+    'factory': 'addJamb',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'document',
+    'cps_display_as_document_in_listing': True,
+    'cps_is_portalbox': False,
+    #'schemas': ['common','metadata','jamb'],
+    'schemas': ['jamb'],
+    'layouts': ['jamb'],
+    'flexible_layouts': (),
+    'storage_methods': ('admitted:store_admission_pin'),
+    'cps_workspace_wf': 'workspace_content_wf',
+    'cps_section_wf': 'section_content_wf',
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'string:${object_url}/jamb_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': (View,),
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/waeup_edit_form',
+          'condition': '',
+          'permission': (StudentManage),
+          },
+         {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (ModifyPortalContent),
+          'visible' : 0,
+          },
+          {
+          'id'        : 'add_content',
+          'name'      : 'Add Content',
+          'action'    : 'string:${object/absolute_url}/folder_factories',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (StudentManage,)},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,)},
+          )
+}
+###)
+
+student_personal_type = { ###(
+    'title': "Student personal data",
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'StudentPersonal',
+    'product': 'WAeUP',
+    'factory': 'addStudentPersonal',
+    'immediate_view': 'temporary_view_all',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'document',
+    'cps_display_as_document_in_listing': True,
+    'cps_is_portalbox': False,
+    'schemas': ['student_personal'],
+    'layouts': ['student_personal'],
+    'flexible_layouts': (),
+    'storage_methods': (),
+    'cps_workspace_wf': 'workspace_content_wf',
+    'cps_section_wf': 'section_content_wf',
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          'action': 'temporary_view_all',
+          'permission': (View,),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/student_personal_edit_form',
+          'permission': (ModifyPortalContent,),
+          'category': 'object',
+          'visible': True,
+          },
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,)},
+          )
+}
+###)
+
+student_eligibility_type = { ###(
+    'title': "Student eligibility data",
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'StudentEligibility',
+    'product': 'WAeUP',
+    'factory': 'addStudentEligibility',
+    'immediate_view': 'temporary_view_all',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'document',
+    'cps_display_as_document_in_listing': True,
+    'cps_is_portalbox': False,
+    'schemas': ['student_eligibility'],
+    'layouts': ['student_eligibility'],
+    'flexible_layouts': (),
+    'storage_methods': (),
+    'cps_workspace_wf': 'workspace_content_wf',
+    'cps_section_wf': 'section_content_wf',
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          'action': 'temporary_view_all',
+          'permission': (View,),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/eligibility',
+          'permission': (ModifyPortalContent,),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,),
+          'visible': False,},
+          )
+}
+###)
+
+student_documents = { ###(
+    'title': "Students documents data",
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'StudentDocuments',
+    'product': 'WAeUP',
+    'factory': 'addStudentDocuments',
+    'immediate_view': 'temporary_view_all',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'document',
+    'cps_display_as_document_in_listing': True,
+    'cps_is_portalbox': False,
+    'schemas': ['student_documents'],
+    'layouts': ['student_documents'],
+    'flexible_layouts': (),
+    'storage_methods': (),
+    'cps_workspace_wf': 'workspace_content_wf',
+    'cps_section_wf': 'section_content_wf',
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          'action': 'string:${object_url}/temporary_view_all',
+          'permission': (View),
+          'category': 'object',
+          'visible': True,
+          },
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/student_documents_edit_form',
+          'permission': (ModifyPortalContent,),
+          'category': 'object',
+          'visible': True,
+          },
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (UniversityManage,)},
+          )
+}
+###)
+
+study_level_folder = { ###(
+    'title': 'WAeUP Study Level Folder',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'StudyLevel',
+    'product': 'WAeUP',
+    'factory': 'addStudyLevel',
+    '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': 'string:${object_url}/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': 'addSemester',
+    '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',
+          'action'    : 'add_course_ticket',
+          #'action': 'folder_factories',
+          'permissions': (ModifyPortalContent,UniversityManage,StudentManage)},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,UniversityManage,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (ModifyPortalContent,UniversityManage,StudentManage),
+          'visible': 0,
+          },
+          )
+}
+###)
+
+course_ticket = { ###(
+    'title': 'WAeUP Course Ticket',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'CourseTicket',
+    'product': 'WAeUP',
+    'factory': 'addCourseTicket',
+    'immediate_view': 'cpsdocument_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',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Faculty',
+    'product': 'WAeUP',
+    'factory': 'addFaculty',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Department'),
+    'allow_discussion': 0,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'folder',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ['metadata','common','faculty'],
+    'layouts': ['faculty'],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata',],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'string:${object_url}/faculty_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': (View,),
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/waeup_edit_form',
+          'condition': '',
+          'permission': (UniversityManage,),
+          'visible': True,},
+          {'id': 'add_department',
+          'name': 'Add Department',
+          'action'    : 'string:${object/absolute_url}/create_common?type_name=Department',
+          'permissions': (UniversityManage,)},
+          {'id': 'contents',
+          'name': 'action_folder_contents',
+          'action': 'folder_contents',
+          'permissions': (UniversityManage,),
+          'visible' : 0,
+          },
+          {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'cpsdocument_edit_form',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (ModifyPortalContent),
+          'visible' : 0,
+          },
+          )
+}
+###)
+
+department_type = { ###(
+    'title': 'WAeUP Department',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'Department',
+    'product': 'WAeUP',
+    'factory': 'addDepartment',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Student','Course'),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'folder',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ['metadata','common','department'],
+    'layouts': ['department',],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata',],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'string:${object_url}/department_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': ('View',),
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/waeup_edit_form',
+          'condition': '',
+          'permission': (UniversityManage,),
+          'visible': True,},
+          {'id': 'create_course',
+          'name': 'Add Course',
+          'action'    : 'string:${object/absolute_url}/create_course',
+          'permissions': (UniversityManage,)},
+          {'id': 'contents',
+          'name': 'action_folder_contents',
+          'action': 'folder_contents',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'cpsdocument_edit_form',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (ModifyPortalContent),
+          'visible' : 0,
+          },
+          )
+}
+###)
+
+course_type = { ###(
+    'title': 'WAeUP Course',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'Course',
+    'product': 'WAeUP',
+    'factory': 'addCourse',
+    'immediate_view': 'cpsdocument_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': (),
+    'allow_discussion': False,
+    'cps_is_searchable': True,
+    'cps_proxy_type': 'document',
+    'cps_display_as_document_in_listing': True,
+    'schemas': ['metadata','common','course'],
+    'layouts': ['course',],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata',],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'string:${object_url}/course_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': ('View',),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/waeup_edit_form',
+          'condition': '',
+          'permission': (CourseManage,),
+          'category': 'object',
+          'visible': True,},
+          {'id': 'contents',
+          'name': 'action_folder_contents',
+          'action': 'folder_contents',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,UniversityManage,)},
+          {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'cpsdocument_edit_form',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,UniversityManage,)},
+          {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (ModifyPortalContent),
+          'visible' : 0,
+          },
+          )
+    }
+###)
+
+acco_folder = { ###(
+    'title': 'WAeUP Accommodation Folder',
+    'description': '',
+    'content_icon': '',
+    'content_meta_type': 'AccoFolder',
+    'product': 'WAeUP',
+    'factory': 'addAccoFolder',
+    'immediate_view': 'folder_view',
+    'global_allow': True,
+    'filter_content_types': True,
+    'allowed_content_types': ('Accommodation',),
+    '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_accommodation',
+          'name': 'Add Accommodation Hall',
+          #'condition': "python:member and 'UniversityManager'in member.getRoles()",
+          'action'    : 'add_accommodation',
+          #'action': 'folder_factories',
+          'permissions': (UniversityManage,)},
+         {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          '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',
+          'action': 'folder_localrole_form',
+          'permissions': (UniversityManage,),
+          'visible': 0,
+          },
+          )
+}
+###)
+
+accommodation = { ###(
+    'title': 'WAeUP Accommodation',
+    'description': '',
+    'content_icon': 'student.gif',
+    'content_meta_type': 'Accommodation',
+    'product': 'WAeUP',
+    'factory': 'addAccommodation',
+    'immediate_view': 'cpsdocument_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','accommodation'],
+    'layouts': ['accommodation',],
+    'flexible_layouts': (),
+    'layout_clusters': ['metadata:metadata',],
+    'cps_section_wf': 'waeup_section_wf',
+    'use_content_status_history': 0,
+    'actions': (
+         {'id': 'view',
+          'name': 'Standard View',
+          #'action': 'string:${object_url}/accommodation_index_html',
+          'action': 'temporary_view_all',
+          'condition': '',
+          'permission': ('View',),
+          'category': 'object',
+          'visible': True,},
+         {'id': 'edit',
+          'name': 'action_edit',
+          'action': 'string:${object_url}/waeup_edit_form',
+          'permission': (UniversityManage,StudentManage),
+          'category': 'object',
+          'visible': True,},
+          {'id': 'metadata',
+          'name': 'action_metadata',
+          'action': 'cpsdocument_metadata',
+          'condition': "python:member and 'Manager' in member.getRoles()",
+          'permissions': (ModifyPortalContent,)},
+          {'id': 'localroles',
+          'name': 'delegate',
+          'action': 'folder_localrole_form',
+          'permissions': (UniversityManage,),
+          'visible' : 0,
+          },
+          )
+}
+###)
+
+types = {}
+types['University'] = university_type
+types['StudentsFolder'] = students_folder_type
+types['AcademicsFolder'] = academics_folder_type
+types['Student'] = student_type
+types['StudentDocuments'] = student_documents
+types['StudentEligibility'] = student_eligibility_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
+types['ScratchCard'] = scratch_card
+types['Jamb'] = jamb_type
+types['Faculty'] = faculty_type
+types['Department'] = department_type
+types['Course'] = course_type
+
+return types
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPVocabularies.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPVocabularies.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPVocabularies.py	(revision 276)
@@ -0,0 +1,124 @@
+#-*- mode: python; mode: fold -*-
+##parameters=
+# $Id$
+"""Return custom vocabularies."""
+##'xxx_voc': {
+##        'type': 'CPS Vocabulary',
+##        'data': {'tuples': (
+##            ('', "", ''),
+##            )},
+##        },
+##vocabluaries['xxx'] = xxx_voc
+
+vocabularies = {}
+
+nigerian_states = { ###(
+        '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
+###)
+
+faculties = { ###(
+        '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
+###)
+get_faculties_voc = { ###(
+        'type': 'CPS Method Vocabulary',
+        'data': {'get_vocabulary_method': 'get_faculties_voc',}
+        }
+vocabularies['get_faculties_voc'] = get_faculties_voc
+###)
+get_departments_voc = { ###(
+        'type': 'CPS Method Vocabulary',
+        'data': {'get_vocabulary_method': 'get_departments_voc',}
+        }
+vocabularies['get_departments_voc'] = get_departments_voc
+###)
+
+level = { ###(
+        'type': 'CPS Vocabulary',
+        'data': {'tuples': (
+            ('100', "Year 1 (100 Level)", ''),
+            ('200', "Year 2 (200 Level)", ''),
+            ('300', "Year 3 (300 Level)", ''),
+            ('400', "Year 4 (400 Level)", ''),
+            )},
+        }
+vocabularies['courselevel'] = level
+
+###)
+
+vocabularies['range5'] = {'type': 'CPS Vocabulary',
+                               'data': {'tuples': ([('%d' % i, '%d' % i ,'') for i in range(1,6)])},
+                          }
+vocabularies['range10'] = {'type': 'CPS Vocabulary',
+                               'data': {'tuples': ([('%d' % i, '%d' % i,'') for i in range(1,11)])},
+                          }
+vocabularies['range20'] = {'type': 'CPS Vocabulary',
+                               'data': {'tuples': ([('%d' % i, '%d' % i,'') for i in range(1,21)])},
+                          }
+vocabularies['range50'] = {'type': 'CPS Vocabulary',
+                               'data': {'tuples': ([('%d' % i, '%d' % i,'') for i in range(1,51)])},
+                          }
+##'xxx_voc': {
+##        'type': 'CPS Vocabulary',
+##        'data': {'tuples': (
+##            ('', "", ''),
+##            )},
+##        },
+
+
+return vocabularies
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPWidgets.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPWidgets.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/getWAeUPWidgets.py	(revision 276)
@@ -0,0 +1,12 @@
+widgets = {
+        'StudentId Widget': {
+            'type': 'StudentId Widget Type',
+            'data': {},
+            },
+        'Scratchcard Pin Widget': {
+            'type': 'Scratchcard Pin Widget Type',
+            'data': {},
+            },
+        }
+
+return widgets
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_create.pt	(revision 276)
@@ -0,0 +1,2 @@
+<tal:block define="global creation python:1" />
+<metal:block use-macro="here/waeup_layout_lib/macros/common_edit" />
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_edit.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_edit.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_edit.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/default_edit" />
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_view.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_view.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/layout_waeup_view.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/table_view" />
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/logged_in.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/logged_in.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/logged_in.pt	(revision 276)
@@ -0,0 +1,122 @@
+<metal:html>
+
+<metal:body use-macro="here/main_template/macros/master">
+    
+    <metal:main fill-slot="main"
+                tal:define="p_props here/portal_properties;">
+      <metal:skin tal:condition="exists: here/portal_skins | nothing">
+        <div tal:condition="here/portal_skins/updateSkinCookie | nothing"
+             tal:define="dummy here/setupCurrentSkin">
+        </div>
+      </metal:skin>
+      <tal:block condition="isAnon">
+        <tal:block define="dummy python:request.RESPONSE.expireCookie('__ac',path='/')" />
+          <h1 i18n:translate="heading_login_failure">Login failure</h1>
+          <p>
+            <span i18n:translate="description_login_failure">
+              You are not currently logged in. Your username and or password may be
+              incorrect. Your browser may also not be configured to accept HTTP
+              cookies. If you need help please contact
+            </span>
+            <a href="mailto:admin@here.com" title="Email Admin"
+               tal:attributes="href string:mailto:${p_props/email_from_address}"
+               tal:content="p_props/email_from_address">Email Admin</a>.
+          </p>
+          <p i18n:translate="">
+            help_password_forgotten
+            <tal:block i18n:name="link_password_forgotten"
+                       replace="string:${base_url}account_lost_password_form"/>
+          </p>
+          <p>
+            or <a href="" tal:attributes="href string:${base_url}check_admission">check your admission status</a>
+          </p>
+        </tal:block><!-- isAnon -->
+
+        <tal:block condition="not: isAnon"
+                   define="first_time python:(member.getProperty('login_time', None) ==
+                   here.ZopeTime('2000/01/01'));
+                   dum_home mtool/createMemberArea"
+                   >
+          <tal:block 
+              condition="python:'Students' in member.getGroups()"
+              tal:define="dummy python: context.process_waeup_login(member=member,sc_pin=request.get('sc_pin'))" />
+          <tal:block condition="first_time">
+            <div tal:define="now here/ZopeTime;
+            dum_reg python:member.setProperties(last_login_time=now,
+            login_time=now)" />
+            
+            <h1>Welcome!</h1>
+            <p>This is the first time that you've logged in to <span
+                                                                   replace="p_props/title">Here</span>. Before you start exploring you need
+              to change your original password. This will ensure that the password we
+            sent you via email cannot be used in a malicious manner.</p>
+            
+            <p>Please use the form below to change your password.</p>
+
+      <form action="change_password" method="post"
+            tal:attributes="action string:${base_url}change_password">
+        <input type="hidden" name="user" value=""
+               tal:attributes="value member" />
+        <input type="hidden" name="domains:tokens" value="" />
+        <input type="hidden" name="redirect" value=""
+               tal:attributes="value base_url" />
+
+      <table border="1" width="100%" cellspacing="1" cellpadding="1">
+
+       <tr valign="top" align="left">
+         <th>Username</th>
+         <td><span tal:replace="member">You</span></td>
+       </tr>
+
+       <tr valign="top" align="left">
+         <th>New password</th>
+         <td><input type="password" name="password" /></td>
+       </tr>
+
+       <tr valign="top" align="left">
+        <th>Confirm new password</th>
+        <td><input type="password" name="confirm" /></td>
+       </tr>
+
+       <tr>
+        <td></td>
+        <td>
+          <input type="submit" class="standalone" value="Change password" />
+        </td>
+       </tr>
+
+      </table>
+
+      </form>
+
+    </tal:block><!-- first_time -->
+
+    <tal:block condition="not: first_time">
+
+      <tal:block define="d_reg python:member.setProperties(
+                                      last_login_time=member.getProperty('login_time', None));
+                         ereg python:member.setProperties(
+                                     login_time=here.ZopeTime());
+                      "/>
+
+      <div tal:condition="request/came_from | nothing ">
+        <div tal:define="came_from python:request.get('came_from');
+                         response request/RESPONSE;
+                         dredirect python: response.redirect(came_from);
+                        " />
+      </div>
+
+      <h1 i18n:translate="heading_login_success">Login success</h1>
+      <p i18n:translate="description_login_success">
+         Welcome. You are currently logged in.
+      </p>
+
+   </tal:block><!-- not first_time -->
+
+  </tal:block><!-- not isAnon -->
+
+</metal:main>
+
+</metal:body>
+
+</metal:html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/logged_out.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/logged_out.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/logged_out.pt	(revision 276)
@@ -0,0 +1,24 @@
+<metal:html>
+
+<metal:body use-macro="here/main_template/macros/master">
+
+<metal:main fill-slot="main">
+
+  <p tal:condition="isAnon"
+     i18n:translate="description_logout_success">
+    You have been logged out. <br />
+  </p>
+
+  <p tal:condition="not:isAnon">
+    <span i18n:translate="description_logout_zmi_warning">
+      You are logged in outside the portal.  You may need to
+    </span>
+    <a href="/manage_zmi_logout"
+       i18n:translate="link_logout_zmi">
+      log out of the Zope management interface
+    </a>.
+  </p>
+
+</metal:main>
+</metal:body>
+</metal:html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/portlet_main_navigation.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/portlet_main_navigation.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/portlet_main_navigation.pt	(revision 276)
@@ -0,0 +1,21 @@
+<tal:block define="mtool here/portal_membership;
+                   anonymous mtool/isAnonymousUser;
+                   user python: mtool.getAuthenticatedMember();
+                   folder_id python:str(user)"
+                   >
+  <tal:block condition="python: 0 and 'Students' in user.getGroups()">
+    <a href="" i18n:translate=""
+       tal:attributes="href string:${here/portal_url}/sections/waeup/students/${folder_id}"
+       tal:content="string: Personal area for JAMB Registration ${folder_id}"></a>
+  </tal:block>
+  <tal:block condition="python: 1">
+    <a href="" i18n:translate=""
+       tal:attributes="href string:${here/portal_url}/sections/waeup/students"
+       >Studentadministration</a> | 
+    <a href="" i18n:translate=""
+       tal:attributes="href string:${here/portal_url}/sections/waeup/faculties"
+       >Faculties</a> 
+  </tal:block>
+  <tal:block condition="anonymous">
+  </tal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/portlet_session_info.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/portlet_session_info.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/portlet_session_info.pt	(revision 276)
@@ -0,0 +1,46 @@
+<tal:block define="mtool here/portal_membership;
+           member mtool/getAuthenticatedMember;
+           isAnon mtool/isAnonymousUser;
+           roles member/getRoles;
+           backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+           frontend python:'Student' in roles or isAnon;"
+           >
+  <tal:block condition="not:isAnon">
+    <tal:block condition="backend">
+      <em tal:content="member" /> is working in back-end mode<br />
+      <span  tal:condition="python: 1" >
+        with Basic Roles <span tal:content="member/getRoles" /><br />
+        <span tal:condition="python: 0" tal:content="python:mtool.getCPSCandidateLocalRoles(context)" />
+      </span>
+    </tal:block>
+    <tal:block condition="not:backend">
+      <em tal:content="member" /> is working in front-end mode<br />
+      <span  tal:condition="python: 1" >
+        with Basic Roles <span tal:content="member/getRoles" /><br />
+        <span tal:condition="python: 0" tal:content="python:mtool.getCPSCandidateLocalRoles(context)" />
+      </span>
+    </tal:block>
+    <tal:block condition="python: 0">
+    <br />
+    <a href="" tal:condition="python: 'Student' in member.getRoles() and not 'UniversityManager' in member.getRoles()" 
+       tal:attributes="href string:${context/portal_url}/students/${member}">
+      Go to your personal area
+    </a>
+    </tal:block>
+    <br />
+    <a href="" tal:condition="python: 0" 
+       tal:attributes="href string:${context/portal_url}/cpsdirectory_entry_view?dirname=members&id=${member}">        
+      Edit your Preferences
+    </a>
+    <br />
+    <a href="" i18n:translate=""
+       tal:attributes="href string:logout">
+      Log out
+    </a>
+  </tal:block>
+  <tal:block condition="isAnon">
+    <div>You are not logged in. </div>
+    <br />
+    <a href="" tal:attributes="href string:login_form">Log in</a>
+  </tal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/student_view_all_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/student_view_all_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/student_view_all_form.pt	(revision 276)
@@ -0,0 +1,34 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>This is a temporary view of the object with id <em tal:content="here/id" /> 
+       of type <em tal:content="here/portal_type" /> 
+       which can be customized according to the customer's needs.</p>       
+  
+    <br />
+    <span  tal:condition="python:context.portal_type != 'University'"  tal:omit-tag="">
+      <p>Exemplary view of the <strong>object's data fields</strong>: </p>
+      <tal:block  tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+    </span>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/student_view_student_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/student_view_student_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/student_view_student_form.pt	(revision 276)
@@ -0,0 +1,58 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>This is a temporary view of the object with id <em tal:content="here/id" /> 
+       of type <em tal:content="here/portal_type" /> 
+       which can be customized according to the customer's needs.</p>       
+  
+    <br />
+    <span  tal:condition="python:context.portal_type != 'University'"  tal:omit-tag="">
+      <p>Exemplary view of the <strong>object's data fields</strong>: </p>
+      <tal:block  tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+    </span>
+    <br />      
+    <p>Exemplary view of the <strong>list of items attached to (or contained in) the object</strong>: </p>
+    <tal:block condition="python: len(items)">  
+      <table>
+        <span tal:repeat="item items">
+          <tr>
+            <td>
+              <span tal:content="item/portal_type" />:
+            </td>
+            <td>
+              <i>
+                <a href="xxx"  
+                   tal:attributes="href item/absolute_url"
+                   tal:content="item/title_or_id"></a>
+              </i>
+            </td>
+          </tr>
+        </span>
+      </table>
+    </tal:block>
+    
+    <tal:block condition="python: not len(items)">
+        (No items contained here!)
+    </tal:block>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/temporary_view_all.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/temporary_view_all.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/temporary_view_all.py	(revision 276)
@@ -0,0 +1,26 @@
+##parameters=psm=None
+# $Id$
+
+"""
+"""
+
+member = context.portal_membership.getAuthenticatedMember()
+uname = str(member)
+roles = member.getRoles()
+cat = context.portal_catalog
+request = context.REQUEST
+url0 = request.get('URL0')
+#return context.temporary_view_all_form(psm=psm)
+if context.portal_membership.isAnonymousUser():
+    if not url0.endswith('chat'):
+	return context.students.student_view_all_form(psm=psm)
+    return context.Chat()
+else:
+    if url0.find(uname) > 0 or 'UniversityManager' in roles or 'Manager' in roles:
+        return context.temporary_view_all_form(psm=psm)
+    elif 'Student' in roles and 'StudentManager' not in roles:
+        res = cat(pathindex="/portal/sections/students/%s" % uname)
+        for r in res:
+            if r.getPath().endswith("students/%s" % uname):
+                return r.getObject().student_view_student_form(psm=psm)
+        return context.students.student_view_all_form(psm=psm)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/temporary_view_all_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/temporary_view_all_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/temporary_view_all_form.pt	(revision 276)
@@ -0,0 +1,58 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>This is a temporary view of the object with id <em tal:content="here/id" /> 
+       of type <em tal:content="here/portal_type" /> 
+       which can be customized according to the customer's needs.</p>       
+  
+    <br />
+    <span  tal:condition="python:context.portal_type != 'University'"  tal:omit-tag="">
+      <p>Exemplary view of the <strong>object's data fields</strong>: </p>
+      <tal:block  tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+    </span>
+    <br />      
+    <p>Exemplary view of the <strong>list of items attached to (or contained in) the object</strong>: </p>
+    <tal:block condition="python: len(items)">  
+      <table>
+        <span tal:repeat="item items">
+          <tr>
+            <td>
+              <span tal:content="item/portal_type" />:
+            </td>
+            <td>
+              <i>
+                <a href="xxx"  
+                   tal:attributes="href item/absolute_url"
+                   tal:content="item/title_or_id"></a>
+              </i>
+            </td>
+          </tr>
+        </span>
+      </table>
+    </tal:block>
+    
+    <tal:block condition="python: not len(items)">
+        (No items contained here!)
+    </tal:block>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/university_view_all.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/university_view_all.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/university_view_all.pt	(revision 276)
@@ -0,0 +1,24 @@
+<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"
+               >
+    <a href="" tal:attributes="href string:${context/absolute_url}/admission_status">Admission List UME</a>.<br />
+    <a href="" tal:attributes="href string:${context/absolute_url}/check_admission">Admission Request (JAMB canditates only)</a>.
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/waeup_edit_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/waeup_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/waeup_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="python: 0 and not creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/waeup_layout_lib.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/waeup_layout_lib.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_default/waeup_layout_lib.pt	(revision 276)
@@ -0,0 +1,372 @@
+<!-- WAeUP layout_lib  -->
+<!-- $Id: layout_lib_div_view.pt 24721 2005-07-08 13:04:38Z dwyart $ -->
+
+<!-- div_view  -->
+
+<metal:block define-macro="div_view"
+             tal:define="layout options/layout">
+  <tal:block repeat="row layout/rows">
+    <tal:block repeat="cell row">
+      <tal:block define="widget cell/widget">
+        <div tal:define="dm options/datastructure/getDataModel;"
+             tal:attributes="class cell/widget_css_class|nothing;
+             id python:widget.getHtmlWidgetId()+'_widget';"
+             >
+          <tal:block condition="widget/label">
+            <span class="dlabel" i18n:translate="" tal:condition="widget/is_i18n"
+                  tal:content="widget/label">label</span>
+            <span class="dlabel" tal:condition="not:widget/is_i18n"
+                  tal:content="widget/label">label</span>
+          </tal:block>
+          <tal:block replace="structure cell/widget_rendered" />
+        </div>
+      </tal:block>
+    </tal:block>
+  </tal:block>
+</metal:block>
+
+<!-- table view -->
+<metal:block define-macro="table_view"
+             tal:define="layout options/layout">
+<table border="0">
+    <tal:block repeat="row layout/rows">
+      <tr>
+        <tal:block repeat="cell row">
+          <tal:block define="widget cell/widget">
+            <div tal:omit-tag=""
+                 tal:define="dm options/datastructure/getDataModel;"
+                 tal:attributes="class cell/widget_css_class|nothing;
+                 id python:widget.getHtmlWidgetId()+'_widget';" 
+                 >
+              <tal:block condition="widget/label">
+              <td valign="top">
+                <span i18n:translate="" tal:condition="widget/is_i18n">
+                    <span tal:content="widget/label" />:</span>
+                <span tal:condition="not:widget/is_i18n">
+                    <span tal:content="widget/label" />:</span>
+              </td>
+              </tal:block>
+              <tal:block condition="not: widget/label">
+              <td>
+                <div valign="top"> no label </div>
+              </td>
+              </tal:block>              
+              <td>
+               <div class="ddescription"  tal:condition="cell" tal:content="structure cell/widget_rendered"></div>
+               <div class="ddescription" tal:condition="not:cell/widget_rendered"> none </div>
+             </td>
+            </div>
+          </tal:block>
+        </tal:block>
+      </tr>
+    </tal:block>
+  </table>
+</metal:block>
+
+<!-- default edit  -->
+
+<metal:block define-macro="default_edit"
+  tal:define="layout options/layout;
+              ds options/datastructure;
+              creation creation|nothing;
+              metadata metadata|nothing;
+              type_name request/type_name|nothing;
+              ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+              creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+              edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+              metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+              formaction python: test(creation, creation_form,
+                                 test(metadata, metadata_form,
+                                                edit_form));
+              first_layout options/first_layout|python:0;
+              last_layout options/last_layout|python:0;
+              is_flexible options/is_flexible;
+              cpsmcat nocall:here/translation_service;
+              ">
+<tal:block condition="first_layout">
+  <tal:block
+  content="structure string:<form action='${formaction}' method='post'
+  enctype='multipart/form-data' class='workflow'>
+  <div class=''><div class=''>" />
+  <input type="hidden" name="type_name" value="."
+    tal:condition="creation" tal:attributes="value request/type_name" />
+</tal:block>
+
+<table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+  <tr tal:repeat="row layout/rows" valign="top">
+    <td tal:repeat="cell row"
+      tal:attributes="colspan cell/ncols">
+      <tal:block define="widget cell/widget;
+                         wid widget/getWidgetId;
+                         dm options/datastructure/getDataModel;
+                         err python:ds.getError(wid);
+                         err_mapping python:ds.getErrorMapping(wid);
+                         is_required widget/is_required|nothing;
+                         tooltip_id python:wid + '_help';
+                         widget_css_class cell/widget_css_class|nothing;
+                         widget_css_class python:test(is_flexible, 'group', widget_css_class);
+                         css_class python:test(err, 'row error',
+                                               test(is_flexible, 'group', 'row'))">
+        <div tal:attributes="class widget_css_class;
+                             id python:widget.getHtmlWidgetId()+'_widget';
+                            ">
+          <div class="label" tal:condition="widget/label_edit"
+            tal:attributes="class python:test(is_required, 'label required',
+                                              'label')">
+            <label i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+            <label tal:condition="not:widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+          </div>
+          <button type="button" class="tooltipControl"
+                  tal:condition="widget/help"
+                  tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+          <div class="field">
+            <div tal:replace="structure cell/widget_rendered"/>
+          </div>
+          <div class="tooltipArea" style="visibility: hidden;"
+               tal:condition="widget/help"
+               tal:attributes="id tooltip_id;
+                               onclick python:'showElement(false, \'%s\')' % tooltip_id;">
+            <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+            <tal:block tal:condition="not:widget/is_i18n"
+              tal:content="widget/help">This is the help for this field</tal:block>
+          </div>
+          <tal:block condition="err">
+              <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                <br /><em style="color: red"
+                  tal:content="msg">err</em>
+              </tal:block>
+          </tal:block>
+          <div style="float: right;" tal:condition="is_flexible">
+            <input type="submit" value="button_move_up"
+              tal:condition="not:repeat/row/start"
+              tal:attributes="name string:uprow_${repeat/row/index}"
+              class="context moveUp" i18n:attributes="value" />
+            <input type="submit" value="button_move_down"
+              tal:condition="not:repeat/row/end"
+              tal:attributes="name string:downrow_${repeat/row/index}"
+              class="context moveDown" i18n:attributes="value" />
+            <input type="submit" value="button_delete"
+              class="destructive" i18n:attributes="value"
+              tal:attributes="name string:deleterow_${repeat/row/index};
+                              onclick python:'return window.confirm(\'%s\')' %
+                                (cpsmcat('description_confirm_delete'), )" />
+          </div>
+        </div>
+      </tal:block>
+    </td>
+  </tr>
+</table>
+
+<tal:block condition="is_flexible">
+<div style="float: right;"
+    tal:define="flexible_widgets options/flexible_widgets">
+  <input type="hidden" name="layout_id" value="."
+    tal:attributes="value layout/layout_id" />
+  <tal:select condition="python:len(flexible_widgets)>1">
+    <select name="widget_type">
+      <tal:block repeat="widget options/flexible_widgets">
+      <option value="."
+        tal:condition="widget/is_i18n"
+        i18n:translate=""
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      <option value="."
+        tal:condition="not:widget/is_i18n"
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      </tal:block>
+    </select>
+    <input type="submit" name="addwidget_button" value="button_add"
+     class="context"
+     i18n:attributes="value" />
+  </tal:select>
+  <tal:button condition="python:len(flexible_widgets) == 1">
+    <tal:block define="widget python:flexible_widgets[0]">
+      <input type="hidden" name="widget_type"
+        tal:attributes="value widget/getWidgetId">
+      <input type="submit" name="addwidget_button"
+        tal:define="button_add python:cpsmcat('button_add');
+          widget_title python:cpsmcat(widget.title_or_id())"
+        tal:attributes="value string:${button_add} ${widget_title}"
+        class="context" />
+    </tal:block>
+  </tal:button>
+</div>
+</tal:block>
+
+<tal:block condition="last_layout">
+  <tal:block content="structure string:</div>" />
+  <metal:block define-slot="additional_content" />
+
+  <input type="submit" class="standalone" name="cpsdocument_edit_button"
+    value="button_change" i18n:attributes="value"
+    tal:condition="not:creation" />
+  <input type="submit" class="standalone" name="cpsdocument_create_button"
+    value="button_create" i18n:attributes="value" tal:condition="creation" />
+  <tal:block content="structure string:</div></form>" />
+</tal:block>
+
+</metal:block>
+<!-- default edit  -->
+
+<metal:block define-macro="common_edit"
+  tal:define="layout options/layout;
+              ds options/datastructure;
+              creation creation|nothing;
+              metadata metadata|nothing;
+              type_name request/type_name|nothing;
+              ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+              tin python:type_name and getattr(here.portal_types,type_name,None);
+              creation_form options/create_action|string:create_common;
+              edit_form    options/edit_action|string:cpsdocument_edit_form;
+              metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+              formaction python: test(creation, creation_form,
+                                 test(metadata, metadata_form,
+                                                edit_form));
+              first_layout python:1;
+              last_layout python:1;
+              is_flexible options/is_flexible;
+              cpsmcat nocall:here/translation_service;
+              ">
+<tal:block condition="first_layout">
+    <span tal:condition="python: 0">
+      <span tal:content="request/type_name|string:No Typename" /><br />
+      <span tal:content="creation_form" /><br />
+      <span tal:content="ti" /><br />
+      <span tal:content="python:ti.getActionById('create', 'cpsdocument_create_form')" /><br />
+      <span tal:content="python:getattr(here.portal_types,type_name,'no type')" /><br />
+    </span>
+  <tal:block
+  content="structure string:<form action='${formaction}' method='post'
+  enctype='multipart/form-data' class='workflow'>
+  <div class=''><div class='documentFields'>" />
+  <input type="hidden" name="type_name" value="."
+    tal:condition="creation" tal:attributes="value request/type_name" />
+</tal:block>
+
+<table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+  <tr tal:repeat="row layout/rows" valign="top">
+    <td tal:repeat="cell row"
+      tal:attributes="colspan cell/ncols">
+      <tal:block define="widget cell/widget;
+                         wid widget/getWidgetId;
+                         dm options/datastructure/getDataModel;
+                         err python:ds.getError(wid);
+                         err_mapping python:ds.getErrorMapping(wid);
+                         is_required widget/is_required|nothing;
+                         tooltip_id python:wid + '_help';
+                         widget_css_class cell/widget_css_class|nothing;
+                         widget_css_class python:test(is_flexible, 'group', widget_css_class);
+                         css_class python:test(err, 'row error',
+                                               test(is_flexible, 'group', 'row'))">
+        <div tal:attributes="class widget_css_class;
+                             id python:widget.getHtmlWidgetId()+'_widget';
+                            ">
+          <div class="label" tal:condition="widget/label_edit"
+            tal:attributes="class python:test(is_required, 'label required',
+                                              'label')">
+            <label i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+            <label tal:condition="not:widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+          </div>
+          <button type="button" class="tooltipControl"
+                  tal:condition="widget/help"
+                  tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+          <div class="field">
+            <div tal:replace="structure cell/widget_rendered"/>
+          </div>
+          <div class="tooltipArea" style="visibility: hidden;"
+               tal:condition="widget/help"
+               tal:attributes="id tooltip_id;
+                               onclick python:'showElement(false, \'%s\')' % tooltip_id;">
+            <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+            <tal:block tal:condition="not:widget/is_i18n"
+              tal:content="widget/help">This is the help for this field</tal:block>
+          </div>
+          <tal:block condition="err">
+              <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                <br /><em style="color: red"
+                  tal:content="msg">err</em>
+              </tal:block>
+          </tal:block>
+          <div style="float: right;" tal:condition="is_flexible">
+            <input type="submit" value="button_move_up"
+              tal:condition="not:repeat/row/start"
+              tal:attributes="name string:uprow_${repeat/row/index}"
+              class="context moveUp" i18n:attributes="value" />
+            <input type="submit" value="button_move_down"
+              tal:condition="not:repeat/row/end"
+              tal:attributes="name string:downrow_${repeat/row/index}"
+              class="context moveDown" i18n:attributes="value" />
+            <input type="submit" value="button_delete"
+              class="destructive" i18n:attributes="value"
+              tal:attributes="name string:deleterow_${repeat/row/index};
+                              onclick python:'return window.confirm(\'%s\')' %
+                                (cpsmcat('description_confirm_delete'), )" />
+          </div>
+        </div>
+      </tal:block>
+    </td>
+  </tr>
+</table>
+
+<tal:block condition="is_flexible">
+<div style="float: right;"
+    tal:define="flexible_widgets options/flexible_widgets">
+  <input type="hidden" name="layout_id" value="."
+    tal:attributes="value layout/layout_id" />
+  <tal:select condition="python:len(flexible_widgets)>1">
+    <select name="widget_type">
+      <tal:block repeat="widget options/flexible_widgets">
+      <option value="."
+        tal:condition="widget/is_i18n"
+        i18n:translate=""
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      <option value="."
+        tal:condition="not:widget/is_i18n"
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      </tal:block>
+    </select>
+    <input type="submit" name="addwidget_button" value="button_add"
+     class="context"
+     i18n:attributes="value" />
+  </tal:select>
+  <tal:button condition="python:len(flexible_widgets) == 1">
+    <tal:block define="widget python:flexible_widgets[0]">
+      <input type="hidden" name="widget_type"
+        tal:attributes="value widget/getWidgetId">
+      <input type="submit" name="addwidget_button"
+        tal:define="button_add python:cpsmcat('button_add');
+          widget_title python:cpsmcat(widget.title_or_id())"
+        tal:attributes="value string:${button_add} ${widget_title}"
+        class="context" />
+    </tal:block>
+  </tal:button>
+</div>
+</tal:block>
+
+<tal:block condition="last_layout">
+  <tal:block content="structure string:</div>" />
+  <metal:block define-slot="additional_content" />
+
+  <input type="submit" class="standalone" name="cpsdocument_edit_button"
+    value="button_change" i18n:attributes="value"
+    tal:condition="not:creation" />
+  <input type="submit" class="standalone" name="cpsdocument_create_button"
+    value="button_create" i18n:attributes="value" tal:condition="creation" />
+  <tal:block content="structure string:</div></form>" />
+</tal:block>
+
+</metal:block>
+    
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/academics_view.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/academics_view.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/academics_view.py	(revision 276)
@@ -0,0 +1,17 @@
+##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 not context.portal_membership.isAnonymousUser():
+    if 'Manager' in member.getRoles():
+        return context.folder_view()
+index = getattr(context,'documents',None)
+if index:
+    fp = getattr(index,'academicsfrontpage',None)
+    if fp:
+        return fp() 
+return context.academics.academics_view_all(psm=psm)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/academics_view_all.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/academics_view_all.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/academics_view_all.pt	(revision 276)
@@ -0,0 +1,37 @@
+<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="items here/contentValues">
+    <h2>Academics (Faculties)</h2>
+    <table cellspacing="0" cellpadding="0">
+      <tal:block condition="python: len(items)">
+        <span tal:repeat="item items">
+          <tr tal:condition="python:item.portal_type == 'Faculty'">
+            <td colspan="1">
+              <a href="faculty" tal:attributes="href item/absolute_url" tal:content="item/title_or_id"></a>
+            </td>
+          </tr>
+        </span>
+      </tal:block>
+      <tr tal:condition="python:not len(items)">
+        <td>
+          nothing yet !
+        </td>
+      </tr>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_index_html.py	(revision 276)
@@ -0,0 +1,14 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.cpsdocument_view()
+    elif 'StudentManager' in roles:
+        return context.course_view_manager()
+return context.course_view_student()
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_view_manager.pt	(revision 276)
@@ -0,0 +1,21 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/course_view_student.pt	(revision 276)
@@ -0,0 +1,32 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+      
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/create_course.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/create_course.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/create_course.py	(revision 276)
@@ -0,0 +1,50 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Create a Course
+
+"""
+type_name = 'Course'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'course',
+                      schema_id = 'course',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'create_course',
+                      )
+if  psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+    
+elif psm == 'valid':
+    oid = "%s" % ds.get('code').replace(' ','')
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)
+    ds.set('Title',ds.get('heading'))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_index_html.py	(revision 276)
@@ -0,0 +1,13 @@
+##parameters=psm=None, REQUEST=None
+
+# $Id$
+
+"""Default view for a Faculty."""
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.department_view_manager()
+return context.department_view_student()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_index_html.py~
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_index_html.py~	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_index_html.py~	(revision 276)
@@ -0,0 +1,13 @@
+##parameters=psm=None, REQUEST=None
+
+# $Id: department_index_html.py 91 2005-10-26 12:30:11Z joachim $
+
+"""Default view for a Faculty."""
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.department_view_manager()
+return context.department_view_student()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_view_manager.pt	(revision 276)
@@ -0,0 +1,43 @@
+<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="department here/getContent;
+               items here/contentValues"
+               >
+    <span>
+      <h2 tal:content="department/title_or_id"></h2>
+      <p tal:content="department/Description">
+      </p>
+      <br />
+      
+      <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 courses yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/department_view_student.pt	(revision 276)
@@ -0,0 +1,43 @@
+<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="department here/getContent;
+               items here/contentValues"
+               >
+    <span>
+      <h2 tal:content="department/title_or_id"></h2>
+      <p tal:content="department/Description">
+      </p>
+      <br />
+      
+      <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 courses yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_index_html.py	(revision 276)
@@ -0,0 +1,14 @@
+##parameters=psm=None, REQUEST=None
+
+# $Id$
+
+"""Default view for a Faculty."""
+member = context.portal_membership.getAuthenticatedMember()
+
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.faculty_view_manager()
+return context.faculty_view_student()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_view_manager.pt	(revision 276)
@@ -0,0 +1,40 @@
+<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="faculty here/getContent;
+               items here/contentValues"
+               >
+    <h2 tal:content="faculty/title_or_id"></h2>
+    <p tal:content="faculty/Description"></p>
+    <span> 
+      <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>
+            nothing yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/faculty_view_student.pt	(revision 276)
@@ -0,0 +1,40 @@
+<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="faculty here/getContent;
+               items here/contentValues"
+               >
+    <h2 tal:content="faculty/title_or_id"></h2>
+    <p tal:content="faculty/Description"></p>
+    <span> 
+      <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>
+            nothing yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/get_departments_voc.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/get_departments_voc.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/get_departments_voc.py	(revision 276)
@@ -0,0 +1,18 @@
+##parameters=key=None
+# $Id$
+"""
+Return the faculties as an vocabulary
+
+"""
+#academics = context.sections.portal.academics
+academics = context.portal_catalog(id = 'academics')[0].getObject()
+faculties = [f for f in context.filterContents(items=academics.contentValues()) if f.portal_type == 'Faculty']
+
+deplist = []
+for faculty in faculties:
+    departments = [d for d in context.filterContents(items=faculty.contentValues()) if d.portal_type == 'Department']
+    deplist.extend(departments)
+if not key:
+    return [(d.getId(),d.title_or_id(),) for d in deplist]
+return [d.title_or_id() for d in deplist if d.getId() == key][0]
+return [(d.getId(),d.title_or_id()) for d in deplist if d.getId() == key]
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/get_faculties_voc.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/get_faculties_voc.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_faculty/get_faculties_voc.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=key=None 
+# $Id$
+"""
+Return the faculties as an vocabulary
+
+"""
+academics = context.portal_catalog(id = 'academics')[-1].getObject()
+items = [i for i in context.filterContents(items=academics.contentValues()) if i.portal_type == 'Faculty']
+context.REQUEST.set('items', items)
+context.REQUEST.set('key', key)
+if not key:
+    return [(f.getId(),f.title_or_id(),) for f in items]
+return [f.title_or_id() for f in items if f.getId() == key][0]
+return [(f.getId(),f.title_or_id()) for f in items if f.getId() == key]
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_index_html.py	(revision 276)
@@ -0,0 +1,17 @@
+##parameters=REQUEST=None,psm=None,groups=None
+
+# $Id$
+
+"""Default view for the Accommodation.
+"""
+
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.accommodation_view_manager(psm=psm)
+    elif 'StudentManager' in roles:
+        return context.accommodation_view_manager(psm=psm)
+    elif 'Student' in roles:
+        return context.accommodation_view_student(psm=psm)
+return context.accommodation_view_all(psm=psm)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_all.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_all.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_all.pt	(revision 276)
@@ -0,0 +1,29 @@
+<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="header">
+  </metal:block>
+
+<metal:block fill-slot="main"
+             tal:define="items here/contentValues"
+             >
+    <h2>Accomodation</h2>
+    <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/heading"></a>
+          </td>
+        </tr>
+      </tal:block>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_manager.pt	(revision 276)
@@ -0,0 +1,29 @@
+<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="header">
+  </metal:block>
+
+<metal:block fill-slot="main"
+             tal:define="items here/contentValues"
+             >
+    <h2>Accomodation</h2>
+    <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/heading"></a>
+          </td>
+        </tr>
+      </tal:block>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/accommodation_view_student.pt	(revision 276)
@@ -0,0 +1,29 @@
+<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="header">
+  </metal:block>
+
+<metal:block fill-slot="main"
+             tal:define="items here/contentValues"
+             >
+    <h2>Accomodation</h2>
+    <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/heading"></a>
+          </td>
+        </tr>
+      </tal:block>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_accommodation.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_accommodation.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_accommodation.py	(revision 276)
@@ -0,0 +1,49 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Add a Accommodation Hall
+
+"""
+type_name = 'Accommodation'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'accommodation',
+                      schema_id = 'accommodation',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'add_accommodation',
+                      )
+if psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+elif psm == 'valid':
+    oid = "%s" % ds.get('heading').replace(' ','')
+    context.invokeFactory(type_name,oid)
+    object = getattr(context,oid)
+    ds.set('Title',ds.get('heading'))
+    object.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type]
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_accommodation.py.Joachim
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_accommodation.py.Joachim	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_accommodation.py.Joachim	(revision 276)
@@ -0,0 +1,55 @@
+##parameters=REQUEST=None
+# $Id: add_accommodation.py 107 2005-10-27 23:58:38Z joachim $
+"""
+Add a Accommodation Hall
+
+"""
+type_name = 'Accommodation'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+accofolder = getattr(context,"Accommodation",None)
+if accofolder is None:
+    context.invokeFactory('AccoFolder','Accommodation')
+    accofolder = getattr(context,"Accommodation")
+    context.notifyCPSDocumentCreation(ob=accofolder)
+    
+    
+res,psm,ds = lt.renderLayout(layout_id= 'accommodation',
+                      schema_id = 'accommodation',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'add_accommodation',
+                      )
+if psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+elif psm == 'valid':
+    oid = "%s" % ds.get('heading').replace(' ','')
+    accofolder.invokeFactory(type_name,oid) 
+    object = getattr(accofolder,oid)    
+    object.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_course_ticket.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_course_ticket.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/add_course_ticket.py	(revision 276)
@@ -0,0 +1,67 @@
+##parameters=REQUEST
+# $Id$
+"""
+book an accomodation
+"""
+type_name = 'CourseTicket'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+
+lt = context.portal_layouts
+pv = context.portal_vocabularies
+#pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'study_level',
+                      schema_id= 'study_level',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'add_course_ticket',
+                      )
+if True or psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Not yet active',
+                                 #psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 #psm = str(ds),
+                                 )
+    
+elif psm == 'valid':
+    psm = (ds)
+    oid = ds.get('Title')
+    if hasattr(context,oid):
+        return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'You already registered for that level',
+                                 )
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)
+    voc = pv.courselevel
+    ds.set('Title',voc.get(oid))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    semester_id = 'Semester_1_%s_%s' % (oid,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'First Semester'})
+    semester_id = 'Semester_2_%s_%s' % (oid,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'Second Semester'})
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_slip_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_slip_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_slip_form.pt	(revision 276)
@@ -0,0 +1,22 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <h1> Your Admission Slip</h1>      
+    <p>you used a <span  tal:content="options/dict/sc_value" /> Scratchcard with PIN 
+    <span tal:content="options/dict/sc_pin" />
+    </p>
+      <tal:block  tal:content="structure options/rendered" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_status.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_status.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_status.py	(revision 276)
@@ -0,0 +1,38 @@
+##parameters=
+# $Id$
+"""
+search for admitted students 
+return html renderer + psm
+"""
+##type_name = 'Jamb'
+##ti = context.portal_types[type_name]
+##
+##context.REQUEST.set('type_name',type_name)
+##
+##validate = REQUEST.has_key("cpsdocument_edit_button")
+
+request = context.REQUEST
+lt = context.portal_layouts
+catalog = context.portal_catalog
+
+rendered,psm,ds = lt.renderLayout(layout_id= 'admission_status',
+                      schema_id= 'jamb',
+                      context=context,
+                      mapping=request,
+                      ob={},
+                      layout_mode='create',
+                      )
+qs = ds.get('quick_search')
+list = []
+if qs:
+    res = catalog(SearchableText = "%s*" % qs)
+    if res:
+        for i in res:
+            o = i.getObject()
+            if o.portal_type == 'Jamb':
+                list.append(o)
+return context.admission_status_form(rendered = rendered,
+                                 psm = '',
+                                 list = list,
+                                 ds = ds
+                                 )
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_status_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_status_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/admission_status_form.pt	(revision 276)
@@ -0,0 +1,47 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+    <metal:block fill-slot="main">
+        <h1>List admitted students!</h1>
+        <p>
+          You may be seeing a long list of names or just the name of the person of your interest below. 
+          Click on the View Details against the name of the candidate of your interest to display the 
+          required information. If the candidate of your interest is not in the list displayed, 
+          you may type another name or registration number again in the Quick Search box below and click 
+          on GO button.
+        </p>
+      <div tal:replace="structure rendered_main" />
+        <span  tal:define="list options/list">
+          <span tal:condition="not: list">
+            No Records found
+          </span>
+          <span tal:condition="list">
+            <h2>The following entries match your query:</h2>
+          <table>
+            <tr tal:repeat="row list">
+              <td colspan="" tal:content="row/reg_nr"></td>
+              <td colspan="" tal:content="row/firstname"></td>
+              <td colspan="" tal:content="row/middlename"></td>
+              <td colspan="" tal:content="row/lastname"></td>
+            </tr>
+          </table>
+        </span>
+        </span>
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/book_accommodation.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/book_accommodation.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/book_accommodation.py	(revision 276)
@@ -0,0 +1,75 @@
+##parameters=REQUEST
+# $Id$
+"""
+book an accomodation
+"""
+import DateTime
+current = DateTime.DateTime()
+
+type_name = 'Student'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'accobook',
+                      schema_id= 'student_accommodation',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      submit = "book",
+                      action = 'book_accommodation',
+                      )
+if psm == 'invalid':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    sf = context.getContent()
+    halls = getattr(context,'accommodation').contentValues()
+    beds = []
+    student = context.PERSONAL.getContent()
+    sf = context.getContent()
+    for hall in halls:
+        h = hall.getContent()
+        ba = int(getattr(h,'beds_assigned',0))
+        bal = getattr(h,'beds_assigned_list',[])
+        nr_of_beds = int(h.nr_of_blocks) * int(h.nr_of_floors) * int(h.rooms_per_floor) * int(h.beds_per_room)
+        if h.which_sex == student.sex and nr_of_beds > len(bal):
+            break
+    dict = {'heading': h.heading,
+            'text': h.text,
+            'which_sex': h.which_sex,
+            'nr_of_blocks': h.nr_of_blocks,
+            'nr_of_floors': h.nr_of_floors,
+            'rooms_per_floor': h.rooms_per_floor,
+            'beds_per_room': h.beds_per_room,
+            'nr_of_free': nr_of_beds,
+            'beds_assigned': ba,
+             }
+    ba += 1
+    dict['beds_assigned'] = ba
+    bal.append(('%s:%d' % (pm.getAuthenticatedMember(),ba)))
+    dict['beds_assigned_list'] = bal
+    h.edit(mapping = dict)
+    ds.set('accommodation', "Bed # %(beds_assigned)s in %(heading)s" % dict)
+    sf.edit(mapping = ds)
+    #psm = "Your not admitted"
+    psm = "h:%(heading)s free:%(nr_of_free)s %(beds_assigned)s" % dict
+
+    ds.set('sc_date',current)
+    sf.setScratchCardData('accommodation',ds)
+
+    return context.booked_accommodation(v=dict)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/book_accommodation_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/book_accommodation_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/book_accommodation_form.pt	(revision 276)
@@ -0,0 +1,25 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+        <h1>Book Your Accommodation!</h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/booked_accommodation.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/booked_accommodation.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/booked_accommodation.pt	(revision 276)
@@ -0,0 +1,19 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+  <metal:block fill-slot="main"
+               tal:define="acco options/v"
+               >
+    You have successfully booked bed nr <span tal:content="acco/beds_assigned" /> in <span tal:content="acco/heading" />.
+    <p>Your next steps:</p>
+    <ul>
+      <li>Buy a Hostel Fee Scratch Card</li>
+      <li>Login with your user id and password </li>
+      <li>Click 'Pay Hostel Fee'</li>
+    </ul>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/check_admission.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/check_admission.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/check_admission.py	(revision 276)
@@ -0,0 +1,63 @@
+##parameters=REQUEST
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+import DateTime
+current = DateTime.DateTime()
+
+
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'admission',
+                      schema_id= 'student_admission',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      action = "check_admission",
+                      submit = "check",
+                      )
+if psm == 'invalid':
+    return context.check_admission_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.check_admission_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    s_id = "s%s" % ds.get('jamb_id')
+    catalog = context.portal_catalog
+    search = catalog(SearchableText = "%s*" % s_id)
+    student = getattr(context,s_id,None)
+    if student is None:
+    #if len(search) < 1:
+        psm = "Your are not admitted"
+        return context.check_admission_form(rendered = res,
+                                 psm = psm, 
+                                 ds = ds,
+                                 )
+
+ds.set('sc_date',current)
+student.getContent().setScratchCardData('adm_check',ds)
+
+jamb = getattr(student,'JAMB')
+res = jamb.getContent().render(layout_id = 'admission_slip', 
+                               layout_mode = 'view',
+                               schema_id = 'jamb')
+
+return context.admission_slip_form(rendered = res, dict = ds)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/check_admission_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/check_admission_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/check_admission_form.pt	(revision 276)
@@ -0,0 +1,32 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <h1> Check Your Admission Status! </h1>
+        <div tal:replace="structure rendered_main" />
+          <p>Instructions :</p>
+          <ul>
+            <li>Buy an Admission Check Scratch Card </li> 
+            <li>Enter the PIN here </li> 
+            <li>Print the Admission Slip which is displayed if you are admitted by the Univesity</li>
+            <li>Buy a Clearance Scratch Card </li> 
+            <li>Proceed to the Clearance Eligibility Online Form and fill your O/L details </li> 
+            <li>Proceed to the Univesity with all original documents for clearance to finalize the clearance process </li>
+          </ul>
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/clearance.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/clearance.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/clearance.py	(revision 276)
@@ -0,0 +1,66 @@
+##parameters=REQUEST
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+import DateTime
+current = DateTime.DateTime()
+
+
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'clearance',
+                      schema_id= 'student_clearance',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      action = "clearance",
+                      submit = "submit",
+                      )
+
+if psm == 'invalid':
+    return context.clearance_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.clearance_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    s_id = "s%s" % ds.get('jamb_id')
+    catalog = context.portal_catalog
+    search = catalog(SearchableText = "%s*" % s_id)
+    if len(search) < 1:
+        psm = "You are not admitted"
+        return context.clearance_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+    sf = getattr(context,s_id,None)
+    if sf and getattr(sf,'PERSONAL',None):
+        psm = "Your are already admitted, please login"
+        return context.clearance_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+    rset = REQUEST.set
+    student = getattr(context,s_id)
+    ds.set('sc_date',current)
+    student.getContent().setScratchCardData('clearance',ds)
+    sc_pin =  ds.get('sc_pin')
+    #return REQUEST.RESPONSE.redirect("%s/logged_in?__ac_name=%s&__ac_password=UnSeT&sc_pin=%s"
+    return REQUEST.RESPONSE.redirect("%s/logged_in?__ac_name=%s&__ac_password=123456&sc_pin=%s"
+                                    % (context.absolute_url(),s_id,sc_pin))
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/clearance_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/clearance_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/clearance_form.pt	(revision 276)
@@ -0,0 +1,30 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <h1>Start Clearance Process!</h1>
+        <div tal:replace="structure rendered_main" />
+          <p>Instructions :</p>
+          <ul>
+            <li>Buy a Clearance Scratch Card </li> 
+            <li>Enter the PIN here </li> 
+            <li>Proceed to the Clearance Eligibility Online Form and fill your O/L details </li> 
+            <li>Proceed to the Univesity with all original documents for clearance to finalize the clearance process</li>
+          </ul>
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_jamb.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_jamb.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_jamb.py	(revision 276)
@@ -0,0 +1,70 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Create an the Jamb-Record for a Student
+
+"""
+
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'jambcreate',
+                      schema_id= 'jamb',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      )
+if psm == 'invalid':
+    return context.create_jamb_form(rendered = res,
+                                 psm = 'Please correct your errors',
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.create_jamb_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+    
+elif psm == 'valid':
+    s_id = "s%s" % ds.get('reg_nr')
+    skw = {'title': "%(firstname)s %(lastname)s" % ds}
+    context.invokeFactory('Student',s_id) 
+    student = getattr(context,s_id)    
+    student.getContent().edit(mapping=skw)
+    context.notifyCPSDocumentCreation(ob=student)
+    jamb_id = 'JAMB'
+    student.invokeFactory('Jamb',jamb_id) 
+    jamb = getattr(student,jamb_id)    
+    ds.set('title', "%(reg_nr)s (%(lastname)s)" % ds)
+    jamb.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=jamb)
+    psm = 'Student created'
+    noCPSMember = False
+    try:
+        #pr.addMember(s_id, 'UnSeT',roles=('Member','CPSMember','Student','Contributor'))
+        pr.addMember(s_id, '123456',roles=('Member','CPSMember','Student','Contributor'))
+    except:
+        noCPSMember = True
+    if noCPSMember:
+        #pr.addMember(s_id, 'UnSeT',roles=('Member','Student','Contributor'))
+        pr.addMember(s_id, '123456',roles=('Member','Student','Contributor'))
+    student.manage_setLocalRoles(s_id, ['Owner'])
+    jamb.manage_setLocalRoles(s_id, ['Owner'])
+##    student.getContent().setOwnership(s_id)
+##    jamb.getContent().setOwnership(s_id)
+##    groups = context.portal_directories.groups
+##    gm = list(groups.getEntry('Students')['members'])
+##    gm.extend((s_id,))
+##    groups.editEntry({'group': 'Students', 
+##                      'members': gm})  
+    return context.students_folder_view_manager(psm=psm)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_jamb_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_jamb_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_jamb_form.pt	(revision 276)
@@ -0,0 +1,22 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition python:1;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+      <h1>Enter the JAMB Data for a Student </h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_personal_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_personal_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_personal_form.pt	(revision 276)
@@ -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="StudentPersonal" /> 
+      <p>
+        <input id="objectTitle" type="text" name="Title" value="personal" class="focus" size="40" />
+        <input type="submit" class="standalone searchButton" value="create" />
+      </p>
+    </form>
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_student.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_student.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_student.py	(revision 276)
@@ -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_SRP/branches/srpp_branch/skins/waeup_student/create_student_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_student_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/create_student_form.pt	(revision 276)
@@ -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_SRP/branches/srpp_branch/skins/waeup_student/eligibility.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/eligibility.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/eligibility.py	(revision 276)
@@ -0,0 +1,81 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+request = REQUEST
+rget = request.get
+rset = request.set
+fget = request.form.get
+form = request.form
+fhas = request.form.has_key
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+pm = context.portal_membership
+eli = context.ELIGIBILITY.getContent()
+sr = eli.schoolresults
+
+validate = fhas('add') or fhas('change') or fhas('delete')
+data = {'faculty': eli.faculty,
+        'course': eli.course,
+        'jamb_aggregate': eli.jamb_aggregate,
+        }
+res,psm,ds = lt.renderLayout(layout_id= 'student_eligibility',
+                      schema_id= 'student_eligibility',
+                      context=context,
+                      mapping=validate and request,
+                      ob=data,
+                      layout_mode='create',
+                      formaction = "eligibility",
+                      schoolresults = sr,
+                      )
+if psm == 'invalid':
+    return context.eligibility_form(rendered = res,
+                                 psm = 'Please correct your errors',
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.eligibility_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+inr = 0
+if fhas('add') and (fget('type') or fget('subject') or fget('result')):
+    sr.append((fget('type'),fget('subject'),fget('result')))
+    psm = "new result added"
+elif fhas('change') and fget('keys'):
+    for k in fget('keys'):
+        sr[int(k)] = (fget('type_%s' % k),fget('subject_%s' % k),fget('result_%s' % k))
+        inr += 1
+    psm = "%s items changed" % inr
+elif fhas('delete') and fget('keys'):
+    new = []
+    todelete = fget('keys')
+    for k in range(len(sr)):
+        if str(k) not in todelete:
+            new.append(sr[k])
+    inr = len(todelete)
+    sr = new
+    psm = "%s items deleted" % inr
+elif psm == 'valid':
+    psm = "Your changes have been saved."
+
+ds.set('schoolresults',sr)
+eli.edit(mapping=ds)
+res,dummy,fds = lt.renderLayout(layout_id= 'student_eligibility',
+                      schema_id= 'student_eligibility',
+                      context=context,
+                      mapping=request,
+                      ob={},
+                      layout_mode='create',
+                      formaction = "eligibility",
+                      schoolresults = sr,
+                      )
+
+return context.eligibility_form(rendered = res,
+                                 #psm = "%s <br /> %s" % (str(ds),str(lt.student_eligibility.getLayoutDefinition()))
+                                 psm = psm,
+                                 )
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/eligibility_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/eligibility_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/eligibility_form.pt	(revision 276)
@@ -0,0 +1,21 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <div tal:replace="structure rendered_main" />
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_index_html.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+
+#return context.student_view_manager()
+if not context.portal_membership.isAnonymousUser:
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.cpsdocument_view()
+    elif 'StudentManager' in roles:
+        return context.jamb_view_manager()
+return context.jamb_view_student()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_view_manager.pt	(revision 276)
@@ -0,0 +1,31 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/jamb_view_student.pt	(revision 276)
@@ -0,0 +1,32 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+      
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_admission_status_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_admission_status_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_admission_status_create.pt	(revision 276)
@@ -0,0 +1,83 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction string:check_admission_form;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             "
+             >
+  <form action='admission_status' method='post'
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+        <input type="submit" class="standalone" name="cpsdocument_edit_button" value="GO" />
+      </div>        
+    </div>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_eligibility_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_eligibility_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_eligibility_create.pt	(revision 276)
@@ -0,0 +1,174 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction options/formaction;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             results options/schoolresults;
+             "
+             >
+  <form action='eligibility' method='post' tal:attributes="action formaction"
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%" tal:condition="results|nothing">
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <span tal:repeat="row results" tal:omit-tag="">
+        <tr tal:define="rindex repeat/row/index">
+          <td align="left" valign="top">
+            <input type="checkbox" name="keys:list" value="100" tal:attributes="value string:${repeat/row/index}"/>
+          </td>
+          <td align="left" valign="top">
+            <div class="field">
+              <input type="text" name="key_0" value="100" size="20" 
+                     tal:attributes="name string:type_${rindex};value python:row[0]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="label_0" value="Year 1 (100 Level)" size="40" 
+                     tal:attributes="name string:subject_${rindex};value python:row[1]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="msgid_0" value="" size="10" 
+                     tal:attributes="name string:result_${rindex};value python:row[2]" />
+            </div>
+          </td>
+        </tr>
+      </span>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="change" value=" Change " />
+          <input class="standalone" type="submit" name="delete" value=" Delete " />
+        </td>
+      </tr>
+    </table>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%">
+      <tr>
+        <td align="left" valign="top" colspan="2">
+          <div>Add a new post-primary school result:</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div  class="field">
+            <input type="text" name="type" value="" size="20" /> 
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="subject" value="" size="40" />
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="result" value="" size="10" />
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="add" value=" Change/Add " />
+        </td>
+      </tr>
+    </table>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_jambcreate_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_jambcreate_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_jambcreate_create.pt	(revision 276)
@@ -0,0 +1,83 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction string:check_admission_form;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             "
+             >
+  <form action='create_jamb' method='post'
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+        <input type="submit" class="standalone" name="cpsdocument_edit_button" value="add" />
+      </div>        
+    </div>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_personal_edit.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_personal_edit.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_personal_edit.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/default_edit" />
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_personal_view.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_personal_view.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_personal_view.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/table_view" />
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_results_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_results_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_results_create.pt	(revision 276)
@@ -0,0 +1,117 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction options/formaction;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             results options/schoolresults;
+             "
+             >
+  <form action='eligibility' method='post' tal:attributes="action formaction"
+        enctype='multipart/form-data' class='workflow'>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%" tal:condition="results|nothing">
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <span tal:repeat="row results" tal:omit-tag="">
+        <tr tal:define="rindex repeat/row/index">
+          <td align="left" valign="top">
+            <input type="checkbox" name="keys:list" value="100" tal:attributes="value string:${repeat/row/index}"/>
+          </td>
+          <td align="left" valign="top">
+            <div class="field">
+              <input type="text" name="key_0" value="100" size="20" 
+                     tal:attributes="name string:type_${rindex};value python:row[0]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="label_0" value="Year 1 (100 Level)" size="40" 
+                     tal:attributes="name string:subject_${rindex};value python:row[1]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="msgid_0" value="" size="10" 
+                     tal:attributes="name string:result_${rindex};value python:row[2]" />
+            </div>
+          </td>
+        </tr>
+      </span>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="change" value=" Change " />
+          <input class="standalone" type="submit" name="delete" value=" Delete " />
+        </td>
+      </tr>
+    </table>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%">
+      <tr>
+        <td align="left" valign="top" colspan="2">
+          <div>Add a new postprimary school result</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div  class="field">
+            <input type="text" name="type" value="" size="20" /> 
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="subject" value="" size="40" />
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="result" value="" size="10" />
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="add" value=" Add " />
+        </td>
+      </tr>
+    </table>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_sc_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_sc_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_sc_create.pt	(revision 276)
@@ -0,0 +1,85 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction options/action;
+             submittext options/submit;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             "
+             >
+  <form action='check_admission' tal:attributes="action formaction" method='post'
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+        <input type="submit" class="standalone" name="cpsdocument_edit_button" 
+               value="check" tal:attributes="value submittext"/>
+      </div>        
+    </div>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_slregister_create.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_slregister_create.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/layout_slregister_create.pt	(revision 276)
@@ -0,0 +1,2 @@
+<tal:block define="global creation python:1" />
+<metal:block use-macro="here/waeup_layout_lib/macros/common_edit" />
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/pay_hostel_fee.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/pay_hostel_fee.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/pay_hostel_fee.py	(revision 276)
@@ -0,0 +1,45 @@
+##parameters=REQUEST
+# $Id$
+"""
+book an accomodation
+"""
+import DateTime
+current = DateTime.DateTime()
+
+type_name = 'Student'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'accopay',
+                      schema_id= 'student_hostel_fee',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      submit = "pay",
+                      action = 'pay_hostel_fee',
+                      )
+if psm == 'invalid':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    sf = context.getContent()
+
+    ds.set('sc_date',current)
+    sf.setScratchCardData('hostel_fee',ds)
+
+    return context.payed_hostel_fee(dict=ds)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/payed_hostel_fee.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/payed_hostel_fee.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/payed_hostel_fee.pt	(revision 276)
@@ -0,0 +1,17 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+  <metal:block fill-slot="main"
+               tal:define="student context/getContent;
+               dict options/dict"
+               >
+    You payed <span tal:content="student/accommodation" /><br /> 
+    with Scratchcard PIN <span tal:content="dict/sc_pin" /> <br />
+    on <span  tal:content="dict/sc_date"/>.
+    
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/personal_addon.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/personal_addon.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/personal_addon.py	(revision 276)
@@ -0,0 +1,51 @@
+##parameters=REQUEST
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+pm = context.portal_membership
+
+jamb = getattr(context,'JAMB')
+jamb_rendered = jamb.getContent().render(layout_id = 'admission_slip', 
+                               layout_mode = 'view',
+                               schema_id = 'jamb')
+
+res,psm,ds = lt.renderLayout(layout_id= 'student_personal_addon',
+                      schema_id= 'student_personal',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      )
+res = jamb_rendered + res
+if psm == 'invalid':
+    return context.personal_addon_form(rendered = res,
+                                 #psm = str(ds),
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.personal_addon_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    s_personal = context.PERSONAL.getContent()
+    s_personal.edit(mapping={'email': ds.get('email')})
+    #pw = REQUEST.get("widget__pw")
+    #pm.setPassword(pw)
+psm = 'Email has been successfully set. '
+##return context.REQUEST.RESPONSE.redirect('%s' % context.portal_url.getUrlFromRpath('/students'))
+
+return context.eligibility()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/personal_addon_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/personal_addon_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/personal_addon_form.pt	(revision 276)
@@ -0,0 +1,23 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <h1> Fillin Your Email</h1>
+        <div tal:replace="structure rendered_main" />
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/process_waeup_login.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/process_waeup_login.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/process_waeup_login.py	(revision 276)
@@ -0,0 +1,57 @@
+##parameters=member=None,sc_pin=None
+# $Id$
+"""
+Process a student after login
+
+"""
+request = context.REQUEST
+response=request.response
+
+if request.form.get('submit') == 'Login':
+    #waeup = context.portal_catalog(id = 'demouni')[0]
+    waeup = context.portal_catalog(portal_type = 'University')[0]
+    if "Manager" in member.getRoles():
+        return
+    return response.redirect(waeup.getURL())
+
+member_id = str(member)
+ma = getattr(context,member_id)
+jkw = {'admission_sc_pin': sc_pin}
+jamb = getattr(ma,'JAMB')
+jamb.getContent().edit(mapping=jkw)
+#pdid = 'personal%s' % member_id
+pdid = 'PERSONAL'
+ma.invokeFactory('StudentPersonal', pdid)
+pd = getattr(ma,pdid)
+pkw = {}
+jc = jamb.getContent()
+pkw['sex'] = getattr(jc,'sex')
+pkw['firstname'] = getattr(jc,'firstname')
+pkw['middlename'] = getattr(jc,'middlename')
+pkw['lastname'] = getattr(jc,'lastname')
+pkw['aggregate'] = getattr(jc,'aggregate')
+pkw['faculty'] = getattr(jc,'faculty')
+pkw['course'] = getattr(jc,'course')
+pkw['age'] = getattr(jc,'age')
+pkw['jamb_results'] = getattr(jc,'exam_results')
+pkw['jamb_aggregate'] = getattr(jc,'aggregate')
+pkw['jamb_listing_date'] = getattr(jc,'listing_date')
+pkw['state'] = getattr(jc,'state')
+
+pd.getContent().edit(mapping=pkw)
+context.notifyCPSDocumentCreation(ob=pd)
+
+pdid = 'DOCUMENTS'
+ma.invokeFactory('StudentDocuments', pdid)
+pd = getattr(ma,pdid)
+context.notifyCPSDocumentCreation(ob=pd)
+
+pdid = 'ELIGIBILITY'
+ma.invokeFactory('StudentEligibility', pdid)
+pd = getattr(ma,pdid)
+pd.getContent().edit(mapping=pkw)
+context.notifyCPSDocumentCreation(ob=pd)
+
+return response.redirect("%s" % ma.absolute_url())
+#return ma.personal_addon(REQUEST=context.REQUEST)
+
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/register_level.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/register_level.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/register_level.py	(revision 276)
@@ -0,0 +1,63 @@
+##parameters=REQUEST
+# $Id$
+"""
+register for next level
+"""
+type_name = 'StudyLevel'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+
+lt = context.portal_layouts
+pv = context.portal_vocabularies
+#pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'study_level',
+                      schema_id= 'study_level',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'register_level',
+                      )
+if psm == 'invalid':
+    return context.register_level_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.register_level_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+
+elif psm == 'valid':
+    voc = pv.courselevel
+    level_id = voc.items()[0][0]
+    level = getattr(context,level_id,None)
+    if level:
+        return context.register_level_form(rendered = res,
+                                 psm = "You have already registered for Level %s" % voc.get(level_id),
+                                 ds = ds,
+                                 )
+
+    context.invokeFactory(type_name,level_id)
+    object = getattr(context,level_id)
+    ds.set('Title',voc.get(level_id))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % level_id
+    semester_id = 'Semester_1_%s_%s' % (level_id,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'First Semester'})
+    semester_id = 'Semester_2_%s_%s' % (level_id,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'Second Semester'})
+    context_ti = context.portal_types[context.portal_type]
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/register_level_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/register_level_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/register_level_form.pt	(revision 276)
@@ -0,0 +1,25 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+        <h1>Register for Next Level!</h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_admitted_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_admitted_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_admitted_form.pt	(revision 276)
@@ -0,0 +1,12 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   jamb options/jamb/getContent;
+                   student options/student/getContent;
+                   edition python:1;"
+                   >
+  <metal:html use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main">
+      <a href="edits" tal:attributes="href string:${context/pd/absolute_url}/cpsdocument_edit_form"></a>
+    </metal:main>
+  </metal:html>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_documents_edit_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_documents_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_documents_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="python: 0 and not creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_index_html.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+
+#return context.student_view_manager()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.student_view_manager()
+return context.student_view_student()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_edit_form.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="python: 0 and not creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_index_html.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_index_html.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_index_html.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+
+#return context.student_view_manager()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.cpsdocument_view()
+    elif 'StudentManager' in roles:
+        return context.student_personal_view_manager()
+return context.student_personal_view_student()
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_view_manager.pt	(revision 276)
@@ -0,0 +1,31 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_personal_view_student.pt	(revision 276)
@@ -0,0 +1,20 @@
+<metal:block define-macro="view">
+  <metal:block use-macro="here/content_lib_master/macros/master">
+    <metal:block fill-slot="header">
+    </metal:block>
+
+    <metal:block fill-slot="css_slot">
+      <link rel="Stylesheet" type="text/css" href=""
+            tal:attributes="href string:${base_url}document.css" />
+      <link rel="Stylesheet" type="text/css" href=""
+            tal:attributes="href string:${base_url}forum.css" />
+    </metal:block>
+    
+    <metal:block fill-slot="main">
+      <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+    </metal:block>
+    <metal:block fill-slot="sub">
+    </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_view_manager.pt	(revision 276)
@@ -0,0 +1,38 @@
+<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="items here/contentValues"
+             >
+    <h2>Data for Student <span tal:content="context/id" /></h2>
+    <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>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_view_student.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_view_student.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/student_view_student.pt	(revision 276)
@@ -0,0 +1,37 @@
+<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 here/getContent;
+               items here/contentValues"
+               >
+    <tal:block condition="python:0 and len(items)">
+    <table cellspacing="0" cellpadding="0">
+        <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>
+    </table>
+    </tal:block>
+    <ul>
+      <li>  <a href="" tal:attributes="href string:${context/absolute_url}/JAMB">Clearence Form Processing</a></li>
+      <li>  <a href="" tal:attributes="href string:${context/absolute_url}/PERSONAL">Personal Data Form</a></li>
+      <li>  <a href="" tal:attributes="href string:${context/absolute_url}/book_accommodation">Book your accommodation</a></li>
+    </ul>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view.py
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view.py	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view.py	(revision 276)
@@ -0,0 +1,20 @@
+##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 not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles or 'UniversityManager' in roles:
+        return context.students_folder_view_manager(psm=psm)
+    elif 'Student' in roles:
+        return getattr(context, str(member))()
+context_ti = context.portal_types['University'] 
+index = context_ti.getActionById('view','university_view')
+return getattr(context,index)(psm=psm)
+return context.students_folder_view_all(psm=psm)
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_all.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_all.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_all.pt	(revision 276)
@@ -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="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="student_folder here/getContent;
+               items here/contentValues"
+               >
+    <span tal:condition="python: mtool.isAnonymousUser()"> 
+      Please <a href="" tal:attributes="href string:${context/portal_url}/login_form">login</a> or <br />
+      <a href="" tal:attributes="href string:${context/absolute_url}/admission_status">check you Jambadmission</a>.
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_anon.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_anon.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_anon.pt	(revision 276)
@@ -0,0 +1,24 @@
+<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"
+               >
+    <a href="" tal:attributes="href string:${context/absolute_url}/admission_status">Admission List UME</a>.<br />
+    <a href="" tal:attributes="href string:${context/absolute_url}/check_admission">Admission Request (JAMB canditates only)</a>.
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_manager.pt
===================================================================
--- /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/branches/srpp_branch/skins/waeup_student/students_folder_view_manager.pt	(revision 276)
@@ -0,0 +1,38 @@
+<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> 
+      <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_SRP/trunk/Academics.py
===================================================================
--- /WAeUP_SRP/trunk/Academics.py	(revision 276)
+++ /WAeUP_SRP/trunk/Academics.py	(revision 276)
@@ -0,0 +1,179 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+
+from Products.CMFCore.utils import UniqueObject, 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.CPSDocument.CPSDocument import CPSDocument 
+#from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
+#from Products.CPSCore.CPSBase import CPSBaseBTreeDocument as BaseBTreeDocument 
+#from Products.CMFCore.DirectoryView import registerDirectory
+
+#registerDirectory('skins', globals())
+#registerDirectory('skins/waeup_default', globals())
+#registerDirectory('skins/waeup_faculty', globals())
+
+##class SCFolder(CPSDocument): ###(
+##    """
+##    WAeUP StudyCourseFolder containing StudyCourses 
+##    """
+##    meta_type = 'SCFolder'
+##    portal_type = meta_type
+##    security = ClassSecurityInfo()
+##    
+##    def __init__(self, id, **kw):
+##        CPSDocument.__init__(self, id, **kw)
+##
+##    security.declareProtected(View,"Title")
+##    def Title(self):
+##        """compose title"""
+##        return "SCFolder of %s" % (self.title)
+##
+##InitializeClass(SCFolder)
+##
+##def addSCFolder(container, id, REQUEST=None, **kw):
+##    """Add a SCFolder."""
+##    ob = SCFolder(id, **kw)
+##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+##
+#####)
+
+class Certificate(CPSDocument): ###(
+    """
+    WAeUP Certificate 
+    """
+    meta_type = 'Certificate'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+    def __init__(self, id, **kw):
+        CPSDocument.__init__(self, id, **kw)
+
+##    security.declareProtected(View,"Title")
+##    def Title(self):
+##        """compose title"""
+##        return "Certificate of %s" % (self.title)
+
+InitializeClass(Certificate)
+
+def addCertificate(container, id, REQUEST=None, **kw):
+    """Add a Certificate."""
+    ob = Certificate(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class CertificateCourse(CPSDocument): ###(
+    """
+    WAeUP CertificateCourse  
+    """
+    meta_type = 'CertificateCourse'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        res = self.portal_catalog({'meta_type': "Course",
+                                           'id': self.id})
+        if res:
+            course = res[-1].getObject()  
+        else:
+            return "No course for %s" % self.id
+        return "%s" % (course.title)
+
+InitializeClass(CertificateCourse)
+
+def addCertificateCourse(container, id, REQUEST=None, **kw):
+    """Add a CertificateCourse."""
+    ob = CertificateCourse(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+class Faculty(CPSDocument): ###(
+    """
+    WAeUP Faculty containing Departments 
+    """
+    meta_type = 'Faculty'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+##    def __init__(self, id, **kw):
+##        CPSDocument.__init__(self, id, **kw)
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        return "%s" % (self.title)
+
+InitializeClass(Faculty)
+
+def addFaculty(container, id, REQUEST=None, **kw):
+    """Add a Faculty."""
+    ob = Faculty(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class Department(CPSDocument): ###(
+    """
+    WAeUP Department containing the courses and students
+    """
+    meta_type = 'Department'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+##    security.declareProtected(View,"Title")
+##    def Title(self):
+##        """compose title"""
+##        reg_nr = self.getId()[1:]
+##        return "Department of %s" % (self.title)
+
+InitializeClass(Department)
+
+def addDepartment(container, id, REQUEST=None, **kw):
+    """Add a Department."""
+    ob = Department(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+class Course(CPSDocument): ###(
+    """
+    WAeUP Course  
+    """
+    meta_type = 'Course'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        return self.title
+    
+InitializeClass(Course)
+
+def addCourse(container, id, REQUEST=None, **kw):
+    """Add a Course."""
+    ob = Course(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+class CourseTicket(CPSDocument): ###(
+    """
+    WAeUP CourseTicket  
+    """
+    meta_type = 'CourseTicket'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+InitializeClass(CourseTicket)
+
+def addCourseTicket(container, id, REQUEST=None, **kw):
+    """Add a CourseTicket."""
+    ob = CourseTicket(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
Index: /WAeUP_SRP/trunk/Accommodation.py
===================================================================
--- /WAeUP_SRP/trunk/Accommodation.py	(revision 276)
+++ /WAeUP_SRP/trunk/Accommodation.py	(revision 276)
@@ -0,0 +1,54 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+
+from Products.CMFCore.utils import UniqueObject, 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.CPSDocument.CPSDocument import CPSDocument 
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder 
+
+class AccoFolder(CPSDocument): ###(
+    """
+    WAeUP AccoFolder containing Accommodation halls 
+    """
+    meta_type = 'AccoFolder'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+
+InitializeClass(AccoFolder)
+
+def addAccoFolder(container, id, REQUEST=None, **kw):
+    """Add a AccoFolder."""
+    ob = AccoFolder(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
+
+
+class Accommodation(CPSDocument): ###(
+    """
+    WAeUP Accommodation containing Departments 
+    """
+    meta_type = 'Accommodation'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+    
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        heading = getattr(content,'heading',None)
+        if heading is None:
+            return self.title
+        return heading
+    
+InitializeClass(Accommodation)
+
+def addAccommodation(container, id, REQUEST=None, **kw):
+    """Add a Accommodation."""
+    ob = Accommodation(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
Index: /WAeUP_SRP/trunk/CHANGES
===================================================================
--- /WAeUP_SRP/trunk/CHANGES	(revision 276)
+++ /WAeUP_SRP/trunk/CHANGES	(revision 276)
@@ -0,0 +1,12 @@
+Requires:
+~~~~~~~~~
+-  
+New features:
+~~~~~~~~~~~~~
+-
+Bug fixes:
+~~~~~~~~~~
+-
+New internal features:
+~~~~~~~~~~~~~~~~~~~~~~
+-
Index: /WAeUP_SRP/trunk/Extensions/install.py
===================================================================
--- /WAeUP_SRP/trunk/Extensions/install.py	(revision 276)
+++ /WAeUP_SRP/trunk/Extensions/install.py	(revision 276)
@@ -0,0 +1,672 @@
+#-*- mode: python; mode: fold -*-
+# $Id$
+from Products.ExternalMethod.ExternalMethod import ExternalMethod
+from Products.CPSInstaller.CPSInstaller import CPSInstaller
+from Products.CMFCore.CMFCorePermissions import View, ModifyPortalContent,AccessContentsInformation
+from Products.WAeUP.WAeUPPermissions import UniversityManage, StudentManage,FacultyManage,\
+                                            DepartmentManage,CourseManage
+try:
+  from Products.CPSSubscriptions.permissions import CanNotifyContent
+  CPSSubscriptions = True
+except ImportError:
+  CPSSubscriptions = False
+try:
+  from Products.CPSForum.CPSForumPermissions import ForumManageComments
+  CPSForum = True
+except ImportError:
+  CPSForum = False
+
+from Products.WAeUP.Students import addStudentsFolder
+
+SRPP_ID = "demouni"
+SRPP_TITLE = "Demo University"
+
+class WAeUPInstaller(CPSInstaller):
+    """
+    WAeUP Installer
+    """
+    product_name = "WAeUP"
+
+    def install(self,portal):
+        "install"
+        log = []
+        prlog = log.append
+
+        def pr(msg, prlog=prlog):
+            prlog('%s<br>' % msg)
+
+        product_name = self.product_name
+        pr("Starting %(product_name)s install" % vars() )
+
+        # Roles and Permissions ###(
+        #
+        self.verifyRoles((
+            # A role that can manage the University.
+            'UniversityManager',
+            # A role that can manage the StudentsRecords.
+            'StudentManager',
+            # A role that can manage a Faculty.
+            'FacultyManager',
+            # A role that can manage a department.
+            'DepartmentManager',
+            # A role that can manage a Course.
+            'CourseManager',
+            # The Student Role
+            'Student',
+        ))
+        waeup_perms = {
+            UniversityManage:
+                ('Manager', 'SectionManager','UniversityManager',
+                 ),
+            StudentManage:
+                ('Manager', 'SectionManager','UniversityManager', 'StudentManager'
+                 ),
+            FacultyManage:
+                ('Manager', 'SectionManager','UniversityManager', 'FacultyManager'
+                 ),
+            DepartmentManage:
+                ('Manager', 'SectionManager','UniversityManager', 'DepartmentManager'
+                 ),
+            CourseManage:
+                ('Manager', 'SectionManager','UniversityManager', 'CourseManager'
+                 ),
+        }
+        self.setupPortalPermissions(waeup_perms)
+        ###)
+
+        # external methods ###(
+        #
+        ext_methods = ( { 'id': 'waeup_migrate',
+                          'title': 'WAeUP (migrate from an earlier version)',
+                          'script': 'WAeUP.install',
+                          'method': 'migrate',
+                          'protected': 1,
+                        },
+                      )
+        portal_objectIds = portal.objectIds()
+        for meth in ext_methods:
+            method = meth['id']
+            if method in portal_objectIds:
+                portal._delObject(method)
+            pr('Creating %s External Method' % method)
+            ext_method = ExternalMethod(method,
+                                        meth['title'],
+                                        meth['script'],
+                                        meth['method'])
+            portal._setObject(method, ext_method)
+            if method in portal_objectIds:
+                manage_perms = portal[method].manage_permission
+                if meth['protected']:
+                    pr("Protecting %s" % method)
+                    manage_perms(View, roles=['Manager'], acquire=0)
+                    manage_perms(AccessContentsInformation, roles=['Manager'], acquire=0)
+                else:
+                    manage_perms(View, roles=['Manager'], acquire=1)
+        ###)
+
+        ##########################################
+        # Actions
+        ##########################################
+        waeup_ptypes = "'University','StudentsFolder','Student','Jamb','Faculty','Department','Course'"
+        waeup_ptypes += ",'AccoFolder','Accommodation','StudentPersonal','AcademicsFolder'"
+        waeup_ptypes += ",'StudyLevel','Semester','CourseTicket','StudentDocuments','StudentEligibility'"
+        if CPSSubscriptions: ###(
+
+            ptypes = "('Portal', 'CPSMailAccess Message', 'CPSMailAccess Box', 'CPSMailAccess Folder',"\
+                     + waeup_ptypes + ")"
+            condition = "object.portal_type not in %s" % ptypes
+
+            action = {'id' : 'notify_content',
+                      'name' : 'action_notify_content',
+                      'action' : 'string:${object_url}/content_notify_email_form',
+                      'condition' : 'python:%s' % condition,
+                      'permission' :  (CanNotifyContent,),
+                      'category' : 'object',
+                      }
+            self.deleteActions({'portal_subscriptions': ['notify_content',]})
+            self.verifyAction('portal_subscriptions', **action)
+        if CPSForum:
+            condition = "object.portal_type not in (%s)" % waeup_ptypes
+
+            action = {'id' : 'activate_comments',
+                      'name': 'action_activate_comments',
+                      'action': 'string:${object/absolute_url}/set_comment_mode?mode=1',
+                      'condition' : 'python:%s' % condition,
+                      'permission': (ForumManageComments,),
+                      'category' : 'object',
+                      }
+            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)
+
+###)
+
+        ##########################################
+        # main_tab actions ###(
+        ##########################################
+        path = "/sections/%(SRPP_ID)s" % globals()
+        actions = ( { 'tool'      : 'portal_actions',
+                        'id'        : 'student_administration',
+                        'name'      : 'Students',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/students')",
+                        #'action'    : 'string:$portal_url%(path)s/students' % vars(),
+                        'permission': (View, ),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+                      { 'tool'      : 'portal_actions',
+                        'id'        : 'academics',
+                        'name'      : 'Academics',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/academics')",
+                        #'action'    : 'string:${portal_url}/academics',
+                        'permission': (UniversityManage),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+                      { 'tool'      : 'portal_actions',
+                        'id'        : 'accomodation',
+                        'name'      : 'Accommodation',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/accommodation')",
+                        #'action'    : 'string:${portal_url}/accommodation',
+                        'permissions': (UniversityManage),
+                        #'permissions': (ModifyPortalContent,UniversityManage,StudentManage),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+                      { 'tool'      : 'portal_actions',
+                        'id'        : 'chat',
+                        'name'      : 'Chat',
+                        'action'    : "python: portal.portal_url.getUrlFromRpath('sections/demouni/chat')",
+                        #'action'    : 'string:${portal_url}/accommodation',
+                        'permissions': (View),
+                        #'permissions': (ModifyPortalContent,UniversityManage,StudentManage),
+                        'category'  : 'main_tabs',
+                        'visible'   : 1,
+                      },
+##                      { 'tool'      : 'portal_actions', ###(
+##                        'id'        : 'add_jamb',
+##                        'name'      : 'Add Student JAMB',
+##                        'action'    : 'string:${object/absolute_url}/create_jamb',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("StudentsFolder",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_faculty',
+##                        'name'      : 'Add New Faculty',
+##                        'action'    : 'string:${object/absolute_url}/addFaculty',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("University",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_department',
+##                        'name'      : 'Add New Department',
+##                        'action'    : 'string:${object/absolute_url}/addDepartment',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("Faculty",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_course',
+##                        'name'      : 'Add New Course',
+##                        'action'    : 'string:${object/absolute_url}/addCourse',
+##                        'permission': (),
+##                        'condition' : 'python: member and here.portal_type in ("Department",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'add_personal',
+##                        'name'      : 'Add personal Data',
+##                        'action'    : 'string:${object/absolute_url}/create_personal_form',
+##                        'permission': (),
+##                        'condition' : 'python: 0 and member and not here.portal_type in ("Jamb","StudentsFolder") and not "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+##                      { 'tool'      : 'portal_actions',
+##                        'id'        : 'edit_jamb',
+##                        'name'      : 'Edit Jamb Data',
+##                        'action'    : 'cpsdocument_edit_form',
+##                        'permission': ( ),
+##                        'condition' : 'python: member and here.portal_type in ("Student",) and "StudentManager" in member.getGroups()',
+##                        'category'  : 'student',
+##                        'visible'   : 1,
+##                      },
+###)
+
+                    )
+        self.deleteActions({'portal_actions': [action['id'] for action in actions]})
+        self.verifyActions(actions)
+        ##########################################
+###)
+
+        # skins
+        ##########################################
+        pr("Verifying %(product_name)s skinss" % vars())
+        wskins = { 'waeup_default' : 'Products/WAeUP/skins/waeup_default',
+                   'waeup_faculty' : 'Products/WAeUP/skins/waeup_faculty',
+                   'waeup_student' : 'Products/WAeUP/skins/waeup_student',
+                 }
+        self.verifySkins(wskins)
+        self.resetSkinCache()
+
+        # Themes ###(
+        #
+        # Importing portal themes
+##        theme_container = getattr(portal, 'portal_themes')
+##            # the first theme in each category is the default theme.
+##        themes_list = {'WAeUP':    ({'id': 'waeup_plain_theme',
+##                                  'file': 'waeup_plain_theme.zexp',
+##                                  },
+##                                  {'id': 'waeup_management_theme',
+##                                   'file': 'waeup_management_theme.zexp',
+##                                  },
+##                                 ),
+##                      }
+##
+##
+##        theme_ids = theme_container.objectIds()
+##        theme_container.manage_delObjects(theme_ids)
+##        target_themes = themes_list[Target]
+##        for theme in target_themes:
+##            pr(" Importing %s theme" % theme['id'])
+##            zexppath = os.path.join(zexpdir, theme['file'])
+##            try:
+##                theme_container._importObjectFromFile(zexppath)
+##            except:
+##                pr("    Could not import theme  %s" % theme['id'])
+##
+##        # set the first theme in the list as the default one.
+##        theme_container.setDefaultTheme(target_themes[0]['id'])
+###)
+
+
+        ##########################################
+        # portal types
+        ##########################################
+        dtypes = portal.getWAeUPTypes()
+        self.verifyFlexibleTypes(dtypes)
+        self.allowContentTypes('University', ('Workspace','Section',))
+        ##########################################
+        # Schemas
+        ##########################################
+        pr("Verifying %(product_name)s schemas" % vars())
+        self.verifySchemas(portal.getWAeUPSchemas())
+        ##########################################
+        # widgets
+        ##########################################
+        pr("Verifying %(product_name)s widgets" % vars())
+        self.verifyWidgets(portal.getWAeUPWidgets())
+        ##########################################
+        # layouts
+        ##########################################
+        pr("Verifying %(product_name)s layouts" % vars())
+        self.verifyLayouts(portal.getWAeUPLayouts())
+        ##########################################
+        # Vocabularies
+        ##########################################
+        pr("Verifying %(product_name)s vocabularies" % vars())
+        self.verifyVocabularies(portal.getWAeUPVocabularies())
+        ##########################################
+        # Groups
+        ##########################################
+
+        self.installCustomWorkflows()
+        self.verifyWorkflowAssociation()
+
+        pr("End of specific %(product_name)s install" % vars())
+        #return '\n'.join(log)
+        self.finalize()
+
+    def verifyPortlets(self, portlets=(), object=None): ###(
+        """Verify the existence of given portet in the object's portlet
+        container. If not found, a portlet is instantiated.
+        Existing portlets are not affected.
+
+        'portlets' is a tuple with the dictionaries given by the export tab
+        as entries.
+        The default object is the portal itself.
+
+        return the list a new portlet ids.
+        """
+
+        if object is None:
+            object = self.portal
+
+        self.log('Verifying portlets on %s' % object.absolute_url(relative=1))
+
+        portlet_container = self.getPortletContainer(object, create=1)
+
+        ttool = self.getTool('portal_types')
+
+        returned = []
+        for new_portlet in portlets:
+            existing_portlets = portlet_container.listPortlets()
+            updated = 0
+
+            # Check if the portlet needs an update
+            identifier = new_portlet.get('identifier')
+            if identifier:
+                for portlet in existing_portlets:
+                    if identifier == portlet.identifier:
+                        self.log(" Update of portlet: %s" % portlet)
+                        portlet.edit(**new_portlet)
+                        portlet_id = portlet.getId()
+                        updated = 1
+                        continue
+            slot = new_portlet.get('slot')
+            if slot:
+                for portlet in existing_portlets:
+                    if slot == portlet.slot:
+                        self.log(" Update of portlet: %s" % portlet)
+                        portlet.edit(**new_portlet)
+                        portlet_id = portlet.getId()
+                        updated = 1
+                        continue
+
+            if not updated:
+                self.log("   Creation of portlet: %s" % new_portlet)
+                portlet_id = self.portal.portal_cpsportlets.createPortlet(
+                    ptype_id=new_portlet['type'],
+                    context=object,
+                    **new_portlet)
+            if portlet_id not in returned:
+                returned.append(portlet_id)
+        return returned
+    ###)
+
+
+    def installCustomWorkflows(self): ###(
+        """Installs custom workflows
+        """
+        from Products.WAeUP.Workflows.WAeUPWorkflow import \
+             waeupWorkflowsInstall
+
+        waeupWorkflowsInstall(self.context)
+
+###)
+
+    def verifyWorkflowAssociation(self): ###(
+        """Verify workflow association
+        """
+        ws_chains = {
+                      'Student': 'waeup_workspace_wf',
+                      'Jamb': 'waeup_workspace_wf',
+                      }
+
+        se_chains = { 'University': 'waeup_section_wf',
+                      'AcademicsFolder': 'waeup_section_wf',
+                      'StudentsFolder': 'waeup_student_wf',
+                      'Student': 'waeup_student_wf',
+                      'StudentPersonal': 'waeup_student_wf',
+                      'StudentEligibility': 'waeup_student_wf',
+                      'StudentDocuments': 'waeup_student_wf',
+                      'Jamb': 'waeup_section_wf',
+                      'ScratchCard': 'waeup_section_wf',
+                      'Faculty': 'waeup_section_wf',
+                      'Department': 'waeup_section_wf',
+                      'Course': 'waeup_section_wf',
+                      'StudyLevel': 'waeup_student_wf',
+                      'Semester': 'waeup_student_wf',
+                      'CourseTicket': 'waeup_student_wf',
+                      'AccoFolder': 'waeup_section_wf',
+                      'Accommodation': 'waeup_section_wf',
+                      }
+
+        self.verifyLocalWorkflowChains(self.portal['workspaces'],
+                                       ws_chains,
+                                       destructive=1)
+        self.verifyLocalWorkflowChains(self.portal['sections'],
+                                       se_chains,
+                                       destructive=1)
+    ###)
+
+    def verifyFaculties(self, academics): ###(
+        """install Universityspecific Faculies with Departments"""
+        faculties = [
+##                     {'id': 'agri', ###(
+##                      'Title': 'Agriculture',
+##                      'departments': [
+##                                     { 'id': 'dep1', ###(
+##                                       'Title': 'One',
+##                                     },
+##                                     ],
+##                      },###)
+                      { 'id': 'science',
+                      'Title': 'Science',
+                      'departments': [
+                                     { 'id': 'bio', ###(
+                                       'Title': 'Biochemistry',
+                                     },
+                                     { 'id': 'bot',
+                                       'Title': 'Botany',
+                                     },
+                                     { 'id': 'che',
+                                       'Title': 'Chemistry',
+                                     },
+                                     { 'id': 'com',
+                                       'Title': 'Computer Science',
+                                     },
+                                     { 'id': 'geo',
+                                       'Title': 'Geologie',
+                                     },
+                                     { 'id': 'mat',
+                                       'Title': 'Mathematics',
+                                     },
+                                     { 'id': 'mic',
+                                       'Title': 'Microbiology',
+                                     },
+                                     { 'id': 'opt',
+                                       'Title': 'Optometry',
+                                     },
+                                     { 'id': 'phy',
+                                       'Title': 'Physics',
+                                     },
+                                     { 'id': 'zoo',
+                                       'Title': 'Zoology',
+                                     },
+                                     ],
+                      },###)
+                     ]###)
+        self.log('Verifying Faculties in %s' % academics.absolute_url(relative=1))
+        for faculty in faculties:
+            fid = faculty['id']
+            f = getattr(academics,fid,None)
+            self.log('Checking Faculty %(id)s = %(Title)s' % faculty)
+            if f is None:
+                self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
+                academics.invokeFactory('Faculty', fid)
+                f = getattr(academics,fid)
+                f.getContent().edit(mapping=faculty)
+            for department in faculty['departments']:
+                self.log('Checking Department %(id)s = %(Title)s' % department)
+                did = department['id']
+                d = getattr(f,did,None)
+                if d is None:
+                    self.log('Creating Department %(id)s = %(Title)s' % department)
+                    f.invokeFactory('Department', did)
+                    d = getattr(f,did)
+                    d.getContent().edit(mapping=department)
+    ###)
+
+
+
+def install(self): ###(
+    installer = WAeUPInstaller(self)
+    installer.install(self)
+    #dirtool = getattr(self,'portal_directories')
+    return installer.logResult()
+    groups = dirtool.groups
+    for delEntry in ('StudentManager',):
+        if delEntry in groups.listEntryIds():
+            groups.deleteEntry(delEntry)
+    for newEntry in ('Students',):
+        if newEntry not in groups.listEntryIds():
+            groups.createEntry({'group': newEntry,
+                                'members': []})
+    #groups.manage_setLocalGroupRoles(groupid = 'StudentManager',roles=('Manager',))
+    #groups.manage_setLocalGroupRoles(groupid = 'Students',roles=('Contributor',))
+    sections = getattr(self,'sections')
+    waeup = getattr(sections,SRPP_ID,None)
+    if not waeup:
+        sections.invokeFactory('University',SRPP_ID)
+        waeup = getattr(sections,SRPP_ID)
+        waeup.getContent().edit(mapping={'Title':SRPP_TITLE})
+        waeup.folder_localrole_add(member_ids=('group:Students',),
+                                            member_role='SectionReviewer',
+                                            )
+        waeup.invokeFactory('StudentsFolder','students')
+        students = getattr(waeup,'students').getContent()
+        students.edit(mapping={'Title':'Students'})
+        waeup.folder_localrole_add(member_ids=('group:Students',),
+                                            member_role='SectionReviewer',
+                                            )
+##        waeup.content_create(type_name='AcademicsFolder',title='academics')
+##        sections.waeup.folder_localrole_add(member_ids=('group:StudentManager',),
+##                                            member_role='SectionManager',
+##                                            )
+        waeup.students.manage_setLocalGroupRoles(groupid = 'Students',roles=('Contributor',))
+        waeup.invokeFactory('AcademicsFolder','academics', title='Academics')
+        academics = getattr(waeup,'academics').getContent()
+        academics.edit(mapping={'Title':'Academics'})
+        waeup.invokeFactory('AccoFolder','accommodation', title='Accommodation')
+        accommodation = getattr(waeup,'accommodation').getContent()
+        accommodation.edit(mapping={'Title':'Accommodation'})
+    academics = getattr(waeup,'academics',None)
+    if academics is None:
+        waeup.invokeFactory('AcademicsFolder','academics')
+        academics = getattr(waeup,'academics')
+        academics.getContent().edit(mapping={'Title':'Academics'})
+    installer.verifyFaculties(academics)
+    if not hasattr(waeup,'accommodation'):
+        waeup.invokeFactory('AccoFolder','accommodation')
+        accommodation = getattr(waeup,'accommodation').getContent()
+        accommodation.edit(mapping={'Title':'Accommodation'})
+    waeup.manage_setLocalGroupRoles(groupid = 'role:Anonymous',roles=('SectionReader',))
+    # portlets ###(
+    #
+    portlets = (
+##              {'identifier': 'waeup_main_tabs',
+##              'type': 'Custom Portlet',
+##              'slot': 'main_tabs',
+##              'order': 0,
+##              'render_method': 'portlet_main_navigation',
+##              'Title': 'main tabs',
+##              },
+              {#'identifier': 'waeup_breadcrumbs',
+              'type': 'Breadcrumbs Portlet',
+              'slot': 'waeup_breadcrumbs',
+              'first_item': 0,
+              'display_site_root': 0,
+              'Title': 'waeup_breadcrumbs',
+              'display': 'horizontal_trail',
+              'display_hidden_folders': 0,
+              'order': 0,
+              },
+              {#'identifier': 'waeup_main_tab_actions',
+              'type': 'Actions Portlet',
+              'slot': 'main_tabs',
+              'order': 0,
+              'categories': ['main_tabs',],
+              'Title': 'waep_main_tab_actions',
+              },
+              {#'identifier': 'waeup_object_actions',
+              'type': 'Actions Portlet',
+              'slot': 'waeup_object_actions',
+              'order': 0,
+              'categories': ['object',],
+              'Title': 'waep_manager_actions',
+              },
+              {#'identifier': 'waeup_left_top',
+              'type': 'Custom Portlet',
+              'slot': 'left_top',
+              'order': 0,
+              'render_method': 'portlet_session_info',
+              'Title': 'Session Info',
+              },
+            )
+    installer.verifyPortletContainer(waeup)
+    installer.verifyPortlets(portlets,waeup)
+
+###)
+    return installer.logResult()
+    ###)
+
+def migrate(self): ###(
+    "update data"
+    log = []
+    prlog = log.append
+
+    def pr(msg, prlog=prlog):
+        prlog('%s' % msg)
+
+    sections = getattr(self,'sections')
+    waeup = getattr(sections,SRPP_ID,None)
+    pr( "Start migrate")
+    pr("migrating Students")
+    students = getattr(waeup,'students')
+    pr("migrating courses")
+    academics = getattr(waeup,'academics')
+    for fac in [getattr(academics,f.id) for f in academics.contentValues(filter={'portal_type': ('Faculty',)})]:
+        pr("Faculty: %s" % fac.title_or_id())
+        for dep in [getattr(fac,d.id) for d in fac.contentValues(filter={'portal_type': ('Department',)})]:
+            pr("Department: %s" % dep.title_or_id())
+            for course in [getattr(dep,c.id) for c in dep.contentValues(filter={'portal_type': ('Course',)})]:
+                pr("Course: %s" % course.title_or_id())
+                content = course.getContent()
+                heading = getattr(content,'heading',course.id)
+                pr("heading = %(heading)s" % vars())
+                content.edit(mapping={'Title': heading})
+    pr("migrating halls")
+    for ac in [getattr(waeup,a.id) for a in waeup.contentValues(filter={'portal_type': ('AccoFolder',)})]:
+        for hall in [getattr(ac,h.id) for h in ac.contentValues(filter={'portal_type': ('Accommodation',)})]:
+            pr("Hall: %s" % hall.title_or_id())
+            content = hall.getContent()
+            heading = getattr(content,'heading',hall.id)
+            pr("heading = %(heading)s" % vars())
+            content.edit(mapping={'Title': heading})
+    return '\n'.join(log)
+
+###)
+
Index: /WAeUP_SRP/trunk/Extensions/install.py.260905
===================================================================
--- /WAeUP_SRP/trunk/Extensions/install.py.260905	(revision 276)
+++ /WAeUP_SRP/trunk/Extensions/install.py.260905	(revision 276)
@@ -0,0 +1,54 @@
+from Products.CPSInstaller.CPSInstaller import CPSInstaller
+from Products.CMFCore.CMFCorePermissions import View
+
+
+WAEUP_SKINS = { 'waeup_student' : 'Products/WAeUP/skins/waeup_student',
+                  }
+
+WAEUP_TYPES = { 'Student':
+                    { 'typeinfo_name': 'WAeUP: Student (Student)',
+                      'add_meta_type': 'Factory-based Type Information',
+                    },
+                  }
+
+WAEUP_ACTIONS = ( { 'tool'      : 'portal_actions',
+                        'id'        : 'jambadmission',
+                        'name'      : 'action_jambadmission',
+                        'action'    : 'string:${portal_url}/jambadmission_input_form',
+                        'permission': (View, ),
+                        'condition' : '',
+                        'category'  : 'global',
+                        'visible'   : 1,
+                      },
+                    )
+
+
+def install(self):
+    product_name = "WAeUP"
+    installer = CPSInstaller(self, product_name)
+    installer.log("Starting %(product_name)s install" % vars() )
+
+    installer.log("Verifying %(product_name)s permissions" % vars())
+    installer.verifySkins(WAEUP_SKINS)
+    installer.resetSkinCache()
+
+    installer.log("Verifying %(product_name)s schemas" % vars())
+    installer.verifySchemas(self.WAeUPSchemas())
+
+    installer.log("Verifying %(product_name)s layouts" % vars())
+    installer.verifyLayouts(self.WAeUPLayouts())
+    installer.verifyPortalTypes(WAEUP_TYPES)
+
+##    installer.log("Verifying %(product_name)s types" % vars())
+##    installer.verifyContentTypes(WAEUP_TYPES)
+
+    installer.log("Verifying %(product_name)s actions" % vars())
+    installer.verifyActions(WAEUP_ACTIONS) 
+    
+    # This installs the *.po files in the i18n directory of the WAeUPStudent
+    # product.
+    installer.log("Installing translations")
+    
+    installer.finalize()
+    installer.log("End of specific %(product_name)s install" % vars())
+    return installer.logResult()
Index: /WAeUP_SRP/trunk/Extensions/updateDirectories.py
===================================================================
--- /WAeUP_SRP/trunk/Extensions/updateDirectories.py	(revision 276)
+++ /WAeUP_SRP/trunk/Extensions/updateDirectories.py	(revision 276)
@@ -0,0 +1,95 @@
+from zLOG import LOG, DEBUG, INFO
+import re
+
+def update(self):
+
+    _log = []
+    def pr(bla, _log=_log):
+        if bla == 'flush':
+            return '\n'.join(_log)
+        _log.append(bla)
+        if (bla):
+            LOG('csvupdate:', INFO, bla)
+
+    pr("Directories update - started")
+    pr("")
+
+    portal = self.portal_url.getPortalObject()
+
+    csv_dir_name = 'csv'
+    csv_dir = getattr(portal,csv_dir_name)
+
+    members_file = 'Utilisateurs.csv'
+
+    try:
+        members_data = str(portal.restrictedTraverse("%s/%s" % (csv_dir_name, members_file)))
+    except KeyError:
+        members_data = ""
+        pr(" Warning: file %s not found. Directory members was not updated." % members_file)
+
+    if members_data:
+        members = []
+        pr("Updating Members directory")
+        member_schema_fields = ['id', 'password', 'givenName', 'sn', 'email', 'groups', 'roles']
+        lines = members_data.splitlines()
+       
+        CSV_SEPARATOR = ';'
+
+        for line in lines:
+            # Some items might contain the csv separator...
+            # Try to handle this gracefully, detecting separator
+            # followed by a space.
+           
+            member_items = line.split(CSV_SEPARATOR)
+
+            if member_items and not (len(member_items) == 1):
+                member_data = {}
+                for field in member_schema_fields:
+                    try:
+                        raw_field = member_items.pop(0).strip()
+                    except IndexError:
+                        raw_field = ''
+                        member_data['bad_entry'] = 1
+                    # Many fields are enclosed in double quotes 
+                    if raw_field and raw_field[0] == '"' and raw_field[-1] == '"':
+                        raw_field = raw_field[1:-1]
+                    member_data[field] = raw_field
+
+                member_data['confirm'] = member_data['password']
+                member_data['roles'] = member_data['roles'].capitalize()
+                if member_data['roles'] == 'Manager':
+                    member_data['roles'] = ('Manager', 'Member')
+                else:
+                    member_data['roles'] = ('Member',)
+                member_data['groups'] = tuple(member_data['groups'].split(','))
+
+                if not member_data.has_key('bad_entry'):
+                    # declare user as member of the portal
+                    members.append(member_data)
+                else:
+                    pr("** Bad entry detected **")
+                    pr("A data field might contain the csv separator not followed by a space.")
+                    pr("The id of this entry was %s."%member_data['id'])
+                    pr("The entry will NOT be added to the members directory.")
+
+
+        # create members in member directory
+        directory = portal.portal_directories.members
+        for member in members:
+            m_id = member.get('id')
+            pr('Directories update: checking entry '+m_id)
+            if not directory.hasEntry(m_id):
+                # member login does not exist, create
+                pr('Directories update:  creating entry '+m_id)
+                for gr in member['groups']:
+                    if not portal.portal_directories.groups.hasEntry(gr):
+                         portal.portal_directories.groups.createEntry({'group':gr})
+                directory.createEntry(member)
+            else:
+                # member login already exists
+                pr('Directories update:  entry '+m_id+' exists')
+    
+    pr("")
+    pr("Directories update - end")
+
+    return pr("flush")
Index: /WAeUP_SRP/trunk/LICENSE.GPL
===================================================================
--- /WAeUP_SRP/trunk/LICENSE.GPL	(revision 276)
+++ /WAeUP_SRP/trunk/LICENSE.GPL	(revision 276)
@@ -0,0 +1,225 @@
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /WAeUP_SRP/trunk/LICENSE.txt
===================================================================
--- /WAeUP_SRP/trunk/LICENSE.txt	(revision 276)
+++ /WAeUP_SRP/trunk/LICENSE.txt	(revision 276)
@@ -0,0 +1,17 @@
+ 
+  SACustom
+  Copyright 2005 WAeUP Group
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Index: /WAeUP_SRP/trunk/PatchCPSDefaultImportExport.py
===================================================================
--- /WAeUP_SRP/trunk/PatchCPSDefaultImportExport.py	(revision 276)
+++ /WAeUP_SRP/trunk/PatchCPSDefaultImportExport.py	(revision 276)
@@ -0,0 +1,71 @@
+from Products.CPSDocument.exportimport import importCPSObjects
+from Products.CMFCore.utils import getToolByName
+from zope.app import zapi
+from Products.GenericSetup.interfaces import INode
+import Products
+
+# Patch to allow the roots importer to create CMF objects.
+# Only for CPS 3.4.1. In 3.4.2 and later this should be fixed.
+
+def _initObjects(self, node):
+    for child in node.childNodes:
+        if child.nodeName != 'object':
+            continue
+        if child.hasAttribute('deprecated'):
+            continue
+        parent = self.context
+
+        obj_id = str(child.getAttribute('name'))
+        if child.hasAttribute('remove'):
+            parent._delObject(obj_id)
+            continue
+
+        if obj_id not in parent.objectIds():
+            portal_type = str(child.getAttribute('portal_type'))
+            if portal_type:
+                wftool = getToolByName(parent, 'portal_workflow')
+                wftool.invokeFactoryFor(parent, portal_type, obj_id)
+            else:
+                meta_type = str(child.getAttribute('meta_type'))
+                __traceback_info__ = obj_id, meta_type
+                for mt_info in Products.meta_types:
+                    if mt_info['name'] == meta_type:
+                        parent._setObject(obj_id, mt_info['instance'](obj_id))
+                        break
+                else:
+                    raise ValueError("unknown meta_type '%s'" % meta_type)
+                        
+
+        if child.hasAttribute('insert-before'):
+            insert_before = child.getAttribute('insert-before')
+            if insert_before == '*':
+                parent.moveObjectsToTop(obj_id)
+            else:
+                try:
+                    position = parent.getObjectPosition(insert_before)
+                    if parent.getObjectPosition(obj_id) < position:
+                        position -= 1
+                    parent.moveObjectToPosition(obj_id, position)
+                except ValueError:
+                    pass
+        elif child.hasAttribute('insert-after'):
+            insert_after = child.getAttribute('insert-after')
+            if insert_after == '*':
+                parent.moveObjectsToBottom(obj_id)
+            else:
+                try:
+                    position = parent.getObjectPosition(insert_after)
+                    if parent.getObjectPosition(obj_id) < position:
+                        position -= 1
+                    parent.moveObjectToPosition(obj_id, position+1)
+                except ValueError:
+                    pass
+
+        obj = getattr(self.context, obj_id)
+        importer = zapi.queryMultiAdapter((obj, self.environ), INode)
+        if importer:
+            importer.node = child
+
+from Products.CPSDefault.exportimport import RootXMLAdapter
+RootXMLAdapter._initObjects = _initObjects
+
Index: /WAeUP_SRP/trunk/README.txt
===================================================================
--- /WAeUP_SRP/trunk/README.txt	(revision 276)
+++ /WAeUP_SRP/trunk/README.txt	(revision 276)
@@ -0,0 +1,1 @@
+This is the Student Product for the WAeUP.
Index: /WAeUP_SRP/trunk/Students.py
===================================================================
--- /WAeUP_SRP/trunk/Students.py	(revision 276)
+++ /WAeUP_SRP/trunk/Students.py	(revision 276)
@@ -0,0 +1,255 @@
+#-*- mode: python; mode: fold -*-
+# $Id$
+from Globals import InitializeClass
+from AccessControl import ClassSecurityInfo
+from AccessControl.SecurityManagement import newSecurityManager
+
+from Products.CMFCore.utils import UniqueObject, 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.CPSDocument.CPSDocument import CPSDocument
+from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder
+from Products.CPSCore.CPSMembershipTool import CPSUnrestrictedUser
+##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."""
+##    ob = StudentsFolder(id, **kw)
+##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+#####)
+
+class Student(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'Student'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        reg_nr = self.getId()[1:]
+        data = getattr(self,'PERSONAL',None)
+        if data is None:
+            data = getattr(self,'JAMB',None)
+        if data:
+            content = data.getContent()
+            return "%s %s" % (content.firstname,content.lastname)
+        return self.title
+
+    def Description(self):
+        """compose description"""
+        data = getattr(self,'PERSONAL',None)
+        if data is None:
+            return "none"
+        if data:
+            content = data.getContent()
+            return "%s" % (content.description)
+        return self.description
+
+    security.declareProtected(View,"setScratchCardData")
+    def setScratchCardData(self,ident,ds):
+        """set this data """
+        dict = {'%s_sc_pin' % ident : ds.get('sc_pin'),
+                '%s_sc_id' % ident : ds.get('sc_id'),
+                '%s_sc_value' % ident : ds.get('sc_value'),
+                '%s_date' % ident : ds.get('sc_date'),
+                }
+
+        old_user = self.portal_membership.getAuthenticatedMember()
+        if self.portal_membership.isAnonymousUser():
+            tmp_user = CPSUnrestrictedUser('s%(jamb_id)s' % ds, '',
+                                       ['StudentManager'], '')
+            tmp_user = tmp_user.__of__(self.acl_users)
+            newSecurityManager(None, tmp_user)
+        #print str(dict)
+        self.edit(mapping=dict)
+        newSecurityManager(None, old_user)
+
+    security.declareProtected(View,"memberIsOwner")
+    def memberIsOwner(self):
+        """is the current user the owner"""
+        member = self.portal_membership.getAuthenticatedMember()
+        #print member, self.getId(),self.aq_parent.getId()
+        if self.aq_parent.getId() == str(member):
+            return True
+        return False
+
+    security.declareProtected(View,"accommodationIsBooked")
+    def accommodationIsBooked(self):
+        """is the accommodation booked"""
+        if self.accommodation_sc_pin != '':
+            return True
+        return False
+
+    security.declareProtected(View,"accommodationIsPayed")
+    def accommodationIsPayed(self):
+        """is the accommodation payed"""
+        if self.hostel_fee_sc_pin != '':
+            return True
+        return False
+
+    security.declareProtected(View,"isRegisteredForCurrentLevel")
+    def isRegisteredForCurrentLevel(self):
+        """is the student registered for the current level"""
+        for l in  self.aq_parent.objectValues():
+            if l.portal_type == 'StudyLevel':
+                return True
+        return False
+
+InitializeClass(Student)
+
+def addStudent(container, id, REQUEST=None, **kw):
+    """Add a Student."""
+    ob = Student(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class StudentPersonal(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'StudentPersonal'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        return "Personal Data for %s %s" % (content.firstname,content.lastname)
+
+
+InitializeClass(StudentPersonal)
+
+def addStudentPersonal(container, id, REQUEST=None, **kw):
+    """Add a Students personal data."""
+    ob = StudentPersonal(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class StudentEligibility(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'StudentEligibility'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        return "Eligibility Data"
+
+
+InitializeClass(StudentEligibility)
+
+def addStudentEligibility(container, id, REQUEST=None, **kw):
+    """Add a Students eligibility data."""
+    ob = StudentEligibility(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class StudentDocuments(CPSDocument): ###(
+    """
+    WAeUP Student container for the various student data
+    """
+    meta_type = 'StudentDocuments'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        return "Scanned Documents"
+
+
+InitializeClass(StudentDocuments)
+
+def addStudentDocuments(container, id, REQUEST=None, **kw):
+    """Add a Students documents"""
+    ob = StudentDocuments(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class Jamb(CPSDocument): ###(
+    """
+    WAeUP Jamb containing the courses and students
+    """
+    meta_type = 'Jamb'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(View,"Title")
+    def Title(self):
+        """compose title"""
+        content = self.getContent()
+        return "JAMB Data for %s %s" % (content.firstname,content.lastname)
+
+    security.declareProtected(View,"setOwnership")
+    def setOwnership(self,member_id):
+        """set ownership"""
+        pm = getattr(self,'portal_membership')
+        member = pm.getMemberById(member_id)
+        self.changeOwnership(member)
+
+InitializeClass(Jamb)
+
+def addJamb(container, id, REQUEST=None, **kw):
+    """Add a Jamb."""
+    ob = Jamb(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class StudyLevel(CPSDocument): ###(
+    """
+    WAeUP StudyLevel containing the courses and students
+    """
+    meta_type = 'StudyLevel'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+InitializeClass(StudyLevel)
+
+def addStudyLevel(container, id, REQUEST=None, **kw):
+    """Add a StudyLevel."""
+    ob = StudyLevel(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
+class Semester(CPSDocument): ###(
+    """
+    WAeUP Semester containing the courses and students
+    """
+    meta_type = 'Semester'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+InitializeClass(Semester)
+
+def addSemester(container, id, REQUEST=None, **kw):
+    """Add a Semester."""
+    ob = Semester(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
+###)
+
Index: /WAeUP_SRP/trunk/University.py
===================================================================
--- /WAeUP_SRP/trunk/University.py	(revision 276)
+++ /WAeUP_SRP/trunk/University.py	(revision 276)
@@ -0,0 +1,35 @@
+from Globals import InitializeClass,HTMLFile
+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 
+from Products.CPSDocument.CPSDocument import CPSDocument 
+
+#
+# The WAeUP BaseContainer
+#
+class University(CPSDocument):
+    """
+    Container for the various WAeUP containers 
+    """
+    meta_type = 'University'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+        
+    security.declarePublic('waeup_url')
+    def waeup_url(self):
+        """ return the base_url"""
+        return "%s/sections/waeup" % self.portal_url
+        return self.REQUEST
+    
+InitializeClass(University)
+
+def addUniversity(container, id, REQUEST=None, **kw):
+    """Add a University"""
+    ob = University(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+
Index: /WAeUP_SRP/trunk/VERSION
===================================================================
--- /WAeUP_SRP/trunk/VERSION	(revision 276)
+++ /WAeUP_SRP/trunk/VERSION	(revision 276)
@@ -0,0 +1,1 @@
+0.3-devel (SVN/Unreleased)
Index: /WAeUP_SRP/trunk/WAeUPPermissions.py
===================================================================
--- /WAeUP_SRP/trunk/WAeUPPermissions.py	(revision 276)
+++ /WAeUP_SRP/trunk/WAeUPPermissions.py	(revision 276)
@@ -0,0 +1,35 @@
+# (C) Copyright 2005 AixtraWare <http://aixtraware.de>
+# Author: Joachim Schmitz <js@aixtraware.de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+# $Id$
+
+__author__ = "Joachim Schmitz <js@aixtraware.de>"
+
+"""WAeUP Permissions
+"""
+
+#from AccessControl import ModuleSecurityInfo
+from Products.CMFCore.permissions import setDefaultRoles
+#security = ModuleSecurityInfo('Products.WAeUP.WAeUPPermissions')
+
+#  - 'Certificat Course delete' : Permission you need to ..
+#
+CertificateCourseDelete = "Certificate Course Delete"
+setDefaultRoles(CertificateCourseDelete, ('Manager', 
+                               'CourseAdvisor', 
+                               ))
+
Index: /WAeUP_SRP/trunk/WAeUPStudentWidgets.py
===================================================================
--- /WAeUP_SRP/trunk/WAeUPStudentWidgets.py	(revision 276)
+++ /WAeUP_SRP/trunk/WAeUPStudentWidgets.py	(revision 276)
@@ -0,0 +1,156 @@
+from Globals import InitializeClass
+from Products.CPSSchemas.Widget import CPSWidgetType
+from Products.CPSSchemas.BasicWidgets import CPSStringWidget, CPSEmailWidget
+from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
+from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry
+from AccessControl import getSecurityManager
+
+from re import compile
+
+from zLOG import LOG, DEBUG
+
+class MyProjectWeekDateTimeWidget(CPSDateTimeWidget):
+    """ """
+    meta_type = "MyProject Week Date Time Widget"
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSDateTimeWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            if value.dow() in (6, 0):
+                err = 'Cette date ne correspond pas à un jour de semaine'
+
+            if err:
+                datastructure.setError(widget_id, err)
+
+            return not err
+
+InitializeClass(MyProjectWeekDateTimeWidget)
+
+class MyProjectWeekDateTimeWidgetType(CPSWidgetType):
+    """MyProject Week DateTime widget type."""
+    meta_type = "MyProject Week Date Time Widget Type"
+    cls = MyProjectWeekDateTimeWidget
+
+InitializeClass(MyProjectWeekDateTimeWidgetType)
+
+class MyProjectRestrictedStringWidget(CPSStringWidget):
+    """ """
+    meta_type = "MyProject Restricted String Widget"
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSStringWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            if not (len(value) == 5 and value.isupper() and value.isalpha()):
+                err = 'Cette chaîne ne correspond pas au format imposé'
+
+            if err:
+                datastructure.setError(widget_id, err)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = value
+            
+            return not err
+
+InitializeClass(MyProjectRestrictedStringWidget)
+
+class MyProjectRestrictedStringWidgetType(CPSWidgetType):
+    """MyProject Restricted String widget type."""
+    meta_type = "MyProject Restricted String Widget Type"
+    cls = MyProjectRestrictedStringWidget
+
+InitializeClass(MyProjectRestrictedStringWidgetType)
+
+
+class MyProjectRestrictedEmailWidget(CPSEmailWidget):
+    """ """
+    meta_type = "MyProject Restricted Email Widget"
+
+    email_myproject_pat = compile(r"^([-\w_+])+\.([-\w_+])+@myproject\.fr$")
+
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSEmailWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            err, v = self._extractValue(datastructure[widget_id])
+            LOG('MyProject: MyProjectWidgets.py', DEBUG, "Valeur de v : %s" % v)
+            if not err and kw.get('layout_mode') != 'search' and \
+              v and not self.email_myproject_pat.match(v):
+                err = 'cpsschemas_err_email'
+
+            if err:
+                datastructure.setError(widget_id, err)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = v
+            
+            return not err
+
+    def render(self, mode, datastructure, **kw):
+        """Render in mode from datastructure."""
+        return CPSStringWidget.render(self, mode, datastructure, **kw)
+
+InitializeClass(MyProjectRestrictedEmailWidget)
+
+class MyProjectRestrictedEmailWidgetType(CPSWidgetType):
+    """MyProject Restricted String widget type."""
+    meta_type = "MyProject Restricted Email Widget Type"
+    cls = MyProjectRestrictedEmailWidget
+
+InitializeClass(MyProjectRestrictedEmailWidgetType)
+
+class MyProjectVisitTitleWidget(CPSStringWidget):
+    """ """
+    meta_type = "MyProject Visit Title Widget"
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        widget_id = self.getWidgetId()
+        err = 0
+        curr_date = DateTime()
+        date = "%d.%d.%d" % (curr_date.day(), curr_date.month(), curr_date.year())
+        user = getSecurityManager().getUser()
+        value = 'Demande de visite du %s par %s' % (date, 
+             self.portal_directories.members.getEntry(user.getId()).get('fullname'))
+        datamodel = datastructure.getDataModel()
+        datamodel[self.fields[0]] = value
+            
+        return not err
+
+    def render(self, mode, datastructure, **kw):
+        return ''
+
+InitializeClass(MyProjectVisitTitleWidget)
+
+class MyProjectVisitTitleWidgetType(CPSWidgetType):
+    """MyProject Visit Title widget type."""
+    meta_type = "MyProject Visit Title Widget Type"
+    cls = MyProjectVisitTitleWidget
+
+InitializeClass(MyProjectVisitTitleWidgetType)
+
+#####################################################################################
+
+WidgetTypeRegistry.register(MyProjectWeekDateTimeWidgetType)
+WidgetTypeRegistry.register(MyProjectRestrictedStringWidgetType)
+WidgetTypeRegistry.register(MyProjectRestrictedEmailWidgetType)
+WidgetTypeRegistry.register(MyProjectVisitTitleWidgetType)
+
Index: /WAeUP_SRP/trunk/WAeUPTool.py
===================================================================
--- /WAeUP_SRP/trunk/WAeUPTool.py	(revision 276)
+++ /WAeUP_SRP/trunk/WAeUPTool.py	(revision 276)
@@ -0,0 +1,308 @@
+#-*- mode: python; mode: fold -*-
+# (C) Copyright 2005 The WAeUP group  <http://www.waeup.org>
+# Author: Joachim Schmitz (js@aixtraware.de)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+# $Id$
+"""The WAeUPTool.
+"""
+
+from zLOG import LOG, DEBUG
+from Globals import InitializeClass, HTMLFile
+from AccessControl import ClassSecurityInfo
+from OFS.Folder import Folder
+
+from Products.CPSInstaller.CPSInstaller import CPSInstaller
+from Products.CMFCore.PortalFolder import PortalFolder
+from Products.CMFCore.permissions import View, ManagePortal
+from Products.CMFCore.utils import UniqueObject
+
+class WAeUPTool(UniqueObject,PortalFolder):
+    """WAeUP tool"""
+
+    id = 'portal_WAeUP'
+    meta_type = 'WAeUP Tool'
+
+    security = ClassSecurityInfo()
+    manage_options = (#ActionProviderBase.manage_options +
+                      PortalFolder.manage_options[:1] +
+                      PortalFolder.manage_options[2:])
+
+    _actions = ()
+
+
+    #
+    # ZMI
+    #
+    _properties = (
+        {'id': 'title', 'type': 'string', 'mode': 'w', 
+         'label': 'Title'},
+        {'id': 'uni_id', 'type': 'string', 'mode': 'w', 
+         'label': 'University ID'},
+        {'id': 'uni_name', 'type': 'string', 'mode': 'w', 
+         'label': 'University Name'},
+    )
+    title = ''
+    def __init__(self,uni_id,uni_name):
+        self.manage_changeProperties(uni_id = uni_id,
+                                     uni_name = uni_name,
+                                     )
+        PortalFolder.__init__(self, self.id)
+
+
+    def verifyFaculties(self, academics): ###(
+        """install Universityspecific Faculies with Departments"""
+        faculties = [
+##                     {'id': 'agri', ###(
+##                      'Title': 'Agriculture',
+##                      'departments': [
+##                                     { 'id': 'dep1', ###(
+##                                       'Title': 'One',
+##                                     },
+##                                     ],
+##                      },###)
+                      { 'id': 'science',
+                      'Title': 'Science',
+                      'departments': [
+                                     { 'id': 'bio', ###(
+                                       'Title': 'Biochemistry',
+                                     },
+                                     { 'id': 'bot',
+                                       'Title': 'Botany',
+                                     },
+                                     { 'id': 'che',
+                                       'Title': 'Chemistry',
+                                     },
+                                     { 'id': 'com',
+                                       'Title': 'Computer Science',
+                                     },
+                                     { 'id': 'geo',
+                                       'Title': 'Geologie',
+                                     },
+                                     { 'id': 'mat',
+                                       'Title': 'Mathematics',
+                                     },
+                                     { 'id': 'mic',
+                                       'Title': 'Microbiology',
+                                     },
+                                     { 'id': 'opt',
+                                       'Title': 'Optometry',
+                                     },
+                                     { 'id': 'phy',
+                                       'Title': 'Physics',
+                                     },
+                                     { 'id': 'zoo',
+                                       'Title': 'Zoology',
+                                     },
+                                     ],
+                      },###)
+                     ]###)
+        #self.log('Verifying Faculties in %s' % academics.absolute_url(relative=1))
+        for faculty in faculties:
+            fid = faculty['id']
+            f = getattr(academics,fid,None)
+            #self.log('Checking Faculty %(id)s = %(Title)s' % faculty)
+            if f is None:
+                #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
+                academics.invokeFactory('Faculty', fid)
+                f = getattr(academics,fid)
+                f.getContent().edit(mapping=faculty)
+            for department in faculty['departments']:
+                #self.log('Checking Department %(id)s = %(Title)s' % department)
+                did = department['id']
+                d = getattr(f,did,None)
+                if d is None:
+                    #self.log('Creating Department %(id)s = %(Title)s' % department)
+                    f.invokeFactory('Department', did)
+                    d = getattr(f,did)
+                    d.getContent().edit(mapping=department)
+    ###)
+
+InitializeClass(WAeUPTool)
+
+def verifyPortlets(portal, portlets=(), object=None): ###(
+    """Verify the existence of given portet in the object's portlet
+    container. If not found, a portlet is instantiated.
+    Existing portlets are not affected.
+    'portlets' is a tuple with the dictionaries given by the export tab
+    as entries.
+    The default object is the portal itself.
+    return the list a new portlet ids.
+    """
+    #self.log('Verifying portlets on %s' % object.absolute_url(relative=1))
+    #portlet_container = CPSInstaller.getPortletContainer(object, create=1)
+    idpc = portal.portal_cpsportlets.getPortletContainerId()
+    if not hasattr(object, idpc):
+##            self.log("   Creating %s/%s" %
+##                (object.absolute_url(relative=1), idpc))
+        object.manage_addProduct['CPSPortlets'].addPortletsContainer()
+    portlet_container = getattr(object, idpc, None)
+    ttool = portal.portal_types
+    returned = []
+    for new_portlet in portlets:
+        existing_portlets = portlet_container.listPortlets()
+        updated = 0
+        # Check if the portlet needs an update
+        identifier = new_portlet.get('identifier')
+        if identifier:
+            for portlet in existing_portlets:
+                if identifier == portlet.identifier:
+                    #portal.log(" Update of portlet: %s" % portlet)
+                    portlet.edit(**new_portlet)
+                    portlet_id = portlet.getId()
+                    updated = 1
+                    continue
+        slot = new_portlet.get('slot')
+        if slot:
+            for portlet in existing_portlets:
+                if slot == portlet.slot:
+                    #portal.log(" Update of portlet: %s" % portlet)
+                    portlet.edit(**new_portlet)
+                    portlet_id = portlet.getId()
+                    updated = 1
+                    continue
+                
+        if not updated:
+            #portal.log("   Creation of portlet: %s" % new_portlet)
+            portlet_id = portal.portal_cpsportlets.createPortlet(
+            ptype_id=new_portlet['type'],
+            context=object,
+            **new_portlet)
+        if portlet_id not in returned:
+            returned.append(portlet_id)
+    return returned
+    ###)
+
+addWAeUPToolForm = HTMLFile('zmi/manage_addWAeUPUniversity',
+                                                globals())
+
+def addWAeUPTool(container, id,
+                             title='WAeUP University',
+                             description='',
+                             langs_list=None,
+                             manager_id='manager',
+                             manager_sn='CPS',
+                             manager_givenName='Manager',
+                             manager_email='',
+                             manager_password='',
+                             manager_password_confirmation='',
+                             REQUEST=None):
+    """Add WAeUPTool"""
+
+    _log = []
+    def pr(bla, zlog=1, _log=_log):
+        if bla == 'flush':
+            return '<br/>\n'.join(_log)
+        _log.append(bla)
+        if (bla and zlog):
+            LOG('addWAeUPUniversity:', INFO, bla)
+
+    uni_id = id.strip()
+    uni_name = title.strip()
+    description = description.strip()
+    manager_id = manager_id.strip()
+
+##    if not id:
+##        raise ValueError, "You have to provide an id for the portal!"
+##    if not manager_id:
+##        raise ValueError, "You have to provide an id for the CPS Administrator!"
+##    if not manager_email:
+##        raise ValueError, "You have to provide an email address for the CPS Administrator!"
+##    if not manager_password:
+##        raise ValueError, "You have to provide CPS Administrator password!"
+##    if manager_password != manager_password_confirmation:
+##        raise ValueError, "Password confirmation does not match password!"
+
+    email_from_name = ('%s %s' % (manager_givenName, manager_sn)).strip()
+    wt = WAeUPTool(uni_id,uni_name)
+    id = wt.getId()
+    container._setObject(id, wt)
+    sections = getattr(container,'sections')
+    workspaces = getattr(container,'workspaces') 
+    sections.invokeFactory('University',uni_id)
+    uni = getattr(sections,uni_id)
+    uni.getContent().edit(title=uni_name)
+    uni.invokeFactory('StudentsFolder','students')
+    students = getattr(uni,'students').getContent()
+    students.edit(mapping={'Title':'Students'})
+##    uni.folder_localrole_add(member_ids=('group:Students',),
+##                                            member_role='SectionReviewer',
+##                                            )
+##        uni.content_create(type_name='AcademicsFolder',title='academics')
+##        sections.uni.folder_localrole_add(member_ids=('group:StudentManager',),
+##                                            member_role='SectionManager',
+##                                            )
+##        uni.students.manage_setLocalGroupRoles(groupid = 'Students',roles=('Contributor',))
+    uni.invokeFactory('AcademicsFolder','academics', title='Academics')
+    academics = getattr(uni,'academics').getContent()
+    academics.edit(mapping={'Title':'Academics'})
+    uni.invokeFactory('AccoFolder','accommodation', title='Accommodation')
+    accommodation = getattr(uni,'accommodation').getContent()
+    accommodation.edit(mapping={'Title':'Accommodation'})
+    academics = getattr(uni,'academics',None)
+    if academics is None:
+        uni.invokeFactory('AcademicsFolder','academics')
+        academics = getattr(uni,'academics')
+        academics.getContent().edit(mapping={'Title':'Academics'})
+    wt.verifyFaculties(academics)
+    if not hasattr(uni,'accommodation'):
+        uni.invokeFactory('AccoFolder','accommodation')
+        accommodation = getattr(uni,'accommodation').getContent()
+        accommodation.edit(mapping={'Title':'Accommodation'})
+    #uni.manage_setLocalGroupRoles(groupid = 'role:Anonymous',roles=('SectionReader',))
+    # portlets ###(
+    #
+    portlets = (
+              {#'identifier': 'waeup_breadcrumbs',
+              'type': 'Breadcrumbs Portlet',
+              'slot': 'waeup_breadcrumbs',
+              'first_item': 0,
+              'display_site_root': 0,
+              'Title': 'waeup_breadcrumbs',
+              'display': 'horizontal_trail',
+              'display_hidden_folders': 0,
+              'order': 0,
+              },
+              {#'identifier': 'waeup_main_tab_actions',
+              'type': 'Actions Portlet',
+              'slot': 'main_tabs',
+              'order': 0,
+              'categories': ['main_tabs',],
+              'Title': 'waep_main_tab_actions',
+              },
+              {#'identifier': 'waeup_object_actions',
+              'type': 'Actions Portlet',
+              'slot': 'waeup_object_actions',
+              'order': 0,
+              'categories': ['object',],
+              'Title': 'waep_manager_actions',
+              },
+              {#'identifier': 'waeup_left_top',
+              'type': 'Custom Portlet',
+              'slot': 'left_top',
+              'order': 0,
+              'render_method': 'portlet_session_info',
+              'Title': 'Session Info',
+              },
+            )
+    #verifyPortletContainer(uni)
+    verifyPortlets(container,portlets,uni)
+
+    ###)
+    if REQUEST is not None:
+        url = container.absolute_url()
+        REQUEST.RESPONSE.redirect('%s/manage_main' % url)
+
Index: /WAeUP_SRP/trunk/Widgets.py
===================================================================
--- /WAeUP_SRP/trunk/Widgets.py	(revision 276)
+++ /WAeUP_SRP/trunk/Widgets.py	(revision 276)
@@ -0,0 +1,90 @@
+#-*- mode: python; mode: fold -*-
+from Globals import InitializeClass
+##from Products.CPSSchemas.Widget import CPSWidgetType
+from Products.CPSSchemas.BasicWidgets import CPSStringWidget, CPSEmailWidget
+from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
+from Products.CPSSchemas.Widget import widgetRegistry
+##from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry
+from DateTime.DateTime import DateTime
+from AccessControl import getSecurityManager
+
+from re import compile
+
+from zLOG import LOG, DEBUG
+
+class StudentIdWidget(CPSStringWidget): ###(
+    """ StudentId Widget"""
+    meta_type = "StudentId Widget"
+    digits = 8
+    digits_str = "N"*digits
+    letters = 2
+    letters_str = "L"*letters
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSStringWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            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)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = value
+            
+            return not err
+
+InitializeClass(StudentIdWidget)
+
+widgetRegistry.register(StudentIdWidget)
+
+##Class StudentIdWidgetType(CPSWidgetType):
+##    """Student Id String widget type."""
+##    meta_type = "StudentId  Widget Type"
+##    cls = StudentIdWidget
+
+###)
+
+class ScratchcardPinWidget(CPSStringWidget): ###(
+    """ ScratchcardPin Widget"""
+    meta_type = "Scratchcard Pin Widget"
+    valid_pins = ['12345678',
+                  '23456789',
+                  '34567890',
+                  '45678901',
+                  ]
+    
+    def validate(self, datastructure, **kw):
+        """Validate datastructure and update datamodel."""
+        
+        valid = CPSStringWidget.validate(self, datastructure, **kw)
+        if not valid:
+            return 0
+        else:
+            widget_id = self.getWidgetId()
+            value = datastructure[widget_id]
+            err = 0
+            #import pdb; pdb.set_trace()
+            if not value in self.valid_pins: 
+                err = 'invalid Pin'
+            if err:
+                datastructure.setError(widget_id, err)
+            else:
+                datamodel = datastructure.getDataModel()
+                datamodel[self.fields[0]] = value
+            return not err
+
+InitializeClass(ScratchcardPinWidget)
+widgetRegistry.register(ScratchcardPinWidget)
+
+
+###)
+
+###########
+
Index: /WAeUP_SRP/trunk/Workflows/WAeUPWorkflow.py
===================================================================
--- /WAeUP_SRP/trunk/Workflows/WAeUPWorkflow.py	(revision 276)
+++ /WAeUP_SRP/trunk/Workflows/WAeUPWorkflow.py	(revision 276)
@@ -0,0 +1,684 @@
+#-*- mode: python; mode: fold -*-
+""" WAeUP Workflfow
+"""
+
+__author__ = "Joachim Schmitz <js@aixtraware.de>"
+
+import os, sys
+from zLOG import LOG, INFO, DEBUG
+
+from Products.CMFCore.permissions import View, ModifyPortalContent
+#from Products.WAeUP.permissions import 
+
+from Products.CPSWorkflow.transitions import \
+     TRANSITION_INITIAL_CREATE, \
+     TRANSITION_ALLOWSUB_CHECKOUT, \
+     TRANSITION_ALLOWSUB_CREATE, \
+     TRANSITION_ALLOWSUB_DELETE, \
+     TRANSITION_ALLOWSUB_MOVE, \
+     TRANSITION_ALLOWSUB_COPY
+
+from Products.DCWorkflow.Transitions import \
+     TRIGGER_USER_ACTION
+
+def waeupWorkflowsInstall(self):
+    """Install the workflow for the WAeUP Types
+    """
+
+    portal = self.portal_url.getPortalObject()
+    wftool = portal.portal_workflow
+
+    wfids = wftool.objectIds()
+    wfid = 'waeup_section_wf' ###(
+
+    if wfid in wfids:
+        wftool.manage_delObjects([wfid])
+
+    wftool.manage_addWorkflow(id=wfid,
+                              workflow_type='cps_workflow (Web-configurable workflow for CPS)')
+
+    wf = wftool[wfid]
+
+    for p in (View,
+              ModifyPortalContent,
+             ):
+        wf.addManagedPermission(p)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                                  STATES
+
+    ###########################################################################
+    ###########################################################################
+
+    for s in ('work',
+             ):
+        wf.states.addState(s)
+
+    ##########################################################################
+    #                                  WORK
+    ##########################################################################
+
+    s = wf.states.get('work')
+
+    s.setPermission(View, 1, ('Student',))
+    s.setPermission(ModifyPortalContent, 1, ('StudentManager','UniversityManager',))
+
+    s.setInitialState('work')
+    s.setProperties(title='Work',
+                    description='',
+                    transitions=('create_content',
+                                 'cut_copy_paste',
+                                 'close',),)
+
+    ##########################################################################
+    #                                  CLOSED ###(
+    ##########################################################################
+
+##    s = wf.states.get('closed')
+##
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator',))
+##    s.setPermission(chatPost, 1, ('ChatModerator',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+##    s.setProperties(title='Closed',
+##                    description='',
+##                    transitions=('unclose',
+##                                 'cut_copy_paste',),)
+##
+    ###########################################################################
+    ###########################################################################
+###)
+
+    #                               TRANSITIONS
+
+    ###########################################################################
+    ###########################################################################
+
+    for t in ('create',
+              'create_content',
+              'cut_copy_paste',
+              ):
+        wf.transitions.addTransition(t)
+
+
+    ###########################################################################
+    #                                 CREATE
+    ###########################################################################
+
+    t = wf.transitions.get('create')
+    t.setProperties(title='Initial creation',
+                    description='Intial transition like',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_INITIAL_CREATE, ),
+                    clone_allowed_transitions=None,
+                    actbox_name='', actbox_category='workflow', actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager; UniversityManager',
+                           'guard_expr':''},)
+
+    ###########################################################################
+    #                                  CREATE CONTENT
+    ###########################################################################
+
+    t = wf.transitions.get('create_content')
+    t.setProperties(title='Create content',
+                    description='Allow sub Object Create',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_CREATE,
+                                         TRANSITION_ALLOWSUB_CHECKOUT,),
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CUT/COPY/PASTE
+    ##########################################################################
+
+    t = wf.transitions.get('cut_copy_paste')
+    t.setProperties(title='Cut/Copy/Paste',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_DELETE,
+                                         TRANSITION_ALLOWSUB_MOVE,
+                                         TRANSITION_ALLOWSUB_COPY),
+                    clone_allowed_transitions=None,
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CLOSE ###(
+    ##########################################################################
+
+##    t = wf.transitions.get('close')
+##    t.setProperties(title='close',
+##                    new_state_id='closed',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_close',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_close',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+##
+##    ##########################################################################
+##    #                                  UNCLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('unclose')
+##    t.setProperties(title='unclose',
+##                    new_state_id='work',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_unclose',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_unclose',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+
+###)
+
+    ################################################################
+    #                 VARIABLES
+    ################################################################
+
+    for v in ('action',
+              'actor',
+              'comments',
+              'review_history',
+              'time',
+              'dest_container',
+              ):
+        wf.variables.addVariable(v)
+
+
+    wf.variables.setStateVar('review_state')
+
+    vdef = wf.variables['action']
+    vdef.setProperties(description='The last transition',
+                       default_expr='transition/getId|nothing',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description='The ID of the user who performed '
+                       'the last transition',
+                       default_expr='user/getId',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description='Comments about the last transition',
+                       default_expr="python:state_change.kwargs.get('comment', '')",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description='Provides access to workflow history',
+                       default_expr="state_change/getHistory",
+                       props={'guard_permissions':'',
+                              'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader; Member',
+                              'guard_expr':''})
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description='Time of the last transition',
+                       default_expr="state_change/getDateTime",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['dest_container']
+    vdef.setProperties(description='Destination container for the last paste/publish',
+                       default_expr="python:state_change.kwargs.get('dest_container', '')",
+                       for_status=1, update_always=1)
+
+
+    ######################################################################################
+    ######################################################################################
+###)
+
+    wfid = 'waeup_student_wf' ###(
+
+    if wfid in wfids:
+        wftool.manage_delObjects([wfid])
+
+    wftool.manage_addWorkflow(id=wfid,
+                              workflow_type='cps_workflow (Web-configurable workflow for CPS)')
+
+    wf = wftool[wfid]
+
+    for p in (View,
+              ModifyPortalContent,
+             ):
+        wf.addManagedPermission(p)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                                  STATES
+
+    ###########################################################################
+    ###########################################################################
+
+    for s in ('work',
+             ):
+        wf.states.addState(s)
+
+    ##########################################################################
+    #                                  WORK
+    ##########################################################################
+
+    s = wf.states.get('work')
+
+    s.setPermission(View, 1, ('Student',))
+    s.setPermission(ModifyPortalContent, 1, ('StudentManager','UniversityManager','Student'))
+
+    s.setInitialState('work')
+    s.setProperties(title='Work',
+                    description='',
+                    transitions=('create_content',
+                                 'cut_copy_paste',
+                                 'close',),)
+
+    ##########################################################################
+    #                                  CLOSED ###(
+    ##########################################################################
+
+##    s = wf.states.get('closed')
+##
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator',))
+##    s.setPermission(chatPost, 1, ('ChatModerator',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+##    s.setProperties(title='Closed',
+##                    description='',
+##                    transitions=('unclose',
+##                                 'cut_copy_paste',),)
+##
+    ###########################################################################
+    ###########################################################################
+###)
+
+
+    #                               TRANSITIONS
+
+    ###########################################################################
+    ###########################################################################
+
+    for t in ('create',
+              'create_content',
+              'cut_copy_paste',
+              ):
+        wf.transitions.addTransition(t)
+
+
+    ###########################################################################
+    #                                 CREATE
+    ###########################################################################
+
+    t = wf.transitions.get('create')
+    t.setProperties(title='Initial creation',
+                    description='Intial transition like',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_INITIAL_CREATE, ),
+                    clone_allowed_transitions=None,
+                    actbox_name='', actbox_category='workflow', actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager; UniversityManager; Student',
+                           'guard_expr':''},)
+
+    ###########################################################################
+    #                                  CREATE CONTENT
+    ###########################################################################
+
+    t = wf.transitions.get('create_content')
+    t.setProperties(title='Create content',
+                    description='Allow sub Object Create',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_CREATE,
+                                         TRANSITION_ALLOWSUB_CHECKOUT,),
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager; Student',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CUT/COPY/PASTE
+    ##########################################################################
+
+    t = wf.transitions.get('cut_copy_paste')
+    t.setProperties(title='Cut/Copy/Paste',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_DELETE,
+                                         TRANSITION_ALLOWSUB_MOVE,
+                                         TRANSITION_ALLOWSUB_COPY),
+                    clone_allowed_transitions=None,
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; StudentManager ; UniversityManager',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CLOSE ###(
+    ##########################################################################
+
+##    t = wf.transitions.get('close')
+##    t.setProperties(title='close',
+##                    new_state_id='closed',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_close',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_close',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+##
+##    ##########################################################################
+##    #                                  UNCLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('unclose')
+##    t.setProperties(title='unclose',
+##                    new_state_id='work',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_unclose',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_unclose',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; SectionManager; SectionReviewer',
+##                           'guard_expr':''},)
+
+###)
+
+    ################################################################
+    #                 VARIABLES
+    ################################################################
+
+    for v in ('action',
+              'actor',
+              'comments',
+              'review_history',
+              'time',
+              'dest_container',
+              ):
+        wf.variables.addVariable(v)
+
+
+    wf.variables.setStateVar('review_state')
+
+    vdef = wf.variables['action']
+    vdef.setProperties(description='The last transition',
+                       default_expr='transition/getId|nothing',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description='The ID of the user who performed '
+                       'the last transition',
+                       default_expr='user/getId',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description='Comments about the last transition',
+                       default_expr="python:state_change.kwargs.get('comment', '')",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description='Provides access to workflow history',
+                       default_expr="state_change/getHistory",
+                       props={'guard_permissions':'',
+                              'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader; Member',
+                              'guard_expr':''})
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description='Time of the last transition',
+                       default_expr="state_change/getDateTime",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['dest_container']
+    vdef.setProperties(description='Destination container for the last paste/publish',
+                       default_expr="python:state_change.kwargs.get('dest_container', '')",
+                       for_status=1, update_always=1)
+
+
+    ######################################################################################
+    ######################################################################################
+###)
+
+    wfid = 'waeup_workspace_wf' ###(
+
+    if wfid in wfids:
+        wftool.manage_delObjects([wfid])
+
+    wftool.manage_addWorkflow(id=wfid,
+                              workflow_type='cps_workflow (Web-configurable workflow for CPS)')
+
+    wf = wftool[wfid]
+
+    for p in (View,
+              ModifyPortalContent,
+              ):
+        wf.addManagedPermission(p)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                                  STATES
+
+    ###########################################################################
+    ###########################################################################
+
+    for s in ('work',
+              'closed'):
+        wf.states.addState(s)
+
+    ##########################################################################
+    #                                  WORK
+    ##########################################################################
+
+    s = wf.states.get('work')
+
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator', 'ChatGuest',))
+##    s.setPermission(chatPost, 1, ('ChatModerator', 'ChatPoster', 'ChatGuest',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+    s.setInitialState('work')
+    s.setProperties(title='Work',
+                    description='',
+                    transitions=('create_content',
+                                 'cut_copy_paste',
+                                 'close',),)
+
+
+    ##########################################################################
+    #                                  CLOSED
+    ##########################################################################
+
+    s = wf.states.get('closed')
+
+##    s.setPermission(View, 1, ('ChatPoster',))
+##    s.setPermission(ModifyPortalContent, 1, ('ChatModerator',))
+##    s.setPermission(chatReply, 1, ('ChatModerator',))
+##    s.setPermission(chatPost, 1, ('ChatModerator',))
+##    s.setPermission(chatModerate, 1, ('ChatModerator',))
+
+    s.setProperties(title='Closed',
+                    description='',
+                    transitions=('unclose',
+                                 'cut_copy_paste',),)
+
+    ###########################################################################
+    ###########################################################################
+
+    #                               TRANSITIONS
+
+    ###########################################################################
+    ###########################################################################
+
+    for t in ('create',
+              'create_content',
+              'cut_copy_paste',
+              'close',
+              'unclose',):
+        wf.transitions.addTransition(t)
+
+
+    ###########################################################################
+    #                                 CREATE
+    ###########################################################################
+
+    t = wf.transitions.get('create')
+    t.setProperties(title='Initial creation',
+                    description='Intial transition like',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_INITIAL_CREATE, ),
+                    clone_allowed_transitions=None,
+                    actbox_name='', actbox_category='workflow', actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; WorkspaceManager',
+                           'guard_expr':''},)
+
+    ###########################################################################
+    #                                  CREATE CONTENT
+    ###########################################################################
+
+    t = wf.transitions.get('create_content')
+    t.setProperties(title='Create content',
+                    description='Allow sub Object Create',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_CREATE,
+                                         TRANSITION_ALLOWSUB_CHECKOUT,),
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader',
+                           'guard_expr':''},)
+
+    ##########################################################################
+    #                                  CUT/COPY/PASTE
+    ##########################################################################
+
+    t = wf.transitions.get('cut_copy_paste')
+    t.setProperties(title='Cut/Copy/Paste',
+                    new_state_id='work',
+                    transition_behavior=(TRANSITION_ALLOWSUB_DELETE,
+                                         TRANSITION_ALLOWSUB_MOVE,
+                                         TRANSITION_ALLOWSUB_COPY),
+                    clone_allowed_transitions=None,
+                    trigger_type=TRIGGER_USER_ACTION,
+                    actbox_name='New',
+                    actbox_category='',
+                    actbox_url='',
+                    props={'guard_permissions':'',
+                           'guard_roles':'Manager; WorkspaceManager; WorkspaceMember',
+                           'guard_expr':''},)
+
+##    ##########################################################################
+##    #                                  CLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('close')
+##    t.setProperties(title='close',
+##                    new_state_id='closed',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_close',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_close',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; WorkspaceManager',
+##                           'guard_expr':''},)
+##
+##    ##########################################################################
+##    #                                  UNCLOSE
+##    ##########################################################################
+##
+##    t = wf.transitions.get('unclose')
+##    t.setProperties(title='unclose',
+##                    new_state_id='work',
+##                    transition_behavior=(),
+##                    clone_allowed_transitions=None,
+##                    trigger_type=TRIGGER_USER_ACTION,
+##                    actbox_name='label_chat_unclose',
+##                    actbox_category='workflow',
+##                    actbox_url='%(content_url)s/cps_chat_unclose',
+##                    props={'guard_permissions':'',
+##                           'guard_roles':'Manager; WorkspaceManager; ChatModerator',
+##                           'guard_expr':''},)
+
+    ################################################################
+    #                 VARIABLES
+    ################################################################
+
+    for v in ('action',
+              'actor',
+              'comments',
+              'review_history',
+              'time',
+              'dest_container',
+              ):
+        wf.variables.addVariable(v)
+
+
+    wf.variables.setStateVar('review_state')
+
+    vdef = wf.variables['action']
+    vdef.setProperties(description='The last transition',
+                       default_expr='transition/getId|nothing',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description='The ID of the user who performed '
+                       'the last transition',
+                       default_expr='user/getId',
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description='Comments about the last transition',
+                       default_expr="python:state_change.kwargs.get('comment', '')",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description='Provides access to workflow history',
+                       default_expr="state_change/getHistory",
+                       props={'guard_permissions':'',
+                              'guard_roles':'Manager; WorkspaceManager; WorkspaceMember; WorkspaceReader; Member',
+                              'guard_expr':''})
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description='Time of the last transition',
+                       default_expr="state_change/getDateTime",
+                       for_status=1, update_always=1)
+
+    vdef = wf.variables['dest_container']
+    vdef.setProperties(description='Destination container for the last paste/publish',
+                       default_expr="python:state_change.kwargs.get('dest_container', '')",
+                       for_status=1, update_always=1)
+
+###)
Index: /WAeUP_SRP/trunk/Workflows/__init__.py
===================================================================
--- /WAeUP_SRP/trunk/Workflows/__init__.py	(revision 276)
+++ /WAeUP_SRP/trunk/Workflows/__init__.py	(revision 276)
@@ -0,0 +1,1 @@
+# Make this a module
Index: /WAeUP_SRP/trunk/__init__.py
===================================================================
--- /WAeUP_SRP/trunk/__init__.py	(revision 276)
+++ /WAeUP_SRP/trunk/__init__.py	(revision 276)
@@ -0,0 +1,121 @@
+#-*- mode: python; mode: fold -*-
+# $Id$
+from Products.CMFCore.utils import ContentInit, ToolInit
+from Products.CMFCore.DirectoryView import registerDirectory
+from Products.CMFCore import utils as cmfutils
+from Products.CMFCore.CMFCorePermissions import AddPortalContent
+
+from Products.GenericSetup import profile_registry
+from Products.GenericSetup import EXTENSION
+
+from Products.CPSCore.interfaces import ICPSSite
+
+# Only for CPS 3.4.1. In 3.4.2 and later this should be fixed.
+import PatchCPSDefaultImportExport
+
+import Products.WAeUP_SRP.WAeUPPermissions
+from Products.WAeUP_SRP.University import University, addUniversity
+from Products.WAeUP_SRP.Accommodation import AccoFolder, addAccoFolder
+from Products.WAeUP_SRP.Accommodation import Accommodation, addAccommodation
+#from Products.WAeUP_SRP.Academics import SCFolder, addSCFolder
+from Products.WAeUP_SRP.Academics import Certificate, addCertificate
+from Products.WAeUP_SRP.Academics import CertificateCourse, addCertificateCourse
+from Products.WAeUP_SRP.Academics import Faculty, addFaculty
+from Products.WAeUP_SRP.Academics import Department, addDepartment
+from Products.WAeUP_SRP.Academics import Course, addCourse
+from Products.WAeUP_SRP.Academics import CourseTicket, addCourseTicket
+from Products.WAeUP_SRP.Academics import CertificateCourse, addCertificateCourse
+from Products.WAeUP_SRP.Students import Student, addStudent
+from Products.WAeUP_SRP.Students import StudentPersonal, addStudentPersonal
+from Products.WAeUP_SRP.Students import StudentEligibility, addStudentEligibility
+from Products.WAeUP_SRP.Students import StudentDocuments, addStudentDocuments
+from Products.WAeUP_SRP.Students import Jamb, addJamb
+from Products.WAeUP_SRP.Students import StudyLevel, addStudyLevel
+from Products.WAeUP_SRP.Students import Semester, addSemester
+
+
+import Widgets
+
+contentClasses = (
+    University,
+    #SCFolder,
+    Certificate,
+    CertificateCourse,
+    Faculty,
+    Department,
+    Course,
+    CourseTicket,
+    CertificateCourse,
+    AccoFolder,
+    Accommodation,
+    Student,
+    StudentPersonal,
+    StudentEligibility,
+    StudentDocuments,
+    Jamb,
+    StudyLevel,
+    Semester,
+    )
+
+contentConstructors = (
+    addUniversity,
+    #addSCFolder,
+    addCertificate,
+    addCertificateCourse,
+    addFaculty,
+    addDepartment,
+    addCourse,
+    addCourseTicket,
+    addCertificateCourse,
+    addAccoFolder,
+    addAccommodation,
+    addStudent,
+    addStudentPersonal,
+    addStudentEligibility,
+    addStudentDocuments,
+    addJamb,
+    addStudyLevel,
+    addSemester,
+    )
+
+fti = (
+    {}, # University
+    #{}, #SCFolder
+    {}, #Certificate
+    {}, #CertificateCourse
+    {}, # Faculty
+    {}, # Department
+    {}, # Course
+    {}, # CourseTicket
+    {}, # CertificateCourse
+    {}, # AccoFolder
+    {}, # Accommodation
+    {}, # Student,
+    {}, # StudentPersonal,
+    {}, # StudentEligibility,
+    {}, # StudentDocuments,
+    {}, # Jamb,
+    {}, # StudyLevel,
+    {}, # Semester,
+    )
+
+registerDirectory('skins', globals())
+
+def initialize(registrar):
+    ContentInit('WAeUP Types',
+                content_types = contentClasses,
+                permission = AddPortalContent,
+                extra_constructors = contentConstructors,
+                fti = fti,
+                ).initialize(registrar)
+
+    # Extension profile registration
+    profile_registry.registerProfile(
+        'default',
+        'WAeUP_SRP',
+        "The WestAfrican e-University Project",
+        'profiles/default',
+        'WAeUP_SRP',
+        EXTENSION,
+        for_=ICPSSite)
+
Index: /WAeUP_SRP/trunk/doc/functionaldescriptions.html
===================================================================
--- /WAeUP_SRP/trunk/doc/functionaldescriptions.html	(revision 276)
+++ /WAeUP_SRP/trunk/doc/functionaldescriptions.html	(revision 276)
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>Functionaldescriptions</title>
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date$
+:Revision: $Revision$
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+tt.docutils {
+  background-color: #eeeeee }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="functionaldescriptions">
+<h1 class="title">Functionaldescriptions</h1>
+<h2 class="subtitle" id="accommodation">Accommodation</h2>
+<div class="section">
+<h1><a id="bedkategories" name="bedkategories">Bedkategories</a></h1>
+<ul class="simple">
+<li>female<ul>
+<li>fresh</li>
+<li>returning</li>
+<li>final</li>
+<li>postgraduate</li>
+</ul>
+</li>
+<li>male<ul>
+<li>fresh</li>
+<li>returning</li>
+<li>final</li>
+<li>postgraduate</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section">
+<h1><a id="hostels" name="hostels">Hostels</a></h1>
+<div class="section">
+<h2><a id="hall-one" name="hall-one">Hall One</a></h2>
+<div class="section">
+<h3><a id="structure" name="structure">Structure</a></h3>
+<ul class="simple">
+<li>7 Blocks  (A,B,C,D,E,F,G)<ul>
+<li>3 Floors (100,200,300)<ul>
+<li>10 Rooms<ul>
+<li>6 Bedspaces (A,B,C,D,E,F)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section">
+<h3><a id="allocation" name="allocation">Allocation</a></h3>
+<ul class="simple">
+<li>Beds A,B female_final</li>
+<li>Beds C   female_returning</li>
+<li>Beds D,E,F female_fresh</li>
+</ul>
+</div>
+</div>
+<div class="section">
+<h2><a id="hall-two" name="hall-two">Hall Two</a></h2>
+<div class="section">
+<h3><a id="id1" name="id1">Structure</a></h3>
+<ul class="simple">
+<li>6 Blocks  (A,B,C,D,E,F)<ul>
+<li>4 Floors (100,200,300,400) ???<ul>
+<li>10 Rooms (1 - 10)<ul>
+<li>8 Bedspaces (A,B,C,D,E,F,G,H)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section">
+<h3><a id="id2" name="id2">Allocation</a></h3>
+<ul class="simple">
+<li>Beds A,B female_final</li>
+<li>Beds C,D   female_returning</li>
+<li>Beds E,F,G,H female_fresh</li>
+</ul>
+</div>
+</div>
+<div class="section">
+<h2><a id="hall-three" name="hall-three">Hall Three</a></h2>
+<div class="section">
+<h3><a id="id3" name="id3">Structure</a></h3>
+<ul class="simple">
+<li>6 Blocks  (A,B,C,D,E,F)<ul>
+<li>4 Floors (100,200,300,400) ???<ul>
+<li>10 Rooms (1 - 10)<ul>
+<li>8 Bedspaces (A,B,C,D,E,F,G,H)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section">
+<h3><a id="id4" name="id4">Allocation</a></h3>
+<ul class="simple">
+<li>Beds A,B male_final</li>
+<li>Beds C,D male_returning</li>
+<li>Beds E,F,G,H male_fresh</li>
+</ul>
+</div>
+</div>
+<div class="section">
+<h2><a id="hall-four" name="hall-four">Hall Four</a></h2>
+<div class="section">
+<h3><a id="id5" name="id5">Structure</a></h3>
+<ul class="simple">
+<li>Section I<ul>
+<li>200 Rooms (1 - 200)<ul>
+<li>8 Bedspaces (A,B,C,D,E,F,G,H)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Section II<ul>
+<li>200 Rooms (1 - 200)<ul>
+<li>8 Bedspaces (A,B,C,D,E,F,G,H)</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Section III<ul>
+<li>147 Rooms (1 - 147)<ul>
+<li>8 Bedspaces (A,B,C,D,E,F,G,H)</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section">
+<h3><a id="id6" name="id6">Allocation</a></h3>
+<ul class="simple">
+<li>Beds A,B male_final</li>
+<li>Beds C,D   male_returning</li>
+<li>Beds E,F,G,H male_fresh</li>
+</ul>
+</div>
+</div>
+<div class="section">
+<h2><a id="hall-five" name="hall-five">Hall Five</a></h2>
+<div class="section">
+<h3><a id="id7" name="id7">Structure</a></h3>
+<ul class="simple">
+<li>2 Blocks  (A,B)
+* 100 Bedspaces</li>
+</ul>
+</div>
+<div class="section">
+<h3><a id="id8" name="id8">Allocation</a></h3>
+<ul class="simple">
+<li>Block A female_final</li>
+<li>Block B male_final</li>
+</ul>
+</div>
+</div>
+<div class="section">
+<h2><a id="medical-hostel" name="medical-hostel">Medical Hostel</a></h2>
+<div class="section">
+<h3><a id="id9" name="id9">Structure</a></h3>
+<ul class="simple">
+<li>2 Blocks  (A,B)
+* 138 Bedspaces</li>
+</ul>
+</div>
+<div class="section">
+<h3><a id="id10" name="id10">Allocation</a></h3>
+<ul class="simple">
+<li>Block A female_medical_500_600,female_dental_500_600 (60/40)</li>
+<li>Block B male_medical_500_600,male_dental_500_600 (60/40)</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+</body>
+</html>
Index: /WAeUP_SRP/trunk/doc/functionaldescriptions.txt
===================================================================
--- /WAeUP_SRP/trunk/doc/functionaldescriptions.txt	(revision 276)
+++ /WAeUP_SRP/trunk/doc/functionaldescriptions.txt	(revision 276)
@@ -0,0 +1,150 @@
+======================
+Functionaldescriptions
+======================
+
+
+Accommodation
+=============
+
+
+Bedkategories
+-------------
+
+- female
+
+  + fresh
+  + returning
+  + final
+  + postgraduate
+
+- male
+
+  + fresh
+  + returning
+  + final
+  + postgraduate
+
+Hostels
+-------------
+
+Hall One
+````````
+Structure
+:::::::::
+
+- 7 Blocks  (A,B,C,D,E,F,G)
+
+  * 3 Floors (100,200,300)
+
+    + 10 Rooms
+
+      - 6 Bedspaces (A,B,C,D,E,F)
+
+Allocation
+::::::::::
+
+- Beds A,B female_final
+- Beds C   female_returning
+- Beds D,E,F female_fresh
+
+Hall Two
+````````
+Structure
+:::::::::
+
+- 6 Blocks  (A,B,C,D,E,F)
+
+  * 4 Floors (100,200,300,400) ???
+  
+    + 10 Rooms (1 - 10)
+    
+      - 8 Bedspaces (A,B,C,D,E,F,G,H)
+
+Allocation
+::::::::::
+
+- Beds A,B female_final
+- Beds C,D   female_returning
+- Beds E,F,G,H female_fresh
+
+Hall Three
+``````````
+Structure
+:::::::::
+
+- 6 Blocks  (A,B,C,D,E,F)
+
+  * 4 Floors (100,200,300,400) ???
+  
+    + 10 Rooms (1 - 10)
+    
+      - 8 Bedspaces (A,B,C,D,E,F,G,H)
+      
+
+Allocation
+::::::::::
+
+- Beds A,B male_final
+- Beds C,D male_returning
+- Beds E,F,G,H male_fresh
+
+Hall Four
+`````````
+Structure
+:::::::::
+
+- Section I
+
+  * 200 Rooms (1 - 200)
+  
+    + 8 Bedspaces (A,B,C,D,E,F,G,H)
+
+- Section II
+
+  * 200 Rooms (1 - 200)
+  
+    + 8 Bedspaces (A,B,C,D,E,F,G,H)
+     
+
+- Section III
+
+  * 147 Rooms (1 - 147)
+
+    + 8 Bedspaces (A,B,C,D,E,F,G,H)
+
+
+Allocation
+::::::::::
+
+- Beds A,B male_final
+- Beds C,D   male_returning
+- Beds E,F,G,H male_fresh
+
+Hall Five
+`````````
+Structure
+:::::::::
+
+- 2 Blocks  (A,B)
+  * 100 Bedspaces
+
+Allocation
+::::::::::
+
+- Block A female_final
+- Block B male_final
+
+Medical Hostel
+``````````````
+Structure
+:::::::::
+
+- 2 Blocks  (A,B)
+  * 138 Bedspaces
+
+Allocation
+::::::::::
+
+- Block A female_medical_500_600,female_dental_500_600 (60/40)
+- Block B male_medical_500_600,male_dental_500_600 (60/40)
+
Index: /WAeUP_SRP/trunk/doc/usecases.html
===================================================================
--- /WAeUP_SRP/trunk/doc/usecases.html	(revision 276)
+++ /WAeUP_SRP/trunk/doc/usecases.html	(revision 276)
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>Usecases</title>
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date$
+:Revision: $Revision$
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+tt.docutils {
+  background-color: #eeeeee }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="usecases">
+<h1 class="title">Usecases</h1>
+<h2 class="subtitle" id="accommodation">Accommodation</h2>
+<div class="section">
+<h1><a id="manager" name="manager">Manager</a></h1>
+<div class="section">
+<h2><a id="assign-bedspace" name="assign-bedspace">Assign Bedspace</a></h2>
+<p>A single bedspace can be assigned to a student according to his/her sex.</p>
+</div>
+<div class="section">
+<h2><a id="deassign-bedspace" name="deassign-bedspace">Deassign Bedspace</a></h2>
+<p>An assigned bedspace can be deassigned</p>
+</div>
+</div>
+<div class="section">
+<h1><a id="student" name="student">Student</a></h1>
+<div class="section">
+<h2><a id="id1" name="id1">Assign Bedspace</a></h2>
+<p>A single bedspace is automatically assigned to a student according to</p>
+<ul class="simple">
+<li>sex</li>
+<li>level of study</li>
+<li>course of study</li>
+</ul>
+<p>if such a bedspace is available.</p>
+<p>This is protected by a N500.00 scratchcard.</p>
+<p>The Hostel Allocation Slip is printed.</p>
+</div>
+</div>
+</div>
+</body>
+</html>
Index: /WAeUP_SRP/trunk/doc/usecases.txt
===================================================================
--- /WAeUP_SRP/trunk/doc/usecases.txt	(revision 276)
+++ /WAeUP_SRP/trunk/doc/usecases.txt	(revision 276)
@@ -0,0 +1,35 @@
+========
+Usecases
+========
+
+Accommodation
+=============
+
+Manager
+```````
+Assign Bedspace
+:::::::::::::::
+A single bedspace can be assigned to a student according to his/her sex.
+
+Deassign Bedspace
+:::::::::::::::::
+An assigned bedspace can be deassigned
+
+Student
+```````
+Assign Bedspace
+:::::::::::::::
+A single bedspace is automatically assigned to a student according to
+ 
+- sex
+- level of study
+- course of study
+
+if such a bedspace is available.
+
+This is protected by a N500.00 scratchcard.
+
+The Hostel Allocation Slip is printed.
+
+
+
Index: /WAeUP_SRP/trunk/doc/userdescriptions.html
===================================================================
--- /WAeUP_SRP/trunk/doc/userdescriptions.html	(revision 276)
+++ /WAeUP_SRP/trunk/doc/userdescriptions.html	(revision 276)
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
+<title>Userdescriptions</title>
+<style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:Date: $Date$
+:Revision: $Revision$
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin-left: 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left {
+  clear: left }
+
+img.align-right {
+  clear: right }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font-family: serif ;
+  font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+  margin-left: 2em ;
+  margin-right: 2em ;
+  background-color: #eeeeee }
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+tt.docutils {
+  background-color: #eeeeee }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="userdescriptions">
+<h1 class="title">Userdescriptions</h1>
+<h2 class="subtitle" id="accommodation">Accommodation</h2>
+<div class="section">
+<h1><a id="hostel-allocation-slip" name="hostel-allocation-slip">HOSTEL ALLOCATION SLIP</a></h1>
+<p>The fields needed for generating Hostel Allocation Slip are as follows:</p>
+<dl class="docutils">
+<dt>Student's Entry Registration No.</dt>
+<dd>(for new students, Matriculation No. for Old Students)</dd>
+</dl>
+<p>Full Name</p>
+<dl class="docutils">
+<dt>Access PIN</dt>
+<dd>(the Scratch PIN purchased from a bank and used for the application)</dd>
+<dt>Sex</dt>
+<dd>(eg. Male or Female)</dd>
+<dt>Session</dt>
+<dd>(Current Academic Session</dd>
+<dt>Course of Study</dt>
+<dd>(e.g. Medicine, Pharmacy, Biochemistry, Law or Accounting)</dd>
+<dt>Level of Study</dt>
+<dd>(100, 200, 300, 400, 500 or 600 depending on the course of study)</dd>
+</dl>
+<p>Then the details of the hostel allocation comprising:</p>
+<dl class="docutils">
+<dt>Date of Allocation</dt>
+<dd>(This is the date the reservation was made)</dd>
+</dl>
+<p>Name of Residence Hall</p>
+<p>Block</p>
+<p>Room Number</p>
+<p>Bed Space Allocated</p>
+<dl class="docutils">
+<dt>Annotation/Note</dt>
+<dd>This is to affirm that you have been allocated a room in the hostel,
+details as shown above. Please print this Allocation Slip and keep for Hostel Clearance</dd>
+</dl>
+</div>
+<div class="section">
+<h1><a id="hostel-categories" name="hostel-categories">HOSTEL CATEGORIES</a></h1>
+<p>The Hostel Categories are as follows:</p>
+<ul class="simple">
+<li>Ugbowo Campus (Main Campus)<ol class="arabic">
+<li>Hall One:  For all Categories of Female Students</li>
+<li>Hall Two:  For all Categories of Female Students</li>
+<li>Hall Three: For all Categories of Male Students</li>
+<li>Hall Four: For all Categories of Male Students</li>
+<li>Hall Five: For only Final Year Male &amp; Female Students</li>
+<li>Medical Hostel: For all 500 &amp; 600 Level Medical &amp; Dental Students only</li>
+</ol>
+</li>
+<li>Ekehuan Campus (satellite campus)<ol class="arabic">
+<li>Female Undergraduate Hall</li>
+<li>Male Undergraduate Hall</li>
+<li>Postgraduate Hostel: For all Male Postgraduate Students</li>
+<li>Postgraduate Female Hostel: For all Female Postgraduate Students</li>
+</ol>
+</li>
+</ul>
+</div>
+<div class="section">
+<h1><a id="detailed-hostel-description" name="detailed-hostel-description">DETAILED HOSTEL DESCRIPTION</a></h1>
+<div class="section">
+<h2><a id="hall-one" name="hall-one">Hall One</a></h2>
+<p>Consist of 7 Blocks labeled A,B,C.. &amp; G, each Block consist of 30 rooms
+spread across three floors (10 rooms per floor). The first room on the
+Ground floor of Block A is numbered 101, the next 102, while the last room
+is labeled 110. The first room on the next floor is also labeled 201, next
+202 and the 10th room on that floor is 210. Each room has 6 bed spaces
+labeled A, B, C, D, E &amp; F. Therefore, the first space to be allocated will
+Hall one, Block A, Room 101, Bed Space A.</p>
+<p>Therefore, there are a total of 1,260 bed spaces in Hall One. (7 Blocks X 30
+rooms X 6 bed spaces).</p>
+</div>
+<div class="section">
+<h2><a id="hall-two" name="hall-two">Hall Two</a></h2>
+<p>This hall consist of 6 Blocks labeled A, B,C, D,E &amp; F; each Block consist of
+40 rooms, each room has 8 bed spaces. The bed spaces are labeled exactly as
+described in Hall One above.</p>
+<p>Therefore, there are a total of 1,920 bed spaces in Hall One. (6 Blocks X 40
+rooms  bed spaces).</p>
+</div>
+<div class="section">
+<h2><a id="hall-three" name="hall-three">Hall Three</a></h2>
+<p>Same as Hall Two</p>
+</div>
+<div class="section">
+<h2><a id="hall-four" name="hall-four">Hall Four</a></h2>
+<p>This hall is divided into 3 Sections as follows:</p>
+<dl class="docutils">
+<dt>Section I</dt>
+<dd>has a total of 200 Rooms with 8 bed spaces in each room</dd>
+<dt>Section II</dt>
+<dd>has a total of 200 Rooms with 8 bed spaces in each room</dd>
+<dt>Section III</dt>
+<dd>has a total of 147 Rooms with 8 bed spaces in each room</dd>
+</dl>
+<p>Therefore, there are a total of 4,376 bed spaces in Hall Four.</p>
+</div>
+<div class="section">
+<h2><a id="hall-five" name="hall-five">Hall Five</a></h2>
+<p>This hall of residence has two blocks, each has 100 bed spaces. One block accommodates
+final year male students while the other is for final  year female students.</p>
+</div>
+<div class="section">
+<h2><a id="medical-hostel" name="medical-hostel">Medical Hostel</a></h2>
+<p>Has two blocks, each for male and female (500 &amp; 600 Medical &amp; Dental Students) with capacity  to accommodate 138 students each.</p>
+<p>Postgraduate Accommodation is currently being handled manually, I will give
+the details in my subsequent mail.</p>
+</div>
+</div>
+<div class="section">
+<h1><a id="hostel-allocation-criteria" name="hostel-allocation-criteria">Hostel Allocation Criteria</a></h1>
+<p>1. Only Full Time (Undergraduate &amp; Postgraduate Students are entitled to
+Hostel Accommodation Allocation.</p>
+<p>2. For all undergraduate hostel allocations, the available bed spaces are
+allocated as follows</p>
+<blockquote>
+<ol class="loweralpha simple">
+<li>Bed Spaces A &amp; B in halls one, two, three &amp; four are meant for Final Year Students only</li>
+<li>Bed Space C in Hall One is strictly meant for Returning Students</li>
+<li>Bed Spaces D,E &amp; F in Hall One are meant to be allocated to fresh students</li>
+<li>In Halls Two, Three and Four, Bed Spaces C &amp; D are for Returning Students and E,F,G &amp; H are for Fresh Students</li>
+</ol>
+</blockquote>
+<p>3. Medical Hostel are allocated 500 &amp; 600 Medical and Dental Students at a
+ratio 60:40 respectively</p>
+<p>4. All the available bed spaces (A, B, C, D, E, F, G &amp; H) in Hall Five are
+allocated to FINAL YEAR ONLY</p>
+<p>5. Just before the commencement of Hostel Allocations, some reservations are
+made officially for Student Union Leaders, Sports Men and Women, Disabled or
+Physically-Challenged Students, etc. Therefore, there should be provision to
+make reservations at the back-end, and populate such reservations at a later
+date.</p>
+<p>6. The Hall of Residence attracts different charges, so students do not pay
+same amount for allocated spaces</p>
+<p>7. The Hostel Application Fee is all the same irrespective of the Hall of
+Residence the student is seeking reservation, and it N500.00</p>
+</div>
+</div>
+</body>
+</html>
Index: /WAeUP_SRP/trunk/doc/userdescriptions.txt
===================================================================
--- /WAeUP_SRP/trunk/doc/userdescriptions.txt	(revision 276)
+++ /WAeUP_SRP/trunk/doc/userdescriptions.txt	(revision 276)
@@ -0,0 +1,175 @@
+================
+Userdescriptions
+================
+
+
+Accommodation
+=============
+HOSTEL ALLOCATION SLIP
+----------------------
+
+
+The fields needed for generating Hostel Allocation Slip are as follows:
+
+Student's Entry Registration No. 
+  (for new students, Matriculation No. for Old Students)
+
+Full Name
+
+Access PIN 
+  (the Scratch PIN purchased from a bank and used for the application)
+
+Sex
+  (eg. Male or Female)
+	
+Session
+  (Current Academic Session
+	
+Course of Study
+  (e.g. Medicine, Pharmacy, Biochemistry, Law or Accounting)
+  
+Level of Study 
+  (100, 200, 300, 400, 500 or 600 depending on the course of study)
+
+Then the details of the hostel allocation comprising:
+
+Date of Allocation
+  (This is the date the reservation was made)
+
+Name of Residence Hall
+	
+Block 
+
+Room Number
+
+Bed Space Allocated
+
+Annotation/Note
+  This is to affirm that you have been allocated a room in the hostel,
+  details as shown above. Please print this Allocation Slip and keep for Hostel Clearance
+
+
+HOSTEL CATEGORIES
+-----------------
+    
+The Hostel Categories are as follows:
+
+- Ugbowo Campus (Main Campus)
+
+  1. Hall One:  For all Categories of Female Students
+  2. Hall Two:  For all Categories of Female Students
+  3. Hall Three: For all Categories of Male Students
+  4. Hall Four: For all Categories of Male Students
+  5. Hall Five: For only Final Year Male & Female Students
+  6. Medical Hostel: For all 500 & 600 Level Medical & Dental Students only
+ 
+- Ekehuan Campus (satellite campus)
+
+  1. Female Undergraduate Hall 
+  2. Male Undergraduate Hall 
+  3. Postgraduate Hostel: For all Male Postgraduate Students 
+  4. Postgraduate Female Hostel: For all Female Postgraduate Students
+
+
+DETAILED HOSTEL DESCRIPTION
+---------------------------
+
+Hall One
+::::::::
+
+Consist of 7 Blocks labeled A,B,C.. & G, each Block consist of 30 rooms
+spread across three floors (10 rooms per floor). The first room on the
+Ground floor of Block A is numbered 101, the next 102, while the last room
+is labeled 110. The first room on the next floor is also labeled 201, next
+202 and the 10th room on that floor is 210. Each room has 6 bed spaces
+labeled A, B, C, D, E & F. Therefore, the first space to be allocated will
+Hall one, Block A, Room 101, Bed Space A. 
+
+Therefore, there are a total of 1,260 bed spaces in Hall One. (7 Blocks X 30
+rooms X 6 bed spaces).
+
+Hall Two
+::::::::
+ 
+This hall consist of 6 Blocks labeled A, B,C, D,E & F; each Block consist of
+40 rooms, each room has 8 bed spaces. The bed spaces are labeled exactly as
+described in Hall One above.
+
+Therefore, there are a total of 1,920 bed spaces in Hall One. (6 Blocks X 40
+rooms  bed spaces).
+
+
+Hall Three
+::::::::::
+
+Same as Hall Two
+
+Hall Four
+:::::::::
+
+This hall is divided into 3 Sections as follows:
+
+Section I 
+  has a total of 200 Rooms with 8 bed spaces in each room
+
+Section II 
+  has a total of 200 Rooms with 8 bed spaces in each room
+
+Section III
+  has a total of 147 Rooms with 8 bed spaces in each room
+
+Therefore, there are a total of 4,376 bed spaces in Hall Four.
+
+Hall Five
+:::::::::
+
+This hall of residence has two blocks, each has 100 bed spaces. One block accommodates
+final year male students while the other is for final  year female students.
+
+Medical Hostel
+::::::::::::::
+
+Has two blocks, each for male and female (500 & 600 Medical & Dental Students) with capacity  to accommodate 138 students each.
+
+Postgraduate Accommodation is currently being handled manually, I will give
+the details in my subsequent mail.
+
+
+Hostel Allocation Criteria
+--------------------------
+
+1. Only Full Time (Undergraduate & Postgraduate Students are entitled to
+Hostel Accommodation Allocation. 
+
+2. For all undergraduate hostel allocations, the available bed spaces are
+allocated as follows
+
+ a) Bed Spaces A & B in halls one, two, three & four are meant for Final 
+    Year Students only
+
+ b) Bed Space C in Hall One is strictly meant for Returning Students 
+
+ c) Bed Spaces D,E & F in Hall One are meant to be allocated to fresh students
+
+ d) In Halls Two, Three and Four, Bed Spaces C & D are for Returning Students 
+    and E,F,G & H are for Fresh Students
+
+
+3. Medical Hostel are allocated 500 & 600 Medical and Dental Students at a
+ratio 60:40 respectively
+
+4. All the available bed spaces (A, B, C, D, E, F, G & H) in Hall Five are
+allocated to FINAL YEAR ONLY
+
+5. Just before the commencement of Hostel Allocations, some reservations are
+made officially for Student Union Leaders, Sports Men and Women, Disabled or
+Physically-Challenged Students, etc. Therefore, there should be provision to
+make reservations at the back-end, and populate such reservations at a later
+date.
+
+6. The Hall of Residence attracts different charges, so students do not pay
+same amount for allocated spaces
+
+7. The Hostel Application Fee is all the same irrespective of the Hall of
+Residence the student is seeking reservation, and it N500.00
+
Index: /WAeUP_SRP/trunk/exportimport.py
===================================================================
--- /WAeUP_SRP/trunk/exportimport.py	(revision 276)
+++ /WAeUP_SRP/trunk/exportimport.py	(revision 276)
@@ -0,0 +1,580 @@
+#-*- mode: python; mode: fold -*-
+# $Id: exportimport.py 31640 2006-01-15 19:22:29Z ogrisel $
+"""WAeUP Tool XML Adapter.
+
+An XML adapter tells the GenericSetup machinery howto im- / export persistent
+configuration that is relative to a specific CMF component such as our WAeUP
+Tool.
+
+GenericSetup uses the Zope3 interfaces and components machinery to find the
+right XML adapter for the right object. This is why we flagged our waeup tool
+with the `implements(IWAeUPTool)` class attribute and made an adapter
+association in the `configure.zcml` file.
+"""
+import csv,re
+
+# Zope3 component architecture
+from zope.component import adapts
+from zope.interface import implements
+
+# Standard GenericSetup base classes and functions
+from Products.GenericSetup.utils import exportObjects
+from Products.GenericSetup.utils import importObjects
+from Products.GenericSetup.utils import XMLAdapterBase
+from Products.GenericSetup.utils import PropertyManagerHelpers
+
+from Products.CMFCore.utils import getToolByName
+
+# GenericSetup multi adapts a class that implement IWAeUP and a particular
+# ISetupEnvironment to and IBody (piece of XML configuration).
+from Products.GenericSetup.interfaces import IBody
+from Products.GenericSetup.interfaces import ISetupEnviron
+from Products.WAeUP_SRP.interfaces import IWAeUPTool
+import Globals
+p_home = Globals.package_home(globals())
+i_home = Globals.INSTANCE_HOME
+
+TOOL = 'portal_waeup'
+NAME = 'waeup'
+
+# The exportWAeUP and importWAeUP methods are called by the specific
+# im- / export steps defined in the corresponding XML files in the
+# WAeUP/profiles/default/ directory.
+
+def installFaculties( academics): ###(
+    """install Universityspecific Faculies with Departments"""
+    faculties = [ ###(
+                  {'id': 'agriculture', ###(
+                      'Title': 'Agriculture',
+                      'departments': [
+##                                     { 'id': 'dep1', ###(
+##                                       'Title': 'One',
+##                                     },
+                                     ],
+                      },###)
+                  ###)
+                  {'id': 'arts', ###(
+                      'Title': 'Arts',
+                      'departments': [
+##                                     { 'id': 'dep1', ###(
+##                                       'Title': 'One',
+##                                     },
+                                     ],
+                      },###)
+                  ###)
+                  {'id': 'BasicMedicalSciences', ###(
+                      'Title': 'Basic Medical Sciences',
+                      'departments': [
+##                                     { 'id': 'dep1', ###(
+##                                       'Title': 'One',
+##                                     },
+                                     ],
+                      },###)
+                  ###)
+                  {'id': 'science', ###(
+                  'Title': 'Science',
+                  'departments': [
+                                 { 'id': 'bio', ###(
+                                   'Title': 'Biochemistry',
+                                 },
+                                 { 'id': 'bot',
+                                   'Title': 'Botany',
+                                 },
+                                 { 'id': 'che',
+                                   'Title': 'Chemistry',
+                                 },
+                                 { 'id': 'com',
+                                   'Title': 'Computer Science',
+                                 },
+                                 { 'id': 'geo',
+                                   'Title': 'Geologie',
+                                 },
+                                 { 'id': 'mat',
+                                   'Title': 'Mathematics',
+                                 },
+                                 { 'id': 'mic',
+                                   'Title': 'Microbiology',
+                                 },
+                                 { 'id': 'opt',
+                                   'Title': 'Optometry',
+                                 },
+                                 { 'id': 'phy',
+                                   'Title': 'Physics',
+                                 },
+                                 { 'id': 'zoo',
+                                   'Title': 'Zoology',
+                                 },
+                                 ],
+                  },###)
+                 ]###)
+                 
+                ###)
+
+    for faculty in faculties:
+        fid = faculty['id']
+        f = getattr(academics,fid,None)
+        if f is None:
+            #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
+            academics.invokeFactory('Faculty', fid)
+            f = getattr(academics,fid)
+            f.getContent().edit(mapping=faculty)
+        for department in faculty['departments']:
+            #self.log('Checking Department %(id)s = %(Title)s' % department)
+            did = department['id']
+            d = getattr(f,did,None)
+            if d is None:
+                #self.log('Creating Department %(id)s = %(Title)s' % department)
+                f.invokeFactory('Department', did)
+                d = getattr(f,did)
+                d.getContent().edit(mapping=department)
+###)
+
+def loadFacultiesFromCSV(academics,site,context): ###(
+    """install Universityspecific Faculies from CSV values"""
+    #return
+    logger = context.getLogger('loadfaculties')
+    logger.info('Start loading Faculties')
+    try:
+        faculties = csv.DictReader(open("%s/import/faculty.csv" % i_home,"rb"))
+    except:
+        return
+    l = site.portal_catalog({'meta_type': "Faculty"})
+    facs = {}
+    for f in l:
+        facs[f.id] = f.getObject()
+    for faculty in faculties:
+        logger.info('processing %(Session)s %(FacultyCode)s %(Description)s %(CollegeCode)s %(FacultyKey)s %(Status)s %(degree_grade)s %(Bankcode)s' % faculty)
+        fid = faculty['FacultyCode']
+        f = facs.get(fid,None)
+        if f is None:
+            #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
+            logger.info('Creating Faculty with ID %(FacultyCode)s %(Description)s' % faculty)
+            academics.invokeFactory('Faculty', fid)
+            f = getattr(academics,fid)
+        d = {'Title': faculty['Description']}
+        f.getContent().edit(mapping=d)
+###)
+
+def loadDepartmentsFromCSV(academics,site,context): ###(
+    """install Universityspecific Faculies from CSV values"""
+    #return
+    logger = context.getLogger('loaddepartments')
+    try:
+        deps = csv.DictReader(open("%s/import/departments.csv" % i_home,"rb"))
+    except:
+        return
+    l = site.portal_catalog({'meta_type': "Faculty"})
+    facs = {}
+    for f in l:
+        facs[f.id] = f.getObject()
+    for dep in deps:
+        logger.info('Processing %(Session)s %(DeptCode)s %(Description)s %(FacultyCode)s' % dep)
+        fid = dep['FacultyCode']
+        f = facs.get(fid,None)
+        if f is None:
+            logger.info( "No Faculty with ID: %s" % fid)
+        else:
+            did = dep.get('DeptCode')
+            d = getattr(f,did,None)
+            if d is None or d.portal_type == "Faculty":
+                #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
+                logger.info('Creating Department %(DeptCode)s = %(Description)s' % dep)
+                f.invokeFactory('Department', did)
+                d = getattr(f,did)
+            dict = {'Title': dep['Description']}
+            d.getContent().edit(mapping=dict)
+###)
+
+def loadCoursesFromCSV(academics,site,context): ###(
+    """install Universityspecific Courses from CSV values"""
+    #return
+    logger = context.getLogger('loadcourses')
+    try:
+        courses = csv.DictReader(open("%s/import/courses.csv" % i_home,"rb"))
+    except:
+        return
+    l = site.portal_catalog({'meta_type': "Faculty"})
+    facs = {}
+    for f in l:
+        facs[f.id] = f.getObject()
+    dl = site.portal_catalog({'meta_type': "Department"})
+    deps = {}
+    for d in dl:
+        deps[d.id] = d.getObject()
+    cl = site.portal_catalog({'meta_type': "Course"})
+    course_list = [ c.id for c in cl]
+    for course in courses:
+        logger.info('Processing %(CourseCode)s %(Description)s %(Credits)s %(Dept)s %(Semester)s %(Session)s %(PassMark)s %(CourseKey)s %(Category)s %(AdmStatus)s %(FORMERCODE)s' % course)
+        if course.get("FORMERCODE").endswith('BITS'):
+            continue
+        depid = course.get('Dept').upper()
+        if depid in deps.keys():
+            dept= deps.get(depid)
+##        elif depid in facs.keys():
+##            dept= facs.get(depid)
+        else:
+            logger.info("Dep %(Dept)s for Course %(CourseCode)s not found" % course)
+            continue
+        course_id = ''.join(re.split('\W+',course.get('CourseCode')))
+        if len(course_id) == 3:
+            course_id = "%s000" % course_id
+        elif len(course_id) != 6:
+            logger.info("invalid course_code %(CourseCode)s" % course)
+            #print course_id,course.get('CourseCode'),course.get('Description')
+            continue
+##        if course_id in course_list:
+##            continue
+        c = getattr(dept,course_id,None)
+        if c is None:
+            #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
+            logger.info('Creating Course %(CourseCode)s  %(Description)s in Department %(Dept)s' % course)
+            dept.invokeFactory('Course', course_id)
+            c = getattr(dept,course_id)
+        dict = {'Title': course['Description']}
+        dict['code'] = course_id
+        dict['org_code'] = course.get('CourseCode') 
+        dict['credits'] = course.get('Credits')
+        dict['semester'] = course.get('Semester')
+        dict['session'] = course.get('Session')
+        dict['category'] = course.get('Category')
+        dict['passmark'] = course.get('PassMark')
+        c.getContent().edit(mapping=dict)
+###)
+
+def loadCertificatesFromCSV(site,context): ###(
+    """install Universityspecific Certificates from CSV values"""
+    #return
+    logger = context.getLogger('loadcertificates')
+    try:
+        certificates = csv.DictReader(open("%s/import/certificates.csv" % i_home,"rb"))
+    except:
+        return
+    f_ids = [f.id for f in site.portal_catalog({'meta_type': "Faculty"})]
+    #d_ids = [d.id for d in site.portal_catalog({'meta_type': "Department"})]
+    dl = site.portal_catalog({'meta_type': "Department"})
+    deps = {}
+    for d in dl:
+        deps[d.id] = d.getObject()
+    for certificate in certificates:
+        logger.info('Processing %(CertCode)s %(Description)s %(Faculty)s %(MaxPass)s %(MaxLoad)s %(session)s %(PromotionCredits)s %(Probationcredits)s %(StartLevel)s %(endLevel)s %(Nyears)s %(Ncore)s %(MaxElect)s %(MPREFIX)s %(Dept)s %(Admstatus)s %(category)s' % certificate)
+        depid = certificate.get('Dept')
+        facid = certificate.get('Faculty')
+        if facid not in f_ids:
+            logger.info('Faculty %(Faculty)s for %(CertCode)s %(Description)s not found' % certificate)
+            continue
+        if not deps.has_key(depid):
+            logger.info('Department %(Dept)s for %(CertCode)s %(Description)s not found' % certificate)
+            continue
+        certificate_id = "%(category)s_%(Admstatus)s_%(Dept)s" % certificate
+        dep = deps[depid]
+        c = getattr(dep,certificate_id,None)
+        if c is None:
+            #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
+            logger.info('Creating certificate %(CertCode)s  %(Description)s in Department %(Dept)s' % certificate)
+            dep.invokeFactory('Certificate', certificate_id)
+            c = getattr(dep,certificate_id)
+        dict = {'Title': certificate['Description']}
+        code = certificate.get('CertCode')
+        code = code.replace('.','')
+        code = code.replace('(','')
+        code = code.replace(')','')
+        code = code.replace('/','')
+        code = code.replace(' ','')
+        code = code.replace('_','')
+        dict['code'] = code
+        dict['faculty'] = certificate.get('Faculty') 
+        dict['department'] = certificate.get('Dept') 
+        dict['max_pass'] = certificate.get('MaxPass')
+        dict['max_load'] = certificate.get('MaxLoad')
+        dict['admin_status'] = certificate.get('Admstatus')
+        dict['category'] = certificate.get('category')
+        dict['m_prefix'] = certificate.get('MPREFIX')
+        dict['nr_years'] = int(certificate.get('Nyears'))
+        nc = certificate.get('Ncore','1')
+        try: 
+            dict['n_core'] = int(nc)
+        except:
+            dict['n_core'] = 1
+        dict['start_level'] = certificate.get('StartLevel')
+        dict['end_level'] = certificate.get('endLevel')
+        dict['promotion_credits'] = certificate.get('PromotionCredits')
+        dict['probation_credits'] = certificate.get('ProbationCredits')
+        c.getContent().edit(mapping=dict)
+###)
+
+def oldloadCertificatesFromCSV(certfolder,site,context): ###(
+    """install Universityspecific Certificates from CSV values"""
+    logger = context.getLogger('loadcertificates')
+    certificates = csv.DictReader(open("%s/import/certificates.csv" % i_home,"rb"))
+    f_ids = [f.id for f in site.portal_catalog({'meta_type': "Faculty"})]
+    d_ids = [d.id for d in site.portal_catalog({'meta_type': "Department"})]
+    for certificate in certificates:
+        depid = certificate.get('Dept')
+        facid = certificate.get('Faculty')
+        if facid not in f_ids:
+            logger.info('Faculty %(Faculty)s for %(CertCode)s %(Description)s not found' % certificate)
+            continue
+        if depid not in d_ids:
+            logger.info('Department %(Dept)s for %(CertCode)s %(Description)s not found' % certificate)
+            continue
+        certificate_id = "%(category)s_%(Admstatus)s_%(Dept)s" % certificate
+        c = getattr(certfolder,certificate_id,None)
+        if c is None:
+            #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
+            logger.info('Creating certificate %(CertCode)s  %(Description)s in Department %(Dept)s' % certificate)
+            certfolder.invokeFactory('Certificate', certificate_id)
+            c = getattr(certfolder,certificate_id)
+        dict = {'Title': certificate['Description']}
+        code = certificate.get('CertCode')
+        code = code.replace('.','')
+        code = code.replace('(','')
+        code = code.replace(')','')
+        code = code.replace('/','')
+        code = code.replace(' ','')
+        code = code.replace('_','')
+        dict['code'] = code
+        dict['faculty'] = certificate.get('Faculty') 
+        dict['department'] = certificate.get('Dept') 
+        dict['max_pass'] = certificate.get('MaxPass')
+        dict['max_load'] = certificate.get('MaxLoad')
+        dict['admin_status'] = certificate.get('Admstatus')
+        dict['category'] = certificate.get('category')
+        dict['m_prefix'] = certificate.get('MPREFIX')
+        dict['nr_years'] = int(certificate.get('Nyears'))
+        nc = certificate.get('Ncore','1')
+        try: 
+            dict['n_core'] = int(nc)
+        except:
+            dict['n_core'] = 1
+        dict['start_level'] = certificate.get('StartLevel')
+        dict['end_level'] = certificate.get('endLevel')
+        dict['promotion_credits'] = certificate.get('PromotionCredits')
+        dict['probation_credits'] = certificate.get('ProbationCredits')
+        c.getContent().edit(mapping=dict)
+###)
+
+def loadCertificateCoursesFromCSV(site,context): ###(
+    """install Certificate Courses from CSV values"""
+    #return
+    logger = context.getLogger('loadcertificatecourses')
+    try:
+        cert_courses = csv.DictReader(open("%s/import/course_level_courses.csv" % i_home,"rb"))
+    except:
+        return
+    d_ids = [d.id for d in site.portal_catalog({'meta_type': "Department"})]
+    for cert_course in cert_courses:
+        logger.info('Processing %(CosCode)s %(CertCode)s %(CoreKey)s %(Session)s %(Level)s %(Core)s %(Elective)s %(Mandatory)s %(AdmStatus)s %(Dept)s %(Semester)s' % cert_course)
+        depid = cert_course.get('Dept')
+        code = cert_course.get('CertCode')
+        code = code.replace('.','')
+        code = code.replace('(','')
+        code = code.replace(')','')
+        code = code.replace('/','')
+        code = code.replace(' ','')
+        code = code.replace('_','')
+        if cert_course.get('Session') != '2002/2003':
+            continue
+        certificate = site.portal_catalog({'meta_type': "Certificate",
+                                           'SearchableText': code})
+        if not certificate:
+            print code
+            logger.info('CertCode %(CertCode)s for %(CosCode)s not found' % cert_course)
+            continue
+        certificate = certificate[-1].getObject()
+        certificate_code = certificate.getId()
+        if depid not in d_ids:
+            logger.info('Department %(Dept)s for %(CertCode)s not found' % cert_course)
+            continue
+        course_code = cert_course.get('CosCode')
+        level = cert_course.get('Level')
+        l = getattr(certificate,level,None)
+        if l is None:
+            #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
+            logger.info('Creating Level %(Level)s in certificate %(CertCode)s' % cert_course)
+            certificate.invokeFactory('StudyLevel', level)
+            l = getattr(certificate, level)
+            l.invokeFactory('Semester','first')
+            l.invokeFactory('Semester','second')
+        first_s = getattr(l,'first')
+        second_s = getattr(l,'second')
+        if cert_course.get('Semester') == '1':
+            semester = first_s
+        else:
+            semester = second_s
+        if hasattr(semester,course_code):
+            logger.info('Duplicate %(CosCode)s in Level %(Level)s' % cert_course)
+            continue
+            
+        semester.invokeFactory('CertificateCourse',course_code)
+        cc = getattr(semester,course_code)
+        dict = {}
+        dict['code'] = cert_course.get('CosCode')
+        dict['certificate_code'] = code
+        dict['certificate_code_org'] = cert_course.get('CertCode') 
+        dict['department'] = cert_course.get('Dept') 
+        dict['admin_status'] = cert_course.get('Admstatus')
+        dict['session'] = cert_course.get('Session')
+        if cert_course.get('Core') != '':
+            dict['core_or_elective'] = True
+        else:
+            dict['core_or_elective'] = False
+        dict['level'] = cert_course.get('Level')
+        cc.getContent().edit(mapping=dict)
+###)
+
+def old_loadCertificateCoursesFromCSV(certfolder,site,context): ###(
+    """install Certificate Courses from CSV values"""
+    return
+    logger = context.getLogger('loadcertificatecourses')
+    cert_courses = csv.DictReader(open("%s/import/course_level_courses.csv" % i_home,"rb"))
+    d_ids = [d.id for d in site.portal_catalog({'meta_type': "Department"})]
+    for cert_course in cert_courses:
+        depid = cert_course.get('Dept')
+        code = cert_course.get('CertCode')
+        code = code.replace('.','')
+        code = code.replace('(','')
+        code = code.replace(')','')
+        code = code.replace('/','')
+        code = code.replace(' ','')
+        code = code.replace('_','')
+        if cert_course.get('Session') != '2002/2003':
+            continue
+        certificate = site.portal_catalog({'meta_type': "Certificate",
+                                           'SearchableText': code})
+        if not certificate:
+            print code
+            logger.info('CertCode %(CertCode)s for %(CosCode)s not found' % cert_course)
+            continue
+        certificate = certificate[-1].getObject()
+        certificate_code = certificate.getId()
+        if depid not in d_ids:
+            logger.info('Department %(Dept)s for %(CertCode)s not found' % cert_course)
+            continue
+        course_code = cert_course.get('CosCode')
+        level = cert_course.get('Level')
+        l = getattr(certificate,level,None)
+        if l is None:
+            #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
+            logger.info('Creating Level %(Level)s in certificate %(CertCode)s' % cert_course)
+            certificate.invokeFactory('StudyLevel', level)
+            l = getattr(certificate, level)
+            l.invokeFactory('Semester','first')
+            l.invokeFactory('Semester','second')
+        first_s = getattr(l,'first')
+        second_s = getattr(l,'second')
+        if cert_course.get('Semester') == '1':
+            semester = first_s
+        else:
+            semester = second_s
+        if hasattr(semester,course_code):
+            logger.info('Duplicate %(CosCode)s in Level %(Level)s' % cert_course)
+            continue
+            
+        semester.invokeFactory('CertificateCourse',course_code)
+        cc = getattr(semester,course_code)
+        dict = {}
+        dict['code'] = cert_course.get('CosCode')
+        dict['certificate_code'] = code
+        dict['certificate_code_org'] = cert_course.get('CertCode') 
+        dict['department'] = cert_course.get('Dept') 
+        dict['admin_status'] = cert_course.get('Admstatus')
+        dict['session'] = cert_course.get('Session')
+        if cert_course.get('Core') != '':
+            dict['core_or_elective'] = True
+        else:
+            dict['core_or_elective'] = False
+        dict['level'] = cert_course.get('Level')
+        cc.getContent().edit(mapping=dict)
+###)
+
+def setupStructure(site,context): ###(
+    portal = getattr(site,'uniportal',None)
+    if portal is None:
+        site.invokeFactory('University','uniportal')
+        portal = getattr(site,'uniportal',None)
+        portal.getContent().edit(mapping={'Title':SRPP_TITLE})
+    students =  getattr(portal,'students',None)
+    if students is None:
+        portal.invokeFactory('StudentsFolder','students')
+        students = getattr(portal,'students').getContent()
+        students.edit(mapping={'Title':'Students'})
+    academics = getattr(portal,'academics',None)
+    if academics is None:
+        portal.invokeFactory('AcademicsFolder','academics')
+        academics = getattr(portal,'academics')
+        academics.getContent().edit(mapping={'Title':'Academics'})
+    loadFacultiesFromCSV(academics,site,context)
+    loadDepartmentsFromCSV(academics,site,context)
+    loadCoursesFromCSV(academics,site,context)
+##    certificates = getattr(academics,'certificates',None)
+##    if certificates is None:
+##        academics.invokeFactory('SCFolder','certificates')
+##        certificates = getattr(academics,'certificates')
+##        certificates.getContent().edit(mapping={'Title':'Certificates'})
+    loadCertificatesFromCSV(site,context)
+    loadCertificateCoursesFromCSV(site,context)
+    if not hasattr(portal,'accommodation'):
+        portal.invokeFactory('AccoFolder','accommodation')
+        accommodation = getattr(portal,'accommodation').getContent()
+        accommodation.edit(mapping={'Title':'Accommodation'})
+###)
+
+
+def exportWAeUP(context):
+    """Export our WAeUP tool configuration
+    """
+    site = context.getSite()
+    tool = getToolByName(site, TOOL, None)
+    if tool is None:
+        logger = context.getLogger(NAME)
+        logger.info("Nothing to export.")
+        return
+    exportObjects(tool, '', context)
+
+def importWAeUP(context):
+    """Import WAeUP tool configuration
+    """
+    site = context.getSite()
+    #setupStructure(site,context)
+    #import pdb; pdb.set_trace()
+    pass
+    #site = context.getSite()
+    #tool = getToolByName(site, TOOL)
+    #importObjects(tool, '', context)
+
+
+# This the XMLAdapter itself. It encodes the im- / export logic that is specific
+# to our tool. `im- / exportObjects` functions will find it thanks to the zope
+# components machinery and the associations made in the configure.zcml file.
+
+class WAeUPXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
+    """XML importer and exporter for the WAeUP tool.
+
+    Hence this XMLAdapter is really simple. To get more complete examples of
+    what XMLAdapters are meant to do, please have a look at the
+    CPSSkins.exportimport.py or CPSDirectory.exportimport.py files, for
+    instance.
+    """
+
+    adapts(IWAeUPTool, ISetupEnviron)
+    implements(IBody)
+
+    _LOGGER_ID = NAME
+    name = NAME
+
+    def _exportNode(self):
+        """Export the object as a DOM node.
+        """
+        node = self._getObjectNode('object')
+        node.appendChild(self._extractProperties())
+        self._logger.info("WAeUP tool exported.")
+        return node
+
+    def _importNode(self, node):
+        """Import the object from the DOM node.
+        """
+        if self.environ.shouldPurge():
+            self._purgeProperties()
+        self._initProperties(node)
+        self._logger.info("WAeUP tool imported.")
+
Index: /WAeUP_SRP/trunk/ftest/test_waeup.py
===================================================================
--- /WAeUP_SRP/trunk/ftest/test_waeup.py	(revision 276)
+++ /WAeUP_SRP/trunk/ftest/test_waeup.py	(revision 276)
@@ -0,0 +1,56 @@
+# (C) Copyright 2005 Nuxeo SAS <http://nuxeo.com>
+# Author: bdelbosc@nuxeo.com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+"""Simple funkload zope tests
+
+$Id$
+"""
+import unittest
+from random import random
+from funkload.ZopeTestCase import ZopeTestCase
+from funkload.Lipsum import Lipsum
+
+
+class Zope(ZopeTestCase):
+    """Testing the funkload ZopeTestCase
+
+    This test use a configuration file Zope.conf.
+    """
+    def setUp(self):
+        """Setting up test."""
+        self.logd("setUp.")
+        self.zope_url = self.conf_get('main', 'url')
+        self.admin_id = self.conf_get('main', 'admin_id')
+        self.admin_pwd = self.conf_get('main', 'admin_pwd')
+
+    def tearDown(self):
+        """Setting up test."""
+        self.logd("tearDown.")
+
+    def test_admission(self):
+        server_url = self.zope_url
+        
+        self.get("%s/" % server_url)
+        self.get("%s/students/check_admission" % server_url)
+        self.post("%s/students/check_admission" % server_url, 
+                  params={'widget__sc_pin': '12345678', 
+                          'widget__jamb_id': '12345678lr',
+                          'cpsdocument_edit_button': 'check'})
+        self.assert_('Your Admission Slip' in self.getBody())
+
+if __name__ in ('main', '__main__'):
+    unittest.main()
Index: /WAeUP_SRP/trunk/i18n/.config.pot
===================================================================
--- /WAeUP_SRP/trunk/i18n/.config.pot	(revision 276)
+++ /WAeUP_SRP/trunk/i18n/.config.pot	(revision 276)
@@ -0,0 +1,1 @@
+/var/lib/zope2.7/instance/test_madarche_HEAD/Products/MyProject/i18n/myproject.pot
Index: /WAeUP_SRP/trunk/i18n/custom.pot
===================================================================
--- /WAeUP_SRP/trunk/i18n/custom.pot	(revision 276)
+++ /WAeUP_SRP/trunk/i18n/custom.pot	(revision 276)
@@ -0,0 +1,18 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: LL\n"
+"Language-Name: Language\n"
+"Preferred-encodings: utf-8 latin1\n"
+"Domain: default\n"
+
Index: /WAeUP_SRP/trunk/i18n/en.po
===================================================================
--- /WAeUP_SRP/trunk/i18n/en.po	(revision 276)
+++ /WAeUP_SRP/trunk/i18n/en.po	(revision 276)
@@ -0,0 +1,106 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-encodings: latin9 utf-8\n"
+"Domain: default\n"
+
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <option value="." content="widget/title_or_id" attributes="value widget/getWidgetId" condition="widget/is_i18n">Type</option>
+msgid "Type"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="addwidget_button" type="submit" class="context" value="button_add" />
+msgid "button_add"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input onclick="history.back()" type="button" class="context" value="button_cancel" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_cancel"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_edit_button" type="submit" class="standalone" value="button_change" condition="not:creation" />
+msgid "button_change"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_create_button" type="submit" class="standalone" value="button_create" condition="creation" />
+msgid "button_create"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="destructive" value="button_delete" attributes="name string:deleterow_${repeat/row/index};
+#.                                 onclick python:'return window.confirm(\'%s\')' %
+#.                                   (cpsmcat('description_confirm_delete'), )" />
+msgid "button_delete"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveDown" value="button_move_down" attributes="name string:downrow_${repeat/row/index}" condition="not:repeat/row/end" />
+msgid "button_move_down"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveUp" value="button_move_up" attributes="name string:uprow_${repeat/row/index}" condition="not:repeat/row/start" />
+msgid "button_move_up"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input type="submit" class="standalone" value="button_publish" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_publish"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <block>at</block>
+msgid "cpsschema_at"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_hour_id">h</label>
+msgid "cpsschema_hour"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_minute_id">mn</label>
+msgid "cpsschema_minute"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <title fill-slot="title">
+#.     heading_accept_publication_of
+#.     ${item_id (tal replace="here/title_or_id")}
+#.   </title>
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "heading_accept_publication_of ${item_id}"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <block content="widget/help" condition="widget/is_i18n">i18_key-help_for_this_field</block>
+msgid "i18_key-help_for_this_field"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span class="dlabel" content="widget/label" condition="widget/is_i18n">label</span>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <b content="widget/label" condition="widget/is_i18n">label</b>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span content="widget/label_edit" condition="widget/is_i18n">label</span>
+msgid "label"
+msgstr ""
Index: /WAeUP_SRP/trunk/i18n/fr.po
===================================================================
--- /WAeUP_SRP/trunk/i18n/fr.po	(revision 276)
+++ /WAeUP_SRP/trunk/i18n/fr.po	(revision 276)
@@ -0,0 +1,106 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: fr\n"
+"Language-Name: French\n"
+"Preferred-encodings: latin9 utf-8\n"
+"Domain: default\n"
+
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <option value="." content="widget/title_or_id" attributes="value widget/getWidgetId" condition="widget/is_i18n">Type</option>
+msgid "Type"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="addwidget_button" type="submit" class="context" value="button_add" />
+msgid "button_add"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input onclick="history.back()" type="button" class="context" value="button_cancel" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_cancel"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_edit_button" type="submit" class="standalone" value="button_change" condition="not:creation" />
+msgid "button_change"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_create_button" type="submit" class="standalone" value="button_create" condition="creation" />
+msgid "button_create"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="destructive" value="button_delete" attributes="name string:deleterow_${repeat/row/index};
+#.                                 onclick python:'return window.confirm(\'%s\')' %
+#.                                   (cpsmcat('description_confirm_delete'), )" />
+msgid "button_delete"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveDown" value="button_move_down" attributes="name string:downrow_${repeat/row/index}" condition="not:repeat/row/end" />
+msgid "button_move_down"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveUp" value="button_move_up" attributes="name string:uprow_${repeat/row/index}" condition="not:repeat/row/start" />
+msgid "button_move_up"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input type="submit" class="standalone" value="button_publish" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_publish"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <block>at</block>
+msgid "cpsschema_at"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_hour_id">h</label>
+msgid "cpsschema_hour"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_minute_id">mn</label>
+msgid "cpsschema_minute"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <title fill-slot="title">
+#.     heading_accept_publication_of
+#.     ${item_id (tal replace="here/title_or_id")}
+#.   </title>
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "heading_accept_publication_of ${item_id}"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <block content="widget/help" condition="widget/is_i18n">i18_key-help_for_this_field</block>
+msgid "i18_key-help_for_this_field"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span class="dlabel" content="widget/label" condition="widget/is_i18n">label</span>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <b content="widget/label" condition="widget/is_i18n">label</b>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span content="widget/label_edit" condition="widget/is_i18n">label</span>
+msgid "label"
+msgstr ""
Index: /WAeUP_SRP/trunk/i18n/myproject.pot
===================================================================
--- /WAeUP_SRP/trunk/i18n/myproject.pot	(revision 276)
+++ /WAeUP_SRP/trunk/i18n/myproject.pot	(revision 276)
@@ -0,0 +1,106 @@
+# Gettext Message File for default.
+# Your Name <your@email>, Year
+msgid ""
+msgstr ""
+"Project-Id-Version: default\n"
+"POT-Creation-Date: 2005-06-17 10:47default\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Your Name <your@email>\n"
+"Language-Team: Name <email>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: LL\n"
+"Language-Name: Language\n"
+"Preferred-encodings: utf-8 latin1\n"
+"Domain: default\n"
+
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <option value="." content="widget/title_or_id" attributes="value widget/getWidgetId" condition="widget/is_i18n">Type</option>
+msgid "Type"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="addwidget_button" type="submit" class="context" value="button_add" />
+msgid "button_add"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input onclick="history.back()" type="button" class="context" value="button_cancel" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_cancel"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_edit_button" type="submit" class="standalone" value="button_change" condition="not:creation" />
+msgid "button_change"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input name="cpsdocument_create_button" type="submit" class="standalone" value="button_create" condition="creation" />
+msgid "button_create"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="destructive" value="button_delete" attributes="name string:deleterow_${repeat/row/index};
+#.                                 onclick python:'return window.confirm(\'%s\')' %
+#.                                   (cpsmcat('description_confirm_delete'), )" />
+msgid "button_delete"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveDown" value="button_move_down" attributes="name string:downrow_${repeat/row/index}" condition="not:repeat/row/end" />
+msgid "button_move_down"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <input type="submit" class="context moveUp" value="button_move_up" attributes="name string:uprow_${repeat/row/index}" condition="not:repeat/row/start" />
+msgid "button_move_up"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <input type="submit" class="standalone" value="button_publish" />
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "button_publish"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <block>at</block>
+msgid "cpsschema_at"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_hour_id">h</label>
+msgid "cpsschema_hour"
+msgstr ""
+
+#: from ../skins/myproject_document/widget_datetime_render.pt
+#.   <label attributes="for elt_minute_id">mn</label>
+msgid "cpsschema_minute"
+msgstr ""
+
+#: from ../skins/myproject_document/accepter_visite.pt
+#.   <title fill-slot="title">
+#.     heading_accept_publication_of
+#.     ${item_id (tal replace="here/title_or_id")}
+#.   </title>
+#: from ../skins/myproject_document/refuser_visite.pt
+msgid "heading_accept_publication_of ${item_id}"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <block content="widget/help" condition="widget/is_i18n">i18_key-help_for_this_field</block>
+msgid "i18_key-help_for_this_field"
+msgstr ""
+
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span class="dlabel" content="widget/label" condition="widget/is_i18n">label</span>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <b content="widget/label" condition="widget/is_i18n">label</b>
+#: from ../skins/myproject_document/myproject_layout_lib.pt
+#.   <span content="widget/label_edit" condition="widget/is_i18n">label</span>
+msgid "label"
+msgstr ""
Index: /WAeUP_SRP/trunk/interfaces.py
===================================================================
--- /WAeUP_SRP/trunk/interfaces.py	(revision 276)
+++ /WAeUP_SRP/trunk/interfaces.py	(revision 276)
@@ -0,0 +1,17 @@
+"""WAeUP interfaces.
+
+interfaces and components were first introduced for the Zope3 architecture.
+However they can also be used for Zope 2.9 applications too such as CMF and CPS.
+Currently they are used by the GenericSetup tool to adapts persistent objects
+that are worth im- / exporting to their dedicated XMLAdapter.
+
+In our case, we want the state of our vogon tool to be GenericSetup aware.
+Please see the exportimport.py file for more details on the corresponding
+XMLAdapter.
+"""
+
+from zope.interface import Interface
+
+class IWAeUPTool(Interface):
+    """WAeUP_SRP
+    """
Index: /WAeUP_SRP/trunk/profiles/default/contenttyperegistry.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/contenttyperegistry.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/contenttyperegistry.xml	(revision 276)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<object name="content_type_registry" meta_type="Content Type Registry">
+ <predicate name="link" content_type_name="Link" predicate_type="extension">
+  <argument value="url,link"/>
+ </predicate>
+ <predicate name="news" content_type_name="News Item"
+    predicate_type="extension">
+  <argument value="news"/>
+ </predicate>
+ <predicate name="document" content_type_name="Document"
+    predicate_type="major_minor">
+  <argument value="text"/>
+  <argument value=""/>
+ </predicate>
+ <predicate name="image" content_type_name="Image"
+    predicate_type="major_minor">
+  <argument value="image"/>
+  <argument value=""/>
+ </predicate>
+ <predicate name="file" content_type_name="File" predicate_type="major_minor">
+  <argument value="application"/>
+  <argument value=""/>
+ </predicate>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/export_steps.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/export_steps.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/export_steps.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<export-steps>
+ <export-step id="waeup"
+              handler="Products.WAeUP_SRP.exportimport.exportWAeUP"
+              title="WAeUP">
+  Export WAeUP_SRP and it's configuration.
+ </export-step>
+</export-steps>
Index: /WAeUP_SRP/trunk/profiles/default/import_steps.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/import_steps.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/import_steps.xml	(revision 276)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<import-steps>
+ <import-step id="waeup" version="20060115-01"
+              handler="Products.WAeUP_SRP.exportimport.importWAeUP"
+              title="WAeUP">
+  <dependency step="toolset" />
+  Import WAeUP_SRP and its configuration.
+ </import-step>
+</import-steps>
Index: /WAeUP_SRP/trunk/profiles/default/layouts.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="portal_layouts" meta_type="CPS Layouts Tool">
+ <property name="title"></property>
+ <object name="accobook" meta_type="CPS Layout"/>
+ <object name="accommodation" meta_type="CPS Layout"/>
+ <object name="accopay" meta_type="CPS Layout"/>
+ <object name="admission" meta_type="CPS Layout"/>
+ <object name="admission_slip" meta_type="CPS Layout"/>
+ <object name="admission_status" meta_type="CPS Layout"/>
+ <object name="certificate" meta_type="CPS Layout"/>
+ <object name="certificate_course" meta_type="CPS Layout"/>
+ <object name="clearance" meta_type="CPS Layout"/>
+ <object name="clearence" meta_type="CPS Layout"/>
+ <object name="course" meta_type="CPS Layout"/>
+ <object name="department" meta_type="CPS Layout"/>
+ <object name="faculty" meta_type="CPS Layout"/>
+ <object name="jamb" meta_type="CPS Layout"/>
+ <object name="jambcreate" meta_type="CPS Layout"/>
+ <object name="student" meta_type="CPS Layout"/>
+ <object name="student_documents" meta_type="CPS Layout"/>
+ <object name="student_eligibility" meta_type="CPS Layout"/>
+ <object name="student_eligibility_edit" meta_type="CPS Layout"/>
+ <object name="student_personal" meta_type="CPS Layout"/>
+ <object name="student_personal_addon" meta_type="CPS Layout"/>
+ <object name="student_schoolresults" meta_type="CPS Layout"/>
+ <object name="student_semester" meta_type="CPS Layout"/>
+ <object name="study_level" meta_type="CPS Layout"/>
+ <object name="university" meta_type="CPS Layout"/>
+ <object name="waeup_common" meta_type="CPS Layout"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/accobook.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/accobook.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/accobook.xml	(revision 276)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<object name="accobook" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_sc_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="title">SC ID</property>
+  <property name="fields">
+   <element value="sc_id"/>
+  </property>
+  <property name="label">Card Serial Number </property>
+  <property name="label_edit">Card Serial Number</property>
+  <property name="description">Card Serial Number </property>
+  <property
+     name="help">This can be found on the bottom right of the reverse side of your Scratch Card</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_if_expr">python:1</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="sc_pin" meta_type="Scratchcard Pin Widget">
+  <property name="title">SC PIN</property>
+  <property name="fields">
+   <element value="sc_pin"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">enter  PIN</property>
+  <property name="label_edit">Enter an Accommodation PIN</property>
+  <property name="help">Enter a PIN valid for Accomodation Booking</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_value" meta_type="Float Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="sc_value"/>
+  </property>
+  <property name="label">SC Value</property>
+  <property name="label_edit">Scratcard Value</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="sc_value"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/accommodation.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/accommodation.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/accommodation.xml	(revision 276)
@@ -0,0 +1,165 @@
+<?xml version="1.0"?>
+<object name="accommodation" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="beds_assigned" meta_type="Int Widget">
+  <property name="fields">
+   <element value="beds_assigned"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Nr. of Assigned Beds</property>
+  <property name="label_edit">Nr. of Assigned Beds</property>
+  <property name="help">Number of beds already assigned to students</property>
+ </widget>
+ <widget name="beds_assigned_list" meta_type="Ordered List Widget">
+  <property name="fields">
+   <element value="beds_assigned_list"/>
+  </property>
+  <property name="label">Assigned Beds</property>
+  <property name="label_edit">Assigned Beds</property>
+  <property name="help">List of beds already assigned to students</property>
+ </widget>
+ <widget name="beds_for_final" meta_type="MultiSelect Widget">
+  <property name="fields">
+   <element value="beds_for_final"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Bedspaces for final</property>
+  <property name="label_edit">Bedspaces for final</property>
+  <property name="help">Name the bedspaces for final year students</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">waeup_bed_letters</property>
+ </widget>
+ <widget name="beds_for_fresh" meta_type="MultiSelect Widget">
+  <property name="fields">
+   <element value="beds_for_fresh"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Bedspaces for fresh</property>
+  <property name="label_edit">Bedspaces for fresh</property>
+  <property name="help">Name the bedspaces for first year students</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">waeup_bed_letters</property>
+ </widget>
+ <widget name="beds_for_returning" meta_type="MultiSelect Widget">
+  <property name="fields">
+   <element value="beds_for_returning"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Bedspaces for returning</property>
+  <property name="label_edit">Bedspaces for returning</property>
+  <property
+     name="help">Name the bedspaces for returning year students</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">waeup_bed_letters</property>
+ </widget>
+ <widget name="beds_per_room" meta_type="Select Widget">
+  <property name="fields">
+   <element value="beds_per_room"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Beds per Room</property>
+  <property name="label_edit">Beds per Room</property>
+  <property name="vocabulary">range10</property>
+ </widget>
+ <widget name="heading" meta_type="String Widget">
+  <property name="fields">
+   <element value="heading"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Hall Name</property>
+  <property name="label_edit">Hall Name</property>
+  <property name="display_width">40</property>
+  <property name="size_max">40</property>
+ </widget>
+ <widget name="nr_of_blocks" meta_type="Select Widget">
+  <property name="fields">
+   <element value="nr_of_blocks"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Nr of Blocks</property>
+  <property name="label_edit">Nr of Blocks</property>
+  <property name="vocabulary">range10</property>
+ </widget>
+ <widget name="nr_of_floors" meta_type="Select Widget">
+  <property name="fields">
+   <element value="nr_of_floors"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Nr of Floors </property>
+  <property name="label_edit">Nr of Floors</property>
+  <property name="vocabulary">range5</property>
+ </widget>
+ <widget name="rooms_per_floor" meta_type="Select Widget">
+  <property name="fields">
+   <element value="rooms_per_floor"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Rooms per Floor</property>
+  <property name="label_edit">Rooms per Floor</property>
+  <property name="vocabulary">range50</property>
+ </widget>
+ <widget name="text" meta_type="Text Widget">
+  <property name="fields">
+   <element value="text"/>
+  </property>
+  <property name="label">Text</property>
+  <property name="label_edit">Text</property>
+  <property name="help">Short Description</property>
+  <property name="is_i18n">True</property>
+  <property name="hidden_layout_modes"/>
+  <property name="css_class">description</property>
+  <property name="width">72</property>
+ </widget>
+ <widget name="which_sex" meta_type="Boolean Widget">
+  <property name="fields">
+   <element value="which_sex"/>
+  </property>
+  <property name="label">Sex</property>
+  <property name="label_edit">Sex</property>
+  <property name="label_false">male</property>
+  <property name="label_true">female</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="heading"/>
+  </row>
+  <row>
+   <cell name="text"/>
+  </row>
+  <row>
+   <cell name="which_sex"/>
+  </row>
+  <row>
+   <cell name="nr_of_blocks"/>
+  </row>
+  <row>
+   <cell name="nr_of_floors"/>
+  </row>
+  <row>
+   <cell name="rooms_per_floor"/>
+  </row>
+  <row>
+   <cell name="beds_per_room"/>
+  </row>
+  <row>
+   <cell name="beds_for_fresh"/>
+  </row>
+  <row>
+   <cell name="beds_for_returning"/>
+  </row>
+  <row>
+   <cell name="beds_for_final"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/accopay.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/accopay.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/accopay.xml	(revision 276)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<object name="accopay" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_sc_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="title">SC ID</property>
+  <property name="fields">
+   <element value="sc_id"/>
+  </property>
+  <property name="label">Card Serial Number </property>
+  <property name="label_edit">Card Serial Number</property>
+  <property name="description">Card Serial Number </property>
+  <property
+     name="help">This can be found on the bottom right of the reverse side of your Scratch Card</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_if_expr">python:1</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="sc_pin" meta_type="Scratchcard Pin Widget">
+  <property name="title">SC PIN</property>
+  <property name="fields">
+   <element value="sc_pin"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">enter  PIN</property>
+  <property name="label_edit">Enter Hostel Payment PIN</property>
+  <property name="help">Enter PIN valid for Paying Hostel Fee</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_value" meta_type="Float Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="sc_value"/>
+  </property>
+  <property name="label">SC Value</property>
+  <property name="label_edit">Scratcard Value</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="sc_value"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/admission.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/admission.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/admission.xml	(revision 276)
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<object name="admission" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_sc_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="jamb_id" meta_type="StudentId Widget">
+  <property name="title">Registration Number</property>
+  <property name="fields">
+   <element value="reg_nr"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Registration Number</property>
+  <property name="label_edit">Registration Number</property>
+  <property
+     name="help">This is the combination of 8 digits and 2 letters you are assigned when you purchase an examination form.</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="title">SC ID</property>
+  <property name="fields">
+   <element value="sc_id"/>
+  </property>
+  <property name="label">Card Serial Number </property>
+  <property name="label_edit">Card Serial Number</property>
+  <property name="description">Card Serial Number </property>
+  <property
+     name="help">This can be found on the bottom right of the reverse side of your Scratch Card</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="sc_pin" meta_type="Scratchcard Pin Widget">
+  <property name="title">SC PIN</property>
+  <property name="fields">
+   <element value="sc_pin"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">PIN</property>
+  <property name="label_edit">PIN</property>
+  <property
+     name="help">PIN-(Personal Identification Number) is an 8 or 12 digit number on the reverse side of the scratch card which you can purchase from many Banks</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_value" meta_type="Float Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="sc_value"/>
+  </property>
+  <property name="label">SC Value</property>
+  <property name="label_edit">Scratcard Value</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="sc_value"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+  <row>
+   <cell name="jamb_id"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/admission_slip.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/admission_slip.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/admission_slip.xml	(revision 276)
@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<object name="admission_slip" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="age" meta_type="Int Widget">
+  <property name="fields">
+   <element value="age"/>
+  </property>
+  <property name="label">Age</property>
+  <property name="label_edit">Age</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="aggregate" meta_type="String Widget">
+  <property name="title">Agregate</property>
+  <property name="fields">
+   <element value="aggregate"/>
+  </property>
+  <property name="label">JAMB Score</property>
+  <property name="label_edit">JAMB Score</property>
+ </widget>
+ <widget name="course" meta_type="Select Widget">
+  <property name="title">Study Course</property>
+  <property name="fields">
+   <element value="course"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Study Course</property>
+  <property name="label_edit">Study Course</property>
+  <property name="vocabulary">get_departments_voc</property>
+ </widget>
+ <widget name="exam_results" meta_type="String Widget">
+  <property name="fields">
+   <element value="exam_results"/>
+  </property>
+  <property name="label">JAMB Results</property>
+  <property name="label_edit">JAMB Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="faculty" meta_type="Select Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="vocabulary">get_faculties_voc</property>
+ </widget>
+ <widget name="firstname" meta_type="String Widget">
+  <property name="title">First Name</property>
+  <property name="fields">
+   <element value="firstname"/>
+  </property>
+  <property name="label">First Name</property>
+  <property name="label_edit">First Name</property>
+  <property name="description">First Name</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="listing_date" meta_type="Date Widget">
+  <property name="title">Listing Date</property>
+  <property name="fields">
+   <element value="listing_date"/>
+  </property>
+  <property name="label">Listing Date</property>
+  <property name="label_edit">Listing Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="middlename" meta_type="String Widget">
+  <property name="fields">
+   <element value="middlename"/>
+  </property>
+  <property name="label">Middle Name</property>
+  <property name="label_edit">Middle Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_empty">True</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="reg_nr" meta_type="StudentId Widget">
+  <property name="title">registration nr</property>
+  <property name="fields">
+   <element value="reg_nr"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Registration Nr</property>
+  <property name="label_edit">Registration Nr</property>
+  <property name="description">The student id from JAMB</property>
+  <property name="help">The Student ID from JAMB</property>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="fields">
+   <element value="admission_sc_id"/>
+  </property>
+  <property name="label">Scratch card ID used</property>
+  <property name="label_edit">Scratch card ID used</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="sc_pin" meta_type="String Widget">
+  <property name="fields">
+   <element value="admission_sc_pin"/>
+  </property>
+  <property name="label">Scratch Card PIN</property>
+  <property name="label_edit">Scratch Card PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="sex" meta_type="Boolean Widget">
+  <property name="fields">
+   <element value="sex"/>
+  </property>
+  <property name="label">Sex</property>
+  <property name="label_edit">Sex</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="label_false">male</property>
+  <property name="label_true">female</property>
+ </widget>
+ <widget name="state" meta_type="Select Widget">
+  <property name="fields">
+   <element value="state"/>
+  </property>
+  <property name="label">State of Origin</property>
+  <property name="label_edit">State of Origin</property>
+  <property name="vocabulary">nigerian_states</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="reg_nr"/>
+  </row>
+  <row>
+   <cell name="firstname"/>
+  </row>
+  <row>
+   <cell name="middlename"/>
+  </row>
+  <row>
+   <cell name="lastname"/>
+  </row>
+  <row>
+   <cell name="age"/>
+  </row>
+  <row>
+   <cell name="sex"/>
+  </row>
+  <row>
+   <cell name="state"/>
+  </row>
+  <row>
+   <cell name="aggregate"/>
+  </row>
+  <row>
+   <cell name="faculty"/>
+  </row>
+  <row>
+   <cell name="course"/>
+  </row>
+  <row>
+   <cell name="listing_date"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/admission_status.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/admission_status.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/admission_status.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="admission_status" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_admission_status_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="quick_search" meta_type="String Widget">
+  <property name="title">A search string</property>
+  <property name="fields">
+   <element value="admission_sc_id"/>
+  </property>
+  <property name="label">Quick Search</property>
+  <property name="label_edit">Quick Search</property>
+  <property name="description">Search</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_if_expr">python:0</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="quick_search" ncols="2"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/certificate.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/certificate.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/certificate.xml	(revision 276)
@@ -0,0 +1,225 @@
+<?xml version="1.0"?>
+<object name="certificate" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_default_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="admin_status" meta_type="String Widget">
+  <property name="title">Admin Status</property>
+  <property name="fields">
+   <element value="admin_status"/>
+  </property>
+  <property name="label">Admin Status</property>
+  <property name="label_edit">Admin Status</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="category" meta_type="String Widget">
+  <property name="title">Category</property>
+  <property name="fields">
+   <element value="category"/>
+  </property>
+  <property name="label">Category</property>
+  <property name="label_edit">Category</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="code" meta_type="String Widget">
+  <property name="title">Code</property>
+  <property name="fields">
+   <element value="code"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Code</property>
+  <property name="label_edit">Code</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="size_max">20</property>
+ </widget>
+ <widget name="department" meta_type="Select Widget">
+  <property name="title">Department</property>
+  <property name="fields">
+   <element value="department"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Department</property>
+  <property name="label_edit">Department</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">get_departments_voc</property>
+ </widget>
+ <widget name="end_level" meta_type="Select Widget">
+  <property name="title">End Level</property>
+  <property name="fields">
+   <element value="end_level"/>
+  </property>
+  <property name="label">End Level</property>
+  <property name="label_edit">End Level</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">courselevel</property>
+ </widget>
+ <widget name="faculty" meta_type="Select Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">get_faculties_voc</property>
+ </widget>
+ <widget name="heading" meta_type="String Widget">
+  <property name="title">Heading</property>
+  <property name="fields">
+   <element value="heading"/>
+  </property>
+  <property name="label">Title</property>
+  <property name="label_edit">Title</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="m_prefix" meta_type="String Widget">
+  <property name="title">MPrefix</property>
+  <property name="fields">
+   <element value="m_prefix"/>
+  </property>
+  <property name="label">MPrefix</property>
+  <property name="label_edit">MPrefix</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="max_load" meta_type="Int Widget">
+  <property name="title">Maximum Load</property>
+  <property name="fields">
+   <element value="max_load"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Maximum Load</property>
+  <property name="label_edit">Maximum Load</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="max_pass" meta_type="Int Widget">
+  <property name="title">Maximum Pass</property>
+  <property name="fields">
+   <element value="max_pass"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Maximum Pass</property>
+  <property name="label_edit">Maximum Pass</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="n_core" meta_type="Int Widget">
+  <property name="title">NCore</property>
+  <property name="fields">
+   <element value="n_core"/>
+  </property>
+  <property name="label">NCore</property>
+  <property name="label_edit">NCore</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="nr_years" meta_type="Int Widget">
+  <property name="title">Nr of Years</property>
+  <property name="fields">
+   <element value="nr_years"/>
+  </property>
+  <property name="label">Nr of Years</property>
+  <property name="label_edit">Nr of Years</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="probation_credits" meta_type="Int Widget">
+  <property name="title">Probation  Credits</property>
+  <property name="fields">
+   <element value="probation_credits"/>
+  </property>
+  <property name="label">Probation  Credits</property>
+  <property name="label_edit">Probation  Credits</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="promotion_credits" meta_type="Int Widget">
+  <property name="title">Promotion  Credits</property>
+  <property name="fields">
+   <element value="promotion_credits"/>
+  </property>
+  <property name="label">Promotion  Credits</property>
+  <property name="label_edit">Promotion  Credits</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="start_level" meta_type="Select Widget">
+  <property name="title">Start Level</property>
+  <property name="fields">
+   <element value="start_level"/>
+  </property>
+  <property name="label">Start Level</property>
+  <property name="label_edit">Start Level</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="vocabulary">courselevel</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="code"/>
+  </row>
+  <row>
+   <cell name="faculty"/>
+  </row>
+  <row>
+   <cell name="department"/>
+  </row>
+  <row>
+   <cell name="start_level"/>
+  </row>
+  <row>
+   <cell name="end_level"/>
+  </row>
+  <row>
+   <cell name="max_pass"/>
+  </row>
+  <row>
+   <cell name="promotion_credits"/>
+  </row>
+  <row>
+   <cell name="probation_credits"/>
+  </row>
+  <row>
+   <cell name="admin_status"/>
+  </row>
+  <row>
+   <cell name="category"/>
+  </row>
+  <row>
+   <cell name="m_prefix"/>
+  </row>
+  <row>
+   <cell name="nr_years"/>
+  </row>
+  <row>
+   <cell name="n_core"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/certificate_course.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/certificate_course.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/certificate_course.xml	(revision 276)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<object name="certificate_course" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="admin_status" meta_type="String Widget">
+  <property name="title">Admin Status</property>
+  <property name="fields">
+   <element value="admin_status"/>
+  </property>
+  <property name="label">Admin Status</property>
+  <property name="label_edit">Admin Status</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="certificate_code" meta_type="String Widget">
+  <property name="title">Certificate code</property>
+  <property name="fields">
+   <element value="certificate_code"/>
+  </property>
+  <property name="label">Certificate code</property>
+  <property name="label_edit">Certificate code</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="certificate_code_org" meta_type="String Widget">
+  <property name="title">Certificate original code</property>
+  <property name="fields">
+   <element value="certificate_code_org"/>
+  </property>
+  <property name="label">Certificate original code</property>
+  <property name="label_edit">Certificate original code</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="code" meta_type="String Widget">
+  <property name="title">Code</property>
+  <property name="fields">
+   <element value="code"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Code</property>
+  <property name="label_edit">Code</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="core_or_elective" meta_type="Boolean Widget">
+  <property name="title">Core or Elective</property>
+  <property name="fields">
+   <element value="core_or_elective"/>
+  </property>
+  <property name="label">Core or Elective</property>
+  <property name="label_edit">Core or Elective</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="label_false">elective</property>
+  <property name="label_true">core</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="code"/>
+  </row>
+  <row>
+   <cell name="certificate_code"/>
+  </row>
+  <row>
+   <cell name="certificate_code_org"/>
+  </row>
+  <row>
+   <cell name="core_or_elective"/>
+  </row>
+  <row>
+   <cell name="admin_status"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/clearance.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/clearance.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/clearance.xml	(revision 276)
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<object name="clearance" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_sc_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="jamb_id" meta_type="StudentId Widget">
+  <property name="title">Registration Number</property>
+  <property name="fields">
+   <element value="reg_nr"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Registration Number</property>
+  <property name="label_edit">Registration Number</property>
+  <property
+     name="help">This is the combination of 8 digits and 2 letters you are assigned when you purchase an examination form.</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="title">SC ID</property>
+  <property name="fields">
+   <element value="sc_id"/>
+  </property>
+  <property name="label">Card Serial Number </property>
+  <property name="label_edit">Card Serial Number</property>
+  <property name="description">Card Serial Number </property>
+  <property
+     name="help">This can be found on the bottom right of the reverse side of your Scratch Card</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_if_expr">python:1</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="sc_pin" meta_type="Scratchcard Pin Widget">
+  <property name="title">SC PIN</property>
+  <property name="fields">
+   <element value="sc_pin"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">PIN</property>
+  <property name="label_edit">PIN</property>
+  <property
+     name="help">PIN-(Personal Identification Number) is an 8 or 12 digit number on the reverse side of the scratch card which you can purchase from many Banks</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_value" meta_type="Float Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="sc_value"/>
+  </property>
+  <property name="label">SC Value</property>
+  <property name="label_edit">Scratcard Value</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="sc_value"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+  <row>
+   <cell name="jamb_id"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/clearence.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/clearence.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/clearence.xml	(revision 276)
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<object name="clearence" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_sc_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="jamb_id" meta_type="StudentId Widget">
+  <property name="title">Registration Number</property>
+  <property name="fields">
+   <element value="reg_nr"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Registration Number</property>
+  <property name="label_edit">Registration Number</property>
+  <property
+     name="help">This is the combination of 8 digits and 2 letters you are assigned when you purchase an examination form.</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="title">SC ID</property>
+  <property name="fields">
+   <element value="sc_id"/>
+  </property>
+  <property name="label">Card Serial Number </property>
+  <property name="label_edit">Card Serial Number</property>
+  <property name="description">Card Serial Number </property>
+  <property
+     name="help">This can be found on the bottom right of the reverse side of your Scratch Card</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_if_expr">python:1</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="sc_pin" meta_type="Scratchcard Pin Widget">
+  <property name="title">SC Pin</property>
+  <property name="fields">
+   <element value="sc_pin"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">PIN</property>
+  <property name="label_edit">PIN</property>
+  <property
+     name="help">PIN-(Personal Identification Number) is an 8 or 12 digit number on the reverse side of the scratch card which you can purchase from many Banks</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_value" meta_type="Float Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="sc_value"/>
+  </property>
+  <property name="label">SC Value</property>
+  <property name="label_edit">Scratcard Value</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="sc_value"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+  <row>
+   <cell name="jamb_id"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/course.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/course.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/course.xml	(revision 276)
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<object name="course" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="category" meta_type="String Widget">
+  <property name="title">Category</property>
+  <property name="fields">
+   <element value="category"/>
+  </property>
+  <property name="label">Category</property>
+  <property name="label_edit">Category</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="code" meta_type="String Widget">
+  <property name="title">Code</property>
+  <property name="fields">
+   <element value="code"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Code</property>
+  <property name="label_edit">Code</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="credits" meta_type="Int Widget">
+  <property name="title">Credits</property>
+  <property name="fields">
+   <element value="credits"/>
+  </property>
+  <property name="label">Credits</property>
+  <property name="label_edit">Credits</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="org_code" meta_type="String Widget">
+  <property name="title">Original Code</property>
+  <property name="fields">
+   <element value="org_code"/>
+  </property>
+  <property name="label">Original Code</property>
+  <property name="label_edit">Original Code</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="passmark" meta_type="Int Widget">
+  <property name="title">Passmark</property>
+  <property name="fields">
+   <element value="passmark"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Passmark</property>
+  <property name="label_edit">Passmark</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="semester" meta_type="Int Widget">
+  <property name="title">Nr of semesters</property>
+  <property name="fields">
+   <element value="semester"/>
+  </property>
+  <property name="label">Nr of semesters</property>
+  <property name="label_edit">Nr of semesters</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="code"/>
+  </row>
+  <row>
+   <cell name="org_code"/>
+  </row>
+  <row>
+   <cell name="category"/>
+  </row>
+  <row>
+   <cell name="credits"/>
+  </row>
+  <row>
+   <cell name="semester"/>
+  </row>
+  <row>
+   <cell name="passmark"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/department.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/department.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/department.xml	(revision 276)
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<object name="department" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="Description" meta_type="Text Widget">
+  <property name="fields">
+   <element value="Description"/>
+  </property>
+  <property name="label">Description</property>
+  <property name="label_edit">Description</property>
+  <property name="is_i18n">True</property>
+  <property name="hidden_layout_modes"/>
+  <property name="css_class">description</property>
+  <property name="width">72</property>
+ </widget>
+ <widget name="Title" meta_type="String Widget">
+  <property name="fields">
+   <element value="Title"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Title</property>
+  <property name="label_edit">Title</property>
+  <property name="display_width">40</property>
+  <property name="size_max">200</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="Title"/>
+  </row>
+  <row>
+   <cell name="Description"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/faculty.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/faculty.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/faculty.xml	(revision 276)
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<object name="faculty" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="Description" meta_type="Text Widget">
+  <property name="fields">
+   <element value="Description"/>
+  </property>
+  <property name="label">Description</property>
+  <property name="label_edit">Description</property>
+  <property name="is_i18n">True</property>
+  <property name="hidden_layout_modes"/>
+  <property name="css_class">description</property>
+  <property name="width">72</property>
+ </widget>
+ <widget name="Title" meta_type="String Widget">
+  <property name="fields">
+   <element value="Title"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Title</property>
+  <property name="label_edit">Title</property>
+  <property name="display_width">40</property>
+  <property name="size_max">200</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="Title"/>
+  </row>
+  <row>
+   <cell name="Description"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/jamb.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/jamb.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/jamb.xml	(revision 276)
@@ -0,0 +1,197 @@
+<?xml version="1.0"?>
+<object name="jamb" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="age" meta_type="Int Widget">
+  <property name="fields">
+   <element value="age"/>
+  </property>
+  <property name="label">Age</property>
+  <property name="label_edit">Age</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="aggregate" meta_type="String Widget">
+  <property name="title">Agregate</property>
+  <property name="fields">
+   <element value="aggregate"/>
+  </property>
+  <property name="label">JAMB Score</property>
+  <property name="label_edit">JAMB Score</property>
+ </widget>
+ <widget name="course" meta_type="Select Widget">
+  <property name="title">Study Course</property>
+  <property name="fields">
+   <element value="course"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Study Course</property>
+  <property name="label_edit">Study Course</property>
+  <property name="vocabulary">get_departments_voc</property>
+ </widget>
+ <widget name="exam_results" meta_type="String Widget">
+  <property name="fields">
+   <element value="exam_results"/>
+  </property>
+  <property name="label">JAMB Results</property>
+  <property name="label_edit">JAMB Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="faculty" meta_type="Select Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="vocabulary">get_faculties_voc</property>
+ </widget>
+ <widget name="firstname" meta_type="String Widget">
+  <property name="title">First Name</property>
+  <property name="fields">
+   <element value="firstname"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">First Name</property>
+  <property name="label_edit">First Name</property>
+  <property name="description">First Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="listing_date" meta_type="Date Widget">
+  <property name="title">Listing Date</property>
+  <property name="fields">
+   <element value="listing_date"/>
+  </property>
+  <property name="label">Listing Date</property>
+  <property name="label_edit">Listing Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="middlename" meta_type="String Widget">
+  <property name="fields">
+   <element value="middlename"/>
+  </property>
+  <property name="label">Middle Name</property>
+  <property name="label_edit">Middle Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_empty">True</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="reg_nr" meta_type="StudentId Widget">
+  <property name="title">registration nr</property>
+  <property name="fields">
+   <element value="reg_nr"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Registration Nr</property>
+  <property name="label_edit">Registration Nr</property>
+  <property name="description">The student id from JAMB</property>
+  <property name="help">The Student ID from JAMB</property>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="fields">
+   <element value="admission_sc_id"/>
+  </property>
+  <property name="label">Scratch card ID used</property>
+  <property name="label_edit">Scratch card ID used</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="sc_pin" meta_type="String Widget">
+  <property name="fields">
+   <element value="admission_sc_pin"/>
+  </property>
+  <property name="label">Scratch Card PIN</property>
+  <property name="label_edit">Scratch Card PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="sex" meta_type="Boolean Widget">
+  <property name="fields">
+   <element value="sex"/>
+  </property>
+  <property name="label">Sex</property>
+  <property name="label_edit">Sex</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="label_false">male</property>
+  <property name="label_true">female</property>
+ </widget>
+ <widget name="state" meta_type="Select Widget">
+  <property name="fields">
+   <element value="state"/>
+  </property>
+  <property name="label">State of Origin</property>
+  <property name="label_edit">State of Origin</property>
+  <property name="vocabulary">nigerian_states</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="reg_nr"/>
+  </row>
+  <row>
+   <cell name="firstname"/>
+  </row>
+  <row>
+   <cell name="middlename"/>
+  </row>
+  <row>
+   <cell name="lastname"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+  <row>
+   <cell name="age"/>
+  </row>
+  <row>
+   <cell name="sex"/>
+  </row>
+  <row>
+   <cell name="state"/>
+  </row>
+  <row>
+   <cell name="aggregate"/>
+  </row>
+  <row>
+   <cell name="faculty"/>
+  </row>
+  <row>
+   <cell name="course"/>
+  </row>
+  <row>
+   <cell name="listing_date"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/jambcreate.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/jambcreate.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/jambcreate.xml	(revision 276)
@@ -0,0 +1,194 @@
+<?xml version="1.0"?>
+<object name="jambcreate" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_jambcreate_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="age" meta_type="Int Widget">
+  <property name="fields">
+   <element value="age"/>
+  </property>
+  <property name="label">Age</property>
+  <property name="label_edit">Age</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="aggregate" meta_type="String Widget">
+  <property name="title">Agregate</property>
+  <property name="fields">
+   <element value="aggregate"/>
+  </property>
+  <property name="label">JAMB Score</property>
+  <property name="label_edit">JAMB Score</property>
+ </widget>
+ <widget name="course" meta_type="Select Widget">
+  <property name="title">Study Course</property>
+  <property name="fields">
+   <element value="course"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Study Course</property>
+  <property name="label_edit">Study Course</property>
+  <property name="vocabulary">get_departments_voc</property>
+ </widget>
+ <widget name="exam_results" meta_type="String Widget">
+  <property name="fields">
+   <element value="exam_results"/>
+  </property>
+  <property name="label">JAMB Results</property>
+  <property name="label_edit">JAMB Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="faculty" meta_type="Select Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="vocabulary">get_faculties_voc</property>
+ </widget>
+ <widget name="firstname" meta_type="String Widget">
+  <property name="title">First Name</property>
+  <property name="fields">
+   <element value="firstname"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">First Name</property>
+  <property name="label_edit">First Name</property>
+  <property name="description">First Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="listing_date" meta_type="Date Widget">
+  <property name="title">Listing Date</property>
+  <property name="fields">
+   <element value="listing_date"/>
+  </property>
+  <property name="label">Listing Date</property>
+  <property name="label_edit">Listing Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="middlename" meta_type="String Widget">
+  <property name="fields">
+   <element value="middlename"/>
+  </property>
+  <property name="label">Middle Name</property>
+  <property name="label_edit">Middle Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_empty">True</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="reg_nr" meta_type="StudentId Widget">
+  <property name="title">registration nr</property>
+  <property name="fields">
+   <element value="reg_nr"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Registration Nr</property>
+  <property name="label_edit">Registration Nr</property>
+  <property name="description">The student id from JAMB</property>
+  <property name="help">The Student ID from JAMB</property>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="fields">
+   <element value="admission_sc_id"/>
+  </property>
+  <property name="label">Scratch card ID used</property>
+  <property name="label_edit">Scratch card ID used</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="sc_pin" meta_type="String Widget">
+  <property name="fields">
+   <element value="admission_sc_pin"/>
+  </property>
+  <property name="label">Scratch Card PIN</property>
+  <property name="label_edit">Scratch Card PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="sex" meta_type="Boolean Widget">
+  <property name="fields">
+   <element value="sex"/>
+  </property>
+  <property name="label">Sex</property>
+  <property name="label_edit">Sex</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="label_false">male</property>
+  <property name="label_true">female</property>
+ </widget>
+ <widget name="state" meta_type="Select Widget">
+  <property name="fields">
+   <element value="state"/>
+  </property>
+  <property name="label">State of Origin</property>
+  <property name="label_edit">State of Origin</property>
+  <property name="vocabulary">nigerian_states</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="reg_nr"/>
+  </row>
+  <row>
+   <cell name="firstname"/>
+  </row>
+  <row>
+   <cell name="middlename"/>
+  </row>
+  <row>
+   <cell name="lastname"/>
+  </row>
+  <row>
+   <cell name="age"/>
+  </row>
+  <row>
+   <cell name="sex"/>
+  </row>
+  <row>
+   <cell name="state"/>
+  </row>
+  <row>
+   <cell name="aggregate"/>
+  </row>
+  <row>
+   <cell name="faculty"/>
+  </row>
+  <row>
+   <cell name="course"/>
+  </row>
+  <row>
+   <cell name="listing_date"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student.xml	(revision 276)
@@ -0,0 +1,281 @@
+<?xml version="1.0"?>
+<object name="student" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="accommodation" meta_type="String Widget">
+  <property name="title">Accommodation</property>
+  <property name="fields">
+   <element value="accommodation"/>
+  </property>
+  <property name="label">Accommodation</property>
+  <property name="label_edit">Accommodation</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="accommodation_date" meta_type="DateTime Widget">
+  <property name="title">Accommodation SC PIN</property>
+  <property name="fields">
+   <element value="accommodation_date"/>
+  </property>
+  <property name="label">Accommodation SC Date</property>
+  <property name="label_edit">Accommodation SC Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="accommodation_sc_id" meta_type="String Widget">
+  <property name="title">Accommodation SC ID</property>
+  <property name="fields">
+   <element value="accommodation_sc_id"/>
+  </property>
+  <property name="label">Accommodation SC ID</property>
+  <property name="label_edit">Accommodation SC ID</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="accommodation_sc_pin" meta_type="String Widget">
+  <property name="title">Accommodation SC PIN</property>
+  <property name="fields">
+   <element value="accommodation_sc_pin"/>
+  </property>
+  <property name="label">Accommodation SC PIN</property>
+  <property name="label_edit">Accommodation SC PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="accommodation_sc_value" meta_type="Float Widget">
+  <property name="title">Accommodation SC Value</property>
+  <property name="fields">
+   <element value="accommodation_sc_value"/>
+  </property>
+  <property name="label">Accommodation SC Value</property>
+  <property name="label_edit">Accommodation SC Value</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="adm_check_date" meta_type="DateTime Widget">
+  <property name="title">Admission check SC PIN</property>
+  <property name="fields">
+   <element value="adm_check_date"/>
+  </property>
+  <property name="label">Admission check SC Date</property>
+  <property name="label_edit">Admission check SC Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="adm_check_sc_id" meta_type="String Widget">
+  <property name="title">Admission check SC ID</property>
+  <property name="fields">
+   <element value="adm_check_sc_id"/>
+  </property>
+  <property name="label">Admission check SC ID</property>
+  <property name="label_edit">Admission check SC ID</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="adm_check_sc_pin" meta_type="String Widget">
+  <property name="title">Admission check SC PIN</property>
+  <property name="fields">
+   <element value="adm_check_sc_pin"/>
+  </property>
+  <property name="label">Admission check SC PIN</property>
+  <property name="label_edit">Admission check SC PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="adm_check_sc_value" meta_type="Float Widget">
+  <property name="title">Admission check SC Value</property>
+  <property name="fields">
+   <element value="adm_check_sc_value"/>
+  </property>
+  <property name="label">Admission check SC Value</property>
+  <property name="label_edit">Admission check SC Value</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="clearance_date" meta_type="DateTime Widget">
+  <property name="title">clearance SC PIN</property>
+  <property name="fields">
+   <element value="clearance_date"/>
+  </property>
+  <property name="label">Clearance SC Date</property>
+  <property name="label_edit">Clearance SC Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="clearance_sc_id" meta_type="String Widget">
+  <property name="title">Clearance SC ID</property>
+  <property name="fields">
+   <element value="clearance_sc_id"/>
+  </property>
+  <property name="label">Clearance SC ID</property>
+  <property name="label_edit">Clearance SC ID</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="clearance_sc_pin" meta_type="String Widget">
+  <property name="title">clearance SC PIN</property>
+  <property name="fields">
+   <element value="clearance_sc_pin"/>
+  </property>
+  <property name="label">Clearance SC PIN</property>
+  <property name="label_edit">Clearance SC PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="clearance_sc_value" meta_type="Float Widget">
+  <property name="title">clearance SC Value</property>
+  <property name="fields">
+   <element value="clearance_sc_value"/>
+  </property>
+  <property name="label">Clearance SC Value</property>
+  <property name="label_edit">Clearance SC Value</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="faculty" meta_type="String Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="hostel_fee_date" meta_type="DateTime Widget">
+  <property name="title">hostel_fee SC PIN</property>
+  <property name="fields">
+   <element value="hostel_fee_date"/>
+  </property>
+  <property name="label">Hostel Fee SC Date</property>
+  <property name="label_edit">Hostel Fee SC Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="hostel_fee_sc_id" meta_type="String Widget">
+  <property name="title">hostel_fee SC ID</property>
+  <property name="fields">
+   <element value="hostel_fee_sc_id"/>
+  </property>
+  <property name="label">Hostel Fee SC ID</property>
+  <property name="label_edit">Hostel Fee SC ID</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="hostel_fee_sc_pin" meta_type="String Widget">
+  <property name="title">hostel_fee SC PIN</property>
+  <property name="fields">
+   <element value="hostel_fee_sc_pin"/>
+  </property>
+  <property name="label">Hostel Fee SC PIN</property>
+  <property name="label_edit">Hostel Fee SC PIN</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="hostel_fee_sc_value" meta_type="Float Widget">
+  <property name="title">hostel_fee SC Value</property>
+  <property name="fields">
+   <element value="hostel_fee_sc_value"/>
+  </property>
+  <property name="label">Hostel Fee SC Value</property>
+  <property name="label_edit">Hostel Fee SC Value</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="jamb_is_admitted" meta_type="Boolean Widget">
+  <property name="title">JAMB Admission</property>
+  <property name="fields">
+   <element value="jamb_is_admitted"/>
+  </property>
+  <property name="label">JAMB Admission</property>
+  <property name="label_edit">JAMB Admission</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="adm_check_sc_id"/>
+  </row>
+  <row>
+   <cell name="adm_check_sc_pin"/>
+  </row>
+  <row>
+   <cell name="adm_check_sc_value"/>
+  </row>
+  <row>
+   <cell name="adm_check_date"/>
+  </row>
+  <row>
+   <cell name="clearance_sc_id"/>
+  </row>
+  <row>
+   <cell name="clearance_sc_pin"/>
+  </row>
+  <row>
+   <cell name="clearance_sc_value"/>
+  </row>
+  <row>
+   <cell name="clearance_date"/>
+  </row>
+  <row>
+   <cell name="accommodation"/>
+  </row>
+  <row>
+   <cell name="accommodation_sc_id"/>
+  </row>
+  <row>
+   <cell name="accommodation_sc_pin"/>
+  </row>
+  <row>
+   <cell name="accommodation_sc_value"/>
+  </row>
+  <row>
+   <cell name="accommodation_date"/>
+  </row>
+  <row>
+   <cell name="hostel_fee_sc_id"/>
+  </row>
+  <row>
+   <cell name="hostel_fee_sc_pin"/>
+  </row>
+  <row>
+   <cell name="hostel_fee_sc_value"/>
+  </row>
+  <row>
+   <cell name="hostel_fee_date"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_documents.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_documents.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_documents.xml	(revision 276)
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<object name="student_documents" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_personal_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="birth_certificate" meta_type="Image Widget">
+  <property name="fields">
+   <element value="birth_certificate"/>
+  </property>
+  <property name="label">Birth Certificate</property>
+  <property name="label_edit">Birth Certificate</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="size_max">204800</property>
+  <property name="display_width">300</property>
+  <property name="display_height">600</property>
+  <property name="allow_resize">True</property>
+ </widget>
+ <widget name="passport" meta_type="Image Widget">
+  <property name="fields">
+   <element value="passport"/>
+  </property>
+  <property name="label">Scanned Passport</property>
+  <property name="label_edit">Scanned Passport</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="size_max">204800</property>
+  <property name="display_width">300</property>
+  <property name="display_height">600</property>
+  <property name="allow_resize">True</property>
+ </widget>
+ <widget name="photo" meta_type="Photo Widget">
+  <property name="fields">
+   <element value="photo"/>
+  </property>
+  <property name="label">Personal Picture</property>
+  <property name="label_edit">Personal Picture</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="size_max">204800</property>
+  <property name="display_width">90</property>
+  <property name="display_height">180</property>
+ </widget>
+ <widget name="results_first" meta_type="Image Widget">
+  <property name="fields">
+   <element value="results_first"/>
+  </property>
+  <property name="label">1st Sitting Results</property>
+  <property name="label_edit">1st Sitting Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="size_max">204800</property>
+  <property name="display_width">300</property>
+  <property name="display_height">600</property>
+  <property name="allow_resize">True</property>
+ </widget>
+ <widget name="results_second" meta_type="Image Widget">
+  <property name="fields">
+   <element value="results_second"/>
+  </property>
+  <property name="label">2nd Sitting Results</property>
+  <property name="label_edit">2nd Sitting Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="size_max">40960</property>
+  <property name="display_width">300</property>
+  <property name="display_height">600</property>
+  <property name="allow_resize">True</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="photo"/>
+  </row>
+  <row>
+   <cell name="birth_certificate"/>
+  </row>
+  <row>
+   <cell name="passport"/>
+  </row>
+  <row>
+   <cell name="results_first"/>
+  </row>
+  <row>
+   <cell name="results_second"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_eligibility.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_eligibility.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_eligibility.xml	(revision 276)
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<object name="student_eligibility" meta_type="CPS Layout">
+ <property name="layout_create_method">layout_eligibility_create</property>
+ <property name="layout_edit_method">layout_eligibility_create</property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="course" meta_type="Select Widget">
+  <property name="title">Study Course</property>
+  <property name="fields">
+   <element value="course"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Study Course</property>
+  <property name="label_edit">Study Course</property>
+  <property name="help">The course to study</property>
+  <property name="vocabulary">get_departments_voc</property>
+ </widget>
+ <widget name="faculty" meta_type="Select Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="vocabulary">get_faculties_voc</property>
+ </widget>
+ <widget name="jamb_aggregate" meta_type="String Widget">
+  <property name="title">Aggregate</property>
+  <property name="fields">
+   <element value="jamb_aggregate"/>
+  </property>
+  <property name="label">JAMB Score</property>
+  <property name="label_edit">JAMB Score</property>
+ </widget>
+ <widget name="jamb_listing_date" meta_type="Date Widget">
+  <property name="title">Listing Date</property>
+  <property name="fields">
+   <element value="jamb_listing_date"/>
+  </property>
+  <property name="label">Listing Date</property>
+  <property name="label_edit">Listing Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="jamb_results" meta_type="String Widget">
+  <property name="fields">
+   <element value="jamb_results"/>
+  </property>
+  <property name="label">JAMB Results</property>
+  <property name="label_edit">JAMB Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="schoolresults" meta_type="Ordered List Widget">
+  <property name="fields">
+   <element value="schoolresults"/>
+  </property>
+  <property name="label">School Results</property>
+  <property name="label_edit">School Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes">
+   <element value="create"/>
+   <element value="edit"/>
+  </property>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="jamb_aggregate"/>
+  </row>
+  <row>
+   <cell name="faculty"/>
+  </row>
+  <row>
+   <cell name="course"/>
+  </row>
+  <row>
+   <cell name="schoolresults"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_eligibility_edit.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_eligibility_edit.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_eligibility_edit.xml	(revision 276)
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<object name="student_eligibility_edit" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_eligibility_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="course" meta_type="Select Widget">
+  <property name="title">Study Course</property>
+  <property name="fields">
+   <element value="course"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Study Course</property>
+  <property name="label_edit">Study Course</property>
+  <property name="help">The course to study</property>
+  <property name="vocabulary">get_departments_voc</property>
+ </widget>
+ <widget name="faculty" meta_type="Select Widget">
+  <property name="title">Faculty</property>
+  <property name="fields">
+   <element value="faculty"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Faculty</property>
+  <property name="label_edit">Faculty</property>
+  <property name="vocabulary">get_faculties_voc</property>
+ </widget>
+ <widget name="jamb_aggregate" meta_type="String Widget">
+  <property name="title">Aggregate</property>
+  <property name="fields">
+   <element value="jamb_aggregate"/>
+  </property>
+  <property name="label">JAMB Score</property>
+  <property name="label_edit">JAMB Score</property>
+ </widget>
+ <widget name="jamb_listing_date" meta_type="Date Widget">
+  <property name="title">Listing Date</property>
+  <property name="fields">
+   <element value="jamb_listing_date"/>
+  </property>
+  <property name="label">Listing Date</property>
+  <property name="label_edit">Listing Date</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="jamb_results" meta_type="String Widget">
+  <property name="fields">
+   <element value="jamb_results"/>
+  </property>
+  <property name="label">JAMB Results</property>
+  <property name="label_edit">JAMB Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="schoolresults" meta_type="Ordered List Widget">
+  <property name="fields">
+   <element value="schoolresults"/>
+  </property>
+  <property name="label">School Results</property>
+  <property name="label_edit">School Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes">
+   <element value="create"/>
+   <element value="edit"/>
+  </property>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="jamb_aggregate"/>
+  </row>
+  <row>
+   <cell name="faculty"/>
+  </row>
+  <row>
+   <cell name="course"/>
+  </row>
+  <row>
+   <cell name="schoolresults"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_personal.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_personal.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_personal.xml	(revision 276)
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<object name="student_personal" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_personal_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="birthday" meta_type="Date Widget">
+  <property name="fields">
+   <element value="birthday"/>
+  </property>
+  <property name="label">Day of birth</property>
+  <property name="label_edit">Day of birth</property>
+  <property name="description">Day of birth</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <widget name="email" meta_type="Email Widget">
+  <property name="title">Email</property>
+  <property name="fields">
+   <element value="email"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Email</property>
+  <property name="label_edit">Email</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="firstname" meta_type="String Widget">
+  <property name="title">First Name</property>
+  <property name="fields">
+   <element value="firstname"/>
+  </property>
+  <property name="label">First Name</property>
+  <property name="label_edit">First Name</property>
+  <property name="description">First Name</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="middlename" meta_type="String Widget">
+  <property name="fields">
+   <element value="middlename"/>
+  </property>
+  <property name="label">Middle Name</property>
+  <property name="label_edit">Middle Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_empty">True</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="sex" meta_type="Boolean Widget">
+  <property name="fields">
+   <element value="sex"/>
+  </property>
+  <property name="label">Sex</property>
+  <property name="label_edit">Sex</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="label_false">male</property>
+  <property name="label_true">female</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="firstname"/>
+  </row>
+  <row>
+   <cell name="middlename"/>
+  </row>
+  <row>
+   <cell name="lastname"/>
+  </row>
+  <row>
+   <cell name="email"/>
+  </row>
+  <row>
+   <cell name="sex"/>
+  </row>
+  <row>
+   <cell name="birthday"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_personal_addon.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_personal_addon.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_personal_addon.xml	(revision 276)
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<object name="student_personal_addon" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_eligibility_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="email" meta_type="Email Widget">
+  <property name="title">Email</property>
+  <property name="fields">
+   <element value="email"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Email</property>
+  <property name="label_edit">Email</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="firstname" meta_type="String Widget">
+  <property name="fields">
+   <element value="middlename"/>
+  </property>
+  <property name="label">Middle Name</property>
+  <property name="label_edit">Middle Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_empty">True</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="lastname" meta_type="String Widget">
+  <property name="fields">
+   <element value="lastname"/>
+  </property>
+  <property name="label">Surname</property>
+  <property name="label_edit">Surname</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="middlename" meta_type="String Widget">
+  <property name="fields">
+   <element value="middlename"/>
+  </property>
+  <property name="label">Middle Name</property>
+  <property name="label_edit">Middle Name</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_empty">True</property>
+  <property name="display_width">40</property>
+ </widget>
+ <widget name="pw" meta_type="Password Widget">
+  <property name="title">Password</property>
+  <property name="fields">
+   <element value="pw"/>
+  </property>
+  <property name="label">New Password</property>
+  <property name="label_edit">New Password</property>
+  <property name="help">Enter a New Password</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">12</property>
+ </widget>
+ <widget name="rpw" meta_type="Password Widget">
+  <property name="title">confirm Password</property>
+  <property name="fields">
+   <element value="rpw"/>
+  </property>
+  <property name="label">Confirm Password</property>
+  <property name="label_edit">Confirm Password</property>
+  <property name="help">Confirm the New Password</property>
+  <property name="display_width">12</property>
+  <property name="password_widget">pw</property>
+ </widget>
+ <widget name="sex" meta_type="Boolean Widget">
+  <property name="fields">
+   <element value="sex"/>
+  </property>
+  <property name="label">Sex</property>
+  <property name="label_edit">Sex</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="label_false">male</property>
+  <property name="label_true">female</property>
+ </widget>
+ <widget name="username" meta_type="String Widget">
+  <property name="title">Username</property>
+  <property name="fields">
+   <element value="username"/>
+  </property>
+  <property name="hidden_layout_modes">
+   <element value="create"/>
+  </property>
+ </widget>
+ <table>
+  <row>
+   <cell name="email"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_schoolresults.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_schoolresults.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_schoolresults.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="student_schoolresults" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_results_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="schoolresults" meta_type="Ordered List Widget">
+  <property name="fields">
+   <element value="schoolresults"/>
+  </property>
+  <property name="label">School Results</property>
+  <property name="label_edit">School Results</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes">
+   <element value="create"/>
+   <element value="edit"/>
+  </property>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="schoolresults"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/student_semester.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/student_semester.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/student_semester.xml	(revision 276)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<object name="student_semester" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method">layout_student_semester_create</property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_student_semester_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="Title" meta_type="String Widget">
+  <property name="fields">
+   <element value="Title"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Title</property>
+  <property name="label_edit">Title</property>
+  <property name="display_width">40</property>
+  <property name="size_max">200</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="Title"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/study_level.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/study_level.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/study_level.xml	(revision 276)
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<object name="study_level" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_slregister_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="sc_id" meta_type="String Widget">
+  <property name="title">SC ID</property>
+  <property name="fields">
+   <element value="sc_id"/>
+  </property>
+  <property name="label">Card Serial Number </property>
+  <property name="label_edit">Card Serial Number</property>
+  <property name="description">Card Serial Number </property>
+  <property
+     name="help">This can be found on the bottom right of the reverse side of your Scratch Card</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="hidden_if_expr">python:1</property>
+  <property name="display_width">10</property>
+ </widget>
+ <widget name="sc_pin" meta_type="Scratchcard Pin Widget">
+  <property name="title">SC PIN</property>
+  <property name="fields">
+   <element value="sc_pin"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Enter  PIN</property>
+  <property
+     name="label_edit">Enter Scratchcard Pin with the value above</property>
+  <property
+     name="help">Please enter a Scratchcard Pin valid for Registration of Next Level</property>
+  <property name="readonly_layout_modes"/>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+  <property name="display_width">10</property>
+  <property name="size_max">10</property>
+ </widget>
+ <widget name="sc_value" meta_type="Float Widget">
+  <property name="title">Scratch card value</property>
+  <property name="fields">
+   <element value="sc_value"/>
+  </property>
+  <property name="label">Scratcard Value</property>
+  <property name="label_edit">Scratcard Value</property>
+  <property name="readonly_layout_modes">
+   <element value="create"/>
+  </property>
+  <property name="hidden_layout_modes"/>
+  <property name="hidden_readonly_layout_modes"/>
+ </widget>
+ <table>
+  <row>
+   <cell name="sc_value"/>
+  </row>
+  <row>
+   <cell name="sc_pin"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/university.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/university.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/university.xml	(revision 276)
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<object name="university" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="Description" meta_type="Text Widget">
+  <property name="fields">
+   <element value="Description"/>
+  </property>
+  <property name="label">Description</property>
+  <property name="label_edit">Description</property>
+  <property name="is_i18n">True</property>
+  <property name="hidden_layout_modes"/>
+  <property name="css_class">description</property>
+  <property name="width">72</property>
+ </widget>
+ <widget name="Title" meta_type="String Widget">
+  <property name="fields">
+   <element value="Title"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Title</property>
+  <property name="label_edit">Title</property>
+  <property name="display_width">40</property>
+  <property name="size_max">200</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="Title"/>
+  </row>
+  <row>
+   <cell name="Description"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/layouts/waeup_common.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/layouts/waeup_common.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/layouts/waeup_common.xml	(revision 276)
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<object name="waeup_common" meta_type="CPS Layout">
+ <property name="layout_create_method"></property>
+ <property name="layout_edit_method"></property>
+ <property name="layout_view_method"></property>
+ <property name="style_prefix">layout_waeup_</property>
+ <property name="flexible_widgets"/>
+ <property name="validate_values_expr"></property>
+ <widget name="Description" meta_type="Text Widget">
+  <property name="fields">
+   <element value="Description"/>
+  </property>
+  <property name="label">Description</property>
+  <property name="label_edit">Description</property>
+  <property name="is_i18n">True</property>
+  <property name="hidden_layout_modes"/>
+  <property name="css_class">description</property>
+  <property name="width">72</property>
+ </widget>
+ <widget name="Title" meta_type="String Widget">
+  <property name="fields">
+   <element value="Title"/>
+  </property>
+  <property name="is_required">True</property>
+  <property name="label">Title</property>
+  <property name="label_edit">Title</property>
+  <property name="display_width">40</property>
+  <property name="size_max">200</property>
+ </widget>
+ <table>
+  <row>
+   <cell name="Title"/>
+  </row>
+  <row>
+   <cell name="Description"/>
+  </row>
+ </table>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/properties.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/properties.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/properties.xml	(revision 276)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<site>
+ <property name="title">CPS Portal</property>
+ <property name="enable_password_reset" type="boolean">True</property>
+ <property name="enable_portal_joining" type="boolean">False</property>
+</site>
Index: /WAeUP_SRP/trunk/profiles/default/rolemap.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/rolemap.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/rolemap.xml	(revision 276)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<rolemap>
+  <roles>
+    <role name="CourseAdvisor"/>
+    <role name="Lecturer"/>
+    <role name="Student"/>
+  </roles>
+  <permissions>
+    <permission name="Certificate Course Delete"
+                acquire="True">
+      <role name="Owner"/>
+      <role name="Manager"/>
+      <role name="SectionManager"/>
+      <role name="CourseAdvisor"/>
+    </permission>
+    <permission name="Add portal content" acquire="True">
+      <role name="Owner"/>
+      <role name="Manager"/>
+      <role name="Student"/>
+    </permission>
+    <permission name="Add portal folders" acquire="True">
+      <role name="Owner"/>
+      <role name="Manager"/>
+      <role name="Student"/>
+    </permission>
+    <permission name="Delete objects" acquire="True">
+      <role name="Owner"/>
+      <role name="Manager"/>
+    </permission>
+  </permissions>
+</rolemap>
Index: /WAeUP_SRP/trunk/profiles/default/roots.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/roots.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/roots.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<roots>
+ <object name="uniportal" portal_type="University"/>
+</roots>
Index: /WAeUP_SRP/trunk/profiles/default/roots/uniportal.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/roots/uniportal.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/roots/uniportal.xml	(revision 276)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<object name="uniportal">
+  <property name="title">University Portal</property>
+  <object name="academics" portal_type="AcademicsFolder" />
+  <object name="accomodation" portal_type="AccoFolder" />
+  <object name="students" portal_type="StudentsFolder" />
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="portal_schemas" meta_type="CPS Schemas Tool">
+ <property name="title"></property>
+ <object name="academics" meta_type="CPS Schema"/>
+ <object name="accommodation" meta_type="CPS Schema"/>
+ <object name="certificate" meta_type="CPS Schema"/>
+ <object name="certificate_course" meta_type="CPS Schema"/>
+ <object name="course" meta_type="CPS Schema"/>
+ <object name="course_results" meta_type="CPS Schema"/>
+ <object name="department" meta_type="CPS Schema"/>
+ <object name="faculty" meta_type="CPS Schema"/>
+ <object name="jamb" meta_type="CPS Schema"/>
+ <object name="semester" meta_type="CPS Schema"/>
+ <object name="student" meta_type="CPS Schema"/>
+ <object name="student_accommodation" meta_type="CPS Schema"/>
+ <object name="student_admission" meta_type="CPS Schema"/>
+ <object name="student_clearance" meta_type="CPS Schema"/>
+ <object name="student_clearence" meta_type="CPS Schema"/>
+ <object name="student_documents" meta_type="CPS Schema"/>
+ <object name="student_eligibility" meta_type="CPS Schema"/>
+ <object name="student_hostel_fee" meta_type="CPS Schema"/>
+ <object name="student_personal" meta_type="CPS Schema"/>
+ <object name="student_schoolresults" meta_type="CPS Schema"/>
+ <object name="students" meta_type="CPS Schema"/>
+ <object name="study_level" meta_type="CPS Schema"/>
+ <object name="university" meta_type="CPS Schema"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/academics.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/academics.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/academics.xml	(revision 276)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<object name="academics" meta_type="CPS Schema"/>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/accommodation.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/accommodation.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/accommodation.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="accommodation" meta_type="CPS Schema">
+ <field name="beds_assigned" meta_type="CPS Int Field"/>
+ <field name="beds_assigned_list" meta_type="CPS String List Field"/>
+ <field name="beds_for_final" meta_type="CPS String List Field"/>
+ <field name="beds_for_fresh" meta_type="CPS String List Field"/>
+ <field name="beds_for_returning" meta_type="CPS String List Field"/>
+ <field name="beds_per_room" meta_type="CPS Int Field"/>
+ <field name="heading" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="nr_of_blocks" meta_type="CPS Int Field"/>
+ <field name="nr_of_floors" meta_type="CPS Int Field"/>
+ <field name="rooms_per_floor" meta_type="CPS Int Field"/>
+ <field name="study_courses" meta_type="CPS String List Field"/>
+ <field name="text" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="which_sex" meta_type="CPS Boolean Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/certificate.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/certificate.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/certificate.xml	(revision 276)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<object name="certificate" meta_type="CPS Schema">
+ <field name="admin_status" meta_type="CPS String Field"/>
+ <field name="category" meta_type="CPS String Field"/>
+ <field name="code" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="department" meta_type="CPS String Field"/>
+ <field name="end_level" meta_type="CPS String Field"/>
+ <field name="faculty" meta_type="CPS String Field"/>
+ <field name="heading" meta_type="CPS String Field"/>
+ <field name="m_prefix" meta_type="CPS String Field"/>
+ <field name="max_load" meta_type="CPS Int Field"/>
+ <field name="max_pass" meta_type="CPS Int Field"/>
+ <field name="n_core" meta_type="CPS Int Field"/>
+ <field name="nr_years" meta_type="CPS Int Field"/>
+ <field name="probation_credits" meta_type="CPS Int Field"/>
+ <field name="promotion_credits" meta_type="CPS Int Field"/>
+ <field name="start_level" meta_type="CPS String Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/certificate_course.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/certificate_course.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/certificate_course.xml	(revision 276)
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<object name="certificate_course" meta_type="CPS Schema">
+ <field name="admin_status" meta_type="CPS String Field"/>
+ <field name="certificate_code" meta_type="CPS String Field"/>
+ <field name="certificate_code_org" meta_type="CPS String Field"/>
+ <field name="code" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="core_or_elective" meta_type="CPS Boolean Field"/>
+ <field name="department" meta_type="CPS String Field"/>
+ <field name="level" meta_type="CPS String Field"/>
+ <field name="session" meta_type="CPS String Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/course.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/course.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/course.xml	(revision 276)
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<object name="course" meta_type="CPS Schema">
+ <field name="category" meta_type="CPS String Field"/>
+ <field name="code" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="credits" meta_type="CPS Int Field"/>
+ <field name="org_code" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="passmark" meta_type="CPS Int Field">
+  <property name="default_expr">python:40</property>
+ </field>
+ <field name="semester" meta_type="CPS Int Field"/>
+ <field name="session" meta_type="CPS String Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/course_results.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/course_results.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/course_results.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="course_results" meta_type="CPS Schema">
+ <field name="grade" meta_type="CPS String Field"/>
+ <field name="points" meta_type="CPS Int Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/department.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/department.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/department.xml	(revision 276)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<object name="department" meta_type="CPS Schema"/>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/faculty.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/faculty.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/faculty.xml	(revision 276)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<object name="faculty" meta_type="CPS Schema"/>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/jamb.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/jamb.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/jamb.xml	(revision 276)
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<object name="jamb" meta_type="CPS Schema">
+ <field name="admission_sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="admission_sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="admission_sc_pin_usage" meta_type="CPS Int Field"/>
+ <field name="age" meta_type="CPS Int Field">
+  <property name="default_expr">python:20</property>
+ </field>
+ <field name="aggregate" meta_type="CPS String Field"/>
+ <field name="course" meta_type="CPS String Field"/>
+ <field name="exam_results" meta_type="CPS String Field"/>
+ <field name="faculty" meta_type="CPS String Field"/>
+ <field name="firstname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="lastname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="listing_date" meta_type="CPS DateTime Field">
+  <property name="default_expr">python:DateTime()</property>
+ </field>
+ <field name="middlename" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="reg_nr" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sex" meta_type="CPS Boolean Field">
+  <property name="default_expr">python:0</property>
+ </field>
+ <field name="state" meta_type="CPS String Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/semester.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/semester.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/semester.xml	(revision 276)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<object name="semester" meta_type="CPS Schema"/>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student.xml	(revision 276)
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<object name="student" meta_type="CPS Schema">
+ <field name="accommodation" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="accommodation_date" meta_type="CPS DateTime Field">
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="accommodation_sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="accommodation_sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="accommodation_sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:0.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="adm_check_date" meta_type="CPS DateTime Field"/>
+ <field name="adm_check_sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="adm_check_sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="adm_check_sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:0.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="clearance_date" meta_type="CPS DateTime Field">
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="clearance_sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="clearance_sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="clearance_sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:0.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="course" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="faculty" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="hostel_fee_date" meta_type="CPS DateTime Field">
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="hostel_fee_sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="hostel_fee_sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="hostel_fee_sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:0.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="jamb_is_admitted" meta_type="CPS Boolean Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_accommodation.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_accommodation.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_accommodation.xml	(revision 276)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<object name="student_accommodation" meta_type="CPS Schema">
+ <field name="accommodation" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:500.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_admission.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_admission.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_admission.xml	(revision 276)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<object name="student_admission" meta_type="CPS Schema">
+ <field name="reg_nr" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:300.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_clearance.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_clearance.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_clearance.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="student_clearance" meta_type="CPS Schema">
+ <field name="lastname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="reg_nr" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:800.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_clearence.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_clearence.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_clearence.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="student_clearence" meta_type="CPS Schema">
+ <field name="lastname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="reg_nr" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:800.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_documents.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_documents.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_documents.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="student_documents" meta_type="CPS Schema">
+ <field name="birth_certificate" meta_type="CPS Image Field"/>
+ <field name="passport" meta_type="CPS Image Field"/>
+ <field name="photo" meta_type="CPS Image Field"/>
+ <field name="results_first" meta_type="CPS Image Field"/>
+ <field name="results_second" meta_type="CPS Image Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_eligibility.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_eligibility.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_eligibility.xml	(revision 276)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<object name="student_eligibility" meta_type="CPS Schema">
+ <field name="course" meta_type="CPS String Field"/>
+ <field name="faculty" meta_type="CPS String Field"/>
+ <field name="jamb_aggregate" meta_type="CPS String Field"/>
+ <field name="jamb_listing_date" meta_type="CPS DateTime Field"/>
+ <field name="jamb_results" meta_type="CPS String Field"/>
+ <field name="reg_nr" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="schoolresults" meta_type="CPS String List Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_hostel_fee.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_hostel_fee.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_hostel_fee.xml	(revision 276)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<object name="student_hostel_fee" meta_type="CPS Schema">
+ <field name="accommodation" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:2500.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_personal.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_personal.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_personal.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="student_personal" meta_type="CPS Schema">
+ <field name="age" meta_type="CPS DateTime Field"/>
+ <field name="birthday" meta_type="CPS DateTime Field"/>
+ <field name="email" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="firstname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="lastname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="middlename" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="sex" meta_type="CPS Boolean Field"/>
+ <field name="username" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/student_schoolresults.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/student_schoolresults.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/student_schoolresults.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="student_schoolresults" meta_type="CPS Schema">
+ <field name="schoolresults" meta_type="CPS String List Field"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/students.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/students.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/students.xml	(revision 276)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<object name="students" meta_type="CPS Schema"/>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/study_level.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/study_level.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/study_level.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="study_level" meta_type="CPS Schema">
+ <field name="sc_id" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_pin" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+  <property name="acl_write_roles">SectionReader</property>
+ </field>
+ <field name="sc_value" meta_type="CPS Float Field">
+  <property name="default_expr">python:1000.</property>
+  <property name="is_searchabletext">True</property>
+ </field>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/schemas/university.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/schemas/university.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/schemas/university.xml	(revision 276)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<object name="university" meta_type="CPS Schema"/>
Index: /WAeUP_SRP/trunk/profiles/default/skins.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/skins.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/skins.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="portal_skins" meta_type="CMF Skins Tool" allow_any="False"
+   cookie_persistence="False" default_skin="CPSSkins"
+   request_varname="portal_skin">
+ <object name="waeup_default" meta_type="Filesystem Directory View"
+    directory="WAeUP_SRP/skins/waeup_default"/>
+ <object name="waeup_faculty" meta_type="Filesystem Directory View"
+    directory="WAeUP_SRP/skins/waeup_faculty"/>
+ <object name="waeup_student" meta_type="Filesystem Directory View"
+    directory="WAeUP_SRP/skins/waeup_student"/>
+ <skin-path name="CPSSkins">
+  <layer name="waeup_default" insert-after="custom"/>
+  <layer name="waeup_student" insert-after="cps_default"/>
+  <layer name="waeup_faculty" insert-after="cps_default"/>
+ </skin-path>
+ <skin-path name="CPSSkins-macroless">
+  <layer name="waeup_default" insert-after="custom"/>
+  <layer name="waeup_student" insert-after="cps_default"/>
+  <layer name="waeup_faculty" insert-after="cps_default"/>
+ </skin-path>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/skins/custom.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/skins/custom.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/skins/custom.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="custom" meta_type="Folder">
+ <property name="title"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/skins/waeup_default.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/skins/waeup_default.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/skins/waeup_default.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="waeup_default" meta_type="Folder">
+ <property name="title"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/skins/waeup_faculty.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/skins/waeup_faculty.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/skins/waeup_faculty.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="waeup_faculty" meta_type="Folder">
+ <property name="title"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/skins/waeup_student.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/skins/waeup_student.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/skins/waeup_student.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="waeup_student" meta_type="Folder">
+ <property name="title"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="portal_themes" meta_type="Portal Themes Tool">
+ <property name="accesskey">*</property>
+ <property name="debug_mode">True</property>
+ <property name="method_themes">
+ </property>
+ <object name="default" meta_type="Portal Theme"/>
+ <object name="waeup_management_theme" meta_type="Portal Theme"/>
+ <object name="waeup_plain_theme" meta_type="Portal Theme"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/default.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/default.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/default.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="waeup_plain_theme" meta_type="Portal Theme">
+ <property name="default">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="waeup_management_theme" meta_type="Portal Theme">
+ <property name="title">WAeUP Management theme</property>
+ <property name="default">False</property>
+ <property name="esi">False</property>
+ <property name="shortcut_icon"></property>
+ <property name="author">Henrik Bettermann
+  Joachim Schmitz</property>
+ <property name="copyright">Copyright 2005 WAeUP Group</property>
+ <property name="license">GPL</property>
+ <object name="styles" meta_type="Theme Folder"/>
+ <object name="icons" meta_type="Theme Folder"/>
+ <object name="backgrounds" meta_type="Theme Folder"/>
+ <object name="palettes" meta_type="Theme Folder"/>
+ <object name="thumbnails" meta_type="Theme Folder"/>
+ <object name="1917454387" meta_type="Theme Page"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="1917454387" meta_type="Theme Page">
+ <property name="title">Default Page</property>
+ <property name="default">True</property>
+ <property name="preview"></property>
+ <property name="renderer">default</property>
+ <property name="macroless">False</property>
+ <property name="tableless">False</property>
+ <property name="align">left</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="margin">0.5em</property>
+ <object name="1060267354" meta_type="Page Block"/>
+ <object name="1060543125" meta_type="Page Block"/>
+ <object name="main" meta_type="Page Block"/>
+ <object name="1060288831" meta_type="Page Block"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354.xml	(revision 276)
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<object name="1060267354" meta_type="Page Block">
+ <property name="title">top</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height">60px</property>
+ <property name="maxcols">3</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="1475814304" meta_type="Image Box Templet"/>
+ <object name="1145707204" meta_type="Image Box Templet"/>
+ <object name="1060524208" meta_type="Cell Sizer"/>
+ <object name="1060791958" meta_type="Cell Sizer"/>
+ <object name="1060937699" meta_type="Cell Sizer"/>
+ <object name="1771338759" meta_type="Cell Styler"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060524208.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060524208.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060524208.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060524208" meta_type="Cell Sizer">
+ <property name="xpos">1</property>
+ <property name="cellwidth">60%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060791958.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060791958.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060791958.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060791958" meta_type="Cell Sizer">
+ <property name="xpos">0</property>
+ <property name="cellwidth">20%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060937699.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060937699.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1060937699.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060937699" meta_type="Cell Sizer">
+ <property name="xpos">2</property>
+ <property name="cellwidth">20%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1145707204.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1145707204.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1145707204.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="1145707204" meta_type="Image Box Templet">
+ <property name="title">Image Box Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">right</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="i18n">False</property>
+ <property name="caption"></property>
+ <property name="link"></property>
+ <property name="use_internal_link">False</property>
+ <property name="internal_link"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1475814304.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1475814304.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1475814304.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="1475814304" meta_type="Image Box Templet">
+ <property name="title">Image Box Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">1</property>
+ <property name="align">left</property>
+ <property name="padding">0.15em</property>
+ <property name="margin">1.3em 0 0 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="i18n">False</property>
+ <property name="caption"></property>
+ <property name="link"></property>
+ <property name="use_internal_link">False</property>
+ <property name="internal_link"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1771338759.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1771338759.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060267354/1771338759.xml	(revision 276)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<object name="1771338759" meta_type="Cell Styler">
+ <property name="xpos">0</property>
+ <property name="shape">NoBorder</property>
+ <property name="color">Transparent</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060288831.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060288831.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060288831.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="1060288831" meta_type="Page Block">
+ <property name="title">Bottom</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height"></property>
+ <property name="maxcols">1</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="1067647784" meta_type="Text Box Templet"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060288831/1067647784.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060288831/1067647784.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060288831/1067647784.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="1067647784" meta_type="Text Box Templet">
+ <property name="title">footer</property>
+ <property name="cacheable">True</property>
+ <property name="cache_lifetime">3600</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">center</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property
+    name="text">&lt;a href="http://www.medic.chalmers.se/~jmo/CPS/"&gt;CPSSkins &lt;/a&gt;is Copyright &amp;copy; 2003-2005 by Jean-Marc Orliaguet.&lt;br/&gt;
+  &lt;a href="http://www.cps-project.org/"&gt;CPS&lt;/a&gt; is Copyright &amp;copy; 2002-2005 by &lt;a href="http://www.nuxeo.com/"&gt;Nuxeo&lt;/a&gt;.</property>
+ <property name="text_format">html</property>
+ <property name="i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125.xml	(revision 276)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<object name="1060543125" meta_type="Page Block">
+ <property name="title">Navigation</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height">35px</property>
+ <property name="maxcols">1</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="fewfwef" meta_type="Breadcrumbs Templet"/>
+ <object name="1068987983" meta_type="Cell Sizer"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125/1068987983.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125/1068987983.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125/1068987983.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1068987983" meta_type="Cell Sizer">
+ <property name="xpos">1</property>
+ <property name="cellwidth">25%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125/fewfwef.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125/fewfwef.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/1060543125/fewfwef.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="fewfwef" meta_type="Breadcrumbs Templet">
+ <property name="title">Breadcrumbs</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">10</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="show_icon">False</property>
+ <property name="separator_start">_You are here:_</property>
+ <property name="separator_repeat">&amp;raquo;</property>
+ <property name="separator_end"></property>
+ <property name="i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main.xml	(revision 276)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<object name="main" meta_type="Page Block">
+ <property name="title">Main Columns</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height">500px</property>
+ <property name="maxcols">4</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="1081810733" meta_type="Portal Box Group Templet"/>
+ <object name="2106203779" meta_type="Portal Box Group Templet"/>
+ <object name="maincontent" meta_type="Main Content Templet"/>
+ <object name="1069107593" meta_type="Portal Box Group Templet"/>
+ <object name="68175730" meta_type="Cell Sizer"/>
+ <object name="1060524952" meta_type="Cell Sizer"/>
+ <object name="1068985669" meta_type="Portal Box Templet"/>
+ <object name="1067647649" meta_type="Cell Styler"/>
+ <object name="1069153904" meta_type="Cell Sizer"/>
+ <object name="1071251329" meta_type="Cell Sizer"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1060524952.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1060524952.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1060524952.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060524952" meta_type="Cell Sizer">
+ <property name="xpos">1</property>
+ <property name="cellwidth">3%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1067647649.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1067647649.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1067647649.xml	(revision 276)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<object name="1067647649" meta_type="Cell Styler">
+ <property name="xpos">0</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1068985669.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1068985669.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1068985669.xml	(revision 276)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<object name="1068985669" meta_type="Portal Box Templet">
+ <property name="title">Login</property>
+ <property name="cacheable">True</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">True</property>
+ <property name="xpos">0</property>
+ <property name="align">left</property>
+ <property name="padding">0.1em</property>
+ <property name="margin">0.7em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">ArialClean</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">if_anonymous</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape">Square</property>
+ <property name="boxcolor">Gray</property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">standard</property>
+ <property name="title_source">Username</property>
+ <property name="box_title_i18n">False</property>
+ <property name="content">login</property>
+ <property name="show_docs">False</property>
+ <property name="display_hidden_folders">False</property>
+ <property name="folder_items_i18n">False</property>
+ <property name="level">0</property>
+ <property name="base"/>
+ <property name="base_path"></property>
+ <property name="action_categories">
+  <element value="user"/>
+  <element value="global"/>
+ </property>
+ <property name="custom_action_categories"/>
+ <property name="invisible_actions">
+  <element value=""/>
+ </property>
+ <property name="orientation">vertical</property>
+ <property name="info">Info here</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1069107593.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1069107593.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1069107593.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="1069107593" meta_type="Portal Box Group Templet">
+ <property name="title">center bottom</property>
+ <property name="cacheable">True</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">True</property>
+ <property name="xpos">2</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape">LightSkins</property>
+ <property name="boxcolor">Gray</property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout"></property>
+ <property name="box_group">center_bottom</property>
+ <property name="macroless">False</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1069153904.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1069153904.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1069153904.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1069153904" meta_type="Cell Sizer">
+ <property name="xpos">2</property>
+ <property name="cellwidth">75%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1071251329.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1071251329.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1071251329.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1071251329" meta_type="Cell Sizer">
+ <property name="xpos">3</property>
+ <property name="cellwidth">2%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1081810733.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1081810733.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/1081810733.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="1081810733" meta_type="Portal Box Group Templet">
+ <property name="title">Content well</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">2</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape">NoBorder</property>
+ <property name="color">Transparent</property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape"></property>
+ <property name="boxcolor"></property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">plain</property>
+ <property name="box_group">content_well</property>
+ <property name="macroless">True</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/2106203779.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/2106203779.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/2106203779.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="2106203779" meta_type="Portal Box Group Templet">
+ <property name="title">left</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">True</property>
+ <property name="xpos">0</property>
+ <property name="align">left</property>
+ <property name="padding">0.15em</property>
+ <property name="margin">0.5em 0.7em 0em 0.7em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">ArialClean</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape">Square</property>
+ <property name="boxcolor">ArrowBox</property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">one_frame</property>
+ <property name="box_group">left</property>
+ <property name="macroless">False</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/68175730.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/68175730.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/68175730.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="68175730" meta_type="Cell Sizer">
+ <property name="xpos">0</property>
+ <property name="cellwidth">20%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/maincontent.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/maincontent.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/1917454387/main/maincontent.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="maincontent" meta_type="Main Content Templet">
+ <property name="title">Main Content</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">True</property>
+ <property name="xpos">2</property>
+ <property name="align">left</property>
+ <property name="padding">0.1em 0em 0.1em 0em</property>
+ <property name="margin">0.1em 0em 0.1em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle">Active</property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/backgrounds.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/backgrounds.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/backgrounds.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="backgrounds" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="LightGrayStripes.gif" meta_type="Image"
+    title="LightGrayStripes.gif"/>
+ <object name="LightGrayStripes2.gif" meta_type="Image"
+    title="LightGrayStripes2.gif"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/icons.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/icons.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/icons.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="icons" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="folder_yellow.gif" meta_type="Image"
+    title="folder_yellow.gif"/>
+ <object name="folder_yellow_selected.gif" meta_type="Image"
+    title="folder_yellow_selected.gif"/>
+ <object name="folder_opera.gif" meta_type="Image" title="folder_opera.gif"/>
+ <object name="folder_opera_selected.gif" meta_type="Image"
+    title="folder_opera_selected.gif"/>
+ <object name="yellow_bullet.gif" meta_type="Image"
+    title="yellow_bullet.gif"/>
+ <object name="blue_folder.gif" meta_type="Image" title="blue_folder.gif"/>
+ <object name="arrow_out.png" meta_type="Image" title="arrow_out.png"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes.xml	(revision 276)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<object name="palettes" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="1066857001" meta_type="Palette Color"/>
+ <object name="1066857550" meta_type="Palette Color"/>
+ <object name="1066857579" meta_type="Palette Color"/>
+ <object name="1066857603" meta_type="Palette Color"/>
+ <object name="1066857625" meta_type="Palette Color"/>
+ <object name="1066857644" meta_type="Palette Color"/>
+ <object name="1066857687" meta_type="Palette Color"/>
+ <object name="1066857713" meta_type="Palette Color"/>
+ <object name="1066857760" meta_type="Palette Color"/>
+ <object name="1066858308" meta_type="Palette Color"/>
+ <object name="1066858879" meta_type="Palette Border"/>
+ <object name="1066858966" meta_type="Palette Border"/>
+ <object name="1066859016" meta_type="Palette Border"/>
+ <object name="1066859061" meta_type="Palette Border"/>
+ <object name="1066859095" meta_type="Palette Border"/>
+ <object name="1066859414" meta_type="Palette Border"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857001.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857001.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857001.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857001" meta_type="Palette Color">
+ <property name="title">PloneLightBlue</property>
+ <property name="value">#dee6ee</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857550.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857550.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857550.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857550" meta_type="Palette Color">
+ <property name="title">PloneBlue</property>
+ <property name="value">#8baebd</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857579.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857579.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857579.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857579" meta_type="Palette Color">
+ <property name="title">LimeGreen</property>
+ <property name="value">#eff9bf</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857603.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857603.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857603.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857603" meta_type="Palette Color">
+ <property name="title">LightPink</property>
+ <property name="value">#f9f6f3</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857625.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857625.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857625.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857625" meta_type="Palette Color">
+ <property name="title">LightGray</property>
+ <property name="value">#CCCCCC</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857644.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857644.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857644.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857644" meta_type="Palette Color">
+ <property name="title">DarkBlue</property>
+ <property name="value">#003399</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857687.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857687.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857687.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857687" meta_type="Palette Color">
+ <property name="title">Blue</property>
+ <property name="value">#3399FF</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857713.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857713.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857713.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857713" meta_type="Palette Color">
+ <property name="title">Orange</property>
+ <property name="value">#ffcc33</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857760.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857760.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066857760.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857760" meta_type="Palette Color">
+ <property name="title">Gray</property>
+ <property name="value">#999999</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858308.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858308.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858308.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066858308" meta_type="Palette Color">
+ <property name="title">Black</property>
+ <property name="value">Black</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858879.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858879.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858879.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066858879" meta_type="Palette Border">
+ <property name="title">Solid</property>
+ <property name="value">solid</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858966.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858966.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066858966.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066858966" meta_type="Palette Border">
+ <property name="title">RightBottom</property>
+ <property name="value">none solid solid none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859016.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859016.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859016.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859016" meta_type="Palette Border">
+ <property name="title">Right</property>
+ <property name="value">none solid none none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859061.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859061.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859061.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859061" meta_type="Palette Border">
+ <property name="title">RightTopLeft</property>
+ <property name="value">solid solid none solid</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859095.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859095.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859095.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859095" meta_type="Palette Border">
+ <property name="title">Bottom</property>
+ <property name="value">none none solid none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859414.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859414.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/palettes/1066859414.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859414" meta_type="Palette Border">
+ <property name="title">NoBorder</property>
+ <property name="value">none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles.xml	(revision 276)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<object name="styles" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="1061651112" meta_type="Portal Box Color"/>
+ <object name="2143215" meta_type="Portal Box Color"/>
+ <object name="3252634" meta_type="Area Color"/>
+ <object name="423235" meta_type="Area Color"/>
+ <object name="dfg" meta_type="Area Shape"/>
+ <object name="sdaf" meta_type="Portal Box Shape"/>
+ <object name="1063871955" meta_type="Portal Box Shape"/>
+ <object name="1065281259" meta_type="Portal Box Shape"/>
+ <object name="1065355669" meta_type="Portal Box Color"/>
+ <object name="1066853399" meta_type="Font Shape"/>
+ <object name="1068572497" meta_type="Font Shape"/>
+ <object name="1068989458" meta_type="Area Color"/>
+ <object name="1068989539" meta_type="Font Color"/>
+ <object name="1143215" meta_type="Portal Box Color"/>
+ <object name="370538477" meta_type="Form Style"/>
+ <object name="130505775" meta_type="Portal Box Shape"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1061651112.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1061651112.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1061651112.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="1061651112" meta_type="Portal Box Color">
+ <property name="title">Gray</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_bg_color">#d0d0d0</property>
+ <property name="BoxTitle_border_color">#999999</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#ffffff</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#999999</property>
+ <property name="BoxBody_menuout_color">transparent</property>
+ <property name="BoxBody_menuout_border_color">#f6f6fc</property>
+ <property name="BoxBody_menuin_color">#e0e0e0</property>
+ <property name="BoxBody_menuin_border_color">#eeeeee</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image">LightGrayStripes2.gif</property>
+ <property name="BoxBody_menuin_icon">blue_folder.gif</property>
+ <property name="BoxBody_menuout_icon">blue_folder.gif</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1063871955.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1063871955.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1063871955.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="1063871955" meta_type="Portal Box Shape">
+ <property name="title">Square</property>
+ <property name="default">True</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style">none solid none none</property>
+ <property name="BoxTitle_border_width">1px</property>
+ <property name="BoxTitle_padding">0em 1.2em 0em 0.9em</property>
+ <property name="BoxTitle_display">inline</property>
+ <property name="BoxBody_border_style">solid</property>
+ <property name="BoxBody_border_width">1px</property>
+ <property name="BoxBody_padding">0.5em</property>
+ <property name="BoxBody_menuin_padding">1px 0px 1px 2px</property>
+ <property name="BoxBody_menuout_padding">1px 0px 1px 2px</property>
+ <property name="BoxBody_menuout_border_style">none</property>
+ <property name="BoxBody_menuout_border_width">0px</property>
+ <property name="BoxBody_menuout_margin">1px 3px 1px 3px</property>
+ <property name="BoxBody_menuin_border_style">inset</property>
+ <property name="BoxBody_menuin_border_width">1px</property>
+ <property name="BoxBody_menuin_margin">0px 3px 0px 3px</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1065281259.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1065281259.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1065281259.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="1065281259" meta_type="Portal Box Shape">
+ <property name="title">Navigation</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style">none</property>
+ <property name="BoxTitle_border_width">1px</property>
+ <property name="BoxTitle_padding">0em 1.2em 0em 1em</property>
+ <property name="BoxTitle_display">block</property>
+ <property name="BoxBody_border_style">none none solid none</property>
+ <property name="BoxBody_border_width">1px</property>
+ <property name="BoxBody_padding">0px</property>
+ <property name="BoxBody_menuin_padding">1px 15px 0px 0px</property>
+ <property name="BoxBody_menuout_padding">1px 15px 0px 16px</property>
+ <property
+    name="BoxBody_menuout_border_style">solid solid none solid</property>
+ <property name="BoxBody_menuout_border_width">1px</property>
+ <property name="BoxBody_menuout_margin">1px 3px 1px 0px</property>
+ <property
+    name="BoxBody_menuin_border_style">solid solid solid solid</property>
+ <property name="BoxBody_menuin_border_width">1px</property>
+ <property name="BoxBody_menuin_margin">1px 3px 1px 0px</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1065355669.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1065355669.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1065355669.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="1065355669" meta_type="Portal Box Color">
+ <property name="title">ArrowBox</property>
+ <property name="default">True</property>
+ <property name="BoxTitle_bg_color">#ffcc33</property>
+ <property name="BoxTitle_border_color">#999999</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#ffffff</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#999999</property>
+ <property name="BoxBody_menuout_color">#ffffff</property>
+ <property name="BoxBody_menuout_border_color">#ffffff</property>
+ <property name="BoxBody_menuin_color">#e0e0e0</property>
+ <property name="BoxBody_menuin_border_color">#99cccc</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image"></property>
+ <property name="BoxBody_menuin_icon">arrow_out.png</property>
+ <property name="BoxBody_menuout_icon">arrow_out.png</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1066853399.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1066853399.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1066853399.xml	(revision 276)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<object name="1066853399" meta_type="Font Shape">
+ <property name="title">Arial</property>
+ <property name="default">True</property>
+ <property name="Default_font">12px Arial, Helvetica, sans-serif</property>
+ <property
+    name="H1_font">normal 150% Trebuchet MS, Arial, Helvetica, sans-serif</property>
+ <property name="H1_padding">0.6em 0em 0em 0em</property>
+ <property name="H1_margin"></property>
+ <property name="H1_border_width">1px</property>
+ <property name="H1_border_style">none none solid none</property>
+ <property
+    name="H2_font">bold 125% Trebuchet MS, Arial, Helvetica, sans-serif</property>
+ <property name="H2_padding">0.6em 0em 0em 0em</property>
+ <property name="H2_margin"></property>
+ <property name="H2_border_width">1px</property>
+ <property name="H2_border_style">none none solid none</property>
+ <property
+    name="H3_font">bold 120% Trebuchet MS, Arial, Helvetica, sans-serif</property>
+ <property name="H3_padding">0.6em 0em 0em 0em</property>
+ <property name="H3_margin"></property>
+ <property name="H3_border_width">1px</property>
+ <property name="H3_border_style">none none solid none</property>
+ <property name="H456_font">bold 115% Arial, Helvetica, sans-serif</property>
+ <property name="H456_padding">0.4em 0em 0em 0em</property>
+ <property name="H456_margin"></property>
+ <property name="H456_border_width">0px</property>
+ <property name="H456_border_style">none</property>
+ <property name="P_font">100% Arial, Helvetica, sans-serif</property>
+ <property name="SMALL_font">None</property>
+ <property
+    name="STRONG_font">bold 100% Arial, Helvetica, sans-serif</property>
+ <property name="P_padding">0.3em 0em 0.3em 0em</property>
+ <property name="A_link_decoration">none</property>
+ <property name="A_visited_decoration">none</property>
+ <property name="A_active_decoration">none</property>
+ <property name="A_hover_decoration">none</property>
+ <property name="A_link_border_width">None</property>
+ <property name="A_visited_border_width">None</property>
+ <property name="A_active_border_width">None</property>
+ <property name="A_hover_border_width">None</property>
+ <property name="A_link_border_style">None</property>
+ <property name="A_visited_border_style">None</property>
+ <property name="A_active_border_style">None</property>
+ <property name="A_hover_border_style">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068572497.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068572497.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068572497.xml	(revision 276)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<object name="1068572497" meta_type="Font Shape">
+ <property name="title">ArialClean</property>
+ <property name="default">False</property>
+ <property name="Default_font">12px Arial, Helvetica, sans-serif</property>
+ <property name="H1_font">normal 170% Arial, Helvetica, sans-serif</property>
+ <property name="H1_padding">0.8em 0em 0em 0em</property>
+ <property name="H1_margin"></property>
+ <property name="H1_border_width">0px</property>
+ <property name="H1_border_style">none</property>
+ <property name="H2_font">normal 150% Arial, Helvetica, sans-serif</property>
+ <property name="H2_padding">0em 0em 0em 0em</property>
+ <property name="H2_margin"></property>
+ <property name="H2_border_width">0px</property>
+ <property name="H2_border_style">none</property>
+ <property name="H3_font">bold 120% Arial, Helvetica, sans-serif</property>
+ <property name="H3_padding">0.6em 0em 0em 0em</property>
+ <property name="H3_margin"></property>
+ <property name="H3_border_width">0px</property>
+ <property name="H3_border_style">none</property>
+ <property name="H456_font">bold 115% Arial, Helvetica, sans-serif</property>
+ <property name="H456_padding">0.4em 0em 0em 0em</property>
+ <property name="H456_margin"></property>
+ <property name="H456_border_width">0px</property>
+ <property name="H456_border_style">none</property>
+ <property name="P_font">100% Arial, Helvetica, sans-serif</property>
+ <property name="SMALL_font">None</property>
+ <property
+    name="STRONG_font">normal 12px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif</property>
+ <property name="P_padding">0em</property>
+ <property name="A_link_decoration">none</property>
+ <property name="A_visited_decoration">none</property>
+ <property name="A_active_decoration">none</property>
+ <property name="A_hover_decoration">none</property>
+ <property name="A_link_border_width">None</property>
+ <property name="A_visited_border_width">None</property>
+ <property name="A_active_border_width">None</property>
+ <property name="A_hover_border_width">None</property>
+ <property name="A_link_border_style">None</property>
+ <property name="A_visited_border_style">None</property>
+ <property name="A_active_border_style">None</property>
+ <property name="A_hover_border_style">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068989458.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068989458.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068989458.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="1068989458" meta_type="Area Color">
+ <property name="title">blue</property>
+ <property name="default">False</property>
+ <property name="Area_border_color">#cccccc</property>
+ <property name="Area_bg_color">#516173</property>
+ <property name="Area_bg_image"></property>
+ <property name="Area_bg_position"></property>
+ <property name="Area_bg_repeat">repeat</property>
+ <property name="Area_font_color">#eeeeee</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068989539.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068989539.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1068989539.xml	(revision 276)
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<object name="1068989539" meta_type="Font Color">
+ <property name="title">gray</property>
+ <property name="default">False</property>
+ <property name="H1_font_color">Black</property>
+ <property name="H1_border_color">#666666</property>
+ <property name="H1_bg_color"></property>
+ <property name="H2_font_color">Black</property>
+ <property name="H2_border_color">#666666</property>
+ <property name="H2_bg_color"></property>
+ <property name="H3_font_color">Black</property>
+ <property name="H3_border_color">#666666</property>
+ <property name="H3_bg_color"></property>
+ <property name="H456_font_color">Black</property>
+ <property name="H456_border_color">#666666</property>
+ <property name="H456_bg_color"></property>
+ <property name="A_link">#e0e0e0</property>
+ <property name="A_visited">#e0e0e0</property>
+ <property name="A_active">#e0e0e0</property>
+ <property name="A_hover">#ffffff</property>
+ <property name="A_link_border_color">None</property>
+ <property name="A_visited_border_color">None</property>
+ <property name="A_active_border_color">None</property>
+ <property name="A_hover_border_color">None</property>
+ <property name="A_link_bg_color">None</property>
+ <property name="A_visited_bg_color">None</property>
+ <property name="A_active_bg_color">None</property>
+ <property name="A_hover_bg_color">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1143215.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1143215.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/1143215.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="1143215" meta_type="Portal Box Color">
+ <property name="title">Sections</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_bg_color">#eeeeee</property>
+ <property name="BoxTitle_border_color">#666666</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#cccccc</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#cccccc</property>
+ <property name="BoxBody_menuout_color">#d0e0f0</property>
+ <property name="BoxBody_menuout_border_color">#b0b0b0</property>
+ <property name="BoxBody_menuin_color">#ffffff</property>
+ <property
+    name="BoxBody_menuin_border_color">#b0b0b0 #b0b0b0 #ffffff #b0b0b0</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image"></property>
+ <property name="BoxBody_menuin_icon">yellow_bullet.gif</property>
+ <property name="BoxBody_menuout_icon"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/130505775.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/130505775.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/130505775.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="130505775" meta_type="Portal Box Shape">
+ <property name="title">Tabs</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style"></property>
+ <property name="BoxTitle_border_width"></property>
+ <property name="BoxTitle_padding"></property>
+ <property name="BoxTitle_display">block</property>
+ <property name="BoxBody_border_style"></property>
+ <property name="BoxBody_border_width"></property>
+ <property name="BoxBody_padding">0.5em 0.5em 0.5em 0.5em</property>
+ <property name="BoxBody_menuin_padding">1px 4px 1px 13px</property>
+ <property name="BoxBody_menuout_padding">1px 4px 1px 13px</property>
+ <property name="BoxBody_menuout_border_style"></property>
+ <property name="BoxBody_menuout_border_width"></property>
+ <property name="BoxBody_menuout_margin"></property>
+ <property name="BoxBody_menuin_border_style"></property>
+ <property name="BoxBody_menuin_border_width"></property>
+ <property name="BoxBody_menuin_margin"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/2143215.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/2143215.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/2143215.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="2143215" meta_type="Portal Box Color">
+ <property name="title">Workspaces</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_bg_color">#eeeeee</property>
+ <property name="BoxTitle_border_color">#666666</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#e6e2c5</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#cccccc</property>
+ <property name="BoxBody_menuout_color">#eff9bf</property>
+ <property name="BoxBody_menuout_border_color">#b0b0b0</property>
+ <property name="BoxBody_menuin_color">#ffffff</property>
+ <property
+    name="BoxBody_menuin_border_color">#b0b0b0 #b0b0b0 #ffffff #b0b0b0</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image"></property>
+ <property name="BoxBody_menuin_icon">yellow_bullet.gif</property>
+ <property name="BoxBody_menuout_icon"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/3252634.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/3252634.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/3252634.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="3252634" meta_type="Area Color">
+ <property name="title">brown</property>
+ <property name="default">False</property>
+ <property name="Area_border_color">#999999</property>
+ <property name="Area_bg_color">#e6e2c5</property>
+ <property name="Area_bg_image"></property>
+ <property name="Area_bg_position"></property>
+ <property name="Area_bg_repeat">repeat</property>
+ <property name="Area_font_color">#000000</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/370538477.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/370538477.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/370538477.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="370538477" meta_type="Form Style">
+ <property name="title">Active</property>
+ <property name="default">False</property>
+ <property name="Form_padding">0.3em</property>
+ <property name="Form_border_color">#eee</property>
+ <property name="Form_border_style">solid</property>
+ <property name="Form_border_width">1px</property>
+ <property name="Form_bg_color">#f7f3f7</property>
+ <property name="Form_font_color">#000</property>
+ <property name="Element_padding">None</property>
+ <property name="Element_border_color">#bbb</property>
+ <property name="Element_active_border_color">#fc3</property>
+ <property name="Element_border_style">solid</property>
+ <property name="Element_border_width">1px</property>
+ <property name="Element_bg_color"></property>
+ <property name="Element_active_bg_color">#ffd</property>
+ <property name="Element_font_color"></property>
+ <property name="Button_padding">None</property>
+ <property name="Button_border_color">None</property>
+ <property name="Button_border_style">None</property>
+ <property name="Button_border_width">None</property>
+ <property name="Button_bg_color">None</property>
+ <property name="Button_hover_bg_color">None</property>
+ <property name="Button_bg_image">None</property>
+ <property name="Button_hover_bg_image">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/423235.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/423235.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/423235.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="423235" meta_type="Area Color">
+ <property name="title">LimeGreen</property>
+ <property name="default">False</property>
+ <property name="Area_border_color">#CCCCCC</property>
+ <property name="Area_bg_color">#eff9bf</property>
+ <property name="Area_bg_image"></property>
+ <property name="Area_bg_position"></property>
+ <property name="Area_bg_repeat">repeat</property>
+ <property name="Area_font_color">#000000</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/dfg.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/dfg.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/dfg.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="dfg" meta_type="Area Shape">
+ <property name="title">Solid</property>
+ <property name="default">False</property>
+ <property name="Area_border_style">solid</property>
+ <property name="Area_border_width">1px</property>
+ <property name="Area_text_transform">none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/sdaf.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/sdaf.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/styles/sdaf.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="sdaf" meta_type="Portal Box Shape">
+ <property name="title">LightSkins</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style">none solid none none</property>
+ <property name="BoxTitle_border_width">1px</property>
+ <property name="BoxTitle_padding">0em 1.2em 0em 0.9em</property>
+ <property name="BoxTitle_display">inline</property>
+ <property name="BoxBody_border_style">none solid solid solid</property>
+ <property name="BoxBody_border_width">1px</property>
+ <property name="BoxBody_padding">0.5em 0.5em 0.5em 0.5em</property>
+ <property name="BoxBody_menuin_padding">1px 0px 0px 2px</property>
+ <property name="BoxBody_menuout_padding">2px 0px 1px 2px</property>
+ <property name="BoxBody_menuout_border_style">none</property>
+ <property name="BoxBody_menuout_border_width">1px</property>
+ <property name="BoxBody_menuout_margin">1px 3px 1px 3px</property>
+ <property name="BoxBody_menuin_border_style">inset</property>
+ <property name="BoxBody_menuin_border_width">1px</property>
+ <property name="BoxBody_menuin_margin">0px 3px 0px 3px</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/thumbnails.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/thumbnails.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_management_theme/thumbnails.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="thumbnails" meta_type="Theme Folder">
+ <property name="title"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="waeup_plain_theme" meta_type="Portal Theme">
+ <property name="title">WAeUP Plain theme</property>
+ <property name="default">True</property>
+ <property name="esi">False</property>
+ <property name="shortcut_icon"></property>
+ <property name="author">Henrik Bettermann
+  Joachim Schmitz</property>
+ <property name="copyright">Copyright 2005,2006 WAeUP Group</property>
+ <property name="license">GPL</property>
+ <object name="styles" meta_type="Theme Folder"/>
+ <object name="icons" meta_type="Theme Folder"/>
+ <object name="backgrounds" meta_type="Theme Folder"/>
+ <object name="palettes" meta_type="Theme Folder"/>
+ <object name="thumbnails" meta_type="Theme Folder"/>
+ <object name="1917454387" meta_type="Theme Page"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="1917454387" meta_type="Theme Page">
+ <property name="title">Default Page</property>
+ <property name="default">True</property>
+ <property name="preview"></property>
+ <property name="renderer">default</property>
+ <property name="macroless">False</property>
+ <property name="tableless">False</property>
+ <property name="align">left</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="margin">0.5em</property>
+ <object name="1060267354" meta_type="Page Block"/>
+ <object name="1060543125" meta_type="Page Block"/>
+ <object name="main" meta_type="Page Block"/>
+ <object name="1060288831" meta_type="Page Block"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354.xml	(revision 276)
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<object name="1060267354" meta_type="Page Block">
+ <property name="title">top</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height">60px</property>
+ <property name="maxcols">3</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="191084186" meta_type="Portal Box Group Templet"/>
+ <object name="1853186241" meta_type="Portal Box Group Templet"/>
+ <object name="1060524208" meta_type="Cell Sizer"/>
+ <object name="1060791958" meta_type="Cell Sizer"/>
+ <object name="1060937699" meta_type="Cell Sizer"/>
+ <object name="1127323940" meta_type="Cell Styler"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060524208.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060524208.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060524208.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060524208" meta_type="Cell Sizer">
+ <property name="xpos">1</property>
+ <property name="cellwidth">75%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060791958.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060791958.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060791958.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060791958" meta_type="Cell Sizer">
+ <property name="xpos">0</property>
+ <property name="cellwidth">15%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060937699.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060937699.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1060937699.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060937699" meta_type="Cell Sizer">
+ <property name="xpos">2</property>
+ <property name="cellwidth">10%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1127323940.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1127323940.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1127323940.xml	(revision 276)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<object name="1127323940" meta_type="Cell Styler">
+ <property name="xpos">0</property>
+ <property name="shape">NoBorder</property>
+ <property name="color">Transparent</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1853186241.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1853186241.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/1853186241.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="1853186241" meta_type="Portal Box Group Templet">
+ <property name="title">Portal Box Group Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape">Square</property>
+ <property name="boxcolor">ArrowBox</property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">notitle_noframe</property>
+ <property name="box_group">logo</property>
+ <property name="macroless">False</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/191084186.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/191084186.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/191084186.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="191084186" meta_type="Portal Box Group Templet">
+ <property name="title">Portal Box Group Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">1</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape">Square</property>
+ <property name="boxcolor">ArrowBox</property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">notitle_noframe</property>
+ <property name="box_group">text-logo</property>
+ <property name="macroless">False</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/460997346.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/460997346.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/460997346.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="460997346" meta_type="Image Box Templet">
+ <property name="title">Image Box Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">1</property>
+ <property name="align">left</property>
+ <property name="padding">0em</property>
+ <property name="margin">1.35em 0 0 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="i18n">False</property>
+ <property name="caption"></property>
+ <property name="link"></property>
+ <property name="use_internal_link">False</property>
+ <property name="internal_link"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/724818385.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/724818385.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060267354/724818385.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="724818385" meta_type="Image Box Templet">
+ <property name="title">Image Box Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">right</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="i18n">False</property>
+ <property name="caption"></property>
+ <property name="link"></property>
+ <property name="use_internal_link">False</property>
+ <property name="internal_link"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060288831.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060288831.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060288831.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="1060288831" meta_type="Page Block">
+ <property name="title">Bottom</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height"></property>
+ <property name="maxcols">1</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="1060543125" meta_type="Page Block">
+ <property name="title">Navigation</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height">35px</property>
+ <property name="maxcols">1</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="1512742951" meta_type="Breadcrumbs Templet"/>
+ <object name="1118213432" meta_type="Breadcrumbs Templet"/>
+ <object name="copy_of_337946936" meta_type="Portal Box Group Templet"/>
+ <object name="1068987983" meta_type="Cell Sizer"/>
+ <object name="1577068979" meta_type="Cell Sizer"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1068987983.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1068987983.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1068987983.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1068987983" meta_type="Cell Sizer">
+ <property name="xpos">1</property>
+ <property name="cellwidth">?</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1118213432.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1118213432.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1118213432.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="1118213432" meta_type="Breadcrumbs Templet">
+ <property name="title">Breadcrumbs Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">1</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="show_icon">False</property>
+ <property name="separator_start">_You are here:_</property>
+ <property name="separator_repeat">&amp;raquo;</property>
+ <property name="separator_end"></property>
+ <property name="i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1512742951.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1512742951.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1512742951.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="1512742951" meta_type="Breadcrumbs Templet">
+ <property name="title">Breadcrumbs Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">left</property>
+ <property name="padding">0</property>
+ <property name="margin">1em 0 1em 0.5em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="show_icon">False</property>
+ <property name="separator_start">_You are here:_</property>
+ <property name="separator_repeat">&amp;raquo;</property>
+ <property name="separator_end"></property>
+ <property name="i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1577068979.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1577068979.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/1577068979.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1577068979" meta_type="Cell Sizer">
+ <property name="xpos">0</property>
+ <property name="cellwidth">?</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/copy_of_337946936.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/copy_of_337946936.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/1060543125/copy_of_337946936.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="copy_of_337946936" meta_type="Portal Box Group Templet">
+ <property name="title">WAeUP Breadcrumbs</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">1</property>
+ <property name="align">left</property>
+ <property name="padding"></property>
+ <property name="margin">1em 0 0.7em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape"></property>
+ <property name="boxcolor"></property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">plain</property>
+ <property name="box_group">waeup_breadcrumbs</property>
+ <property name="macroless">False</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="main" meta_type="Page Block">
+ <property name="title">Main Columns</property>
+ <property name="closed">False</property>
+ <property name="width">100%</property>
+ <property name="height">300px</property>
+ <property name="maxcols">4</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <object name="2044498710" meta_type="Portal Tab Templet"/>
+ <object name="2085801434" meta_type="Portal Box Group Templet"/>
+ <object name="copy2_of_790743019" meta_type="Portal Tab Templet"/>
+ <object name="maincontent" meta_type="Main Content Templet"/>
+ <object name="1157542653" meta_type="Text Box Templet"/>
+ <object name="68175730" meta_type="Cell Sizer"/>
+ <object name="1060524952" meta_type="Cell Sizer"/>
+ <object name="1067647649" meta_type="Cell Styler"/>
+ <object name="1069153904" meta_type="Cell Sizer"/>
+ <object name="1071251329" meta_type="Cell Sizer"/>
+ <object name="1068387228" meta_type="Cell Hider"/>
+ <object name="30382004" meta_type="Cell Hider"/>
+ <object name="1122194637" meta_type="Cell Styler"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1060524952.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1060524952.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1060524952.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1060524952" meta_type="Cell Sizer">
+ <property name="xpos">1</property>
+ <property name="cellwidth">0%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1067647649.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1067647649.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1067647649.xml	(revision 276)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<object name="1067647649" meta_type="Cell Styler">
+ <property name="xpos">0</property>
+ <property name="shape"></property>
+ <property name="color">brown</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1068387228.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1068387228.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1068387228.xml	(revision 276)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<object name="1068387228" meta_type="Cell Hider">
+ <property name="xpos">0</property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1069153904.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1069153904.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1069153904.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1069153904" meta_type="Cell Sizer">
+ <property name="xpos">2</property>
+ <property name="cellwidth">80%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1071251329.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1071251329.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1071251329.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1071251329" meta_type="Cell Sizer">
+ <property name="xpos">3</property>
+ <property name="cellwidth">5%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1122194637.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1122194637.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1122194637.xml	(revision 276)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<object name="1122194637" meta_type="Cell Styler">
+ <property name="xpos">2</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1157542653.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1157542653.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/1157542653.xml	(revision 276)
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<object name="1157542653" meta_type="Text Box Templet">
+ <property name="title">Text Box Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">2</property>
+ <property name="align">right</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0em 0em 0.5em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape"></property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="text">Copyright (C) 2005,2006 WAeUP Group</property>
+ <property name="text_format">html</property>
+ <property name="i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/2044498710.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/2044498710.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/2044498710.xml	(revision 276)
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<object name="2044498710" meta_type="Portal Tab Templet">
+ <property name="title">Portal Tab Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">2</property>
+ <property name="align">left</property>
+ <property name="padding">0.15em</property>
+ <property name="margin">0em 0em 0.5em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape">Solid</property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="content">actions</property>
+ <property name="show_docs">False</property>
+ <property name="show_add_items">True</property>
+ <property name="folder_items_i18n">False</property>
+ <property name="level">0</property>
+ <property name="base"></property>
+ <property name="base_path">/</property>
+ <property name="action_categories">
+  <element value="main_tabs"/>
+ </property>
+ <property name="custom_action_categories"/>
+ <property name="invisible_actions">
+  <element value="view"/>
+ </property>
+ <property name="portaltabstyle">PortalTabStyle</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/2085801434.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/2085801434.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/2085801434.xml	(revision 276)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<object name="2085801434" meta_type="Portal Box Group Templet">
+ <property name="title">Session Info</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">0</property>
+ <property name="align">left</property>
+ <property name="padding">0.15em</property>
+ <property name="margin">0em 0.7em 0.5em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape">Solid</property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="boxshape">Square</property>
+ <property name="boxcolor"></property>
+ <property name="boxcorners"></property>
+ <property name="portaltabstyle"></property>
+ <property name="boxlayout">notitle_noframe</property>
+ <property name="box_group">left_top</property>
+ <property name="macroless">False</property>
+ <property name="box_title_i18n">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/30382004.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/30382004.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/30382004.xml	(revision 276)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<object name="30382004" meta_type="Cell Hider">
+ <property name="xpos">1</property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/68175730.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/68175730.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/68175730.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="68175730" meta_type="Cell Sizer">
+ <property name="xpos">0</property>
+ <property name="cellwidth">15%</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/copy2_of_790743019.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/copy2_of_790743019.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/copy2_of_790743019.xml	(revision 276)
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<object name="copy2_of_790743019" meta_type="Portal Tab Templet">
+ <property name="title">Portal Tab Templet</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">False</property>
+ <property name="xpos">2</property>
+ <property name="align">left</property>
+ <property name="padding">0.15em</property>
+ <property name="margin">0em 0em 0.5em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape">Solid</property>
+ <property name="color"></property>
+ <property name="formstyle"></property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths">
+  <element value="/"/>
+ </property>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+ <property name="content">actions</property>
+ <property name="show_docs">False</property>
+ <property name="show_add_items">True</property>
+ <property name="folder_items_i18n">False</property>
+ <property name="level">0</property>
+ <property name="base"></property>
+ <property name="base_path">/</property>
+ <property name="action_categories">
+  <element value="object"/>
+ </property>
+ <property name="custom_action_categories"/>
+ <property name="invisible_actions"/>
+ <property name="portaltabstyle">PortalTabStyle</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/maincontent.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/maincontent.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/1917454387/main/maincontent.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="maincontent" meta_type="Main Content Templet">
+ <property name="title">Main Content</property>
+ <property name="cacheable">False</property>
+ <property name="cache_lifetime">60</property>
+ <property name="hidden_in_text_mode">False</property>
+ <property name="display_title_in_text_mode">True</property>
+ <property name="xpos">2</property>
+ <property name="align">left</property>
+ <property name="padding">0.5em</property>
+ <property name="margin">0em 0em 0.5em 0em</property>
+ <property name="templet_height"></property>
+ <property name="fontcolor">Black</property>
+ <property name="fontshape">Arial</property>
+ <property name="shape">Solid</property>
+ <property name="color"></property>
+ <property name="formstyle">Active</property>
+ <property name="visibility">always</property>
+ <property name="visibility_paths"/>
+ <property name="languages"/>
+ <property name="esi_fragment">False</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/backgrounds.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/backgrounds.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/backgrounds.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="backgrounds" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="LightGrayStripes.gif" meta_type="Image"
+    title="LightGrayStripes.gif"/>
+ <object name="LightGrayStripes2.gif" meta_type="Image"
+    title="LightGrayStripes2.gif"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/icons.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/icons.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/icons.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="icons" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="folder_yellow.gif" meta_type="Image"
+    title="folder_yellow.gif"/>
+ <object name="folder_yellow_selected.gif" meta_type="Image"
+    title="folder_yellow_selected.gif"/>
+ <object name="folder_opera.gif" meta_type="Image" title="folder_opera.gif"/>
+ <object name="folder_opera_selected.gif" meta_type="Image"
+    title="folder_opera_selected.gif"/>
+ <object name="yellow_bullet.gif" meta_type="Image"
+    title="yellow_bullet.gif"/>
+ <object name="blue_folder.gif" meta_type="Image" title="blue_folder.gif"/>
+ <object name="arrow_out.png" meta_type="Image" title="arrow_out.png"/>
+ <object name="waeup-logo.gif" meta_type="Image" title="waeup-logo.gif"/>
+ <object name="waeup-text.gif" meta_type="Image" title="waeup-text.gif"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes.xml	(revision 276)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<object name="palettes" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="1066857001" meta_type="Palette Color"/>
+ <object name="1066857550" meta_type="Palette Color"/>
+ <object name="1066857579" meta_type="Palette Color"/>
+ <object name="1066857603" meta_type="Palette Color"/>
+ <object name="1066857625" meta_type="Palette Color"/>
+ <object name="1066857644" meta_type="Palette Color"/>
+ <object name="1066857687" meta_type="Palette Color"/>
+ <object name="1066857713" meta_type="Palette Color"/>
+ <object name="1066857760" meta_type="Palette Color"/>
+ <object name="1066858308" meta_type="Palette Color"/>
+ <object name="1066858879" meta_type="Palette Border"/>
+ <object name="1066858966" meta_type="Palette Border"/>
+ <object name="1066859016" meta_type="Palette Border"/>
+ <object name="1066859061" meta_type="Palette Border"/>
+ <object name="1066859095" meta_type="Palette Border"/>
+ <object name="1066859414" meta_type="Palette Border"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857001.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857001.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857001.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857001" meta_type="Palette Color">
+ <property name="title">PloneLightBlue</property>
+ <property name="value">#dee6ee</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857550.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857550.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857550.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857550" meta_type="Palette Color">
+ <property name="title">PloneBlue</property>
+ <property name="value">#8baebd</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857579.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857579.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857579.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857579" meta_type="Palette Color">
+ <property name="title">LimeGreen</property>
+ <property name="value">#eff9bf</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857603.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857603.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857603.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857603" meta_type="Palette Color">
+ <property name="title">LightPink</property>
+ <property name="value">#f9f6f3</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857625.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857625.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857625.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857625" meta_type="Palette Color">
+ <property name="title">LightGray</property>
+ <property name="value">#CCCCCC</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857644.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857644.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857644.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857644" meta_type="Palette Color">
+ <property name="title">DarkBlue</property>
+ <property name="value">#003399</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857687.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857687.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857687.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857687" meta_type="Palette Color">
+ <property name="title">Blue</property>
+ <property name="value">#3399FF</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857713.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857713.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857713.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857713" meta_type="Palette Color">
+ <property name="title">Orange</property>
+ <property name="value">#ffcc33</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857760.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857760.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066857760.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066857760" meta_type="Palette Color">
+ <property name="title">Gray</property>
+ <property name="value">#999999</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858308.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858308.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858308.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066858308" meta_type="Palette Color">
+ <property name="title">Black</property>
+ <property name="value">Black</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858879.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858879.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858879.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066858879" meta_type="Palette Border">
+ <property name="title">Solid</property>
+ <property name="value">solid</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858966.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858966.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066858966.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066858966" meta_type="Palette Border">
+ <property name="title">RightBottom</property>
+ <property name="value">none solid solid none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859016.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859016.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859016.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859016" meta_type="Palette Border">
+ <property name="title">Right</property>
+ <property name="value">none solid none none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859061.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859061.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859061.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859061" meta_type="Palette Border">
+ <property name="title">RightTopLeft</property>
+ <property name="value">solid solid none solid</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859095.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859095.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859095.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859095" meta_type="Palette Border">
+ <property name="title">Bottom</property>
+ <property name="value">none none solid none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859414.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859414.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/palettes/1066859414.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="1066859414" meta_type="Palette Border">
+ <property name="title">NoBorder</property>
+ <property name="value">none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="styles" meta_type="Theme Folder">
+ <property name="title"></property>
+ <object name="1061651112" meta_type="Portal Box Color"/>
+ <object name="2143215" meta_type="Portal Box Color"/>
+ <object name="3252634" meta_type="Area Color"/>
+ <object name="423235" meta_type="Area Color"/>
+ <object name="dfg" meta_type="Area Shape"/>
+ <object name="sdaf" meta_type="Portal Box Shape"/>
+ <object name="1063871955" meta_type="Portal Box Shape"/>
+ <object name="1065281259" meta_type="Portal Box Shape"/>
+ <object name="1065355669" meta_type="Portal Box Color"/>
+ <object name="1066853203" meta_type="Font Color"/>
+ <object name="1066853399" meta_type="Font Shape"/>
+ <object name="1068572497" meta_type="Font Shape"/>
+ <object name="1068989458" meta_type="Area Color"/>
+ <object name="1068989539" meta_type="Font Color"/>
+ <object name="1143215" meta_type="Portal Box Color"/>
+ <object name="370538477" meta_type="Form Style"/>
+ <object name="130505775" meta_type="Portal Box Shape"/>
+ <object name="1238608771" meta_type="Area Shape"/>
+ <object name="628279931" meta_type="Portal Tab Style"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1061651112.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1061651112.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1061651112.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="1061651112" meta_type="Portal Box Color">
+ <property name="title">Gray</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_bg_color">#d0d0d0</property>
+ <property name="BoxTitle_border_color">#999999</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#ffffff</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#999999</property>
+ <property name="BoxBody_menuout_color">transparent</property>
+ <property name="BoxBody_menuout_border_color">#f6f6fc</property>
+ <property name="BoxBody_menuin_color">#e0e0e0</property>
+ <property name="BoxBody_menuin_border_color">#eeeeee</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image">LightGrayStripes2.gif</property>
+ <property name="BoxBody_menuin_icon">blue_folder.gif</property>
+ <property name="BoxBody_menuout_icon">blue_folder.gif</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1063871955.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1063871955.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1063871955.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="1063871955" meta_type="Portal Box Shape">
+ <property name="title">Square</property>
+ <property name="default">True</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style">none solid none none</property>
+ <property name="BoxTitle_border_width">1px</property>
+ <property name="BoxTitle_padding">0em 1.2em 0em 0.9em</property>
+ <property name="BoxTitle_display">inline</property>
+ <property name="BoxBody_border_style">dashed</property>
+ <property name="BoxBody_border_width">1px</property>
+ <property name="BoxBody_padding">0.5em</property>
+ <property name="BoxBody_menuin_padding">1px 0px 1px 2px</property>
+ <property name="BoxBody_menuout_padding">1px 0px 1px 2px</property>
+ <property name="BoxBody_menuout_border_style">none</property>
+ <property name="BoxBody_menuout_border_width">0px</property>
+ <property name="BoxBody_menuout_margin">1px 3px 1px 3px</property>
+ <property name="BoxBody_menuin_border_style">inset</property>
+ <property name="BoxBody_menuin_border_width">1px</property>
+ <property name="BoxBody_menuin_margin">0px 3px 0px 3px</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1065281259.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1065281259.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1065281259.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="1065281259" meta_type="Portal Box Shape">
+ <property name="title">Navigation</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style">none</property>
+ <property name="BoxTitle_border_width">1px</property>
+ <property name="BoxTitle_padding">0em 1.2em 0em 1em</property>
+ <property name="BoxTitle_display">block</property>
+ <property name="BoxBody_border_style">none none solid none</property>
+ <property name="BoxBody_border_width">1px</property>
+ <property name="BoxBody_padding">0px</property>
+ <property name="BoxBody_menuin_padding">1px 15px 0px 0px</property>
+ <property name="BoxBody_menuout_padding">1px 15px 0px 16px</property>
+ <property
+    name="BoxBody_menuout_border_style">solid solid none solid</property>
+ <property name="BoxBody_menuout_border_width">1px</property>
+ <property name="BoxBody_menuout_margin">1px 3px 1px 0px</property>
+ <property
+    name="BoxBody_menuin_border_style">solid solid solid solid</property>
+ <property name="BoxBody_menuin_border_width">1px</property>
+ <property name="BoxBody_menuin_margin">1px 3px 1px 0px</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1065355669.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1065355669.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1065355669.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="1065355669" meta_type="Portal Box Color">
+ <property name="title">ArrowBox</property>
+ <property name="default">True</property>
+ <property name="BoxTitle_bg_color">#ffcc33</property>
+ <property name="BoxTitle_border_color">#999999</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#ffffff</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#999999</property>
+ <property name="BoxBody_menuout_color">#ffffff</property>
+ <property name="BoxBody_menuout_border_color">#ffffff</property>
+ <property name="BoxBody_menuin_color">#e0e0e0</property>
+ <property name="BoxBody_menuin_border_color">#99cccc</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image"></property>
+ <property name="BoxBody_menuin_icon">arrow_out.png</property>
+ <property name="BoxBody_menuout_icon">arrow_out.png</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1066853203.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1066853203.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1066853203.xml	(revision 276)
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<object name="1066853203" meta_type="Font Color">
+ <property name="title">Black</property>
+ <property name="default">True</property>
+ <property name="H1_font_color">Black</property>
+ <property name="H1_border_color">#e0e0e0</property>
+ <property name="H1_bg_color"></property>
+ <property name="H2_font_color">Black</property>
+ <property name="H2_border_color">#e0e0e0</property>
+ <property name="H2_bg_color"></property>
+ <property name="H3_font_color">Black</property>
+ <property name="H3_border_color">#e0e0e0</property>
+ <property name="H3_bg_color"></property>
+ <property name="H456_font_color">Black</property>
+ <property name="H456_border_color">#e0e0e0</property>
+ <property name="H456_bg_color"></property>
+ <property name="A_link">#003399</property>
+ <property name="A_visited">#003399</property>
+ <property name="A_active">#003399</property>
+ <property name="A_hover">#3399FF</property>
+ <property name="A_link_border_color">None</property>
+ <property name="A_visited_border_color">None</property>
+ <property name="A_active_border_color">None</property>
+ <property name="A_hover_border_color">None</property>
+ <property name="A_link_bg_color">None</property>
+ <property name="A_visited_bg_color">None</property>
+ <property name="A_active_bg_color">None</property>
+ <property name="A_hover_bg_color">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1066853399.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1066853399.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1066853399.xml	(revision 276)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<object name="1066853399" meta_type="Font Shape">
+ <property name="title">Arial</property>
+ <property name="default">True</property>
+ <property name="Default_font">12px Arial, Helvetica, sans-serif</property>
+ <property
+    name="H1_font">normal 150% Trebuchet MS, Arial, Helvetica, sans-serif</property>
+ <property name="H1_padding">0.6em 0em 0em 0em</property>
+ <property name="H1_margin"></property>
+ <property name="H1_border_width">1px</property>
+ <property name="H1_border_style">none none solid none</property>
+ <property
+    name="H2_font">bold 125% Trebuchet MS, Arial, Helvetica, sans-serif</property>
+ <property name="H2_padding">0.6em 0em 0em 0em</property>
+ <property name="H2_margin"></property>
+ <property name="H2_border_width">1px</property>
+ <property name="H2_border_style">none none solid none</property>
+ <property
+    name="H3_font">bold 120% Trebuchet MS, Arial, Helvetica, sans-serif</property>
+ <property name="H3_padding">0.6em 0em 0em 0em</property>
+ <property name="H3_margin"></property>
+ <property name="H3_border_width">1px</property>
+ <property name="H3_border_style">none none solid none</property>
+ <property name="H456_font">bold 115% Arial, Helvetica, sans-serif</property>
+ <property name="H456_padding">0.4em 0em 0em 0em</property>
+ <property name="H456_margin"></property>
+ <property name="H456_border_width">0px</property>
+ <property name="H456_border_style">none</property>
+ <property name="P_font">100% Arial, Helvetica, sans-serif</property>
+ <property name="SMALL_font">None</property>
+ <property
+    name="STRONG_font">bold 100% Arial, Helvetica, sans-serif</property>
+ <property name="P_padding">0.3em 0em 0.3em 0em</property>
+ <property name="A_link_decoration">none</property>
+ <property name="A_visited_decoration">none</property>
+ <property name="A_active_decoration">none</property>
+ <property name="A_hover_decoration">none</property>
+ <property name="A_link_border_width">None</property>
+ <property name="A_visited_border_width">None</property>
+ <property name="A_active_border_width">None</property>
+ <property name="A_hover_border_width">None</property>
+ <property name="A_link_border_style">None</property>
+ <property name="A_visited_border_style">None</property>
+ <property name="A_active_border_style">None</property>
+ <property name="A_hover_border_style">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068572497.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068572497.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068572497.xml	(revision 276)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<object name="1068572497" meta_type="Font Shape">
+ <property name="title">ArialClean</property>
+ <property name="default">False</property>
+ <property name="Default_font">12px Arial, Helvetica, sans-serif</property>
+ <property name="H1_font">normal 170% Arial, Helvetica, sans-serif</property>
+ <property name="H1_padding">0.8em 0em 0em 0em</property>
+ <property name="H1_margin"></property>
+ <property name="H1_border_width">0px</property>
+ <property name="H1_border_style">none</property>
+ <property name="H2_font">normal 150% Arial, Helvetica, sans-serif</property>
+ <property name="H2_padding">0em 0em 0em 0em</property>
+ <property name="H2_margin"></property>
+ <property name="H2_border_width">0px</property>
+ <property name="H2_border_style">none</property>
+ <property name="H3_font">bold 120% Arial, Helvetica, sans-serif</property>
+ <property name="H3_padding">0.6em 0em 0em 0em</property>
+ <property name="H3_margin"></property>
+ <property name="H3_border_width">0px</property>
+ <property name="H3_border_style">none</property>
+ <property name="H456_font">bold 115% Arial, Helvetica, sans-serif</property>
+ <property name="H456_padding">0.4em 0em 0em 0em</property>
+ <property name="H456_margin"></property>
+ <property name="H456_border_width">0px</property>
+ <property name="H456_border_style">none</property>
+ <property name="P_font">100% Arial, Helvetica, sans-serif</property>
+ <property name="SMALL_font">None</property>
+ <property
+    name="STRONG_font">normal 12px Trebuchet MS, Verdana, Arial, Helvetica, sans-serif</property>
+ <property name="P_padding">0em</property>
+ <property name="A_link_decoration">none</property>
+ <property name="A_visited_decoration">none</property>
+ <property name="A_active_decoration">none</property>
+ <property name="A_hover_decoration">none</property>
+ <property name="A_link_border_width">None</property>
+ <property name="A_visited_border_width">None</property>
+ <property name="A_active_border_width">None</property>
+ <property name="A_hover_border_width">None</property>
+ <property name="A_link_border_style">None</property>
+ <property name="A_visited_border_style">None</property>
+ <property name="A_active_border_style">None</property>
+ <property name="A_hover_border_style">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068989458.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068989458.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068989458.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="1068989458" meta_type="Area Color">
+ <property name="title">blue</property>
+ <property name="default">False</property>
+ <property name="Area_border_color">#cccccc</property>
+ <property name="Area_bg_color">#516173</property>
+ <property name="Area_bg_image"></property>
+ <property name="Area_bg_position"></property>
+ <property name="Area_bg_repeat">repeat</property>
+ <property name="Area_font_color">#eeeeee</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068989539.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068989539.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1068989539.xml	(revision 276)
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<object name="1068989539" meta_type="Font Color">
+ <property name="title">gray</property>
+ <property name="default">False</property>
+ <property name="H1_font_color">Black</property>
+ <property name="H1_border_color">#666666</property>
+ <property name="H1_bg_color"></property>
+ <property name="H2_font_color">Black</property>
+ <property name="H2_border_color">#666666</property>
+ <property name="H2_bg_color"></property>
+ <property name="H3_font_color">Black</property>
+ <property name="H3_border_color">#666666</property>
+ <property name="H3_bg_color"></property>
+ <property name="H456_font_color">Black</property>
+ <property name="H456_border_color">#666666</property>
+ <property name="H456_bg_color"></property>
+ <property name="A_link">#e0e0e0</property>
+ <property name="A_visited">#e0e0e0</property>
+ <property name="A_active">#e0e0e0</property>
+ <property name="A_hover">#ffffff</property>
+ <property name="A_link_border_color">None</property>
+ <property name="A_visited_border_color">None</property>
+ <property name="A_active_border_color">None</property>
+ <property name="A_hover_border_color">None</property>
+ <property name="A_link_bg_color">None</property>
+ <property name="A_visited_bg_color">None</property>
+ <property name="A_active_bg_color">None</property>
+ <property name="A_hover_bg_color">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1143215.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1143215.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1143215.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="1143215" meta_type="Portal Box Color">
+ <property name="title">Sections</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_bg_color">#eeeeee</property>
+ <property name="BoxTitle_border_color">#666666</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#cccccc</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#cccccc</property>
+ <property name="BoxBody_menuout_color">#d0e0f0</property>
+ <property name="BoxBody_menuout_border_color">#b0b0b0</property>
+ <property name="BoxBody_menuin_color">#ffffff</property>
+ <property
+    name="BoxBody_menuin_border_color">#b0b0b0 #b0b0b0 #ffffff #b0b0b0</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image"></property>
+ <property name="BoxBody_menuin_icon">yellow_bullet.gif</property>
+ <property name="BoxBody_menuout_icon"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1238608771.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1238608771.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/1238608771.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="1238608771" meta_type="Area Shape">
+ <property name="title">AreaShape</property>
+ <property name="default">False</property>
+ <property name="Area_border_style">solid</property>
+ <property name="Area_border_width">1px</property>
+ <property name="Area_text_transform">none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/130505775.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/130505775.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/130505775.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="130505775" meta_type="Portal Box Shape">
+ <property name="title">Tabs</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style"></property>
+ <property name="BoxTitle_border_width"></property>
+ <property name="BoxTitle_padding"></property>
+ <property name="BoxTitle_display">block</property>
+ <property name="BoxBody_border_style"></property>
+ <property name="BoxBody_border_width"></property>
+ <property name="BoxBody_padding">0.5em 0.5em 0.5em 0.5em</property>
+ <property name="BoxBody_menuin_padding">1px 4px 1px 13px</property>
+ <property name="BoxBody_menuout_padding">1px 4px 1px 13px</property>
+ <property name="BoxBody_menuout_border_style"></property>
+ <property name="BoxBody_menuout_border_width"></property>
+ <property name="BoxBody_menuout_margin"></property>
+ <property name="BoxBody_menuin_border_style"></property>
+ <property name="BoxBody_menuin_border_width"></property>
+ <property name="BoxBody_menuin_margin"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/2143215.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/2143215.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/2143215.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="2143215" meta_type="Portal Box Color">
+ <property name="title">Workspaces</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_bg_color">#eeeeee</property>
+ <property name="BoxTitle_border_color">#666666</property>
+ <property name="BoxTitle_bg_position"></property>
+ <property name="BoxTitle_bg_repeat">repeat</property>
+ <property name="BoxBody_bg_color">#e6e2c5</property>
+ <property name="BoxBody_bg_position"></property>
+ <property name="BoxBody_bg_repeat">repeat</property>
+ <property name="BoxBody_border_color">#cccccc</property>
+ <property name="BoxBody_menuout_color">#eff9bf</property>
+ <property name="BoxBody_menuout_border_color">#b0b0b0</property>
+ <property name="BoxBody_menuin_color">#ffffff</property>
+ <property
+    name="BoxBody_menuin_border_color">#b0b0b0 #b0b0b0 #ffffff #b0b0b0</property>
+ <property name="BoxTitle_font_color">Black</property>
+ <property name="BoxTitle_bg_image"></property>
+ <property name="BoxBody_bg_image"></property>
+ <property name="BoxBody_menuin_icon">yellow_bullet.gif</property>
+ <property name="BoxBody_menuout_icon"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/3252634.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/3252634.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/3252634.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="3252634" meta_type="Area Color">
+ <property name="title">brown</property>
+ <property name="default">False</property>
+ <property name="Area_border_color">#999999</property>
+ <property name="Area_bg_color">#ffffff</property>
+ <property name="Area_bg_image"></property>
+ <property name="Area_bg_position"></property>
+ <property name="Area_bg_repeat">repeat</property>
+ <property name="Area_font_color">#000000</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/370538477.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/370538477.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/370538477.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="370538477" meta_type="Form Style">
+ <property name="title">Active</property>
+ <property name="default">False</property>
+ <property name="Form_padding">0.3em</property>
+ <property name="Form_border_color">#eee</property>
+ <property name="Form_border_style">solid</property>
+ <property name="Form_border_width">1px</property>
+ <property name="Form_bg_color">#f7f3f7</property>
+ <property name="Form_font_color">#000</property>
+ <property name="Element_padding">None</property>
+ <property name="Element_border_color">#bbb</property>
+ <property name="Element_active_border_color">#fc3</property>
+ <property name="Element_border_style">solid</property>
+ <property name="Element_border_width">1px</property>
+ <property name="Element_bg_color"></property>
+ <property name="Element_active_bg_color">#ffd</property>
+ <property name="Element_font_color"></property>
+ <property name="Button_padding">None</property>
+ <property name="Button_border_color">None</property>
+ <property name="Button_border_style">None</property>
+ <property name="Button_border_width">None</property>
+ <property name="Button_bg_color">None</property>
+ <property name="Button_hover_bg_color">None</property>
+ <property name="Button_bg_image">None</property>
+ <property name="Button_hover_bg_image">None</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/423235.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/423235.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/423235.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="423235" meta_type="Area Color">
+ <property name="title">LimeGreen</property>
+ <property name="default">False</property>
+ <property name="Area_border_color">#CCCCCC</property>
+ <property name="Area_bg_color">#eff9bf</property>
+ <property name="Area_bg_image"></property>
+ <property name="Area_bg_position"></property>
+ <property name="Area_bg_repeat">repeat</property>
+ <property name="Area_font_color">#000000</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/628279931.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/628279931.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/628279931.xml	(revision 276)
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<object name="628279931" meta_type="Portal Tab Style">
+ <property name="title">PortalTabStyle</property>
+ <property name="default">False</property>
+ <property name="HorizontalMargin">1px</property>
+ <property name="VerticalPadding">3px</property>
+ <property name="HorizontalPadding">20px</property>
+ <property name="Tab_width"></property>
+ <property name="Tabs_bg_image"></property>
+ <property name="Tab_bottom_border_color"></property>
+ <property name="TabIn_bottom_border_color"></property>
+ <property name="Tab_left_bg_image"></property>
+ <property name="Tab_right_bg_image"></property>
+ <property name="TabIn_left_bg_image"></property>
+ <property name="TabIn_right_bg_image"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/dfg.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/dfg.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/dfg.xml	(revision 276)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="dfg" meta_type="Area Shape">
+ <property name="title">Solid</property>
+ <property name="default">False</property>
+ <property name="Area_border_style">dashed</property>
+ <property name="Area_border_width">1px</property>
+ <property name="Area_text_transform">none</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/sdaf.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/sdaf.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/styles/sdaf.xml	(revision 276)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<object name="sdaf" meta_type="Portal Box Shape">
+ <property name="title">LightSkins</property>
+ <property name="default">False</property>
+ <property name="BoxTitle_font"></property>
+ <property name="BoxTitle_border_style">none solid none none</property>
+ <property name="BoxTitle_border_width">1px</property>
+ <property name="BoxTitle_padding">0em 1.2em 0em 0.9em</property>
+ <property name="BoxTitle_display">inline</property>
+ <property name="BoxBody_border_style">none solid solid solid</property>
+ <property name="BoxBody_border_width">1px</property>
+ <property name="BoxBody_padding">0.5em 0.5em 0.5em 0.5em</property>
+ <property name="BoxBody_menuin_padding">1px 0px 0px 2px</property>
+ <property name="BoxBody_menuout_padding">2px 0px 1px 2px</property>
+ <property name="BoxBody_menuout_border_style">none</property>
+ <property name="BoxBody_menuout_border_width">1px</property>
+ <property name="BoxBody_menuout_margin">1px 3px 1px 3px</property>
+ <property name="BoxBody_menuin_border_style">inset</property>
+ <property name="BoxBody_menuin_border_width">1px</property>
+ <property name="BoxBody_menuin_margin">0px 3px 0px 3px</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/thumbnails.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/thumbnails.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/themes/waeup_plain_theme/thumbnails.xml	(revision 276)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<object name="thumbnails" meta_type="Theme Folder">
+ <property name="title"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/trees.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/trees.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/trees.xml	(revision 276)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="portal_trees" meta_type="CPS Trees Tool">
+ <object name="sections" meta_type="CPS Tree Cache"/>
+ <object name="workspaces" meta_type="CPS Tree Cache"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/trees/sections.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/trees/sections.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/trees/sections.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="sections" meta_type="CPS Tree Cache">
+ <property name="title">sections Cache</property>
+ <property name="root">sections</property>
+ <property name="type_names">
+  <element value="Section"/>
+  <element value="FAQ"/>
+  <element value="ImageGallery"/>
+  <element value="Glossary"/>
+  <element value="Book"/>
+  <element value="Chapter"/>
+  <element value="Wiki"/>
+ </property>
+ <property name="meta_types">
+  <element value="CPS Proxy Folder"/>
+  <element value="CPS Proxy Document"/>
+  <element value="CPS Proxy Folderish Document"/>
+  <element value="CPS Proxy BTree Folder"/>
+  <element value="CPS Proxy BTree Folderish Folder"/>
+ </property>
+ <property name="excluded_rpaths"/>
+ <property name="info_method">getFolderInfo</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/trees/workspaces.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/trees/workspaces.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/trees/workspaces.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="workspaces" meta_type="CPS Tree Cache">
+ <property name="title">workspaces Cache</property>
+ <property name="root">workspaces</property>
+ <property name="type_names">
+  <element value="Workspace"/>
+  <element value="FAQ"/>
+  <element value="ImageGallery"/>
+  <element value="Glossary"/>
+  <element value="Book"/>
+  <element value="Chapter"/>
+  <element value="Wiki"/>
+ </property>
+ <property name="meta_types">
+  <element value="CPS Proxy Folder"/>
+  <element value="CPS Proxy Document"/>
+  <element value="CPS Proxy Folderish Document"/>
+  <element value="CPS Proxy BTree Folder"/>
+  <element value="CPS Proxy BTree Folderish Folder"/>
+ </property>
+ <property name="excluded_rpaths"/>
+ <property name="info_method">getFolderInfo</property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types.xml	(revision 276)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<object name="portal_types" meta_type="CMF Types Tool">
+ <property name="title"></property>
+ <object name="AcademicsFolder" meta_type="CPS Flexible Type Information"/>
+ <object name="AccoFolder" meta_type="CPS Flexible Type Information"/>
+ <object name="Accommodation" meta_type="CPS Flexible Type Information"/>
+ <object name="Certificate" meta_type="CPS Flexible Type Information"/>
+ <object name="Course" meta_type="CPS Flexible Type Information"/>
+ <object name="CertificateCourse" meta_type="CPS Flexible Type Information"/>
+ <object name="CourseTicket" meta_type="CPS Flexible Type Information"/>
+ <object name="Department" meta_type="CPS Flexible Type Information"/>
+ <object name="Faculty" meta_type="CPS Flexible Type Information"/>
+ <object name="Jamb" meta_type="CPS Flexible Type Information"/>
+ <object name="ScratchCard" meta_type="CPS Flexible Type Information"/>
+ <object name="Semester" meta_type="CPS Flexible Type Information"/>
+ <object name="SCFolder" meta_type="CPS Flexible Type Information"/>
+ <object name="Student" meta_type="CPS Flexible Type Information"/>
+ <object name="StudentDocuments" meta_type="CPS Flexible Type Information"/>
+ <object name="StudentEligibility" meta_type="CPS Flexible Type Information"/>
+ <object name="StudentPersonal" meta_type="CPS Flexible Type Information"/>
+ <object name="StudentsFolder" meta_type="CPS Flexible Type Information"/>
+ <object name="StudyLevel" meta_type="CPS Flexible Type Information"/>
+ <object name="University" meta_type="CPS Flexible Type Information"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/AcademicsFolder.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/AcademicsFolder.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/AcademicsFolder.xml	(revision 276)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<object name="AcademicsFolder" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Academics Folder</property>
+ <property name="description">The WAeUP Academics Folder</property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">AcademicsFolder</property>
+ <property name="product">CPSDefault</property>
+ <property name="factory">addFolder</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Faculty"/>
+  <element value="SCFolder"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="folder"/>
+ </property>
+ <property name="layouts">
+  <element value="common"/>
+  <element value="folder"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Add Faculty" action_id="add_faculty" category="object"
+    condition_expr="python:True or member and 'UniversityManager'in member.getRoles()"
+    url_expr="string:${object/absolute_url}/create_common?type_name=Faculty"
+    visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/folder_contents"
+    visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/AccoFolder.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/AccoFolder.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/AccoFolder.xml	(revision 276)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<object name="AccoFolder" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Accommodation Folder</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">AccoFolder</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addAccoFolder</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Accommodation"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+ </property>
+ <property name="layouts">
+  <element value="common"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Add Accommodation Hall" action_id="add_accommodation"
+    category="object" condition_expr=""
+    url_expr="string:${object_url}/add_accommodation" visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="University Manage"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Accommodation.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Accommodation.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Accommodation.xml	(revision 276)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<object name="Accommodation" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Accommodation</property>
+ <property name="description"></property>
+ <property name="content_icon">student.gif</property>
+ <property name="content_meta_type">Accommodation</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addAccommodation</property>
+ <property name="immediate_view">cpsdocument_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="accommodation"/>
+ </property>
+ <property name="layouts">
+  <element value="accommodation"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="" url_expr="string:${object_url}/waeup_edit_form"
+    visible="True">
+  <permission value="University Manage"/>
+  <permission value="Student Manage"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Certificate.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Certificate.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Certificate.xml	(revision 276)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<object name="Certificate" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Certificate</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">Certificate</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addCertificate</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="CertificateCourse"/>
+  <element value="Semester"/>
+  <element value="StudyLevel"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="certificate"/>
+ </property>
+ <property name="layouts">
+  <element value="certificate"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/folder_contents"
+    visible="True"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/CertificateCourse.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/CertificateCourse.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/CertificateCourse.xml	(revision 276)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<object name="CertificateCourse" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Certificate Course </property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">CertificateCourse</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addCertificateCourse</property>
+ <property name="immediate_view">cpsdocument_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type"></property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="certificate_course"/>
+ </property>
+ <property name="layouts">
+  <element value="waeup_common"/>
+  <element value="certificate_course"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="" url_expr="string:${object_url}/waeup_edit_form"
+    visible="True"/>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="False"/>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="True"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Course.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Course.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Course.xml	(revision 276)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<object name="Course" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Course</property>
+ <property name="description"></property>
+ <property name="content_icon">student.gif</property>
+ <property name="content_meta_type">Course</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addCourse</property>
+ <property name="immediate_view">cpsdocument_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">document</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="course"/>
+ </property>
+ <property name="layouts">
+  <element value="course"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="" url_expr="string:${object_url}/waeup_edit_form"
+    visible="True">
+  <permission value="Course Manage"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/folder_contents" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/CourseTicket.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/CourseTicket.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/CourseTicket.xml	(revision 276)
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<object name="CourseTicket" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Course Ticket</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">CourseTicket</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addCourseTicket</property>
+ <property name="immediate_view">cpsdocument_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">cpsdocument</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="course"/>
+  <element value="course_results"/>
+ </property>
+ <property name="layouts">
+  <element value="waeup_common"/>
+  <element value="course"/>
+  <element value="course_results"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Department.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Department.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Department.xml	(revision 276)
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<object name="Department" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Department</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">Department</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addDepartment</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Certificate"/>
+  <element value="Course"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">btreefolderishdocument</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="department"/>
+ </property>
+ <property name="layouts">
+  <element value="department"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Add Course" action_id="create_course" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/create_course"
+    visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/folder_contents" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Faculty.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Faculty.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Faculty.xml	(revision 276)
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<object name="Faculty" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Faculty</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">Faculty</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addFaculty</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Department"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">btreefolderishdocument</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="faculty"/>
+ </property>
+ <property name="layouts">
+  <element value="faculty"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Add Department" action_id="add_department" category="object"
+    condition_expr=""
+    url_expr="string:${object/absolute_url}/create_common?type_name=Department"
+    visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_contents"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Add Faculty" action_id="add_faculty" category="object"
+    condition_expr="python:member and 'UniversityManager'in member.getRoles()"
+    url_expr="string:${object/absolute_url}/create_common?type_name=Faculty"
+    visible="True">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Jamb.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Jamb.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Jamb.xml	(revision 276)
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<object name="Jamb" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">JAMB data</property>
+ <property name="description">The data from JAMB</property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">Jamb</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addJamb</property>
+ <property name="immediate_view">cpsdocument_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">document</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="jamb"/>
+ </property>
+ <property name="layouts">
+  <element value="jamb"/>
+ </property>
+ <property name="layout_clusters"/>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods">
+  <element value="admitted:store_admission_pin"/>
+ </property>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="" url_expr="string:${object_url}/waeup_edit_form"
+    visible="True"/>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Add Content" action_id="add_content" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object/absolute_url}/folder_factories"
+    visible="False"/>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="False"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/SCFolder.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/SCFolder.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/SCFolder.xml	(revision 276)
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<object name="SCFolder" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP StudyCourse Folder</property>
+ <property name="description">The WAeUP StudyCourses Folder</property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">SCFolder</property>
+ <property name="product">CPSDefault</property>
+ <property name="factory">addFolder</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Certificate"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="folder"/>
+ </property>
+ <property name="layouts">
+  <element value="common"/>
+  <element value="folder"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Add Certificate" action_id="add_certificate" category="object"
+    condition_expr="python:True or member and 'UniversityManager'in member.getRoles()"
+    url_expr="string:${object/absolute_url}/create_certificate"
+    visible="True"/>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/folder_contents"
+    visible="True"/>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/ScratchCard.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/ScratchCard.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/ScratchCard.xml	(revision 276)
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<object name="ScratchCard" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Scratchcard</property>
+ <property name="description"></property>
+ <property name="content_icon">student.gif</property>
+ <property name="content_meta_type">Scratch Card</property>
+ <property name="product">CPSDocument</property>
+ <property name="factory">addCPSDocument</property>
+ <property name="immediate_view">cpsdocument_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">document</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="scratch_card"/>
+ </property>
+ <property name="layouts">
+  <element value="scratch_card"/>
+ </property>
+ <property name="layout_clusters"/>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="cpsdocument_view"/>
+ <alias from="view" to="cpsdocument_view"/>
+ <action title="action_view" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/cpsdocument_view"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_new_content" action_id="new_content" category="object"
+    condition_expr="python:object.getTypeInfo().cps_proxy_type != 'document'"
+    url_expr="string:${object_url}/folder_factories" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="python:object.getTypeInfo().cps_proxy_type != 'document'"
+    url_expr="string:${object_url}/folder_contents" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="" url_expr="string:${object_url}/cpsdocument_edit_form"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="not:portal/portal_membership/isAnonymousUser"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_local_roles" action_id="localroles" category="object"
+    condition_expr="python:object.getTypeInfo().cps_proxy_type != 'document'"
+    url_expr="string:${object_url}/folder_localrole_form" visible="True">
+  <permission value="Change permissions"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Semester.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Semester.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Semester.xml	(revision 276)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<object name="Semester" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Semester Folder</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">Semester</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addSemester</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="CourseTicket"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+ </property>
+ <property name="layouts">
+  <element value="waeup_common"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Book Semester Courses" action_id="book_semester_courses"
+    category="object" condition_expr=""
+    url_expr="string:${object_url}/book_semester_courses" visible="True">
+  <permission value="Take ownership"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="University Manage"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="Modify portal content"/>
+  <permission value="University Manage"/>
+  <permission value="Student Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/Student.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/Student.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/Student.xml	(revision 276)
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<object name="Student" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Student</property>
+ <property name="description"></property>
+ <property name="content_icon">student.gif</property>
+ <property name="content_meta_type">Student</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addStudent</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Jamb"/>
+  <element value="StudentDocuments"/>
+  <element value="StudentPersonal"/>
+  <element value="StudyLevel"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="student"/>
+ </property>
+ <property name="layouts">
+  <element value="waeup_common"/>
+  <element value="student"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="python:object.getContent().memberIsOwner() or (member and 'UniversityManager'in member.getRoles())"
+    url_expr="string:${object_url}/temporary_view_all" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="False">
+  <permission value="University Manage"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/folder_contents"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+ <action title="Personal Data" action_id="PERSONAL" category="object"
+    condition_expr="python: object.getContent().memberIsOwner() and getattr(object,'PERSONAL',None)"
+    url_expr="string:${object/absolute_url}/PERSONAL" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Eligibility Data" action_id="eligibility" category="object"
+    condition_expr="object/memberIsOwner"
+    url_expr="string:${object_url}/ELIGIBILITY" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Scanned Documents" action_id="DOCUMENTS" category="object"
+    condition_expr="python: object.getContent().memberIsOwner() and getattr(object,'PERSONAL',None)"
+    url_expr="string:${object/absolute_url}/DOCUMENTS" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Register for Next Level" action_id="register_study_level"
+    category="object"
+    condition_expr="python: object.getContent().memberIsOwner() and not object.getContent().isRegisteredForCurrentLevel()"
+    url_expr="string:${object/absolute_url}/register_level" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Book Accomodation" action_id="book_accomodation"
+    category="object"
+    condition_expr="python: object.getContent().memberIsOwner() and not object.getContent().accommodationIsBooked()"
+    url_expr="string:${object/absolute_url}/book_accommodation"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Pay Hostel Fee" action_id="pay_hostel_fee" category="object"
+    condition_expr="python: object.getContent().memberIsOwner() and not object.getContent().accommodationIsPayed()"
+    url_expr="string:${object/absolute_url}/pay_hostel_fee" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="(JAMB Data)" action_id="JAMB" category="object"
+    condition_expr="python:object.getContent().memberIsOwner()"
+    url_expr="string:${object/absolute_url}/JAMB" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/StudentDocuments.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/StudentDocuments.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/StudentDocuments.xml	(revision 276)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<object name="StudentDocuments" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Students documents data</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">StudentDocuments</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addStudentDocuments</property>
+ <property name="immediate_view">temporary_view_all</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">document</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="student_documents"/>
+ </property>
+ <property name="layouts">
+  <element value="student_documents"/>
+ </property>
+ <property name="layout_clusters"/>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr=""
+    url_expr="string:${object_url}/student_documents_edit_form"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/StudentEligibility.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/StudentEligibility.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/StudentEligibility.xml	(revision 276)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<object name="StudentEligibility" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Student eligibility data</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">StudentEligibility</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addStudentEligibility</property>
+ <property name="immediate_view">temporary_view_all</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">document</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="student_eligibility"/>
+ </property>
+ <property name="layouts">
+  <element value="student_eligibility"/>
+ </property>
+ <property name="layout_clusters"/>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="" url_expr="string:${object_url}/eligibility"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="False">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/StudentPersonal.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/StudentPersonal.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/StudentPersonal.xml	(revision 276)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<object name="StudentPersonal" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Student personal data</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">StudentPersonal</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addStudentPersonal</property>
+ <property name="immediate_view">temporary_view_all</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">document</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="student_personal"/>
+ </property>
+ <property name="layouts">
+  <element value="student_personal"/>
+ </property>
+ <property name="layout_clusters"/>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr=""
+    url_expr="string:${object_url}/student_personal_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/StudentsFolder.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/StudentsFolder.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/StudentsFolder.xml	(revision 276)
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<object name="StudentsFolder" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Student Folder</property>
+ <property name="description">The WAeUP Student Folder</property>
+ <property name="content_icon">students_folder.gif</property>
+ <property name="content_meta_type">StudentsFolder</property>
+ <property name="product">CPSDefault</property>
+ <property name="factory">addFolder</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Student"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">btreefolder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="folder"/>
+ </property>
+ <property name="layouts">
+  <element value="common"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Add JAMB Data" action_id="add_jamb" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/create_jamb"
+    visible="True">
+  <permission value="University Manage"/>
+ </action>
+ <action title="Check Admission Status" action_id="check_admission"
+    category="object"
+    condition_expr="object/portal_membership/isAnonymousUser"
+    url_expr="string:${object/absolute_url}/check_admission" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Clearance Eligibility Process" action_id="admission_list"
+    category="object"
+    condition_expr="object/portal_membership/isAnonymousUser"
+    url_expr="string:${object/absolute_url}/clearance" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="" url_expr="string:${object/absolute_url}/folder_contents"
+    visible="False">
+  <permission value="University Manage"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/StudyLevel.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/StudyLevel.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/StudyLevel.xml	(revision 276)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<object name="StudyLevel" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Study Level Folder</property>
+ <property name="description"></property>
+ <property name="content_icon"></property>
+ <property name="content_meta_type">StudyLevel</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addStudyLevel</property>
+ <property name="immediate_view">folder_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Semester"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+ </property>
+ <property name="layouts">
+  <element value="waeup_common"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/level_view"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Register for Next Year" action_id="add_level"
+    category="object"
+    condition_expr="python:member and 'Student'in member.getRoles()"
+    url_expr="string:${object_url}/register_level" visible="True"/>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="True"/>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="False"/>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/types/University.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/types/University.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/types/University.xml	(revision 276)
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<object name="University" meta_type="CPS Flexible Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">WAeUP Base Folder</property>
+ <property name="description">The WAeUP Container</property>
+ <property name="content_icon">students_folder.gif</property>
+ <property name="content_meta_type">University</property>
+ <property name="product">WAeUP_SRP</property>
+ <property name="factory">addUniversity</property>
+ <property name="immediate_view">university_view_all</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="AcademicsFolder"/>
+  <element value="AccoFolder"/>
+  <element value="Chat"/>
+  <element value="FAQ"/>
+  <element value="Section"/>
+  <element value="StudentsFolder"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="cps_is_searchable">True</property>
+ <property name="cps_proxy_type">folder</property>
+ <property name="cps_display_as_document_in_listing">True</property>
+ <property name="schemas">
+  <element value="metadata"/>
+  <element value="common"/>
+  <element value="folder"/>
+ </property>
+ <property name="layouts">
+  <element value="common"/>
+ </property>
+ <property name="layout_clusters">
+  <element value="metadata:metadata"/>
+ </property>
+ <property name="flexible_layouts"/>
+ <property name="storage_methods"/>
+ <property name="cps_is_portlet">False</property>
+ <alias from="(Default)" to="temporary_view_all"/>
+ <alias from="view" to="temporary_view_all"/>
+ <action title="Standard View" action_id="view" category="object"
+    condition_expr="" url_expr="string:${object_url}/temporary_view_all"
+    visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="New content" action_id="new_content" category="object"
+    condition_expr="python:member and  'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/folder_factories" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_folder_contents" action_id="contents" category="object"
+    condition_expr="python:member and  'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/folder_contents" visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_edit" action_id="edit" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="action_metadata" action_id="metadata" category="object"
+    condition_expr="python:member and 'Manager' in member.getRoles()"
+    url_expr="string:${object_url}/cpsdocument_metadata" visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="delegate" action_id="localroles" category="object"
+    condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="portal_vocabularies" meta_type="CPS Vocabularies Tool">
+ <property name="title"></property>
+ <object name="courselevel" meta_type="CPS Vocabulary"/>
+ <object name="faculties" meta_type="CPS Vocabulary"/>
+ <object name="get_departments_voc" meta_type="CPS Method Vocabulary"/>
+ <object name="get_faculties_voc" meta_type="CPS Method Vocabulary"/>
+ <object name="waeup_bed_letters" meta_type="CPS Vocabulary"/>
+ <object name="nigerian_states" meta_type="CPS Vocabulary"/>
+ <object name="range10" meta_type="CPS Vocabulary"/>
+ <object name="range20" meta_type="CPS Vocabulary"/>
+ <object name="range5" meta_type="CPS Vocabulary"/>
+ <object name="range50" meta_type="CPS Vocabulary"/>
+ <object name="semester_voc" meta_type="CPS Vocabulary"/>
+ </object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/courselevel.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/courselevel.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/courselevel.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="courselevel" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="100" msgid="">Year 1 (100 Level)</item>
+ <item key="200" msgid="">Year 2 (200 Level)</item>
+ <item key="300" msgid="">Year 3 (300 Level)</item>
+ <item key="400" msgid="">Year 4 (400 Level)</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_additem_display_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_additem_display_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_additem_display_voc.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_additem_display_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="dropdown_list"
+    msgid="cpsportlets_additem_dropdown_list_label">Dropdown list</item>
+ <item key="standard_menu"
+    msgid="cpsportlets_additem_standard_menu_label">Standard menu</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_bcs_display_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_bcs_display_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_bcs_display_voc.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_bcs_display_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="dropdown_list"
+    msgid="cpsportlets_bcs_display_dropdown_list_label">Drop down list</item>
+ <item key="horizontal_trail"
+    msgid="cpsportlets_bcs_display_horizontal_trail_label">Horizontal trail</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_portal_types_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_portal_types_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_portal_types_voc.xml	(revision 276)
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_content_portal_types_voc"
+   meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property
+    name="get_vocabulary_method">getSearchableTypesVocabulary</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_search_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_search_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_search_voc.xml	(revision 276)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_content_search_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="all"
+    msgid="cpsportlets_content_search_all_label">All documents</item>
+ <item key="related"
+    msgid="cpsportlets_content_search_related_label">Related</item>
+ <item key="pending"
+    msgid="cpsportlets_content_search_pending_label">Pending</item>
+ <item key="last_modified"
+    msgid="cpsportlets_content_search_last_modified_label">Last modified</item>
+ <item key="last_published"
+    msgid="cpsportlets_content_search_last_published_label">Last published</item>
+ <item key="recent"
+    msgid="cpsportlets_content_search_recent_label">Recent</item>
+ <item key="upcoming"
+    msgid="cpsportlets_content_search_upcoming_label">Upcoming</item>
+ <item key="today" msgid="cpsportlets_content_search_today_label">Today</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_sort_on_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_sort_on_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_content_sort_on_voc.xml	(revision 276)
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_content_sort_on_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="Title"
+    msgid="cpsportlets_content_sort_on_Title_label">Title</item>
+ <item key="Date" msgid="cpsportlets_content_sort_on_Date_label">Date</item>
+ <item key="review_state"
+    msgid="cpsportlets_content_sort_on_review_state_label">Review state</item>
+ <item key="Creator"
+    msgid="cpsportlets_content_sort_on_Creator_label">Creator</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_language_action_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_language_action_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_language_action_voc.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_language_action_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="translate"
+    msgid="cpsportlets_language_action_translate_label">Translate</item>
+ <item key="delete_translation"
+    msgid="cpsportlets_language_action_delete_translation_label">Delete translation</item>
+ <item key="switch_language"
+    msgid="cpsportlets_language_action_switch_language_label">Switch language</item>
+ <item key="change"
+    msgid="cpsportlets_language_action_change_label">Change language</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_navigation_display_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_navigation_display_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_navigation_display_voc.xml	(revision 276)
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_navigation_display_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="navigation_tree"
+    msgid="cpsportlets_nav_display_navtree_menu_label">Navigation tree</item>
+ <item key="folder_contents"
+    msgid="cpsportlets_nav_display_folder_contents_menu_label">Folder contents</item>
+ <item key="folder_contents_dropdown_list"
+    msgid="cpsportlets_nav_display_folder_contents_dropdown_list_label">Folder contents (drop-down list)</item>
+ <item key="collapsible_menu"
+    msgid="cpsportlets_nav_display_collapsible_menu_label">Collapsible menu</item>
+ <item key="site_map"
+    msgid="cpsportlets_nav_display_site_map_label">Site map</item>
+ <item key="extended_site_map"
+    msgid="cpsportlets_nav_display_extended_site_map_label">Extended site map</item>
+ <item key="vertical_breadcrumbs_menu"
+    msgid="cpsportlets_nav_display_vertical_breadcrumbs_menu_label">Vertical breadcrumbs menu</item>
+ <item key="subfolder_contents"
+    msgid="cpsportlets_nav_display_subfolder_contents_menu_label">Sub-folder contents</item>
+ <item key="up_to_parent"
+    msgid="cpsportlets_nav_display_up_to_parent_label">Up to parent folder</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_rss_channels_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_rss_channels_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_rss_channels_voc.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_rss_channels_voc" meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="get_vocabulary_method">getRSSChannelsVocabulary</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_syndication_formats_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_syndication_formats_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_syndication_formats_voc.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_syndication_formats_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="rss_1_0" msgid="cpsportlets_syndication_rss_1_0_label">RSS</item>
+ <item key="rss_2_0" msgid="cpsportlets_syndication_rss_2_0_label">RSS</item>
+ <item key="atom_0_3"
+    msgid="cpsportlets_syndication_atom_0_3_label">ATOM</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_visibility_range_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_visibility_range_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/cpsportlets_visibility_range_voc.xml	(revision 276)
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<object name="cpsportlets_visibility_range_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="0-0"
+    msgid="cpsportlets_visibility_range_0-0_label">In this folder and in all subfolders</item>
+ <item key="0-1"
+    msgid="cpsportlets_visibility_range_0-1_label">Only in this folder</item>
+ <item key="1-0"
+    msgid="cpsportlets_visibility_range_1-0_label">Only in subfolders</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/dummy_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/dummy_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/dummy_voc.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="dummy_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="news" msgid="">News</item>
+ <item key="society" msgid="">Society</item>
+ <item key="technology" msgid="">Technology</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/faculties.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/faculties.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/faculties.xml	(revision 276)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<object name="faculties" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="agri" msgid="">Agriculture</item>
+ <item key="arts" msgid="">Arts</item>
+ <item key="bmed" msgid="">Basic Med Sciences</item>
+ <item key="edu" msgid="">Education</item>
+ <item key="eng" msgid="">Engeneering</item>
+ <item key="law" msgid="">Law</item>
+ <item key="phar" msgid="">Pharmacy</item>
+ <item key="sod" msgid="">School of Denistry</item>
+ <item key="som" msgid="">School of Medicine</item>
+ <item key="sci" msgid="">Science</item>
+ <item key="soc" msgid="">Social Science</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/forum_tree_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/forum_tree_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/forum_tree_voc.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="forum_tree_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="title" msgid="forum_label_display_title">Title</item>
+ <item key="200fc" msgid="forum_label_display_200_fc">200FirstChars</item>
+ <item key="msg" msgid="forum_label_display_msg">Message</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/forum_wf_display_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/forum_wf_display_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/forum_wf_display_voc.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="forum_wf_display_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="wf_icon" msgid="forum_label_display_wf_icon">Icons</item>
+ <item key="wf_txt"
+    msgid="forum_label_display_wf_txt">Text (additional column)</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/get_departments_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/get_departments_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/get_departments_voc.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="get_departments_voc" meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="get_vocabulary_method">get_departments_voc</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/get_faculties_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/get_faculties_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/get_faculties_voc.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="get_faculties_voc" meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="get_vocabulary_method">get_faculties_voc</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/global_roles.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/global_roles.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/global_roles.xml	(revision 276)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="global_roles" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="Member" msgid="label_cpsdir_roles_Member">Member</item>
+ <item key="Manager" msgid="label_cpsdir_roles_Manager">Manager</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/groups.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/groups.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/groups.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="groups" meta_type="CPS Directory Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="directory">groups</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/language_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/language_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/language_voc.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="language_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="fr" msgid="label_language_fr">Français</item>
+ <item key="en" msgid="label_language_en">English</item>
+ <item key="es" msgid="label_language_es">Castellano</item>
+ <item key="de" msgid="label_language_de">Deutsch</item>
+ <item key="it" msgid="label_language_it">Italiano</item>
+ <item key="nl" msgid="label_language_nl">Nederlands</item>
+ <item key="pt_BR" msgid="label_language_pt_BR">Brasileiro</item>
+ <item key="mg" msgid="label_language_mg">Malagasy</item>
+ <item key="ro" msgid="label_language_ro">Romana</item>
+ <item key="eu" msgid="label_language_eu">Euskara</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/members.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/members.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/members.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="members" meta_type="CPS Directory Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="directory">members</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_display_mode.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_display_mode.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_display_mode.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="navigation_display_mode" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="tree">Navigation</item>
+ <item key="search">Search</item>
+ <item key="options">Options</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_listing_ptypes.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_listing_ptypes.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_listing_ptypes.xml	(revision 276)
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<object name="navigation_filter_listing_ptypes"
+   meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property
+    name="get_vocabulary_method">getVocabularyListingFilterTypes</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_review_state.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_review_state.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_review_state.xml	(revision 276)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="navigation_filter_review_state" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="" msgid="choose">choose</item>
+ <item key="work" msgid="work">Work</item>
+ <item key="pending" msgid="pending">Pending</item>
+ <item key="published" msgid="published">Published</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_tree_ptypes.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_tree_ptypes.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_filter_tree_ptypes.xml	(revision 276)
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<object name="navigation_filter_tree_ptypes"
+   meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property
+    name="get_vocabulary_method">getVocabularyTreeFilterTypes</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_direction.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_direction.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_direction.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="navigation_sort_direction" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="">choose</item>
+ <item key="asc">Ascendant</item>
+ <item key="desc">Descendant</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_listing_by.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_listing_by.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_listing_by.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="navigation_sort_listing_by" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="">choose</item>
+ <item key="date">Modified date</item>
+ <item key="time">Last workflow transition</item>
+ <item key="review_state">Review State</item>
+ <item key="Title">Title</item>
+ <item key="Subject">Subject</item>
+ <item key="Creator">Creator</item>
+ <item key="portal_type">Type</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_tree_by.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_tree_by.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/navigation_sort_tree_by.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="navigation_sort_tree_by" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="">choose</item>
+ <item key="id">Id</item>
+ <item key="title">Title</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/nigerian_states.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/nigerian_states.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/nigerian_states.xml	(revision 276)
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<object name="nigerian_states" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="abia" msgid="">Abia</item>
+ <item key="adam" msgid="">Adamawa</item>
+ <item key="akwa" msgid="">Akwa Ibom</item>
+ <item key="anam" msgid="">Anambra</item>
+ <item key="bauchi" msgid="">Bauchi</item>
+ <item key="baye" msgid="">Bayelsa</item>
+ <item key="benu" msgid="">Benue</item>
+ <item key="born" msgid="">Borno</item>
+ <item key="cro" msgid="">Cross River</item>
+ <item key="delt" msgid="">Delta</item>
+ <item key="ebon" msgid="">Ebonyi</item>
+ <item key="edo" msgid="">edo</item>
+ <item key="ekit" msgid="">Ekiti</item>
+ <item key="enug" msgid="">Enugu</item>
+ <item key="gomb" msgid="">Gombe</item>
+ <item key="imo" msgid="">Imo</item>
+ <item key="jiga" msgid="">Jigawa</item>
+ <item key="kad" msgid="">Kaduna</item>
+ <item key="kano" msgid="">Kano</item>
+ <item key="kats" msgid="">Katsina</item>
+ <item key="keb" msgid="">Kebbi</item>
+ <item key="kogi" msgid="">Kogi</item>
+ <item key="kwar" msgid="">Kwara</item>
+ <item key="lag" msgid="">Lagos</item>
+ <item key="nasa" msgid="">Nasawara</item>
+ <item key="nige" msgid="">Niger</item>
+ <item key="ogun" msgid="">Ogun</item>
+ <item key="ondo" msgid="">Ondo</item>
+ <item key="osun" msgid="">Osun</item>
+ <item key="oyo" msgid="">oyo</item>
+ <item key="plat" msgid="">Plateau</item>
+ <item key="riv" msgid="">Rivers</item>
+ <item key="sok" msgid="">Sokoto</item>
+ <item key="tar" msgid="">Taraba</item>
+ <item key="yobe" msgid="">Yobe</item>
+ <item key="zam" msgid="">Zamfara</item>
+ <item key="fct" msgid="">FCT</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/range10.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/range10.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/range10.xml	(revision 276)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<object name="range10" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="1" msgid="">1</item>
+ <item key="2" msgid="">2</item>
+ <item key="3" msgid="">3</item>
+ <item key="4" msgid="">4</item>
+ <item key="5" msgid="">5</item>
+ <item key="6" msgid="">6</item>
+ <item key="7" msgid="">7</item>
+ <item key="8" msgid="">8</item>
+ <item key="9" msgid="">9</item>
+ <item key="10" msgid="">10</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/range20.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/range20.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/range20.xml	(revision 276)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<object name="range20" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="1" msgid="">1</item>
+ <item key="2" msgid="">2</item>
+ <item key="3" msgid="">3</item>
+ <item key="4" msgid="">4</item>
+ <item key="5" msgid="">5</item>
+ <item key="6" msgid="">6</item>
+ <item key="7" msgid="">7</item>
+ <item key="8" msgid="">8</item>
+ <item key="9" msgid="">9</item>
+ <item key="10" msgid="">10</item>
+ <item key="11" msgid="">11</item>
+ <item key="12" msgid="">12</item>
+ <item key="13" msgid="">13</item>
+ <item key="14" msgid="">14</item>
+ <item key="15" msgid="">15</item>
+ <item key="16" msgid="">16</item>
+ <item key="17" msgid="">17</item>
+ <item key="18" msgid="">18</item>
+ <item key="19" msgid="">19</item>
+ <item key="20" msgid="">20</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/range5.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/range5.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/range5.xml	(revision 276)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<object name="range5" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="1" msgid="">1</item>
+ <item key="2" msgid="">2</item>
+ <item key="3" msgid="">3</item>
+ <item key="4" msgid="">4</item>
+ <item key="5" msgid="">5</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/range50.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/range50.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/range50.xml	(revision 276)
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<object name="range50" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="1" msgid="">1</item>
+ <item key="2" msgid="">2</item>
+ <item key="3" msgid="">3</item>
+ <item key="4" msgid="">4</item>
+ <item key="5" msgid="">5</item>
+ <item key="6" msgid="">6</item>
+ <item key="7" msgid="">7</item>
+ <item key="8" msgid="">8</item>
+ <item key="9" msgid="">9</item>
+ <item key="10" msgid="">10</item>
+ <item key="11" msgid="">11</item>
+ <item key="12" msgid="">12</item>
+ <item key="13" msgid="">13</item>
+ <item key="14" msgid="">14</item>
+ <item key="15" msgid="">15</item>
+ <item key="16" msgid="">16</item>
+ <item key="17" msgid="">17</item>
+ <item key="18" msgid="">18</item>
+ <item key="19" msgid="">19</item>
+ <item key="20" msgid="">20</item>
+ <item key="21" msgid="">21</item>
+ <item key="22" msgid="">22</item>
+ <item key="23" msgid="">23</item>
+ <item key="24" msgid="">24</item>
+ <item key="25" msgid="">25</item>
+ <item key="26" msgid="">26</item>
+ <item key="27" msgid="">27</item>
+ <item key="28" msgid="">28</item>
+ <item key="29" msgid="">29</item>
+ <item key="30" msgid="">30</item>
+ <item key="31" msgid="">31</item>
+ <item key="32" msgid="">32</item>
+ <item key="33" msgid="">33</item>
+ <item key="34" msgid="">34</item>
+ <item key="35" msgid="">35</item>
+ <item key="36" msgid="">36</item>
+ <item key="37" msgid="">37</item>
+ <item key="38" msgid="">38</item>
+ <item key="39" msgid="">39</item>
+ <item key="40" msgid="">40</item>
+ <item key="41" msgid="">41</item>
+ <item key="42" msgid="">42</item>
+ <item key="43" msgid="">43</item>
+ <item key="44" msgid="">44</item>
+ <item key="45" msgid="">45</item>
+ <item key="46" msgid="">46</item>
+ <item key="47" msgid="">47</item>
+ <item key="48" msgid="">48</item>
+ <item key="49" msgid="">49</item>
+ <item key="50" msgid="">50</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/roles.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/roles.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/roles.xml	(revision 276)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="roles" meta_type="CPS Directory Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="directory">roles</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/search_portal_type_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/search_portal_type_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/search_portal_type_voc.xml	(revision 276)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<object name="search_portal_type_voc" meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property
+    name="get_vocabulary_method">getVocabularySearchPortalType</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/search_review_state_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/search_review_state_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/search_review_state_voc.xml	(revision 276)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<object name="search_review_state_voc" meta_type="CPS Method Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property
+    name="get_vocabulary_method">getVocabularySearchReviewState</property>
+ <property name="add_empty_key">False</property>
+ <property name="empty_key_pos">first</property>
+ <property name="empty_key_value"></property>
+ <property name="empty_key_value_i18n"></property>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/search_sort_results_by.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/search_sort_results_by.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/search_sort_results_by.xml	(revision 276)
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<object name="search_sort_results_by" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="" msgid="label_sort_by">No sort</item>
+ <item key="title_asc" msgid="label_title_asc">Title ascending</item>
+ <item key="title_desc" msgid="label_title_desc">Title descending</item>
+ <item key="date_asc" msgid="label_date_asc">Date ascending</item>
+ <item key="date_desc" msgid="label_date_desc">Date descending</item>
+ <item key="status_asc" msgid="label_status_asc">Status ascending</item>
+ <item key="status_desc" msgid="label_status_desc">Status descending</item>
+ <item key="author_asc" msgid="label_author_asc">Author ascending</item>
+ <item key="author_desc" msgid="label_author_desc">Author descending</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/semester_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/semester_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/semester_voc.xml	(revision 276)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="courselevel" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="1" msgid="">1st</item>
+ <item key="2" msgid="">2nd</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/subject_voc.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/subject_voc.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/subject_voc.xml	(revision 276)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<object name="subject_voc" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="Arts" msgid="label_subject_Arts">Arts</item>
+ <item key="Business" msgid="label_subject_Business">Business</item>
+ <item key="Computers" msgid="label_subject_Computers">Computers</item>
+ <item key="Games" msgid="label_subject_Games">Games</item>
+ <item key="Health" msgid="label_subject_Health">Health</item>
+ <item key="Home" msgid="label_subject_Home">Home</item>
+ <item key="Kids and Teens"
+    msgid="label_subject_Kids and Teens">Kids and Teens</item>
+ <item key="News" msgid="label_subject_News">News</item>
+ <item key="Recreation" msgid="label_subject_Recreation">Recreation</item>
+ <item key="Reference" msgid="label_subject_Reference">Reference</item>
+ <item key="Regional" msgid="label_subject_Regional">Regional</item>
+ <item key="Science" msgid="label_subject_Science">Science</item>
+ <item key="Shopping" msgid="label_subject_Shopping">Shopping</item>
+ <item key="Society" msgid="label_subject_Society">Society</item>
+ <item key="Sports" msgid="label_subject_Sports">Sports</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/vocabularies/waeup_bed_letters.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/vocabularies/waeup_bed_letters.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/vocabularies/waeup_bed_letters.xml	(revision 276)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<object name="waeup_bed_letters" meta_type="CPS Vocabulary">
+ <property name="title"></property>
+ <property name="title_msgid"></property>
+ <property name="description"></property>
+ <property name="acl_write_roles">Manager</property>
+ <item key="A" msgid="">Bed A</item>
+ <item key="B" msgid="">Bed B</item>
+ <item key="C" msgid="">Bed C</item>
+ <item key="D" msgid="">Bed D</item>
+ <item key="E" msgid="">Bed E</item>
+ <item key="F" msgid="">Bed F</item>
+ <item key="G" msgid="">Bed G</item>
+ <item key="H" msgid="">Bed H</item>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/workflows.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows.xml	(revision 276)
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<object name="portal_workflow" meta_type="CPS Workflow Tool">
+ <property name="title"></property>
+ <object name="blog_entry_wf" meta_type="CPS Workflow"/>
+ <object name="blog_section_wf" meta_type="CPS Workflow"/>
+ <object name="blog_workspace_wf" meta_type="CPS Workflow"/>
+ <object name="chat_item_section_wf" meta_type="CPS Workflow"/>
+ <object name="chat_item_workspace_wf" meta_type="CPS Workflow"/>
+ <object name="chat_section_wf" meta_type="CPS Workflow"/>
+ <object name="chat_workspace_wf" meta_type="CPS Workflow"/>
+ <object name="forum_permissions_dummy_wf" meta_type="CPS Workflow"/>
+ <object name="forum_post_wf" meta_type="CPS Workflow"/>
+ <object name="section_content_wf" meta_type="CPS Workflow"/>
+ <object name="section_folder_wf" meta_type="CPS Workflow"/>
+ <object name="section_forum_wf" meta_type="CPS Workflow"/>
+ <object name="section_wiki_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_academics_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_accommodation_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_base_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_certificate_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_course_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_department_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_faculty_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_section_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_student_wf" meta_type="CPS Workflow"/>
+ <object name="waeup_workspace_wf" meta_type="CPS Workflow"/>
+ <object name="workspace_calendar_wf" meta_type="CPS Workflow"/>
+ <object name="workspace_content_wf" meta_type="CPS Workflow"/>
+ <object name="workspace_folder_wf" meta_type="CPS Workflow"/>
+ <object name="workspace_folderish_content_wf" meta_type="CPS Workflow"/>
+ <object name="workspace_forum_wf" meta_type="CPS Workflow"/>
+ <object name="workspace_wiki_wf" meta_type="CPS Workflow"/>
+ <bindings>
+  <default/>
+  <type type_id="AcademicsFolder">
+   <bound-workflow workflow_id="section_folder_wf"/>
+  </type>
+  <type type_id="AccoFolder">
+   <bound-workflow workflow_id="section_folder_wf"/>
+  </type>
+  <type type_id="Accommodation">
+   <bound-workflow workflow_id="waeup_accommodation_wf"/>
+  </type>
+  <type type_id="Certificate">
+   <bound-workflow workflow_id="waeup_certificate_wf"/>
+  </type>
+  <type type_id="CertificateCourse">
+   <bound-workflow workflow_id="waeup_certificate_wf"/>
+  </type>
+  <type type_id="CPS Calendar">
+   <bound-workflow workflow_id="workspace_calendar_wf"/>
+  </type>
+  <type type_id="Course">
+   <bound-workflow workflow_id="waeup_course_wf"/>
+  </type>
+  <type type_id="CourseTicket">
+   <bound-workflow workflow_id="waeup_student_wf"/>
+  </type>
+  <type type_id="Department">
+   <bound-workflow workflow_id="waeup_department_wf"/>
+  </type>
+  <type type_id="Faculty">
+   <bound-workflow workflow_id="waeup_faculty_wf"/>
+  </type>
+  <type type_id="Jamb">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
+  <type type_id="Members Workspace">
+   <bound-workflow workflow_id="workspace_folder_wf"/>
+  </type>
+  <type type_id="SCFolder">
+   <bound-workflow workflow_id="section_folder_wf"/>
+  </type>
+  <type type_id="Section">
+   <bound-workflow workflow_id="section_folder_wf"/>
+  </type>
+  <type type_id="Semester">
+   <bound-workflow workflow_id="waeup_student_wf"/>
+  </type>
+  <type type_id="Student">
+   <bound-workflow workflow_id="waeup_student_wf"/>
+  </type>
+  <type type_id="StudentDocuments">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
+  <type type_id="StudentElegibility">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
+  <type type_id="StudentEligibility">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
+  <type type_id="StudentPersonal">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
+  <type type_id="StudentsFolder">
+   <bound-workflow workflow_id="section_folder_wf"/>
+  </type>
+  <type type_id="StudyLevel">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
+  <type type_id="University">
+   <bound-workflow workflow_id="section_folder_wf"/>
+  </type>
+  <type type_id="Workspace">
+   <bound-workflow workflow_id="workspace_folder_wf"/>
+  </type>
+ </bindings>
+</object>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_accommodation_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_accommodation_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_accommodation_wf/definition.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_accommodation_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_base_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_base_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_base_wf/definition.xml	(revision 276)
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_base_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>Contributor</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+   <guard-role>Contributor</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_certificate_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_certificate_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_certificate_wf/definition.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_course_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_course_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_course_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_course_wf/definition.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_course_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_department_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_department_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_department_wf/definition.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_department_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_faculty_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_faculty_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_faculty_wf/definition.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_faculty_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_wf/definition.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_wf/definition.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_student_wf/definition.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_student_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/profiles/default/workflows/waeup_studycourse.xml
===================================================================
--- /WAeUP_SRP/trunk/profiles/default/workflows/waeup_studycourse.xml	(revision 276)
+++ /WAeUP_SRP/trunk/profiles/default/workflows/waeup_studycourse.xml	(revision 276)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<cps-workflow workflow_id="waeup_studycourse_wf"
+              title="CPS Workflow Definition"
+              state_variable="review_state"
+              meta_type="CPS Workflow">
+ <permission>View</permission>
+ <state state_id="work" title="Work">
+  <exit-transition transition_id="create_content"/>
+  <exit-transition transition_id="cut_copy_paste"/>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>SectionManager</permission-role>
+   <permission-role>SectionReviewer</permission-role>
+   <permission-role>SectionReader</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="create" title="Initial creation"
+             new_state="work" trigger="USER"
+             before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+  </guard>
+  <transition-behavior behavior_id="initial-create"/>
+ </transition>
+ <transition transition_id="create_content"
+             title="Create content" new_state="work"
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-create"/>
+  <transition-behavior behavior_id="allow-sub-publishing"/>
+ </transition>
+ <transition transition_id="cut_copy_paste"
+             title="Cut/Copy/Paste" new_state=""
+             trigger="USER" before_script="" after_script="">
+  
+  <guard>
+   <guard-role>Manager</guard-role>
+   <guard-role>SectionManager</guard-role>
+   <guard-role>SectionReviewer</guard-role>
+   <guard-role>SectionReader</guard-role>
+  </guard>
+  <transition-behavior behavior_id="allow-sub-move"/>
+  <transition-behavior behavior_id="allow-sub-delete"/>
+  <transition-behavior behavior_id="allow-sub-copy"/>
+ </transition>
+</cps-workflow>
Index: /WAeUP_SRP/trunk/skins/waeup_default/common_edit_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/common_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/common_edit_form.pt	(revision 276)
@@ -0,0 +1,23 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition python:1;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+      <h1 tal:condition="options/create|nothing"> Create a <span tal:content="options/type_name" />  </h1>
+      <h1 tal:condition="options/edition|nothing"> Edit a <span tal:content="options/type_name" /> </h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_default/cpsdocument_edit_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/cpsdocument_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/cpsdocument_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="not:creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_default/create_common.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/create_common.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/create_common.py	(revision 276)
@@ -0,0 +1,47 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Create a Faculty
+
+"""
+type_name = REQUEST.get('type_name')
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= type_name.lower(),
+                      schema_id= 'metadata',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      )
+if psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+    
+elif psm == 'valid':
+    oid = "%s" % ds.get('Title').replace(' ','')
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)    
+    object.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_default/create_common_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/create_common_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/create_common_form.pt	(revision 276)
@@ -0,0 +1,22 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition python:1;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+      <h1>Enter the Data for a <span tal:content="options/type_name" /> </h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_default/faculties.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/faculties.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/faculties.pt	(revision 276)
@@ -0,0 +1,36 @@
+<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="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="items context/contentValues"
+               >
+    <span> 
+      <h2>The Faculties</h2>
+      <table cellspacing="0" cellpadding="0">
+        <tal:block condition="python: len(items)">
+          <span tal:repeat="item items">
+            <tr tal:condition="python:item.portal_type == 'Faculty'">
+              <td colspan="1">
+                <a href="faculty" tal:attributes="href item/absolute_url" tal:content="item/title_or_id"></a>
+              </td>
+            </tr>
+          </span>
+        </tal:block>
+        <tr tal:condition="python:not len(items)">
+          <td>
+            nothing yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/getCPSCandidateLocalRoles.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/getCPSCandidateLocalRoles.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/getCPSCandidateLocalRoles.py	(revision 276)
@@ -0,0 +1,20 @@
+## Script (Python) "getCPSCandidateLocalRoles"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+# $Id: getCPSCandidateLocalRoles.py 28546 2005-10-23 01:46:45Z atchertchian $
+"""
+XXX content moved into portal_membership
+
+Override this template if you have new portal types or new roles with a
+specific mapping to register.
+"""
+from Products.CMFCore.utils import getToolByName
+mtool = getToolByName(context, 'portal_membership')
+return ['Manager','SectionManager']
+return mtool.getCPSCandidateLocalRoles(context)
Index: /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_create.pt	(revision 276)
@@ -0,0 +1,2 @@
+<tal:block define="global creation python:1" />
+<metal:block use-macro="here/waeup_layout_lib/macros/common_edit" />
Index: /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_edit.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_edit.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_edit.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/default_edit" />
Index: /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_view.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_view.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/layout_waeup_view.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/table_view" />
Index: /WAeUP_SRP/trunk/skins/waeup_default/logged_in.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/logged_in.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/logged_in.pt	(revision 276)
@@ -0,0 +1,122 @@
+<metal:html>
+
+<metal:body use-macro="here/main_template/macros/master">
+    
+    <metal:main fill-slot="main"
+                tal:define="p_props here/portal_properties;">
+      <metal:skin tal:condition="exists: here/portal_skins | nothing">
+        <div tal:condition="here/portal_skins/updateSkinCookie | nothing"
+             tal:define="dummy here/setupCurrentSkin">
+        </div>
+      </metal:skin>
+      <tal:block condition="isAnon">
+        <tal:block define="dummy python:request.RESPONSE.expireCookie('__ac',path='/')" />
+          <h1 i18n:translate="heading_login_failure">Login failure</h1>
+          <p>
+            <span i18n:translate="description_login_failure">
+              You are not currently logged in. Your username and or password may be
+              incorrect. Your browser may also not be configured to accept HTTP
+              cookies. If you need help please contact
+            </span>
+            <a href="mailto:admin@here.com" title="Email Admin"
+               tal:attributes="href string:mailto:${p_props/email_from_address}"
+               tal:content="p_props/email_from_address">Email Admin</a>.
+          </p>
+          <p i18n:translate="">
+            help_password_forgotten
+            <tal:block i18n:name="link_password_forgotten"
+                       replace="string:${base_url}account_lost_password_form"/>
+          </p>
+          <p>
+            or <a href="" tal:attributes="href string:${base_url}check_admission">check your admission status</a>
+          </p>
+        </tal:block><!-- isAnon -->
+
+        <tal:block condition="not: isAnon"
+                   define="first_time python:(member.getProperty('login_time', None) ==
+                   here.ZopeTime('2000/01/01'));
+                   dum_home mtool/createMemberArea"
+                   >
+          <tal:block 
+              condition="python:1 or 'Student' in member.getRoles()"
+              tal:define="dummy python: context.process_waeup_login(member=member,sc_pin=request.get('sc_pin'))" />
+          <tal:block condition="first_time">
+            <div tal:define="now here/ZopeTime;
+            dum_reg python:member.setProperties(last_login_time=now,
+            login_time=now)" />
+            
+            <h1>Welcome!</h1>
+            <p>This is the first time that you've logged in to <span
+                                                                   replace="p_props/title">Here</span>. Before you start exploring you need
+              to change your original password. This will ensure that the password we
+            sent you via email cannot be used in a malicious manner.</p>
+            
+            <p>Please use the form below to change your password.</p>
+
+      <form action="change_password" method="post"
+            tal:attributes="action string:${base_url}change_password">
+        <input type="hidden" name="user" value=""
+               tal:attributes="value member" />
+        <input type="hidden" name="domains:tokens" value="" />
+        <input type="hidden" name="redirect" value=""
+               tal:attributes="value base_url" />
+
+      <table border="1" width="100%" cellspacing="1" cellpadding="1">
+
+       <tr valign="top" align="left">
+         <th>Username</th>
+         <td><span tal:replace="member">You</span></td>
+       </tr>
+
+       <tr valign="top" align="left">
+         <th>New password</th>
+         <td><input type="password" name="password" /></td>
+       </tr>
+
+       <tr valign="top" align="left">
+        <th>Confirm new password</th>
+        <td><input type="password" name="confirm" /></td>
+       </tr>
+
+       <tr>
+        <td></td>
+        <td>
+          <input type="submit" class="standalone" value="Change password" />
+        </td>
+       </tr>
+
+      </table>
+
+      </form>
+
+    </tal:block><!-- first_time -->
+
+    <tal:block condition="not: first_time">
+
+      <tal:block define="d_reg python:member.setProperties(
+                                      last_login_time=member.getProperty('login_time', None));
+                         ereg python:member.setProperties(
+                                     login_time=here.ZopeTime());
+                      "/>
+
+      <div tal:condition="request/came_from | nothing ">
+        <div tal:define="came_from python:request.get('came_from');
+                         response request/RESPONSE;
+                         dredirect python: response.redirect(came_from);
+                        " />
+      </div>
+
+      <h1 i18n:translate="heading_login_success">Login success</h1>
+      <p i18n:translate="description_login_success">
+         Welcome. You are currently logged in.
+      </p>
+
+   </tal:block><!-- not first_time -->
+
+  </tal:block><!-- not isAnon -->
+
+</metal:main>
+
+</metal:body>
+
+</metal:html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/logged_out.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/logged_out.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/logged_out.pt	(revision 276)
@@ -0,0 +1,24 @@
+<metal:html>
+
+<metal:body use-macro="here/main_template/macros/master">
+
+<metal:main fill-slot="main">
+
+  <p tal:condition="isAnon"
+     i18n:translate="description_logout_success">
+    You have been logged out. <br />
+  </p>
+
+  <p tal:condition="not:isAnon">
+    <span i18n:translate="description_logout_zmi_warning">
+      You are logged in outside the portal.  You may need to
+    </span>
+    <a href="/manage_zmi_logout"
+       i18n:translate="link_logout_zmi">
+      log out of the Zope management interface
+    </a>.
+  </p>
+
+</metal:main>
+</metal:body>
+</metal:html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/portlet_main_navigation.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/portlet_main_navigation.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/portlet_main_navigation.pt	(revision 276)
@@ -0,0 +1,21 @@
+<tal:block define="mtool here/portal_membership;
+                   anonymous mtool/isAnonymousUser;
+                   user python: mtool.getAuthenticatedMember();
+                   folder_id python:str(user)"
+                   >
+  <tal:block condition="python: 0 and 'Students' in user.getGroups()">
+    <a href="" i18n:translate=""
+       tal:attributes="href string:${here/portal_url}/sections/waeup/students/${folder_id}"
+       tal:content="string: Personal area for JAMB Registration ${folder_id}"></a>
+  </tal:block>
+  <tal:block condition="python: 1">
+    <a href="" i18n:translate=""
+       tal:attributes="href string:${here/portal_url}/sections/waeup/students"
+       >Studentadministration</a> | 
+    <a href="" i18n:translate=""
+       tal:attributes="href string:${here/portal_url}/sections/waeup/faculties"
+       >Faculties</a> 
+  </tal:block>
+  <tal:block condition="anonymous">
+  </tal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_default/portlet_session_info.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/portlet_session_info.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/portlet_session_info.pt	(revision 276)
@@ -0,0 +1,46 @@
+<tal:block define="mtool here/portal_membership;
+           member mtool/getAuthenticatedMember;
+           isAnon mtool/isAnonymousUser;
+           roles member/getRoles;
+           backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+           frontend python:'Student' in roles or isAnon;"
+           >
+  <tal:block condition="not:isAnon">
+    <tal:block condition="backend">
+      <em tal:content="member" /> is working in back-end mode<br />
+      <span  tal:condition="python: 1" >
+        with Basic Roles <span tal:content="member/getRoles" /><br />
+        <span tal:condition="python: 0" tal:content="python:mtool.getCPSCandidateLocalRoles(context)" />
+      </span>
+    </tal:block>
+    <tal:block condition="not:backend">
+      <em tal:content="member" /> is working in front-end mode<br />
+      <span  tal:condition="python: 1" >
+        with Basic Roles <span tal:content="member/getRoles" /><br />
+        <span tal:condition="python: 0" tal:content="python:mtool.getCPSCandidateLocalRoles(context)" />
+      </span>
+    </tal:block>
+    <tal:block condition="python: 0">
+    <br />
+    <a href="" tal:condition="python: 'Student' in member.getRoles() and not 'UniversityManager' in member.getRoles()" 
+       tal:attributes="href string:${context/portal_url}/students/${member}">
+      Go to your personal area
+    </a>
+    </tal:block>
+    <br />
+    <a href="" tal:condition="python: 0" 
+       tal:attributes="href string:${context/portal_url}/cpsdirectory_entry_view?dirname=members&id=${member}">        
+      Edit your Preferences
+    </a>
+    <br />
+    <a href="" i18n:translate=""
+       tal:attributes="href string:logout">
+      Log out
+    </a>
+  </tal:block>
+  <tal:block condition="isAnon">
+    <div>You are not logged in. </div>
+    <br />
+    <a href="" tal:attributes="href string:login_form">Log in</a>
+  </tal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_default/student_view_all_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/student_view_all_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/student_view_all_form.pt	(revision 276)
@@ -0,0 +1,32 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>This is a temporary view of the Students Registration view for anonymous users..</p>       
+  
+    <br />
+    <span  tal:condition="python:context.portal_type != 'University'"  tal:omit-tag="">
+      <p>You are visiting the Student Registration Portal as anonymous user.
+      </p>
+    </span>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/student_view_student_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/student_view_student_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/student_view_student_form.pt	(revision 276)
@@ -0,0 +1,58 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>This is a temporary view of the object with id <em tal:content="here/id" /> 
+       of type <em tal:content="here/portal_type" /> 
+       which can be customized according to the customer's needs.</p>       
+  
+    <br />
+    <span  tal:condition="python:context.portal_type != 'University'"  tal:omit-tag="">
+      <p>Exemplary view of the <strong>object's data fields</strong>: </p>
+      <tal:block  tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+    </span>
+    <br />      
+    <p>Exemplary view of the <strong>list of items attached to (or contained in) the object</strong>: </p>
+    <tal:block condition="python: len(items)">  
+      <table>
+        <span tal:repeat="item items">
+          <tr>
+            <td>
+              <span tal:content="item/portal_type" />:
+            </td>
+            <td>
+              <i>
+                <a href="xxx"  
+                   tal:attributes="href item/absolute_url"
+                   tal:content="item/title_or_id"></a>
+              </i>
+            </td>
+          </tr>
+        </span>
+      </table>
+    </tal:block>
+    
+    <tal:block condition="python: not len(items)">
+        (No items contained here!)
+    </tal:block>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/temporary_view_all.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/temporary_view_all.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/temporary_view_all.py	(revision 276)
@@ -0,0 +1,26 @@
+##parameters=psm=None
+# $Id$
+
+"""
+"""
+
+member = context.portal_membership.getAuthenticatedMember()
+uname = str(member)
+roles = member.getRoles()
+cat = context.portal_catalog
+request = context.REQUEST
+url0 = request.get('URL0')
+#return context.temporary_view_all_form(psm=psm)
+if context.portal_membership.isAnonymousUser():
+    if not url0.endswith('chat'):
+        return context.students.student_view_all_form(psm=psm)
+    return context.Chat()
+else:
+    if url0.find(uname) > 0 or 'UniversityManager' in roles or 'Manager' in roles:
+        return context.temporary_view_all_form(psm=psm)
+    elif 'Student' in roles and 'StudentManager' not in roles:
+        res = cat(pathindex="/portal/sections/students/%s" % uname)
+        for r in res:
+            if r.getPath().endswith("students/%s" % uname):
+                return r.getObject().student_view_student_form(psm=psm)
+        return context.students.student_view_all_form(psm=psm)
Index: /WAeUP_SRP/trunk/skins/waeup_default/temporary_view_all_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/temporary_view_all_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/temporary_view_all_form.pt	(revision 276)
@@ -0,0 +1,59 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>This is a temporary view of the object with id <em tal:content="here/id" /> 
+       of type <em tal:content="here/portal_type" /> 
+       which can be customized according to the customer's needs.</p>       
+  
+    <br />
+    <span  tal:condition="python:context.portal_type != 'University' and doc.render()"  tal:omit-tag="">
+      <p>Exemplary view of the <strong>object's data fields</strong>: </p>
+      <tal:block  
+          tal:content="structure python:doc.render()" />
+    </span>
+    <br />      
+    <p>Exemplary view of the <strong>list of items attached to (or contained in) the object</strong>: </p>
+    <tal:block condition="python: len(items)">  
+      <table>
+        <span tal:repeat="item items">
+          <tr>
+            <td>
+              <span tal:content="item/portal_type" />:
+            </td>
+            <td>
+              <i>
+                <a href="xxx"  
+                   tal:attributes="href item/absolute_url"
+                   tal:content="item/id"></a> <span tal:content="item/title_or_id" tal:omit-tag="" />
+              </i>
+            </td>
+          </tr>
+        </span>
+      </table>
+    </tal:block>
+    
+    <tal:block condition="python: not len(items)">
+        (No items contained here!)
+    </tal:block>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/university_view_all.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/university_view_all.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/university_view_all.pt	(revision 276)
@@ -0,0 +1,24 @@
+<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"
+               >
+    <a href="" tal:attributes="href string:${context/absolute_url}/admission_status">Admission List UME</a>.<br />
+    <a href="" tal:attributes="href string:${context/absolute_url}/check_admission">Admission Request (JAMB canditates only)</a>.
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_default/waeup_edit_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/waeup_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/waeup_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="python: 0 and not creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_default/waeup_layout_lib.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_default/waeup_layout_lib.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_default/waeup_layout_lib.pt	(revision 276)
@@ -0,0 +1,372 @@
+<!-- WAeUP layout_lib  -->
+<!-- $Id: layout_lib_div_view.pt 24721 2005-07-08 13:04:38Z dwyart $ -->
+
+<!-- div_view  -->
+
+<metal:block define-macro="div_view"
+             tal:define="layout options/layout">
+  <tal:block repeat="row layout/rows">
+    <tal:block repeat="cell row">
+      <tal:block define="widget cell/widget">
+        <div tal:define="dm options/datastructure/getDataModel;"
+             tal:attributes="class cell/widget_css_class|nothing;
+             id python:widget.getHtmlWidgetId()+'_widget';"
+             >
+          <tal:block condition="widget/label">
+            <span class="dlabel" i18n:translate="" tal:condition="widget/is_i18n"
+                  tal:content="widget/label">label</span>
+            <span class="dlabel" tal:condition="not:widget/is_i18n"
+                  tal:content="widget/label">label</span>
+          </tal:block>
+          <tal:block replace="structure cell/widget_rendered" />
+        </div>
+      </tal:block>
+    </tal:block>
+  </tal:block>
+</metal:block>
+
+<!-- table view -->
+<metal:block define-macro="table_view"
+             tal:define="layout options/layout">
+<table border="0">
+    <tal:block repeat="row layout/rows">
+      <tr>
+        <tal:block repeat="cell row">
+          <tal:block define="widget cell/widget">
+            <div tal:omit-tag=""
+                 tal:define="dm options/datastructure/getDataModel;"
+                 tal:attributes="class cell/widget_css_class|nothing;
+                 id python:widget.getHtmlWidgetId()+'_widget';" 
+                 >
+              <tal:block condition="widget/label">
+              <td valign="top">
+                <span i18n:translate="" tal:condition="widget/is_i18n">
+                    <span tal:content="widget/label" />:</span>
+                <span tal:condition="not:widget/is_i18n">
+                    <span tal:content="widget/label" />:</span>
+              </td>
+              </tal:block>
+              <tal:block condition="not: widget/label">
+              <td>
+                <div valign="top"> no label </div>
+              </td>
+              </tal:block>              
+              <td>
+               <div class="ddescription"  tal:condition="cell" tal:content="structure cell/widget_rendered"></div>
+               <div class="ddescription" tal:condition="not:cell/widget_rendered"> none </div>
+             </td>
+            </div>
+          </tal:block>
+        </tal:block>
+      </tr>
+    </tal:block>
+  </table>
+</metal:block>
+
+<!-- default edit  -->
+
+<metal:block define-macro="default_edit"
+  tal:define="layout options/layout;
+              ds options/datastructure;
+              creation creation|nothing;
+              metadata metadata|nothing;
+              type_name request/type_name|nothing;
+              ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+              creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+              edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+              metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+              formaction python: test(creation, creation_form,
+                                 test(metadata, metadata_form,
+                                                edit_form));
+              first_layout options/first_layout|python:0;
+              last_layout options/last_layout|python:0;
+              is_flexible options/is_flexible;
+              cpsmcat nocall:here/translation_service;
+              ">
+<tal:block condition="first_layout">
+  <tal:block
+  content="structure string:<form action='${formaction}' method='post'
+  enctype='multipart/form-data' class='workflow'>
+  <div class=''><div class=''>" />
+  <input type="hidden" name="type_name" value="."
+    tal:condition="creation" tal:attributes="value request/type_name" />
+</tal:block>
+
+<table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+  <tr tal:repeat="row layout/rows" valign="top">
+    <td tal:repeat="cell row"
+      tal:attributes="colspan cell/ncols">
+      <tal:block define="widget cell/widget;
+                         wid widget/getWidgetId;
+                         dm options/datastructure/getDataModel;
+                         err python:ds.getError(wid);
+                         err_mapping python:ds.getErrorMapping(wid);
+                         is_required widget/is_required|nothing;
+                         tooltip_id python:wid + '_help';
+                         widget_css_class cell/widget_css_class|nothing;
+                         widget_css_class python:test(is_flexible, 'group', widget_css_class);
+                         css_class python:test(err, 'row error',
+                                               test(is_flexible, 'group', 'row'))">
+        <div tal:attributes="class widget_css_class;
+                             id python:widget.getHtmlWidgetId()+'_widget';
+                            ">
+          <div class="label" tal:condition="widget/label_edit"
+            tal:attributes="class python:test(is_required, 'label required',
+                                              'label')">
+            <label i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+            <label tal:condition="not:widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+          </div>
+          <button type="button" class="tooltipControl"
+                  tal:condition="widget/help"
+                  tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+          <div class="field">
+            <div tal:replace="structure cell/widget_rendered"/>
+          </div>
+          <div class="tooltipArea" style="visibility: hidden;"
+               tal:condition="widget/help"
+               tal:attributes="id tooltip_id;
+                               onclick python:'showElement(false, \'%s\')' % tooltip_id;">
+            <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+            <tal:block tal:condition="not:widget/is_i18n"
+              tal:content="widget/help">This is the help for this field</tal:block>
+          </div>
+          <tal:block condition="err">
+              <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                <br /><em style="color: red"
+                  tal:content="msg">err</em>
+              </tal:block>
+          </tal:block>
+          <div style="float: right;" tal:condition="is_flexible">
+            <input type="submit" value="button_move_up"
+              tal:condition="not:repeat/row/start"
+              tal:attributes="name string:uprow_${repeat/row/index}"
+              class="context moveUp" i18n:attributes="value" />
+            <input type="submit" value="button_move_down"
+              tal:condition="not:repeat/row/end"
+              tal:attributes="name string:downrow_${repeat/row/index}"
+              class="context moveDown" i18n:attributes="value" />
+            <input type="submit" value="button_delete"
+              class="destructive" i18n:attributes="value"
+              tal:attributes="name string:deleterow_${repeat/row/index};
+                              onclick python:'return window.confirm(\'%s\')' %
+                                (cpsmcat('description_confirm_delete'), )" />
+          </div>
+        </div>
+      </tal:block>
+    </td>
+  </tr>
+</table>
+
+<tal:block condition="is_flexible">
+<div style="float: right;"
+    tal:define="flexible_widgets options/flexible_widgets">
+  <input type="hidden" name="layout_id" value="."
+    tal:attributes="value layout/layout_id" />
+  <tal:select condition="python:len(flexible_widgets)>1">
+    <select name="widget_type">
+      <tal:block repeat="widget options/flexible_widgets">
+      <option value="."
+        tal:condition="widget/is_i18n"
+        i18n:translate=""
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      <option value="."
+        tal:condition="not:widget/is_i18n"
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      </tal:block>
+    </select>
+    <input type="submit" name="addwidget_button" value="button_add"
+     class="context"
+     i18n:attributes="value" />
+  </tal:select>
+  <tal:button condition="python:len(flexible_widgets) == 1">
+    <tal:block define="widget python:flexible_widgets[0]">
+      <input type="hidden" name="widget_type"
+        tal:attributes="value widget/getWidgetId">
+      <input type="submit" name="addwidget_button"
+        tal:define="button_add python:cpsmcat('button_add');
+          widget_title python:cpsmcat(widget.title_or_id())"
+        tal:attributes="value string:${button_add} ${widget_title}"
+        class="context" />
+    </tal:block>
+  </tal:button>
+</div>
+</tal:block>
+
+<tal:block condition="last_layout">
+  <tal:block content="structure string:</div>" />
+  <metal:block define-slot="additional_content" />
+
+  <input type="submit" class="standalone" name="cpsdocument_edit_button"
+    value="button_change" i18n:attributes="value"
+    tal:condition="not:creation" />
+  <input type="submit" class="standalone" name="cpsdocument_create_button"
+    value="button_create" i18n:attributes="value" tal:condition="creation" />
+  <tal:block content="structure string:</div></form>" />
+</tal:block>
+
+</metal:block>
+<!-- default edit  -->
+
+<metal:block define-macro="common_edit"
+  tal:define="layout options/layout;
+              ds options/datastructure;
+              creation creation|nothing;
+              metadata metadata|nothing;
+              type_name request/type_name|nothing;
+              ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+              tin python:type_name and getattr(here.portal_types,type_name,None);
+              creation_form options/create_action|string:create_common;
+              edit_form    options/edit_action|string:cpsdocument_edit_form;
+              metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+              formaction python: test(creation, creation_form,
+                                 test(metadata, metadata_form,
+                                                edit_form));
+              first_layout python:1;
+              last_layout python:1;
+              is_flexible options/is_flexible;
+              cpsmcat nocall:here/translation_service;
+              ">
+<tal:block condition="first_layout">
+    <span tal:condition="python: 0">
+      <span tal:content="request/type_name|string:No Typename" /><br />
+      <span tal:content="creation_form" /><br />
+      <span tal:content="ti" /><br />
+      <span tal:content="python:ti.getActionById('create', 'cpsdocument_create_form')" /><br />
+      <span tal:content="python:getattr(here.portal_types,type_name,'no type')" /><br />
+    </span>
+  <tal:block
+  content="structure string:<form action='${formaction}' method='post'
+  enctype='multipart/form-data' class='workflow'>
+  <div class=''><div class='documentFields'>" />
+  <input type="hidden" name="type_name" value="."
+    tal:condition="creation" tal:attributes="value request/type_name" />
+</tal:block>
+
+<table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+  <tr tal:repeat="row layout/rows" valign="top">
+    <td tal:repeat="cell row"
+      tal:attributes="colspan cell/ncols">
+      <tal:block define="widget cell/widget;
+                         wid widget/getWidgetId;
+                         dm options/datastructure/getDataModel;
+                         err python:ds.getError(wid);
+                         err_mapping python:ds.getErrorMapping(wid);
+                         is_required widget/is_required|nothing;
+                         tooltip_id python:wid + '_help';
+                         widget_css_class cell/widget_css_class|nothing;
+                         widget_css_class python:test(is_flexible, 'group', widget_css_class);
+                         css_class python:test(err, 'row error',
+                                               test(is_flexible, 'group', 'row'))">
+        <div tal:attributes="class widget_css_class;
+                             id python:widget.getHtmlWidgetId()+'_widget';
+                            ">
+          <div class="label" tal:condition="widget/label_edit"
+            tal:attributes="class python:test(is_required, 'label required',
+                                              'label')">
+            <label i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+            <label tal:condition="not:widget/is_i18n"
+              tal:content="widget/label_edit"
+              tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+          </div>
+          <button type="button" class="tooltipControl"
+                  tal:condition="widget/help"
+                  tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+          <div class="field">
+            <div tal:replace="structure cell/widget_rendered"/>
+          </div>
+          <div class="tooltipArea" style="visibility: hidden;"
+               tal:condition="widget/help"
+               tal:attributes="id tooltip_id;
+                               onclick python:'showElement(false, \'%s\')' % tooltip_id;">
+            <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+              tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+            <tal:block tal:condition="not:widget/is_i18n"
+              tal:content="widget/help">This is the help for this field</tal:block>
+          </div>
+          <tal:block condition="err">
+              <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                <br /><em style="color: red"
+                  tal:content="msg">err</em>
+              </tal:block>
+          </tal:block>
+          <div style="float: right;" tal:condition="is_flexible">
+            <input type="submit" value="button_move_up"
+              tal:condition="not:repeat/row/start"
+              tal:attributes="name string:uprow_${repeat/row/index}"
+              class="context moveUp" i18n:attributes="value" />
+            <input type="submit" value="button_move_down"
+              tal:condition="not:repeat/row/end"
+              tal:attributes="name string:downrow_${repeat/row/index}"
+              class="context moveDown" i18n:attributes="value" />
+            <input type="submit" value="button_delete"
+              class="destructive" i18n:attributes="value"
+              tal:attributes="name string:deleterow_${repeat/row/index};
+                              onclick python:'return window.confirm(\'%s\')' %
+                                (cpsmcat('description_confirm_delete'), )" />
+          </div>
+        </div>
+      </tal:block>
+    </td>
+  </tr>
+</table>
+
+<tal:block condition="is_flexible">
+<div style="float: right;"
+    tal:define="flexible_widgets options/flexible_widgets">
+  <input type="hidden" name="layout_id" value="."
+    tal:attributes="value layout/layout_id" />
+  <tal:select condition="python:len(flexible_widgets)>1">
+    <select name="widget_type">
+      <tal:block repeat="widget options/flexible_widgets">
+      <option value="."
+        tal:condition="widget/is_i18n"
+        i18n:translate=""
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      <option value="."
+        tal:condition="not:widget/is_i18n"
+        tal:attributes="value widget/getWidgetId"
+        tal:content="widget/title_or_id">Type</option>
+      </tal:block>
+    </select>
+    <input type="submit" name="addwidget_button" value="button_add"
+     class="context"
+     i18n:attributes="value" />
+  </tal:select>
+  <tal:button condition="python:len(flexible_widgets) == 1">
+    <tal:block define="widget python:flexible_widgets[0]">
+      <input type="hidden" name="widget_type"
+        tal:attributes="value widget/getWidgetId">
+      <input type="submit" name="addwidget_button"
+        tal:define="button_add python:cpsmcat('button_add');
+          widget_title python:cpsmcat(widget.title_or_id())"
+        tal:attributes="value string:${button_add} ${widget_title}"
+        class="context" />
+    </tal:block>
+  </tal:button>
+</div>
+</tal:block>
+
+<tal:block condition="last_layout">
+  <tal:block content="structure string:</div>" />
+  <metal:block define-slot="additional_content" />
+
+  <input type="submit" class="standalone" name="cpsdocument_edit_button"
+    value="button_change" i18n:attributes="value"
+    tal:condition="not:creation" />
+  <input type="submit" class="standalone" name="cpsdocument_create_button"
+    value="button_create" i18n:attributes="value" tal:condition="creation" />
+  <tal:block content="structure string:</div></form>" />
+</tal:block>
+
+</metal:block>
+    
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/academics_view.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/academics_view.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/academics_view.py	(revision 276)
@@ -0,0 +1,17 @@
+##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 not context.portal_membership.isAnonymousUser():
+    if 'Manager' in member.getRoles():
+        return context.folder_view()
+index = getattr(context,'documents',None)
+if index:
+    fp = getattr(index,'academicsfrontpage',None)
+    if fp:
+        return fp() 
+return context.academics.academics_view_all(psm=psm)
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/academics_view_all.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/academics_view_all.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/academics_view_all.pt	(revision 276)
@@ -0,0 +1,37 @@
+<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="items here/contentValues">
+    <h2>Academics (Faculties)</h2>
+    <table cellspacing="0" cellpadding="0">
+      <tal:block condition="python: len(items)">
+        <span tal:repeat="item items">
+          <tr tal:condition="python:item.portal_type == 'Faculty'">
+            <td colspan="1">
+              <a href="faculty" tal:attributes="href item/absolute_url" tal:content="item/title_or_id"></a>
+            </td>
+          </tr>
+        </span>
+      </tal:block>
+      <tr tal:condition="python:not len(items)">
+        <td>
+          nothing yet !
+        </td>
+      </tr>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/course_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/course_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/course_index_html.py	(revision 276)
@@ -0,0 +1,14 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.cpsdocument_view()
+    elif 'StudentManager' in roles:
+        return context.course_view_manager()
+return context.course_view_student()
+
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/course_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/course_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/course_view_manager.pt	(revision 276)
@@ -0,0 +1,21 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/course_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/course_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/course_view_student.pt	(revision 276)
@@ -0,0 +1,32 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+      
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/create_certificate.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/create_certificate.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/create_certificate.py	(revision 276)
@@ -0,0 +1,50 @@
+##parameters=REQUEST=None
+# $Id: create_course.py 145 2005-11-03 08:53:17Z joachim $
+"""
+Create a Course
+
+"""
+type_name = 'Certificate'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'certificate',
+                      schema_id = 'certificate',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'create_certificate',
+                      )
+if  psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+    
+elif psm == 'valid':
+    oid = "%s" % ds.get('code').replace(' ','')
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)
+    ds.set('Title',ds.get('heading'))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/create_course.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/create_course.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/create_course.py	(revision 276)
@@ -0,0 +1,50 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Create a Course
+
+"""
+type_name = 'Course'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'course',
+                      schema_id = 'course',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'create_course',
+                      )
+if  psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+    
+elif psm == 'valid':
+    oid = "%s" % ds.get('code').replace(' ','')
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)
+    ds.set('Title',ds.get('heading'))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/create_studycourse.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/create_studycourse.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/create_studycourse.py	(revision 276)
@@ -0,0 +1,50 @@
+##parameters=REQUEST=None
+# $Id: create_course.py 145 2005-11-03 08:53:17Z joachim $
+"""
+Create a Course
+
+"""
+type_name = 'StudyCourse'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'studycourse',
+                      schema_id = 'studycourse',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'create_studycourse',
+                      )
+if  psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+    
+elif psm == 'valid':
+    oid = "%s" % ds.get('code').replace(' ','')
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)
+    ds.set('Title',ds.get('heading'))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/department_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/department_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/department_index_html.py	(revision 276)
@@ -0,0 +1,13 @@
+##parameters=psm=None, REQUEST=None
+
+# $Id$
+
+"""Default view for a Faculty."""
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.department_view_manager()
+return context.department_view_student()
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/department_index_html.py~
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/department_index_html.py~	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/department_index_html.py~	(revision 276)
@@ -0,0 +1,13 @@
+##parameters=psm=None, REQUEST=None
+
+# $Id: department_index_html.py 91 2005-10-26 12:30:11Z joachim $
+
+"""Default view for a Faculty."""
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.department_view_manager()
+return context.department_view_student()
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/department_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/department_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/department_view_manager.pt	(revision 276)
@@ -0,0 +1,43 @@
+<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="department here/getContent;
+               items here/contentValues"
+               >
+    <span>
+      <h2 tal:content="department/title_or_id"></h2>
+      <p tal:content="department/Description">
+      </p>
+      <br />
+      
+      <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 courses yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/department_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/department_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/department_view_student.pt	(revision 276)
@@ -0,0 +1,43 @@
+<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="department here/getContent;
+               items here/contentValues"
+               >
+    <span>
+      <h2 tal:content="department/title_or_id"></h2>
+      <p tal:content="department/Description">
+      </p>
+      <br />
+      
+      <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 courses yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_index_html.py	(revision 276)
@@ -0,0 +1,14 @@
+##parameters=psm=None, REQUEST=None
+
+# $Id$
+
+"""Default view for a Faculty."""
+member = context.portal_membership.getAuthenticatedMember()
+
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.faculty_view_manager()
+return context.faculty_view_student()
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_view_manager.pt	(revision 276)
@@ -0,0 +1,40 @@
+<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="faculty here/getContent;
+               items here/contentValues"
+               >
+    <h2 tal:content="faculty/title_or_id"></h2>
+    <p tal:content="faculty/Description"></p>
+    <span> 
+      <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>
+            nothing yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/faculty_view_student.pt	(revision 276)
@@ -0,0 +1,40 @@
+<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="faculty here/getContent;
+               items here/contentValues"
+               >
+    <h2 tal:content="faculty/title_or_id"></h2>
+    <p tal:content="faculty/Description"></p>
+    <span> 
+      <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>
+            nothing yet !
+          </td>
+        </tr>
+      </table>
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/get_departments_voc.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/get_departments_voc.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/get_departments_voc.py	(revision 276)
@@ -0,0 +1,11 @@
+##parameters=key=None
+# $Id$
+"""
+Return the faculties as an vocabulary
+
+"""
+if key is None:
+    res = context.portal_catalog.search({'meta_type': "Department"})    
+    return [(d.getId,d.Title,) for d in res]
+dep = context.portal_catalog.search({'meta_type': "Department", 'id': key})[-1]
+return dep.Title
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/get_faculties_voc.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/get_faculties_voc.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/get_faculties_voc.py	(revision 276)
@@ -0,0 +1,11 @@
+##parameters=key=None 
+# $Id$
+"""
+Return the faculties as an vocabulary
+
+"""
+if key is None:
+    res = context.portal_catalog.search({'meta_type': "Faculty"})    
+    return [(d.getId,d.Title,) for d in res]
+dep = context.portal_catalog.search({'meta_type': "Faculty", 'id': key})[-1]
+return dep.Title
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/level_view.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/level_view.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/level_view.py	(revision 276)
@@ -0,0 +1,13 @@
+##parameters=psm=None
+# $Id: temporary_view_all.py 197 2006-02-08 12:47:31Z joachim $
+
+"""
+"""
+
+member = context.portal_membership.getAuthenticatedMember()
+uname = str(member)
+roles = member.getRoles()
+cat = context.portal_catalog
+request = context.REQUEST
+url0 = request.get('URL0')
+return context.level_view_form()
Index: /WAeUP_SRP/trunk/skins/waeup_faculty/level_view_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_faculty/level_view_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_faculty/level_view_form.pt	(revision 276)
@@ -0,0 +1,49 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="roles member/getRoles;
+               backend python:'UniversityManager' in roles or 'StudentManager' in roles;
+               frontend python:'Student' in roles or isAnon;
+               folder here/getContent;
+               items python:context.filterContents(items=context.contentValues());"
+               >
+    <h1>Level  <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>The courses for this level:</p>
+    <tal:block condition="python: len(items)">  
+      <table>
+        <span tal:repeat="item items">
+          <span tal:define="courses python:item.filterContents(items=item.contentValues())">
+          <tr>
+            <th> <span tal:content="item/id" tal:omit-tag="" /> Semester
+            </th>
+          </tr>
+         <tr tal:repeat="course courses">
+            <td tal:content="course/id">
+            </td>
+            <td tal:content="course/Title">
+            </td>
+          </tr>
+            <tr> <td></td></tr>
+        </span>
+        </span>
+      </table>
+    </tal:block>
+    
+    <tal:block condition="python: not len(items)">
+        (No Courses yet!)
+    </tal:block>
+  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/accommodation_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/accommodation_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/accommodation_index_html.py	(revision 276)
@@ -0,0 +1,17 @@
+##parameters=REQUEST=None,psm=None,groups=None
+
+# $Id$
+
+"""Default view for the Accommodation.
+"""
+
+member = context.portal_membership.getAuthenticatedMember()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.accommodation_view_manager(psm=psm)
+    elif 'StudentManager' in roles:
+        return context.accommodation_view_manager(psm=psm)
+    elif 'Student' in roles:
+        return context.accommodation_view_student(psm=psm)
+return context.accommodation_view_all(psm=psm)
Index: /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_all.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_all.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_all.pt	(revision 276)
@@ -0,0 +1,29 @@
+<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="header">
+  </metal:block>
+
+<metal:block fill-slot="main"
+             tal:define="items here/contentValues"
+             >
+    <h2>Accomodation</h2>
+    <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/heading"></a>
+          </td>
+        </tr>
+      </tal:block>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_manager.pt	(revision 276)
@@ -0,0 +1,29 @@
+<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="header">
+  </metal:block>
+
+<metal:block fill-slot="main"
+             tal:define="items here/contentValues"
+             >
+    <h2>Accomodation</h2>
+    <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/heading"></a>
+          </td>
+        </tr>
+      </tal:block>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/accommodation_view_student.pt	(revision 276)
@@ -0,0 +1,29 @@
+<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="header">
+  </metal:block>
+
+<metal:block fill-slot="main"
+             tal:define="items here/contentValues"
+             >
+    <h2>Accomodation</h2>
+    <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/heading"></a>
+          </td>
+        </tr>
+      </tal:block>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/add_accommodation.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/add_accommodation.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/add_accommodation.py	(revision 276)
@@ -0,0 +1,49 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Add a Accommodation Hall
+
+"""
+type_name = 'Accommodation'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'accommodation',
+                      schema_id = 'accommodation',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'add_accommodation',
+                      )
+if psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+elif psm == 'valid':
+    oid = "%s" % ds.get('heading').replace(' ','')
+    context.invokeFactory(type_name,oid)
+    object = getattr(context,oid)
+    ds.set('Title',ds.get('heading'))
+    object.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type]
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_student/add_accommodation.py.Joachim
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/add_accommodation.py.Joachim	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/add_accommodation.py.Joachim	(revision 276)
@@ -0,0 +1,55 @@
+##parameters=REQUEST=None
+# $Id: add_accommodation.py 107 2005-10-27 23:58:38Z joachim $
+"""
+Add a Accommodation Hall
+
+"""
+type_name = 'Accommodation'
+REQUEST.set('type_name',type_name)
+
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+lt = context.portal_layouts
+
+accofolder = getattr(context,"Accommodation",None)
+if accofolder is None:
+    context.invokeFactory('AccoFolder','Accommodation')
+    accofolder = getattr(context,"Accommodation")
+    context.notifyCPSDocumentCreation(ob=accofolder)
+    
+    
+res,psm,ds = lt.renderLayout(layout_id= 'accommodation',
+                      schema_id = 'accommodation',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'add_accommodation',
+                      )
+if psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 )
+elif psm == 'valid':
+    oid = "%s" % ds.get('heading').replace(' ','')
+    accofolder.invokeFactory(type_name,oid) 
+    object = getattr(accofolder,oid)    
+    object.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_student/add_course_ticket.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/add_course_ticket.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/add_course_ticket.py	(revision 276)
@@ -0,0 +1,67 @@
+##parameters=REQUEST
+# $Id$
+"""
+book an accomodation
+"""
+type_name = 'CourseTicket'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+
+lt = context.portal_layouts
+pv = context.portal_vocabularies
+#pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'study_level',
+                      schema_id= 'study_level',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'add_course_ticket',
+                      )
+if True or psm == 'invalid':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'Not yet active',
+                                 #psm = 'Please correct your errors',
+                                 )
+elif psm == '':
+    return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = psm,
+                                 #psm = str(ds),
+                                 )
+    
+elif psm == 'valid':
+    psm = (ds)
+    oid = ds.get('Title')
+    if hasattr(context,oid):
+        return context.common_edit_form(rendered = res,
+                                 create = 1,
+                                 type_name = type_name,
+                                 psm = 'You already registered for that level',
+                                 )
+    context.invokeFactory(type_name,oid) 
+    object = getattr(context,oid)
+    voc = pv.courselevel
+    ds.set('Title',voc.get(oid))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % oid
+    semester_id = 'Semester_1_%s_%s' % (oid,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'First Semester'})
+    semester_id = 'Semester_2_%s_%s' % (oid,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'Second Semester'})
+    context_ti = context.portal_types[context.portal_type] 
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
Index: /WAeUP_SRP/trunk/skins/waeup_student/admission_slip_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/admission_slip_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/admission_slip_form.pt	(revision 276)
@@ -0,0 +1,22 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <h1> Your Admission Slip</h1>      
+    <p>you used a <span  tal:content="options/dict/sc_value" /> Scratchcard with PIN 
+    <span tal:content="options/dict/sc_pin" />
+    </p>
+      <tal:block  tal:content="structure options/rendered" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/admission_status.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/admission_status.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/admission_status.py	(revision 276)
@@ -0,0 +1,38 @@
+##parameters=
+# $Id$
+"""
+search for admitted students 
+return html renderer + psm
+"""
+##type_name = 'Jamb'
+##ti = context.portal_types[type_name]
+##
+##context.REQUEST.set('type_name',type_name)
+##
+##validate = REQUEST.has_key("cpsdocument_edit_button")
+
+request = context.REQUEST
+lt = context.portal_layouts
+catalog = context.portal_catalog
+
+rendered,psm,ds = lt.renderLayout(layout_id= 'admission_status',
+                      schema_id= 'jamb',
+                      context=context,
+                      mapping=request,
+                      ob={},
+                      layout_mode='create',
+                      )
+qs = ds.get('quick_search')
+list = []
+if qs:
+    res = catalog(SearchableText = "%s*" % qs)
+    if res:
+        for i in res:
+            o = i.getObject()
+            if o.portal_type == 'Jamb':
+                list.append(o)
+return context.admission_status_form(rendered = rendered,
+                                 psm = '',
+                                 list = list,
+                                 ds = ds
+                                 )
Index: /WAeUP_SRP/trunk/skins/waeup_student/admission_status_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/admission_status_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/admission_status_form.pt	(revision 276)
@@ -0,0 +1,47 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+    <metal:block fill-slot="main">
+        <h1>List admitted students!</h1>
+        <p>
+          You may be seeing a long list of names or just the name of the person of your interest below. 
+          Click on the View Details against the name of the candidate of your interest to display the 
+          required information. If the candidate of your interest is not in the list displayed, 
+          you may type another name or registration number again in the Quick Search box below and click 
+          on GO button.
+        </p>
+      <div tal:replace="structure rendered_main" />
+        <span  tal:define="list options/list">
+          <span tal:condition="not: list">
+            No Records found
+          </span>
+          <span tal:condition="list">
+            <h2>The following entries match your query:</h2>
+          <table>
+            <tr tal:repeat="row list">
+              <td colspan="" tal:content="row/reg_nr"></td>
+              <td colspan="" tal:content="row/firstname"></td>
+              <td colspan="" tal:content="row/middlename"></td>
+              <td colspan="" tal:content="row/lastname"></td>
+            </tr>
+          </table>
+        </span>
+        </span>
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/book_accommodation.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/book_accommodation.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/book_accommodation.py	(revision 276)
@@ -0,0 +1,75 @@
+##parameters=REQUEST
+# $Id$
+"""
+book an accomodation
+"""
+import DateTime
+current = DateTime.DateTime()
+
+type_name = 'Student'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'accobook',
+                      schema_id= 'student_accommodation',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      submit = "book",
+                      action = 'book_accommodation',
+                      )
+if psm == 'invalid':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    sf = context.getContent()
+    halls = getattr(context,'accommodation').contentValues()
+    beds = []
+    student = context.PERSONAL.getContent()
+    sf = context.getContent()
+    for hall in halls:
+        h = hall.getContent()
+        ba = int(getattr(h,'beds_assigned',0))
+        bal = getattr(h,'beds_assigned_list',[])
+        nr_of_beds = int(h.nr_of_blocks) * int(h.nr_of_floors) * int(h.rooms_per_floor) * int(h.beds_per_room)
+        if h.which_sex == student.sex and nr_of_beds > len(bal):
+            break
+    dict = {'heading': h.heading,
+            'text': h.text,
+            'which_sex': h.which_sex,
+            'nr_of_blocks': h.nr_of_blocks,
+            'nr_of_floors': h.nr_of_floors,
+            'rooms_per_floor': h.rooms_per_floor,
+            'beds_per_room': h.beds_per_room,
+            'nr_of_free': nr_of_beds,
+            'beds_assigned': ba,
+             }
+    ba += 1
+    dict['beds_assigned'] = ba
+    bal.append(('%s:%d' % (pm.getAuthenticatedMember(),ba)))
+    dict['beds_assigned_list'] = bal
+    h.edit(mapping = dict)
+    ds.set('accommodation', "Bed # %(beds_assigned)s in %(heading)s" % dict)
+    sf.edit(mapping = ds)
+    #psm = "Your not admitted"
+    psm = "h:%(heading)s free:%(nr_of_free)s %(beds_assigned)s" % dict
+
+    ds.set('sc_date',current)
+    sf.setScratchCardData('accommodation',ds)
+
+    return context.booked_accommodation(v=dict)
Index: /WAeUP_SRP/trunk/skins/waeup_student/book_accommodation_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/book_accommodation_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/book_accommodation_form.pt	(revision 276)
@@ -0,0 +1,25 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+        <h1>Book Your Accommodation!</h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/booked_accommodation.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/booked_accommodation.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/booked_accommodation.pt	(revision 276)
@@ -0,0 +1,19 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+  <metal:block fill-slot="main"
+               tal:define="acco options/v"
+               >
+    You have successfully booked bed nr <span tal:content="acco/beds_assigned" /> in <span tal:content="acco/heading" />.
+    <p>Your next steps:</p>
+    <ul>
+      <li>Buy a Hostel Fee Scratch Card</li>
+      <li>Login with your user id and password </li>
+      <li>Click 'Pay Hostel Fee'</li>
+    </ul>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/check_admission.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/check_admission.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/check_admission.py	(revision 276)
@@ -0,0 +1,63 @@
+##parameters=REQUEST
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+import DateTime
+current = DateTime.DateTime()
+
+
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'admission',
+                      schema_id= 'student_admission',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      action = "check_admission",
+                      submit = "check",
+                      )
+if psm == 'invalid':
+    return context.check_admission_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.check_admission_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    s_id = "s%s" % ds.get('jamb_id')
+    catalog = context.portal_catalog
+    search = catalog(SearchableText = "%s*" % s_id)
+    student = getattr(context,s_id,None)
+    if student is None:
+    #if len(search) < 1:
+        psm = "Your are not admitted"
+        return context.check_admission_form(rendered = res,
+                                 psm = psm, 
+                                 ds = ds,
+                                 )
+
+ds.set('sc_date',current)
+student.getContent().setScratchCardData('adm_check',ds)
+
+jamb = getattr(student,'JAMB')
+res = jamb.getContent().render(layout_id = 'admission_slip', 
+                               layout_mode = 'view',
+                               schema_id = 'jamb')
+
+return context.admission_slip_form(rendered = res, dict = ds)
+
Index: /WAeUP_SRP/trunk/skins/waeup_student/check_admission_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/check_admission_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/check_admission_form.pt	(revision 276)
@@ -0,0 +1,32 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <h1> Check Your Admission Status! </h1>
+        <div tal:replace="structure rendered_main" />
+          <p>Instructions :</p>
+          <ul>
+            <li>Buy an Admission Check Scratch Card </li> 
+            <li>Enter the PIN here </li> 
+            <li>Print the Admission Slip which is displayed if you are admitted by the Univesity</li>
+            <li>Buy a Clearance Scratch Card </li> 
+            <li>Proceed to the Clearance Eligibility Online Form and fill your O/L details </li> 
+            <li>Proceed to the Univesity with all original documents for clearance to finalize the clearance process </li>
+          </ul>
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/clearance.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/clearance.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/clearance.py	(revision 276)
@@ -0,0 +1,66 @@
+##parameters=REQUEST
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+import DateTime
+current = DateTime.DateTime()
+
+
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'clearance',
+                      schema_id= 'student_clearance',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      action = "clearance",
+                      submit = "submit",
+                      )
+
+if psm == 'invalid':
+    return context.clearance_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.clearance_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    s_id = "s%s" % ds.get('jamb_id')
+    catalog = context.portal_catalog
+    search = catalog(SearchableText = "%s*" % s_id)
+    if len(search) < 1:
+        psm = "You are not admitted"
+        return context.clearance_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+    sf = getattr(context,s_id,None)
+    if sf and getattr(sf,'PERSONAL',None):
+        psm = "Your are already admitted, please login"
+        return context.clearance_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+    rset = REQUEST.set
+    student = getattr(context,s_id)
+    ds.set('sc_date',current)
+    student.getContent().setScratchCardData('clearance',ds)
+    sc_pin =  ds.get('sc_pin')
+    #return REQUEST.RESPONSE.redirect("%s/logged_in?__ac_name=%s&__ac_password=UnSeT&sc_pin=%s"
+    return REQUEST.RESPONSE.redirect("%s/logged_in?__ac_name=%s&__ac_password=123456&sc_pin=%s"
+                                    % (context.absolute_url(),s_id,sc_pin))
Index: /WAeUP_SRP/trunk/skins/waeup_student/clearance_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/clearance_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/clearance_form.pt	(revision 276)
@@ -0,0 +1,30 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <h1>Start Clearance Process!</h1>
+        <div tal:replace="structure rendered_main" />
+          <p>Instructions :</p>
+          <ul>
+            <li>Buy a Clearance Scratch Card </li> 
+            <li>Enter the PIN here </li> 
+            <li>Proceed to the Clearance Eligibility Online Form and fill your O/L details </li> 
+            <li>Proceed to the Univesity with all original documents for clearance to finalize the clearance process</li>
+          </ul>
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/create_jamb.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/create_jamb.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/create_jamb.py	(revision 276)
@@ -0,0 +1,63 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+Create an the Jamb-Record for a Student
+
+"""
+
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+pr = context.portal_registration
+pm = context.portal_membership
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+lt = context.portal_layouts
+
+res,psm,ds = lt.renderLayout(layout_id= 'jambcreate',
+                      schema_id= 'jamb',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      )
+if psm == 'invalid':
+    return context.create_jamb_form(rendered = res,
+                                 psm = 'Please correct your errors',
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.create_jamb_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+    
+elif psm == 'valid':
+    s_id = "s%s" % ds.get('reg_nr')
+    skw = {'title': "%(firstname)s %(lastname)s" % ds}
+    context.invokeFactory('Student',s_id) 
+    student = getattr(context,s_id)    
+    student.getContent().edit(mapping=skw)
+    context.notifyCPSDocumentCreation(ob=student)
+    jamb_id = 'JAMB'
+    student.invokeFactory('Jamb',jamb_id) 
+    jamb = getattr(student,jamb_id)    
+    ds.set('title', "%(reg_nr)s (%(lastname)s)" % ds)
+    jamb.getContent().edit(mapping=ds)
+    context.notifyCPSDocumentCreation(ob=jamb)
+    psm = 'Student created'
+    noCPSMember = False
+    try:
+        #pr.addMember(s_id, 'UnSeT',roles=('Member','CPSMember','Student','Contributor'))
+        pr.addMember(s_id, '123456',roles=('Member','CPSMember','Contributor'))
+    except:
+        noCPSMember = True
+    if noCPSMember:
+        #pr.addMember(s_id, 'UnSeT',roles=('Member','Student','Contributor',))
+        pr.addMember(s_id, '123456',roles=('Member','Contributor',))
+    student.manage_setLocalRoles(s_id, ['Owner',])
+    jamb.manage_setLocalRoles(s_id, ['Owner',])
+    return context.students_folder_view_manager(psm=psm)
+
Index: /WAeUP_SRP/trunk/skins/waeup_student/create_jamb_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/create_jamb_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/create_jamb_form.pt	(revision 276)
@@ -0,0 +1,22 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition python:1;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+      <h1>Enter the JAMB Data for a Student </h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/create_personal_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/create_personal_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/create_personal_form.pt	(revision 276)
@@ -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="StudentPersonal" /> 
+      <p>
+        <input id="objectTitle" type="text" name="Title" value="personal" class="focus" size="40" />
+        <input type="submit" class="standalone searchButton" value="create" />
+      </p>
+    </form>
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/create_student.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/create_student.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/create_student.py	(revision 276)
@@ -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_SRP/trunk/skins/waeup_student/create_student_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/create_student_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/create_student_form.pt	(revision 276)
@@ -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_SRP/trunk/skins/waeup_student/eligibility.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/eligibility.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/eligibility.py	(revision 276)
@@ -0,0 +1,81 @@
+##parameters=REQUEST=None
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+request = REQUEST
+rget = request.get
+rset = request.set
+fget = request.form.get
+form = request.form
+fhas = request.form.has_key
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+pm = context.portal_membership
+eli = context.ELIGIBILITY.getContent()
+sr = eli.schoolresults
+
+validate = fhas('add') or fhas('change') or fhas('delete')
+data = {'faculty': eli.faculty,
+        'course': eli.course,
+        'jamb_aggregate': eli.jamb_aggregate,
+        }
+res,psm,ds = lt.renderLayout(layout_id= 'student_eligibility',
+                      schema_id= 'student_eligibility',
+                      context=context,
+                      mapping=validate and request,
+                      ob=data,
+                      layout_mode='create',
+                      formaction = "eligibility",
+                      schoolresults = sr,
+                      )
+if psm == 'invalid':
+    return context.eligibility_form(rendered = res,
+                                 psm = 'Please correct your errors',
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.eligibility_form(rendered = res,
+                                 psm = psm,
+                                 ds = ds,
+                                 )
+inr = 0
+if fhas('add') and (fget('type') or fget('subject') or fget('result')):
+    sr.append((fget('type'),fget('subject'),fget('result')))
+    psm = "new result added"
+elif fhas('change') and fget('keys'):
+    for k in fget('keys'):
+        sr[int(k)] = (fget('type_%s' % k),fget('subject_%s' % k),fget('result_%s' % k))
+        inr += 1
+    psm = "%s items changed" % inr
+elif fhas('delete') and fget('keys'):
+    new = []
+    todelete = fget('keys')
+    for k in range(len(sr)):
+        if str(k) not in todelete:
+            new.append(sr[k])
+    inr = len(todelete)
+    sr = new
+    psm = "%s items deleted" % inr
+elif psm == 'valid':
+    psm = "Your changes have been saved."
+
+ds.set('schoolresults',sr)
+eli.edit(mapping=ds)
+res,dummy,fds = lt.renderLayout(layout_id= 'student_eligibility',
+                      schema_id= 'student_eligibility',
+                      context=context,
+                      mapping=request,
+                      ob={},
+                      layout_mode='create',
+                      formaction = "eligibility",
+                      schoolresults = sr,
+                      )
+
+return context.eligibility_form(rendered = res,
+                                 #psm = "%s <br /> %s" % (str(ds),str(lt.student_eligibility.getLayoutDefinition()))
+                                 psm = psm,
+                                 )
Index: /WAeUP_SRP/trunk/skins/waeup_student/eligibility_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/eligibility_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/eligibility_form.pt	(revision 276)
@@ -0,0 +1,21 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <div tal:replace="structure rendered_main" />
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/jamb_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/jamb_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/jamb_index_html.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+
+#return context.student_view_manager()
+if not context.portal_membership.isAnonymousUser:
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.cpsdocument_view()
+    elif 'StudentManager' in roles:
+        return context.jamb_view_manager()
+return context.jamb_view_student()
Index: /WAeUP_SRP/trunk/skins/waeup_student/jamb_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/jamb_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/jamb_view_manager.pt	(revision 276)
@@ -0,0 +1,31 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/jamb_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/jamb_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/jamb_view_student.pt	(revision 276)
@@ -0,0 +1,32 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+      
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_admission_status_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_admission_status_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_admission_status_create.pt	(revision 276)
@@ -0,0 +1,83 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction string:check_admission_form;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             "
+             >
+  <form action='admission_status' method='post'
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+        <input type="submit" class="standalone" name="cpsdocument_edit_button" value="GO" />
+      </div>        
+    </div>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_eligibility_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_eligibility_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_eligibility_create.pt	(revision 276)
@@ -0,0 +1,174 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction options/formaction;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             results options/schoolresults;
+             "
+             >
+  <form action='eligibility' method='post' tal:attributes="action formaction"
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%" tal:condition="results|nothing">
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <span tal:repeat="row results" tal:omit-tag="">
+        <tr tal:define="rindex repeat/row/index">
+          <td align="left" valign="top">
+            <input type="checkbox" name="keys:list" value="100" tal:attributes="value string:${repeat/row/index}"/>
+          </td>
+          <td align="left" valign="top">
+            <div class="field">
+              <input type="text" name="key_0" value="100" size="20" 
+                     tal:attributes="name string:type_${rindex};value python:row[0]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="label_0" value="Year 1 (100 Level)" size="40" 
+                     tal:attributes="name string:subject_${rindex};value python:row[1]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="msgid_0" value="" size="10" 
+                     tal:attributes="name string:result_${rindex};value python:row[2]" />
+            </div>
+          </td>
+        </tr>
+      </span>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="change" value=" Change " />
+          <input class="standalone" type="submit" name="delete" value=" Delete " />
+        </td>
+      </tr>
+    </table>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%">
+      <tr>
+        <td align="left" valign="top" colspan="2">
+          <div>Add a new post-primary school result:</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div  class="field">
+            <input type="text" name="type" value="" size="20" /> 
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="subject" value="" size="40" />
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="result" value="" size="10" />
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="add" value=" Change/Add " />
+        </td>
+      </tr>
+    </table>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_jambcreate_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_jambcreate_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_jambcreate_create.pt	(revision 276)
@@ -0,0 +1,83 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction string:check_admission_form;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             "
+             >
+  <form action='create_jamb' method='post'
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+        <input type="submit" class="standalone" name="cpsdocument_edit_button" value="add" />
+      </div>        
+    </div>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_personal_edit.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_personal_edit.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_personal_edit.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/default_edit" />
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_personal_view.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_personal_view.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_personal_view.pt	(revision 276)
@@ -0,0 +1,1 @@
+<metal:block use-macro="here/waeup_layout_lib/macros/table_view" />
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_results_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_results_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_results_create.pt	(revision 276)
@@ -0,0 +1,117 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction options/formaction;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             results options/schoolresults;
+             "
+             >
+  <form action='eligibility' method='post' tal:attributes="action formaction"
+        enctype='multipart/form-data' class='workflow'>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%" tal:condition="results|nothing">
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <span tal:repeat="row results" tal:omit-tag="">
+        <tr tal:define="rindex repeat/row/index">
+          <td align="left" valign="top">
+            <input type="checkbox" name="keys:list" value="100" tal:attributes="value string:${repeat/row/index}"/>
+          </td>
+          <td align="left" valign="top">
+            <div class="field">
+              <input type="text" name="key_0" value="100" size="20" 
+                     tal:attributes="name string:type_${rindex};value python:row[0]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="label_0" value="Year 1 (100 Level)" size="40" 
+                     tal:attributes="name string:subject_${rindex};value python:row[1]" />
+            </div>
+          </td>
+          <td align="left">
+            <div class="field">
+              <input type="text" name="msgid_0" value="" size="10" 
+                     tal:attributes="name string:result_${rindex};value python:row[2]" />
+            </div>
+          </td>
+        </tr>
+      </span>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="change" value=" Change " />
+          <input class="standalone" type="submit" name="delete" value=" Delete " />
+        </td>
+      </tr>
+    </table>
+    <table cellspacing="0" cellpadding="2" border="0" width="100%">
+      <tr>
+        <td align="left" valign="top" colspan="2">
+          <div>Add a new postprimary school result</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Type</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Subject</div>
+        </td>
+        <td align="left" valign="top">
+          <div class="label">Result</div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" valign="top">
+          &nbsp;
+        </td>
+        <td align="left" valign="top">
+          <div  class="field">
+            <input type="text" name="type" value="" size="20" /> 
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="subject" value="" size="40" />
+          </div>
+        </td>
+        <td align="left">
+          <div  class="field">
+            <input type="text" name="result" value="" size="10" />
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td align="left" colspan="3">
+          <input class="standalone" type="submit" name="add" value=" Add " />
+        </td>
+      </tr>
+    </table>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_sc_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_sc_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_sc_create.pt	(revision 276)
@@ -0,0 +1,85 @@
+<tal:block define="global creation python:1" />
+<metal:block define-macro="default_edit"
+             tal:define="layout options/layout;
+             ds options/datastructure;
+             creation creation|nothing;
+             metadata metadata|nothing;
+             type_name request/type_name|nothing;
+             ti python:type_name and getattr(here.portal_types,type_name,None) or getattr(here.portal_types,here.portal_type,None);
+             creation_form python:ti and ti.getActionById('create', 'cpsdocument_create_form') or 'cpsdocument_create_form' ;
+             edit_form     python:ti and ti.getActionById('edit',   'cpsdocument_edit_form') or  'cpsdocument_edit_form';
+             metadata_form python:ti and ti.getActionById('metadata', 'cpsdocument_metadata') or 'cpsdocument_metadata';
+             formaction options/action;
+             submittext options/submit;
+             first_layout options/first_layout|python:0;
+             last_layout options/last_layout|python:0;
+             is_flexible options/is_flexible;
+             cpsmcat nocall:here/translation_service;
+             "
+             >
+  <form action='check_admission' tal:attributes="action formaction" method='post'
+        enctype='multipart/form-data' class='workflow'>
+    <div class=''>
+      <div class='documentFields'>
+        <table width="100%" cellpadding="2" cellspacing="2" summary="Form layout">
+          <tr tal:repeat="row layout/rows" valign="top">
+            <td tal:repeat="cell row"
+                tal:attributes="colspan cell/ncols">
+              <tal:block define="widget cell/widget;
+              wid widget/getWidgetId;
+              dm options/datastructure/getDataModel;
+              err python:ds.getError(wid);
+              err_mapping python:ds.getErrorMapping(wid);
+              is_required widget/is_required|nothing;
+              tooltip_id python:wid + '_help';
+              widget_css_class cell/widget_css_class|nothing;
+              widget_css_class python:test(is_flexible, 'group', widget_css_class);
+              css_class python:test(err, 'row error',
+              test(is_flexible, 'group', 'row'))"
+              >
+                <div tal:attributes="class widget_css_class;
+                id python:widget.getHtmlWidgetId()+'_widget';"
+                >
+                  <div class="label" tal:condition="widget/label_edit"
+                       tal:attributes="class python:test(is_required, 'label required','label')">
+                    <label i18n:translate="" tal:condition="widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                    <label tal:condition="not:widget/is_i18n"
+                           tal:content="widget/label_edit"
+                           tal:attributes="for cell/widget_input_area_id|nothing;">label</label>
+                  </div>
+                  <button type="button" class="tooltipControl"
+                          tal:condition="widget/help"
+                          tal:attributes="onclick python:'toggleElementVisibility(\'%s\')' % tooltip_id;"> ? </button>
+                  <div class="field">
+                    <div tal:replace="structure cell/widget_rendered"/>
+                  </div>
+                  <div class="tooltipArea" style="visibility: hidden;"
+                       tal:condition="widget/help"
+                       tal:attributes="id tooltip_id;
+                       onclick python:'showElement(false, \'%s\')' % tooltip_id;"
+                       >
+                    <tal:block i18n:translate="" tal:condition="widget/is_i18n"
+                               tal:content="widget/help">i18_key-help_for_this_field</tal:block>
+                    <tal:block tal:condition="not:widget/is_i18n"
+                               tal:content="widget/help">This is the help for this field</tal:block>
+                  </div>
+                  <tal:block condition="err">
+                    <tal:block define="msg python:cpsmcat(err, mapping=err_mapping)">
+                      <br /><em style="color: red"
+                                tal:content="msg">err</em>
+                    </tal:block>
+                  </tal:block>
+                </div>
+              </tal:block>
+            </td>
+          </tr>
+        </table>
+        <input type="submit" class="standalone" name="cpsdocument_edit_button" 
+               value="check" tal:attributes="value submittext"/>
+      </div>        
+    </div>
+  </form>
+</metal:block>
+  
Index: /WAeUP_SRP/trunk/skins/waeup_student/layout_slregister_create.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/layout_slregister_create.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/layout_slregister_create.pt	(revision 276)
@@ -0,0 +1,2 @@
+<tal:block define="global creation python:1" />
+<metal:block use-macro="here/waeup_layout_lib/macros/common_edit" />
Index: /WAeUP_SRP/trunk/skins/waeup_student/pay_hostel_fee.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/pay_hostel_fee.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/pay_hostel_fee.py	(revision 276)
@@ -0,0 +1,45 @@
+##parameters=REQUEST
+# $Id$
+"""
+book an accomodation
+"""
+import DateTime
+current = DateTime.DateTime()
+
+type_name = 'Student'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'accopay',
+                      schema_id= 'student_hostel_fee',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      submit = "pay",
+                      action = 'pay_hostel_fee',
+                      )
+if psm == 'invalid':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.book_accommodation_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    sf = context.getContent()
+
+    ds.set('sc_date',current)
+    sf.setScratchCardData('hostel_fee',ds)
+
+    return context.payed_hostel_fee(dict=ds)
Index: /WAeUP_SRP/trunk/skins/waeup_student/payed_hostel_fee.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/payed_hostel_fee.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/payed_hostel_fee.pt	(revision 276)
@@ -0,0 +1,17 @@
+<html metal:use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="head_slot">
+  </metal:block>
+  <metal:block fill-slot="header">
+  </metal:block>
+  <metal:block fill-slot="main"
+               tal:define="student context/getContent;
+               dict options/dict"
+               >
+    You payed <span tal:content="student/accommodation" /><br /> 
+    with Scratchcard PIN <span tal:content="dict/sc_pin" /> <br />
+    on <span  tal:content="dict/sc_date"/>.
+    
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/personal_addon.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/personal_addon.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/personal_addon.py	(revision 276)
@@ -0,0 +1,51 @@
+##parameters=REQUEST
+# $Id$
+"""
+process the Admission Form
+return html renderer + psm
+"""
+type_name = 'Jamb'
+ti = context.portal_types[type_name]
+
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_edit_button")
+
+
+lt = context.portal_layouts
+pr = context.portal_registration
+pm = context.portal_membership
+
+jamb = getattr(context,'JAMB')
+jamb_rendered = jamb.getContent().render(layout_id = 'admission_slip', 
+                               layout_mode = 'view',
+                               schema_id = 'jamb')
+
+res,psm,ds = lt.renderLayout(layout_id= 'student_personal_addon',
+                      schema_id= 'student_personal',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      )
+res = jamb_rendered + res
+if psm == 'invalid':
+    return context.personal_addon_form(rendered = res,
+                                 #psm = str(ds),
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.personal_addon_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+elif psm == 'valid':
+    s_personal = context.PERSONAL.getContent()
+    s_personal.edit(mapping={'email': ds.get('email')})
+    #pw = REQUEST.get("widget__pw")
+    #pm.setPassword(pw)
+psm = 'Email has been successfully set. '
+##return context.REQUEST.RESPONSE.redirect('%s' % context.portal_url.getUrlFromRpath('/students'))
+
+return context.eligibility()
Index: /WAeUP_SRP/trunk/skins/waeup_student/personal_addon_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/personal_addon_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/personal_addon_form.pt	(revision 276)
@@ -0,0 +1,23 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+      <metal:block fill-slot="main">
+        <h1> Fillin Your Email</h1>
+        <div tal:replace="structure rendered_main" />
+      </metal:block>
+      <metal:block fill-slot="sub">
+      </metal:block>
+    </metal:block>
+  </metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/process_waeup_login.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/process_waeup_login.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/process_waeup_login.py	(revision 276)
@@ -0,0 +1,56 @@
+##parameters=member=None,sc_pin=None
+# $Id$
+"""
+Process a student after login
+
+"""
+request = context.REQUEST
+response=request.response
+
+if request.form.get('submit') == 'Login':
+    #waeup = context.portal_catalog(id = 'demouni')[0]
+    #waeup = context.portal_catalog(portal_type = 'University')[0]
+    if "Manager" in member.getRoles():
+        return
+
+member_id = str(member)
+ma = getattr(context,member_id)
+jkw = {'admission_sc_pin': sc_pin}
+jamb = getattr(ma,'JAMB')
+jamb.getContent().edit(mapping=jkw)
+#pdid = 'personal%s' % member_id
+pdid = 'PERSONAL'
+ma.invokeFactory('StudentPersonal', pdid)
+pd = getattr(ma,pdid)
+pkw = {}
+jc = jamb.getContent()
+pkw['sex'] = getattr(jc,'sex')
+pkw['firstname'] = getattr(jc,'firstname')
+pkw['middlename'] = getattr(jc,'middlename')
+pkw['lastname'] = getattr(jc,'lastname')
+pkw['aggregate'] = getattr(jc,'aggregate')
+pkw['faculty'] = getattr(jc,'faculty')
+pkw['course'] = getattr(jc,'course')
+pkw['age'] = getattr(jc,'age')
+pkw['jamb_results'] = getattr(jc,'exam_results')
+pkw['jamb_aggregate'] = getattr(jc,'aggregate')
+pkw['jamb_listing_date'] = getattr(jc,'listing_date')
+pkw['state'] = getattr(jc,'state')
+
+pd.getContent().edit(mapping=pkw)
+context.notifyCPSDocumentCreation(ob=pd)
+
+pdid = 'DOCUMENTS'
+ma.invokeFactory('StudentDocuments', pdid)
+pd = getattr(ma,pdid)
+context.notifyCPSDocumentCreation(ob=pd)
+
+pdid = 'ELIGIBILITY'
+ma.invokeFactory('StudentEligibility', pdid)
+pd = getattr(ma,pdid)
+pd.getContent().edit(mapping=pkw)
+context.notifyCPSDocumentCreation(ob=pd)
+
+return response.redirect("%s" % ma.absolute_url())
+#return ma.personal_addon(REQUEST=context.REQUEST)
+
Index: /WAeUP_SRP/trunk/skins/waeup_student/register_level.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/register_level.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/register_level.py	(revision 276)
@@ -0,0 +1,63 @@
+##parameters=REQUEST
+# $Id$
+"""
+register for next level
+"""
+type_name = 'StudyLevel'
+ti = context.portal_types[type_name]
+pm = context.portal_membership
+REQUEST.set('type_name',type_name)
+
+validate = REQUEST.has_key("cpsdocument_create_button")
+
+
+lt = context.portal_layouts
+pv = context.portal_vocabularies
+#pr = context.portal_registration
+
+res,psm,ds = lt.renderLayout(layout_id= 'study_level',
+                      schema_id= 'study_level',
+                      context=context,
+                      mapping=validate and REQUEST,
+                      ob={},
+                      layout_mode='create',
+                      create_action = 'register_level',
+                      )
+if psm == 'invalid':
+    return context.register_level_form(rendered = res,
+                                 psm = "Please correct your input",
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.register_level_form(rendered = res,
+                                 psm = None,
+                                 ds = ds,
+                                 )
+
+elif psm == 'valid':
+    voc = pv.courselevel
+    level_id = voc.items()[0][0]
+    level = getattr(context,level_id,None)
+    if level:
+        return context.register_level_form(rendered = res,
+                                 psm = "You have already registered for Level %s" % voc.get(level_id),
+                                 ds = ds,
+                                 )
+
+    context.invokeFactory(type_name,level_id)
+    object = getattr(context,level_id)
+    ds.set('Title',voc.get(level_id))
+    object.getContent().edit(mapping=ds,proxy=object)
+    context.notifyCPSDocumentCreation(ob=object)
+    psm = 'new %s created' % level_id
+    semester_id = 'Semester_1_%s_%s' % (level_id,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'First Semester'})
+    semester_id = 'Semester_2_%s_%s' % (level_id,context.getId())
+    object.invokeFactory('Semester',semester_id)
+    semester = getattr(object,semester_id)
+    semester.getContent().edit(mapping={'Title': 'Second Semester'})
+    context_ti = context.portal_types[context.portal_type]
+    index = context_ti.getActionById('view','university_view')
+    return getattr(context,index)(psm=psm)
Index: /WAeUP_SRP/trunk/skins/waeup_student/register_level_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/register_level_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/register_level_form.pt	(revision 276)
@@ -0,0 +1,25 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   data_storage options/ds;
+                   jamb options/jamb/getContent|nothing;
+                   edition python:1;"
+                   >
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing"
+                >
+    </metal:block>
+
+    <metal:block fill-slot="main">
+        <h1>Register for Next Level!</h1>
+      <div tal:replace="structure rendered_main" />
+    </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_admitted_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_admitted_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_admitted_form.pt	(revision 276)
@@ -0,0 +1,12 @@
+<tal:block define="rendered_main options/rendered;
+                   portal_status_message options/psm;
+                   jamb options/jamb/getContent;
+                   student options/student/getContent;
+                   edition python:1;"
+                   >
+  <metal:html use-macro="here/main_template/macros/master">
+    <metal:main fill-slot="main">
+      <a href="edits" tal:attributes="href string:${context/pd/absolute_url}/cpsdocument_edit_form"></a>
+    </metal:main>
+  </metal:html>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_documents_edit_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_documents_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_documents_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="python: 0 and not creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_index_html.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+
+#return context.student_view_manager()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles:
+        return context.student_view_manager()
+return context.student_view_student()
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_personal_edit_form.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_personal_edit_form.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_personal_edit_form.pt	(revision 276)
@@ -0,0 +1,69 @@
+<tal:block define="res python:here.editCPSDocument(REQUEST=request);
+                   rendered_main python: res[0];
+                   portal_status_message python: res[1];
+                   edition python:1;
+  ">
+<metal:block define-macro="edit_form">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+
+    <metal:block define-macro="widgets_javascript">
+    <!-- XXX this has to move to CPSSchemas -->
+    <style type="text/css"
+      tal:content="string:@import url(${base_url}calendar-win2k-1.css);"></style>
+    <script type="text/javascript" src="calendar.js"
+      tal:attributes="src string:${base_url}calendar.js"></script>
+    <script type="text/javascript" src="lang/calendar-en.js"
+      tal:define="local cpsmcat/getSelectedLanguage"
+      tal:attributes="src string:${base_url}lang/calendar-${local}.js"></script>
+    <script type="text/javascript" src="calendar-setup.js"
+      tal:attributes="src string:${base_url}calendar-setup.js"></script>
+
+    <script type="text/javascript">
+    <!--
+     function popup_rte(input_id, label_edit) {
+       var args, value
+       value = document.getElementById(input_id).value;
+       args='?input_id='+input_id+'&label_edit='+escape(label_edit);
+       popup = window.open('popup_rte_form'+args, input_id, 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=1, dependent=1, width=640, height=480')
+       if(!popup.opener)
+         popup.opener = window;
+       return false;
+   }
+   //-->
+   </script>
+   </metal:block>
+  </metal:block>
+
+  <metal:block fill-slot="header"
+    tal:define="creation creation|nothing;
+                edition edition|nothing;
+                metadata metadata|nothing">
+    <h1 tal:condition="creation" i18n:translate="">
+      Create a document of type
+      <tal:block i18n:name="type_name" i18n:translate=""
+            tal:define="type_name request/type_name;
+                        type_info python:here.portal_types[type_name]"
+            tal:content="type_info/Title">Type Title</tal:block>
+    </h1>
+    <h1 tal:condition="python: 0 and not creation">
+      <img tal:replace="structure python:here.getImgTag('/'+here.getIcon(), base_url='')">
+      <tal:block condition="edition"
+        i18n:translate="">Edit <span i18n:name="title"
+        tal:content="here/title_or_id">Page Title</span></tal:block>
+      <tal:block tal:condition="metadata"
+        i18n:translate="">heading_metadata_edit</tal:block>
+    </h1>
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <div tal:replace="structure rendered_main" />
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
+</tal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_personal_index_html.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_personal_index_html.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_personal_index_html.py	(revision 276)
@@ -0,0 +1,15 @@
+##parameters=post_id=None, REQUEST=None
+
+# $Id$
+
+"""Default view for the Student."""
+member = context.portal_membership.getAuthenticatedMember()
+
+#return context.student_view_manager()
+if not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.cpsdocument_view()
+    elif 'StudentManager' in roles:
+        return context.student_personal_view_manager()
+return context.student_personal_view_student()
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_personal_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_personal_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_personal_view_manager.pt	(revision 276)
@@ -0,0 +1,31 @@
+<metal:block define-macro="view">
+<metal:block use-macro="here/content_lib_master/macros/master">
+  <metal:block fill-slot="header">
+  </metal:block>
+
+  <metal:block fill-slot="css_slot">
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}document.css" />
+    <link rel="Stylesheet" type="text/css" href=""
+      tal:attributes="href string:${base_url}forum.css" />
+  </metal:block>
+
+  <metal:block fill-slot="main">
+    <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+
+    <tal:block tal:condition="python:hasattr(here,'portal_discussion') and
+      hasattr(here.portal_discussion, 'isCommentingAllowedFor')">
+      <tal:block tal:define="comments_allowed
+        python:here.portal_discussion.isCommentingAllowedFor(here);"
+        tal:condition="comments_allowed">
+        <metal:block
+          use-macro="here/forum_comment_lib_view_comments_inline/macros/view_comments_inline" />
+      </tal:block>
+    </tal:block>
+
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_personal_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_personal_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_personal_view_student.pt	(revision 276)
@@ -0,0 +1,20 @@
+<metal:block define-macro="view">
+  <metal:block use-macro="here/content_lib_master/macros/master">
+    <metal:block fill-slot="header">
+    </metal:block>
+
+    <metal:block fill-slot="css_slot">
+      <link rel="Stylesheet" type="text/css" href=""
+            tal:attributes="href string:${base_url}document.css" />
+      <link rel="Stylesheet" type="text/css" href=""
+            tal:attributes="href string:${base_url}forum.css" />
+    </metal:block>
+    
+    <metal:block fill-slot="main">
+      <tal:block tal:content="structure rendered_main|python:doc.render(proxy=here)" />
+    </metal:block>
+    <metal:block fill-slot="sub">
+    </metal:block>
+
+</metal:block>
+</metal:block>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_view_manager.pt	(revision 276)
@@ -0,0 +1,38 @@
+<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="items here/contentValues"
+             >
+    <h2>Data for Student <span tal:content="context/id" /></h2>
+    <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>
+    </table>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/student_view_student.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/student_view_student.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/student_view_student.pt	(revision 276)
@@ -0,0 +1,37 @@
+<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 here/getContent;
+               items here/contentValues"
+               >
+    <tal:block condition="python:0 and len(items)">
+    <table cellspacing="0" cellpadding="0">
+        <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>
+    </table>
+    </tal:block>
+    <ul>
+      <li>  <a href="" tal:attributes="href string:${context/absolute_url}/JAMB">Clearence Form Processing</a></li>
+      <li>  <a href="" tal:attributes="href string:${context/absolute_url}/PERSONAL">Personal Data Form</a></li>
+      <li>  <a href="" tal:attributes="href string:${context/absolute_url}/book_accommodation">Book your accommodation</a></li>
+    </ul>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view.py
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view.py	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view.py	(revision 276)
@@ -0,0 +1,20 @@
+##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 not context.portal_membership.isAnonymousUser():
+    roles = member.getRoles()
+    if 'Manager' in roles:
+        return context.folder_view()
+    elif 'StudentManager' in roles or 'UniversityManager' in roles:
+        return context.students_folder_view_manager(psm=psm)
+    elif 'Student' in roles:
+        return getattr(context, str(member))()
+context_ti = context.portal_types['University'] 
+index = context_ti.getActionById('view','university_view')
+return getattr(context,index)(psm=psm)
+return context.students_folder_view_all(psm=psm)
Index: /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_all.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_all.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_all.pt	(revision 276)
@@ -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="header">
+  </metal:block>
+
+  <metal:block fill-slot="main"
+               tal:define="student_folder here/getContent;
+               items here/contentValues"
+               >
+    <span tal:condition="python: mtool.isAnonymousUser()"> 
+      Please <a href="" tal:attributes="href string:${context/portal_url}/login_form">login</a> or <br />
+      <a href="" tal:attributes="href string:${context/absolute_url}/admission_status">check you Jambadmission</a>.
+    </span>
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_anon.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_anon.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_anon.pt	(revision 276)
@@ -0,0 +1,24 @@
+<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"
+               >
+    <a href="" tal:attributes="href string:${context/absolute_url}/admission_status">Admission List UME</a>.<br />
+    <a href="" tal:attributes="href string:${context/absolute_url}/check_admission">Admission Request (JAMB canditates only)</a>.
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_manager.pt
===================================================================
--- /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_manager.pt	(revision 276)
+++ /WAeUP_SRP/trunk/skins/waeup_student/students_folder_view_manager.pt	(revision 276)
@@ -0,0 +1,38 @@
+<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> 
+      <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_SRP/trunk/tests/__init__.py
===================================================================
--- /WAeUP_SRP/trunk/tests/__init__.py	(revision 276)
+++ /WAeUP_SRP/trunk/tests/__init__.py	(revision 276)
@@ -0,0 +1,3 @@
+from Testing.ZopeTestCase import installProduct
+
+installProduct('WAeUP')
Index: /WAeUP_SRP/trunk/tests/test_test.py
===================================================================
--- /WAeUP_SRP/trunk/tests/test_test.py	(revision 276)
+++ /WAeUP_SRP/trunk/tests/test_test.py	(revision 276)
@@ -0,0 +1,18 @@
+# -*- coding: ISO-8859-15 -*-
+#
+# $Id$
+import unittest
+
+from waeuptest import WAeUPTest
+
+class TestTesting(WAeUPTest):
+        
+    def testTest(self):
+        self.failUnless('AcademicsFolder' in 
+            self.portal.portal_types.objectIds(),
+            "No AcademicsFolder type")
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(TestTesting),
+        ))
Index: /WAeUP_SRP/trunk/tests/test_vocabularies.py
===================================================================
--- /WAeUP_SRP/trunk/tests/test_vocabularies.py	(revision 276)
+++ /WAeUP_SRP/trunk/tests/test_vocabularies.py	(revision 276)
@@ -0,0 +1,27 @@
+# -*- coding: ISO-8859-15 -*-
+#
+# $Id$
+import unittest
+
+from waeuptest import WAeUPTest
+
+from Products.CMFCore.utils import getToolByName
+
+class TestVocabularies(WAeUPTest):
+    
+    def afterSetUp(self):
+        wftool = getToolByName(self.portal, 'portal_workflow')
+        af = self.portal.uniportal.academics
+        wftool.invokeFactoryFor(af, 'Faculty', 'fac1')
+        fac1 = af.fac1
+        wftool.invokeFactoryFor(fac1, 'Department', 'dep1')
+        
+    
+    def test_departmentVoc(self):
+        deps = self.portal.get_departments_voc()
+        
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(TestVocabularies),
+        ))
Index: /WAeUP_SRP/trunk/tests/waeuptest.py
===================================================================
--- /WAeUP_SRP/trunk/tests/waeuptest.py	(revision 276)
+++ /WAeUP_SRP/trunk/tests/waeuptest.py	(revision 276)
@@ -0,0 +1,14 @@
+# -*- coding: ISO-8859-15 -*-
+#
+# $Id$
+
+from Products.CPSDefault.tests.CPSTestCase import CPSTestCase
+from Products.CPSDefault.tests.CPSTestCase import ExtensionProfileLayerClass
+
+class LayerClass(ExtensionProfileLayerClass):
+    extension_ids = ('WAeUP:default',)
+
+WAeUPLayer = LayerClass(__name__, 'WAeUPLayer')
+
+class WAeUPTest(CPSTestCase):
+    layer = WAeUPLayer
Index: /WAeUP_SRP/trunk/zmi/manage_addWAeUPUniversity.dtml
===================================================================
--- /WAeUP_SRP/trunk/zmi/manage_addWAeUPUniversity.dtml	(revision 276)
+++ /WAeUP_SRP/trunk/zmi/manage_addWAeUPUniversity.dtml	(revision 276)
@@ -0,0 +1,159 @@
+<dtml-let form_title="'WAeUP'">
+<dtml-if manage_page_header>
+  <dtml-var manage_page_header>
+  <dtml-var manage_form_title>
+<dtml-else>
+  <html>
+  <head><title>&dtml-form_title;</title>
+  </head>
+  <body>
+  <h2>&dtml-form_title;</h2>
+</dtml-if>
+</dtml-let>
+
+  <div class="form-help">
+  Fill in this form to create a WAeUP Site.
+  </div>
+
+<form action="addWAeUPTool" method="post">
+<table cellspacing="0" cellpadding="2" border="0">
+  <tr>
+    <td align="left" valign="top">
+    <label for="id" class="form-label">
+      Id <span class="required" style="color: #ff0000;">*</span>
+    </label>
+    </td>
+    <td align="left" valign="top">
+    <input type="text" name="id" id="id" size="40" value="demo"/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="title" class="form-label">Title</label>
+    </td>
+    <td align="left" valign="top">
+    <input type="text" name="title" id="title" size="40" value=""/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="description" class="form-label">Description</label>
+    </td>
+    <td align="left" valign="top">
+    <textarea name="description" id="description" cols="40" rows="2"></textarea>
+    </td>
+  </tr>
+<dtml-comment>
+  <tr>
+    <td align="left" valign="top">
+    <label for="login" class="form-label">
+      WAeUP Administrator login <span class="required" style="color: #ff0000;">*</span>
+    </label>
+    </td>
+    <td align="left" valign="top">
+      <input type="text" name="manager_id" id="login" size="40" value="manager"/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="manager_password" class="form-label">
+      CPS Administrator Password <span class="required" style="color: #ff0000;">*</span>
+    </label>
+    </td>
+    <td align="left" valign="top">
+      <input type="password" name="manager_password" id="manager_password" size="40" value=""/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="manager_password_confirmation" class="form-label">
+      CPS Administrator Password Confirmation <span class="required" style="color: #ff0000;">*</span>
+    </label>
+    </td>
+    <td align="left" valign="top">
+      <input type="password" name="manager_password_confirmation" id="manager_password_confirmation" size="40" value="">
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="manager_email" class="form-label">
+      CPS Administrator E-mail <span class="required" style="color: #ff0000;">*</span>
+    </label>
+    </td>
+    <td align="left" valign="top">
+      <input type="text" name="manager_email" id="manager_email" size="40" value=""/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="manager_name" class="form-label">CPS Administrator Name</label>
+    </td>
+    <td align="left" valign="top">
+      <input type="text" name="manager_sn" id="manager_name" size="40" value="CPS manager"/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <label for="manager_givenName" class="form-label">CPS Administrator Given Name</label>
+    </td>
+    <td align="left" valign="top">
+      <input type="text" name="manager_givenName" id="manager_givenName" size="40" value="Manager"/>
+    </td>
+  </tr>
+
+  <tr>
+    <td align="left" valign="top">
+    <div class="form-label">
+      Languages
+    </div>
+    </td>
+    <td align="left" valign="top">
+      <ul style="margin-left: 0; padding-left: 0; list-style-type: none;">
+      <dtml-in "[
+        ('nl', 'Dutch'),
+        ('en', 'English'),
+        ('fr', 'French'),
+        ('de', 'German'),
+        ('it', 'Italian'),
+        ('pt_BR', 'Portugese (Brazilian)'),
+        ('es', 'Spanish'),
+        ('mg', 'Malagasy'),
+        ('ro', 'Romanian'),
+        ('eu', 'Euskara'),
+        ]">
+        <li>
+        <dtml-let checked="_['sequence-key'] in ('fr', 'en') and 'checked=\'checked\'' or ' '">
+        <input type="checkbox" name="langs_list:list"
+               id="<dtml-var sequence-key>"
+               value="<dtml-var sequence-key>"
+               &dtml-checked;
+               />
+        </dtml-let>
+        <label for="<dtml-var sequence-key>"><dtml-var sequence-item></label>
+        </li>
+      </dtml-in>
+      </ul>
+    </td>
+  </tr>
+</dtml-comment>
+</table>
+
+<p style="text-align: center;">
+    <input type="submit" name="submit" value="Create" />
+</p>
+</form>
+
+<dtml-if manage_page_footer>
+  <dtml-var manage_page_footer>
+<dtml-else>
+
+</body>
+</html>
+</dtml-if>
