Index: WAeUP_SRP/trunk/Academics.py
===================================================================
--- WAeUP_SRP/trunk/Academics.py	(revision 294)
+++ WAeUP_SRP/trunk/Academics.py	(revision 295)
@@ -71,4 +71,5 @@
                 logger.info('Faculty with ID %(FacultyCode)s %(Description)s already exists' % faculty)
                 no_import.write('"%(Session)s","%(FacultyCode)s","%(Description)s","%(CollegeCode)s","%(FacultyKey)s","%(Status)s","%(degree_grade)s","%(Bankcode)s"\n' % faculty)
+        return self.academics.temporary_view_all()
         return self.getContent().temporary_view_all()
     ###)
@@ -126,10 +127,17 @@
                 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)
+                    dict = {'Title': dep['Description']}
+                    d.getContent().edit(mapping=dict)
+                    d.invokeFactory('CoursesFolder','Courses')
+                    courses = getattr(d,'Courses')
+                    dict = {'Title': 'Courses'}
+                    courses.getContent().edit(mapping=dict)
+                    d.invokeFactory('CertificatesFolder','Certificates')
+                    certificates = getattr(d,'Certificates')
+                    dict = {'Title': 'Certificates'}
+                    certificates.getContent().edit(mapping=dict)
         return self.academics.temporary_view_all()
         return self.temporary_view_all()
@@ -190,5 +198,5 @@
 ##                logger.info("invalid course_code %(course_id)s renaming to %(tid)s" % vars())
 ##                course_id = tid
-            elif len(course_id) != 6:
+            elif len(course_id) > 7:
                 logger.info("invalid course_code %(CourseCode)s" % course)
                 if not no_import:
@@ -198,9 +206,10 @@
                 no_import.write('"%(CourseCode)s","%(Description)s","%(Credits)s","%(Dept)s","%(Semester)s","%(Session)s","%(PassMark)s","%(CourseKey)s","%(Category)s","%(AdmStatus)s"\n' % course)
                 continue
-            c = getattr(dept,course_id,None)
+            courses = dept.Courses
+            c = getattr(courses,course_id,None)
             if c is None:
                 logger.info('Creating Course %(CourseCode)s  %(Description)s in Department %(Dept)s' % course)
-                dept.invokeFactory('Course', course_id)
-                c = getattr(dept,course_id)
+                courses.invokeFactory('Course', course_id)
+                c = getattr(courses,course_id)
             dict = {'Title': course['Description']}
             dict['code'] = course_id
@@ -265,10 +274,11 @@
             certificate_id = "%(category)s_%(Admstatus)s_%(Dept)s" % certificate
             dep = deps[depid]
-            c = getattr(dep,certificate_id,None)
+            certificates = dep.Certificates
+            c = getattr(certificates,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)
+                certificates.invokeFactory('Certificate', certificate_id)
+                c = getattr(certificates,certificate_id)
             dict = {'Title': certificate['Description']}
             code = certificate.get('CertCode')
@@ -382,6 +392,6 @@
                     no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
                     no_import.write('"CosCode","CertCode","CoreKey","Session","Level","Core","Elective","Mandatory","AdmStatus","Dept","Semester"\n')
-                no_import.write('Duplicate %(CosCode)s in Level %(Level)s' % cert_course)
-                no_import.write('"%(CosCode)s","%(CertCode)s","%(CoreKey)s","%(Session)s","%(Level)s","%(Core)s","%(Elective)s","%(Mandatory)s","%(AdmStatus)s","%(Dept)s","%(Semester)s"\n' % cert_course)
+##                no_import.write('Duplicate %(CosCode)s in Level %(Level)s' % cert_course)
+##                no_import.write('"%(CosCode)s","%(CertCode)s","%(CoreKey)s","%(Session)s","%(Level)s","%(Core)s","%(Elective)s","%(Mandatory)s","%(AdmStatus)s","%(Dept)s","%(Semester)s"\n' % cert_course)
                 continue
             semester.invokeFactory('CertificateCourse',course_code)
@@ -399,5 +409,6 @@
                 dict['core_or_elective'] = False
             dict['level'] = cert_course.get('Level')
-            cc.academics.edit(mapping=dict)
+            cc.getContent().edit(mapping=dict)
+        return self.academics.temporary_view_all()
     ###)
 
@@ -535,5 +546,12 @@
     """Add a Department."""
     ob = Department(id, **kw)
-    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+    id = object.getId()
+    container._setObject(id, object)
+    dep = getattr(container,id)
+    dep.invokeFactory('CoursesFolder','Courses')
+    dep.invokeFactory('CertificatesFolder','Certificates')
+    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 294)
+++ WAeUP_SRP/trunk/Widgets.py	(revision 295)
@@ -1,6 +1,11 @@
 #-*- mode: python; mode: fold -*-
+
+from cgi import escape
+
 from Globals import InitializeClass
 ##from Products.CPSSchemas.Widget import CPSWidgetType
-from Products.CPSSchemas.BasicWidgets import CPSStringWidget, CPSEmailWidget
+from Products.CMFCore.utils import getToolByName
+from Products.CPSSchemas.BasicWidgets import CPSWidget, CPSStringWidget, CPSEmailWidget
+from Products.CPSSchemas.BasicWidgets import renderHtmlTag,CPSSelectWidget, CPSStringWidget
 from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
 from Products.CPSSchemas.Widget import widgetRegistry
@@ -12,4 +17,93 @@
 
 from zLOG import LOG, DEBUG
+
+class CPSSelectWidgetForRecord(CPSSelectWidget): ###(
+    """Select widget. with record names"""
+    meta_type = 'Select Widget for Records'
+
+    field_types = ('CPS String Field',)
+    field_inits = ({'is_searchabletext': 1,},)
+
+    _properties = CPSSelectWidget._properties + (
+        {'id': 'record_id', 'type': 'string', 'mode': 'w',
+         'label': 'Record Id', 'is_required' : 1},
+        )
+
+    def render(self, mode, datastructure, **kw):
+        """Render in mode from datastructure."""
+        value = datastructure[self.getWidgetId()]
+        vocabulary = self._getVocabulary(datastructure)
+        portal = getToolByName(self, 'portal_url').getPortalObject()
+        cpsmcat = portal.translation_service
+        if mode == 'view':
+            if self.translated:
+                return escape(cpsmcat(vocabulary.getMsgid(value, value)).encode('ISO-8859-15', 'ignore'))
+            else:
+                return escape(vocabulary.get(value, value))
+        elif mode == 'edit':
+            html_widget_id = self.getHtmlWidgetId()
+            res = renderHtmlTag('select', 
+                                name='%s.%s:records' % (self.record_id,html_widget_id), 
+                                id=html_widget_id)
+            in_selection = 0
+            for k, v in vocabulary.items():
+                if self.translated:
+                    kw = {'value': k,
+                          'contents': cpsmcat(vocabulary.getMsgid(k, k)).encode('ISO-8859-15', 'ignore')
+                          }
+                else:
+                    kw = {'value': k, 'contents': v}
+                if value == k:
+                    kw['selected'] = 'selected'
+                    in_selection = 1
+                res += renderHtmlTag('option', **kw)
+            if value and not in_selection:
+                kw = {'value': value, 'contents': 'invalid: '+ str(value),
+                      'selected': 'selected'}
+                res += renderHtmlTag('option', **kw)
+            res += '</select>'
+            return res
+        raise RuntimeError('unknown mode %s' % mode)
+
+InitializeClass(CPSSelectWidgetForRecord)
+
+widgetRegistry.register(CPSSelectWidgetForRecord)
+
+###)
+
+class CPSStringWidgetForRecord(CPSStringWidget):
+    """String widget."""
+    meta_type = 'String Widget For Record'
+
+    field_types = ('CPS String Field',)
+    field_inits = ({'is_searchabletext': 1,},)
+    _properties = CPSStringWidget._properties + (
+        {'id': 'record_id', 'type': 'string', 'mode': 'w',
+         'label': 'Record Id', 'is_required' : 1},
+        )
+
+    def render(self, mode, datastructure, **kw):
+        """Render in mode from datastructure."""
+        value = datastructure[self.getWidgetId()]
+        if mode == 'view':
+            return escape(value)
+        elif mode == 'edit':
+            # XXX TODO should use an other name than kw !
+            # XXX change this everywhere
+            html_widget_id = self.getHtmlWidgetId()
+            kw = {'type': 'text',
+                  'id'  : html_widget_id,
+                  'name': '%s.%s:records' % (self.record_id,html_widget_id), 
+                  'value': escape(value),
+                  'size': self.display_width,
+                  }
+            if self.size_max:
+                kw['maxlength'] = self.size_max
+            return renderHtmlTag('input', **kw)
+        raise RuntimeError('unknown mode %s' % mode)
+
+InitializeClass(CPSStringWidgetForRecord)
+
+widgetRegistry.register(CPSStringWidgetForRecord)
 
 class StudentIdWidget(CPSStringWidget): ###(
Index: WAeUP_SRP/trunk/profiles/default/layouts.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/layouts.xml	(revision 294)
+++ WAeUP_SRP/trunk/profiles/default/layouts.xml	(revision 295)
@@ -15,4 +15,5 @@
  <object name="department" meta_type="CPS Layout"/>
  <object name="faculty" meta_type="CPS Layout"/>
+ <object name="faculty_row" meta_type="CPS Layout"/>
  <object name="jamb" meta_type="CPS Layout"/>
  <object name="jambcreate" meta_type="CPS Layout"/>
Index: WAeUP_SRP/trunk/profiles/default/skins.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/skins.xml	(revision 294)
+++ WAeUP_SRP/trunk/profiles/default/skins.xml	(revision 295)
@@ -3,4 +3,6 @@
    cookie_persistence="False" default_skin="CPSSkins"
    request_varname="portal_skin">
+ <object name="waeup_custom" meta_type="Filesystem Directory View"
+    directory="WAeUP_SRP/skins/waeup_custom"/>
  <object name="waeup_default" meta_type="Filesystem Directory View"
     directory="WAeUP_SRP/skins/waeup_default"/>
@@ -10,12 +12,14 @@
     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_academics" insert-after="cps_default"/>
+  <layer name="waeup_custom" insert-after="custom"/>
+  <layer name="waeup_default" insert-after="waeup_custom"/>
+  <layer name="waeup_student" insert-after="waeup_custom"/>
+  <layer name="waeup_academics" insert-after="waeup_custom"/>
  </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_academics" insert-after="cps_default"/>
+  <layer name="waeup_custom" insert-after="custom"/>
+  <layer name="waeup_default" insert-after="waeup_custom"/>
+  <layer name="waeup_student" insert-after="waeup_custom"/>
+  <layer name="waeup_academics" insert-after="waeup_custom"/>
  </skin-path>
 </object>
Index: WAeUP_SRP/trunk/profiles/default/types.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/types.xml	(revision 294)
+++ WAeUP_SRP/trunk/profiles/default/types.xml	(revision 295)
@@ -5,5 +5,7 @@
  <object name="AccoFolder" meta_type="CPS Flexible Type Information"/>
  <object name="Accommodation" meta_type="CPS Flexible Type Information"/>
+ <object name="CertificatesFolder" meta_type="CPS Flexible Type Information"/>
  <object name="Certificate" meta_type="CPS Flexible Type Information"/>
+ <object name="CoursesFolder" meta_type="CPS Flexible Type Information"/>
  <object name="Course" meta_type="CPS Flexible Type Information"/>
  <object name="CertificateCourse" meta_type="CPS Flexible Type Information"/>
Index: WAeUP_SRP/trunk/profiles/default/types/Department.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/types/Department.xml	(revision 294)
+++ WAeUP_SRP/trunk/profiles/default/types/Department.xml	(revision 295)
@@ -12,6 +12,6 @@
  <property name="filter_content_types">True</property>
  <property name="allowed_content_types">
-  <element value="Certificate"/>
-  <element value="Course"/>
+  <element value="CertificatesFolder"/>
+  <element value="CoursesFolder"/>
  </property>
  <property name="allow_discussion">False</property>
@@ -42,21 +42,16 @@
  <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=""/>
- </action>
+    url_expr="string:${object_url}/cpsdocument_edit_form" visible="True"/>
  <action title="Add Course" action_id="create_course" category="object"
-    condition_expr="" url_expr="string:${object/absolute_url}/content_create?type_name=Course"
-    visible="True">
-  <permission value=""/>
- </action>
- <action title="Add Certificate" action_id="create_certificate" category="object"
-    condition_expr="" url_expr="string:${object/absolute_url}/content_create?type_name=Certificate"
-    visible="True">
- </action>
+    condition_expr=""
+    url_expr="string:${object/absolute_url}/content_create?type_name=Course"
+    visible="False"/>
+ <action title="Add Certificate" action_id="create_certificate"
+    category="object" condition_expr=""
+    url_expr="string:${object/absolute_url}/content_create?type_name=Certificate"
+    visible="False"/>
  <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=""/>
- </action>
+    url_expr="string:${object_url}/folder_contents" visible="True"/>
  <action title="action_metadata" action_id="metadata" category="object"
     condition_expr="python:member and 'Manager' in member.getRoles()"
Index: WAeUP_SRP/trunk/profiles/default/workflows.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/workflows.xml	(revision 294)
+++ WAeUP_SRP/trunk/profiles/default/workflows.xml	(revision 295)
@@ -2,17 +2,4 @@
 <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"/>
@@ -26,10 +13,4 @@
  <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/>
@@ -43,4 +24,7 @@
    <bound-workflow workflow_id="waeup_accommodation_wf"/>
   </type>
+  <type type_id="CertificatesFolder">
+   <bound-workflow workflow_id="waeup_base_wf"/>
+  </type>
   <type type_id="Certificate">
    <bound-workflow workflow_id="waeup_certificate_wf"/>
@@ -49,6 +33,6 @@
    <bound-workflow workflow_id="waeup_certificate_course_wf"/>
   </type>
-  <type type_id="CPS Calendar">
-   <bound-workflow workflow_id="workspace_calendar_wf"/>
+  <type type_id="CoursesFolder">
+   <bound-workflow workflow_id="waeup_base_wf"/>
   </type>
   <type type_id="Course">
@@ -67,11 +51,5 @@
    <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>
@@ -83,7 +61,4 @@
   </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>
@@ -102,8 +77,5 @@
   <type type_id="University">
    <bound-workflow workflow_id="section_folder_wf"/>
-  </type>
-  <type type_id="Workspace">
-   <bound-workflow workflow_id="workspace_folder_wf"/>
-  </type>
+  </type>A
  </bindings>
 </object>
Index: WAeUP_SRP/trunk/skins/waeup_academics/academics_view.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/academics_view.py	(revision 294)
+++ WAeUP_SRP/trunk/skins/waeup_academics/academics_view.py	(revision 295)
@@ -1,17 +1,73 @@
-##parameters=REQUEST=None,psm=None,groups=None
+##parameters=REQUEST=None
 # $Id$
+"""
+"""
+request = REQUEST
+rget = request.get
+rset = request.set
+fget = request.form.get
+form = request.form
+fhas = request.form.has_key
 
-"""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()
+lt = context.portal_layouts
+pr = context.portal_registration
+pm = context.portal_membership
+items = context.contentValues()
 
-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)
+validate = fhas('add') or fhas('change') or fhas('delete')
+res,psm,ds = lt.renderLayout(layout_id='faculty_row',
+                      schema_id= 'faculty_row',
+                      context=context,
+                      mapping= {},#validate and request,
+                      ob={},
+                      layout_mode='edit',
+                      formaction = "academics_view",
+                      items=items,
+                      )
+#return res
+
+if 1 or psm == 'invalid':
+    return context.academics_view_form(rendered = res,
+                                 psm = 'Please correct your errors',
+                                 ds = ds,
+                                 )
+elif psm == '':
+    return context.academics_view_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."
+
+res,dummy,fds = lt.renderLayout(layout_id= 'faculty_row',
+                      schema_id= 'faculty_row',
+                      context=context,
+                      mapping=request,
+                      ob={},
+                      layout_mode='create',
+                      formaction = "academics_view",
+                      )
+
+return context.academic_view_form(rendered = res,
+                                 #psm = "%s <br /> %s" % (str(ds),str(lt.faculty_row.getLayoutDefinition()))
+                                 psm = psm,
+                                 )
Index: WAeUP_SRP/trunk/skins/waeup_academics/academics_view_all.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/academics_view_all.pt	(revision 294)
+++ 	(revision )
@@ -1,37 +1,0 @@
-<html metal:use-macro="here/content_lib_master/macros/master">
-
-  <metal:block fill-slot="head_slot">
-    <tal:block tal:define="student here/getContent">
-    </tal:block>
-  </metal:block>
-
-  <metal:block fill-slot="css_slot">
-    <link rel="Stylesheet" type="text/css" href=""
-          tal:attributes="href string:${base_url}student.css" />
-  </metal:block>
-  <metal:block fill-slot="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_academics/academics_view_form.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_academics/academics_view_form.pt	(revision 295)
+++ WAeUP_SRP/trunk/skins/waeup_academics/academics_view_form.pt	(revision 295)
@@ -0,0 +1,29 @@
+<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 here/contentValues;
+               rendered options;"
+               >
+    <h1> <span tal:content="context/title_or_id" /></h1>      
+  
+    <p>The Acamdemic Section</p>       
+ 
+    <p>The Faculties:</p>
+<span tal:replace="structure rendered" />  
+  </metal:block>
+  <metal:block fill-slot="sub">
+  </metal:block>
+</html>
Index: WAeUP_SRP/trunk/skins/waeup_default/layout_row_edit.pt
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_default/layout_row_edit.pt	(revision 295)
+++ WAeUP_SRP/trunk/skins/waeup_default/layout_row_edit.pt	(revision 295)
@@ -0,0 +1,187 @@
+<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/items;
+             "
+             >
+  <span tal:content="structure layout" tal:condition="python: 0" />
+  <form tal:condition="python: 1" action='tobereplaced' 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="item results" valign="top">
+            <td>
+        <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>
+            </td>
+          </tr>
+      <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%" tal:condition="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:condition="python: 0" 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 tal:condition="python:0" 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/tests/__init__.py
===================================================================
--- WAeUP_SRP/trunk/tests/__init__.py	(revision 294)
+++ WAeUP_SRP/trunk/tests/__init__.py	(revision 295)
@@ -1,3 +1,3 @@
 from Testing.ZopeTestCase import installProduct
 
-installProduct('WAeUP')
+installProduct('WAeUP_SRP')
Index: WAeUP_SRP/trunk/tests/test_test.py
===================================================================
--- WAeUP_SRP/trunk/tests/test_test.py	(revision 294)
+++ WAeUP_SRP/trunk/tests/test_test.py	(revision 295)
@@ -4,7 +4,7 @@
 import unittest
 
-from waeuptest import WAeUPTest
+from waeuptest import WAeUP_SRPTest
 
-class TestTesting(WAeUPTest):
+class TestTesting(WAeUP_SRPTest):
         
     def testTest(self):
Index: WAeUP_SRP/trunk/tests/test_vocabularies.py
===================================================================
--- WAeUP_SRP/trunk/tests/test_vocabularies.py	(revision 294)
+++ WAeUP_SRP/trunk/tests/test_vocabularies.py	(revision 295)
@@ -4,13 +4,13 @@
 import unittest
 
-from waeuptest import WAeUPTest
+from waeuptest import WAeUP_SRPTest
 
 from Products.CMFCore.utils import getToolByName
 
-class TestVocabularies(WAeUPTest):
+class TestVocabularies(WAeUP_SRPTest):
     
     def afterSetUp(self):
         wftool = getToolByName(self.portal, 'portal_workflow')
-        af = self.portal.uniportal.academics
+        af = self.portal.campus.academics
         wftool.invokeFactoryFor(af, 'Faculty', 'fac1')
         fac1 = af.fac1
Index: WAeUP_SRP/trunk/tests/waeuptest.py
===================================================================
--- WAeUP_SRP/trunk/tests/waeuptest.py	(revision 294)
+++ WAeUP_SRP/trunk/tests/waeuptest.py	(revision 295)
@@ -7,8 +7,8 @@
 
 class LayerClass(ExtensionProfileLayerClass):
-    extension_ids = ('WAeUP:default',)
+    extension_ids = ('WAeUP_SRP:default',)
 
-WAeUPLayer = LayerClass(__name__, 'WAeUPLayer')
+WAeUP_SRPLayer = LayerClass(__name__, 'WAeUP_SRPLayer')
 
-class WAeUPTest(CPSTestCase):
-    layer = WAeUPLayer
+class WAeUP_SRPTest(CPSTestCase):
+    layer = WAeUP_SRPLayer
